}
-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);
+ }
}
}
-
-
-
+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;
+}