forked from bartvdbraak/blender
UI: draw mono icons with button type text color, instead of area text color.
This commit is contained in:
parent
99fa874c85
commit
28324143c4
@ -123,6 +123,7 @@ MINLINE void mul_v2_v2(float r[2], const float a[2]);
|
||||
MINLINE void mul_v3_v3(float r[3], const float a[3]);
|
||||
MINLINE void mul_v3_v3v3(float r[3], const float a[3], const float b[3]);
|
||||
MINLINE void mul_v4_fl(float r[4], float f);
|
||||
MINLINE void mul_v4_v4(float r[4], const float a[4]);
|
||||
MINLINE void mul_v4_v4fl(float r[3], const float a[3], float f);
|
||||
MINLINE void mul_v2_v2_cw(float r[2], const float mat[2], const float vec[2]);
|
||||
MINLINE void mul_v2_v2_ccw(float r[2], const float mat[2], const float vec[2]);
|
||||
|
@ -459,6 +459,14 @@ MINLINE void mul_v4_fl(float r[4], float f)
|
||||
r[3] *= f;
|
||||
}
|
||||
|
||||
MINLINE void mul_v4_v4(float r[4], const float a[4])
|
||||
{
|
||||
r[0] *= a[0];
|
||||
r[1] *= a[1];
|
||||
r[2] *= a[2];
|
||||
r[3] *= a[3];
|
||||
}
|
||||
|
||||
MINLINE void mul_v4_v4fl(float r[4], const float a[4], float f)
|
||||
{
|
||||
r[0] = a[0] * f;
|
||||
|
@ -73,10 +73,10 @@ void UI_icon_draw_preview(float x, float y, int icon_id);
|
||||
void UI_icon_draw_preview_aspect(float x, float y, int icon_id, float aspect);
|
||||
void UI_icon_draw_preview_aspect_size(float x, float y, int icon_id, float aspect, float alpha, int size);
|
||||
|
||||
void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha);
|
||||
void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3]);
|
||||
void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha, const char mono_color[4]);
|
||||
void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3], const char mono_color[4]);
|
||||
void UI_icon_draw_size(float x, float y, int size, int icon_id, float alpha);
|
||||
void UI_icon_draw_desaturate(float x, float y, int icon_id, float aspect, float alpha, float desaturate);
|
||||
void UI_icon_draw_desaturate(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const char mono_color[4]);
|
||||
void UI_icons_free(void);
|
||||
void UI_icons_free_drawinfo(void *drawinfo);
|
||||
|
||||
|
@ -1450,7 +1450,7 @@ static int get_draw_size(enum eIconSizes size)
|
||||
|
||||
static void icon_draw_size(
|
||||
float x, float y, int icon_id, float aspect, float alpha, const float rgb[3],
|
||||
enum eIconSizes size, int draw_size, const float desaturate)
|
||||
enum eIconSizes size, int draw_size, const float desaturate, const char mono_rgba[4])
|
||||
{
|
||||
bTheme *btheme = UI_GetTheme();
|
||||
Icon *icon = NULL;
|
||||
@ -1525,16 +1525,22 @@ static void icon_draw_size(
|
||||
}
|
||||
else if (di->type == ICON_TYPE_MONO_TEXTURE) {
|
||||
/* icon that matches text color, assumed to be white */
|
||||
float text_color[4];
|
||||
UI_GetThemeColor4fv(TH_TEXT, text_color);
|
||||
if (rgb) {
|
||||
mul_v3_v3(text_color, rgb);
|
||||
float color[4];
|
||||
if (mono_rgba) {
|
||||
rgba_uchar_to_float(color, (const unsigned char*)mono_rgba);
|
||||
}
|
||||
text_color[3] *= alpha;
|
||||
else {
|
||||
UI_GetThemeColor4fv(TH_TEXT, color);
|
||||
}
|
||||
|
||||
if (rgb) {
|
||||
mul_v3_v3(color, rgb);
|
||||
}
|
||||
color[3] *= alpha;
|
||||
|
||||
GPU_blend_set_func(GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
|
||||
icon_draw_texture(x, y, (float)w, (float)h, di->data.texture.x, di->data.texture.y,
|
||||
di->data.texture.w, di->data.texture.h, text_color[3], text_color);
|
||||
di->data.texture.w, di->data.texture.h, color[3], color);
|
||||
GPU_blend_set_func_separate(GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
|
||||
@ -1880,55 +1886,55 @@ int UI_idcode_icon_get(const int idcode)
|
||||
|
||||
static void icon_draw_at_size(
|
||||
float x, float y, int icon_id, float aspect, float alpha,
|
||||
enum eIconSizes size, const float desaturate)
|
||||
enum eIconSizes size, const float desaturate, const char mono_color[4])
|
||||
{
|
||||
int draw_size = get_draw_size(size);
|
||||
icon_draw_size(x, y, icon_id, aspect, alpha, NULL, size, draw_size, desaturate);
|
||||
icon_draw_size(x, y, icon_id, aspect, alpha, NULL, size, draw_size, desaturate, mono_color);
|
||||
}
|
||||
|
||||
void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha)
|
||||
void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha, const char mono_color[4])
|
||||
{
|
||||
icon_draw_at_size(x, y, icon_id, aspect, alpha, ICON_SIZE_ICON, 0.0f);
|
||||
icon_draw_at_size(x, y, icon_id, aspect, alpha, ICON_SIZE_ICON, 0.0f, mono_color);
|
||||
}
|
||||
|
||||
void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3])
|
||||
void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3], const char mono_color[4])
|
||||
{
|
||||
int draw_size = get_draw_size(ICON_SIZE_ICON);
|
||||
icon_draw_size(x, y, icon_id, aspect, 1.0f, rgb, ICON_SIZE_ICON, draw_size, false);
|
||||
icon_draw_size(x, y, icon_id, aspect, 1.0f, rgb, ICON_SIZE_ICON, draw_size, false, mono_color);
|
||||
}
|
||||
|
||||
void UI_icon_draw_desaturate(float x, float y, int icon_id, float aspect, float alpha, float desaturate)
|
||||
void UI_icon_draw_desaturate(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const char mono_color[4])
|
||||
{
|
||||
icon_draw_at_size(x, y, icon_id, aspect, alpha, ICON_SIZE_ICON, desaturate);
|
||||
icon_draw_at_size(x, y, icon_id, aspect, alpha, ICON_SIZE_ICON, desaturate, mono_color);
|
||||
}
|
||||
|
||||
/* draws icon with dpi scale factor */
|
||||
void UI_icon_draw(float x, float y, int icon_id)
|
||||
{
|
||||
UI_icon_draw_aspect(x, y, icon_id, 1.0f / UI_DPI_FAC, 1.0f);
|
||||
UI_icon_draw_aspect(x, y, icon_id, 1.0f / UI_DPI_FAC, 1.0f, NULL);
|
||||
}
|
||||
|
||||
void UI_icon_draw_alpha(float x, float y, int icon_id, float alpha)
|
||||
{
|
||||
UI_icon_draw_aspect(x, y, icon_id, 1.0f / UI_DPI_FAC, alpha);
|
||||
UI_icon_draw_aspect(x, y, icon_id, 1.0f / UI_DPI_FAC, alpha, NULL);
|
||||
}
|
||||
|
||||
void UI_icon_draw_size(float x, float y, int size, int icon_id, float alpha)
|
||||
{
|
||||
icon_draw_size(x, y, icon_id, 1.0f, alpha, NULL, ICON_SIZE_ICON, size, false);
|
||||
icon_draw_size(x, y, icon_id, 1.0f, alpha, NULL, ICON_SIZE_ICON, size, false, NULL);
|
||||
}
|
||||
|
||||
void UI_icon_draw_preview(float x, float y, int icon_id)
|
||||
{
|
||||
icon_draw_at_size(x, y, icon_id, 1.0f, 1.0f, ICON_SIZE_PREVIEW, false);
|
||||
icon_draw_at_size(x, y, icon_id, 1.0f, 1.0f, ICON_SIZE_PREVIEW, false, NULL);
|
||||
}
|
||||
|
||||
void UI_icon_draw_preview_aspect(float x, float y, int icon_id, float aspect)
|
||||
{
|
||||
icon_draw_at_size(x, y, icon_id, aspect, 1.0f, ICON_SIZE_PREVIEW, false);
|
||||
icon_draw_at_size(x, y, icon_id, aspect, 1.0f, ICON_SIZE_PREVIEW, false, NULL);
|
||||
}
|
||||
|
||||
void UI_icon_draw_preview_aspect_size(float x, float y, int icon_id, float aspect, float alpha, int size)
|
||||
{
|
||||
icon_draw_size(x, y, icon_id, aspect, alpha, NULL, ICON_SIZE_PREVIEW, size, false);
|
||||
icon_draw_size(x, y, icon_id, aspect, alpha, NULL, ICON_SIZE_PREVIEW, size, false, NULL);
|
||||
}
|
||||
|
@ -723,11 +723,14 @@ void ui_draw_aligned_panel(
|
||||
if (show_pin)
|
||||
#endif
|
||||
{
|
||||
char col_title[4];
|
||||
UI_GetThemeColor4ubv(TH_TITLE, (unsigned char*)col_title);
|
||||
|
||||
GPU_blend(true);
|
||||
UI_icon_draw_aspect(
|
||||
headrect.xmax - ((PNL_ICON * 2.2f) / block->aspect), headrect.ymin + (5.0f / block->aspect),
|
||||
(panel->flag & PNL_PIN) ? ICON_PINNED : ICON_UNPINNED,
|
||||
(block->aspect / UI_DPI_FAC), 1.0f);
|
||||
(block->aspect / UI_DPI_FAC), 1.0f, col_title);
|
||||
GPU_blend(false);
|
||||
}
|
||||
|
||||
|
@ -1277,9 +1277,9 @@ static int ui_but_draw_menu_icon(const uiBut *but)
|
||||
|
||||
/* icons have been standardized... and this call draws in untransformed coordinates */
|
||||
|
||||
static void widget_draw_icon_ex(
|
||||
static void widget_draw_icon(
|
||||
const uiBut *but, BIFIconID icon, float alpha,
|
||||
const rcti *rect, const int icon_size)
|
||||
const rcti *rect, const char mono_color[4])
|
||||
{
|
||||
float xs = 0.0f, ys = 0.0f;
|
||||
float aspect, height;
|
||||
@ -1295,7 +1295,7 @@ static void widget_draw_icon_ex(
|
||||
if (icon == ICON_BLANK1 && (but->flag & UI_BUT_ICON_SUBMENU) == 0) return;
|
||||
|
||||
aspect = but->block->aspect / UI_DPI_FAC;
|
||||
height = icon_size / aspect;
|
||||
height = ICON_DEFAULT_HEIGHT / aspect;
|
||||
|
||||
/* calculate blend color */
|
||||
if (ELEM(but->type, UI_BTYPE_TOGGLE, UI_BTYPE_ROW, UI_BTYPE_TOGGLE_N, UI_BTYPE_LISTROW)) {
|
||||
@ -1343,26 +1343,20 @@ static void widget_draw_icon_ex(
|
||||
/* to indicate draggable */
|
||||
if (but->dragpoin && (but->flag & UI_ACTIVE)) {
|
||||
float rgb[3] = {1.25f, 1.25f, 1.25f};
|
||||
UI_icon_draw_aspect_color(xs, ys, icon, aspect, rgb);
|
||||
UI_icon_draw_aspect_color(xs, ys, icon, aspect, rgb, mono_color);
|
||||
}
|
||||
else if ((but->flag & (UI_ACTIVE | UI_SELECT | UI_SELECT_DRAW)) || !UI_but_is_tool(but)) {
|
||||
UI_icon_draw_aspect(xs, ys, icon, aspect, alpha);
|
||||
UI_icon_draw_aspect(xs, ys, icon, aspect, alpha, mono_color);
|
||||
}
|
||||
else {
|
||||
const bTheme *btheme = UI_GetTheme();
|
||||
UI_icon_draw_desaturate(xs, ys, icon, aspect, alpha, 1.0 - btheme->tui.icon_saturation);
|
||||
UI_icon_draw_desaturate(xs, ys, icon, aspect, alpha, 1.0 - btheme->tui.icon_saturation, mono_color);
|
||||
}
|
||||
}
|
||||
|
||||
GPU_blend(false);
|
||||
}
|
||||
|
||||
static void widget_draw_icon(
|
||||
const uiBut *but, BIFIconID icon, float alpha, const rcti *rect)
|
||||
{
|
||||
widget_draw_icon_ex(but, icon, alpha, rect, ICON_DEFAULT_HEIGHT);
|
||||
}
|
||||
|
||||
static void widget_draw_submenu_tria(const uiBut *but, const rcti *rect, const uiWidgetColors *wcol)
|
||||
{
|
||||
const float aspect = but->block->aspect / UI_DPI_FAC;
|
||||
@ -2026,7 +2020,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
|
||||
if (ELEM(but->type, UI_BTYPE_MENU, UI_BTYPE_POPOVER) && (but->flag & UI_BUT_NODE_LINK)) {
|
||||
rcti temp = *rect;
|
||||
temp.xmin = rect->xmax - BLI_rcti_size_y(rect) - 1;
|
||||
widget_draw_icon(but, ICON_LAYER_USED, alpha, &temp);
|
||||
widget_draw_icon(but, ICON_LAYER_USED, alpha, &temp, wcol->text);
|
||||
rect->xmax = temp.xmin;
|
||||
}
|
||||
|
||||
@ -2096,7 +2090,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
|
||||
else if (ui_block_is_menu(but->block))
|
||||
rect->xmin += 0.3f * U.widget_unit;
|
||||
|
||||
widget_draw_icon(but, icon, alpha, rect);
|
||||
widget_draw_icon(but, icon, alpha, rect, wcol->text);
|
||||
if (show_menu_icon) {
|
||||
BLI_assert(but->block->content_hints & UI_BLOCK_CONTAINS_SUBMENU_BUT);
|
||||
widget_draw_submenu_tria(but, rect, wcol);
|
||||
@ -2129,10 +2123,10 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
|
||||
temp.xmin = temp.xmax - (BLI_rcti_size_y(rect) * 1.08f);
|
||||
|
||||
if (extra_icon_type == UI_BUT_ICONEXTRA_CLEAR) {
|
||||
widget_draw_icon(but, ICON_PANEL_CLOSE, alpha, &temp);
|
||||
widget_draw_icon(but, ICON_PANEL_CLOSE, alpha, &temp, wcol->text);
|
||||
}
|
||||
else if (extra_icon_type == UI_BUT_ICONEXTRA_EYEDROPPER) {
|
||||
widget_draw_icon(but, ICON_EYEDROPPER, alpha, &temp);
|
||||
widget_draw_icon(but, ICON_EYEDROPPER, alpha, &temp, wcol->text);
|
||||
}
|
||||
else {
|
||||
BLI_assert(0);
|
||||
@ -4711,7 +4705,7 @@ void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, const char *name, int ic
|
||||
aspect = ICON_DEFAULT_HEIGHT / height;
|
||||
|
||||
GPU_blend(true);
|
||||
UI_icon_draw_aspect(xs, ys, iconid, aspect, 1.0f); /* XXX scale weak get from fstyle? */
|
||||
UI_icon_draw_aspect(xs, ys, iconid, aspect, 1.0f, wt->wcol.text); /* XXX scale weak get from fstyle? */
|
||||
GPU_blend(false);
|
||||
}
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ static void area_draw_azone_fullscreen(short x1, short y1, short x2, short y2, f
|
||||
|
||||
alpha = min_ff(alpha, 0.75f);
|
||||
|
||||
UI_icon_draw_aspect(x, y, ICON_FULLSCREEN_EXIT, 0.7f / UI_DPI_FAC, alpha);
|
||||
UI_icon_draw_aspect(x, y, ICON_FULLSCREEN_EXIT, 0.7f / UI_DPI_FAC, alpha, NULL);
|
||||
|
||||
/* debug drawing :
|
||||
* The click_rect is the same as defined in fullscreen_click_rcti_init
|
||||
|
@ -397,7 +397,7 @@ static void file_draw_preview(
|
||||
scale, scale, 1.0f, 1.0f, col);
|
||||
|
||||
if (icon) {
|
||||
UI_icon_draw_aspect((float)xco, (float)yco, icon, icon_aspect, 1.0f);
|
||||
UI_icon_draw_aspect((float)xco, (float)yco, icon, icon_aspect, 1.0f, NULL);
|
||||
}
|
||||
|
||||
/* border */
|
||||
|
@ -396,6 +396,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect)
|
||||
/* XXX todo, multiline drag draws... but maybe not, more types mixed wont work well */
|
||||
glEnable(GL_BLEND);
|
||||
for (drag = wm->drags.first; drag; drag = drag->next) {
|
||||
const char text_col[] = {255, 255, 255, 255};
|
||||
int iconsize = UI_DPI_ICON_SIZE;
|
||||
int padding = 4 * UI_DPI_FAC;
|
||||
|
||||
@ -420,7 +421,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect)
|
||||
if (rect)
|
||||
drag_rect_minmax(rect, x, y, x + iconsize, y + iconsize);
|
||||
else
|
||||
UI_icon_draw_aspect(x, y, drag->icon, 1.0f / UI_DPI_FAC, 0.8);
|
||||
UI_icon_draw_aspect(x, y, drag->icon, 1.0f / UI_DPI_FAC, 0.8, text_col);
|
||||
}
|
||||
|
||||
/* item name */
|
||||
@ -438,8 +439,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect)
|
||||
drag_rect_minmax(rect, x, y, x + w, y + iconsize);
|
||||
}
|
||||
else {
|
||||
const unsigned char col[] = {255, 255, 255, 255};
|
||||
UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), col);
|
||||
UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), (unsigned char*)text_col);
|
||||
}
|
||||
|
||||
/* operator name with roundbox */
|
||||
|
Loading…
Reference in New Issue
Block a user