X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.h;h=00e485e3c4cde4b90bda439e79d3a10539d0323f;hp=92fa72b9e6251fe01c899148a184624e2d9b7906;hb=9b18af02dc4ccbf052ef9d70180a3d16c0f9848b;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1 diff --git a/cinelerra-5.1/cinelerra/cwindowtool.h b/cinelerra-5.1/cinelerra/cwindowtool.h index 92fa72b9..00e485e3 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.h +++ b/cinelerra-5.1/cinelerra/cwindowtool.h @@ -24,16 +24,24 @@ #include "condition.inc" #include "cwindowgui.inc" +#include "cwindowtool.inc" #include "guicast.h" +#include "keyframe.inc" #include "maskauto.inc" #include "maskautos.inc" #include "mwindow.inc" - -class CWindowToolGUI; -class CWindowCoord; -class CWindowCurveToggle; - +enum { + MASK_SHAPE_SQUARE, + MASK_SHAPE_CIRCLE, + MASK_SHAPE_TRIANGLE, + MASK_SHAPE_OVAL, +}; +enum { + MASK_SCALE_X, + MASK_SCALE_Y, + MASK_SCALE_XY, +}; // This common thread supports all the tool GUI's. class CWindowTool : public Thread @@ -49,6 +57,7 @@ public: // Called when window is visible void show_tool(); void hide_tool(); + void raise_tool(); void run(); void update_show_window(); @@ -81,12 +90,15 @@ public: virtual void handle_event() {}; // Update text boxes from keyframe here virtual void update() {}; + // Update EDL and preview only - virtual void update_preview() {}; + void update_preview(int changed_edl=0); + void draw_preview(int changed_edl); int current_operation; - int close_event(); + virtual int close_event(); int keypress_event(); int translation_event(); + int press(void (CWindowCanvas::*fn)()); MWindow *mwindow; CWindowTool *thread; @@ -96,26 +108,81 @@ public: class CWindowCoord : public BC_TumbleTextBox { public: - CWindowCoord(CWindowToolGUI *gui, int x, int y, float value, int logincrement); - CWindowCoord(CWindowToolGUI *gui, int x, int y, int value); - + CWindowCoord(CWindowToolGUI *gui, int x, int y, float value, int group=-1); + CWindowCoord(CWindowToolGUI *gui, int x, int y, int value, int group=-1); + void create_objects(); + void update_gui(float value); // Calls the window's handle_event int handle_event(); CWindowToolGUI *gui; + CWindowCoordSlider *slider; + CWindowCoordRange *range; + int type; +}; + +class CWindowCoordSlider : public BC_FSlider +{ +public: + CWindowCoordSlider(CWindowCoord *coord, int x, int y, int w, + float mn, float mx, float value); + ~CWindowCoordSlider(); + int handle_event(); + + CWindowCoord *coord; }; -class CWindowCropOK : public BC_GenericButton +class CWindowCoordRange : public BC_Tumbler { public: - CWindowCropOK(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowCoordRange(CWindowCoord *coord, int x, int y); + ~CWindowCoordRange(); + int update(float scale); + int handle_up_event(); + int handle_down_event(); + + CWindowCoord *coord; +}; + + +class CWindowCropApply : public BC_GenericButton +{ +public: + CWindowCropApply(MWindow *mwindow, CWindowCropGUI *crop_gui, + int x, int y); // Perform the cropping operation int handle_event(); int keypress_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowCropGUI *crop_gui; +}; + +class CWindowCropOpMode : public BC_PopupMenu +{ + static const char *crop_ops[CROP_MODES]; +public: + CWindowCropOpMode(MWindow *mwindow, CWindowCropGUI *crop_gui, + int mode, int x, int y); + ~CWindowCropOpMode(); + void create_objects(); + int handle_event(); + + MWindow *mwindow; + CWindowCropGUI *crop_gui; + int mode; +}; + +class CWindowCropOpItem : public BC_MenuItem +{ +public: + CWindowCropOpItem(CWindowCropOpMode *popup, const char *text, int id); + int handle_event(); + + CWindowCropOpMode *popup; + int id; }; + class CWindowCropGUI : public CWindowToolGUI { public: @@ -126,104 +193,486 @@ public: // Update the gui void handle_event(); CWindowCoord *x1, *y1, *width, *height; + CWindowCropOpMode *crop_mode; }; -class CWindowMaskMode : public BC_PopupMenu +class CWindowMaskItem : public BC_ListBoxItem { public: - CWindowMaskMode(MWindow *mwindow, CWindowToolGUI *gui, int x, int y, const char *text); - void create_objects(); + CWindowMaskItem(const char *text, int id=-1, int color=-1) + : BC_ListBoxItem(text, color), id(id) {} + ~CWindowMaskItem() {} + int id; +}; + +class CWindowMaskItems : public ArrayList +{ +public: + CWindowMaskItems() {} + ~CWindowMaskItems() { remove_all_objects(); } +}; + +class CWindowMaskOnTrack : public BC_PopupTextBox +{ +public: + CWindowMaskOnTrack(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w, const char *text); + ~CWindowMaskOnTrack(); + MWindow *mwindow; + CWindowMaskGUI *gui; + CWindowMaskItems track_items; + int handle_event(); - static char* mode_to_text(int mode); - int text_to_mode(char *text); + void update_items(); +}; + +class CWindowMaskTrackTumbler : public BC_Tumbler +{ +public: + CWindowMaskTrackTumbler(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskTrackTumbler(); + int handle_up_event(); + int handle_down_event(); + int do_event(int dir); + MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; -class CWindowMaskDelete : public BC_GenericButton + +class CWindowMaskName : public BC_PopupTextBox { public: - CWindowMaskDelete(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowMaskName(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, const char *text); + ~CWindowMaskName(); + MWindow *mwindow; + CWindowMaskGUI *gui; + CWindowMaskItems mask_items; + + int handle_event(); + void update_items(MaskAuto *keyframe); +}; + +class CWindowMaskUnclear : public BC_Button +{ +public: + CWindowMaskUnclear(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); int handle_event(); - int keypress_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; -class CWindowMaskCycleNext : public BC_GenericButton +class CWindowMaskSoloTrack : public BC_CheckBox { public: - CWindowMaskCycleNext(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowMaskSoloTrack(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int v); + static int calculate_w(BC_WindowBase *gui); int handle_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; -class CWindowMaskCyclePrev : public BC_GenericButton +class CWindowMaskDelMask : public BC_GenericButton { public: - CWindowMaskCyclePrev(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowMaskDelMask(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; -class CWindowMaskNumber : public BC_TumbleTextBox +class CWindowMaskClrMask : public BC_Button { public: - CWindowMaskNumber(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); - ~CWindowMaskNumber(); + CWindowMaskClrMask(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskClrMask(); + static int calculate_w(MWindow *mwindow); int handle_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; +}; + +class CWindowMaskButton : public BC_CheckBox +{ +public: + CWindowMaskButton(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int no, int v); + ~CWindowMaskButton(); + + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; + int no; +}; + +class CWindowMaskThumbler : public BC_Tumbler +{ +public: + CWindowMaskThumbler(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskThumbler(); + int handle_up_event(); + int handle_down_event(); + int do_event(int dir); + + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskEnable : public BC_CheckBox +{ +public: + CWindowMaskEnable(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int no, int v); + ~CWindowMaskEnable(); + + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; + int no; +}; + +class CWindowMaskFade : public BC_TumbleTextBox +{ +public: + CWindowMaskFade(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskFade(); + int update(float v); + int update_value(float v); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskFadeSlider : public BC_ISlider +{ +public: + CWindowMaskFadeSlider(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + ~CWindowMaskFadeSlider(); + int handle_event(); + int update(int64_t v); + char *get_caption() { return 0; } + MWindow *mwindow; + CWindowMaskGUI *gui; + int stick; + float last_v; + Timer *timer; +}; + +class CWindowMaskGangFader : public BC_Toggle +{ +public: + CWindowMaskGangFader(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskGangFader(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskGangFocus : public BC_Toggle +{ +public: + CWindowMaskGangFocus(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskGangFocus(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskGangPoint : public BC_Toggle +{ +public: + CWindowMaskGangPoint(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskGangPoint(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; }; +class CWindowMaskSmoothButton : public BC_Button +{ +public: + CWindowMaskSmoothButton(MWindow *mwindow, CWindowMaskGUI *gui, + const char *tip, int type, int on, int x, int y, const char *images); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; + int type, on; +}; class CWindowMaskAffectedPoint : public BC_TumbleTextBox { public: - CWindowMaskAffectedPoint(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowMaskAffectedPoint(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); ~CWindowMaskAffectedPoint(); int handle_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; +class CWindowMaskFocus : public BC_CheckBox +{ +public: + CWindowMaskFocus(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskFocus(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; + static int calculate_w(CWindowMaskGUI *gui); +}; + +class CWindowMaskScaleXY : public BC_Toggle +{ +public: + CWindowMaskScaleXY(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, VFrame **data, int v, + int id, const char *tip); + ~CWindowMaskScaleXY(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; + int id; +}; + +class CWindowMaskHelp : public BC_CheckBox +{ +public: + CWindowMaskHelp(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskHelp(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskDrawMarkers : public BC_CheckBox +{ +public: + CWindowMaskDrawMarkers(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskDrawMarkers(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskDrawBoundary : public BC_CheckBox +{ +public: + CWindowMaskDrawBoundary(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskDrawBoundary(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskDelPoint : public BC_GenericButton +{ +public: + CWindowMaskDelPoint(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; +}; class CWindowMaskFeather : public BC_TumbleTextBox { public: - CWindowMaskFeather(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + CWindowMaskFeather(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); ~CWindowMaskFeather(); + int update(float v); + int update_value(float v); int handle_event(); MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; -class CWindowMaskValue : public BC_ISlider +class CWindowMaskFeatherSlider : public BC_FSlider { public: - CWindowMaskValue(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); - ~CWindowMaskValue(); + CWindowMaskFeatherSlider(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w, float v); + ~CWindowMaskFeatherSlider(); int handle_event(); + int update(float v); + int update(int r, float v, float mn, float mx); + char *get_caption() { return 0; } MWindow *mwindow; - CWindowToolGUI *gui; + CWindowMaskGUI *gui; + int stick; + float last_v; + float max; + Timer *timer; +}; + +class CWindowMaskGangFeather : public BC_Toggle +{ +public: + CWindowMaskGangFeather(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y); + ~CWindowMaskGangFeather(); + int handle_event(); + MWindow *mwindow; + CWindowMaskGUI *gui; }; class CWindowMaskBeforePlugins : public BC_CheckBox { public: - CWindowMaskBeforePlugins(CWindowToolGUI *gui, int x, int y); + CWindowMaskBeforePlugins(CWindowMaskGUI *gui, + int x, int y); int handle_event(); - CWindowToolGUI *gui; + CWindowMaskGUI *gui; +}; + +class CWindowMaskLoadList : public BC_ListBox +{ +public: + CWindowMaskLoadList(MWindow *mwindow, CWindowMaskGUI *gui); + ~CWindowMaskLoadList(); + void create_objects(); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; + CWindowMaskItems shape_items; +}; + +class CWindowMaskLoad : public BC_Button +{ +public: + CWindowMaskLoad(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskSave : public BC_Button +{ +public: + CWindowMaskSave(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + ~CWindowMaskSave(); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; + CWindowMaskPresetDialog *preset_dialog; +}; + +class CWindowMaskPresetDialog : public BC_DialogThread +{ +public: + CWindowMaskPresetDialog(MWindow *mwindow, CWindowMaskGUI *gui); + ~CWindowMaskPresetDialog(); + void handle_close_event(int result); + void handle_done_event(int result); + BC_Window* new_gui(); + void start_dialog(int sx, int sy, MaskAuto *keyframe); + + MWindow *mwindow; + CWindowMaskGUI *gui; + CWindowMaskPresetGUI *pgui; + int sx, sy; + MaskAuto *keyframe; +}; + +class CWindowMaskPresetGUI : public BC_Window +{ +public: + CWindowMaskPresetGUI(CWindowMaskPresetDialog *preset_dialog, + int x, int y, const char *title); + void create_objects(); + + CWindowMaskPresetDialog *preset_dialog; + CWindowMaskPresetText *preset_text; +}; + +class CWindowMaskPresetText : public BC_PopupTextBox +{ +public: + CWindowMaskPresetText(CWindowMaskPresetGUI *pgui, + int x, int y, int w, int h, const char *text); + int handle_event(); + void update_items(); + + CWindowMaskPresetGUI *pgui; + CWindowMaskItems mask_items; +}; + +class CWindowMaskDelete : public BC_Button +{ +public: + CWindowMaskDelete(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskCenter : public BC_Button +{ +public: + CWindowMaskCenter(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskNormal : public BC_Button +{ +public: + CWindowMaskNormal(MWindow *mwindow, CWindowMaskGUI *gui, + int x, int y, int w); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; +}; + +class CWindowMaskShape : public BC_Button +{ +public: + CWindowMaskShape(MWindow *mwindow, CWindowMaskGUI *gui, + const char *images, int shape, int x, int y, const char *tip); + ~CWindowMaskShape(); + void builtin_shape(int i, SubMask *sub_mask); + int handle_event(); + + MWindow *mwindow; + CWindowMaskGUI *gui; + int shape; + CWindowMaskItems shape_items; }; class CWindowDisableOpenGLMasking : public BC_CheckBox { public: - CWindowDisableOpenGLMasking(CWindowToolGUI *gui, int x, int y); + CWindowDisableOpenGLMasking(CWindowMaskGUI *gui, + int x, int y); int handle_event(); - CWindowToolGUI *gui; + CWindowMaskGUI *gui; }; class CWindowMaskGUI : public CWindowToolGUI @@ -233,27 +682,73 @@ public: ~CWindowMaskGUI(); void create_objects(); void update(); + int close_event(); + void done_event(); void handle_event(); + void set_focused(int v, float cx, float cy); + void update_buttons(MaskAuto *keyframe, int k); void get_keyframe(Track* &track, MaskAutos* &autos, MaskAuto* &keyframe, SubMask* &mask, MaskPoint* &point, int create_it); - void update_preview(); - + void load_masks(ArrayList &masks); + void save_masks(ArrayList &masks); + int smooth_mask(int typ, int on); + int save_mask(const char *nm); + int del_mask(const char *nm); + int center_mask(); + int normal_mask(); + + CWindowMaskOnTrack *mask_on_track; + CWindowMaskTrackTumbler *mask_track_tumbler; + CWindowMaskName *mask_name; + CWindowMaskButton *mask_buttons[SUBMASKS]; + CWindowMaskThumbler *mask_thumbler; + BC_Title *mask_blabels[SUBMASKS]; + CWindowMaskEnable *mask_enables[SUBMASKS]; + CWindowMaskSoloTrack *mask_solo_track; + CWindowMaskDelMask *mask_del; + CWindowMaskUnclear *mask_unclr; + CWindowMaskClrMask *mask_clr; + CWindowMaskShape *mask_shape_sqr; + CWindowMaskShape *mask_shape_crc; + CWindowMaskShape *mask_shape_tri; + CWindowMaskShape *mask_shape_ovl; + CWindowMaskLoadList *mask_load_list; + CWindowMaskLoad *mask_load; + CWindowMaskSave *mask_save; + CWindowMaskDelete *mask_delete; + CWindowMaskPresetDialog *preset_dialog; + CWindowMaskCenter *mask_center; + CWindowMaskNormal *mask_normal; + CWindowMaskFade *fade; + CWindowMaskFadeSlider *fade_slider; + CWindowMaskGangFader *gang_fader; + CWindowMaskAffectedPoint *active_point; + CWindowMaskDelPoint *del_point; + CWindowMaskGangPoint *gang_point; + CWindowMaskSmoothButton *mask_pnt_linear, *mask_pnt_smooth; + CWindowMaskSmoothButton *mask_crv_linear, *mask_crv_smooth; + CWindowMaskSmoothButton *mask_all_linear, *mask_all_smooth; CWindowCoord *x, *y; - CWindowMaskMode *mode; + CWindowMaskScaleXY *mask_scale_x, *mask_scale_y, *mask_scale_xy; + int scale_mode; + CWindowMaskFocus *focus; + int focused; + CWindowMaskGangFocus *gang_focus; + CWindowMaskHelp *help; + int helped, help_y, help_h; + CWindowMaskDrawMarkers *draw_markers; + int markers; + CWindowMaskDrawBoundary *draw_boundary; + int boundary; + CWindowCoord *focus_x, *focus_y; CWindowMaskFeather *feather; - CWindowMaskDelete *delete_point; - CWindowMaskAffectedPoint *active_point; -// Not necessary if all keyframes have same points -// CWindowMaskCycleNext *next_point; -// CWindowMaskCyclePrev *prev_point; - CWindowMaskNumber *number; - CWindowMaskValue *value; + CWindowMaskFeatherSlider *feather_slider; + CWindowMaskGangFeather *gang_feather; CWindowMaskBeforePlugins *apply_before_plugins; CWindowDisableOpenGLMasking *disable_opengl_masking; }; -class CWindowEyedropCheckBox; class CWindowEyedropGUI : public CWindowToolGUI { public: @@ -293,23 +788,21 @@ class CWindowCameraGUI : public CWindowToolGUI public: CWindowCameraGUI(MWindow *mwindow, CWindowTool *thread); ~CWindowCameraGUI(); + void handle_event(); void create_objects(); void update(); - void update_preview(); -// Update the keyframe from text boxes - void handle_event(); -// BezierAuto* get_keyframe(); CWindowCoord *x, *y, *z; -private: -// Toggles for keyframe curve mode (for camera automation only) + CWindowCameraAddKeyframe *add_keyframe; + CWindowCameraReset *reset; CWindowCurveToggle *t_smooth, *t_linear; }; class CWindowCameraLeft : public BC_Button { public: - CWindowCameraLeft(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraLeft(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; @@ -318,7 +811,8 @@ public: class CWindowCameraCenter : public BC_Button { public: - CWindowCameraCenter(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraCenter(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; @@ -327,7 +821,8 @@ public: class CWindowCameraRight : public BC_Button { public: - CWindowCameraRight(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraRight(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; @@ -336,7 +831,8 @@ public: class CWindowCameraTop : public BC_Button { public: - CWindowCameraTop(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraTop(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; @@ -345,7 +841,8 @@ public: class CWindowCameraMiddle : public BC_Button { public: - CWindowCameraMiddle(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraMiddle(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; @@ -354,32 +851,54 @@ public: class CWindowCameraBottom : public BC_Button { public: - CWindowCameraBottom(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y); + CWindowCameraBottom(MWindow *mwindow, CWindowCameraGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowCameraGUI *gui; }; +class CWindowCameraAddKeyframe : public BC_Button +{ +public: + CWindowCameraAddKeyframe(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + int handle_event(); + + MWindow *mwindow; + CWindowToolGUI *gui; +}; + +class CWindowCameraReset : public BC_Button +{ +public: + CWindowCameraReset(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + int handle_event(); + + MWindow *mwindow; + CWindowToolGUI *gui; +}; + + class CWindowProjectorGUI : public CWindowToolGUI { public: CWindowProjectorGUI(MWindow *mwindow, CWindowTool *thread); ~CWindowProjectorGUI(); + void handle_event(); void create_objects(); void update(); - void update_preview(); - void handle_event(); -// BezierAuto* get_keyframe(); + CWindowCoord *x, *y, *z; -private: -// Toggles for keyframe curve mode (projector automation only) + CWindowProjectorAddKeyframe *add_keyframe; + CWindowProjectorReset *reset; CWindowCurveToggle *t_smooth, *t_linear; }; class CWindowProjectorLeft : public BC_Button { public: - CWindowProjectorLeft(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorLeft(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; @@ -388,7 +907,8 @@ public: class CWindowProjectorCenter : public BC_Button { public: - CWindowProjectorCenter(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorCenter(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; @@ -397,7 +917,8 @@ public: class CWindowProjectorRight : public BC_Button { public: - CWindowProjectorRight(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorRight(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; @@ -406,7 +927,8 @@ public: class CWindowProjectorTop : public BC_Button { public: - CWindowProjectorTop(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorTop(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; @@ -415,7 +937,8 @@ public: class CWindowProjectorMiddle : public BC_Button { public: - CWindowProjectorMiddle(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorMiddle(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; @@ -424,12 +947,33 @@ public: class CWindowProjectorBottom : public BC_Button { public: - CWindowProjectorBottom(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y); + CWindowProjectorBottom(MWindow *mwindow, CWindowProjectorGUI *gui, + int x, int y); int handle_event(); MWindow *mwindow; CWindowProjectorGUI *gui; }; +class CWindowProjectorAddKeyframe : public BC_Button +{ +public: + CWindowProjectorAddKeyframe(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + int handle_event(); + + MWindow *mwindow; + CWindowToolGUI *gui; +}; + +class CWindowProjectorReset : public BC_Button +{ +public: + CWindowProjectorReset(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + int handle_event(); + + MWindow *mwindow; + CWindowToolGUI *gui; +}; + @@ -452,5 +996,4 @@ public: }; - #endif