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=6a9c0f77b59a82bc25135bd8e464ca682f826182;hb=7ffa6954689f14a41a3bae7a0fdb3f2abeaa9679;hpb=fb661e853152fd63537629a20f493a4cdcd4f019 diff --git a/cinelerra-5.1/cinelerra/cwindowtool.h b/cinelerra-5.1/cinelerra/cwindowtool.h index 6a9c0f77..00e485e3 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.h +++ b/cinelerra-5.1/cinelerra/cwindowtool.h @@ -31,6 +31,17 @@ #include "maskautos.inc" #include "mwindow.inc" +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 @@ -79,6 +90,7 @@ public: virtual void handle_event() {}; // Update text boxes from keyframe here virtual void update() {}; + // Update EDL and preview only void update_preview(int changed_edl=0); void draw_preview(int changed_edl); @@ -86,6 +98,7 @@ public: virtual int close_event(); int keypress_event(); int translation_event(); + int press(void (CWindowCanvas::*fn)()); MWindow *mwindow; CWindowTool *thread; @@ -95,29 +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 CWindowCropOK : public BC_GenericButton +class CWindowCoordSlider : public BC_FSlider { public: - CWindowCropOK(MWindow *mwindow, CWindowToolGUI *gui, + CWindowCoordSlider(CWindowCoord *coord, int x, int y, int w, + float mn, float mx, float value); + ~CWindowCoordSlider(); + int handle_event(); + + CWindowCoord *coord; +}; + +class CWindowCoordRange : public BC_Tumbler +{ +public: + 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: @@ -128,6 +193,7 @@ public: // Update the gui void handle_event(); CWindowCoord *x1, *y1, *width, *height; + CWindowCropOpMode *crop_mode; }; class CWindowMaskItem : public BC_ListBoxItem @@ -189,11 +255,11 @@ public: void update_items(MaskAuto *keyframe); }; -class CWindowMaskUnclear : public BC_GenericButton +class CWindowMaskUnclear : public BC_Button { public: CWindowMaskUnclear(MWindow *mwindow, CWindowMaskGUI *gui, - int x, int y, int w); + int x, int y); int handle_event(); MWindow *mwindow; CWindowMaskGUI *gui; @@ -323,6 +389,17 @@ public: 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: @@ -409,7 +486,6 @@ public: CWindowMaskDelPoint(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y); int handle_event(); - int keypress_event(); MWindow *mwindow; CWindowMaskGUI *gui; }; @@ -435,11 +511,13 @@ public: ~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; CWindowMaskGUI *gui; int stick; float last_v; + float max; Timer *timer; }; @@ -463,7 +541,20 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskLoad : public BC_GenericButton +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, @@ -474,7 +565,7 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskSave : public BC_GenericButton +class CWindowMaskSave : public BC_Button { public: CWindowMaskSave(MWindow *mwindow, CWindowMaskGUI *gui, @@ -527,7 +618,7 @@ public: CWindowMaskItems mask_items; }; -class CWindowMaskDelete : public BC_GenericButton +class CWindowMaskDelete : public BC_Button { public: CWindowMaskDelete(MWindow *mwindow, CWindowMaskGUI *gui, @@ -538,7 +629,7 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskCenter : public BC_GenericButton +class CWindowMaskCenter : public BC_Button { public: CWindowMaskCenter(MWindow *mwindow, CWindowMaskGUI *gui, @@ -549,7 +640,7 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskNormal : public BC_GenericButton +class CWindowMaskNormal : public BC_Button { public: CWindowMaskNormal(MWindow *mwindow, CWindowMaskGUI *gui, @@ -560,21 +651,18 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskShape : public BC_ListBox +class CWindowMaskShape : public BC_Button { public: - enum { MASK_SHAPE_SQUARE, MASK_SHAPE_CIRCLE, - MASK_SHAPE_TRIANGLE, MASK_SHAPE_OVAL, - MASK_SHAPE_BUILTIN }; - CWindowMaskShape(MWindow *mwindow, CWindowMaskGUI *gui); + CWindowMaskShape(MWindow *mwindow, CWindowMaskGUI *gui, + const char *images, int shape, int x, int y, const char *tip); ~CWindowMaskShape(); - void create_objects(); void builtin_shape(int i, SubMask *sub_mask); - void load_shape(int i, SubMask *sub_mask); int handle_event(); MWindow *mwindow; CWindowMaskGUI *gui; + int shape; CWindowMaskItems shape_items; }; @@ -620,9 +708,13 @@ public: CWindowMaskDelMask *mask_del; CWindowMaskUnclear *mask_unclr; CWindowMaskClrMask *mask_clr; - CWindowMaskShape *mask_shape; - CWindowMaskSave *mask_save; + 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; @@ -632,6 +724,7 @@ public: 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; @@ -695,15 +788,13 @@ class CWindowCameraGUI : public CWindowToolGUI public: CWindowCameraGUI(MWindow *mwindow, CWindowTool *thread); ~CWindowCameraGUI(); + void handle_event(); void create_objects(); void update(); -// 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; }; @@ -767,18 +858,39 @@ public: 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 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; }; @@ -842,6 +954,26 @@ public: 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; +}; + @@ -864,5 +996,4 @@ public: }; - #endif