histogram fix, use_thumbnails fix, zoom popup width tweak, cut/paste for mixer apply...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / theme.C
index 96f8b80f9f95b2aaa89c472b2b6fbb2fb416f661..946eb37e9fabd2f8b42b9d6afa131e24dae1511b 100644 (file)
@@ -94,7 +94,7 @@ Theme::Theme()
        preferences_category_overlap = 0;
 
        loadmode_w = 350;
-       czoom_w = 80;
+       czoom_w = 110;
 
 #include "data/about_bg_png.h"
        about_bg = new VFramePng(about_bg_png);
@@ -896,36 +896,34 @@ void Theme::draw_rwindow_bg(RecordGUI *gui)
 }
 
 
-void Theme::draw_resource_bg(TrackCanvas *canvas,
-       ResourcePixmap *pixmap,
-       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,
+       int edit_x, int edit_w, int pixmap_x, int x1, int y1, int x2, int y2)
 {
-       VFrame *image;
+       VFrame *image = 0;
 
-       switch(mwindow->edl->local_session->zoom_track)
-       {
+       switch(mwindow->edl->local_session->zoom_track) {
                case 1024: image = get_image("resource1024");  break;
                case 512: image = get_image("resource512");  break;
                case 256: image = get_image("resource256");  break;
                case 128: image = get_image("resource128");  break;
                case 64:  image = get_image("resource64");   break;
-               default:
-               case 32:  image = get_image("resource32");   break;
        }
-
-       canvas->draw_3segmenth(x1,
-               y1,
-               x2 - x1,
-               edit_x - pixmap_x,
-               edit_w,
-               image,
-               pixmap);
+       if( !image )
+               image = get_image("resource32");
+
+       VFrame *frame = image;
+       int bg_color = canvas->get_bg_color();
+       if( color ) {
+               int alpha = (~color >> 24) & 0xff;
+               frame = pixmap->change_picon_alpha(image, alpha);
+               canvas->set_bg_color(color & 0xffffff);
+       }
+       canvas->draw_3segmenth(x1, y1, x2 - x1,
+               edit_x - pixmap_x, edit_w, frame, pixmap);
+       if( frame != image ) {
+               delete frame;
+               canvas->set_bg_color(bg_color);
+       }
 }
 
 
@@ -1334,8 +1332,18 @@ void Theme::draw_setformat_bg(SetFormatWindow *window)
 }
 
 
-
-
-
+int Theme::get_color_title_bg()
+{
+       VFrame *title_bg = get_image("title_bg_data");
+       int tw = title_bg->get_w(), th = title_bg->get_h();
+       int colormodel = title_bg->get_color_model();
+       int bpp = BC_CModels::calculate_pixelsize(colormodel);
+       uint8_t **rows = title_bg->get_rows();
+       int cx = tw / 2, cy = th / 2;
+       uint8_t *bp = rows[cy] + cx * bpp;
+       int br = bp[0], bg = bp[1], bb = bp[2];
+       int color = (br<<16) | (bg<<8) | (bb<<0);
+       return color;
+}