Blender V5.0
BLF_api.hh File Reference
#include "BLF_enums.hh"
#include "BLI_array.hh"
#include "BLI_bounds_types.hh"
#include "BLI_compiler_attrs.h"
#include "BLI_function_ref.hh"
#include "BLI_string_ref.hh"
#include "BLI_sys_types.h"
#include "BLI_vector.hh"

Go to the source code of this file.

Classes

struct  ResultBLF

Namespaces

namespace  blender
namespace  blender::ocio

Macros

#define BLF_DATAFILES_FONTS_DIR   "fonts"
#define BLF_DEFAULT_PROPORTIONAL_FONT   "Inter.woff2"
#define BLF_DEFAULT_MONOSPACED_FONT   "DejaVuSansMono.woff2"
#define BLF_VFONT_METRICS_SCALE_DEFAULT   float(1.0 / 1000.0)
#define BLF_VFONT_METRICS_EM_RATIO_DEFAULT   1.0f
#define BLF_VFONT_METRICS_ASCEND_RATIO_DEFAULT   0.8f
#define BLF_DRAW_STR_DUMMY_MAX   1024

Typedefs

using ColorSpace = blender::ocio::ColorSpace
using BLF_GlyphBoundsFn

Functions

int BLF_init ()
void BLF_exit ()
void BLF_reset_fonts ()
void BLF_cache_clear ()
void BLF_cache_flush_set_fn (void(*cache_flush_fn)())
int BLF_load (const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLF_load_mem (const char *name, const unsigned char *mem, int mem_size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
int bool BLF_is_loaded (const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLF_is_loaded_mem (const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLF_is_loaded_id (int fontid) ATTR_WARN_UNUSED_RESULT
int BLF_load_unique (const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLF_load_mem_unique (const char *name, const unsigned char *mem, int mem_size) ATTR_NONNULL(1
int void BLF_unload (const char *filepath) ATTR_NONNULL(1)
bool BLF_unload_id (int fontid)
void BLF_unload_all ()
void BLF_addref_id (int fontid)
char * BLF_display_name_from_file (const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLF_display_name_from_id (int fontid)
bool BLF_get_vfont_metrics (int fontid, float *ascend_ratio, float *em_ratio, float *scale)
bool BLF_character_to_curves (int fontid, unsigned int unicode, ListBase *nurbsbase, const float scale, bool use_fallback, float *r_advance)
bool BLF_has_glyph (int fontid, unsigned int unicode) ATTR_WARN_UNUSED_RESULT
void BLF_metrics_attach (int fontid, const unsigned char *mem, int mem_size) ATTR_NONNULL(2)
void BLF_aspect (int fontid, float x, float y, float z)
void BLF_position (int fontid, float x, float y, float z)
void BLF_size (int fontid, float size)
void BLF_character_weight (int fontid, int weight)
int BLF_default_weight (int fontid) ATTR_WARN_UNUSED_RESULT
bool BLF_has_variable_weight (int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_color4ubv (int fontid, const unsigned char rgba[4])
void BLF_color3ubv (int fontid, const unsigned char rgb[3])
void BLF_color3ubv_alpha (int fontid, const unsigned char rgb[3], unsigned char alpha)
void BLF_color4ub (int fontid, unsigned char r, unsigned char g, unsigned char b, unsigned char alpha)
void BLF_color3ub (int fontid, unsigned char r, unsigned char g, unsigned char b)
void BLF_color4f (int fontid, float r, float g, float b, float a)
void BLF_color4fv (int fontid, const float rgba[4])
void BLF_color3f (int fontid, float r, float g, float b)
void BLF_color3fv_alpha (int fontid, const float rgb[3], float alpha)
void BLF_batch_draw_begin ()
void BLF_batch_draw_flush ()
void BLF_batch_draw_end ()
void BLF_batch_discard ()
void BLF_draw (int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
int BLF_draw_mono (int fontid, const char *str, size_t str_len, int cwidth, int tab_columns) ATTR_NONNULL(2)
void BLF_draw_svg_icon (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)
blender::Array< ucharBLF_svg_icon_bitmap (uint icon_id, float size, int *r_width, int *r_height, bool multicolor=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
void BLF_boundbox_foreach_glyph (int fontid, const char *str, size_t str_len, BLF_GlyphBoundsFn user_fn, void *user_data) ATTR_NONNULL(2)
size_t BLF_str_offset_from_cursor_position (int fontid, const char *str, size_t str_len, int location_x) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
bool BLF_str_offset_to_glyph_bounds (int fontid, const char *str, size_t str_offset, rcti *r_glyph_bounds) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2
bool int BLF_str_offset_to_cursor (int fontid, const char *str, size_t str_len, size_t str_offset, int cursor_width)
blender::Vector< blender::Bounds< int > > BLF_str_selection_boxes (int fontid, const char *str, size_t str_len, size_t sel_start, size_t sel_length)
size_t BLF_width_to_strlen (int fontid, const char *str, size_t str_len, float width, float *r_width) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
size_t BLF_width_to_rstrlen (int fontid, const char *str, size_t str_len, float width, float *r_width) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void BLF_boundbox (int fontid, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
float BLF_width (int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
float BLF_height (int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
int BLF_height_max (int fontid) ATTR_WARN_UNUSED_RESULT
int BLF_width_max (int fontid) ATTR_WARN_UNUSED_RESULT
int BLF_descender (int fontid) ATTR_WARN_UNUSED_RESULT
int BLF_ascender (int fontid) ATTR_WARN_UNUSED_RESULT
bool BLF_bounds_max (int fontid, rctf *r_bounds) ATTR_NONNULL(2)
void BLF_width_and_height (int fontid, const char *str, size_t str_len, float *r_width, float *r_height) ATTR_NONNULL()
float BLF_fixed_width (int fontid) ATTR_WARN_UNUSED_RESULT
int BLF_glyph_advance (int fontid, const char *str)
void BLF_rotation (int fontid, float angle)
void BLF_clipping (int fontid, int xmin, int ymin, int xmax, int ymax)
void BLF_wordwrap (int fontid, int wrap_width, BLFWrapMode mode=BLFWrapMode::Minimal)
blender::Vector< blender::StringRefBLF_string_wrap (int fontid, blender::StringRef str, const int max_pixel_width, BLFWrapMode mode=BLFWrapMode::Minimal)
void BLF_enable (int fontid, FontFlags flag)
void BLF_disable (int fontid, FontFlags flag)
bool BLF_is_builtin (int fontid)
void BLF_shadow (int fontid, FontShadowType type, const float rgba[4]=nullptr)
void BLF_shadow_offset (int fontid, int x, int y)
void BLF_buffer (int fontid, float *fbuf, unsigned char *cbuf, int w, int h, const ColorSpace *colorspace)
BLFBufferStateBLF_buffer_state_push (int fontid)
void BLF_buffer_state_pop (BLFBufferState *buffer_state)
void BLF_buffer_state_free (BLFBufferState *buffer_state)
void BLF_buffer_col (int fontid, const float srgb_color[4]) ATTR_NONNULL(2)
void BLF_draw_buffer (int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
bool BLF_thumb_preview (const char *filepath, unsigned char *buf, int w, int h, int channels) ATTR_NONNULL()
void BLF_default_size (float size)
void BLF_default_set (int fontid)
int BLF_default ()
void BLF_draw_default (float x, float y, float z, const char *str, size_t str_len) ATTR_NONNULL()
int BLF_set_default ()
int BLF_load_default (bool unique)
int BLF_load_mono_default (bool unique)
void BLF_load_font_stack ()
void BLF_state_print (int fontid)

Variables

int blf_mono_font
int blf_mono_font_render

Macro Definition Documentation

◆ BLF_DATAFILES_FONTS_DIR

#define BLF_DATAFILES_FONTS_DIR   "fonts"

Name of sub-directory inside BLENDER_DATAFILES that contains font files.

Definition at line 22 of file BLF_api.hh.

Referenced by blf_load_datafiles_dir(), and blf_load_font_default().

◆ BLF_DEFAULT_MONOSPACED_FONT

#define BLF_DEFAULT_MONOSPACED_FONT   "DejaVuSansMono.woff2"

File name of the default fixed-pitch font.

Definition at line 28 of file BLF_api.hh.

Referenced by BLF_load_mono_default().

◆ BLF_DEFAULT_PROPORTIONAL_FONT

#define BLF_DEFAULT_PROPORTIONAL_FONT   "Inter.woff2"

File name of the default variable-width font.

Definition at line 25 of file BLF_api.hh.

Referenced by BLF_load_default().

◆ BLF_DRAW_STR_DUMMY_MAX

◆ BLF_VFONT_METRICS_ASCEND_RATIO_DEFAULT

#define BLF_VFONT_METRICS_ASCEND_RATIO_DEFAULT   0.8f

Definition at line 114 of file BLF_api.hh.

Referenced by BKE_vfontdata_metrics_get_defaults(), and BLF_get_vfont_metrics().

◆ BLF_VFONT_METRICS_EM_RATIO_DEFAULT

#define BLF_VFONT_METRICS_EM_RATIO_DEFAULT   1.0f

Definition at line 113 of file BLF_api.hh.

Referenced by BKE_vfontdata_metrics_get_defaults(), and BLF_get_vfont_metrics().

◆ BLF_VFONT_METRICS_SCALE_DEFAULT

#define BLF_VFONT_METRICS_SCALE_DEFAULT   float(1.0 / 1000.0)

Definition at line 112 of file BLF_api.hh.

Referenced by BKE_vfontdata_metrics_get_defaults(), and BLF_get_vfont_metrics().

Typedef Documentation

◆ BLF_GlyphBoundsFn

Initial value:
bool (*)(const char *str,
size_t str_step_ofs,
const rcti *bounds,
void *user_dataconst)
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition btDbvt.cpp:299
#define str(s)

Definition at line 207 of file BLF_api.hh.

◆ ColorSpace

Definition at line 38 of file BLF_api.hh.

Function Documentation

◆ BLF_addref_id()

void BLF_addref_id ( int fontid)

Increases font reference count.

Definition at line 311 of file blf.cc.

References blf_get(), g_blf_load_mutex, lock, and FontBLF::reference_count.

Referenced by blender::seq::strip_load_font_file(), and blender::seq::strip_load_font_mem().

◆ BLF_ascender()

◆ BLF_aspect()

void BLF_aspect ( int fontid,
float x,
float y,
float z )

◆ BLF_batch_discard()

void BLF_batch_discard ( )

◆ BLF_batch_draw_begin()

void BLF_batch_draw_begin ( )

Batch draw-calls together as long as the model-view matrix and the font remain unchanged.

Definition at line 534 of file blf.cc.

References BLI_assert, and g_batch.

Referenced by draw_horizontal_scale_indicators(), draw_vertical_scale_indicators(), file_draw_list(), UI_block_draw(), and view3d_draw_region_info().

◆ BLF_batch_draw_end()

◆ BLF_batch_draw_flush()

void BLF_batch_draw_flush ( )

Definition at line 540 of file blf.cc.

References blf_batch_draw(), and g_batch.

Referenced by ui_draw_but_WAVEFORM().

◆ BLF_boundbox()

void BLF_boundbox ( int fontid,
const char * str,
size_t str_len,
rcti * r_box,
ResultBLF * r_info = nullptr )

This function return the bounding box of the string and are not multiplied by the aspect.

Definition at line 772 of file blf.cc.

References blf_font_boundbox(), blf_font_boundbox__wrap(), blf_get(), BLF_RESULT_CHECK_INIT, BLF_WORD_WRAP, FontBLF::flags, and str.

Referenced by BLF_str_offset_to_glyph_bounds(), file_draw_string_multiline(), icon_draw_rect_input_text(), and metadata_box_height_get().

◆ BLF_boundbox_foreach_glyph()

void BLF_boundbox_foreach_glyph ( int fontid,
const char * str,
size_t str_len,
BLF_GlyphBoundsFn user_fn,
void * user_data )

Run user_fn for each character, with the bound-box that would be used for drawing.

Parameters
user_fnCallback that runs on each glyph, returning false early exits.
user_dataUser argument passed to user_fn.
Note
The font position, clipping, matrix and rotation are not applied.

Definition at line 664 of file blf.cc.

References blf_font_boundbox_foreach_glyph(), blf_get(), BLF_WORD_WRAP, BLI_assert, FontBLF::flags, and str.

◆ BLF_bounds_max()

bool BLF_bounds_max ( int fontid,
rctf * r_bounds )

Returns the minimum bounding box that can enclose all glyphs in the font at the current size. Expect negative values as Y=0 is the baseline, X=0 is normal advance position (glyphs can have negative bearing and positioning). There should be little use for this as it is best to measure the bounds of the actual text to be drawn. These values (unscaled) are set in the font file, not calculated from the actual glyphs at load time. This should be considered correct but it is possible, although very unlikely, for a defective font to contain incorrect values.

Definition at line 894 of file blf.cc.

References blf_font_bounds_max(), and blf_get().

Referenced by BLF_str_offset_to_glyph_bounds(), and blender::seq::calc_boundbox().

◆ BLF_buffer()

void BLF_buffer ( int fontid,
float * fbuf,
unsigned char * cbuf,
int w,
int h,
const ColorSpace * colorspace )

Make font be rasterized into a given memory image/buffer. The image is assumed to have 4 color channels (RGBA) per pixel. When done, call this function with null buffer pointers.

Definition at line 956 of file blf.cc.

References blf_get(), FontBLF::buf_info, FontBufInfoBLF::cbuf, FontBufInfoBLF::colorspace, FontBufInfoBLF::dims, FontBufInfoBLF::fbuf, and w().

Referenced by BKE_image_stamp_buf(), BLF_str_offset_to_glyph_bounds(), checker_board_text(), cursor_bitmap_from_text(), blender::seq::do_text_effect(), blender::seq::draw_text_outline(), IMB_font_preview(), and py_blf_bind_imbuf_enter().

◆ BLF_buffer_col()

void BLF_buffer_col ( int fontid,
const float srgb_color[4] )

◆ BLF_buffer_state_free()

void BLF_buffer_state_free ( BLFBufferState * buffer_state)

Free the state, only use in the rare case pop is not called (if the font itself is unloaded after pushing for example).

Definition at line 1010 of file blf.cc.

Referenced by BLF_buffer_state_pop(), BLF_str_offset_to_glyph_bounds(), and py_blf_bind_imbuf_dealloc().

◆ BLF_buffer_state_pop()

void BLF_buffer_state_pop ( BLFBufferState * buffer_state)

◆ BLF_buffer_state_push()

BLFBufferState * BLF_buffer_state_push ( int fontid)

Store the current buffer state. This state must be popped with BLF_buffer_state_pop.

Definition at line 980 of file blf.cc.

References blf_get(), BLFBufferState::buf_info, FontBLF::buf_info, BLFBufferState::font, and BLFBufferState::fontid.

Referenced by BLF_str_offset_to_glyph_bounds(), and py_blf_bind_imbuf_enter().

◆ BLF_cache_clear()

void BLF_cache_clear ( )

◆ BLF_cache_flush_set_fn()

void BLF_cache_flush_set_fn ( void(* cache_flush_fn )())

Optional cache flushing function, called before blf_batch_draw.

Definition at line 1633 of file blf_font.cc.

References blf_draw_cache_flush.

Referenced by uiStyleInit().

◆ BLF_character_to_curves()

bool BLF_character_to_curves ( int fontid,
unsigned int unicode,
ListBase * nurbsbase,
const float scale,
bool use_fallback,
float * r_advance )

Convert a character's outlines into curves.

Returns
success if the character was found and converted.

Definition at line 1146 of file blf.cc.

References blf_character_to_curves(), and blf_get().

Referenced by BKE_vfontdata_char_from_freetypefont().

◆ BLF_character_weight()

void BLF_character_weight ( int fontid,
int weight )

Weight class: 100 (Thin) - 400 (Normal) - 900 (Heavy).

Definition at line 347 of file blf.cc.

References blf_get(), and FontBLF::char_weight.

Referenced by fontstyle_set_ex(), and blender::tests::TEST().

◆ BLF_clipping()

◆ BLF_color3f()

void BLF_color3f ( int fontid,
float r,
float g,
float b )

Definition at line 528 of file blf.cc.

References b, and BLF_color4fv().

Referenced by blender::ed::object::voxel_size_edit_draw().

◆ BLF_color3fv_alpha()

void BLF_color3fv_alpha ( int fontid,
const float rgb[3],
float alpha )

Definition at line 520 of file blf.cc.

References BLF_color4fv(), and copy_v3_v3().

◆ BLF_color3ub()

void BLF_color3ub ( int fontid,
unsigned char r,
unsigned char g,
unsigned char b )

Definition at line 493 of file blf.cc.

References b, blf_get(), and FontBLF::color.

Referenced by ED_image_draw_info().

◆ BLF_color3ubv()

◆ BLF_color3ubv_alpha()

void BLF_color3ubv_alpha ( int fontid,
const unsigned char rgb[3],
unsigned char alpha )

Definition at line 464 of file blf.cc.

References blf_get(), and FontBLF::color.

Referenced by BLF_color3ubv().

◆ BLF_color4f()

void BLF_color4f ( int fontid,
float r,
float g,
float b,
float a )

Definition at line 514 of file blf.cc.

References b, and BLF_color4fv().

Referenced by playanim_toscreen_ex(), ui_draw_but_WAVEFORM(), and vectorscope_draw_target().

◆ BLF_color4fv()

◆ BLF_color4ub()

void BLF_color4ub ( int fontid,
unsigned char r,
unsigned char g,
unsigned char b,
unsigned char alpha )

Definition at line 481 of file blf.cc.

References b, blf_get(), and FontBLF::color.

◆ BLF_color4ubv()

◆ BLF_default()

◆ BLF_default_set()

void BLF_default_set ( int fontid)

◆ BLF_default_size()

void BLF_default_size ( float size)

◆ BLF_default_weight()

int BLF_default_weight ( int fontid)
Returns
the font's default design weight (100-900).

Definition at line 355 of file blf.cc.

References blf_get(), FontBLF::metrics, and FontMetrics::weight.

Referenced by blender::tests::TEST(), and UI_update_text_styles().

◆ BLF_descender()

◆ BLF_disable()

◆ BLF_display_name_from_file()

char * BLF_display_name_from_file ( const char * filepath)

Definition at line 1073 of file blf.cc.

References BLI_sprintfN(), and name.

Referenced by fileentry_uiname(), and blender::tests::TEST().

◆ BLF_display_name_from_id()

char * BLF_display_name_from_id ( int fontid)

Definition at line 1093 of file blf.cc.

References blf_display_name(), and blf_get().

Referenced by BKE_vfontdata_from_freetypefont(), and blender::tests::TEST().

◆ BLF_draw()

◆ BLF_draw_buffer()

void BLF_draw_buffer ( int fontid,
const char * str,
size_t str_len,
ResultBLF * r_info = nullptr )

Draw the string into the buffer, this function draw in both buffer, float and unsigned char BUT it's not necessary set both buffer, NULL is valid here.

Definition at line 1045 of file blf.cc.

References blf_draw_buffer__end(), blf_draw_buffer__start(), blf_font_draw_buffer(), blf_font_draw_buffer__wrap(), blf_get(), BLF_WORD_WRAP, FontBLF::buf_info, FontBufInfoBLF::cbuf, FontBufInfoBLF::fbuf, FontBLF::flags, and str.

Referenced by BKE_image_stamp_buf(), BLF_str_offset_to_glyph_bounds(), checker_board_text(), cursor_bitmap_from_text(), IMB_font_preview(), py_blf_draw_buffer(), and blender::seq::text_draw().

◆ BLF_draw_default()

◆ BLF_draw_mono()

int BLF_draw_mono ( int fontid,
const char * str,
size_t str_len,
int cwidth,
int tab_columns )

◆ BLF_draw_svg_icon()

void BLF_draw_svg_icon ( 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 )

◆ BLF_enable()

◆ BLF_exit()

◆ BLF_fixed_width()

float BLF_fixed_width ( int fontid)

For fixed width fonts only, returns the width of a character.

Definition at line 815 of file blf.cc.

References blf_font_fixed_width(), and blf_get().

Referenced by BLF_str_offset_to_glyph_bounds(), cursor_bitmap_from_text(), draw_text_main(), space_text_update_character_width(), blender::tests::TEST(), and textview_draw().

◆ BLF_get_vfont_metrics()

bool BLF_get_vfont_metrics ( int fontid,
float * ascend_ratio,
float * em_ratio,
float * scale )

Get the metrics needed for the initial sizing of text objects.

Definition at line 1103 of file blf.cc.

References blf_ensure_face(), blf_get(), BLF_VFONT_METRICS_ASCEND_RATIO_DEFAULT, BLF_VFONT_METRICS_EM_RATIO_DEFAULT, BLF_VFONT_METRICS_SCALE_DEFAULT, FontBLF::face, and float.

Referenced by BKE_vfontdata_from_freetypefont(), and blender::tests::TEST().

◆ BLF_glyph_advance()

int BLF_glyph_advance ( int fontid,
const char * str )

Returns offset for drawing next character in the string.

Definition at line 826 of file blf.cc.

References blf_font_glyph_advance(), blf_get(), and str.

Referenced by BLF_str_offset_to_glyph_bounds(), blender::seq::build_character_info(), and blender::tests::TEST().

◆ BLF_has_glyph()

bool BLF_has_glyph ( int fontid,
unsigned int unicode )

Check if font supports a particular glyph.

Definition at line 151 of file blf.cc.

References blf_get(), and blf_get_char_index().

Referenced by key_event_glyph_or_text(), and blender::tests::TEST().

◆ BLF_has_variable_weight()

bool BLF_has_variable_weight ( int fontid)
Returns
true if the font has a variable (multiple master) weight axis.

Definition at line 364 of file blf.cc.

References blf_get(), BLF_VARIATION_AXIS_WEIGHT, i, and FontBLF::variations.

Referenced by blender::tests::TEST(), and UI_update_text_styles().

◆ BLF_height()

◆ BLF_height_max()

◆ BLF_init()

◆ BLF_is_builtin()

bool BLF_is_builtin ( int fontid)

Is this font part of the default fonts in the fallback stack?

Definition at line 338 of file blf.cc.

References BLF_DEFAULT, blf_get(), and FontBLF::flags.

Referenced by BLF_str_offset_to_glyph_bounds(), blender::seq::build_character_info(), and blender::seq::text_draw().

◆ BLF_is_loaded()

int bool BLF_is_loaded ( const char * filepath)

Definition at line 160 of file blf.cc.

References blf_search_by_filepath().

Referenced by blf_load_datafiles_dir(), and blender::tests::TEST().

◆ BLF_is_loaded_id()

◆ BLF_is_loaded_mem()

bool BLF_is_loaded_mem ( const char * name)

Definition at line 165 of file blf.cc.

References blf_search_by_mem_name(), and name.

◆ BLF_load()

int BLF_load ( const char * filepath)

Loads a font, or returns an already loaded font and increments its reference count.

Note that while loading fonts is thread-safe, most of font usage via BLF state modification functions is not. If you need to use fonts from multiple threads, use unique font instances for threaded parts, see BLF_load_unique.

Definition at line 175 of file blf.cc.

References BLF_load_unique(), blf_search_by_filepath(), global_font, i, and FontBLF::reference_count.

Referenced by blf_load_datafiles_dir(), blf_load_font_default(), IMB_font_preview(), blender::tests::open_font(), py_blf_load(), blender::tests::TEST(), and uiStyleInit().

◆ BLF_load_default()

◆ BLF_load_font_stack()

void BLF_load_font_stack ( )

◆ BLF_load_mem()

int BLF_load_mem ( const char * name,
const unsigned char * mem,
int mem_size )

◆ BLF_load_mem_unique()

int BLF_load_mem_unique ( const char * name,
const unsigned char * mem,
int mem_size )

◆ BLF_load_mono_default()

◆ BLF_load_unique()

int BLF_load_unique ( const char * filepath)

Loads a font into a new font object.

Unlike BLF_load, it does not look whether a font with the same path or name is already loaded. Primary use case is when using BLF functions from a non-main thread.

Definition at line 188 of file blf.cc.

References blf_font_new_from_filepath(), blf_search_available(), BLI_exists(), g_blf_load_mutex, global_font, i, lock, printf, and FontBLF::reference_count.

Referenced by BLF_load(), blf_load_font_default(), blender::seq::strip_load_font_file(), and uiStyleInit().

◆ BLF_metrics_attach()

void BLF_metrics_attach ( int fontid,
const unsigned char * mem,
int mem_size )

Attach a file with metrics information from memory.

Definition at line 216 of file blf.cc.

References blf_font_attach_from_mem(), and blf_get().

◆ BLF_position()

◆ BLF_reset_fonts()

void BLF_reset_fonts ( )

Close any user-loaded fonts that are not used by the Interface. Call when loading new blend files so that the old fonts are not still taking resources.

Definition at line 83 of file blf.cc.

References BLF_DEFAULT, BLF_default(), blf_font_free(), BLF_MAX_FONT, blf_mono_font, blf_mono_font_render, ELEM, FontBLF::flags, global_font, and i.

Referenced by WM_file_read(), and wm_homefile_read_exec().

◆ BLF_rotation()

void BLF_rotation ( int fontid,
float angle )

By default, rotation and clipping are disable and have to be enable/disable using BLF_enable/disable.

Definition at line 903 of file blf.cc.

References angle(), FontBLF::angle, and blf_get().

Referenced by BLF_str_offset_to_glyph_bounds(), gizmo_ruler_draw(), knifetool_draw_angle(), knifetool_draw_visible_distances(), py_blf_rotation(), slider_draw(), UI_fontstyle_draw_rotated(), and UI_panel_category_draw_all().

◆ BLF_set_default()

◆ BLF_shadow()

◆ BLF_shadow_offset()

void BLF_shadow_offset ( int fontid,
int x,
int y )

Set the offset for shadow text, this is the current cursor position plus this offset, don't need call BLF_position before this function, the current position is calculate only on BLF_draw, so it's safe call this whenever you like.

Definition at line 946 of file blf.cc.

References blf_get(), FontBLF::shadow_x, FontBLF::shadow_y, x, and y.

Referenced by BLF_str_offset_to_glyph_bounds(), draw_vertical_scale_indicators(), drw_text_cache_draw_ex(), py_blf_shadow_offset(), blender::ed::vse::sequencer_preview_draw_overlays(), text_info_row(), UI_fontstyle_draw_ex(), UI_fontstyle_draw_multiline_clipped_ex(), UI_fontstyle_draw_rotated(), UI_panel_category_draw_all(), and view3d_draw_region_info().

◆ BLF_size()

void BLF_size ( int fontid,
float size )

Definition at line 443 of file blf.cc.

References blf_font_size(), blf_get(), and size().

Referenced by BKE_image_stamp_buf(), BKE_vfontdata_char_from_freetypefont(), BLF_draw_default(), BLF_set_default(), checker_board_text(), clip_draw_dopesheet_channels(), cursor_bitmap_from_text(), draw_marker_texts(), ED_image_draw_info(), ED_region_cache_draw_curfra_label(), ED_region_image_metadata_draw(), ED_region_info_draw_multiline(), blender::ed::spreadsheet::ColumnValues::fit_column_values_width_px(), blender::ed::spreadsheet::ColumnValues::fit_column_width_px(), fontstyle_set_ex(), blender::ed::space_node::frame_node_draw_label(), blender::ed::spreadsheet::get_index_column_width(), gizmo_axis_draw(), gizmo_ruler_draw(), icon_draw_rect_input_text(), IMB_font_preview(), knifetool_draw_angle(), knifetool_draw_visible_distances(), loggerwindow_new(), blender::nodes::node_fn_input_string_cc::node_gather_link_searches(), playanim_window_font_scale_from_dpi(), py_blf_size(), radial_control_paint_cursor(), screen_draw_area_drag_tip(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::seq::text_effect_font_init(), text_font_begin(), textview_font_begin(), ui_def_but_rna__menu(), UI_panel_category_draw_all(), UI_tooltip_color_field_add(), ui_tooltip_create_with_data(), ui_tooltip_region_draw_cb(), vicon_rgb_text_draw(), and blender::ed::object::voxel_size_edit_draw().

◆ BLF_state_print()

void BLF_state_print ( int fontid)

Definition at line 1161 of file blf.cc.

References BLF_ASPECT, blf_get(), BLF_ROTATION, printf, and UNPACK3.

◆ BLF_str_offset_from_cursor_position()

size_t BLF_str_offset_from_cursor_position ( int fontid,
const char * str,
size_t str_len,
int location_x )

Get the byte offset within a string, selected by mouse at a horizontal location.

Definition at line 680 of file blf.cc.

References blf_get(), blf_str_offset_from_cursor_position(), and str.

Referenced by ui_textedit_set_cursor_pos().

◆ BLF_str_offset_to_cursor()

bool int BLF_str_offset_to_cursor ( int fontid,
const char * str,
size_t str_len,
size_t str_offset,
int cursor_width )

Return left edge of text cursor (caret), given a character offset and cursor width.

Definition at line 705 of file blf.cc.

References blf_get(), blf_str_offset_to_cursor(), and str.

Referenced by BLF_str_offset_to_glyph_bounds(), and widget_draw_text().

◆ BLF_str_offset_to_glyph_bounds()

◆ BLF_str_selection_boxes()

blender::Vector< blender::Bounds< int > > BLF_str_selection_boxes ( int fontid,
const char * str,
size_t str_len,
size_t sel_start,
size_t sel_length )

Return bounds of selection boxes. There is just one normally but there could be more for multi-line and when containing text of differing directions.

Definition at line 718 of file blf.cc.

References blf_get(), blf_str_selection_boxes(), and str.

Referenced by BLF_str_offset_to_glyph_bounds(), and widget_draw_text().

◆ BLF_string_wrap()

◆ BLF_svg_icon_bitmap()

blender::Array< uchar > BLF_svg_icon_bitmap ( uint icon_id,
float size,
int * r_width,
int * r_height,
bool multicolor = false,
blender::FunctionRef< void(std::string &)> edit_source_cb = nullptr )

Definition at line 646 of file blf.cc.

References blf_svg_icon_bitmap(), global_font, size(), and UNUSED_VARS.

Referenced by UI_svg_icon_bitmap().

◆ BLF_thumb_preview()

bool BLF_thumb_preview ( const char * filepath,
unsigned char * buf,
int w,
int h,
int channels )

This function is used for generating thumbnail previews.

Note
called from a thread, so it bypasses the normal BLF_* API (which isn't thread-safe).

Definition at line 302 of file blf_thumbs.cc.

References blf_get_sample_text(), BLF_SAMPLE_LEN, float, ft_lib, ft_pix_to_int(), i, left, top, w(), x, and y.

Referenced by BLF_str_offset_to_glyph_bounds(), and IMB_thumb_load_font().

◆ BLF_unload()

int void BLF_unload ( const char * filepath)

Decreases font reference count, if it reaches zero the font is unloaded.

Definition at line 259 of file blf.cc.

References blf_font_free(), BLF_MAX_FONT, BLI_assert, BLI_path_cmp, FontBLF::filepath, g_blf_load_mutex, global_font, i, lock, and FontBLF::reference_count.

Referenced by py_blf_unload().

◆ BLF_unload_all()

void BLF_unload_all ( )

Definition at line 297 of file blf.cc.

References BLF_default_set(), blf_font_free(), BLF_MAX_FONT, blf_mono_font, blf_mono_font_render, global_font, and i.

Referenced by uiStyleInit().

◆ BLF_unload_id()

bool BLF_unload_id ( int fontid)

◆ BLF_width()

float BLF_width ( int fontid,
const char * str,
size_t str_len,
ResultBLF * r_info = nullptr )

The next both function return the width and height of the string, using the current font and both value are multiplied by the aspect of the font.

Definition at line 802 of file blf.cc.

References blf_font_width(), blf_get(), BLF_RESULT_CHECK_INIT, and str.

Referenced by blender::seq::apply_word_wrapping(), BLF_str_offset_to_glyph_bounds(), block_create_autorun_warning(), blender::ed::vse::draw_handle_transform_text(), draw_horizontal_scale_indicators(), ED_image_draw_info(), ED_info_draw_stats(), ED_region_image_overlay_info_text_draw(), ED_region_info_draw_multiline(), blender::ed::spreadsheet::estimate_max_column_width(), file_string_width(), blender::ed::spreadsheet::ColumnValues::fit_column_width_px(), blender::ed::space_node::frame_node_draw_label(), blender::ed::spreadsheet::get_index_column_width(), blender::ed::vse::label_rect_get(), metadata_draw_imbuf(), blender::nodes::node_fn_input_string_cc::node_gather_link_searches(), region_draw_status_text(), screen_draw_area_drag_tip(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), ui_alert_create(), ui_block_bounds_calc_text(), ui_def_but_rna__menu(), ui_draw_menu_item(), UI_fontstyle_draw_ex(), UI_fontstyle_draw_multiline_clipped_ex(), UI_fontstyle_draw_rotated(), UI_fontstyle_draw_simple_backdrop(), UI_fontstyle_string_width(), UI_fontstyle_string_width_with_block_aspect(), UI_panel_category_draw_all(), ui_text_clip_cursor(), UI_text_clip_middle_ex(), ui_text_clip_right_label(), ui_textedit_set_cursor_pos(), UI_tooltip_color_field_add(), ui_tooltip_create_with_data(), uiTemplateReportsBanner(), uiTemplateStatusInfo(), blender::ed::outliner::unused_message_popup_width_compute(), widget_draw_text(), and wm_block_dialog_create().

◆ BLF_width_and_height()

◆ BLF_width_max()

int BLF_width_max ( int fontid)

◆ BLF_width_to_rstrlen()

size_t BLF_width_to_rstrlen ( int fontid,
const char * str,
size_t str_len,
float width,
float * r_width )

◆ BLF_width_to_strlen()

size_t BLF_width_to_strlen ( int fontid,
const char * str,
size_t str_len,
float width,
float * r_width )

Get the string byte offset that fits within a given width.

Definition at line 728 of file blf.cc.

References FontBLF::aspect, BLF_ASPECT, blf_font_width_to_strlen(), blf_get(), FontBLF::flags, float, ret, and str.

Referenced by BLF_str_offset_to_glyph_bounds(), UI_text_clip_middle_ex(), ui_text_clip_right_ex(), and ui_text_clip_right_label().

◆ BLF_wordwrap()

Variable Documentation

◆ blf_mono_font

◆ blf_mono_font_render

int blf_mono_font_render
extern