diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_text.h')
-rw-r--r-- | source/blender/blenkernel/BKE_text.h | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h index c7120c60020..a979ba6d2cc 100644 --- a/source/blender/blenkernel/BKE_text.h +++ b/source/blender/blenkernel/BKE_text.h @@ -30,17 +30,44 @@ struct Main; struct Text; struct TextLine; +/** + * \note caller must handle `compiled` member. + */ void BKE_text_free_lines(struct Text *text); struct Text *BKE_text_add(struct Main *bmain, const char *name); +/** + * Use to a valid UTF-8 sequences. + * this function replaces extended ascii characters. + */ int txt_extended_ascii_as_utf8(char **str); bool BKE_text_reload(struct Text *text); +/** + * Load a text file. + * + * \param is_internal: If \a true, this text data-block only exists in memory, + * not as a file on disk. + * + * \note text data-blocks have no real user but have 'fake user' enabled by default + */ struct Text *BKE_text_load_ex(struct Main *bmain, const char *file, const char *relpath, const bool is_internal); +/** + * Load a text file. + * + * \note Text data-blocks have no user by default, only the 'real user' flag. + */ struct Text *BKE_text_load(struct Main *bmain, const char *file, const char *relpath); void BKE_text_clear(struct Text *text); void BKE_text_write(struct Text *text, const char *str); +/** + * \return codes: + * - 0 if file on disk is the same or Text is in memory only. + * - 1 if file has been modified on disk since last local edit. + * - 2 if file on disk has been deleted. + * - -1 is returned if an error occurs. + */ int BKE_text_file_modified_check(struct Text *text); void BKE_text_file_modified_ignore(struct Text *text); @@ -61,12 +88,20 @@ void txt_move_eof(struct Text *text, const bool sel); void txt_move_bol(struct Text *text, const bool sel); void txt_move_eol(struct Text *text, const bool sel); void txt_move_toline(struct Text *text, unsigned int line, const bool sel); +/** + * Moves to a certain byte in a line, not a certain utf8-character. + */ void txt_move_to(struct Text *text, unsigned int line, unsigned int ch, const bool sel); void txt_pop_sel(struct Text *text); void txt_delete_char(struct Text *text); void txt_delete_word(struct Text *text); void txt_delete_selected(struct Text *text); void txt_sel_all(struct Text *text); +/** + * Reverse of #txt_pop_sel + * Clears the selection and ensures the cursor is located + * at the selection (where the cursor is visually while editing). + */ void txt_sel_clear(struct Text *text); void txt_sel_line(struct Text *text); void txt_sel_set(struct Text *text, int startl, int startc, int endl, int endc); @@ -91,7 +126,9 @@ bool txt_cursor_is_line_end(const struct Text *text); int txt_calc_tab_left(struct TextLine *tl, int ch); int txt_calc_tab_right(struct TextLine *tl, int ch); -/* Utility functions, could be moved somewhere more generic but are python/text related. */ +/** + * Utility functions, could be moved somewhere more generic but are python/text related. + */ int text_check_bracket(const char ch); bool text_check_delim(const char ch); bool text_check_digit(const char ch); @@ -100,7 +137,7 @@ bool text_check_identifier_nodigit(const char ch); bool text_check_whitespace(const char ch); int text_find_identifier_start(const char *str, int i); -/* defined in bpy_interface.c */ +/* EVIL: defined in `bpy_interface.c`. */ extern int text_check_identifier_unicode(const unsigned int ch); extern int text_check_identifier_nodigit_unicode(const unsigned int ch); @@ -110,7 +147,14 @@ enum { }; /* Fast non-validating buffer conversion for undo. */ + +/** + * Create a buffer, the only requirement is #txt_from_buf_for_undo can decode it. + */ char *txt_to_buf_for_undo(struct Text *text, int *r_buf_len); +/** + * Decode a buffer from #txt_to_buf_for_undo. + */ void txt_from_buf_for_undo(struct Text *text, const char *buf, int buf_len); #ifdef __cplusplus |