Blender V5.0
BKE_vfont.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
7#include "BLI_sys_types.h"
8
12
13struct CharInfo;
14struct Curve;
15struct ListBase;
16struct Main;
17struct Object;
18struct VFont;
19
30
32 float x, y, w, h;
33 float rotate;
34};
35
39struct EditFont {
41 char32_t *textbuf;
44
47
52
53 /* Positional vars relative to the `textbuf` (not UTF8 bytes)
54 * a copy of these is kept in Curve, but use these in edit-mode. */
55
57 int len;
59 int pos;
62
69
75};
76
89
91#define FO_CURS_IS_MOTION(mode) \
92 (ELEM(mode, FO_CURSUP, FO_CURSDOWN, FO_PAGEUP, FO_PAGEDOWN, FO_LINE_BEGIN, FO_LINE_END))
93
94/* -------------------------------------------------------------------- */
99
100bool BKE_vfont_is_builtin(const VFont *vfont);
101void BKE_vfont_builtin_register(const void *mem, int size);
107
108void BKE_vfont_data_ensure(VFont *vfont);
109void BKE_vfont_data_free(VFont *vfont);
110
111VFont *BKE_vfont_load(Main *bmain, const char *filepath);
112VFont *BKE_vfont_load_exists_ex(Main *bmain, const char *filepath, bool *r_exists);
113VFont *BKE_vfont_load_exists(Main *bmain, const char *filepath);
114
115int BKE_vfont_select_get(const Curve *cu, int *r_start, int *r_end);
117
119void BKE_vfont_clipboard_set(const char32_t *text_buf, const CharInfo *info_buf, size_t len);
120void BKE_vfont_clipboard_get(char32_t **r_text_buf,
121 CharInfo **r_info_buf,
122 size_t *r_len_utf8,
123 size_t *r_len_utf32);
124
126
127/* -------------------------------------------------------------------- */
132
133int BKE_vfont_cursor_to_text_index(Object *ob, const blender::float2 &cursor_location);
134
139void BKE_vfont_char_build(const Curve &cu,
140 ListBase *nubase,
141 unsigned int charcode,
142 const CharInfo *info,
143 bool is_smallcaps,
144 const blender::float2 &offset,
145 float rotate,
146 int charidx,
147 float fsize);
148
150 const Curve &cu,
151 eEditFontMode mode,
152 ListBase *r_nubase,
153 const char32_t **r_text,
154 int *r_text_len,
155 bool *r_text_free,
156 CharTrans **r_chartransdata,
157 float *r_font_size_eval);
158bool BKE_vfont_to_curve_nubase(Object *ob, eEditFontMode mode, ListBase *r_nubase);
159
void BKE_vfont_data_ensure(VFont *vfont)
Definition vfont.cc:202
int BKE_vfont_select_get(const Curve *cu, int *r_start, int *r_end)
Definition vfont.cc:408
eEditFontMode
Definition BKE_vfont.hh:77
@ FO_PAGEUP
Definition BKE_vfont.hh:83
@ FO_EDIT
Definition BKE_vfont.hh:78
@ FO_CURSUP
Definition BKE_vfont.hh:80
@ FO_LINE_END
Definition BKE_vfont.hh:86
@ FO_LINE_BEGIN
Definition BKE_vfont.hh:85
@ FO_SELCHANGE
Definition BKE_vfont.hh:87
@ FO_CURS
Definition BKE_vfont.hh:79
@ FO_CURSDOWN
Definition BKE_vfont.hh:81
@ FO_PAGEDOWN
Definition BKE_vfont.hh:84
@ FO_DUPLI
Definition BKE_vfont.hh:82
void BKE_vfont_data_free(VFont *vfont)
Definition vfont.cc:242
void BKE_vfont_clipboard_set(const char32_t *text_buf, const CharInfo *info_buf, size_t len)
Definition vfont.cc:479
VFont * BKE_vfont_load(Main *bmain, const char *filepath)
Definition vfont.cc:303
bool BKE_vfont_is_builtin(const VFont *vfont)
Definition vfont.cc:277
bool BKE_vfont_to_curve_nubase(Object *ob, eEditFontMode mode, ListBase *r_nubase)
void BKE_vfont_select_clamp(Curve *cu)
Definition vfont.cc:447
VFont * BKE_vfont_load_exists_ex(Main *bmain, const char *filepath, bool *r_exists)
Definition vfont.cc:354
VFont * BKE_vfont_load_exists(Main *bmain, const char *filepath)
Definition vfont.cc:381
void BKE_vfont_builtin_register(const void *mem, int size)
Definition vfont.cc:282
void BKE_vfont_clipboard_get(char32_t **r_text_buf, CharInfo **r_info_buf, size_t *r_len_utf8, size_t *r_len_utf32)
Definition vfont.cc:509
VFont * BKE_vfont_builtin_ensure()
Definition vfont.cc:386
void BKE_vfont_char_build(const Curve &cu, ListBase *nubase, unsigned int charcode, const CharInfo *info, bool is_smallcaps, const blender::float2 &offset, float rotate, int charidx, float fsize)
bool BKE_vfont_to_curve_ex(Object *ob, const Curve &cu, eEditFontMode mode, ListBase *r_nubase, const char32_t **r_text, int *r_text_len, bool *r_text_free, CharTrans **r_chartransdata, float *r_font_size_eval)
bool BKE_vfont_to_curve(Object *ob, eEditFontMode mode)
int BKE_vfont_cursor_to_text_index(Object *ob, const blender::float2 &cursor_location)
void BKE_vfont_clipboard_free()
Definition vfont.cc:471
unsigned int uint
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
VecBase< float, 2 > float2
static void rotate(float new_co[3], float a, const float ax[3], const float co[3])
blender::float2 offset
Definition BKE_vfont.hh:21
short linenr
Definition BKE_vfont.hh:23
uint do_break
Definition BKE_vfont.hh:25
uint is_smallcaps
Definition BKE_vfont.hh:28
float rotate
Definition BKE_vfont.hh:22
short charnr
Definition BKE_vfont.hh:23
uint is_wrap
Definition BKE_vfont.hh:27
uint is_overflow
Definition BKE_vfont.hh:26
float font_size_eval
Definition BKE_vfont.hh:46
CharInfo * textbufinfo
Definition BKE_vfont.hh:43
int selend
Definition BKE_vfont.hh:61
EditFontSelBox * selboxes
Definition BKE_vfont.hh:50
int select_char_info_flag
Definition BKE_vfont.hh:68
int selboxes_len
Definition BKE_vfont.hh:51
blender::float2 textcurs[4]
Definition BKE_vfont.hh:49
char32_t * textbuf
Definition BKE_vfont.hh:41
int selstart
Definition BKE_vfont.hh:61
char needs_flush_to_id
Definition BKE_vfont.hh:74
uint len