r602: Fix baver's code... don't insert timecode when show_tc is not set
[cinelerra_cv/mob.git] / cinelerra / theme.C
blobc3241d5e8783e870119a1f8738816ef600745186
1 #include "awindowgui.h"
2 #include "clip.h"
3 #include "colors.h"
4 #include "cwindowgui.h"
5 #include "edl.h"
6 #include "edlsession.h"
7 #include "language.h"
8 #include "levelwindowgui.h"
9 #include "loadmode.h"
10 #include "localsession.h"
11 #include "mainmenu.h"
12 #include "mainsession.h"
13 #include "mbuttons.h"
14 #include "meterpanel.h"
15 #include "mwindowgui.h"
16 #include "mwindow.h"
17 #include "overlayframe.h"
18 #include "patchbay.h"
19 #include "playtransport.h"
20 #include "recordgui.h"
21 #include "recordmonitor.h"
22 #include "resourcepixmap.h"
23 #include "statusbar.h"
24 #include "theme.h"
25 #include "timebar.h"
26 #include "trackcanvas.h"
27 #include "vframe.h"
28 #include "vwindowgui.h"
29 #include "zoombar.h"
32 #include <errno.h>
33 #include <string.h>
39 Theme::Theme()
40  : BC_Theme()
42         this->mwindow = 0;
43         theme_title = DEFAULT_THEME;
44         data_buffer = 0;
45         contents_buffer = 0;
46         last_image = 0;
48         BC_WindowBase::get_resources()->bg_color = BLOND;
49         BC_WindowBase::get_resources()->button_up = 0xffc000;
50         BC_WindowBase::get_resources()->button_highlighted = 0xffe000;
51         BC_WindowBase::get_resources()->recursive_resizing = 0;
52         audio_color = BLACK;
53         fade_h = 22;
54         meter_h = 17;
55         mode_h = 30;
56         pan_h = 32;
57         pan_x = 50;
58         play_h = 22;
59         title_h = 22;
62         loadmode_w = 350;
64 #include "data/about_png.h"
65         about_bg = new VFrame(about_png);
66 #include "data/microsoft_credit_png.h"
67         about_microsoft = new VFrame(microsoft_credit_png);
71         build_menus();
77 // Need to delete everything here
78 Theme::~Theme()
80         flush_images(); 
82         aspect_ratios.remove_all_objects();
83         frame_rates.remove_all_objects();
84         frame_sizes.remove_all_objects();
85         sample_rates.remove_all_objects();
86         zoom_values.remove_all_objects();
89 void Theme::flush_images()
91         if(data_buffer) delete [] data_buffer;
92         if(contents_buffer) delete [] contents_buffer;
93         data_buffer = 0;
94         contents_buffer = 0;
95         contents.remove_all();
98 void Theme::initialize()
100 // Force to use local data for images
101         extern unsigned char _binary_theme_data_start[];
102         set_data(_binary_theme_data_start);
104 // Set images which weren't set by subclass
105         new_image("mode_add", "mode_add.png");
106         new_image("mode_divide", "mode_divide.png");
107         new_image("mode_multiply", "mode_multiply.png");
108         new_image("mode_normal", "mode_normal.png");
109         new_image("mode_replace", "mode_replace.png");
110         new_image("mode_subtract", "mode_subtract.png");
114 // unsigned char* Theme::get_image(char *title)
115 // {
116 // // Read contents
117 //      if(!data_buffer)
118 //      {
119 //              FILE *fd = fopen(path, "r");
120 // 
121 //              if(!fd)
122 //              {
123 //                      fprintf(stderr, "Theme::get_image: %s when opening %s\n", strerror(errno), path);
124 //              }
125 //              int data_offset, contents_offset;
126 //              int total_bytes;
127 //              int data_size;
128 //              int contents_size;
129 // 
130 //              fseek(fd, -8, SEEK_END);
131 //              total_bytes = ftell(fd);
132 //              fread(&data_offset, 1, 4, fd);
133 //              fread(&contents_offset, 1, 4, fd);
134 // 
135 // 
136 //              fseek(fd, data_offset, SEEK_SET);
137 //              data_size = contents_offset - data_offset;
138 //              data_buffer = new char[data_size];
139 //              fread(data_buffer, 1, data_size, fd);
140 // 
141 //              fseek(fd, contents_offset, SEEK_SET);
142 //              contents_size = total_bytes - contents_offset;
143 //              contents_buffer = new char[contents_size];
144 //              fread(contents_buffer, 1, contents_size, fd);
145 // 
146 //              char *start_of_title = contents_buffer;
147 //              for(int i = 0; i < contents_size; )
148 //              {
149 //                      if(contents_buffer[i] == 0)
150 //                      {
151 //                              contents.append(start_of_title);
152 //                              i++;
153 //                              offsets.append(*(int*)(contents_buffer + i));
154 //                              i += 4;
155 //                              start_of_title = contents_buffer + i;
156 //                      }
157 //                      else
158 //                              i++;
159 //              }
160 //              fclose(fd);
161 //      }
162 // 
163 //      if(last_image && !strcasecmp(last_image, title))
164 //      {
165 //              return (unsigned char*)(data_buffer + last_offset);
166 //      }
167 //      else
168 //      for(int i = 0; i < contents.total; i++)
169 //      {
170 //              if(!strcasecmp(contents.values[i], title))
171 //              {
172 //                      last_offset = offsets.values[i];
173 //                      last_image = contents.values[i];
174 //                      return (unsigned char*)(data_buffer + offsets.values[i]);
175 //              }
176 //      }
177 // 
178 //      fprintf(stderr, "Theme::get_image: %s not found.\n", title);
179 //      return 0;
180 // }
183 void Theme::build_menus()
187         aspect_ratios.append(new BC_ListBoxItem("3:2"));
188         aspect_ratios.append(new BC_ListBoxItem("4:3"));
189         aspect_ratios.append(new BC_ListBoxItem("16:9"));
190         aspect_ratios.append(new BC_ListBoxItem("2.10:1"));
191         aspect_ratios.append(new BC_ListBoxItem("2.20:1"));
192         aspect_ratios.append(new BC_ListBoxItem("2.25:1"));
193         aspect_ratios.append(new BC_ListBoxItem("2.30:1"));
194         aspect_ratios.append(new BC_ListBoxItem("2.35:1"));
195         aspect_ratios.append(new BC_ListBoxItem("2.66:1"));
196         frame_sizes.append(new BC_ListBoxItem("160x120"));
197         frame_sizes.append(new BC_ListBoxItem("240x180"));
198         frame_sizes.append(new BC_ListBoxItem("320x240"));
199         frame_sizes.append(new BC_ListBoxItem("360x240"));
200         frame_sizes.append(new BC_ListBoxItem("400x300"));
201         frame_sizes.append(new BC_ListBoxItem("512x384"));
202         frame_sizes.append(new BC_ListBoxItem("640x480"));
203         frame_sizes.append(new BC_ListBoxItem("720x480"));
204         frame_sizes.append(new BC_ListBoxItem("720x576"));
205         frame_sizes.append(new BC_ListBoxItem("1280x720"));
206         frame_sizes.append(new BC_ListBoxItem("960x1080"));
207         frame_sizes.append(new BC_ListBoxItem("1920x1080"));
208         frame_sizes.append(new BC_ListBoxItem("1920x1088"));
209         sample_rates.append(new BC_ListBoxItem("8000"));
210         sample_rates.append(new BC_ListBoxItem("16000"));
211         sample_rates.append(new BC_ListBoxItem("22050"));
212         sample_rates.append(new BC_ListBoxItem("32000"));
213         sample_rates.append(new BC_ListBoxItem("44100"));
214         sample_rates.append(new BC_ListBoxItem("48000"));
215         sample_rates.append(new BC_ListBoxItem("96000"));
216         sample_rates.append(new BC_ListBoxItem("192000"));
217         frame_rates.append(new BC_ListBoxItem("1"));
218         frame_rates.append(new BC_ListBoxItem("5"));
219         frame_rates.append(new BC_ListBoxItem("10"));
220         frame_rates.append(new BC_ListBoxItem("12"));
221         frame_rates.append(new BC_ListBoxItem("15"));
222         frame_rates.append(new BC_ListBoxItem("23.97"));
223         frame_rates.append(new BC_ListBoxItem("24"));
224         frame_rates.append(new BC_ListBoxItem("25"));
225         frame_rates.append(new BC_ListBoxItem("29.97"));
226         frame_rates.append(new BC_ListBoxItem("30"));
227         frame_rates.append(new BC_ListBoxItem("50"));
228         frame_rates.append(new BC_ListBoxItem("59.94"));
229         frame_rates.append(new BC_ListBoxItem("60"));
230         char string[BCTEXTLEN];
231         for(int i = 1; i < 17; i++)
232         {
233                 sprintf(string, "%d", (int)pow(2, i));
234                 zoom_values.append(new BC_ListBoxItem(string));
235         }
239 void Theme::overlay(VFrame *dst, VFrame *src, int in_x1, int in_x2)
241         int w;
242         int h;
243         unsigned char **in_rows;
244         unsigned char **out_rows;
246         if(in_x1 < 0)
247         {
248                 w = MIN(src->get_w(), dst->get_w());
249                 h = MIN(dst->get_h(), src->get_h());
250                 in_x1 = 0;
251                 in_x2 = w;
252         }
253         else
254         {
255                 w = in_x2 - in_x1;
256                 h = MIN(dst->get_h(), src->get_h());
257         }
258         in_rows = src->get_rows();
259         out_rows = dst->get_rows();
261         switch(src->get_color_model())
262         {
263                 case BC_RGBA8888:
264                         switch(dst->get_color_model())
265                         {
266                                 case BC_RGBA8888:
267                                         for(int i = 0; i < h; i++)
268                                         {
269                                                 unsigned char *in_row = in_rows[i] + in_x1 * 4;
270                                                 unsigned char *out_row = out_rows[i];
271                                                 for(int j = 0; j < w; j++)
272                                                 {
273                                                         int opacity = in_row[3];
274                                                         int transparency = 0xff - opacity;
275                                                         out_row[0] = (in_row[0] * opacity + out_row[0] * transparency) / 0xff;
276                                                         out_row[1] = (in_row[1] * opacity + out_row[1] * transparency) / 0xff;
277                                                         out_row[2] = (in_row[2] * opacity + out_row[2] * transparency) / 0xff;
278                                                         out_row[3] = MAX(in_row[3], out_row[3]);
279                                                         out_row += 4;
280                                                         in_row += 4;
281                                                 }
282                                         }
283                                         break;
284                                 case BC_RGB888:
285                                         for(int i = 0; i < h; i++)
286                                         {
287                                                 unsigned char *in_row = in_rows[i] + in_x1 * 4;
288                                                 unsigned char *out_row = out_rows[i];
289                                                 for(int j = 0; j < w; j++)
290                                                 {
291                                                         int opacity = in_row[3];
292                                                         int transparency = 0xff - opacity;
293                                                         out_row[0] = (in_row[0] * opacity + out_row[0] * transparency) / 0xff;
294                                                         out_row[1] = (in_row[1] * opacity + out_row[1] * transparency) / 0xff;
295                                                         out_row[2] = (in_row[2] * opacity + out_row[2] * transparency) / 0xff;
296                                                         out_row += 3;
297                                                         in_row += 4;
298                                                 }
299                                         }
300                                         break;
301                         }
302                         break;
303         }
306 void Theme::build_transport(VFrame** &data,
307         unsigned char *png_overlay,
308         VFrame **bg_data,
309         int third)
311         if(!png_overlay) return;
312         VFrame default_data(png_overlay);
313         data = new VFrame*[3];
314         data[0] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
315         data[1] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
316         data[2] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
317         data[0]->clear_frame();
318         data[1]->clear_frame();
319         data[2]->clear_frame();
321         for(int i = 0; i < 3; i++)
322         {
323                 int in_x1;
324                 int in_x2;
325                 if(!bg_data[i]) break;
327                 switch(third)
328                 {
329                         case 0:
330                                 in_x1 = 0;
331                                 in_x2 = default_data.get_w();
332                                 break;
334                         case 1:
335                                 in_x1 = (int)(bg_data[i]->get_w() * 0.33);
336                                 in_x2 = in_x1 + default_data.get_w();
337                                 break;
339                         case 2:
340                                 in_x1 = bg_data[i]->get_w() - default_data.get_w();
341                                 in_x2 = in_x1 + default_data.get_w();
342                                 break;
343                 }
345                 overlay(data[i], 
346                         bg_data[i],
347                         in_x1,
348                         in_x2);
349                 overlay(data[i], 
350                         &default_data);
351         }
362 void Theme::build_patches(VFrame** &data,
363         unsigned char *png_overlay,
364         VFrame **bg_data,
365         int region)
367         if(!png_overlay || !bg_data) return;
368         VFrame default_data(png_overlay);
369         data = new VFrame*[5];
370         data[0] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
371         data[1] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
372         data[2] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
373         data[3] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
374         data[4] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
376         for(int i = 0; i < 5; i++)
377         {
378                 int in_x1;
379                 int in_x2;
381                 switch(region)
382                 {
383                         case 0:
384                                 in_x1 = 0;
385                                 in_x2 = default_data.get_w();
386                                 break;
388                         case 1:
389                                 in_x1 = (int)(bg_data[i]->get_w() * 0.33);
390                                 in_x2 = in_x1 + default_data.get_w();
391                                 break;
393                         case 2:
394                                 in_x1 = bg_data[i]->get_w() - default_data.get_w();
395                                 in_x2 = in_x1 + default_data.get_w();
396                                 break;
397                 }
399                 overlay(data[i], 
400                         bg_data[i]);
401                 overlay(data[i], 
402                         &default_data);
403         }
413 void Theme::build_button(VFrame** &data,
414         unsigned char *png_overlay,
415         VFrame *up_vframe,
416         VFrame *hi_vframe,
417         VFrame *dn_vframe)
419         if(!png_overlay) return;
420         VFrame default_data(png_overlay);
422         if(!up_vframe || !hi_vframe || !dn_vframe) return;
423         data = new VFrame*[3];
424         data[0] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
425         data[1] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
426         data[2] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
427         data[0]->copy_from(up_vframe);
428         data[1]->copy_from(hi_vframe);
429         data[2]->copy_from(dn_vframe);
430         for(int i = 0; i < 3; i++)
431                 overlay(data[i], 
432                         &default_data);
435 void Theme::build_toggle(VFrame** &data,
436         unsigned char *png_overlay,
437         VFrame *up_vframe,
438         VFrame *hi_vframe,
439         VFrame *checked_vframe,
440         VFrame *dn_vframe,
441         VFrame *checkedhi_vframe)
443         if(!png_overlay || 
444                 !up_vframe || 
445                 !hi_vframe || 
446                 !checked_vframe || 
447                 !dn_vframe || 
448                 !checkedhi_vframe) return;
449         VFrame default_data(png_overlay);
450         data = new VFrame*[5];
451         data[0] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
452         data[1] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
453         data[2] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
454         data[3] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
455         data[4] = new VFrame(0, default_data.get_w(), default_data.get_h(), BC_RGBA8888);
456         data[0]->copy_from(up_vframe);
457         data[1]->copy_from(hi_vframe);
458         data[2]->copy_from(checked_vframe);
459         data[3]->copy_from(dn_vframe);
460         data[4]->copy_from(checkedhi_vframe);
461         for(int i = 0; i < 5; i++)
462                 overlay(data[i], 
463                         &default_data);
466 #define TIMEBAR_HEIGHT 10
467 #define PATCHBAY_W 145
468 #define STATUS_H 20
469 #define ZOOM_H 30
471 void Theme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
475 void Theme::draw_mwindow_bg(MWindowGUI *gui)
482 void Theme::draw_awindow_bg(AWindowGUI *gui)
484         gui->clear_box(0, 0, mwindow->session->awindow_w, mwindow->session->awindow_h);
485         gui->flash();
488 void Theme::draw_vwindow_bg(VWindowGUI *gui)
490 //      gui->clear_box(0, 
491 //              0, 
492 //              mwindow->session->vwindow_w, 
493 //              mwindow->session->vwindow_h);
494 // // Timebar
495 //      gui->draw_3segmenth(vtimebar_x, 
496 //              vtimebar_y, 
497 //              vtimebar_w, 
498 //              vtimebar_bg_data,
499 //              0);
500 //      gui->flash();
504 void Theme::draw_cwindow_bg(CWindowGUI *gui)
506         gui->clear_box(0, 0, mwindow->session->cwindow_w, mwindow->session->cwindow_h);
507         gui->flash();
510 void Theme::draw_lwindow_bg(LevelWindowGUI *gui)
512         gui->clear_box(0, 0, mwindow->session->lwindow_w, mwindow->session->lwindow_h);
513         gui->flash();
517 void Theme::draw_rmonitor_bg(RecordMonitorGUI *gui)
519         gui->clear_box(0, 0, mwindow->session->rmonitor_w, mwindow->session->rmonitor_h);
520         gui->flash();
524 void Theme::draw_rwindow_bg(RecordGUI *gui)
526 printf("Theme::draw_rwindow_bg 1\n");
527         gui->clear_box(0, 0, mwindow->session->rwindow_w, mwindow->session->rwindow_h);
531 void Theme::draw_resource_bg(TrackCanvas *canvas,
532         ResourcePixmap *pixmap, 
533         int edit_x,
534         int edit_w,
535         int pixmap_x,
536         int x1, 
537         int y1, 
538         int x2,
539         int y2)
541         VFrame *image;
543         switch(mwindow->edl->local_session->zoom_track)
544         {
545                 case 1024: image = resource1024_bg_data;  break;
546                 case 512: image = resource512_bg_data;  break;
547                 case 256: image = resource256_bg_data;  break;
548                 case 128: image = resource128_bg_data;  break;
549                 case 64:  image = resource64_bg_data;   break;
550                 default:
551                 case 32:  image = resource32_bg_data;   break;
552         }
554         canvas->draw_3segmenth(x1, 
555                 y1, 
556                 x2 - x1, 
557                 edit_x - pixmap_x,
558                 edit_w,
559                 image,
560                 pixmap);
563 void Theme::get_vwindow_sizes(VWindowGUI *gui)
567 void Theme::get_cwindow_sizes(CWindowGUI *gui, int cwindow_controls)
571 void Theme::get_awindow_sizes(AWindowGUI *gui)
573         abuttons_x = 0; 
574         abuttons_y = 0;
575         afolders_x = 0;
576 //      afolders_y = deletedisk_data[0]->get_h();
577         afolders_y = 0;
578         afolders_w = mwindow->session->afolders_w;
579         afolders_h = mwindow->session->awindow_h - afolders_y;
580         adivider_x = afolders_x + afolders_w;
581         adivider_y = 0;
582         adivider_w = 5;
583         adivider_h = afolders_h;
584         alist_x = afolders_x + afolders_w + 5;
585         alist_y = afolders_y;
586         alist_w = mwindow->session->awindow_w - alist_x;
587         alist_h = afolders_h;
590 void Theme::get_rmonitor_sizes(int do_audio, 
591         int do_video,
592         int do_channel,
593         int do_interlace,
594         int do_avc)
596         int x = 10;
597         int y = 3;
600         if(do_avc)
601         {
602                 rmonitor_canvas_y = 30;
603                 rmonitor_tx_x = 10;
604                 rmonitor_tx_y = 0;
605         }
606         else
607         {
608                 rmonitor_canvas_y = 0;
609                 rmonitor_tx_x = 0;
610                 rmonitor_tx_y = 0;
611         }
614         if(do_channel)
615         {
616                 y = 5;
617                 rmonitor_channel_x = x;
618                 rmonitor_channel_y = 5;
619                 x += 235;
620                 rmonitor_canvas_y = 35;
621         }
623         if(do_interlace)
624         {
625                 y = 4;
626                 rmonitor_interlace_x = x;
627                 rmonitor_interlace_y = y;
628         }
631         if(do_audio)
632         {
633                 rmonitor_meter_x = mwindow->session->rmonitor_w - MeterPanel::get_meters_width(mwindow->edl->session->audio_channels, 1);
634                 rmonitor_meter_y = 40;
635                 rmonitor_meter_h = mwindow->session->rmonitor_h - 10 - rmonitor_meter_y;
636         }
637         else
638         {
639                 rmonitor_meter_x = mwindow->session->rmonitor_w;
640         }
642         rmonitor_canvas_x = 0;
643         rmonitor_canvas_w = rmonitor_meter_x - rmonitor_canvas_x;
644         if(do_audio) rmonitor_canvas_w -= 10;
645         rmonitor_canvas_h = mwindow->session->rmonitor_h - rmonitor_canvas_y;
648 void Theme::get_recordgui_sizes(RecordGUI *gui, int w, int h)
650         recordgui_status_x = 10;
651         recordgui_status_y = 10;
652         recordgui_status_x2 = 150;
653         recordgui_batch_x = 310;
654         recordgui_batch_y = 10;
655         recordgui_batchcaption_x = recordgui_batch_x + 110;
658         recordgui_transport_x = recordgui_batch_x;
659         recordgui_transport_y = recordgui_batch_y + 150;
661         recordgui_buttons_x = recordgui_batch_x - 50;
662         recordgui_buttons_y = recordgui_transport_y + 40;
663         recordgui_options_x = recordgui_buttons_x;
664         recordgui_options_y = recordgui_buttons_y + 40;
666         recordgui_batches_x = 10;
667         recordgui_batches_y = 270;
668         recordgui_batches_w = w - 20;
669         recordgui_batches_h = h - recordgui_batches_y - 90;
670         recordgui_loadmode_x = w / 2 - loadmode_w / 2;
671         recordgui_loadmode_y = h - 85;
673         recordgui_controls_x = 10;
674         recordgui_controls_y = h - 40;
677 void Theme::get_batchrender_sizes(BatchRenderGUI *gui,
678         int w, 
679         int h)
681         batchrender_x1 = 5;
682         batchrender_x2 = 300;
683         batchrender_x3 = 400;
686 void Theme::get_plugindialog_sizes()
688         int x = 10, y = 30;
689         plugindialog_new_x = x;
690         plugindialog_new_y = y;
691         plugindialog_shared_x = mwindow->session->plugindialog_w / 3;
692         plugindialog_shared_y = y;
693         plugindialog_module_x = mwindow->session->plugindialog_w * 2 / 3;
694         plugindialog_module_y = y;
696         plugindialog_new_w = plugindialog_shared_x - plugindialog_new_x - 10;
697         plugindialog_new_h = mwindow->session->plugindialog_h - 110;
698         plugindialog_shared_w = plugindialog_module_x - plugindialog_shared_x - 10;
699         plugindialog_shared_h = mwindow->session->plugindialog_h - 110;
700         plugindialog_module_w = mwindow->session->plugindialog_w - plugindialog_module_x - 10;
701         plugindialog_module_h = mwindow->session->plugindialog_h - 110;
703         plugindialog_newattach_x = plugindialog_new_x + 20;
704         plugindialog_newattach_y = plugindialog_new_y + plugindialog_new_h + 10;
705         plugindialog_sharedattach_x = plugindialog_shared_x + 20;
706         plugindialog_sharedattach_y = plugindialog_shared_y + plugindialog_shared_h + 10;
707         plugindialog_moduleattach_x = plugindialog_module_x + 20;
708         plugindialog_moduleattach_y = plugindialog_module_y + plugindialog_module_h + 10;
711 void Theme::get_menueffect_sizes(int use_list)
713         if(use_list)
714         {
715                 menueffect_list_x = 10;
716                 menueffect_list_y = 10;
717                 menueffect_list_w = mwindow->session->menueffect_w - 400;
718                 menueffect_list_h = mwindow->session->menueffect_h - 70;
719         }
720         else
721         {
722                 menueffect_list_x = 0;
723                 menueffect_list_y = 10;
724                 menueffect_list_w = 0;
725                 menueffect_list_h = 0;
726         }
728         menueffect_file_x = menueffect_list_x + menueffect_list_w + 10;
729         menueffect_file_y = 10;
731         menueffect_tools_x = menueffect_file_x;
732         menueffect_tools_y = menueffect_file_y + 20;
735 void Theme::get_preferences_sizes()
739 void Theme::draw_preferences_bg(PreferencesWindow *gui)
743 void Theme::get_new_sizes(NewWindow *gui)
747 void Theme::draw_new_bg(NewWindow *gui)
751 void Theme::draw_setformat_bg(SetFormatWindow *window)