add x10tv ati remote rework, android remote rework, wintv remote tweaks
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / cwindowtool.h
index bfca94cf7dfedd4e562383bc96ae99ebb131536b..6d02bf67970eeb45fa28f3873d1a7f775cff431c 100644 (file)
 #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,6 +362,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:
@@ -354,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
@@ -395,7 +459,6 @@ public:
        CWindowMaskDelPoint(MWindow *mwindow, CWindowMaskGUI *gui,
                        int x, int y);
        int handle_event();
-       int keypress_event();
        MWindow *mwindow;
        CWindowMaskGUI *gui;
 };
@@ -421,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;
 };
 
@@ -449,7 +514,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,
@@ -460,7 +538,7 @@ public:
        CWindowMaskGUI *gui;
 };
 
-class CWindowMaskSave : public BC_GenericButton
+class CWindowMaskSave : public BC_Button
 {
 public:
        CWindowMaskSave(MWindow *mwindow, CWindowMaskGUI *gui,
@@ -513,7 +591,7 @@ public:
        CWindowMaskItems mask_items;
 };
 
-class CWindowMaskDelete : public BC_GenericButton
+class CWindowMaskDelete : public BC_Button
 {
 public:
        CWindowMaskDelete(MWindow *mwindow, CWindowMaskGUI *gui,
@@ -524,7 +602,7 @@ public:
        CWindowMaskGUI *gui;
 };
 
-class CWindowMaskCenter : public BC_GenericButton
+class CWindowMaskCenter : public BC_Button
 {
 public:
        CWindowMaskCenter(MWindow *mwindow, CWindowMaskGUI *gui,
@@ -535,7 +613,7 @@ public:
        CWindowMaskGUI *gui;
 };
 
-class CWindowMaskNormal : public BC_GenericButton
+class CWindowMaskNormal : public BC_Button
 {
 public:
        CWindowMaskNormal(MWindow *mwindow, CWindowMaskGUI *gui,
@@ -546,18 +624,18 @@ public:
        CWindowMaskGUI *gui;
 };
 
-class CWindowMaskShape : public BC_ListBox
+class CWindowMaskShape : public BC_Button
 {
 public:
-       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;
 };
 
@@ -603,9 +681,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;
@@ -615,10 +697,13 @@ 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;
        CWindowCoord *x, *y;
+       CWindowMaskScaleXY *mask_scale_x, *mask_scale_y, *mask_scale_xy;
+       int scale_mode;
        CWindowMaskFocus *focus;
        int focused;
        CWindowMaskGangFocus *gang_focus;
@@ -676,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;
 };
 
@@ -748,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;
 };
 
@@ -823,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;
+};
+
 
 
 
@@ -845,5 +969,4 @@ public:
 };
 
 
-
 #endif