Blender V4.5
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;
23enum class BLFWrapMode;
24
29#define BLF_MAX_FONT 64
30
34#define BLF_SUBPIXEL_POSITION
35
39#define BLF_SUBPIXEL_AA
40
42#define BLF_CACHE_MAX_FACES 4
44#define BLF_CACHE_MAX_SIZES 8
46#define BLF_CACHE_BYTES 400000
47
52#define BLF_ICON_OFFSET 0x100000L
53
60#define BLF_DPI 72
61
64
66void blf_batch_draw();
67
72char *blf_dir_metrics_search(const char *filepath);
73
74int blf_font_init();
75void blf_font_exit();
76
80uint blf_get_char_index(FontBLF *font, uint charcode);
81
85bool blf_ensure_face(FontBLF *font);
86void blf_ensure_size(FontBLF *font);
87
90
91FontBLF *blf_font_new_from_filepath(const char *filepath);
92FontBLF *blf_font_new_from_mem(const char *mem_name, const unsigned char *mem, size_t mem_size);
93void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, size_t mem_size);
94
98bool blf_font_size(FontBLF *font, float size);
99
100void blf_font_draw(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
101void blf_font_draw__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info);
102
103void blf_draw_svg_icon(FontBLF *font,
104 uint icon_id,
105 float x,
106 float y,
107 float size,
108 const float color[4] = nullptr,
109 float outline_alpha = 1.0f,
110 bool multicolor = false,
111 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
112
114 FontBLF *font,
115 uint icon_id,
116 float size,
117 int *r_width,
118 int *r_height,
119 bool multicolor = false,
120 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
121
124 int max_pixel_width,
125 BLFWrapMode mode);
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);
151int blf_font_glyph_advance(FontBLF *font, const char *str);
153int blf_font_width_max(FontBLF *font);
154int blf_font_descender(FontBLF *font);
155int blf_font_ascender(FontBLF *font);
156
157char *blf_display_name(FontBLF *font);
158
160 FontBLF *font,
161 const char *str,
162 size_t str_len,
163 bool (*user_fn)(const char *str, size_t str_step_ofs, const rcti *bounds, void *user_data),
164 void *user_data);
165
167 const char *str,
168 size_t str_len,
169 int location_x);
170
172 const char *str,
173 size_t str_offset,
174 rcti *r_glyph_bounds);
175
177 FontBLF *font, const char *str, size_t str_len, size_t sel_start, size_t sel_length);
178
180 FontBLF *font, const char *str, size_t str_len, size_t str_offset, int cursor_width);
181
182void blf_font_free(FontBLF *font);
183
187
191GlyphBLF *blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel = 0);
192
193#ifdef BLF_SUBPIXEL_AA
195#endif
196
198 GlyphCacheBLF *gc,
199 uint icon_id,
200 bool color = false,
201 blender::FunctionRef<void(std::string &)> edit_source_cb = nullptr);
202
207 unsigned int unicode,
208 ListBase *nurbsbase,
209 const float scale,
210 bool use_fallback);
211
212void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y);
213
214#ifdef WIN32
215/* `blf_font_win32_compat.cc` */
216
217# ifdef FT_FREETYPE_H
218extern FT_Error FT_New_Face__win32_compat(FT_Library library,
219 const char *pathname,
220 FT_Long face_index,
221 FT_Face *aface);
222# endif
223#endif
BLFWrapMode
Definition BLF_api.hh:44
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:1141
void blf_font_draw_buffer(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:784
void blf_str_offset_to_glyph_bounds(FontBLF *font, const char *str, size_t str_offset, rcti *r_glyph_bounds)
Definition blf_font.cc:1191
GlyphBLF * blf_glyph_ensure(FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel=0)
int blf_font_ascender(FontBLF *font)
Definition blf_font.cc:1583
blender::Vector< blender::StringRef > blf_font_string_wrap(FontBLF *font, blender::StringRef str, int max_pixel_width, BLFWrapMode mode)
Definition blf_font.cc:1530
void blf_font_draw__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1447
void blf_draw_buffer__start(FontBLF *font)
Definition blf.cc:1019
bool blf_ensure_face(FontBLF *font)
Definition blf_font.cc:1892
void blf_glyph_cache_clear(FontBLF *font)
Definition blf_glyph.cc:162
void blf_ensure_size(FontBLF *font)
Definition blf_font.cc:2155
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:510
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:592
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:546
void blf_font_draw(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:503
float blf_font_width(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1013
void blf_font_free(FontBLF *font)
Definition blf_font.cc:2117
void blf_font_boundbox__wrap(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:1473
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:2177
float blf_font_fixed_width(FontBLF *font)
Definition blf_font.cc:1055
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:1204
FontBLF * blf_font_new_from_mem(const char *mem_name, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:2100
void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, size_t mem_size)
Definition blf_font.cc:2105
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:984
void blf_font_boundbox(FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
Definition blf_font.cc:976
int blf_font_init()
Definition blf_font.cc:1603
int blf_font_width_max(FontBLF *font)
Definition blf_font.cc:1572
void blf_batch_draw()
Definition blf_font.cc:324
void blf_font_draw_buffer__wrap(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1501
void blf_batch_draw_begin(FontBLF *font)
Definition blf_font.cc:224
void blf_font_exit()
Definition blf_font.cc:1624
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:1063
uint blf_get_char_index(FontBLF *font, uint charcode)
Definition blf_font.cc:148
char * blf_display_name(FontBLF *font)
Definition blf_font.cc:1589
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:864
#define BLF_MAX_FONT
float blf_font_height(FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
Definition blf_font.cc:1034
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
float blf_character_to_curves(FontBLF *font, unsigned int unicode, ListBase *nurbsbase, const float scale, bool use_fallback)
int blf_font_descender(FontBLF *font)
Definition blf_font.cc:1577
void blf_draw_buffer__end()
Definition blf.cc:1033
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:2095
int blf_font_height_max(FontBLF *font)
Definition blf_font.cc:1560
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:1249
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:835
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)