Blender V5.0
blf_internal.hh File Reference
#include "BLI_array.hh"
#include "BLI_bounds_types.hh"
#include "BLI_function_ref.hh"
#include "BLI_string_ref.hh"
#include "BLI_vector.hh"

Go to the source code of this file.

Macros

#define BLF_MAX_FONT   64
#define BLF_SUBPIXEL_POSITION
#define BLF_SUBPIXEL_AA
#define BLF_CACHE_MAX_FACES   8
#define BLF_CACHE_MAX_SIZES   16
#define BLF_CACHE_BYTES   0x100000
#define BLF_ICON_OFFSET   0x100000L
#define BLF_DPI   72

Functions

void blf_batch_draw_begin (FontBLF *font)
void blf_batch_draw ()
char * blf_dir_metrics_search (const char *filepath)
int blf_font_init ()
void blf_font_exit ()
uint blf_get_char_index (FontBLF *font, uint charcode)
bool blf_ensure_face (FontBLF *font)
void blf_ensure_size (FontBLF *font)
void blf_draw_buffer__start (FontBLF *font)
void blf_draw_buffer__end ()
FontBLFblf_font_new_from_filepath (const char *filepath)
FontBLFblf_font_new_from_mem (const char *mem_name, const unsigned char *mem, size_t mem_size)
void blf_font_attach_from_mem (FontBLF *font, const unsigned char *mem, size_t mem_size)
bool blf_font_size (FontBLF *font, float size)
void blf_font_draw (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
void blf_font_draw__wrap (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
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)
blender::Array< ucharblf_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)
blender::Vector< blender::StringRefblf_font_string_wrap (FontBLF *font, blender::StringRef str, int max_pixel_width, BLFWrapMode mode)
int blf_font_draw_mono (FontBLF *font, const char *str, size_t str_len, int cwidth, int tab_columns)
void blf_font_draw_buffer (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
void blf_font_draw_buffer__wrap (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
size_t blf_font_width_to_strlen (FontBLF *font, const char *str, size_t str_len, int width, int *r_width)
size_t blf_font_width_to_rstrlen (FontBLF *font, const char *str, size_t str_len, int width, int *r_width)
void blf_font_boundbox (FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
void blf_font_boundbox__wrap (FontBLF *font, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info)
void blf_font_width_and_height (FontBLF *font, const char *str, size_t str_len, float *r_width, float *r_height, ResultBLF *r_info)
float blf_font_width (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
float blf_font_height (FontBLF *font, const char *str, size_t str_len, ResultBLF *r_info)
float blf_font_fixed_width (FontBLF *font)
int blf_font_glyph_advance (FontBLF *font, const char *str)
int blf_font_height_max (FontBLF *font)
int blf_font_width_max (FontBLF *font)
int blf_font_descender (FontBLF *font)
int blf_font_ascender (FontBLF *font)
bool blf_font_bounds_max (FontBLF *font, rctf *r_bounds)
char * blf_display_name (FontBLF *font)
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)
size_t blf_str_offset_from_cursor_position (FontBLF *font, const char *str, size_t str_len, int location_x)
void blf_str_offset_to_glyph_bounds (FontBLF *font, const char *str, size_t str_offset, rcti *r_glyph_bounds)
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)
int blf_str_offset_to_cursor (FontBLF *font, const char *str, size_t str_len, size_t str_offset, int cursor_width)
void blf_font_free (FontBLF *font)
GlyphCacheBLFblf_glyph_cache_acquire (FontBLF *font)
void blf_glyph_cache_release (FontBLF *font)
void blf_glyph_cache_clear (FontBLF *font)
GlyphBLFblf_glyph_ensure (FontBLF *font, GlyphCacheBLF *gc, uint charcode, uint8_t subpixel=0)
GlyphBLFblf_glyph_ensure_subpixel (FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int32_t pen_x)
GlyphBLFblf_glyph_ensure_icon (GlyphCacheBLF *gc, uint icon_id, bool color=false, blender::FunctionRef< void(std::string &)> edit_source_cb=nullptr)
bool blf_character_to_curves (FontBLF *font, unsigned int unicode, ListBase *nurbsbase, const float scale, bool use_fallback, float *r_advance)
void blf_glyph_draw (FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)

Variables

FontBLFglobal_font [BLF_MAX_FONT]

Macro Definition Documentation

◆ BLF_CACHE_BYTES

#define BLF_CACHE_BYTES   0x100000

Maximum number of bytes to use for cached data nodes. 0 is default of 200,000.

Definition at line 47 of file blf_internal.hh.

Referenced by blf_font_init().

◆ BLF_CACHE_MAX_FACES

#define BLF_CACHE_MAX_FACES   8

Maximum number of opened FT_Face objects managed by cache. 0 is default of 2.

Definition at line 43 of file blf_internal.hh.

Referenced by blf_font_init().

◆ BLF_CACHE_MAX_SIZES

#define BLF_CACHE_MAX_SIZES   16

Maximum number of opened FT_Size objects managed by cache. 0 is default of 4

Definition at line 45 of file blf_internal.hh.

Referenced by blf_font_init().

◆ BLF_DPI

#define BLF_DPI   72

We assume square pixels at a fixed DPI of 72, scaling only the size. Therefore font size = points = pixels, i.e. a size of 20 will result in a 20-pixel EM square. Although we could use the actual monitor DPI instead, we would then have to scale the size to cancel that out. Other libraries like Skia use this same fixed value.

Definition at line 61 of file blf_internal.hh.

Referenced by blf_ensure_size(), and blf_font_size().

◆ BLF_ICON_OFFSET

#define BLF_ICON_OFFSET   0x100000L

Offset from icon id to Unicode Supplementary Private Use Area-B, added with Unicode 2.0. 65,536 code-points at U+100000..U+10FFFF.

Definition at line 53 of file blf_internal.hh.

Referenced by blf_glyph_cache_add_svg(), and blf_glyph_ensure_icon().

◆ BLF_MAX_FONT

#define BLF_MAX_FONT   64

Max number of FontBLFs in memory. Take care that every font has a glyph cache per size/dpi, so we don't need load the same font with different size, just load one and call BLF_size.

Definition at line 30 of file blf_internal.hh.

Referenced by BLF_cache_clear(), BLF_exit(), blf_get(), blf_glyph_index_from_charcode(), BLF_init(), BLF_reset_fonts(), blf_search_available(), blf_search_by_filepath(), blf_search_by_mem_name(), BLF_unload(), and BLF_unload_all().

◆ BLF_SUBPIXEL_AA

#define BLF_SUBPIXEL_AA

If enabled, glyphs are rendered at multiple horizontal subpixel positions.

Definition at line 40 of file blf_internal.hh.

◆ BLF_SUBPIXEL_POSITION

#define BLF_SUBPIXEL_POSITION

If enabled, glyphs positions are on 64ths of a pixel. Disabled, they are on whole pixels.

Definition at line 35 of file blf_internal.hh.

Function Documentation

◆ blf_batch_draw()

◆ blf_batch_draw_begin()

◆ blf_character_to_curves()

bool blf_character_to_curves ( FontBLF * font,
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 1887 of file blf_glyph.cc.

References blf_glyph_to_curves(), blf_glyphslot_ensure_outline(), and float.

Referenced by BLF_character_to_curves().

◆ blf_dir_metrics_search()

char * blf_dir_metrics_search ( const char * filepath)

Some font have additional file with metrics information, in general, the extension of the file is: .afm or .pfm

Definition at line 26 of file blf_dir.cc.

References BLI_exists(), BLI_strdup(), BLI_strnlen(), and MEM_freeN().

Referenced by blf_ensure_face().

◆ blf_display_name()

char * blf_display_name ( FontBLF * font)

Definition at line 1587 of file blf_font.cc.

References blf_ensure_face(), BLI_sprintfN(), and FontBLF::face.

Referenced by BLF_display_name_from_id().

◆ blf_draw_buffer__end()

void blf_draw_buffer__end ( )

Definition at line 1043 of file blf.cc.

Referenced by BLF_draw_buffer().

◆ blf_draw_buffer__start()

◆ blf_draw_svg_icon()

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 )

◆ blf_ensure_face()

◆ blf_ensure_size()

◆ blf_font_ascender()

int blf_font_ascender ( FontBLF * font)

Definition at line 1568 of file blf_font.cc.

References blf_ensure_size(), ft_pix_to_int(), and FontBLF::ft_size.

Referenced by BLF_ascender().

◆ blf_font_attach_from_mem()

void blf_font_attach_from_mem ( FontBLF * font,
const unsigned char * mem,
size_t mem_size )

Definition at line 2102 of file blf_font.cc.

References blf_ensure_face(), and FontBLF::face.

Referenced by BLF_metrics_attach().

◆ blf_font_boundbox()

void blf_font_boundbox ( FontBLF * font,
const char * str,
size_t str_len,
rcti * r_box,
ResultBLF * r_info )

◆ blf_font_boundbox__wrap()

void blf_font_boundbox__wrap ( FontBLF * font,
const char * str,
size_t str_len,
rcti * r_box,
ResultBLF * r_info )

◆ blf_font_boundbox_foreach_glyph()

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 )

References bounds(), str, x, and y.

◆ blf_font_bounds_max()

bool blf_font_bounds_max ( FontBLF * font,
rctf * r_bounds )

◆ blf_font_descender()

int blf_font_descender ( FontBLF * font)

Definition at line 1562 of file blf_font.cc.

References blf_ensure_size(), ft_pix_to_int(), and FontBLF::ft_size.

Referenced by BLF_descender().

◆ blf_font_draw()

void blf_font_draw ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

Definition at line 487 of file blf_font.cc.

References blf_font_draw_ex(), blf_glyph_cache_acquire(), blf_glyph_cache_release(), and str.

Referenced by BLF_draw().

◆ blf_font_draw__wrap()

void blf_font_draw__wrap ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

◆ blf_font_draw_buffer()

void blf_font_draw_buffer ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

◆ blf_font_draw_buffer__wrap()

void blf_font_draw_buffer__wrap ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

◆ blf_font_draw_mono()

int blf_font_draw_mono ( FontBLF * font,
const char * str,
size_t str_len,
int cwidth,
int tab_columns )

◆ blf_font_exit()

void blf_font_exit ( )

Definition at line 1622 of file blf_font.cc.

References blf_batch_draw_exit(), ft_lib, and ftc_manager.

Referenced by BLF_exit().

◆ blf_font_fixed_width()

float blf_font_fixed_width ( FontBLF * font)

◆ blf_font_free()

◆ blf_font_glyph_advance()

int blf_font_glyph_advance ( FontBLF * font,
const char * str )

◆ blf_font_height()

float blf_font_height ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

◆ blf_font_height_max()

int blf_font_height_max ( FontBLF * font)

Definition at line 1545 of file blf_font.cc.

References blf_font_height_max_ft_pix(), and ft_pix_to_int().

Referenced by BLF_height_max().

◆ blf_font_init()

int blf_font_init ( )

◆ blf_font_new_from_filepath()

FontBLF * blf_font_new_from_filepath ( const char * filepath)

Definition at line 2092 of file blf_font.cc.

References blf_font_new_impl().

Referenced by BLF_load_unique().

◆ blf_font_new_from_mem()

FontBLF * blf_font_new_from_mem ( const char * mem_name,
const unsigned char * mem,
size_t mem_size )

Definition at line 2097 of file blf_font.cc.

References blf_font_new_impl().

Referenced by BLF_load_mem_unique().

◆ blf_font_size()

bool blf_font_size ( FontBLF * font,
float size )

Change font's output size. Returns true if successful in changing the size.

Definition at line 2174 of file blf_font.cc.

References BLF_CACHED, BLF_DPI, blf_ensure_face(), blf_size_finalizer(), FontBLF::face, FontBLF::flags, float, FontBLF::ft_size, ftc_manager, round_fl_to_uint(), FontBLF::size, and size().

Referenced by blf_draw_svg_icon(), blf_glyph_render(), BLF_size(), and blf_svg_icon_bitmap().

◆ blf_font_string_wrap()

blender::Vector< blender::StringRef > blf_font_string_wrap ( FontBLF * font,
blender::StringRef str,
int max_pixel_width,
BLFWrapMode mode )

Definition at line 1515 of file blf_font.cc.

References blf_font_string_wrap_cb(), blf_font_wrap_apply(), and str.

Referenced by BLF_string_wrap().

◆ blf_font_width()

float blf_font_width ( FontBLF * font,
const char * str,
size_t str_len,
ResultBLF * r_info )

◆ blf_font_width_and_height()

void blf_font_width_and_height ( FontBLF * font,
const char * str,
size_t str_len,
float * r_width,
float * r_height,
ResultBLF * r_info )

◆ blf_font_width_max()

int blf_font_width_max ( FontBLF * font)

Definition at line 1557 of file blf_font.cc.

References blf_font_width_max_ft_pix(), and ft_pix_to_int().

Referenced by BLF_width_max().

◆ blf_font_width_to_rstrlen()

size_t blf_font_width_to_rstrlen ( FontBLF * font,
const char * str,
size_t str_len,
int width,
int * r_width )

◆ blf_font_width_to_strlen()

size_t blf_font_width_to_strlen ( FontBLF * font,
const char * str,
size_t str_len,
int width,
int * r_width )

◆ blf_get_char_index()

uint blf_get_char_index ( FontBLF * font,
uint charcode )

◆ blf_glyph_cache_acquire()

◆ blf_glyph_cache_clear()

void blf_glyph_cache_clear ( FontBLF * font)

◆ blf_glyph_cache_release()

◆ blf_glyph_draw()

◆ blf_glyph_ensure()

GlyphBLF * blf_glyph_ensure ( FontBLF * font,
GlyphCacheBLF * gc,
uint charcode,
uint8_t subpixel = 0 )

◆ blf_glyph_ensure_icon()

GlyphBLF * blf_glyph_ensure_icon ( GlyphCacheBLF * gc,
uint icon_id,
bool color = false,
blender::FunctionRef< void(std::string &)> edit_source_cb = nullptr )

◆ blf_glyph_ensure_subpixel()

◆ blf_str_offset_from_cursor_position()

size_t blf_str_offset_from_cursor_position ( FontBLF * font,
const char * str,
size_t str_len,
int location_x )

◆ blf_str_offset_to_cursor()

int blf_str_offset_to_cursor ( FontBLF * font,
const char * str,
size_t str_len,
size_t str_offset,
int cursor_width )

◆ blf_str_offset_to_glyph_bounds()

void blf_str_offset_to_glyph_bounds ( FontBLF * font,
const char * str,
size_t str_offset,
rcti * r_glyph_bounds )

◆ blf_str_selection_boxes()

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 )

◆ blf_svg_icon_bitmap()

Variable Documentation

◆ global_font