72static char32_t findaccent(
char32_t char1,
const char code)
74 char32_t new_char = 0;
80 else if (code == 39) {
83 else if (code ==
'^') {
86 else if (code ==
'~') {
89 else if (code ==
'"') {
92 else if (code ==
'o') {
95 else if (code ==
'e') {
98 else if (code ==
'-') {
102 else if (char1 ==
'c') {
106 else if (code ==
'|') {
109 else if (code ==
'o') {
113 else if (char1 ==
'e') {
117 else if (code == 39) {
120 else if (code ==
'^') {
123 else if (code ==
'"') {
127 else if (char1 ==
'i') {
131 else if (code == 39) {
134 else if (code ==
'^') {
137 else if (code ==
'"') {
141 else if (char1 ==
'n') {
146 else if (char1 ==
'o') {
150 else if (code == 39) {
153 else if (code ==
'^') {
156 else if (code ==
'~') {
159 else if (code ==
'"') {
162 else if (code ==
'/') {
165 else if (code ==
'-') {
168 else if (code ==
'e') {
171 else if (code ==
'c') {
174 else if (code ==
'r') {
178 else if (char1 ==
'r') {
183 else if (char1 ==
's') {
188 else if (char1 ==
't') {
193 else if (char1 ==
'u') {
197 else if (code == 39) {
200 else if (code ==
'^') {
203 else if (code ==
'"') {
207 else if (char1 ==
'y') {
211 else if (code ==
'"') {
215 else if (char1 ==
'A') {
219 else if (code == 39) {
222 else if (code ==
'^') {
225 else if (code ==
'~') {
228 else if (code ==
'"') {
231 else if (code ==
'o') {
234 else if (code ==
'e') {
238 else if (char1 ==
'C') {
243 else if (char1 ==
'E') {
247 else if (code == 39) {
250 else if (code ==
'^') {
253 else if (code ==
'"') {
257 else if (char1 ==
'I') {
261 else if (code == 39) {
264 else if (code ==
'^') {
267 else if (code ==
'"') {
271 else if (char1 ==
'N') {
276 else if (char1 ==
'O') {
280 else if (code == 39) {
283 else if (code ==
'^') {
286 else if (code ==
'~') {
289 else if (code ==
'"') {
292 else if (code ==
'/') {
295 else if (code ==
'e') {
299 else if (char1 ==
'U') {
303 else if (code == 39) {
306 else if (code ==
'^') {
309 else if (code ==
'"') {
313 else if (char1 ==
'Y') {
318 else if (char1 ==
'1') {
326 else if (char1 ==
'3') {
331 else if (char1 ==
':') {
336 else if (char1 ==
'-') {
347 else if (char1 ==
'|') {
355 else if (char1 ==
'=') {
360 else if (char1 ==
'+') {
380 for (x = ef->
len; x > ef->
pos; x--) {
383 for (x = ef->
len; x > ef->
pos; x--) {
436 int selend, selstart, direction;
442 if (ef->
pos >= selstart) {
443 ef->
pos = selstart + ins;
445 if ((direction == -1) && ins) {
449 getfrom = selend + 1;
450 size = ef->
len - selend;
453 ef->
len -= ((selend - selstart) + 1);
470 if (buf ==
nullptr) {
485 const size_t str_len,
491 int selend, selstart;
494 selstart = selend = 0;
498 if ((ef->
len + str_len) - (selend - selstart) <=
MAXTEXT) {
535 char32_t *mem =
static_cast<char32_t *
>(
MEM_mallocN((
sizeof(*mem) * (str_len + 1)), __func__));
554 int selstart, selend;
560 char32_t *text_buf = ef->
textbuf + selstart;
561 const size_t text_buf_len = selend - selstart;
583 if (strp ==
nullptr) {
631 ot->
idname =
"FONT_OT_text_paste_from_file";
666 char *edit_string =
static_cast<char *
>(arg_string);
668 if (edit_string[0] == 0) {
674 uint val = strtoul(edit_string,
nullptr, 16);
675 if (val > 31 && val < 0x10FFFF) {
678 const char32_t utf32[2] = {val, 0};
693 char *edit_string =
static_cast<char *
>(arg_string);
701 uiItemL_ex(layout,
IFACE_(
"Insert Unicode Character"), ICON_NONE,
true,
false);
702 uiItemL(layout,
RPT_(
"Enter a Unicode codepoint hex value"), ICON_NONE);
715 TIP_(
"Unicode codepoint hex value"));
725 const bool windows_layout =
true;
727 const bool windows_layout =
false;
730 uiBut *confirm =
nullptr;
731 uiBut *cancel =
nullptr;
735 if (windows_layout) {
737 block,
UI_BTYPE_BUT, 0, 0,
"Insert", 0, 0, 0,
UI_UNIT_Y,
nullptr, 0, 0,
nullptr);
742 block,
UI_BTYPE_BUT, 0, 0,
"Cancel", 0, 0, 0,
UI_UNIT_Y,
nullptr, 0, 0,
nullptr);
744 if (!windows_layout) {
747 block,
UI_BTYPE_BUT, 0, 0,
"Insert", 0, 0, 0,
UI_UNIT_Y,
nullptr, 0, 0,
nullptr);
757 int bounds_offset[2];
767 char *edit_string =
static_cast<char *
>(
MEM_mallocN(24, __func__));
776 ot->
name =
"Insert Unicode";
778 ot->
idname =
"FONT_OT_text_insert_unicode";
797 const float offset[3])
807 int nchars = 0, nbytes = 0;
810 const float rot[3] = {0.0f, 0.0f, 0.0f};
827 for (tmp = firstline, a = 0; nbytes <
MAXTEXT && a < totline; tmp = tmp->
next, a++) {
828 size_t nchars_line, nbytes_line;
830 nchars += nchars_line + 1;
831 nbytes += nbytes_line + 1;
850 for (tmp = firstline, a = 0; cu->
len <
MAXTEXT && a < totline; tmp = tmp->
next, a++) {
851 size_t nchars_line_dummy, nbytes_line;
853 (void)nchars_line_dummy;
855 memcpy(s, tmp->
line, nbytes_line);
857 cu->
len += nbytes_line;
879 if (!text || !text->lines.first) {
886 if (line->line[0] ==
'\0') {
893 offset[1] = -linenum;
911 static_cast<const TextLine *
>(text->lines.first),
931 {0,
nullptr, 0,
nullptr,
nullptr},
939 int i, selstart, selend;
945 for (i = selstart; i <= selend; i++) {
998 int style,
clear, selstart, selend;
1012 ot->
name =
"Toggle Style";
1014 ot->
idname =
"FONT_OT_style_toggle";
1076 int selstart, selend;
1081 char *buf =
nullptr;
1130 int selstart, selend;
1195 } clipboard_system = {
nullptr}, clipboard_vfont = {
nullptr};
1200 if (clipboard_system.buf ==
nullptr) {
1209 if (clipboard_vfont.buf ==
nullptr) {
1217 if (clipboard_vfont.buf &&
STREQ(clipboard_vfont.buf, clipboard_system.buf)) {
1221 if ((clipboard_system.len <=
MAXTEXT) &&
1241 if (clipboard_vfont.buf) {
1270 "Paste text selected elsewhere rather than copied (X11/Wayland only)");
1281 {
LINE_BEGIN,
"LINE_BEGIN", 0,
"Line Begin",
""},
1282 {
LINE_END,
"LINE_END", 0,
"Line End",
""},
1283 {
TEXT_BEGIN,
"TEXT_BEGIN", 0,
"Text Begin",
""},
1284 {
TEXT_END,
"TEXT_END", 0,
"Text End",
""},
1285 {
PREV_CHAR,
"PREVIOUS_CHARACTER", 0,
"Previous Character",
""},
1286 {
NEXT_CHAR,
"NEXT_CHARACTER", 0,
"Next Character",
""},
1287 {
PREV_WORD,
"PREVIOUS_WORD", 0,
"Previous Word",
""},
1288 {
NEXT_WORD,
"NEXT_WORD", 0,
"Next Word",
""},
1289 {
PREV_LINE,
"PREVIOUS_LINE", 0,
"Previous Line",
""},
1290 {
NEXT_LINE,
"NEXT_LINE", 0,
"Next Line",
""},
1291 {
PREV_PAGE,
"PREVIOUS_PAGE", 0,
"Previous Page",
""},
1292 {
NEXT_PAGE,
"NEXT_PAGE", 0,
"Next Page",
""},
1293 {0,
nullptr, 0,
nullptr,
nullptr},
1310 while (ef->
pos > 0) {
1323 while (ef->
pos < ef->
len) {
1393 if (cursmove == -1) {
1403 else if (ef->
pos < 0) {
1441 ot->
name =
"Move Cursor";
1472 ot->
name =
"Move Select";
1474 ot->
idname =
"FONT_OT_move_select";
1489 "Where to move cursor to, to make a selection");
1504 int selstart, selend;
1505 bool changed =
false;
1512 selstart = selend = ef->
pos - 1;
1514 selstart =
max_ii(0, selstart);
1516 for (
int i = selstart; i <= selend; i++) {
1536 ot->
name =
"Change Spacing";
1538 ot->
idname =
"FONT_OT_change_spacing";
1554 "Amount to decrease or increase character spacing with",
1578 CLAMP(character, 0, 255);
1594 ot->
name =
"Change Character";
1596 ot->
idname =
"FONT_OT_change_character";
1612 "Number to increase or decrease character code with",
1661 {
DEL_PREV_CHAR,
"PREVIOUS_CHARACTER", 0,
"Previous Character",
""},
1665 {
DEL_NEXT_SEL,
"NEXT_OR_SELECTION", 0,
"Next or Selection",
""},
1666 {
DEL_PREV_SEL,
"PREVIOUS_OR_SELECTION", 0,
"Previous or Selection",
""},
1667 {0,
nullptr, 0,
nullptr,
nullptr},
1676 int range[2] = {0, 0};
1677 bool has_select =
false;
1717 if (ef->
pos >= ef->
len) {
1747 if (range[0] != range[1]) {
1749 int len_remove = range[1] - range[0];
1750 int len_tail = ef->
len - range[1];
1752 for (
int i = 0; i < 2; i++) {
1754 if (*sel <= range[0]) {
1757 else if (*sel >= range[1]) {
1773 ef->
len -= len_remove;
1804 "Which part of the text to delete");
1816 char *inserted_utf8;
1817 char32_t *inserted_text;
1827 inserted_text =
static_cast<char32_t *
>(
1831 for (a = 0; a <
len; a++) {
1849 static bool accentcode =
false;
1850 const bool alt =
event->modifier &
KM_ALT;
1851 const bool shift =
event->modifier &
KM_SHIFT;
1852 const bool ctrl =
event->modifier &
KM_CTRL;
1853 char32_t insert_char_override = 0;
1854 char32_t inserted_text[2] = {0};
1861 if (ef->
len != 0 && ef->
pos > 0) {
1868 if (alt && ef->
len != 0 && ef->
pos > 0) {
1876 if ((alt || ctrl || shift) == 0) {
1879 insert_char_override =
'\t';
1882 if (insert_char_override || event->
utf8_buf[0]) {
1883 if (insert_char_override) {
1885 inserted_text[0] = insert_char_override;
1916 if (inserted_text[0]) {
1918 char inserted_utf8[8] = {0};
1930 ot->
name =
"Insert Text";
1932 ot->
idname =
"FONT_OT_text_insert";
1949 "Next typed character will strike through previous, for special character input");
1963 plane, obedit->object_to_world().location(), obedit->object_to_world().ptr()[2]);
1971 mul_m4_v3(obedit->world_to_object().ptr(), mouse_loc);
1973 float curs_loc[2] = {mouse_loc[0], mouse_loc[1]};
1987 if (string_offset > ef->
len || string_offset < 0) {
2008 ef->
selend = string_offset;
2009 ef->
pos = string_offset;
2031 switch (event->
type) {
2051 ot->
name =
"Set Selection";
2052 ot->
idname =
"FONT_OT_selection_set";
2088 ot->
name =
"Select Word";
2089 ot->
idname =
"FONT_OT_select_word";
2111 cu->
tb[i] = cu->
tb[i - 1];
2126 ot->
name =
"Add Text Box";
2128 ot->
idname =
"FONT_OT_textbox_add";
2152 for (i = index; i < cu->
totbox; i++) {
2153 cu->
tb[i] = cu->
tb[i + 1];
2156 if (cu->
actbox >= index) {
2170 ot->
name =
"Remove Text Box";
2172 ot->
idname =
"FONT_OT_textbox_remove";
2181 RNA_def_int(
ot->
srna,
"index", 0, 0, INT_MAX,
"Index",
"The current text box", 0, INT_MAX);
2196 if (ef ==
nullptr) {
2199 ef->
textbuf =
static_cast<char32_t *
>(
2208 ef->
len = len_char32;
2276 {0,
nullptr, 0,
nullptr,
nullptr},
2282 int selstart, selend;
2289 for (
int len = (selend - selstart) + 1;
len;
len--,
str++) {
2342 if (*
str >=
'a' && *
str <=
'z') {
2356 ot->
name =
"Toggle Case";
2358 ot->
idname =
"FONT_OT_case_toggle";
2426 VFont *vfont =
nullptr;
2495 VFont *builtin_font;
2501 if (pprop.
prop ==
nullptr) {
2536 const float active_bias_px = 4.0f;
2537 const float mval_fl[2] = {
float(mval[0]),
float(mval[1])};
2539 int i_iter, actbox_select = -1;
2541 float dist_sq_best = dist * dist;
2550 for (i_iter = 0; i_iter < cu->
totbox; i_iter++) {
2551 int i = (i_iter + i_actbox) % cu->
totbox;
2555 float obedit_co[4][3];
2556 float screen_co[4][2];
2567 for (j = 0; j < 4; j++) {
2571 project_ok |= (1 << j);
2575 dist_sq_min = dist_sq_best;
2576 for (j = 0, j_prev = 3; j < 4; j_prev = j++) {
2577 if ((project_ok & (1 << j)) && (project_ok & (1 << j_prev))) {
2579 mval_fl, screen_co[j_prev], screen_co[j]);
2580 if (dist_sq_min > dist_test_sq) {
2581 dist_sq_min = dist_test_sq;
2588 dist_sq_min += active_bias_px;
2591 if (dist_sq_min < dist_sq_best) {
2592 dist_sq_best = dist_sq_min;
2593 actbox_select = i + 1;
2597 if (actbox_select != -1) {
2598 if (cu->
actbox != actbox_select) {
2599 cu->
actbox = actbox_select;
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
Main * CTX_data_main(const bContext *C)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_curve_editfont_free(Curve *cu)
void BKE_curve_rect_from_textbox(const Curve *cu, const TextBox *tb, rctf *r_rect)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
General operations, lookup, etc. for blender objects.
Object * BKE_object_add(Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name) ATTR_NONNULL(1
void BKE_object_where_is_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_vfont_select_clamp(Object *ob)
void BKE_vfont_clipboard_set(const char32_t *text_buf, const CharInfo *info_buf, size_t len)
#define FO_CURS_IS_MOTION(mode)
VFont * BKE_vfont_load(Main *bmain, const char *filepath)
bool BKE_vfont_is_builtin(const VFont *vfont)
int BKE_vfont_select_get(Object *ob, int *r_start, int *r_end)
void BKE_vfont_clipboard_get(char32_t **r_text_buf, CharInfo **r_info_buf, size_t *r_len_utf8, size_t *r_len_utf32)
VFont * BKE_vfont_builtin_get()
bool BKE_vfont_to_curve(Object *ob, eEditFontMode mode)
int BKE_vfont_cursor_to_text_index(Object *ob, const float cursor_location[2])
void BKE_vfont_clipboard_free()
void * BLI_file_read_text_as_mem(const char *filepath, size_t pad_bytes, size_t *r_size)
#define LISTBASE_FOREACH(type, var, list)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
void plane_from_point_normal_v3(float r_plane[4], const float plane_co[3], const float plane_no[3])
float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2])
void mul_m4_v3(const float M[4][4], float r[3])
void mul_mat3_m4_v3(const float mat[4][4], float r[3])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE void add_v3_v3(float r[3], const float a[3])
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
int BLI_path_slash_ensure(char *path, size_t path_maxncpy) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
bool BLI_str_cursor_step_prev_utf32(const char32_t *str, int str_maxlen, int *pos)
void BLI_str_cursor_step_utf32(const char32_t *str, int str_maxlen, int *pos, eStrCursorJumpDirection direction, eStrCursorJumpType jump, bool use_init_step)
void BLI_str_cursor_step_bounds_utf32(const char32_t *str, int str_maxlen, int pos, int *r_start, int *r_end)
bool BLI_str_cursor_step_next_utf32(const char32_t *str, int str_maxlen, int *pos)
size_t size_t size_t BLI_str_utf32_as_utf8_len_ex(const char32_t *src, size_t src_maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t BLI_str_utf32_as_utf8_len(const char32_t *src) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char32_t BLI_str_utf32_char_to_lower(char32_t wc)
size_t BLI_strlen_utf8(const char *strc) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
size_t size_t BLI_str_utf32_as_utf8(char *__restrict dst, const char32_t *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
char32_t BLI_str_utf32_char_to_upper(char32_t wc)
size_t BLI_str_utf8_as_utf32(char32_t *__restrict dst_w, const char *__restrict src_c, size_t dst_w_maxncpy) ATTR_NONNULL(1
unsigned int BLI_str_utf8_as_unicode_or_error(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t BLI_strlen_utf8_ex(const char *strc, size_t *r_len_bytes) ATTR_NONNULL(1
#define BLT_I18NCONTEXT_ID_TEXT
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
Object * DEG_get_evaluated_object(const Depsgraph *depsgraph, Object *object)
#define ID_BLEND_PATH_FROM_GLOBAL(_id)
Object is a sort of wrapper for general info.
void ED_outliner_select_sync_from_object_tag(bContext *C)
bool ED_operator_object_active_editable_font(bContext *C)
bool ED_operator_editfont(bContext *C)
float ED_view3d_select_dist_px()
eV3DProjStatus ED_view3d_project_float_object(const ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
void ED_view3d_init_mats_rv3d(const Object *ob, RegionView3D *rv3d)
ViewContext ED_view3d_viewcontext_init(bContext *C, Depsgraph *depsgraph)
bool ED_view3d_win_to_3d_on_plane(const ARegion *region, const float plane[4], const float mval[2], bool do_clip, float r_out[3])
Read Guarded memory(de)allocation.
void UI_but_func_set(uiBut *but, std::function< void(bContext &)> func)
void UI_block_theme_style_set(uiBlock *block, char theme_style)
void UI_block_bounds_set_popup(uiBlock *block, int addval, const int bounds_offset[2])
uiBut * uiDefBut(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void uiItemL(uiLayout *layout, const char *name, int icon)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const uiStyle *style)
const uiStyle * UI_style_get_dpi()
void UI_popup_block_invoke_ex(bContext *C, uiBlockCreateFunc func, void *arg, uiFreeArgFunc arg_free, bool can_refresh)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
void uiItemS(uiLayout *layout)
uiBut * uiDefIconTextBut(uiBlock *block, int type, int retval, int icon, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_popup_block_close(bContext *C, wmWindow *win, uiBlock *block)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
void UI_but_drawflag_disable(uiBut *but, int flag)
@ UI_BLOCK_THEME_STYLE_POPUP
int uiLayoutGetWidth(uiLayout *layout)
void UI_context_active_but_prop_get_templateID(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
uiLayout * uiLayoutSplit(uiLayout *layout, float percentage, bool align)
void UI_block_flag_enable(uiBlock *block, int flag)
uiBut * uiItemL_ex(uiLayout *layout, const char *name, int icon, bool highlight, bool redalert)
void UI_but_flag_enable(uiBut *but, int flag)
@ UI_BUT_ACTIVATE_ON_INIT
@ WM_CAPABILITY_PRIMARY_CLIPBOARD
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const Depsgraph * depsgraph
static uiBlock * wm_block_insert_unicode_create(bContext *C, ARegion *region, void *arg_string)
static int set_case(bContext *C, int ccase)
void FONT_OT_textbox_add(wmOperatorType *ot)
bool ED_curve_editfont_select_pick(bContext *C, const int mval[2], const SelectPick_Params *params)
static void font_open_cancel(bContext *, wmOperator *op)
static int line_break_exec(bContext *C, wmOperator *)
void FONT_OT_style_toggle(wmOperatorType *ot)
void ED_text_to_object(bContext *C, const Text *text, const bool split_lines)
static int copy_text_exec(bContext *C, wmOperator *)
void FONT_OT_text_copy(wmOperatorType *ot)
void FONT_OT_line_break(wmOperatorType *ot)
void FONT_OT_select_word(wmOperatorType *ot)
static void copy_selection(Object *obedit)
void FONT_OT_unlink(wmOperatorType *ot)
static int font_select_all_exec(bContext *C, wmOperator *)
static void font_select_update_primary_clipboard(Object *obedit)
static int kill_selection(Object *obedit, int ins)
static void text_insert_unicode_confirm(bContext *C, void *arg_block, void *arg_string)
void ED_curve_editfont_make(Object *obedit)
void FONT_OT_select_all(wmOperatorType *ot)
static int change_spacing_exec(bContext *C, wmOperator *op)
void FONT_OT_move(wmOperatorType *ot)
static int change_character_exec(bContext *C, wmOperator *op)
static int toggle_style_exec(bContext *C, wmOperator *op)
static int font_cursor_text_index_from_event(bContext *C, Object *obedit, const wmEvent *event)
static int paste_from_file_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int paste_from_file_exec(bContext *C, wmOperator *op)
static int insert_text_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int paste_text_exec(bContext *C, wmOperator *op)
void FONT_OT_text_cut(wmOperatorType *ot)
static int set_style_exec(bContext *C, wmOperator *op)
static int move_select_exec(bContext *C, wmOperator *op)
void FONT_OT_change_spacing(wmOperatorType *ot)
static void txt_add_object(bContext *C, const TextLine *firstline, int totline, const float offset[3])
void FONT_OT_text_insert_unicode(wmOperatorType *ot)
static int font_selection_set_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void ED_curve_editfont_load(Object *obedit)
void FONT_OT_change_character(wmOperatorType *ot)
static const EnumPropertyItem style_items[]
static int paste_from_file(bContext *C, ReportList *reports, const char *filepath)
void FONT_OT_delete(wmOperatorType *ot)
void FONT_OT_textbox_remove(wmOperatorType *ot)
static bool paste_selection(Object *obedit, ReportList *reports)
static const EnumPropertyItem delete_type_items[]
static void text_insert_unicode_cancel(bContext *C, void *arg_block, void *)
static int font_select_word_exec(bContext *C, wmOperator *)
static int textbox_add_exec(bContext *C, wmOperator *)
void FONT_OT_open(wmOperatorType *ot)
void FONT_OT_text_paste_from_file(wmOperatorType *ot)
static char32_t findaccent(char32_t char1, const char code)
void FONT_OT_move_select(wmOperatorType *ot)
static const EnumPropertyItem case_items[]
static int insert_text_exec(bContext *C, wmOperator *op)
static int font_selection_set_modal(bContext *C, wmOperator *, const wmEvent *event)
static int font_open_exec(bContext *C, wmOperator *op)
static void text_update_edited(bContext *C, Object *obedit, const eEditFontMode mode)
static int toggle_case_exec(bContext *C, wmOperator *)
static int font_unlink_exec(bContext *C, wmOperator *op)
static int textbox_remove_exec(bContext *C, wmOperator *op)
static int move_cursor(bContext *C, int type, const bool select)
static void font_cursor_set_apply(bContext *C, const wmEvent *event)
static int delete_exec(bContext *C, wmOperator *op)
static int set_style(bContext *C, const int style, const bool clear)
void FONT_OT_case_set(wmOperatorType *ot)
void FONT_OT_case_toggle(wmOperatorType *ot)
static int set_case_exec(bContext *C, wmOperator *op)
void ED_curve_editfont_free(Object *obedit)
static void font_ui_template_init(bContext *C, wmOperator *op)
static char * font_select_to_buffer(Object *obedit)
void FONT_OT_selection_set(wmOperatorType *ot)
void FONT_OT_text_paste(wmOperatorType *ot)
static int insert_into_textbuf(Object *obedit, uintptr_t c)
void FONT_OT_text_insert(wmOperatorType *ot)
static bool font_paste_wchar(Object *obedit, const char32_t *str, const size_t str_len, CharInfo *str_info)
static int move_exec(bContext *C, wmOperator *op)
static int open_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int text_insert_unicode_invoke(bContext *C, wmOperator *, const wmEvent *)
static int cut_text_exec(bContext *C, wmOperator *)
void FONT_OT_style_set(wmOperatorType *ot)
static const EnumPropertyItem move_type_items[]
static bool font_paste_utf8(bContext *C, const char *str, const size_t str_len)
draw_view in_light_buf[] float
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 select(const int4 mask, const float4 a, const float4 b)
static void clear(Message &msg)
void init_transform_on_add(Object *object, const float loc[3], const float rot[3])
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value, ReportList *reports)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
float RNA_float_get(PointerRNA *ptr, const char *name)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_id_pointer_create(ID *id)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
_W64 unsigned int uintptr_t
struct EditFont * editfont
struct CharInfo * strinfo
EditFontSelBox * selboxes
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
void WM_event_add_fileselect(bContext *C, wmOperator *op)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_filesel(wmOperatorType *ot, const int filter, const short type, const eFileSel_Action action, const eFileSel_Flag flag, const short display, const short sort)
void WM_clipboard_text_set(const char *buf, bool selection)
char * WM_clipboard_text_get(bool selection, bool ensure_utf8, int *r_len)
eWM_CapabilitiesFlag WM_capabilities_flag()