From 917127ce37b1e2bc0fa05d2067ff5decdfd576b0 Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 23 Apr 2010 21:56:59 -0300 Subject: [PATCH] Added alpha support for skin sheet. --- data/skins/default_skin/sheet.png | Bin 6743 -> 6817 bytes data/skins/default_skin/skin.xml | 5 +- src/modules/gfx.cpp | 25 +--------- src/modules/skinneable_theme.cpp | 78 +++++++++++++++++++----------- src/modules/skinneable_theme.h | 47 ++++-------------- src/widgets/toolbar.cpp | 27 ++++++----- 6 files changed, 77 insertions(+), 105 deletions(-) diff --git a/data/skins/default_skin/sheet.png b/data/skins/default_skin/sheet.png index df4e21f649a30cbe36eebffebe2af96ffbbd6448..27f35ab7f0dc628f99000e39335071927954b90c 100644 GIT binary patch literal 6817 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 - - - - + diff --git a/src/modules/gfx.cpp b/src/modules/gfx.cpp index 4e730aa92..8abe0e470 100644 --- a/src/modules/gfx.cpp +++ b/src/modules/gfx.cpp @@ -513,38 +513,15 @@ void draw_color_button(BITMAP* bmp, ji_screen = old_ji_screen; } - // Draw transparent border - set_trans_blender(0, 0, 0, 128); - { - SkinneableTheme* theme = (SkinneableTheme*)ji_get_theme(); - int parts[8] = { - outer_nw ? PART_COLORBAR_BORDER_0_NW: PART_COLORBAR_BORDER_3_NW, - outer_n ? PART_COLORBAR_BORDER_0_N : PART_COLORBAR_BORDER_2_N, - outer_ne ? PART_COLORBAR_BORDER_1_NE: (outer_e ? PART_COLORBAR_BORDER_3_NE: PART_COLORBAR_BORDER_2_NE), - outer_e ? PART_COLORBAR_BORDER_1_E : PART_COLORBAR_BORDER_0_E, - outer_se ? PART_COLORBAR_BORDER_3_SE: (outer_s ? PART_COLORBAR_BORDER_2_SE: (outer_e ? PART_COLORBAR_BORDER_1_SE: PART_COLORBAR_BORDER_0_SE)), - outer_s ? PART_COLORBAR_BORDER_2_S : PART_COLORBAR_BORDER_0_S, - outer_sw ? PART_COLORBAR_BORDER_2_SW: (outer_s ? PART_COLORBAR_BORDER_3_SW: PART_COLORBAR_BORDER_1_SW), - outer_w ? PART_COLORBAR_BORDER_0_W : PART_COLORBAR_BORDER_1_W, - }; - BITMAP* old_ji_screen = ji_screen; // TODO fix this ugly hack - ji_screen = bmp; - theme->draw_trans_bounds0(rc.x, rc.y, rc.x+rc.w-1, rc.y+rc.h-1, parts); - ji_screen = old_ji_screen; - } - set_trans_blender(0, 0, 0, 0); - // Draw hot if (hot) { - set_trans_blender(0, 0, 0, 128); BITMAP* old_ji_screen = ji_screen; // TODO fix this ugly hack ji_screen = bmp; theme->draw_trans_bounds(rc.x, rc.y, rc.x+rc.w-1, rc.y+rc.h-1 - (outer_s ? 1*scale: 0), - PART_COLORBAR_BORDER_FG_NW); + PART_COLORBAR_BORDER_HOTFG_NW); ji_screen = old_ji_screen; - set_trans_blender(0, 0, 0, 0); } } diff --git a/src/modules/skinneable_theme.cpp b/src/modules/skinneable_theme.cpp index 11a6591fa..88a531f91 100644 --- a/src/modules/skinneable_theme.cpp +++ b/src/modules/skinneable_theme.cpp @@ -126,12 +126,9 @@ SkinneableTheme::SkinneableTheme() sheet_mapping["colorbar_1"] = PART_COLORBAR_1_NW; sheet_mapping["colorbar_2"] = PART_COLORBAR_2_NW; sheet_mapping["colorbar_3"] = PART_COLORBAR_3_NW; - sheet_mapping["colorbar_border_0"] = PART_COLORBAR_BORDER_0_NW; - sheet_mapping["colorbar_border_1"] = PART_COLORBAR_BORDER_1_NW; - sheet_mapping["colorbar_border_2"] = PART_COLORBAR_BORDER_2_NW; - sheet_mapping["colorbar_border_3"] = PART_COLORBAR_BORDER_3_NW; sheet_mapping["colorbar_border_fg"] = PART_COLORBAR_BORDER_FG_NW; sheet_mapping["colorbar_border_bg"] = PART_COLORBAR_BORDER_BG_NW; + sheet_mapping["colorbar_border_hotfg"] = PART_COLORBAR_BORDER_HOTFG_NW; reload_skin(); } @@ -234,7 +231,7 @@ void SkinneableTheme::regen() cursors_info[c].focusx = focusx; cursors_info[c].focusy = focusy; - m_cursors[c] = cropPartFromSheet(m_cursors[c], x, y, w, h); + m_cursors[c] = cropPartFromSheet(m_cursors[c], x, y, w, h, true); break; } @@ -314,24 +311,31 @@ void SkinneableTheme::regen() dirs_free(dirs); } -BITMAP* SkinneableTheme::cropPartFromSheet(BITMAP* bmp, int x, int y, int w, int h) +BITMAP* SkinneableTheme::cropPartFromSheet(BITMAP* bmp, int x, int y, int w, int h, bool cursor) { + int colordepth = (cursor ? bitmap_color_depth(screen): 32); + if (bmp && (bmp->w != w || bmp->h != h || - bitmap_color_depth(bmp) != bitmap_color_depth(screen))) { + bitmap_color_depth(bmp) != colordepth)) { destroy_bitmap(bmp); bmp = NULL; } if (!bmp) - bmp = create_bitmap(w, h); + bmp = create_bitmap_ex(colordepth, w, h); - clear_to_color(bmp, bitmap_mask_color(bmp)); + if (cursor) { + clear_to_color(bmp, bitmap_mask_color(bmp)); - set_alpha_blender(); - draw_trans_sprite(bmp, m_sheet_bmp, -x, -y); - set_trans_blender(0, 0, 0, 0); + set_alpha_blender(); + draw_trans_sprite(bmp, m_sheet_bmp, -x, -y); + set_trans_blender(0, 0, 0, 0); + } + else { + blit(m_sheet_bmp, bmp, x, y, 0, 0, w, h); + } return ji_apply_guiscale(bmp); } @@ -717,10 +721,11 @@ void SkinneableTheme::draw_check(JWidget widget, JRect clip) draw_textstring(NULL, -1, bg, false, widget, &text, 0); /* icon */ - draw_sprite(ji_screen, - jwidget_is_selected(widget) ? m_part[PART_CHECK_SELECTED]: - m_part[PART_CHECK_NORMAL], - icon.x1, icon.y1); + set_alpha_blender(); + draw_trans_sprite(ji_screen, + jwidget_is_selected(widget) ? m_part[PART_CHECK_SELECTED]: + m_part[PART_CHECK_NORMAL], + icon.x1, icon.y1); // draw focus if (jwidget_has_focus(widget)) { @@ -915,7 +920,8 @@ void SkinneableTheme::draw_menuitem(JWidget widget, JRect clip) int x = widget->rc->x1+4-icon->w/2; int y = (widget->rc->y1+widget->rc->y2)/2-icon->h/2; - draw_sprite(ji_screen, icon, x, y); + set_alpha_blender(); + draw_trans_sprite(ji_screen, icon, x, y); } /* text */ @@ -1007,10 +1013,11 @@ void SkinneableTheme::draw_radio(JWidget widget, JRect clip) draw_textstring(NULL, -1, bg, false, widget, &text, 0); /* icon */ - draw_sprite(ji_screen, - jwidget_is_selected(widget) ? m_part[PART_RADIO_SELECTED]: - m_part[PART_RADIO_NORMAL], - icon.x1, icon.y1); + set_alpha_blender(); + draw_trans_sprite(ji_screen, + jwidget_is_selected(widget) ? m_part[PART_RADIO_SELECTED]: + m_part[PART_RADIO_NORMAL], + icon.x1, icon.y1); // draw focus if (jwidget_has_focus(widget)) { @@ -1266,7 +1273,8 @@ void SkinneableTheme::draw_combobox_button(JWidget widget, JRect clip) get_button_selected_offset(), get_button_selected_offset()); - draw_sprite(ji_screen, icon_bmp, icon.x1, icon.y1); + set_alpha_blender(); + draw_trans_sprite(ji_screen, icon_bmp, icon.x1, icon.y1); } void SkinneableTheme::draw_textbox(JWidget widget, JRect clip) @@ -1398,7 +1406,8 @@ void SkinneableTheme::draw_frame_button(JWidget widget, JRect clip) else part = PART_WINDOW_CLOSE_BUTTON_NORMAL; - draw_sprite(ji_screen, m_part[part], widget->rc->x1, widget->rc->y1); + set_alpha_blender(); + draw_trans_sprite(ji_screen, m_part[part], widget->rc->x1, widget->rc->y1); } int SkinneableTheme::get_bg_color(JWidget widget) @@ -1568,7 +1577,8 @@ void SkinneableTheme::draw_bounds0(int x1, int y1, int x2, int y2, int parts[8]) int sw = parts[6]; int w = parts[7]; - draw_bounds_template(nw, n, ne, e, se, s, sw, w, draw_sprite); + set_alpha_blender(); + draw_bounds_template(nw, n, ne, e, se, s, sw, w, draw_trans_sprite); } void SkinneableTheme::draw_trans_bounds0(int x1, int y1, int x2, int y2, int parts[8]) @@ -1587,10 +1597,11 @@ void SkinneableTheme::draw_trans_bounds0(int x1, int y1, int x2, int y2, int par void SkinneableTheme::draw_bounds(int x1, int y1, int x2, int y2, int nw, int bg) { + set_alpha_blender(); draw_bounds_template(nw+0, nw+1, nw+2, nw+3, - nw+4, nw+5, nw+6, nw+7, draw_sprite); + nw+4, nw+5, nw+6, nw+7, draw_trans_sprite); - // Background + // Center if (bg >= 0) { x1 += m_part[nw+7]->w; y1 += m_part[nw+1]->h; @@ -1627,14 +1638,23 @@ void SkinneableTheme::draw_hline(int x1, int y1, int x2, int y2, int part) { int x; + set_alpha_blender(); + for (x = x1; x <= x2-m_part[part]->w; x += m_part[part]->w) { - draw_sprite(ji_screen, m_part[part], x, y1); + draw_trans_sprite(ji_screen, m_part[part], x, y1); } - if (x <= x2) - blit(m_part[part], ji_screen, 0, 0, x, y1, x2-x+1, m_part[part]->h); + if (x <= x2) { + int cx1, cy1, cx2, cy2; + get_clip_rect(ji_screen, &cx1, &cy1, &cx2, &cy2); + + if (my_add_clip_rect(ji_screen, x, y1, x2, y1+m_part[part]->h-1)) + draw_trans_sprite(ji_screen, m_part[part], x, y1); + + set_clip_rect(ji_screen, cx1, cy1, cx2, cy2); + } } void SkinneableTheme::draw_bevel_box(int x1, int y1, int x2, int y2, int c1, int c2, int *bevel) diff --git a/src/modules/skinneable_theme.h b/src/modules/skinneable_theme.h index 8adb7976f..1f3f8075f 100644 --- a/src/modules/skinneable_theme.h +++ b/src/modules/skinneable_theme.h @@ -354,42 +354,6 @@ enum { PART_COLORBAR_3_SW, PART_COLORBAR_3_W, - PART_COLORBAR_BORDER_0_NW, - PART_COLORBAR_BORDER_0_N, - PART_COLORBAR_BORDER_0_NE, - PART_COLORBAR_BORDER_0_E, - PART_COLORBAR_BORDER_0_SE, - PART_COLORBAR_BORDER_0_S, - PART_COLORBAR_BORDER_0_SW, - PART_COLORBAR_BORDER_0_W, - - PART_COLORBAR_BORDER_1_NW, - PART_COLORBAR_BORDER_1_N, - PART_COLORBAR_BORDER_1_NE, - PART_COLORBAR_BORDER_1_E, - PART_COLORBAR_BORDER_1_SE, - PART_COLORBAR_BORDER_1_S, - PART_COLORBAR_BORDER_1_SW, - PART_COLORBAR_BORDER_1_W, - - PART_COLORBAR_BORDER_2_NW, - PART_COLORBAR_BORDER_2_N, - PART_COLORBAR_BORDER_2_NE, - PART_COLORBAR_BORDER_2_E, - PART_COLORBAR_BORDER_2_SE, - PART_COLORBAR_BORDER_2_S, - PART_COLORBAR_BORDER_2_SW, - PART_COLORBAR_BORDER_2_W, - - PART_COLORBAR_BORDER_3_NW, - PART_COLORBAR_BORDER_3_N, - PART_COLORBAR_BORDER_3_NE, - PART_COLORBAR_BORDER_3_E, - PART_COLORBAR_BORDER_3_SE, - PART_COLORBAR_BORDER_3_S, - PART_COLORBAR_BORDER_3_SW, - PART_COLORBAR_BORDER_3_W, - PART_COLORBAR_BORDER_FG_NW, PART_COLORBAR_BORDER_FG_N, PART_COLORBAR_BORDER_FG_NE, @@ -408,6 +372,15 @@ enum { PART_COLORBAR_BORDER_BG_SW, PART_COLORBAR_BORDER_BG_W, + PART_COLORBAR_BORDER_HOTFG_NW, + PART_COLORBAR_BORDER_HOTFG_N, + PART_COLORBAR_BORDER_HOTFG_NE, + PART_COLORBAR_BORDER_HOTFG_E, + PART_COLORBAR_BORDER_HOTFG_SE, + PART_COLORBAR_BORDER_HOTFG_S, + PART_COLORBAR_BORDER_HOTFG_SW, + PART_COLORBAR_BORDER_HOTFG_W, + PARTS }; @@ -527,7 +500,7 @@ public: private: - BITMAP* cropPartFromSheet(BITMAP* bmp, int x, int y, int w, int h); + BITMAP* cropPartFromSheet(BITMAP* bmp, int x, int y, int w, int h, bool cursor = false); int get_bg_color(JWidget widget); void draw_textstring(const char *t, int fg_color, int bg_color, bool fill_bg, JWidget widget, const JRect rect, diff --git a/src/widgets/toolbar.cpp b/src/widgets/toolbar.cpp index b74609422..7e65ec319 100644 --- a/src/widgets/toolbar.cpp +++ b/src/widgets/toolbar.cpp @@ -217,10 +217,12 @@ bool ToolBar::msg_proc(JMessage msg) // Draw the tool icon BITMAP* icon = theme->get_toolicon(tool->getId().c_str()); - if (icon) - draw_sprite(doublebuffer, icon, - toolrc.x+toolrc.w/2-icon->w/2, - toolrc.y+toolrc.h/2-icon->h/2); + if (icon) { + set_alpha_blender(); + draw_trans_sprite(doublebuffer, icon, + toolrc.x+toolrc.w/2-icon->w/2, + toolrc.y+toolrc.h/2-icon->h/2); + } } toolrc = getToolGroupBounds(-1); @@ -234,9 +236,10 @@ bool ToolBar::msg_proc(JMessage msg) // Draw the tool icon BITMAP* icon = theme->get_toolicon("configuration"); if (icon) { - draw_sprite(doublebuffer, icon, - toolrc.x+toolrc.w/2-icon->w/2, - toolrc.y+toolrc.h/2-icon->h/2); + set_alpha_blender(); + draw_trans_sprite(doublebuffer, icon, + toolrc.x+toolrc.w/2-icon->w/2, + toolrc.y+toolrc.h/2-icon->h/2); } ji_screen = old_ji_screen; @@ -573,10 +576,12 @@ bool ToolStrip::msg_proc(JMessage msg) // Draw the tool icon BITMAP* icon = theme->get_toolicon(tool->getId().c_str()); - if (icon) - draw_sprite(doublebuffer, icon, - toolrc.x+toolrc.w/2-icon->w/2, - toolrc.y+toolrc.h/2-icon->h/2); + if (icon) { + set_alpha_blender(); + draw_trans_sprite(doublebuffer, icon, + toolrc.x+toolrc.w/2-icon->w/2, + toolrc.y+toolrc.h/2-icon->h/2); + } } }