add Autosave continuous backups by Andras Reuss and Andrew-R
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / cwindowtool.h
index 3d05d38aa01815ca96c6bd47203d41edfecb3098..480663981dfdcdae24e9aa306aea562e25baedef 100644 (file)
@@ -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
@@ -456,11 +537,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;
 };
 
@@ -725,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
@@ -803,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
@@ -878,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;
+};
+
 
 
 
@@ -900,5 +1062,4 @@ public:
 };
 
 
-
 #endif