4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31 #include "colorpicker.h"
40 class TitleFontTumble;
41 class TitleSizeTumble;
48 class TitleColorButton;
49 class TitleOutlineColorButton;
50 class TitleDropShadow;
63 class TitleRight;class TitleTop;
66 class TitleColorThread;
69 class TitleTimecodeFormat;
72 class TitleBackground;
73 class TitleBackgroundPath;
74 class TitleLoopPlayback;
77 class TitleCurSubMenu;
78 class TitleCurSubMenuItem;
79 class TitleFontsPopup;
80 class TitleColorPopup;
83 class TitleWindow : public PluginClientWindow
86 TitleWindow(TitleMain *client);
89 void create_objects();
90 int resize_event(int w, int h);
91 int grab_event(XEvent *event);
93 void update_justification();
97 void check_style(const char *font_name);
98 int insert_ibeam(const char *txt, int adv);
102 BC_Title *font_title;
104 TitleFontTumble *font_tumbler;
113 BC_Title *dropshadow_title;
114 TitleDropShadow *dropshadow;
115 BC_Title *outline_title;
116 TitleOutline *outline;
117 BC_Title *stroker_title;
118 TitleStroker *stroker;
119 BC_Title *style_title;
123 TitleCurPopup *cur_popup;
124 TitleFontsPopup *fonts_popup;
125 TitleColorPopup *color_popup;
126 TitlePngPopup *png_popup;
128 int color_x, color_y;
129 int outline_color_x, outline_color_y;
130 int drag_dx, drag_dy, dragging;
133 BC_Title *size_title;
135 TitleSizeTumble *size_tumbler;
136 BC_Title *pitch_title;
138 BC_Title *encoding_title;
139 TitleEncoding *encoding;
140 TitleColorButton *color_button;
141 TitleColorThread *color_thread;
142 TitleOutlineColorButton *outline_color_button;
143 TitleColorThread *outline_color_thread;
144 BC_Title *motion_title;
146 TitleLinePitch *line_pitch;
148 BC_Title *fadein_title;
150 BC_Title *fadeout_title;
152 BC_Title *text_title;
154 BC_Title *justify_title;
161 BC_Title *speed_title;
163 TitleTimecode *timecode;
164 TitleTimecodeFormat *timecode_format;
165 TitleBackground *background;
166 TitleBackgroundPath *background_path;
167 BrowseButton *background_browse;
168 TitleLoopPlayback *loop_playback;
171 ArrayList<BC_ListBoxItem*> sizes;
172 ArrayList<BC_ListBoxItem*> encodings;
173 ArrayList<BC_ListBoxItem*> paths;
174 ArrayList<BC_ListBoxItem*> fonts;
178 class TitleFontTumble : public BC_Tumbler
181 TitleFontTumble(TitleMain *client, TitleWindow *window, int x, int y);
183 int handle_up_event();
184 int handle_down_event();
191 class TitleSizeTumble : public BC_Tumbler
194 TitleSizeTumble(TitleMain *client, TitleWindow *window, int x, int y);
196 int handle_up_event();
197 int handle_down_event();
205 class TitleItalic : public BC_CheckBox
208 TitleItalic(TitleMain *client, TitleWindow *window, int x, int y);
213 class TitleBold : public BC_CheckBox
216 TitleBold(TitleMain *client, TitleWindow *window, int x, int y);
221 class TitleDrag : public BC_CheckBox
224 TitleDrag(TitleMain *client, TitleWindow *window, int x, int y);
231 class TitleSize : public BC_PopupTextBox
234 TitleSize(TitleMain *client, TitleWindow *window, int x, int y, char *text);
237 void update(int size);
242 class TitlePitch : public BC_TumbleTextBox
245 TitlePitch(TitleMain *client, TitleWindow *window, int x, int y, int *value);
254 class TitleEncoding : public BC_PopupTextBox
257 TitleEncoding(TitleMain *client, TitleWindow *window, int x, int y, char *text);
264 class TitleColorButton : public BC_GenericButton
267 TitleColorButton(TitleMain *client, TitleWindow *window, int x, int y);
272 class TitleOutlineColorButton : public BC_GenericButton
275 TitleOutlineColorButton(TitleMain *client, TitleWindow *window, int x, int y);
281 class TitleMotion : public BC_PopupTextBox
284 TitleMotion(TitleMain *client, TitleWindow *window, int x, int y);
289 class TitleLoop : public BC_CheckBox
292 TitleLoop(TitleMain *client, int x, int y);
297 class TitleLinePitch : public BC_CheckBox
300 TitleLinePitch(TitleMain *client, int x, int y);
306 class TitleTimecode : public BC_CheckBox
309 TitleTimecode(TitleMain *client, int x, int y);
314 class TitleTimecodeFormat : public BC_PopupMenu
317 TitleTimecodeFormat(TitleMain *client, int x, int y, const char *text);
318 void create_objects();
319 int update(int timecode_format);
324 class TitleFade : public BC_TextBox
327 TitleFade(TitleMain *client, TitleWindow *window, double *value, int x, int y);
333 class TitleFont : public BC_PopupTextBox
336 TitleFont(TitleMain *client, TitleWindow *window, int x, int y);
341 class TitleText : public BC_ScrollTextBox
344 TitleText(TitleMain *client,
351 int button_press_event();
355 class TitleX : public BC_TumbleTextBox
358 TitleX(TitleMain *client, TitleWindow *window, int x, int y);
363 class TitleY : public BC_TumbleTextBox
366 TitleY(TitleMain *client, TitleWindow *window, int x, int y);
371 class TitleW : public BC_TumbleTextBox
374 TitleW(TitleMain *client, TitleWindow *window, int x, int y);
379 class TitleH : public BC_TumbleTextBox
382 TitleH(TitleMain *client, TitleWindow *window, int x, int y);
388 class TitleDropShadow : public BC_TumbleTextBox
391 TitleDropShadow(TitleMain *client, TitleWindow *window, int x, int y);
397 class TitleOutline : public BC_TumbleTextBox
400 TitleOutline(TitleMain *client, TitleWindow *window, int x, int y);
406 class TitleStroker : public BC_TumbleTextBox
409 TitleStroker(TitleMain *client, TitleWindow *window, int x, int y);
415 class TitleSpeed : public BC_TumbleTextBox
418 TitleSpeed(TitleMain *client, TitleWindow *window, int x, int y);
423 class TitleLeft : public BC_Radial
426 TitleLeft(TitleMain *client, TitleWindow *window, int x, int y);
431 class TitleCenter : public BC_Radial
434 TitleCenter(TitleMain *client, TitleWindow *window, int x, int y);
439 class TitleRight : public BC_Radial
442 TitleRight(TitleMain *client, TitleWindow *window, int x, int y);
448 class TitleTop : public BC_Radial
451 TitleTop(TitleMain *client, TitleWindow *window, int x, int y);
456 class TitleMid : public BC_Radial
459 TitleMid(TitleMain *client, TitleWindow *window, int x, int y);
464 class TitleBottom : public BC_Radial
467 TitleBottom(TitleMain *client, TitleWindow *window, int x, int y);
472 class TitleColorThread : public ColorThread
475 TitleColorThread(TitleMain *client, TitleWindow *window, int is_outline);
476 virtual int handle_new_color(int output, int alpha);
481 class TitleBackground : public BC_CheckBox
484 TitleBackground(TitleMain *client, TitleWindow *window, int x, int y);
489 class TitleBackgroundPath : public BC_TextBox
492 TitleBackgroundPath(TitleMain *client, TitleWindow *window, int x, int y);
497 class TitleLoopPlayback : public BC_CheckBox
500 TitleLoopPlayback(TitleMain *client, int x, int y);
507 class TitleCurPopup : public BC_PopupMenu
510 TitleCurPopup(TitleMain *client, TitleWindow *window);
513 void create_objects();
519 class TitleCurItem : public BC_MenuItem
522 TitleCurItem(TitleCurPopup *popup, const char *text);
525 TitleCurPopup *popup;
528 class TitleCurSubMenu : public BC_SubMenu
531 TitleCurSubMenu(TitleCurItem *cur_item);
534 TitleCurItem *cur_item;
537 class TitleCurSubMenuItem : public BC_MenuItem
540 TitleCurSubMenuItem(TitleCurSubMenu *submenu, const char *text);
541 ~TitleCurSubMenuItem();
544 TitleCurSubMenu *submenu;
547 class TitleFontsPopup : public BC_ListBox
550 TitleFontsPopup(TitleMain *client, TitleWindow *window);
558 class TitleColorPopup : public ColorThread
561 TitleColorPopup(TitleMain *client, TitleWindow *window);
563 int handle_new_color(int output, int alpha);
564 void handle_done_event(int result);
572 class TitlePngPopup : public BC_DialogThread
575 TitlePngPopup(TitleMain *client, TitleWindow *window);
578 void handle_done_event(int result);
579 BC_Window* new_gui();