diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/editors/interface/interface_style.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/editors/interface/interface_style.c')
-rw-r--r-- | source/blender/editors/interface/interface_style.c | 878 |
1 files changed, 443 insertions, 435 deletions
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c index eecd5885c74..192571044b9 100644 --- a/source/blender/editors/interface/interface_style.c +++ b/source/blender/editors/interface/interface_style.c @@ -21,7 +21,6 @@ * \ingroup edinterface */ - #include <limits.h> #include <math.h> #include <stdlib.h> @@ -71,205 +70,216 @@ * - font types, styles and relative sizes for Panel titles, labels, etc. */ - /* ********************************************** */ static uiStyle *ui_style_new(ListBase *styles, const char *name, short uifont_id) { - uiStyle *style = MEM_callocN(sizeof(uiStyle), "new style"); - - BLI_addtail(styles, style); - BLI_strncpy(style->name, name, MAX_STYLE_NAME); - - style->panelzoom = 1.0; /* unused */ - - style->paneltitle.uifont_id = uifont_id; - style->paneltitle.points = 12; - style->paneltitle.kerning = 1; - style->paneltitle.shadow = 3; - style->paneltitle.shadx = 0; - style->paneltitle.shady = -1; - style->paneltitle.shadowalpha = 0.5f; - style->paneltitle.shadowcolor = 0.0f; - - style->grouplabel.uifont_id = uifont_id; - style->grouplabel.points = 12; - style->grouplabel.kerning = 1; - style->grouplabel.shadow = 3; - style->grouplabel.shadx = 0; - style->grouplabel.shady = -1; - style->grouplabel.shadowalpha = 0.5f; - style->grouplabel.shadowcolor = 0.0f; - - style->widgetlabel.uifont_id = uifont_id; - style->widgetlabel.points = 11; - style->widgetlabel.kerning = 1; - style->widgetlabel.shadow = 3; - style->widgetlabel.shadx = 0; - style->widgetlabel.shady = -1; - style->widgetlabel.shadowalpha = 0.5f; - style->widgetlabel.shadowcolor = 0.0f; - - style->widget.uifont_id = uifont_id; - style->widget.points = 11; - style->widget.kerning = 1; - style->widget.shadow = 1; - style->widget.shady = -1; - style->widget.shadowalpha = 0.5f; - style->widget.shadowcolor = 0.0f; - - style->columnspace = 8; - style->templatespace = 5; - style->boxspace = 5; - style->buttonspacex = 8; - style->buttonspacey = 2; - style->panelspace = 8; - style->panelouter = 4; - - return style; + uiStyle *style = MEM_callocN(sizeof(uiStyle), "new style"); + + BLI_addtail(styles, style); + BLI_strncpy(style->name, name, MAX_STYLE_NAME); + + style->panelzoom = 1.0; /* unused */ + + style->paneltitle.uifont_id = uifont_id; + style->paneltitle.points = 12; + style->paneltitle.kerning = 1; + style->paneltitle.shadow = 3; + style->paneltitle.shadx = 0; + style->paneltitle.shady = -1; + style->paneltitle.shadowalpha = 0.5f; + style->paneltitle.shadowcolor = 0.0f; + + style->grouplabel.uifont_id = uifont_id; + style->grouplabel.points = 12; + style->grouplabel.kerning = 1; + style->grouplabel.shadow = 3; + style->grouplabel.shadx = 0; + style->grouplabel.shady = -1; + style->grouplabel.shadowalpha = 0.5f; + style->grouplabel.shadowcolor = 0.0f; + + style->widgetlabel.uifont_id = uifont_id; + style->widgetlabel.points = 11; + style->widgetlabel.kerning = 1; + style->widgetlabel.shadow = 3; + style->widgetlabel.shadx = 0; + style->widgetlabel.shady = -1; + style->widgetlabel.shadowalpha = 0.5f; + style->widgetlabel.shadowcolor = 0.0f; + + style->widget.uifont_id = uifont_id; + style->widget.points = 11; + style->widget.kerning = 1; + style->widget.shadow = 1; + style->widget.shady = -1; + style->widget.shadowalpha = 0.5f; + style->widget.shadowcolor = 0.0f; + + style->columnspace = 8; + style->templatespace = 5; + style->boxspace = 5; + style->buttonspacex = 8; + style->buttonspacey = 2; + style->panelspace = 8; + style->panelouter = 4; + + return style; } static uiFont *uifont_to_blfont(int id) { - uiFont *font = U.uifonts.first; - - for (; font; font = font->next) { - if (font->uifont_id == id) { - return font; - } - } - return U.uifonts.first; + uiFont *font = U.uifonts.first; + + for (; font; font = font->next) { + if (font->uifont_id == id) { + return font; + } + } + return U.uifonts.first; } /* *************** draw ************************ */ - -void UI_fontstyle_draw_ex( - const uiFontStyle *fs, const rcti *rect, const char *str, const uchar col[4], - const struct uiFontStyleDraw_Params *fs_params, - size_t len, float *r_xofs, float *r_yofs) +void UI_fontstyle_draw_ex(const uiFontStyle *fs, + const rcti *rect, + const char *str, + const uchar col[4], + const struct uiFontStyleDraw_Params *fs_params, + size_t len, + float *r_xofs, + float *r_yofs) { - int xofs = 0, yofs; - int font_flag = BLF_CLIPPING; - - UI_fontstyle_set(fs); - - /* set the flag */ - if (fs->shadow) { - font_flag |= BLF_SHADOW; - const float shadow_color[4] = {fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha}; - BLF_shadow(fs->uifont_id, fs->shadow, shadow_color); - BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); - } - if (fs->kerning == 1) { - font_flag |= BLF_KERNING_DEFAULT; - } - if (fs_params->word_wrap == 1) { - font_flag |= BLF_WORD_WRAP; - } - - BLF_enable(fs->uifont_id, font_flag); - - if (fs_params->word_wrap == 1) { - /* draw from boundbox top */ - yofs = BLI_rcti_size_y(rect) - BLF_height_max(fs->uifont_id); - } - else { - /* draw from boundbox center */ - float height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id); - yofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height)); - } - - if (fs_params->align == UI_STYLE_TEXT_CENTER) { - xofs = floor(0.5f * (BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len))); - } - else if (fs_params->align == UI_STYLE_TEXT_RIGHT) { - xofs = BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len); - } - - yofs = MAX2(0, yofs); - xofs = MAX2(0, xofs); - - BLF_clipping(fs->uifont_id, rect->xmin, rect->ymin, rect->xmax, rect->ymax); - BLF_position(fs->uifont_id, rect->xmin + xofs, rect->ymin + yofs, 0.0f); - BLF_color4ubv(fs->uifont_id, col); - - BLF_draw(fs->uifont_id, str, len); - - BLF_disable(fs->uifont_id, font_flag); - - *r_xofs = xofs; - *r_yofs = yofs; + int xofs = 0, yofs; + int font_flag = BLF_CLIPPING; + + UI_fontstyle_set(fs); + + /* set the flag */ + if (fs->shadow) { + font_flag |= BLF_SHADOW; + const float shadow_color[4] = { + fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha}; + BLF_shadow(fs->uifont_id, fs->shadow, shadow_color); + BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); + } + if (fs->kerning == 1) { + font_flag |= BLF_KERNING_DEFAULT; + } + if (fs_params->word_wrap == 1) { + font_flag |= BLF_WORD_WRAP; + } + + BLF_enable(fs->uifont_id, font_flag); + + if (fs_params->word_wrap == 1) { + /* draw from boundbox top */ + yofs = BLI_rcti_size_y(rect) - BLF_height_max(fs->uifont_id); + } + else { + /* draw from boundbox center */ + float height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id); + yofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height)); + } + + if (fs_params->align == UI_STYLE_TEXT_CENTER) { + xofs = floor(0.5f * (BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len))); + } + else if (fs_params->align == UI_STYLE_TEXT_RIGHT) { + xofs = BLI_rcti_size_x(rect) - BLF_width(fs->uifont_id, str, len); + } + + yofs = MAX2(0, yofs); + xofs = MAX2(0, xofs); + + BLF_clipping(fs->uifont_id, rect->xmin, rect->ymin, rect->xmax, rect->ymax); + BLF_position(fs->uifont_id, rect->xmin + xofs, rect->ymin + yofs, 0.0f); + BLF_color4ubv(fs->uifont_id, col); + + BLF_draw(fs->uifont_id, str, len); + + BLF_disable(fs->uifont_id, font_flag); + + *r_xofs = xofs; + *r_yofs = yofs; } -void UI_fontstyle_draw( - const uiFontStyle *fs, const rcti *rect, const char *str, const uchar col[4], - const struct uiFontStyleDraw_Params *fs_params) +void UI_fontstyle_draw(const uiFontStyle *fs, + const rcti *rect, + const char *str, + const uchar col[4], + const struct uiFontStyleDraw_Params *fs_params) { - float xofs, yofs; + float xofs, yofs; - UI_fontstyle_draw_ex( - fs, rect, str, col, fs_params, - BLF_DRAW_STR_DUMMY_MAX, &xofs, &yofs); + UI_fontstyle_draw_ex(fs, rect, str, col, fs_params, BLF_DRAW_STR_DUMMY_MAX, &xofs, &yofs); } /* drawn same as above, but at 90 degree angle */ -void UI_fontstyle_draw_rotated(const uiFontStyle *fs, const rcti *rect, const char *str, const uchar col[4]) +void UI_fontstyle_draw_rotated(const uiFontStyle *fs, + const rcti *rect, + const char *str, + const uchar col[4]) { - float height; - int xofs, yofs; - float angle; - rcti txtrect; - - UI_fontstyle_set(fs); - - height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id); - /* becomes x-offset when rotated */ - xofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height)); - - /* ignore UI_STYLE, always aligned to top */ - - /* rotate counter-clockwise for now (assumes left-to-right language)*/ - xofs += height; - yofs = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX) + 5; - angle = M_PI_2; - - /* translate rect to vertical */ - txtrect.xmin = rect->xmin - BLI_rcti_size_y(rect); - txtrect.ymin = rect->ymin - BLI_rcti_size_x(rect); - txtrect.xmax = rect->xmin; - txtrect.ymax = rect->ymin; - - /* clip is very strict, so we give it some space */ - /* clipping is done without rotation, so make rect big enough to contain both positions */ - BLF_clipping(fs->uifont_id, txtrect.xmin - 1, txtrect.ymin - yofs - xofs - 4, rect->xmax + 1, rect->ymax + 4); - BLF_enable(fs->uifont_id, BLF_CLIPPING); - BLF_position(fs->uifont_id, txtrect.xmin + xofs, txtrect.ymax - yofs, 0.0f); - - BLF_enable(fs->uifont_id, BLF_ROTATION); - BLF_rotation(fs->uifont_id, angle); - BLF_color4ubv(fs->uifont_id, col); - - if (fs->shadow) { - BLF_enable(fs->uifont_id, BLF_SHADOW); - const float shadow_color[4] = {fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha}; - BLF_shadow(fs->uifont_id, fs->shadow, shadow_color); - BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); - } - - if (fs->kerning == 1) { - BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - } - - BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); - BLF_disable(fs->uifont_id, BLF_ROTATION); - BLF_disable(fs->uifont_id, BLF_CLIPPING); - if (fs->shadow) { - BLF_disable(fs->uifont_id, BLF_SHADOW); - } - if (fs->kerning == 1) { - BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); - } + float height; + int xofs, yofs; + float angle; + rcti txtrect; + + UI_fontstyle_set(fs); + + height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id); + /* becomes x-offset when rotated */ + xofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height)); + + /* ignore UI_STYLE, always aligned to top */ + + /* rotate counter-clockwise for now (assumes left-to-right language)*/ + xofs += height; + yofs = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX) + 5; + angle = M_PI_2; + + /* translate rect to vertical */ + txtrect.xmin = rect->xmin - BLI_rcti_size_y(rect); + txtrect.ymin = rect->ymin - BLI_rcti_size_x(rect); + txtrect.xmax = rect->xmin; + txtrect.ymax = rect->ymin; + + /* clip is very strict, so we give it some space */ + /* clipping is done without rotation, so make rect big enough to contain both positions */ + BLF_clipping(fs->uifont_id, + txtrect.xmin - 1, + txtrect.ymin - yofs - xofs - 4, + rect->xmax + 1, + rect->ymax + 4); + BLF_enable(fs->uifont_id, BLF_CLIPPING); + BLF_position(fs->uifont_id, txtrect.xmin + xofs, txtrect.ymax - yofs, 0.0f); + + BLF_enable(fs->uifont_id, BLF_ROTATION); + BLF_rotation(fs->uifont_id, angle); + BLF_color4ubv(fs->uifont_id, col); + + if (fs->shadow) { + BLF_enable(fs->uifont_id, BLF_SHADOW); + const float shadow_color[4] = { + fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha}; + BLF_shadow(fs->uifont_id, fs->shadow, shadow_color); + BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); + } + + if (fs->kerning == 1) { + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); + } + + BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); + BLF_disable(fs->uifont_id, BLF_ROTATION); + BLF_disable(fs->uifont_id, BLF_CLIPPING); + if (fs->shadow) { + BLF_disable(fs->uifont_id, BLF_SHADOW); + } + if (fs->kerning == 1) { + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); + } } /** @@ -278,313 +288,311 @@ void UI_fontstyle_draw_rotated(const uiFontStyle *fs, const rcti *rect, const ch * * For drawing on-screen labels. */ -void UI_fontstyle_draw_simple(const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4]) +void UI_fontstyle_draw_simple( + const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4]) { - if (fs->kerning == 1) { - BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - } - - UI_fontstyle_set(fs); - BLF_position(fs->uifont_id, x, y, 0.0f); - BLF_color4ubv(fs->uifont_id, col); - BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); - - if (fs->kerning == 1) { - BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); - } + if (fs->kerning == 1) { + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); + } + + UI_fontstyle_set(fs); + BLF_position(fs->uifont_id, x, y, 0.0f); + BLF_color4ubv(fs->uifont_id, col); + BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); + + if (fs->kerning == 1) { + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); + } } /** * Same as #UI_fontstyle_draw but draw a colored backdrop. */ -void UI_fontstyle_draw_simple_backdrop( - const uiFontStyle *fs, float x, float y, const char *str, - const float col_fg[4], const float col_bg[4]) +void UI_fontstyle_draw_simple_backdrop(const uiFontStyle *fs, + float x, + float y, + const char *str, + const float col_fg[4], + const float col_bg[4]) { - if (fs->kerning == 1) { - BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - } - - UI_fontstyle_set(fs); - - { - const float width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); - const float height = BLF_height_max(fs->uifont_id); - const float decent = BLF_descender(fs->uifont_id); - const float margin = height / 4.0f; - - /* backdrop */ - float color[4] = { col_bg[0], col_bg[1], col_bg[2], 0.5f }; - - UI_draw_roundbox_corner_set(UI_CNR_ALL); - UI_draw_roundbox_aa( - true, - x - margin, - (y + decent) - margin, - x + width + margin, - (y + decent) + height + margin, - margin, color); - } - - BLF_position(fs->uifont_id, x, y, 0.0f); - BLF_color4fv(fs->uifont_id, col_fg); - BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); - - if (fs->kerning == 1) { - BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); - } + if (fs->kerning == 1) { + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); + } + + UI_fontstyle_set(fs); + + { + const float width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); + const float height = BLF_height_max(fs->uifont_id); + const float decent = BLF_descender(fs->uifont_id); + const float margin = height / 4.0f; + + /* backdrop */ + float color[4] = {col_bg[0], col_bg[1], col_bg[2], 0.5f}; + + UI_draw_roundbox_corner_set(UI_CNR_ALL); + UI_draw_roundbox_aa(true, + x - margin, + (y + decent) - margin, + x + width + margin, + (y + decent) + height + margin, + margin, + color); + } + + BLF_position(fs->uifont_id, x, y, 0.0f); + BLF_color4fv(fs->uifont_id, col_fg); + BLF_draw(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); + + if (fs->kerning == 1) { + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); + } } - /* ************** helpers ************************ */ /* XXX: read a style configure */ uiStyle *UI_style_get(void) { #if 0 - uiStyle *style = NULL; - /* offset is two struct uiStyle pointers */ - style = BLI_findstring(&U.uistyles, "Unifont Style", sizeof(style) * 2); - return (style != NULL) ? style : U.uistyles.first; + uiStyle *style = NULL; + /* offset is two struct uiStyle pointers */ + style = BLI_findstring(&U.uistyles, "Unifont Style", sizeof(style) * 2); + return (style != NULL) ? style : U.uistyles.first; #else - return U.uistyles.first; + return U.uistyles.first; #endif } /* for drawing, scaled with DPI setting */ uiStyle *UI_style_get_dpi(void) { - uiStyle *style = UI_style_get(); - static uiStyle _style; - - _style = *style; - - _style.paneltitle.shadx = (short)(UI_DPI_FAC * _style.paneltitle.shadx); - _style.paneltitle.shady = (short)(UI_DPI_FAC * _style.paneltitle.shady); - _style.grouplabel.shadx = (short)(UI_DPI_FAC * _style.grouplabel.shadx); - _style.grouplabel.shady = (short)(UI_DPI_FAC * _style.grouplabel.shady); - _style.widgetlabel.shadx = (short)(UI_DPI_FAC * _style.widgetlabel.shadx); - _style.widgetlabel.shady = (short)(UI_DPI_FAC * _style.widgetlabel.shady); - - _style.columnspace = (short)(UI_DPI_FAC * _style.columnspace); - _style.templatespace = (short)(UI_DPI_FAC * _style.templatespace); - _style.boxspace = (short)(UI_DPI_FAC * _style.boxspace); - _style.buttonspacex = (short)(UI_DPI_FAC * _style.buttonspacex); - _style.buttonspacey = (short)(UI_DPI_FAC * _style.buttonspacey); - _style.panelspace = (short)(UI_DPI_FAC * _style.panelspace); - _style.panelouter = (short)(UI_DPI_FAC * _style.panelouter); - - return &_style; + uiStyle *style = UI_style_get(); + static uiStyle _style; + + _style = *style; + + _style.paneltitle.shadx = (short)(UI_DPI_FAC * _style.paneltitle.shadx); + _style.paneltitle.shady = (short)(UI_DPI_FAC * _style.paneltitle.shady); + _style.grouplabel.shadx = (short)(UI_DPI_FAC * _style.grouplabel.shadx); + _style.grouplabel.shady = (short)(UI_DPI_FAC * _style.grouplabel.shady); + _style.widgetlabel.shadx = (short)(UI_DPI_FAC * _style.widgetlabel.shadx); + _style.widgetlabel.shady = (short)(UI_DPI_FAC * _style.widgetlabel.shady); + + _style.columnspace = (short)(UI_DPI_FAC * _style.columnspace); + _style.templatespace = (short)(UI_DPI_FAC * _style.templatespace); + _style.boxspace = (short)(UI_DPI_FAC * _style.boxspace); + _style.buttonspacex = (short)(UI_DPI_FAC * _style.buttonspacex); + _style.buttonspacey = (short)(UI_DPI_FAC * _style.buttonspacey); + _style.panelspace = (short)(UI_DPI_FAC * _style.panelspace); + _style.panelouter = (short)(UI_DPI_FAC * _style.panelouter); + + return &_style; } int UI_fontstyle_string_width(const uiFontStyle *fs, const char *str) { - int width; + int width; - if (fs->kerning == 1) { - /* for BLF_width */ - BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - } + if (fs->kerning == 1) { + /* for BLF_width */ + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); + } - UI_fontstyle_set(fs); - width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); + UI_fontstyle_set(fs); + width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX); - if (fs->kerning == 1) { - BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); - } + if (fs->kerning == 1) { + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); + } - return width; + return width; } int UI_fontstyle_height_max(const uiFontStyle *fs) { - UI_fontstyle_set(fs); - return BLF_height_max(fs->uifont_id); + UI_fontstyle_set(fs); + return BLF_height_max(fs->uifont_id); } - /* ************** init exit ************************ */ /* called on each startup.blend read */ /* reading without uifont will create one */ void uiStyleInit(void) { - uiFont *font; - uiStyle *style = U.uistyles.first; - int monofont_size = datatoc_bmonofont_ttf_size; - uchar *monofont_ttf = (uchar *)datatoc_bmonofont_ttf; - - /* recover from uninitialized dpi */ - if (U.dpi == 0) { - U.dpi = 72; - } - CLAMP(U.dpi, 48, 144); - - for (font = U.uifonts.first; font; font = font->next) { - BLF_unload_id(font->blf_id); - } - - if (blf_mono_font != -1) { - BLF_unload_id(blf_mono_font); - blf_mono_font = -1; - } - - if (blf_mono_font_render != -1) { - BLF_unload_id(blf_mono_font_render); - blf_mono_font_render = -1; - } - - font = U.uifonts.first; - - /* default builtin */ - if (font == NULL) { - font = MEM_callocN(sizeof(uiFont), "ui font"); - BLI_addtail(&U.uifonts, font); - } - - if (U.font_path_ui[0]) { - BLI_strncpy(font->filename, U.font_path_ui, sizeof(font->filename)); - font->uifont_id = UIFONT_CUSTOM1; - } - else { - BLI_strncpy(font->filename, "default", sizeof(font->filename)); - font->uifont_id = UIFONT_DEFAULT; - } - - for (font = U.uifonts.first; font; font = font->next) { - - if (font->uifont_id == UIFONT_DEFAULT) { + uiFont *font; + uiStyle *style = U.uistyles.first; + int monofont_size = datatoc_bmonofont_ttf_size; + uchar *monofont_ttf = (uchar *)datatoc_bmonofont_ttf; + + /* recover from uninitialized dpi */ + if (U.dpi == 0) { + U.dpi = 72; + } + CLAMP(U.dpi, 48, 144); + + for (font = U.uifonts.first; font; font = font->next) { + BLF_unload_id(font->blf_id); + } + + if (blf_mono_font != -1) { + BLF_unload_id(blf_mono_font); + blf_mono_font = -1; + } + + if (blf_mono_font_render != -1) { + BLF_unload_id(blf_mono_font_render); + blf_mono_font_render = -1; + } + + font = U.uifonts.first; + + /* default builtin */ + if (font == NULL) { + font = MEM_callocN(sizeof(uiFont), "ui font"); + BLI_addtail(&U.uifonts, font); + } + + if (U.font_path_ui[0]) { + BLI_strncpy(font->filename, U.font_path_ui, sizeof(font->filename)); + font->uifont_id = UIFONT_CUSTOM1; + } + else { + BLI_strncpy(font->filename, "default", sizeof(font->filename)); + font->uifont_id = UIFONT_DEFAULT; + } + + for (font = U.uifonts.first; font; font = font->next) { + + if (font->uifont_id == UIFONT_DEFAULT) { #ifdef WITH_INTERNATIONAL - int font_size = datatoc_bfont_ttf_size; - uchar *font_ttf = (uchar *)datatoc_bfont_ttf; - static int last_font_size = 0; - - /* use unicode font for translation */ - if (U.transopts & USER_DOTRANSLATE) { - font_ttf = BLF_get_unifont(&font_size); - - if (!font_ttf) { - /* fall back if not found */ - font_size = datatoc_bfont_ttf_size; - font_ttf = (uchar *)datatoc_bfont_ttf; - } - } - - /* relload only if needed */ - if (last_font_size != font_size) { - BLF_unload("default"); - last_font_size = font_size; - } - - font->blf_id = BLF_load_mem("default", font_ttf, font_size); + int font_size = datatoc_bfont_ttf_size; + uchar *font_ttf = (uchar *)datatoc_bfont_ttf; + static int last_font_size = 0; + + /* use unicode font for translation */ + if (U.transopts & USER_DOTRANSLATE) { + font_ttf = BLF_get_unifont(&font_size); + + if (!font_ttf) { + /* fall back if not found */ + font_size = datatoc_bfont_ttf_size; + font_ttf = (uchar *)datatoc_bfont_ttf; + } + } + + /* relload only if needed */ + if (last_font_size != font_size) { + BLF_unload("default"); + last_font_size = font_size; + } + + font->blf_id = BLF_load_mem("default", font_ttf, font_size); #else - font->blf_id = BLF_load_mem("default", (uchar *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); + font->blf_id = BLF_load_mem("default", (uchar *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); #endif - } - else { - font->blf_id = BLF_load(font->filename); - if (font->blf_id == -1) { - font->blf_id = BLF_load_mem("default", (uchar *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); - } - } - - BLF_default_set(font->blf_id); - - if (font->blf_id == -1) { - if (G.debug & G_DEBUG) { - printf("%s: error, no fonts available\n", __func__); - } - } - else { - /* ? just for speed to initialize? - * Yes, this build the glyph cache and create - * the texture. - */ - BLF_size(font->blf_id, 11 * U.pixelsize, U.dpi); - BLF_size(font->blf_id, 12 * U.pixelsize, U.dpi); - BLF_size(font->blf_id, 14 * U.pixelsize, U.dpi); - } - } - - if (style == NULL) { - ui_style_new(&U.uistyles, "Default Style", UIFONT_DEFAULT); - } + } + else { + font->blf_id = BLF_load(font->filename); + if (font->blf_id == -1) { + font->blf_id = BLF_load_mem("default", (uchar *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); + } + } + + BLF_default_set(font->blf_id); + + if (font->blf_id == -1) { + if (G.debug & G_DEBUG) { + printf("%s: error, no fonts available\n", __func__); + } + } + else { + /* ? just for speed to initialize? + * Yes, this build the glyph cache and create + * the texture. + */ + BLF_size(font->blf_id, 11 * U.pixelsize, U.dpi); + BLF_size(font->blf_id, 12 * U.pixelsize, U.dpi); + BLF_size(font->blf_id, 14 * U.pixelsize, U.dpi); + } + } + + if (style == NULL) { + ui_style_new(&U.uistyles, "Default Style", UIFONT_DEFAULT); + } #ifdef WITH_INTERNATIONAL - /* use unicode font for text editor and interactive console */ - if (U.transopts & USER_DOTRANSLATE) { - monofont_ttf = BLF_get_unifont_mono(&monofont_size); - - if (!monofont_ttf) { - /* fall back if not found */ - monofont_size = datatoc_bmonofont_ttf_size; - monofont_ttf = (uchar *)datatoc_bmonofont_ttf; - } - } + /* use unicode font for text editor and interactive console */ + if (U.transopts & USER_DOTRANSLATE) { + monofont_ttf = BLF_get_unifont_mono(&monofont_size); + + if (!monofont_ttf) { + /* fall back if not found */ + monofont_size = datatoc_bmonofont_ttf_size; + monofont_ttf = (uchar *)datatoc_bmonofont_ttf; + } + } #endif - /* XXX, this should be moved into a style, - * but for now best only load the monospaced font once. */ - BLI_assert(blf_mono_font == -1); - if (U.font_path_ui_mono[0]) { - blf_mono_font = BLF_load_unique(U.font_path_ui_mono); - } - if (blf_mono_font == -1) { - blf_mono_font = BLF_load_mem_unique("monospace", monofont_ttf, monofont_size); - } - - BLF_size(blf_mono_font, 12 * U.pixelsize, 72); - - /* Set default flags based on UI preferences (not render fonts) */ - { - int flag_disable = ( - BLF_MONOCHROME | - BLF_HINTING_NONE | - BLF_HINTING_SLIGHT | - BLF_HINTING_FULL); - int flag_enable = 0; - - if (U.text_render & USER_TEXT_HINTING_NONE) { - flag_enable |= BLF_HINTING_NONE; - } - else if (U.text_render & USER_TEXT_HINTING_SLIGHT) { - flag_enable |= BLF_HINTING_SLIGHT; - } - else if (U.text_render & USER_TEXT_HINTING_FULL) { - flag_enable |= BLF_HINTING_FULL; - } - - if (U.text_render & USER_TEXT_DISABLE_AA) { - flag_enable |= BLF_MONOCHROME; - } - - for (font = U.uifonts.first; font; font = font->next) { - if (font->blf_id != -1) { - BLF_disable(font->blf_id, flag_disable); - BLF_enable(font->blf_id, flag_enable); - } - } - if (blf_mono_font != -1) { - BLF_disable(blf_mono_font, flag_disable); - BLF_enable(blf_mono_font, flag_enable); - } - } - - /** - * Second for rendering else we get threading problems, - * - * \note This isn't good that the render font depends on the preferences, - * keep for now though, since without this there is no way to display many unicode chars. - */ - if (blf_mono_font_render == -1) { - blf_mono_font_render = BLF_load_mem_unique("monospace", monofont_ttf, monofont_size); - } - - BLF_size(blf_mono_font_render, 12 * U.pixelsize, 72); + /* XXX, this should be moved into a style, + * but for now best only load the monospaced font once. */ + BLI_assert(blf_mono_font == -1); + if (U.font_path_ui_mono[0]) { + blf_mono_font = BLF_load_unique(U.font_path_ui_mono); + } + if (blf_mono_font == -1) { + blf_mono_font = BLF_load_mem_unique("monospace", monofont_ttf, monofont_size); + } + + BLF_size(blf_mono_font, 12 * U.pixelsize, 72); + + /* Set default flags based on UI preferences (not render fonts) */ + { + int flag_disable = (BLF_MONOCHROME | BLF_HINTING_NONE | BLF_HINTING_SLIGHT | BLF_HINTING_FULL); + int flag_enable = 0; + + if (U.text_render & USER_TEXT_HINTING_NONE) { + flag_enable |= BLF_HINTING_NONE; + } + else if (U.text_render & USER_TEXT_HINTING_SLIGHT) { + flag_enable |= BLF_HINTING_SLIGHT; + } + else if (U.text_render & USER_TEXT_HINTING_FULL) { + flag_enable |= BLF_HINTING_FULL; + } + + if (U.text_render & USER_TEXT_DISABLE_AA) { + flag_enable |= BLF_MONOCHROME; + } + + for (font = U.uifonts.first; font; font = font->next) { + if (font->blf_id != -1) { + BLF_disable(font->blf_id, flag_disable); + BLF_enable(font->blf_id, flag_enable); + } + } + if (blf_mono_font != -1) { + BLF_disable(blf_mono_font, flag_disable); + BLF_enable(blf_mono_font, flag_enable); + } + } + + /** + * Second for rendering else we get threading problems, + * + * \note This isn't good that the render font depends on the preferences, + * keep for now though, since without this there is no way to display many unicode chars. + */ + if (blf_mono_font_render == -1) { + blf_mono_font_render = BLF_load_mem_unique("monospace", monofont_ttf, monofont_size); + } + + BLF_size(blf_mono_font_render, 12 * U.pixelsize, 72); } void UI_fontstyle_set(const uiFontStyle *fs) { - uiFont *font = uifont_to_blfont(fs->uifont_id); + uiFont *font = uifont_to_blfont(fs->uifont_id); - BLF_size(font->blf_id, fs->points * U.pixelsize, U.dpi); + BLF_size(font->blf_id, fs->points * U.pixelsize, U.dpi); } |