X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.h;h=6d02bf67970eeb45fa28f3873d1a7f775cff431c;hp=5654e8825cd7b181f2c76bbdb0a546800780b02d;hb=32a609a6bd1181993569399ab51f314dc7cb4fba;hpb=134e3b2ef6322953b40f7ec2567e8b883eb42830 diff --git a/cinelerra-5.1/cinelerra/cwindowtool.h b/cinelerra-5.1/cinelerra/cwindowtool.h index 5654e882..6d02bf67 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 @@ -86,6 +97,7 @@ public: virtual int close_event(); int keypress_event(); int translation_event(); + int press(void (CWindowCanvas::*fn)()); MWindow *mwindow; CWindowTool *thread; @@ -106,18 +118,44 @@ public: CWindowToolGUI *gui; }; -class CWindowCropOK : public BC_GenericButton +class CWindowCropApply : public BC_GenericButton { public: - CWindowCropOK(MWindow *mwindow, CWindowToolGUI *gui, + 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 +166,7 @@ public: // Update the gui void handle_event(); CWindowCoord *x1, *y1, *width, *height; + CWindowCropOpMode *crop_mode; }; class CWindowMaskItem : public BC_ListBoxItem @@ -189,11 +228,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,24 +362,26 @@ public: CWindowMaskGUI *gui; }; -class CWindowMaskSmooth : public BC_GenericButton +class CWindowMaskGangPoint : public BC_Toggle { public: - CWindowMaskSmooth(MWindow *mwindow, CWindowMaskGUI *gui, + CWindowMaskGangPoint(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y); + ~CWindowMaskGangPoint(); int handle_event(); MWindow *mwindow; CWindowMaskGUI *gui; }; -class CWindowMaskGangSmooth : public BC_Button +class CWindowMaskSmoothButton : public BC_Button { public: - CWindowMaskGangSmooth(MWindow *mwindow, CWindowMaskGUI *gui, - int x, int y); + 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 @@ -363,6 +404,20 @@ public: 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 @@ -404,7 +459,6 @@ public: CWindowMaskDelPoint(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y); int handle_event(); - int keypress_event(); MWindow *mwindow; CWindowMaskGUI *gui; }; @@ -430,11 +484,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; }; @@ -458,6 +514,131 @@ public: 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: @@ -479,9 +660,15 @@ public: void handle_event(); void set_focused(int v, float cx, float cy); void update_buttons(MaskAuto *keyframe, int k); - int smooth_mask(int gang); void get_keyframe(Track* &track, MaskAutos* &autos, MaskAuto* &keyframe, SubMask* &mask, MaskPoint* &point, int create_it); + 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; @@ -491,20 +678,35 @@ public: BC_Title *mask_blabels[SUBMASKS]; CWindowMaskEnable *mask_enables[SUBMASKS]; CWindowMaskSoloTrack *mask_solo_track; - CWindowMaskDelMask *del_mask; - CWindowMaskUnclear *unclr_mask; - CWindowMaskClrMask *clr_mask; + 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; + CWindowMaskScaleXY *mask_scale_x, *mask_scale_y, *mask_scale_xy; + int scale_mode; CWindowMaskFocus *focus; int focused; CWindowMaskGangFocus *gang_focus; - CWindowMaskSmooth *smooth; - CWindowMaskGangSmooth *gang_smooth; CWindowMaskHelp *help; int helped, help_y, help_h; CWindowMaskDrawMarkers *draw_markers; @@ -559,15 +761,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; }; @@ -631,18 +831,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; }; @@ -706,6 +927,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; +}; + @@ -728,5 +969,4 @@ public: }; - #endif