Commit: aad16afb56d8f4121d4dff115554511075cfc7e8 Author: Brecht Van Lommel Date: Tue Aug 7 20:06:04 2018 +0200 Branches: temp-benchmark https://developer.blender.org/rBaad16afb56d8f4121d4dff115554511075cfc7e8
Benchmark: add link button drawing, with underline on hover. =================================================================== M source/blender/editors/include/UI_interface.h M source/blender/editors/interface/interface_widgets.c M source/blender/makesrna/intern/rna_ui.c =================================================================== diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index d174a78ee23..04c14beecdb 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -103,6 +103,7 @@ enum { UI_EMBOSS_NONE = 1, /* Nothing, only icon and/or text */ UI_EMBOSS_PULLDOWN = 2, /* Pulldown menu style */ UI_EMBOSS_RADIAL = 3, /* Pie Menu */ + UI_EMBOSS_LINK = 4, /* Benchmark: special link drawing */ UI_EMBOSS_UNDEFINED = 255, /* For layout engine, use emboss from block. */ }; diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index d0cdba49536..f9dbd9dec01 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1316,7 +1316,7 @@ static void widget_draw_icon_ex( /* special case - icon_only pie buttons */ if (ui_block_is_pie_menu(but->block) && !ELEM(but->type, UI_BTYPE_MENU, UI_BTYPE_POPOVER) && but->str && but->str[0] == '\0') xs = rect->xmin + 2.0f * ofs; - else if (but->dt == UI_EMBOSS_NONE || but->type == UI_BTYPE_LABEL) + else if (ELEM(but->dt, UI_EMBOSS_NONE, UI_EMBOSS_LINK) || but->type == UI_BTYPE_LABEL) xs = rect->xmin + 2.0f * ofs; else xs = rect->xmin + 4.0f * ofs; @@ -1954,6 +1954,17 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b UI_fontstyle_draw_ex(fstyle, rect, drawstr + but->ofs, (unsigned char *)wcol->text, drawlen, &font_xofs, &font_yofs); + if (but->dt == UI_EMBOSS_LINK && (but->flag & UI_ACTIVE)) { + float underline_col[4]; + int underline_width = UI_fontstyle_string_width(fstyle, drawstr + but->ofs); + int rect_x = BLI_rcti_size_x(rect); + + rgba_uchar_to_float(underline_col, (unsigned char *)wcol->text); + GPU_blend(true); + UI_draw_text_underline(rect->xmin + font_xofs, rect->ymin + 8 * U.pixelsize, min_ii(underline_width, rect_x - 2), 1, underline_col); + GPU_blend(false); + } + if (but->menu_key != '\0') { char fixedbuf[128]; const char *str; @@ -4063,7 +4074,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct break; } } - else if (but->dt == UI_EMBOSS_NONE) { + else if (ELEM(but->dt, UI_EMBOSS_NONE, UI_EMBOSS_LINK)) { /* "nothing" */ switch (but->type) { case UI_BTYPE_LABEL: diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index a271df464b7..80b49af0e9e 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -997,6 +997,7 @@ static void rna_def_ui_layout(BlenderRNA *brna) {UI_EMBOSS_NONE, "NONE", 0, "None", "Draw only text and icons"}, {UI_EMBOSS_PULLDOWN, "PULLDOWN_MENU", 0, "Pulldown Menu", "Draw pulldown menu style"}, {UI_EMBOSS_RADIAL, "RADIAL_MENU", 0, "Radial Menu", "Draw radial menu style"}, + {UI_EMBOSS_LINK, "LINK", 0, "Link", "Draw button as link"}, {0, NULL, 0, NULL, NULL} }; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs