fix undo segv with plugin guis open, add cache demand limits, exit when malloc fails...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / cwindowtool.h
index 6d02bf67970eeb45fa28f3873d1a7f775cff431c..942651f2fbeab4d9ba230638523b0137c680b4c4 100644 (file)
@@ -90,8 +90,10 @@ 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();
@@ -102,22 +104,69 @@ public:
        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;
+       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 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 CWindowCurveAutoEdge : public BC_Toggle
+{
+public:
+       CWindowCurveAutoEdge(MWindow *mwindow, CWindowToolGUI *gui, int x, int y);
+       int handle_event();
+
+       MWindow *mwindow;
+       CWindowToolGUI *gui;
+};
+
+class CWindowCurveAutoSpan : public BC_Toggle
+{
+public:
+       CWindowCurveAutoSpan(MWindow *mwindow, CWindowToolGUI *gui, int x, int y);
+
+       int handle_event();
+       MWindow *mwindow;
+       CWindowToolGUI *gui;
+};
+
+
 class CWindowCropApply : public BC_GenericButton
 {
 public:
@@ -768,7 +817,9 @@ public:
        CWindowCoord *x, *y, *z;
        CWindowCameraAddKeyframe *add_keyframe;
        CWindowCameraReset *reset;
-       CWindowCurveToggle *t_smooth, *t_linear;
+       CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump;
+       CWindowCurveAutoSpan *auto_span;
+       CWindowCurveAutoEdge *auto_edge;
 };
 
 class CWindowCameraLeft : public BC_Button
@@ -864,7 +915,9 @@ public:
        CWindowCoord *x, *y, *z;
        CWindowProjectorAddKeyframe *add_keyframe;
        CWindowProjectorReset *reset;
-       CWindowCurveToggle *t_smooth, *t_linear;
+       CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump;
+       CWindowCurveAutoSpan *auto_span;
+       CWindowCurveAutoEdge *auto_edge;
 };
 
 class CWindowProjectorLeft : public BC_Button