X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.h;h=480663981dfdcdae24e9aa306aea562e25baedef;hp=c8918071a1fda2223b4dd7c178a97822f5c749f3;hb=1db0dacec8f9d7f5687e582bd282d9bf83bd58f0;hpb=b350aa5a1ccbadcb5f794183c443c0738cd1e9ab diff --git a/cinelerra-5.1/cinelerra/cwindowtool.h b/cinelerra-5.1/cinelerra/cwindowtool.h index c8918071..48066398 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.h +++ b/cinelerra-5.1/cinelerra/cwindowtool.h @@ -90,45 +90,125 @@ 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 update_auto(Track *track, int idx, CWindowCoord *vp); void draw_preview(int changed_edl); int current_operation; virtual int close_event(); int keypress_event(); int translation_event(); + int press(void (CWindowCanvas::*fn)()); MWindow *mwindow; CWindowTool *thread; CWindowCoord *event_caller; + int edge, span; }; 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; + int type; + CWindowToolAutoRangeTumbler *min_tumbler; + CWindowCoordSlider *slider; + CWindowToolAutoRangeTumbler *max_tumbler; + CWindowToolAutoRangeReset *range_reset; + CWindowToolAutoRangeTextBox *range_text; + CWindowCoordRangeTumbler *range; +}; + +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 CWindowCoordRangeTumbler : public BC_Tumbler +{ +public: + CWindowCoordRangeTumbler(CWindowCoord *coord, int x, int y); + ~CWindowCoordRangeTumbler(); + int update(float scale); + int handle_up_event(); + int handle_down_event(); + + CWindowCoord *coord; +}; + +class CWindowCurveAutoEdge : public BC_Toggle +{ +public: + CWindowCurveAutoEdge(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + int handle_event(); + + MWindow *mwindow; + CWindowToolGUI *gui; }; -class CWindowCropOK : public BC_GenericButton +class CWindowCurveAutoSpan : public BC_Toggle { public: - CWindowCropOK(MWindow *mwindow, CWindowToolGUI *gui, + CWindowCurveAutoSpan(MWindow *mwindow, CWindowToolGUI *gui, int x, int y); + + int handle_event(); + MWindow *mwindow; + CWindowToolGUI *gui; +}; + + +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: @@ -139,6 +219,7 @@ public: // Update the gui void handle_event(); CWindowCoord *x1, *y1, *width, *height; + CWindowCropOpMode *crop_mode; }; class CWindowMaskItem : public BC_ListBoxItem @@ -727,22 +808,56 @@ public: }; +class CWindowToolAutoRangeTumbler : public BC_Tumbler +{ +public: + CWindowToolAutoRangeTumbler(CWindowCoord *coord, int x, int y, + int use_max, const char *tip); + int handle_up_event(); + int handle_down_event(); + + CWindowCoord *coord; + int use_max; +}; + +class CWindowToolAutoRangeReset : public BC_Button +{ +public: + CWindowToolAutoRangeReset(CWindowCoord *coord, int x, int y); + int handle_event(); + + CWindowCoord *coord; +}; + +class CWindowToolAutoRangeTextBox : public BC_TextBox +{ +public: + CWindowToolAutoRangeTextBox(CWindowCoord *coord, int x, int y); + int button_press_event(); + int handle_event(); + int update_range(); + + CWindowCoord *coord; +}; + 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(); + BC_TitleBar *bar1, *bar2; CWindowCoord *x, *y, *z; -private: -// Toggles for keyframe curve mode (for camera automation only) - CWindowCurveToggle *t_smooth, *t_linear; + CWindowCameraAddKeyframe *add_keyframe; + CWindowCameraReset *reset; + BC_TitleBar *bar3, *bar4, *bar5; + CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump; + CWindowCurveAutoSpan *auto_span; + CWindowCurveAutoEdge *auto_edge; }; class CWindowCameraLeft : public BC_Button @@ -805,19 +920,44 @@ 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(); + + BC_TitleBar *bar1, *bar2; CWindowCoord *x, *y, *z; -private: -// Toggles for keyframe curve mode (projector automation only) - CWindowCurveToggle *t_smooth, *t_linear; + CWindowProjectorAddKeyframe *add_keyframe; + CWindowProjectorReset *reset; + BC_TitleBar *bar3, *bar4, *bar5; + CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump; + CWindowCurveAutoSpan *auto_span; + CWindowCurveAutoEdge *auto_edge; }; class CWindowProjectorLeft : public BC_Button @@ -880,6 +1020,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; +}; + @@ -902,5 +1062,4 @@ public: }; - #endif