titler rework, some code cleanup and fixes
[goodguy/history.git] / cinelerra-5.1 / plugins / titler / titlerwindow.h
similarity index 74%
rename from cinelerra-5.1/plugins/titler/titlewindow.h
rename to cinelerra-5.1/plugins/titler/titlerwindow.h
index 3680b0ed4852f67b599aed50317683d3cce0d714..cc3734b4caf54df4b91b577bb9a543a483a87a30 100644 (file)
@@ -31,7 +31,7 @@ class TitleInterlace;
 #include "colorpicker.h"
 #include "filexml.h"
 #include "mutex.h"
-#include "title.h"
+#include "titler.h"
 
 
 
@@ -41,10 +41,12 @@ class TitleFontTumble;
 class TitleSizeTumble;
 class TitleItalic;
 class TitleBold;
+class TitleDrag;
 class TitleSize;
 class TitlePitch;
 class TitleEncoding;
 class TitleColorButton;
+class TitleOutlineColorButton;
 class TitleDropShadow;
 class TitleMotion;
 class TitleLoop;
@@ -54,6 +56,8 @@ class TitleFont;
 class TitleText;
 class TitleX;
 class TitleY;
+class TitleW;
+class TitleH;
 class TitleLeft;
 class TitleCenter;
 class TitleRight;class TitleTop;
@@ -64,6 +68,14 @@ class TitleSpeed;
 class TitleTimecode;
 class TitleTimecodeFormat;
 class TitleOutline;
+class TitleStroker;
+class TitleBackground;
+class TitleBackgroundPath;
+class TitleLoopPlayback;
+class TitleCurPopup;
+class TitleCurItem;
+class TitleCurSubMenu;
+class TitleCurSubMenuItem;
 
 class TitleWindow : public PluginClientWindow
 {
@@ -73,6 +85,7 @@ public:
 
        void create_objects();
        int resize_event(int w, int h);
+       int grab_event(XEvent *event);
        void update_color();
        void update_justification();
        void update();
@@ -88,17 +101,26 @@ public:
        TitleX *title_x;
        BC_Title *y_title;
        TitleY *title_y;
+       BC_Title *w_title;
+       TitleW *title_w;
+       BC_Title *h_title;
+       TitleH *title_h;
        BC_Title *dropshadow_title;
        TitleDropShadow *dropshadow;
        BC_Title *outline_title;
        TitleOutline *outline;
+       BC_Title *stroker_title;
+       TitleStroker *stroker;
        BC_Title *style_title;
        TitleItalic *italic;
        TitleBold *bold;
-
+       TitleDrag *drag;
+       TitleCurPopup *cur_popup;
 
        int color_x, color_y;
        int outline_color_x, outline_color_y;
+       int drag_dx, drag_dy, dragging;
+
        BC_Title *size_title;
        TitleSize *size;
        TitleSizeTumble *size_tumbler;
@@ -108,7 +130,7 @@ public:
        TitleEncoding *encoding;
        TitleColorButton *color_button;
        TitleColorThread *color_thread;
-       TitleColorButton *outline_color_button;
+       TitleOutlineColorButton *outline_color_button;
        TitleColorThread *outline_color_thread;
        BC_Title *motion_title;
        TitleMotion *motion;
@@ -131,12 +153,16 @@ public:
        TitleSpeed *speed;
        TitleTimecode *timecode;
        TitleTimecodeFormat *timecode_format;
+       TitleBackground *background;
+       TitleBackgroundPath *background_path;
+       TitleLoopPlayback *loop_playback;
 
 // Color preview
        ArrayList<BC_ListBoxItem*> sizes;
        ArrayList<BC_ListBoxItem*> encodings;
        ArrayList<BC_ListBoxItem*> paths;
        ArrayList<BC_ListBoxItem*> fonts;
+       int cur_ibeam;
 };
 
 
@@ -183,6 +209,14 @@ public:
        TitleMain *client;
        TitleWindow *window;
 };
+class TitleDrag : public BC_CheckBox
+{
+public:
+       TitleDrag(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
 
 
 class TitleSize : public BC_PopupTextBox
@@ -221,15 +255,18 @@ public:
 class TitleColorButton : public BC_GenericButton
 {
 public:
-       TitleColorButton(TitleMain *client,
-               TitleWindow *window,
-               int x,
-               int y,
-               int is_outline);
+       TitleColorButton(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
+class TitleOutlineColorButton : public BC_GenericButton
+{
+public:
+       TitleOutlineColorButton(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
        TitleWindow *window;
-       int is_outline;
 };
 
 class TitleMotion : public BC_PopupTextBox
@@ -302,6 +339,7 @@ public:
                int w,
                int h);
        int handle_event();
+       int button_press_event();
        TitleMain *client;
        TitleWindow *window;
 };
@@ -321,11 +359,18 @@ public:
        TitleMain *client;
        TitleWindow *window;
 };
-
-class TitleStrokeW : public BC_TumbleTextBox
+class TitleW : public BC_TumbleTextBox
 {
 public:
-       TitleStrokeW(TitleMain *client, TitleWindow *window, int x, int y);
+       TitleW(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
+class TitleH : public BC_TumbleTextBox
+{
+public:
+       TitleH(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
        TitleWindow *window;
@@ -349,6 +394,15 @@ public:
        TitleWindow *window;
 };
 
+class TitleStroker : public BC_TumbleTextBox
+{
+public:
+       TitleStroker(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
+
 class TitleSpeed : public BC_TumbleTextBox
 {
 public:
@@ -406,7 +460,6 @@ public:
        TitleMain *client;
        TitleWindow *window;
 };
-
 class TitleColorThread : public ColorThread
 {
 public:
@@ -416,15 +469,70 @@ public:
        TitleWindow *window;
        int is_outline;
 };
+class TitleBackground : public BC_CheckBox
+{
+public:
+       TitleBackground(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
+class TitleBackgroundPath : public BC_TextBox
+{
+public:
+       TitleBackgroundPath(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
+class TitleLoopPlayback : public BC_CheckBox
+{
+public:
+       TitleLoopPlayback(TitleMain *client, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
 
 
-class TitleColorStrokeThread : public ColorThread
+class TitleCurPopup : public BC_PopupMenu
 {
 public:
-       TitleColorStrokeThread(TitleMain *client, TitleWindow *window);
-       int handle_event(int output);
+        TitleCurPopup(TitleMain *client, TitleWindow *window);
+
+        int handle_event();
+        void create_objects();
+
        TitleMain *client;
        TitleWindow *window;
 };
 
+class TitleCurItem : public BC_MenuItem
+{
+public:
+        TitleCurItem(TitleCurPopup *popup, const char *text);
+
+        int handle_event();
+        TitleCurPopup *popup;
+};
+
+class TitleCurSubMenu : public BC_SubMenu
+{
+public:
+        TitleCurSubMenu(TitleCurItem *cur_item);
+        ~TitleCurSubMenu();
+
+        TitleCurItem *cur_item;
+};
+
+class TitleCurSubMenuItem : public BC_MenuItem
+{
+public:
+        TitleCurSubMenuItem(TitleCurSubMenu *submenu, const char *text);
+        ~TitleCurSubMenuItem();
+
+        int handle_event();
+        TitleCurSubMenu *submenu;
+};
+
 #endif