1b1e4b38111812fffe90d11b2f350e189b217376
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / theme.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 1997-2014 Adam Williams <broadcast at earthling dot net>
5  *
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.
10  *
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.
15  *
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
19  *
20  */
21
22 #ifndef THEME_H
23 #define THEME_H
24
25 #include "awindowgui.inc"
26 #include "batchrender.inc"
27 #include "bctheme.h"
28 #include "compressortools.inc"
29 #include "cwindowgui.inc"
30 #include "guicast.h"
31 #include "keyframegui.inc"
32 #include "levelwindowgui.inc"
33 #include "mbuttons.inc"
34 #include "mwindow.inc"
35 #include "mwindowgui.inc"
36 #include "new.inc"
37 #include "overlayframe.inc"
38 #include "patchbay.inc"
39 #include "preferencesthread.inc"
40 //#include "presetsgui.inc"
41 #include "recordgui.inc"
42 #include "recordmonitor.inc"
43 #include "resourcepixmap.inc"
44 #include "timebar.inc"
45 #include "trackcanvas.inc"
46 #include "setformat.inc"
47 #include "statusbar.inc"
48 #include "vframe.inc"
49 #include "vwindowgui.inc"
50 #include "zoombar.inc"
51
52
53
54 // Theme uses static png resources at startup.
55 // The reason is GUI elements must be constructed at startup from multiple
56 // pngs.
57
58
59
60 class Theme : public BC_Theme
61 {
62 public:
63         Theme();
64         virtual ~Theme();
65
66
67         virtual void initialize();
68         virtual void get_mwindow_sizes(MWindowGUI *gui,
69                 int w,
70                 int h);
71         virtual void get_pane_sizes(MWindowGUI *gui,
72                 int *view_x,
73                 int *view_y,
74                 int *view_w,
75                 int *view_h,
76                 int number,
77                 int x,
78                 int y,
79                 int w,
80                 int h);
81
82         virtual void get_vwindow_sizes(VWindowGUI *gui);
83         virtual void get_cwindow_sizes(CWindowGUI *gui, int cwindow_controls);
84         virtual void get_awindow_sizes(AWindowGUI *gui);
85         virtual void get_rmonitor_sizes(int do_audio,
86                 int do_video,
87                 int do_channel,
88                 int do_interlace,
89                 int do_avc,
90                 int audio_channels);
91         virtual void get_recordgui_sizes(RecordGUI *gui,
92                 int w,
93                 int h);
94         virtual void get_batchrender_sizes(BatchRenderGUI *gui,
95                 int w,
96                 int h);
97         virtual void get_plugindialog_sizes();
98 //      virtual void get_presetdialog_sizes(PresetsWindow *gui);
99         virtual void get_keyframedialog_sizes(KeyFrameWindow *gui);
100         virtual void get_menueffect_sizes(int use_list);
101         virtual void draw_rwindow_bg(RecordGUI *gui);
102         virtual void draw_rmonitor_bg(RecordMonitorGUI *gui);
103         virtual void draw_awindow_bg(AWindowGUI *gui);
104         virtual void draw_cwindow_bg(CWindowGUI *gui);
105         virtual void draw_lwindow_bg(LevelWindowGUI *gui);
106         virtual void draw_mwindow_bg(MWindowGUI *gui);
107         virtual void draw_vwindow_bg(VWindowGUI *gui);
108         virtual void draw_resource_bg(TrackCanvas *canvas, ResourcePixmap *pixmap, int color,
109                 int edit_x, int edit_w, int pixmap_x, int x1, int y1, int x2, int y2);
110
111         virtual void get_preferences_sizes();
112         virtual void draw_preferences_bg(PreferencesWindow *gui);
113         virtual void get_new_sizes(NewWindow *gui);
114         virtual void draw_new_bg(NewWindow *gui);
115         virtual void draw_setformat_bg(SetFormatWindow *window);
116
117         virtual void build_menus();
118         virtual int get_color_title_bg();
119 //      unsigned char* get_image(char *title);
120         void flush_images();
121
122         ArrayList<BC_ListBoxItem*> aspect_ratios;
123         ArrayList<BC_ListBoxItem*> frame_rates;
124         ArrayList<BC_ListBoxItem*> frame_sizes;
125         ArrayList<BC_ListBoxItem*> sample_rates;
126         ArrayList<BC_ListBoxItem*> zoom_values;
127         const char *theme_title;
128
129 // Tools for building widgets
130         void overlay(VFrame *dst, VFrame *src, int in_x1 = -1, int in_x2 = -1);
131         void build_transport(char *title,
132                 unsigned char *png_overlay,
133                 VFrame **bg_data,
134                 int region);
135         void build_patches(VFrame** &data,
136                 unsigned char *png_overlay,
137                 VFrame **bg_data,
138                 int region);
139         void build_button(VFrame** &data,
140                 unsigned char *png_overlay,
141                 VFrame *up_vframe,
142                 VFrame *hi_vframe,
143                 VFrame *dn_vframe);
144         void build_button(VFrame** &data,
145                 unsigned char *png_overlay,
146                 VFrame *up_vframe,
147                 VFrame *hi_vframe,
148                 VFrame *dn_vframe,
149                 VFrame *at_vframe);
150         void build_toggle(VFrame** &data,
151                 unsigned char *png_overlay,
152                 VFrame *up_vframe,
153                 VFrame *hi_vframe,
154                 VFrame *checked_vframe,
155                 VFrame *dn_vframe,
156                 VFrame *checkedhi_vframe);
157
158 // colors for the main message text
159         int message_normal, message_error;
160
161
162 // Locations
163         int abinbuttons_x, abinbuttons_y;
164         int abuttons_x, abuttons_y;
165         int adivider_x, adivider_y, adivider_w, adivider_h;
166         int afolders_x, afolders_y, afolders_w, afolders_h;
167         int alist_x, alist_y, alist_w, alist_h;
168         int audio_color;
169 // audio zero crossing
170         int zero_crossing_color;
171 // compressor graph line
172         int graph_active_color;
173         int graph_inactive_color;
174 // compressor graph background
175         int graph_grid_color;
176         int graph_bg_color;
177         int graph_border1_color;
178         int graph_border2_color;
179         int assetedit_color;
180         int browse_pad;
181         int cauto_x, cauto_y, cauto_w, cauto_h;
182         int ccanvas_x, ccanvas_y, ccanvas_w, ccanvas_h;
183         int ccomposite_x, ccomposite_y, ccomposite_w, ccomposite_h;
184         int cstatus_x, cstatus_y;
185         int cdest_x, cdest_y;
186         int cedit_x, cedit_y;
187         int channel_position_color;
188         int cmeter_x, cmeter_y, cmeter_h;
189         int cslider_x, cslider_y, cslider_w;
190         int ctime_x, ctime_y;
191         int ctimebar_x, ctimebar_y, ctimebar_w, ctimebar_h;
192         int timebar_cursor_color;
193         int ctransport_x, ctransport_y;
194         int czoom_x, czoom_y, czoom_w;
195         int fade_h;
196         int inout_highlight_color;
197         int loadfile_pad;
198         int loadmode_w;
199         int mbuttons_x, mbuttons_y, mbuttons_w, mbuttons_h;
200 // pixels between end transport button and arrow button
201         int mtransport_margin;
202 // dimensions containing all panes
203         int mcanvas_x, mcanvas_y, mcanvas_w, mcanvas_h;
204         int mclock_x, mclock_y, mclock_w, mclock_h;
205         int mhscroll_x, mhscroll_y, mhscroll_w;
206         int mvscroll_x, mvscroll_y, mvscroll_h;
207         int meter_h;
208         int mode_h;
209         int mstatus_x, mstatus_y, mstatus_w, mstatus_h;
210         int mstatus_message_x, mstatus_message_y;
211         int mstatus_progress_x, mstatus_progress_y, mstatus_progress_w;
212         int mstatus_cancel_x, mstatus_cancel_y;
213         int mtimebar_x, mtimebar_y, mtimebar_w, mtimebar_h;
214         int mzoom_x, mzoom_y, mzoom_w, mzoom_h;
215         int new_audio_x, new_audio_y;
216         int new_ok_x, new_ok_y;
217         int new_video_x, new_video_y;
218         int pan_h;
219         int pan_x;
220         int pane_x;
221 // Division lines for track panes
222         int pane_y;
223         int pane_w;
224         int pane_h;
225         int play_h;
226         int pane_color;
227         int drag_pane_color;
228         int preferencescategory_x, preferencescategory_y;
229 // Overlap between category buttons
230         int preferences_category_overlap;
231         int preferencestitle_x, preferencestitle_y;
232         int preferencesoptions_x, preferencesoptions_y;
233         int patchbay_x, patchbay_y, patchbay_w, patchbay_h;
234 // pixels between toggles and buttons in edit panel
235         int toggle_margin;
236 // Distance to left and right of automation point for control points
237         int control_pixels;
238
239         int plugindialog_new_x, plugindialog_new_y, plugindialog_new_w, plugindialog_new_h;
240         int plugindialog_shared_x, plugindialog_shared_y, plugindialog_shared_w, plugindialog_shared_h;
241         int plugindialog_module_x, plugindialog_module_y, plugindialog_module_w, plugindialog_module_h;
242         int plugindialog_newattach_x, plugindialog_newattach_y;
243         int plugindialog_sharedattach_x, plugindialog_sharedattach_y;
244         int plugindialog_moduleattach_x, plugindialog_moduleattach_y;
245
246         int presets_list_x, presets_list_y, presets_list_w, presets_list_h;
247         int presets_text_x, presets_text_y, presets_text_w;
248         int presets_delete_x, presets_delete_y;
249         int presets_save_x, presets_save_y;
250         int presets_apply_x, presets_apply_y;
251
252         int keyframe_list_x, keyframe_list_y, keyframe_list_w, keyframe_list_h;
253         int keyframe_text_x, keyframe_text_y, keyframe_text_w, keyframe_text_h;
254         int keyframe_value_x, keyframe_value_y, keyframe_value_w, keyframe_value_h;
255         int keyframe_all_x, keyframe_all_y;
256
257         int menueffect_list_x, menueffect_list_y, menueffect_list_w, menueffect_list_h;
258         int menueffect_file_x, menueffect_file_y;
259         int menueffect_tools_x, menueffect_tools_y;
260
261
262         int recordgui_batches_w, recordgui_batches_h;
263         int recordgui_batches_x, recordgui_batches_y;
264         int recordgui_batch_x, recordgui_batch_y, recordgui_batchcaption_x;
265         int recordgui_options_x, recordgui_options_y;
266         int recordgui_controls_x, recordgui_controls_y;
267         int recordgui_loadmode_x, recordgui_loadmode_y;
268         int recordgui_status_x, recordgui_status_y, recordgui_status_x2;
269         int recordgui_transport_x, recordgui_transport_y;
270         int recordgui_fixed_color, recordgui_variable_color;
271         int rmonitor_canvas_w, rmonitor_canvas_h;
272         int rmonitor_canvas_x, rmonitor_canvas_y;
273         int rmonitor_channel_x, rmonitor_channel_y;
274         int rmonitor_interlace_x, rmonitor_interlace_y;
275         int rmonitor_meter_w, rmonitor_meter_h;
276         int rmonitor_meter_x, rmonitor_meter_y;
277         int rmonitor_source_x, rmonitor_source_y;
278         int rmonitor_tx_x, rmonitor_tx_y;
279
280         int batchrender_x1, batchrender_x2, batchrender_x3;
281
282         int setformat_x1, setformat_x2, setformat_x3, setformat_x4;
283         int setformat_y1, setformat_y2, setformat_y3;
284         int setformat_w, setformat_h, setformat_margin;
285         int setformat_channels_x, setformat_channels_y, setformat_channels_w, setformat_channels_h;
286         int title_h;
287         int title_font, title_color;
288         int edit_font_color;
289         int vcanvas_x, vcanvas_y, vcanvas_w, vcanvas_h;
290         int vedit_x, vedit_y;
291         int vmeter_x, vmeter_y, vmeter_h;
292         int vslider_x, vslider_y, vslider_w;
293         int vsource_x, vsource_y;
294         int vtimebar_x, vtimebar_y, vtimebar_w, vtimebar_h;
295         int vtime_x, vtime_y, vtime_w;
296         int vdivision_x;
297         int vtransport_x, vtransport_y;
298         int vzoom_x, vzoom_y;
299         int window_border;
300         int widget_border;
301         int clock_bg_color;
302         int clock_fg_color;
303         int use_commercials;
304
305 // Bitmaps
306         VFrame *about_bg;
307         VFrame **appendasset_data;
308         VFrame **append_data;
309         VFrame **asset_append_data;
310         VFrame **asset_disk_data;
311         VFrame **asset_index_data;
312         VFrame **asset_info_data;
313         VFrame **asset_project_data;
314         VFrame **browse_data;
315         VFrame **calibrate_data;
316         VFrame *camerakeyframe_data;
317         VFrame **cancel_data;
318         VFrame **chain_data;
319         VFrame *channel_bg_data;
320         VFrame *channel_position_data;
321         VFrame **delete_all_indexes_data;
322         VFrame **deletebin_data;
323         VFrame **delete_data;
324         VFrame **deletedisk_data;
325         VFrame **deleteproject_data;
326         VFrame **detach_data;
327         VFrame **dntriangle_data;
328
329         VFrame **edit_data;
330         VFrame **edithandlein_data;
331         VFrame **edithandleout_data;
332         VFrame **extract_data;
333         VFrame **ffmpeg_toggle;
334         VFrame **proxy_p_toggle;
335         VFrame **proxy_s_toggle;
336         VFrame **mask_mode_toggle;
337         VFrame **infoasset_data;
338         VFrame **in_point;
339         VFrame **insert_data;
340         VFrame *keyframe_data;
341         VFrame **label_toggle;
342         VFrame **lift_data;
343         VFrame *maskkeyframe_data;
344         VFrame *modekeyframe_data;
345         VFrame *hardedge_data;
346         VFrame **movedn_data;
347         VFrame **moveup_data;
348         VFrame **newbin_data;
349         VFrame **no_data;
350         VFrame **options_data;
351         VFrame **out_point;
352         VFrame **over_button;
353         VFrame **overwrite_data;
354         VFrame *pankeyframe_data;
355         VFrame **pasteasset_data;
356         VFrame **paused_data;
357         VFrame **picture_data;
358         VFrame **presentation_data;
359         VFrame **presentation_loop;
360         VFrame **presentation_stop;
361         VFrame *projectorkeyframe_data;
362         VFrame **redrawindex_data;
363         VFrame **renamebin_data;
364         VFrame **reset_data;
365         VFrame **reverse_data;
366         VFrame **rewind_data;
367         VFrame **select_data;
368         VFrame **shbtn_data;
369         VFrame **splice_data;
370         VFrame **start_over_data;
371         VFrame **statusbar_cancel_data;
372         VFrame *timebar_view_data;
373         VFrame **transition_data;
374         VFrame **uptriangle_data;
375         VFrame **viewasset_data;
376         VFrame *vtimebar_bg_data;
377
378
379         MWindow *mwindow;
380 // Compressed images are loaded in here.
381         char *data_buffer;
382         char path[BCTEXTLEN];
383         char *last_image;
384         int last_offset;
385 };
386
387 #endif