BLF: UI_fontstyle_draw Usage
Add maximum string length argument to UI_fontstyle_draw to reduce usage of BLF_DRAW_STR_DUMMY_MAX. Reorders arguments to UI_fontstyle_draw_ex See D13794 for more details. Differential Revision: https://developer.blender.org/D13794 Reviewed by Campbell Barton
This commit is contained in:
parent
bbe59c6014
commit
89145341e5
|
@ -2957,15 +2957,17 @@ void UI_fontstyle_set(const struct uiFontStyle *fs);
|
|||
void UI_fontstyle_draw_ex(const struct uiFontStyle *fs,
|
||||
const struct rcti *rect,
|
||||
const char *str,
|
||||
size_t str_len,
|
||||
const uchar col[4],
|
||||
const struct uiFontStyleDraw_Params *fs_params,
|
||||
size_t len,
|
||||
int *r_xofs,
|
||||
int *r_yofs,
|
||||
struct ResultBLF *r_info);
|
||||
|
||||
void UI_fontstyle_draw(const struct uiFontStyle *fs,
|
||||
const struct rcti *rect,
|
||||
const char *str,
|
||||
size_t str_len,
|
||||
const uchar col[4],
|
||||
const struct uiFontStyleDraw_Params *fs_params);
|
||||
/**
|
||||
|
|
|
@ -1146,6 +1146,7 @@ static void panel_draw_aligned_widgets(const uiStyle *style,
|
|||
UI_fontstyle_draw(fontstyle,
|
||||
&title_rect,
|
||||
panel->drawname,
|
||||
sizeof(panel->drawname),
|
||||
title_color,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = UI_STYLE_TEXT_LEFT,
|
||||
|
|
|
@ -74,6 +74,8 @@
|
|||
#define UI_TIP_PADDING (int)(UI_TIP_PAD_FAC * UI_UNIT_Y)
|
||||
#define UI_TIP_MAXWIDTH 600
|
||||
|
||||
#define UI_TIP_STR_MAX 1024
|
||||
|
||||
typedef struct uiTooltipFormat {
|
||||
enum {
|
||||
UI_TIP_STYLE_NORMAL = 0,
|
||||
|
@ -214,7 +216,7 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region
|
|||
/* draw header and active data (is done here to be able to change color) */
|
||||
rgb_float_to_uchar(drawcol, tip_colors[UI_TIP_LC_MAIN]);
|
||||
UI_fontstyle_set(&data->fstyle);
|
||||
UI_fontstyle_draw(&data->fstyle, &bbox, field->text, drawcol, &fs_params);
|
||||
UI_fontstyle_draw(&data->fstyle, &bbox, field->text, UI_TIP_STR_MAX, drawcol, &fs_params);
|
||||
|
||||
/* offset to the end of the last line */
|
||||
if (field->text_suffix) {
|
||||
|
@ -224,7 +226,8 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region
|
|||
bbox.ymax -= yofs;
|
||||
|
||||
rgb_float_to_uchar(drawcol, tip_colors[UI_TIP_LC_ACTIVE]);
|
||||
UI_fontstyle_draw(&data->fstyle, &bbox, field->text_suffix, drawcol, &fs_params);
|
||||
UI_fontstyle_draw(
|
||||
&data->fstyle, &bbox, field->text_suffix, UI_TIP_STR_MAX, drawcol, &fs_params);
|
||||
|
||||
/* undo offset */
|
||||
bbox.xmin -= xofs;
|
||||
|
@ -243,7 +246,7 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region
|
|||
/* XXX, needed because we don't have mono in 'U.uifonts' */
|
||||
BLF_size(fstyle_mono.uifont_id, fstyle_mono.points * U.pixelsize, U.dpi);
|
||||
rgb_float_to_uchar(drawcol, tip_colors[field->format.color_id]);
|
||||
UI_fontstyle_draw(&fstyle_mono, &bbox, field->text, drawcol, &fs_params);
|
||||
UI_fontstyle_draw(&fstyle_mono, &bbox, field->text, UI_TIP_STR_MAX, drawcol, &fs_params);
|
||||
}
|
||||
else {
|
||||
BLI_assert(field->format.style == UI_TIP_STYLE_NORMAL);
|
||||
|
@ -255,7 +258,7 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region
|
|||
/* draw remaining data */
|
||||
rgb_float_to_uchar(drawcol, tip_colors[field->format.color_id]);
|
||||
UI_fontstyle_set(&data->fstyle);
|
||||
UI_fontstyle_draw(&data->fstyle, &bbox, field->text, drawcol, &fs_params);
|
||||
UI_fontstyle_draw(&data->fstyle, &bbox, field->text, UI_TIP_STR_MAX, drawcol, &fs_params);
|
||||
}
|
||||
|
||||
bbox.ymax -= data->lineh * field->geom.lines;
|
||||
|
@ -1215,12 +1218,12 @@ static ARegion *ui_tooltip_create_with_data(bContext *C,
|
|||
BLI_assert(ELEM(field->format.style, UI_TIP_STYLE_NORMAL, UI_TIP_STYLE_HEADER));
|
||||
font_id = data->fstyle.uifont_id;
|
||||
}
|
||||
w = BLF_width_ex(font_id, field->text, BLF_DRAW_STR_DUMMY_MAX, &info);
|
||||
w = BLF_width_ex(font_id, field->text, UI_TIP_STR_MAX, &info);
|
||||
|
||||
/* check for suffix (enum label) */
|
||||
if (field->text_suffix && field->text_suffix[0]) {
|
||||
x_pos = info.width;
|
||||
w = max_ii(w, x_pos + BLF_width(font_id, field->text_suffix, BLF_DRAW_STR_DUMMY_MAX));
|
||||
w = max_ii(w, x_pos + BLF_width(font_id, field->text_suffix, UI_TIP_STR_MAX));
|
||||
}
|
||||
fontw = max_ii(fontw, w);
|
||||
|
||||
|
|
|
@ -140,9 +140,9 @@ static uiFont *uifont_to_blfont(int id)
|
|||
void UI_fontstyle_draw_ex(const uiFontStyle *fs,
|
||||
const rcti *rect,
|
||||
const char *str,
|
||||
const size_t str_len,
|
||||
const uchar col[4],
|
||||
const struct uiFontStyleDraw_Params *fs_params,
|
||||
size_t len,
|
||||
int *r_xofs,
|
||||
int *r_yofs,
|
||||
struct ResultBLF *r_info)
|
||||
|
@ -183,10 +183,10 @@ void UI_fontstyle_draw_ex(const uiFontStyle *fs,
|
|||
}
|
||||
|
||||
if (fs_params->align == UI_STYLE_TEXT_CENTER) {
|
||||
xofs = floor(0.5f * (BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len)));
|
||||
xofs = floor(0.5f * (BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, str_len)));
|
||||
}
|
||||
else if (fs_params->align == UI_STYLE_TEXT_RIGHT) {
|
||||
xofs = BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len);
|
||||
xofs = BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, str_len);
|
||||
}
|
||||
|
||||
yofs = MAX2(0, yofs);
|
||||
|
@ -196,7 +196,7 @@ void UI_fontstyle_draw_ex(const uiFontStyle *fs,
|
|||
BLF_position(fs->uifont_id, rect->xmin + xofs, rect->ymin + yofs, 0.0f);
|
||||
BLF_color4ubv(fs->uifont_id, col);
|
||||
|
||||
BLF_draw_ex(fs->uifont_id, str, len, r_info);
|
||||
BLF_draw_ex(fs->uifont_id, str, str_len, r_info);
|
||||
|
||||
BLF_disable(fs->uifont_id, font_flag);
|
||||
|
||||
|
@ -211,12 +211,11 @@ void UI_fontstyle_draw_ex(const uiFontStyle *fs,
|
|||
void UI_fontstyle_draw(const uiFontStyle *fs,
|
||||
const rcti *rect,
|
||||
const char *str,
|
||||
const size_t str_len,
|
||||
const uchar col[4],
|
||||
const struct uiFontStyleDraw_Params *fs_params)
|
||||
{
|
||||
int xofs, yofs;
|
||||
|
||||
UI_fontstyle_draw_ex(fs, rect, str, col, fs_params, BLF_DRAW_STR_DUMMY_MAX, &xofs, &yofs, NULL);
|
||||
UI_fontstyle_draw_ex(fs, rect, str, str_len, col, fs_params, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
void UI_fontstyle_draw_rotated(const uiFontStyle *fs,
|
||||
|
|
|
@ -2130,11 +2130,11 @@ static void widget_draw_text(const uiFontStyle *fstyle,
|
|||
UI_fontstyle_draw_ex(fstyle,
|
||||
rect,
|
||||
drawstr + but->ofs,
|
||||
drawlen,
|
||||
wcol->text,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = align,
|
||||
},
|
||||
drawlen,
|
||||
&font_xofs,
|
||||
&font_yofs,
|
||||
NULL);
|
||||
|
@ -2194,6 +2194,7 @@ static void widget_draw_text(const uiFontStyle *fstyle,
|
|||
UI_fontstyle_draw(fstyle,
|
||||
rect,
|
||||
drawstr_right,
|
||||
UI_MAX_DRAW_STR,
|
||||
col,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = UI_STYLE_TEXT_RIGHT,
|
||||
|
@ -5417,11 +5418,11 @@ void ui_draw_menu_item(const uiFontStyle *fstyle,
|
|||
UI_fontstyle_draw_ex(fstyle,
|
||||
rect,
|
||||
drawstr,
|
||||
sizeof(drawstr),
|
||||
wt->wcol.text,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = UI_STYLE_TEXT_LEFT,
|
||||
},
|
||||
sizeof(drawstr),
|
||||
&xofs,
|
||||
&yofs,
|
||||
&info);
|
||||
|
@ -5468,6 +5469,7 @@ void ui_draw_menu_item(const uiFontStyle *fstyle,
|
|||
UI_fontstyle_draw(fstyle,
|
||||
rect,
|
||||
hint_drawstr,
|
||||
sizeof(hint_drawstr),
|
||||
wt->wcol.text,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = UI_STYLE_TEXT_RIGHT,
|
||||
|
@ -5523,6 +5525,7 @@ void ui_draw_preview_item_stateless(const uiFontStyle *fstyle,
|
|||
UI_fontstyle_draw(fstyle,
|
||||
&trect,
|
||||
drawstr,
|
||||
sizeof(drawstr),
|
||||
text_col,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = text_align,
|
||||
|
|
|
@ -240,6 +240,7 @@ static void file_draw_string(int sx,
|
|||
UI_fontstyle_draw(&fs,
|
||||
&rect,
|
||||
fname,
|
||||
sizeof(fname),
|
||||
col,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = align,
|
||||
|
@ -289,12 +290,12 @@ static void file_draw_string_multiline(int sx,
|
|||
UI_fontstyle_draw_ex(&style->widget,
|
||||
&rect,
|
||||
string,
|
||||
len,
|
||||
text_col,
|
||||
&(struct uiFontStyleDraw_Params){
|
||||
.align = UI_STYLE_TEXT_LEFT,
|
||||
.word_wrap = true,
|
||||
},
|
||||
len,
|
||||
NULL,
|
||||
NULL,
|
||||
&result);
|
||||
|
|
Loading…
Reference in New Issue