load fn from resources, del kfrm speed update, svg exec cmd/file win fixes, undo...
[goodguy/history.git] / cinelerra-5.1 / plugins / titler / titlerwindow.h
index cc3734b4caf54df4b91b577bb9a543a483a87a30..def051b8670215b54b0b5099db9ab914d3e43edf 100644 (file)
@@ -33,13 +33,12 @@ class TitleInterlace;
 #include "mutex.h"
 #include "titler.h"
 
-
-
-
+#include <stdarg.h>
 
 class TitleFontTumble;
 class TitleSizeTumble;
 class TitleItalic;
+class TitleAlias;
 class TitleBold;
 class TitleDrag;
 class TitleSize;
@@ -54,6 +53,8 @@ class TitleLinePitch;
 class TitleFade;
 class TitleFont;
 class TitleText;
+class TitleTextChars;
+class TitleTextBfrSz;
 class TitleX;
 class TitleY;
 class TitleW;
@@ -76,6 +77,9 @@ class TitleCurPopup;
 class TitleCurItem;
 class TitleCurSubMenu;
 class TitleCurSubMenuItem;
+class TitleFontsPopup;
+class TitleColorPopup;
+class TitlePngPopup;
 
 class TitleWindow : public PluginClientWindow
 {
@@ -88,9 +92,15 @@ public:
        int grab_event(XEvent *event);
        void update_color();
        void update_justification();
+       void update_stats();
        void update();
        void previous_font();
        void next_font();
+       void check_style(const char *font_name, int update);
+       int insert_ibeam(const char *txt, int ofs=0);
+       void done_event(int result);
+       void send_configure_change();
+       int check_configure_change(int ret);
 
        TitleMain *client;
 
@@ -113,13 +123,18 @@ public:
        TitleStroker *stroker;
        BC_Title *style_title;
        TitleItalic *italic;
+       TitleAlias *alias;
        TitleBold *bold;
        TitleDrag *drag;
        TitleCurPopup *cur_popup;
+       TitleFontsPopup *fonts_popup;
+       TitleColorPopup *color_popup;
+       TitlePngPopup *png_popup;
 
        int color_x, color_y;
        int outline_color_x, outline_color_y;
        int drag_dx, drag_dy, dragging;
+       int cur_ibeam, pending_config;
 
        BC_Title *size_title;
        TitleSize *size;
@@ -142,6 +157,8 @@ public:
        TitleFade *fade_out;
        BC_Title *text_title;
        TitleText *text;
+       TitleTextChars *text_chars;
+       TitleTextBfrSz *text_bfrsz;
        BC_Title *justify_title;
        TitleLeft *left;
        TitleCenter *center;
@@ -155,6 +172,7 @@ public:
        TitleTimecodeFormat *timecode_format;
        TitleBackground *background;
        TitleBackgroundPath *background_path;
+       BrowseButton *background_browse;
        TitleLoopPlayback *loop_playback;
 
 // Color preview
@@ -162,7 +180,6 @@ public:
        ArrayList<BC_ListBoxItem*> encodings;
        ArrayList<BC_ListBoxItem*> paths;
        ArrayList<BC_ListBoxItem*> fonts;
-       int cur_ibeam;
 };
 
 
@@ -192,7 +209,14 @@ public:
 };
 
 
-
+class TitleAlias : public BC_CheckBox
+{
+public:
+       TitleAlias(TitleMain *client, TitleWindow *window, int x, int y);
+       int handle_event();
+       TitleMain *client;
+       TitleWindow *window;
+};
 class TitleItalic : public BC_CheckBox
 {
 public:
@@ -280,7 +304,7 @@ public:
 class TitleLoop : public BC_CheckBox
 {
 public:
-       TitleLoop(TitleMain *client, int x, int y);
+       TitleLoop(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
        TitleWindow *window;
@@ -288,7 +312,7 @@ public:
 class TitleLinePitch : public BC_CheckBox
 {
 public:
-       TitleLinePitch(TitleMain *client, int x, int y);
+       TitleLinePitch(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
        TitleWindow *window;
@@ -297,19 +321,21 @@ public:
 class TitleTimecode : public BC_CheckBox
 {
 public:
-       TitleTimecode(TitleMain *client, int x, int y);
+       TitleTimecode(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
+       TitleWindow *window;
 };
 
 class TitleTimecodeFormat : public BC_PopupMenu
 {
 public:
-       TitleTimecodeFormat(TitleMain *client, int x, int y, const char *text);
+       TitleTimecodeFormat(TitleMain *client, TitleWindow *window, int x, int y, const char *text);
        void create_objects();
        int update(int timecode_format);
        int handle_event();
        TitleMain *client;
+       TitleWindow *window;
 };
 
 class TitleFade : public BC_TextBox
@@ -343,6 +369,21 @@ public:
        TitleMain *client;
        TitleWindow *window;
 };
+class TitleTextChars : public BC_Title
+{
+public:
+       int update(int n);
+       TitleTextChars(int x, int y, int w);
+       ~TitleTextChars();
+};
+class TitleTextBfrSz : public BC_Title
+{
+public:
+       int update(int n);
+       TitleTextBfrSz(int x, int y, int w);
+       ~TitleTextBfrSz();
+};
+
 class TitleX : public BC_TumbleTextBox
 {
 public:
@@ -409,6 +450,7 @@ public:
        TitleSpeed(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
+       TitleWindow *window;
 };
 
 class TitleLeft : public BC_Radial
@@ -460,7 +502,7 @@ public:
        TitleMain *client;
        TitleWindow *window;
 };
-class TitleColorThread : public ColorThread
+class TitleColorThread : public ColorPicker
 {
 public:
        TitleColorThread(TitleMain *client, TitleWindow *window, int is_outline);
@@ -488,7 +530,7 @@ public:
 class TitleLoopPlayback : public BC_CheckBox
 {
 public:
-       TitleLoopPlayback(TitleMain *client, int x, int y);
+       TitleLoopPlayback(TitleMain *client, TitleWindow *window, int x, int y);
        int handle_event();
        TitleMain *client;
        TitleWindow *window;
@@ -516,23 +558,75 @@ public:
         TitleCurPopup *popup;
 };
 
+enum { POPUP_OFFSET=-1, POPUP_NONE=0, POPUP_FONT, POPUP_COLOR, POPUP_PNG, };
+
 class TitleCurSubMenu : public BC_SubMenu
 {
 public:
         TitleCurSubMenu(TitleCurItem *cur_item);
         ~TitleCurSubMenu();
-
+       void add_subitemx(int popup_type, va_list ap, const char *fmt);
+       void add_subitem(int popup_type, const char *fmt,...) { va_list ap;
+               va_start(ap, fmt); add_subitemx(popup_type, ap, fmt); va_end(ap);
+       }
+       void add_subitem(const char *fmt,...) { va_list ap;
+               va_start(ap, fmt); add_subitemx(POPUP_NONE, ap, fmt); va_end(ap);
+       }
         TitleCurItem *cur_item;
 };
 
 class TitleCurSubMenuItem : public BC_MenuItem
 {
 public:
-        TitleCurSubMenuItem(TitleCurSubMenu *submenu, const char *text);
+        TitleCurSubMenuItem(TitleCurSubMenu *submenu, const char *text, int popup_type);
         ~TitleCurSubMenuItem();
-
         int handle_event();
+
         TitleCurSubMenu *submenu;
+       int popup_type;
+};
+
+class TitleFontsPopup : public BC_ListBox
+{
+public:
+       TitleFontsPopup(TitleMain *client, TitleWindow *window);
+       ~TitleFontsPopup();
+       int keypress_event();
+       int handle_event();
+       int show_tooltip(const char *text, int x,int y, int w,int h) {
+               return gui_tooltip(text);
+       }
+
+       TitleMain *client;
+       TitleWindow *window;
+};
+
+class TitleColorPopup : public ColorPicker
+{
+public:
+       TitleColorPopup(TitleMain *client, TitleWindow *window);
+       ~TitleColorPopup();
+       int handle_new_color(int output, int alpha);
+       void handle_done_event(int result);
+       int activate();
+
+       TitleMain *client;
+       TitleWindow *window;
+       int color_value;
+};
+
+class TitlePngPopup : public BC_DialogThread
+{
+public:
+       TitlePngPopup(TitleMain *client, TitleWindow *window);
+       ~TitlePngPopup();
+
+       void handle_done_event(int result);
+       BC_Window* new_gui();
+       int activate();
+
+       TitleMain *client;
+       TitleWindow *window;
 };
 
 #endif