Blender V4.3
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
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;
23
28#define BLF_MAX_FONT 64
29
33#define BLF_SUBPIXEL_POSITION
34
38#define BLF_SUBPIXEL_AA
39
41#define BLF_CACHE_MAX_FACES 4
43#define BLF_CACHE_MAX_SIZES 8
45#define BLF_CACHE_BYTES 400000
46
51#define BLF_ICON_OFFSET 0x100000L
52
59#define BLF_DPI 72
60
63
65void blf_batch_draw();
66
71char *blf_dir_metrics_search(const char *filepath);
72
73int blf_font_init();
74void blf_font_exit();
75
76bool blf_font_id_is_valid(int fontid);
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
104void blf_draw_svg_icon(FontBLF *font,
105 uint icon_id,
106 float x,
107 float y,
108 float size,
109 const float color[4] = nullptr,
110 float outline_alpha = 1.0f,
111 bool multicolor = false,
112 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
113
115 FontBLF *font,
116 uint icon_id,
117 float size,
118 int *r_width,
119 int *r_height,
120 bool multicolor = false,
121 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
122
125 int max_pixel_width);
126
131 FontBLF *font, const char *str, size_t str_len, int cwidth, int tab_columns);
132void blf_font_draw_buffer(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
133void blf_font_draw_buffer__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
135 FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
137 FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
139 FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info);
141 FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info);
143 const char *str,
144 size_t str_len,
145 float *r_width,
146 float *r_height,
147 ResultBLF *r_info);
148float blf_font_width(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
149float blf_font_height(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
150float blf_font_fixed_width(FontBLF *font);
152int blf_font_width_max(FontBLF *font);
153int blf_font_descender(FontBLF *font);
154int blf_font_ascender(FontBLF *font);
155
156char *blf_display_name(FontBLF *font);
157
159 FontBLF *font,
160 const char *str,
161 size_t str_len,
162 bool (*user_fn)(const char *str, size_t str_step_ofs, const rcti *bounds, void *user_data),
163 void *user_data);
164
166 const char *str,
167 size_t str_len,
168 int location_x);
169
171 const char *str,
172 size_t str_offset,
173 rcti *r_glyph_bounds);
174
176 FontBLF *font, const char *str, size_t str_len, size_t sel_start, size_t sel_length);
177
179 FontBLF *font, const char *str, size_t str_len, size_t str_offset, int cursor_width);
180
181void blf_font_free(FontBLF *font);
182
186
190GlyphBLF *blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel = 0);
191
192#ifdef BLF_SUBPIXEL_AA
194#endif
195
197 GlyphCacheBLF *gc,
198 uint icon_id,
199 bool color = false,
200 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
201
206 unsigned int unicode,
207 ListBase *nurbsbase,
208 const float scale);
209
210void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y);
211
212#ifdef WIN32
213/* `blf_font_win32_compat.cc` */
214
215# ifdef FT_FREETYPE_H
216extern FT_Error FT_New_Face__win32_compat(FT_Library library,
217 const char *pathname,
218 FT_Long face_index,
219 FT_Face *aface);
220# endif
221#endif
unsigned int uint
size_t blf_str_offset_from_cursor_position(FontBLF *font, const char *str, size_t str_len, int location_x)
Definition blf_font.cc:1105
void blf_font_draw_buffer(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:766
void blf_str_offset_to_glyph_bounds(FontBLF *font, const char *str, size_t str_offset, rcti *r_glyph_bounds)
Definition blf_font.cc:1155
GlyphBLF * blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel=0)
int blf_font_ascender(FontBLF *font)
Definition blf_font.cc:1469
void blf_font_draw__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1353
void blf_draw_buffer__start(FontBLF *font)
Definition blf.cc:946
bool blf_ensure_face(FontBLF *font)
Definition blf_font.cc:1781
blender::Vector< blender::StringRef > blf_font_string_wrap(FontBLF *font, blender::StringRef str, int max_pixel_width)
Definition blf_font.cc:1418
void blf_glyph_cache_clear(FontBLF *font)
Definition blf_glyph.cc:164
void blf_ensure_size(FontBLF *font)
Definition blf_font.cc:2046
GlyphCacheBLF * blf_glyph_cache_acquire(FontBLF *font)
Definition blf_glyph.cc:135
int blf_font_draw_mono(FontBLF *font, const char *str, size_t str_len, int cwidth, int tab_columns)
Definition blf_font.cc:492
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:574
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:528
void blf_font_draw(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:485
float blf_font_width(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:994
void blf_font_free(FontBLF *font)
Definition blf_font.cc:2007
void blf_font_boundbox__wrap(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:1373
bool blf_font_id_is_valid(int fontid)
Definition blf.cc:109
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:2068
float blf_font_fixed_width(FontBLF *font)
Definition blf_font.cc:1036
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:1168
FontBLF * blf_font_new_from_mem(const char *mem_name, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:1990
void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:1995
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:965
float blf_character_to_curves(FontBLF *font, unsigned int unicode, ListBase *nurbsbase, const float scale)
void blf_font_boundbox(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:957
int blf_font_init()
Definition blf_font.cc:1489
int blf_font_width_max(FontBLF *font)
Definition blf_font.cc:1458
void blf_batch_draw()
Definition blf_font.cc:325
void blf_font_draw_buffer__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1395
FontBLF * global_font[BLF_MAX_FONT]
Definition blf.cc:47
void blf_batch_draw_begin(FontBLF *font)
Definition blf_font.cc:225
void blf_font_exit()
Definition blf_font.cc:1511
GlyphBLF * blf_glyph_ensure_subpixel(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int32_t pen_x)
uint blf_get_char_index(FontBLF *font, uint charcode)
Definition blf_font.cc:149
char * blf_display_name(FontBLF *font)
Definition blf_font.cc:1475
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:846
#define BLF_MAX_FONT
float blf_font_height(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1015
void blf_glyph_cache_release(FontBLF *font)
Definition blf_glyph.cc:148
char * blf_dir_metrics_search(const char *filepath)
Definition blf_dir.cc:30
int blf_font_descender(FontBLF *font)
Definition blf_font.cc:1463
void blf_draw_buffer__end()
Definition blf.cc:960
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:1985
int blf_font_height_max(FontBLF *font)
Definition blf_font.cc:1446
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:1213
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:817
GlyphBLF * blf_glyph_ensure_icon(GlyphCacheBLF *gc, uint icon_id, bool color=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition btDbvt.cpp:299
#define str(s)
signed int int32_t
Definition stdint.h:77
unsigned char uint8_t
Definition stdint.h:78