Blender V5.0
blf_internal.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BLI_array.hh"
12#include "BLI_bounds_types.hh"
13#include "BLI_function_ref.hh"
14#include "BLI_string_ref.hh"
15#include "BLI_vector.hh"
16
17struct FontBLF;
18struct GlyphBLF;
19struct GlyphCacheBLF;
20struct ListBase;
21struct ResultBLF;
22struct rcti;
23struct rctf;
24enum class BLFWrapMode;
25
30#define BLF_MAX_FONT 64
31
35#define BLF_SUBPIXEL_POSITION
36
40#define BLF_SUBPIXEL_AA
41
43#define BLF_CACHE_MAX_FACES 8
45#define BLF_CACHE_MAX_SIZES 16
47#define BLF_CACHE_BYTES 0x100000
48
53#define BLF_ICON_OFFSET 0x100000L
54
61#define BLF_DPI 72
62
65
67void blf_batch_draw();
68
73char *blf_dir_metrics_search(const char *filepath);
74
75int blf_font_init();
76void blf_font_exit();
77
81uint blf_get_char_index(FontBLF *font, uint charcode);
82
86bool blf_ensure_face(FontBLF *font);
87void blf_ensure_size(FontBLF *font);
88
91
92FontBLF *blf_font_new_from_filepath(const char *filepath);
93FontBLF *blf_font_new_from_mem(const char *mem_name, const unsigned char *mem, size_t mem_size);
94void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, size_t mem_size);
95
99bool blf_font_size(FontBLF *font, float size);
100
101void blf_font_draw(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
102void blf_font_draw__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
103
107void blf_draw_svg_icon(FontBLF *font,
108 uint icon_id,
109 float x,
110 float y,
111 float size,
112 const float color[4] = nullptr,
113 float outline_alpha = 1.0f,
114 bool multicolor = false,
115 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
116
118 FontBLF *font,
119 uint icon_id,
120 float size,
121 int *r_width,
122 int *r_height,
123 bool multicolor = false,
124 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
125
128 int max_pixel_width,
129 BLFWrapMode mode);
130
135 FontBLF *font, const char *str, size_t str_len, int cwidth, int tab_columns);
136void blf_font_draw_buffer(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
137void blf_font_draw_buffer__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
139 FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
141 FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
143 FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info);
145 FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info);
147 const char *str,
148 size_t str_len,
149 float *r_width,
150 float *r_height,
151 ResultBLF *r_info);
152float blf_font_width(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
153float blf_font_height(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
154float blf_font_fixed_width(FontBLF *font);
155int blf_font_glyph_advance(FontBLF *font, const char *str);
157int blf_font_width_max(FontBLF *font);
158int blf_font_descender(FontBLF *font);
159int blf_font_ascender(FontBLF *font);
160bool blf_font_bounds_max(FontBLF *font, rctf *r_bounds);
161
162char *blf_display_name(FontBLF *font);
163
165 FontBLF *font,
166 const char *str,
167 size_t str_len,
168 bool (*user_fn)(const char *str, size_t str_step_ofs, const rcti *bounds, void *user_data),
169 void *user_data);
170
172 const char *str,
173 size_t str_len,
174 int location_x);
175
177 const char *str,
178 size_t str_offset,
179 rcti *r_glyph_bounds);
180
182 FontBLF *font, const char *str, size_t str_len, size_t sel_start, size_t sel_length);
183
185 FontBLF *font, const char *str, size_t str_len, size_t str_offset, int cursor_width);
186
187void blf_font_free(FontBLF *font);
188
192
196GlyphBLF *blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel = 0);
197
198#ifdef BLF_SUBPIXEL_AA
200#endif
201
203 GlyphCacheBLF *gc,
204 uint icon_id,
205 bool color = false,
206 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
207
213 unsigned int unicode,
214 ListBase *nurbsbase,
215 const float scale,
216 bool use_fallback,
217 float *r_advance);
218
219void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y);
220
221#ifdef WIN32
222/* `blf_font_win32_compat.cc` */
223
224# ifdef FT_FREETYPE_H
225extern FT_Error FT_New_Face__win32_compat(FT_Library library,
226 const char *pathname,
227 FT_Long face_index,
228 FT_Face *aface);
229# endif
230#endif
BLFWrapMode
Definition BLF_enums.hh:20
unsigned int uint
FontBLF * global_font[BLF_MAX_FONT]
Definition blf.cc:44
size_t blf_str_offset_from_cursor_position(FontBLF *font, const char *str, size_t str_len, int location_x)
Definition blf_font.cc:1126
void blf_font_draw_buffer(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:769
void blf_str_offset_to_glyph_bounds(FontBLF *font, const char *str, size_t str_offset, rcti *r_glyph_bounds)
Definition blf_font.cc:1176
GlyphBLF * blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel=0)
int blf_font_ascender(FontBLF *font)
Definition blf_font.cc:1568
blender::Vector< blender::StringRef > blf_font_string_wrap(FontBLF *font, blender::StringRef str, int max_pixel_width, BLFWrapMode mode)
Definition blf_font.cc:1515
void blf_font_draw__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1432
void blf_draw_buffer__start(FontBLF *font)
Definition blf.cc:1024
bool blf_ensure_face(FontBLF *font)
Definition blf_font.cc:1890
void blf_glyph_cache_clear(FontBLF *font)
Definition blf_glyph.cc:162
void blf_ensure_size(FontBLF *font)
Definition blf_font.cc:2152
GlyphCacheBLF * blf_glyph_cache_acquire(FontBLF *font)
Definition blf_glyph.cc:133
int blf_font_draw_mono(FontBLF *font, const char *str, size_t str_len, int cwidth, int tab_columns)
Definition blf_font.cc:494
blender::Array< uchar > blf_svg_icon_bitmap(FontBLF *font, uint icon_id, float size, int *r_width, int *r_height, bool multicolor=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
Definition blf_font.cc:577
bool blf_font_bounds_max(FontBLF *font, rctf *r_bounds)
Definition blf_font.cc:1574
void blf_draw_svg_icon(FontBLF *font, uint icon_id, float x, float y, float size, const float color[4]=nullptr, float outline_alpha=1.0f, bool multicolor=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
Definition blf_font.cc:530
void blf_font_draw(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:487
float blf_font_width(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:998
bool blf_character_to_curves(FontBLF *font, unsigned int unicode, ListBase *nurbsbase, const float scale, bool use_fallback, float *r_advance)
void blf_font_free(FontBLF *font)
Definition blf_font.cc:2114
void blf_font_boundbox__wrap(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:1458
void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)
bool blf_font_size(FontBLF *font, float size)
Definition blf_font.cc:2174
float blf_font_fixed_width(FontBLF *font)
Definition blf_font.cc:1040
int blf_str_offset_to_cursor(FontBLF *font, const char *str, size_t str_len, size_t str_offset, int cursor_width)
Definition blf_font.cc:1189
FontBLF * blf_font_new_from_mem(const char *mem_name, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:2097
void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:2102
void blf_font_width_and_height(FontBLF *font, const char *str, size_t str_len, float *r_width, float *r_height, ResultBLF *r_info)
Definition blf_font.cc:969
void blf_font_boundbox(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:961
int blf_font_init()
Definition blf_font.cc:1601
int blf_font_width_max(FontBLF *font)
Definition blf_font.cc:1557
void blf_batch_draw()
Definition blf_font.cc:305
void blf_font_draw_buffer__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1486
void blf_batch_draw_begin(FontBLF *font)
Definition blf_font.cc:205
void blf_font_exit()
Definition blf_font.cc:1622
GlyphBLF * blf_glyph_ensure_subpixel(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int32_t pen_x)
int blf_font_glyph_advance(FontBLF *font, const char *str)
Definition blf_font.cc:1048
uint blf_get_char_index(FontBLF *font, uint charcode)
Definition blf_font.cc:148
char * blf_display_name(FontBLF *font)
Definition blf_font.cc:1587
size_t blf_font_width_to_rstrlen(FontBLF *font, const char *str, size_t str_len, int width, int *r_width)
Definition blf_font.cc:849
#define BLF_MAX_FONT
float blf_font_height(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1019
void blf_glyph_cache_release(FontBLF *font)
Definition blf_glyph.cc:146
char * blf_dir_metrics_search(const char *filepath)
Definition blf_dir.cc:26
int blf_font_descender(FontBLF *font)
Definition blf_font.cc:1562
void blf_draw_buffer__end()
Definition blf.cc:1043
void blf_font_boundbox_foreach_glyph(FontBLF *font, const char *str, size_t str_len, bool(*user_fn)(const char *str, size_t str_step_ofs, const rcti *bounds, void *user_data), void *user_data)
FontBLF * blf_font_new_from_filepath(const char *filepath)
Definition blf_font.cc:2092
int blf_font_height_max(FontBLF *font)
Definition blf_font.cc:1545
blender::Vector< blender::Bounds< int > > blf_str_selection_boxes(FontBLF *font, const char *str, size_t str_len, size_t sel_start, size_t sel_length)
Definition blf_font.cc:1234
size_t blf_font_width_to_strlen(FontBLF *font, const char *str, size_t str_len, int width, int *r_width)
Definition blf_font.cc:820
GlyphBLF * blf_glyph_ensure_icon(GlyphCacheBLF *gc, uint icon_id, bool color=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition btDbvt.cpp:299
#define str(s)