Andrew rates additions
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / theme.C
index d35e475096b88eda2685b7b0aa718370b3f6b381..0c364f73d35fd86238312f06ef1ac00c33c9af27 100644 (file)
@@ -24,6 +24,7 @@
 #include "clip.h"
 #include "bccolors.h"
 #include "cwindowgui.h"
+#include "edit.h"
 #include "edl.h"
 #include "edlsession.h"
 #include "keyframegui.h"
@@ -46,6 +47,7 @@
 #include "resourcepixmap.h"
 #include "statusbar.h"
 #include "theme.h"
+#include "track.h"
 #include "timebar.h"
 #include "trackcanvas.h"
 #include "vframe.h"
@@ -70,6 +72,7 @@ Theme::Theme()
        mtransport_margin = 0;
        toggle_margin = 0;
        control_pixels = xS(50);
+       stack_button_w = xS(32);
        timebar_cursor_color = RED;
 
        BC_WindowBase::get_resources()->bg_color = BLOND;
@@ -176,6 +179,7 @@ Theme::Theme()
        statusbar_cancel_data = 0;
        timebar_view_data = 0;
        transition_data = 0;
+       tumblepatch_data = 0;
        uptriangle_data = 0;
        viewasset_data = 0;
        vtimebar_bg_data = 0;
@@ -270,6 +274,7 @@ void Theme::build_menus()
        aspect_ratios.append(new BC_ListBoxItem("3:2"));
        aspect_ratios.append(new BC_ListBoxItem("4:3"));
        aspect_ratios.append(new BC_ListBoxItem("16:9"));
+       aspect_ratios.append(new BC_ListBoxItem("16:10"));
        aspect_ratios.append(new BC_ListBoxItem("2.10:1"));
        aspect_ratios.append(new BC_ListBoxItem("2.20:1"));
        aspect_ratios.append(new BC_ListBoxItem("2.25:1"));
@@ -279,9 +284,12 @@ void Theme::build_menus()
 
        frame_sizes.append(new BC_ListBoxItem("128x96     "));
        frame_sizes.append(new BC_ListBoxItem("160x120    "));
+       frame_sizes.append(new BC_ListBoxItem("240x160   HQVGA"));
        frame_sizes.append(new BC_ListBoxItem("320x240    "));
+       frame_sizes.append(new BC_ListBoxItem("352x288    "));
        frame_sizes.append(new BC_ListBoxItem("360x240    "));
-       frame_sizes.append(new BC_ListBoxItem("400x300    "));
+       frame_sizes.append(new BC_ListBoxItem("384x288    CIF"));
+       frame_sizes.append(new BC_ListBoxItem("400x300    qSVGA"));
        frame_sizes.append(new BC_ListBoxItem("640x360    nHD"));
        frame_sizes.append(new BC_ListBoxItem("640x400    "));
        frame_sizes.append(new BC_ListBoxItem("640x480    VGA"));
@@ -295,19 +303,32 @@ void Theme::build_menus()
        frame_sizes.append(new BC_ListBoxItem("1024x576   "));
        frame_sizes.append(new BC_ListBoxItem("1024x768   XGA"));
        frame_sizes.append(new BC_ListBoxItem("1152x648   "));
+       frame_sizes.append(new BC_ListBoxItem("1152x768   "));
+       frame_sizes.append(new BC_ListBoxItem("1152x864  XGA+"));
        frame_sizes.append(new BC_ListBoxItem("1280x720   HD"));
+       frame_sizes.append(new BC_ListBoxItem("1280x800   "));
        frame_sizes.append(new BC_ListBoxItem("1280x1024  SXGA"));
        frame_sizes.append(new BC_ListBoxItem("1366x768   WXGA"));
+       frame_sizes.append(new BC_ListBoxItem("1440x900   WXGA+"));
+       frame_sizes.append(new BC_ListBoxItem("1440x1080  HDV"));
        frame_sizes.append(new BC_ListBoxItem("1600x900   HD+"));
        frame_sizes.append(new BC_ListBoxItem("1600x1200  UXGA"));
        frame_sizes.append(new BC_ListBoxItem("1920x1080  Full HD"));
+       frame_sizes.append(new BC_ListBoxItem("1920x1280  FHD+"));
+       frame_sizes.append(new BC_ListBoxItem("2048x1080  DCI 2K"));
        frame_sizes.append(new BC_ListBoxItem("2048x1152  "));
+       frame_sizes.append(new BC_ListBoxItem("2048x1536   QXGA"));
+       frame_sizes.append(new BC_ListBoxItem("2160x1440   "));
        frame_sizes.append(new BC_ListBoxItem("2304x1296  "));
-       frame_sizes.append(new BC_ListBoxItem("2560x1440  QHD"));
+       frame_sizes.append(new BC_ListBoxItem("2560x1080  UW-FHD"));
+       frame_sizes.append(new BC_ListBoxItem("2560x1440  WQHD"));
        frame_sizes.append(new BC_ListBoxItem("2880x1620  "));
-       frame_sizes.append(new BC_ListBoxItem("3200x1800  QHD+"));
+       frame_sizes.append(new BC_ListBoxItem("3200x1800  WQXGA+"));
+       frame_sizes.append(new BC_ListBoxItem("3440x1440  Ultra-Wide QHD"));
        frame_sizes.append(new BC_ListBoxItem("3520x1980  "));
+       frame_sizes.append(new BC_ListBoxItem("3840x1600  UW4K"));
        frame_sizes.append(new BC_ListBoxItem("3840x2160  4K UHD"));
+       frame_sizes.append(new BC_ListBoxItem("4096x2160  DCI 4K"));
        frame_sizes.append(new BC_ListBoxItem("4096x2304  Full 4K UHD"));
        frame_sizes.append(new BC_ListBoxItem("4480x2520  "));
        frame_sizes.append(new BC_ListBoxItem("5120x2880  5K UHD"));
@@ -317,12 +338,15 @@ void Theme::build_menus()
        frame_sizes.append(new BC_ListBoxItem("7680x4320  8K UHD"));
 
        sample_rates.append(new BC_ListBoxItem("8000"));
+       sample_rates.append(new BC_ListBoxItem("11025"));
        sample_rates.append(new BC_ListBoxItem("16000"));
        sample_rates.append(new BC_ListBoxItem("22050"));
        sample_rates.append(new BC_ListBoxItem("32000"));
        sample_rates.append(new BC_ListBoxItem("44100"));
        sample_rates.append(new BC_ListBoxItem("48000"));
+       sample_rates.append(new BC_ListBoxItem("88000"));
        sample_rates.append(new BC_ListBoxItem("96000"));
+       sample_rates.append(new BC_ListBoxItem("176400"));
        sample_rates.append(new BC_ListBoxItem("192000"));
 
        frame_rates.append(new BC_ListBoxItem("0.25"));
@@ -339,8 +363,12 @@ void Theme::build_menus()
        frame_rates.append(new BC_ListBoxItem("50"));
        frame_rates.append(new BC_ListBoxItem("59.94"));
        frame_rates.append(new BC_ListBoxItem("60"));
+       frame_rates.append(new BC_ListBoxItem("72"));
+       frame_rates.append(new BC_ListBoxItem("85"));
+       frame_rates.append(new BC_ListBoxItem("90"));
        frame_rates.append(new BC_ListBoxItem("100"));
        frame_rates.append(new BC_ListBoxItem("120"));
+       frame_rates.append(new BC_ListBoxItem("144"));
        frame_rates.append(new BC_ListBoxItem("1000"));
 
        char string[BCTEXTLEN];
@@ -608,7 +636,9 @@ void Theme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
 {
        mbuttons_x = 0;
        mbuttons_y = gui->menu_h() + yS(1);
-       mbuttons_w = w - (ffmpeg_toggle[0]->get_w()+2 + proxy_p_toggle[0]->get_w()+xS(2));
+       mbuttons_w = w - (ffmpeg_toggle[0]->get_w()+xS(2) +
+                        proxy_p_toggle[0]->get_w()+xS(2) +
+                        stack_button_w);
        mbuttons_h = get_image("mbutton_bg")->get_h();
        mclock_x = window_border - xS(5);
        mclock_y = mbuttons_y-1 + mbuttons_h;
@@ -705,7 +735,7 @@ void Theme::draw_mwindow_bg(MWindowGUI *gui)
 
 void Theme::get_cwindow_sizes(CWindowGUI *gui, int cwindow_controls)
 {
-       int total_buttons = !use_commercials ? 15 : 16;
+       int total_buttons = !use_commercials ? 16 : 17;
        int edit_w = EditPanel::calculate_w(mwindow, 1, total_buttons);
        int transport_w = PlayTransport::get_transport_width(mwindow) + toggle_margin;
        int zoom_w = ZoomPanel::calculate_w(czoom_w);
@@ -727,60 +757,37 @@ SET_TRACE
                }
                else
                {
-                       cmeter_x = mwindow->session->cwindow_w + widget_border;
+                       cmeter_x = mwindow->session->cwindow_w;
                }
 
-               int buttons_h;
-
-               if(edit_w +
-                       widget_border * 2 +
-                       transport_w + widget_border +
-                       zoom_w + widget_border +
-                       division_w +
-                       status_w > cmeter_x)
-               {
-                       buttons_h = get_image("cbuttons_left")->get_h();
-
-                       cedit_x = widget_border;
-                       cedit_y = mwindow->session->cwindow_h -
-                               buttons_h +
-                               ctimebar_h +
-                               widget_border;
-
-                       ctransport_x = widget_border;
-                       ctransport_y = mwindow->session->cwindow_h -
-                               get_image_set("autokeyframe")[0]->get_h() -
-                               widget_border;
 
+               int buttons_h = get_image("rewind")->get_h() + widget_border;
+               int panel_y = mwindow->session->cwindow_h - buttons_h + yS(4);
+               ctransport_x = widget_border;
+               if( ctransport_x + transport_w + widget_border +
+                   edit_w + widget_border + zoom_w + widget_border +
+                   division_w + status_w > cmeter_x ) {
+                       ctransport_y = panel_y;
                        czoom_x = ctransport_x + transport_w + widget_border;
-                       czoom_y = ctransport_y + widget_border;
-
-                       cstatus_x = xS(426);
-                       cstatus_y = mwindow->session->cwindow_h -
-                               get_image("cwindow_active")->get_h() - yS(30);
+                       czoom_y = panel_y;
+                       cstatus_x = xS(440);
+                       cstatus_y = panel_y - yS(2);
+                       int edit_h = EditPanel::calculate_h(mwindow) + widget_border;
+                       buttons_h += edit_h;  panel_y -= edit_h;
+                       cedit_x = widget_border;
+                       cedit_y = panel_y;
                }
-               else
-               {
-                       buttons_h = ctimebar_h +
-                               widget_border +
-                               EditPanel::calculate_h(mwindow) +
-                               widget_border;
+               else {
                        ctransport_x = widget_border;
-                       ctransport_y = mwindow->session->cwindow_h -
-                               buttons_h +
-                               ctimebar_h +
-                               widget_border;
-
+                       ctransport_y = panel_y;
                        cedit_x = ctransport_x + transport_w + widget_border;
-                       cedit_y = ctransport_y;
-
+                       cedit_y = panel_y;
                        czoom_x = cedit_x + edit_w + widget_border;
-                       czoom_y = cedit_y + widget_border;
-//printf("Theme::get_cwindow_sizes %d %d %d\n", __LINE__, czoom_x, zoom_w);
+                       czoom_y = panel_y;
                        cstatus_x = czoom_x + zoom_w + division_w;
-                       cstatus_y = ctransport_y;
+                       cstatus_y = panel_y;
                }
-
+               buttons_h += ctimebar_h;
 
                ccomposite_x = xS(0);
                ccomposite_y = yS(5);
@@ -891,12 +898,13 @@ void Theme::draw_rwindow_bg(RecordGUI *gui)
 }
 
 
-void Theme::draw_resource_bg(TrackCanvas *canvas, ResourcePixmap *pixmap, int color,
-       int edit_x, int edit_w, int pixmap_x, int x1, int y1, int x2, int y2)
+void Theme::draw_resource_bg(TrackCanvas *canvas, ResourcePixmap *pixmap,
+               int color, Edit *edit, int edit_x, int edit_w,
+               int pixmap_x, int x1, int y1, int x2, int y2)
 {
        VFrame *image = 0;
-
-       switch(mwindow->edl->local_session->zoom_track) {
+       int data_h = edit->track->data_h;
+       switch( data_h ) {
                case 1024: image = get_image("resource1024");  break;
                case 512: image = get_image("resource512");  break;
                case 256: image = get_image("resource256");  break;
@@ -924,18 +932,17 @@ void Theme::draw_resource_bg(TrackCanvas *canvas, ResourcePixmap *pixmap, int co
 
 void Theme::get_vwindow_sizes(VWindowGUI *gui)
 {
-       int edit_w = EditPanel::calculate_w(mwindow, 0, 10);
+       int edit_w = EditPanel::calculate_w(mwindow, 0, 12);
        int transport_w = PlayTransport::get_transport_width(mwindow) + toggle_margin;
 // Space between buttons & time
        int division_w = xS(30);
-       vtime_w = xS(150);
+       vtime_w = xS(120);
        vtimebar_h = yS(16);
        int vtime_border = xS(15);
 
        vmeter_y = widget_border;
        vmeter_h = mwindow->session->vwindow_h - cmeter_y - widget_border;
 
-       int buttons_h;
        if(mwindow->edl->session->vwindow_meter)
        {
                vmeter_x = mwindow->session->vwindow_w -
@@ -945,55 +952,39 @@ void Theme::get_vwindow_sizes(VWindowGUI *gui)
        }
        else
        {
-               vmeter_x = mwindow->session->vwindow_w + widget_border;
+               vmeter_x = mwindow->session->vwindow_w;
        }
 
        vcanvas_x = 0;
        vcanvas_y = 0;
        vcanvas_w = vmeter_x - vcanvas_x - widget_border;
 
-       if(edit_w +
-               widget_border * 2 +
-               transport_w + widget_border +
-               vtime_w + division_w +
-               vtime_border > vmeter_x)
-       {
-               buttons_h = get_image("vbuttons_left")->get_h();
+       int buttons_h = get_image("rewind")->get_h() + widget_border;
+       int panel_y = mwindow->session->vwindow_h - buttons_h + yS(4);
+       vtransport_x = widget_border;
+       if( vtransport_x + transport_w + widget_border +
+           edit_w + widget_border + vtime_w + xS(40) + widget_border > vmeter_x ) {
+               vtransport_y = panel_y;
+               vzoom_x = vtransport_x + transport_w + widget_border;
+               vzoom_y = panel_y;
+               vdivision_x = xS(320);
+               vtime_x = vdivision_x;
+               vtime_y = panel_y;
+               int edit_h = EditPanel::calculate_h(mwindow) + widget_border;
+               buttons_h += edit_h;  panel_y -= edit_h;
                vedit_x = widget_border;
-               vedit_y = mwindow->session->vwindow_h -
-                       buttons_h +
-                       vtimebar_h +
-                       widget_border;
-
-               vtransport_x = widget_border;
-               vtransport_y = mwindow->session->vwindow_h -
-                       get_image_set("autokeyframe")[0]->get_h() -
-                       widget_border;
-
-               vdivision_x = xS(280);
-               vtime_x = vedit_x + xS(20); //vdivision_x;
-               vtime_y = vedit_y + yS(30); //+ yS(20);
+               vedit_y = panel_y;
        }
-       else
-       {
-               buttons_h = vtimebar_h +
-                       widget_border +
-                       EditPanel::calculate_h(mwindow) +
-                       widget_border;
+       else {
                vtransport_x = widget_border;
-               vtransport_y = mwindow->session->vwindow_h -
-                       buttons_h +
-                       vtimebar_h +
-                       widget_border;
-
+               vtransport_y = panel_y;
                vedit_x = vtransport_x + transport_w + widget_border;
-               vedit_y = vtransport_y;
-
+               vedit_y = panel_y;
                vdivision_x = vedit_x + edit_w + division_w;
                vtime_x = vdivision_x + vtime_border;
-               vtime_y = vedit_y + widget_border;
+               vtime_y = panel_y;
        }
-
+       buttons_h += vtimebar_h;
 
 //     vtimebar_x = vcanvas_x;
 //     vtimebar_y = vcanvas_y + vcanvas_h;
@@ -1003,7 +994,6 @@ void Theme::get_vwindow_sizes(VWindowGUI *gui)
        vtimebar_x = 0;
        vtimebar_y = vcanvas_y + vcanvas_h;
        vtimebar_w = vmeter_x - widget_border;
-
 }