Functions used to create and manipulate textblock objects. More...
Typedefs | |
typedef Eo | Evas_Textblock |
typedef struct _Efl_Canvas_Textblock_Style | Evas_Textblock_Style |
A textblock style object. More... | |
typedef struct _Efl_Text_Cursor_Handle | Evas_Textblock_Cursor |
A textblock cursor object, used to maipulate the cursor of an evas textblock. More... | |
typedef struct _Evas_Textblock_Node_Format | Evas_Object_Textblock_Node_Format |
A format node. More... | |
typedef struct _Evas_Textblock_Node_Format | Evas_Textblock_Node_Format |
typedef Eina_Rectangle | Evas_Textblock_Rectangle |
General-purpose rectangle that represents some geometry in this object. | |
typedef enum _Evas_Textblock_Text_Type | Evas_Textblock_Text_Type |
Text type for evas textblock. | |
typedef enum _Evas_Textblock_Cursor_Type | Evas_Textblock_Cursor_Type |
Cursor type for evas textblock. | |
typedef struct _Evas_Textblock_Node_Format | Evas_Textblock_Node_Format |
A format node. More... | |
Enumerations | |
enum | _Evas_Textblock_Text_Type { EVAS_TEXTBLOCK_TEXT_RAW, EVAS_TEXTBLOCK_TEXT_PLAIN, EVAS_TEXTBLOCK_TEXT_MARKUP } |
Text type for evas textblock. More... | |
enum | _Evas_Textblock_Cursor_Type { EVAS_TEXTBLOCK_CURSOR_UNDER, EVAS_TEXTBLOCK_CURSOR_BEFORE } |
Cursor type for evas textblock. More... | |
Functions | |
Eina_Bool | evas_object_textblock_visible_range_get (Efl_Canvas_Textblock *obj, Efl_Text_Cursor_Handle *start, Efl_Text_Cursor_Handle *end) |
Returns the currently visible range. More... | |
void | evas_object_textblock_style_insets_get (const Efl_Canvas_Textblock *obj, int *left, int *right, int *top, int *bottom) |
Gets the left, right, top and bottom insets of the text. More... | |
void | evas_object_textblock_bidi_delimiters_set (Efl_Canvas_Textblock *obj, const char *delim) |
BiDi delimiters are used for in-paragraph separation of bidi segments. More... | |
const char * | evas_object_textblock_bidi_delimiters_get (const Efl_Canvas_Textblock *obj) |
BiDi delimiters are used for in-paragraph separation of bidi segments. More... | |
void | evas_object_textblock_legacy_newline_set (Efl_Canvas_Textblock *obj, Eina_Bool mode) |
When true , newline character will behave as a paragraph separator. More... | |
Eina_Bool | evas_object_textblock_legacy_newline_get (const Efl_Canvas_Textblock *obj) |
When true , newline character will behave as a paragraph separator. More... | |
void | evas_object_textblock_size_formatted_get (const Efl_Canvas_Textblock *obj, int *width, int *height) |
The formatted width and height. More... | |
void | evas_object_textblock_size_native_get (const Efl_Canvas_Textblock *obj, int *width, int *height) |
The native width and height. More... | |
Eina_Bool | evas_object_textblock_obstacle_add (Efl_Canvas_Textblock *obj, Efl_Canvas_Object *eo_obs) |
Add obstacle evas object eo_obs to be observed during layout of text. More... | |
Eina_Bool | evas_object_textblock_obstacle_del (Efl_Canvas_Textblock *obj, Efl_Canvas_Object *eo_obs) |
Removes eo_obs from observation during text layout. More... | |
void | evas_object_textblock_obstacles_update (Efl_Canvas_Textblock *obj) |
Triggers for relayout due to obstacles' state change. More... | |
const char * | evas_textblock_escape_string_get (const char *escape) |
Returns the unescaped version of escape. More... | |
const char * | evas_textblock_string_escape_get (const char *string, int *len_ret) |
Returns the escaped version of the string. More... | |
const char * | evas_textblock_escape_string_range_get (const char *escape_start, const char *escape_end) |
Return the unescaped version of the string between start and end. More... | |
Evas_Textblock_Style * | evas_textblock_style_new (void) |
Creates a new textblock style. More... | |
void | evas_textblock_style_free (Evas_Textblock_Style *ts) |
Destroys a textblock style. More... | |
void | evas_textblock_style_set (Evas_Textblock_Style *ts, const char *text) |
Sets the style ts to the style passed as text by text. More... | |
const char * | evas_textblock_style_get (const Evas_Textblock_Style *ts) |
Return the text of the style ts. More... | |
const Evas_Object_Textblock_Node_Format * | evas_textblock_node_format_next_get (const Evas_Object_Textblock_Node_Format *n) |
Returns the next format node (after n) More... | |
const Evas_Object_Textblock_Node_Format * | evas_textblock_node_format_prev_get (const Evas_Object_Textblock_Node_Format *n) |
Returns the prev format node (after n) More... | |
void | evas_textblock_cursor_set_at_format (Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) |
Sets the cursor to point to the place where format points to. More... | |
const Evas_Object_Textblock_Node_Format * | evas_textblock_cursor_format_get (const Evas_Textblock_Cursor *cur) |
Return the format node at the position pointed by cur. More... | |
const char * | evas_textblock_node_format_text_get (const Evas_Object_Textblock_Node_Format *fnode) |
Get the text format representation of the format node. More... | |
void | evas_textblock_cursor_at_format_set (Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) |
Set the cursor to point to the position of fmt. More... | |
Eina_Bool | evas_textblock_cursor_format_is_visible_get (const Evas_Textblock_Cursor *cur) |
Check if the current cursor position is a visible format. More... | |
Eina_Bool | evas_textblock_cursor_format_next (Evas_Textblock_Cursor *cur) |
Advances to the next format node. More... | |
Eina_Bool | evas_textblock_cursor_format_prev (Evas_Textblock_Cursor *cur) |
Advances to the previous format node. More... | |
Eina_Bool | evas_textblock_cursor_is_format (const Evas_Textblock_Cursor *cur) |
Returns true if the cursor points to a format. More... | |
int | evas_textblock_cursor_pos_get (const Evas_Textblock_Cursor *cur) |
Return the current cursor pos. More... | |
Eina_Bool | evas_textblock_cursor_line_set (Evas_Textblock_Cursor *cur, int line) |
Go to the start of the line passed. More... | |
Eina_Bool | evas_textblock_cursor_format_append (Evas_Textblock_Cursor *cur, const char *format) |
Adds format to the current cursor position. More... | |
Eina_Bool | evas_textblock_cursor_format_prepend (Evas_Textblock_Cursor *cur, const char *format) |
Adds format to the current cursor position. More... | |
void | evas_textblock_cursor_range_delete (Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2) |
Delete the range between cur1 and cur2. More... | |
const char * | evas_textblock_cursor_paragraph_text_get (const Evas_Textblock_Cursor *cur) |
Return the text of the paragraph cur points to - returns the text in markup. More... | |
int | evas_textblock_cursor_paragraph_text_length_get (const Evas_Textblock_Cursor *cur) |
Return the length of the paragraph, cheaper the eina_unicode_strlen() More... | |
Eina_Bool | evas_textblock_cursor_visible_range_get (Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) |
Return the currently visible range. More... | |
Eina_List * | evas_textblock_cursor_range_formats_get (const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) |
Return the format nodes in the range between cur1 and cur2. More... | |
char * | evas_textblock_cursor_range_text_get (const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) |
Return the text in the range between cur1 and cur2. More... | |
char * | evas_textblock_cursor_content_get (const Evas_Textblock_Cursor *cur) |
Return the content of the cursor. More... | |
Eina_Bool | evas_textblock_cursor_geometry_bidi_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2, Evas_Textblock_Cursor_Type ctype) |
Returns the geometry of two cursors ("split cursor"), if logical cursor is between LTR/RTL text, also considering paragraph direction. More... | |
int | evas_textblock_cursor_geometry_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_BiDi_Direction *dir, Evas_Textblock_Cursor_Type ctype) |
Returns the geometry of the cursor. More... | |
int | evas_textblock_cursor_char_geometry_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) |
Returns the geometry of the char at cur. More... | |
int | evas_textblock_cursor_pen_geometry_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cpen_x, Evas_Coord *cy, Evas_Coord *cadv, Evas_Coord *ch) |
Returns the geometry of the pen at cur. More... | |
int | evas_textblock_cursor_line_geometry_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) |
Returns the geometry of the line at cur. More... | |
int | evas_textblock_cursor_line_coord_set (Evas_Textblock_Cursor *cur, Evas_Coord y) |
Set the cursor position according to the y coord. More... | |
Eina_List * | evas_textblock_cursor_range_geometry_get (const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) |
Get the geometry of a range. More... | |
Eina_Iterator * | evas_textblock_cursor_range_simple_geometry_get (const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) |
Get the simple geometry of a range. More... | |
Eina_Bool | evas_textblock_cursor_format_item_geometry_get (const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) |
Eina_Bool | evas_textblock_cursor_eol_get (const Evas_Textblock_Cursor *cur) |
Checks if the cursor points to the end of the line. More... | |
Eina_Bool | evas_textblock_cursor_char_prev (Evas_Textblock_Cursor *obj) |
Advances the cursor one char backwards. More... | |
Eina_Bool | evas_textblock_cursor_char_next (Evas_Textblock_Cursor *obj) |
Advances the cursor one char forward. More... | |
Eina_Bool | evas_textblock_cursor_cluster_prev (Evas_Textblock_Cursor *obj) |
Advances the cursor one grapheme cluster backwards. More... | |
Eina_Bool | evas_textblock_cursor_cluster_next (Evas_Textblock_Cursor *obj) |
Advances the cursor one grapheme cluster forward. More... | |
Eina_Bool | evas_textblock_cursor_paragraph_next (Evas_Textblock_Cursor *obj) |
Advances to the start of the next text node. More... | |
Eina_Bool | evas_textblock_cursor_paragraph_prev (Evas_Textblock_Cursor *obj) |
Advances to the end of the previous text node. More... | |
Eina_Bool | evas_textblock_cursor_word_start (Evas_Textblock_Cursor *obj) |
Moves the cursor to the start of the word under the cursor. More... | |
Eina_Bool | evas_textblock_cursor_word_end (Evas_Textblock_Cursor *obj) |
Moves the cursor to the end of the word under the cursor. More... | |
Evas_Object * | evas_object_textblock_add (Evas *e) |
Adds a textblock to the given evas. More... | |
char * | evas_textblock_text_markup_to_utf8 (const Evas_Object *obj, const char *text) |
Return the plain version of the markup. More... | |
char * | evas_textblock_text_utf8_to_markup (const Evas_Object *obj, const char *text) |
Return the markup version of the plain text. More... | |
void | evas_object_textblock_clear (Evas_Object *obj) |
Clear the textblock object. More... | |
void | evas_object_textblock_text_markup_set (Evas_Object *obj, const char *text) |
Sets given text as markup for the textblock object. More... | |
const char * | evas_object_textblock_text_markup_get (Evas_Object *obj) |
Gets the current markup text of the textblock object. More... | |
void | evas_object_textblock_text_markup_prepend (Evas_Textblock_Cursor *cur, const char *text) |
Prepends markup to the cursor cur. More... | |
void | evas_object_textblock_style_set (Evas_Object *obj, const Evas_Textblock_Style *ts) |
Sets object's style to given style. More... | |
Evas_Textblock_Style * | evas_object_textblock_style_get (const Evas_Object *obj) |
Gets the object's current style. More... | |
void | evas_object_textblock_style_user_push (Evas_Object *obj, Evas_Textblock_Style *ts) |
Pushes ts to the top of the user style stack. More... | |
const Evas_Textblock_Style * | evas_object_textblock_style_user_peek (const Evas_Object *obj) |
Peeks at the user-styles stack. More... | |
void | evas_object_textblock_style_user_pop (Evas_Object *obj) |
Removes the style at the top of the user-style stack. More... | |
const Evas_Object_Textblock_Node_Format * | evas_textblock_node_format_first_get (Evas_Object *obj) |
Gets the first format node. More... | |
const Evas_Object_Textblock_Node_Format * | evas_textblock_node_format_last_get (Evas_Object *obj) |
Gets the last format node. More... | |
const Eina_List * | evas_textblock_node_format_list_get (const Evas_Object *obj, const char *anchor) |
Gets a list of format nodes that match given format. More... | |
void | evas_textblock_node_format_remove_pair (Evas_Object *obj, Evas_Object_Textblock_Node_Format *n) |
Removes format node and its matching format node. More... | |
Eina_Bool | evas_object_textblock_line_number_geometry_get (const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) |
Gets the geometry of the line specified by its number. More... | |
void | evas_textblock_cursor_copy (const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest) |
Make cur_dest point to the same place as cur. More... | |
Evas_Textblock_Cursor * | evas_object_textblock_cursor_new (const Evas_Object *obj) |
Create a new cursor, associate it to the obj and init it to point to the start of the textblock. More... | |
Eina_Bool | evas_textblock_cursor_char_coord_set (Evas_Textblock_Cursor *obj, Evas_Coord x, Evas_Coord y) |
Sets the position of the cursor according to the X and Y coordinates. More... | |
Eina_Bool | evas_textblock_cursor_cluster_coord_set (Evas_Textblock_Cursor *obj, Evas_Coord x, Evas_Coord y) |
Sets the position of the cursor according to the X and Y coordinates and grapheme clusters of text. More... | |
void | evas_textblock_cursor_free (Evas_Textblock_Cursor *cur) |
Free the cursor and unassociate it from the object. More... | |
int | evas_textblock_cursor_text_append (Evas_Textblock_Cursor *cur, const char *text) |
Adds text to the current cursor position and set the cursor to before the start of the text just added. More... | |
int | evas_textblock_cursor_text_prepend (Evas_Textblock_Cursor *cur, const char *text) |
Adds text to the current cursor position and set the cursor to after the start of the text just added. More... | |
void | evas_object_textblock_replace_char_set (Evas_Object *obj, const char *ch) |
The "replacement character" to use for the given textblock object. More... | |
const char * | evas_object_textblock_replace_char_get (const Evas_Object *obj) |
The "replacement character" to use for the given textblock object. More... | |
void | evas_object_textblock_valign_set (Evas_Object *obj, double align) |
The vertical alignment of text within the textblock object as a whole. More... | |
double | evas_object_textblock_valign_get (const Evas_Object *obj) |
The vertical alignment of text within the textblock object as a whole. More... | |
void | evas_textblock_cursor_paragraph_first (Evas_Textblock_Cursor *cur) |
Sets the cursor to the start of the first text node. More... | |
void | evas_textblock_cursor_paragraph_last (Evas_Textblock_Cursor *cur) |
sets the cursor to the end of the last text node. More... | |
int | evas_textblock_cursor_compare (const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) |
Compare two cursors. More... | |
Eina_Bool | evas_textblock_cursor_equal (const Evas_Textblock_Cursor *obj, const Evas_Textblock_Cursor *cur) |
Checks if two cursors are equal. More... | |
void | evas_textblock_cursor_line_char_first (Evas_Textblock_Cursor *cur) |
Go to the start of the current line. More... | |
void | evas_textblock_cursor_line_char_last (Evas_Textblock_Cursor *cur) |
Go to the end of the current line. More... | |
void | evas_textblock_cursor_pos_set (Evas_Textblock_Cursor *cur, int _pos) |
Set the cursor pos. More... | |
void | evas_textblock_cursor_paragraph_char_first (Evas_Textblock_Cursor *cur) |
Go to the first char in the node the cursor is pointing on. More... | |
void | evas_textblock_cursor_paragraph_char_last (Evas_Textblock_Cursor *cur) |
Go to the last char in a text node. More... | |
void | evas_textblock_cursor_char_delete (Evas_Textblock_Cursor *cur) |
Deletes a single character from position pointed by given cursor. More... | |
Evas_Textblock_Cursor * | evas_object_textblock_cursor_get (const Evas_Object *obj) |
Get the object's main cursor. | |
int | evas_textblock_fit_options_get (const Evas_Object *obj, unsigned int *p_options) |
Get the object's content fit options. More... | |
int | evas_textblock_fit_options_set (Evas_Object *obj, unsigned int options) |
Set the object's content fit options. More... | |
int | evas_textblock_fit_size_range_get (const Evas_Object *obj, unsigned int *p_min_font_size, unsigned int *p_max_font_size) |
Get the object's max and min font sizes used for fitting content. More... | |
int | evas_textblock_fit_size_range_set (Evas_Object *obj, unsigned int min_font_size, unsigned int max_font_size) |
Set the object's max and min font sizes used for fitting content. More... | |
int | evas_textblock_fit_step_size_get (const Evas_Object *obj, unsigned int *p_step_size) |
Get the object's fitting step size when trying fonts between min font size and max font size. More... | |
int | evas_textblock_fit_step_size_set (Evas_Object *obj, unsigned int step_size) |
Set the object's fitting step size when trying fonts between min font size and max font size. More... | |
int | evas_textblock_fit_size_array_get (const Evas_Object *obj, unsigned int *p_size_array, size_t *p_size_array_len, size_t request_size_array) |
Get copy of the object's fitting font size array used internally. More... | |
int | evas_textblock_fit_size_array_set (Evas_Object *obj, const unsigned int *p_size_array, size_t size_array_len) |
Set the object's fitting font size array that will be used internally Changing fitting step_size,min_font_size,max_font size will generate new array Internall array will be sorted. More... | |
Functions used to create and manipulate textblock objects.
Unlike Text Object Functions, these handle complex text, doing multiple styles and multiline text based on HTML-like tags. Of these extra features will be heavier on memory and processing cost.
This part explains about the textblock object's API and proper usage. The main user of the textblock object is the edje entry object in Edje, so that's a good place to learn from, but I think this document is more than enough, if it's not, please contact me and I'll update it.
The textblock objects is, as implied, an object that can show big chunks of text. Textblock supports many features including: Text formatting, automatic and manual text alignment, embedding items (for example icons) and more. Textblock has three important parts, the text paragraphs, the format nodes and the cursors.
You can use markup to format text, for example: "<font_size=50>Big!</font_size>". You can also put more than one style directive in one tag: "<font_size=50 color=#F00>Big and Red!</font_size>". Please notice that we used "</font_size>" although the format also included color, this is because the first format determines the matching closing tag's name. You can also use anonymous tags, like: "<font_size=30>Big</>" which just pop any type of format, but it's advised to use the named alternatives instead.
A textblock Cursor is data type that represents a position in a textblock. Each cursor contains information about the paragraph it points to, the position in that paragraph and the object itself. Cursors register to textblock objects upon creation, this means that once you created a cursor, it belongs to a specific obj and you can't for example copy a cursor "into" a cursor of a different object. Registered cursors also have the added benefit of updating automatically upon textblock changes, this means that if you have a cursor pointing to a specific character, it'll still point to it even after you change the whole object completely (as long as the char was not deleted), this is not possible without updating, because as mentioned, each cursor holds a character position. There are many functions that handle cursors, just check out the evas_textblock_cursor* functions. For creation and deletion of cursors check out:
The textblock object is made out of text splitted to paragraphs (delimited by the paragraph separation character). Each paragraph has many (or none) format nodes associated with it which are responsible for the formatting of that paragraph.
As explained in Textblock Object Paragraphs each one of the format nodes is associated with a paragraph. There are two types of format nodes, visible and invisible: Visible: formats that a cursor can point to, i.e formats that occupy space, for example: newlines, tabs, items and etc. Some visible items are made of two parts, in this case, only the opening tag is visible. A closing tag (i.e a </tag> tag) should NEVER be visible. Invisible: formats that don't occupy space, for example: bold and underline. Being able to access format nodes is very important for some uses. For example, edje uses the "<a>" format to create links in the text (and pop popups above them when clicked). For the textblock object a is just a formatting instruction (how to color the text), but edje utilizes the access to the format nodes to make it do more. For more information, take a look at all the evas_textblock_node_format_* functions. The translation of "<tag>" tags to actual format is done according to the tags defined in the style, see evas_textblock_style_set
Textblock supports various format directives that can be used in markup. In addition to the mentioned format directives, textblock allows creating additional format directives using "tags" that can be set in the style see evas_textblock_style_set .
For more details see Evas Textblock Style Options
Textblock supports the following formats:
A textblock style object.
A textblock cursor object, used to maipulate the cursor of an evas textblock.
A format node.
XXX: Adapter for legacy.
A format node.
XXX: Adapter for legacy.
Eina_Bool evas_object_textblock_visible_range_get | ( | Efl_Canvas_Textblock * | obj, |
Efl_Text_Cursor_Handle * | start, | ||
Efl_Text_Cursor_Handle * | end | ||
) |
Returns the currently visible range.
The given start
and end
cursor act like out-variables here, as they are set to the positions of the start and the end of the visible range in the text, respectively.
[in] | obj | The object. |
[in] | start | Range start position |
[in] | end | Range end position |
true
on success, false
otherwiseReferences evas_textblock_cursor_visible_range_get().
void evas_object_textblock_style_insets_get | ( | const Efl_Canvas_Textblock * | obj, |
int * | left, | ||
int * | right, | ||
int * | top, | ||
int * | bottom | ||
) |
Gets the left, right, top and bottom insets of the text.
The inset is any applied padding on the text.
[in] | obj | The object. |
[out] | left | The left padding |
[out] | right | The right padding |
[out] | top | The top padding |
[out] | bottom | The bottom padding |
void evas_object_textblock_bidi_delimiters_set | ( | Efl_Canvas_Textblock * | obj, |
const char * | delim | ||
) |
BiDi delimiters are used for in-paragraph separation of bidi segments.
This is useful, for example, in the recipient fields of e-mail clients where bidi oddities can occur when mixing RTL and LTR.
[in] | obj | The object. |
[in] | delim | A null terminated string of delimiters, e.g ",|" or null if empty |
const char* evas_object_textblock_bidi_delimiters_get | ( | const Efl_Canvas_Textblock * | obj | ) |
BiDi delimiters are used for in-paragraph separation of bidi segments.
This is useful, for example, in the recipient fields of e-mail clients where bidi oddities can occur when mixing RTL and LTR.
[in] | obj | The object. |
null
if emptyvoid evas_object_textblock_legacy_newline_set | ( | Efl_Canvas_Textblock * | obj, |
Eina_Bool | mode | ||
) |
When true
, newline character will behave as a paragraph separator.
[in] | obj | The object. |
[in] | mode | true for legacy mode, false otherwise |
Eina_Bool evas_object_textblock_legacy_newline_get | ( | const Efl_Canvas_Textblock * | obj | ) |
When true
, newline character will behave as a paragraph separator.
[in] | obj | The object. |
true
for legacy mode, false
otherwisevoid evas_object_textblock_size_formatted_get | ( | const Efl_Canvas_Textblock * | obj, |
int * | width, | ||
int * | height | ||
) |
The formatted width and height.
This calculates the actual size after restricting the textblock to the current size of the object.
The main difference between this and evas_object_textblock_size_native_get is that the "native" function does not wrapping into account it just calculates the real width of the object if it was placed on an infinite canvas, while this function gives the size after wrapping according to the size restrictions of the object.
For example for a textblock containing the text: "You shall not pass!" with no margins or padding and assuming a monospace font and a size of 7x10 char widths (for simplicity) has a native size of 19x1 and a formatted size of 5x4.
[in] | obj | The object. |
[out] | width | The width of the object. |
[out] | height | The height of the object. |
void evas_object_textblock_size_native_get | ( | const Efl_Canvas_Textblock * | obj, |
int * | width, | ||
int * | height | ||
) |
The native width and height.
This calculates the actual size without taking account the current size of the object.
The main difference between this and evas_object_textblock_size_formatted_get is that the "native" function does not take wrapping into account it just calculates the real width of the object if it was placed on an infinite canvas, while the "formatted" function gives the size after wrapping text according to the size restrictions of the object.
For example for a textblock containing the text: "You shall not pass!" with no margins or padding and assuming a monospace font and a size of 7x10 char widths (for simplicity) has a native size of 19x1 and a formatted size of 5x4.
[in] | obj | The object. |
[out] | width | The width returned. |
[out] | height | The height returned. |
Eina_Bool evas_object_textblock_obstacle_add | ( | Efl_Canvas_Textblock * | obj, |
Efl_Canvas_Object * | eo_obs | ||
) |
Add obstacle evas object eo_obs
to be observed during layout of text.
The textblock does the layout of the text according to the position of the obstacle.
[in] | obj | The object. |
[in] | eo_obs | Obstacle object |
true
on success, false
otherwise.Eina_Bool evas_object_textblock_obstacle_del | ( | Efl_Canvas_Textblock * | obj, |
Efl_Canvas_Object * | eo_obs | ||
) |
Removes eo_obs
from observation during text layout.
[in] | obj | The object. |
[in] | eo_obs | Obstacle object |
true
on success, false
otherwise.void evas_object_textblock_obstacles_update | ( | Efl_Canvas_Textblock * | obj | ) |
Triggers for relayout due to obstacles' state change.
The obstacles alone don't affect the layout, until this is called. Use this after doing changes (moving, positioning etc.) in the obstacles that you would like to be considered in the layout.
For example: if you have just repositioned the obstacles to differrent coordinates relative to the textblock, you need to call this so it will consider this new state and will relayout the text.
[in] | obj | The object. |
const char* evas_textblock_escape_string_get | ( | const char * | escape | ) |
Returns the unescaped version of escape.
escape | the string to be escaped |
const char* evas_textblock_string_escape_get | ( | const char * | string, |
int * | len_ret | ||
) |
Returns the escaped version of the string.
string | to escape |
len_ret | the len of the part of the string that was used. |
const char* evas_textblock_escape_string_range_get | ( | const char * | escape_start, |
const char * | escape_end | ||
) |
Return the unescaped version of the string between start and end.
escape_start | the start of the string. |
escape_end | the end of the string. |
Referenced by edje_object_part_text_escaped_set().
Evas_Textblock_Style* evas_textblock_style_new | ( | void | ) |
Creates a new textblock style.
References EINA_TRUE.
Referenced by edje_object_part_text_style_user_push().
void evas_textblock_style_free | ( | Evas_Textblock_Style * | ts | ) |
Destroys a textblock style.
ts | The textblock style to free. |
Referenced by edje_edit_style_del(), and edje_object_part_text_style_user_push().
void evas_textblock_style_set | ( | Evas_Textblock_Style * | ts, |
const char * | text | ||
) |
Sets the style ts to the style passed as text by text.
Expected a string consisting of many (or none) tag='format' pairs.
ts | the style to set. |
text | the text to parse - NOT NULL. |
References eina_inlist_append(), EINA_INLIST_GET, EINA_LIST_FOREACH, eina_strbuf_append_char(), eina_strbuf_append_length(), eina_strbuf_free(), eina_strbuf_new(), eina_strbuf_reset(), eina_strbuf_string_get(), eina_stringshare_add(), eina_stringshare_add_length(), _Evas_Object_Style_Tag_Base::replace, _Evas_Object_Style_Tag_Base::tag, _Evas_Object_Style_Tag::tag, and _Evas_Object_Style_Tag_Base::tag_len.
Referenced by edje_object_part_text_style_user_push().
const char* evas_textblock_style_get | ( | const Evas_Textblock_Style * | ts | ) |
Return the text of the style ts.
ts | the style to get it's text. |
Referenced by edje_object_part_text_style_user_peek().
const Evas_Object_Textblock_Node_Format* evas_textblock_node_format_next_get | ( | const Evas_Object_Textblock_Node_Format * | n | ) |
Returns the next format node (after n)
n | the current format node - not null. |
References EINA_INLIST_GET.
const Evas_Object_Textblock_Node_Format* evas_textblock_node_format_prev_get | ( | const Evas_Object_Textblock_Node_Format * | n | ) |
Returns the prev format node (after n)
n | the current format node - not null. |
References EINA_INLIST_GET.
void evas_textblock_cursor_set_at_format | ( | Evas_Textblock_Cursor * | cur, |
const Evas_Object_Textblock_Node_Format * | n | ||
) |
Sets the cursor to point to the place where format points to.
cur | the cursor to update. |
n | the format node to update according. |
References evas_textblock_cursor_at_format_set().
const Evas_Object_Textblock_Node_Format* evas_textblock_cursor_format_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Return the format node at the position pointed by cur.
cur | the position to look at. |
NULL
otherwise. Referenced by evas_textblock_cursor_content_get(), and evas_textblock_cursor_format_prev().
const char* evas_textblock_node_format_text_get | ( | const Evas_Object_Textblock_Node_Format * | fnode | ) |
Get the text format representation of the format node.
fnode | the format node. |
References _Evas_Textblock_Node_Format::opener, _Evas_Textblock_Node_Format::orig_format, and _Evas_Textblock_Node_Format::own_closer.
void evas_textblock_cursor_at_format_set | ( | Evas_Textblock_Cursor * | cur, |
const Evas_Object_Textblock_Node_Format * | fmt | ||
) |
Set the cursor to point to the position of fmt.
cur | the cursor to update |
fmt | the format to update according to. |
Referenced by evas_textblock_cursor_set_at_format().
Eina_Bool evas_textblock_cursor_format_is_visible_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Check if the current cursor position is a visible format.
This way is more efficient than evas_textblock_cursor_format_get() to check for the existence of a visible format.
cur | the cursor to look at. |
EINA_TRUE
if the cursor points to a visible format, EINA_FALSE
otherwise. Referenced by evas_textblock_cursor_content_get().
Eina_Bool evas_textblock_cursor_format_next | ( | Evas_Textblock_Cursor * | cur | ) |
Advances to the next format node.
cur | the cursor to be updated. |
EINA_TRUE
on success EINA_FALSE
otherwise. References EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, _Evas_Object_Textblock_Node_Text::format_node, and _Evas_Textblock_Node_Format::text_node.
Eina_Bool evas_textblock_cursor_format_prev | ( | Evas_Textblock_Cursor * | cur | ) |
Advances to the previous format node.
cur | the cursor to update. |
EINA_TRUE
on success EINA_FALSE
otherwise. References EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, evas_textblock_cursor_format_get(), and _Evas_Textblock_Node_Format::text_node.
Eina_Bool evas_textblock_cursor_is_format | ( | const Evas_Textblock_Cursor * | cur | ) |
Returns true if the cursor points to a format.
cur | the cursor to check. |
EINA_TRUE
if a cursor points to a format EINA_FALSE
otherwise. int evas_textblock_cursor_pos_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Return the current cursor pos.
cur | the cursor to take the position from. |
References EINA_INLIST_GET, and eina_ustrbuf_length_get().
Eina_Bool evas_textblock_cursor_line_set | ( | Evas_Textblock_Cursor * | cur, |
int | line | ||
) |
Go to the start of the line passed.
cur | cursor to update. |
line | number to set. |
EINA_TRUE
on success, EINA_FALSE
on error. References EINA_FALSE, and EINA_TRUE.
Referenced by evas_textblock_cursor_line_coord_set().
Eina_Bool evas_textblock_cursor_format_append | ( | Evas_Textblock_Cursor * | cur, |
const char * | format | ||
) |
Adds format to the current cursor position.
If the format being added is a visible format, add it before the cursor position, otherwise, add it after. This behavior is because visible formats are like characters and invisible should be stacked in a way that the last one is added last.
This function works with native formats, that means that style defined tags like
won't work here. For those kind of things use markup prepend.
cur | the cursor to where to add format at. |
format | the format to add. |
cur | the cursor to look at. |
EINA_TRUE
if the cursor points to the terminating null, EINA_FALSE
otherwise. References EINA_FALSE.
Eina_Bool evas_textblock_cursor_format_prepend | ( | Evas_Textblock_Cursor * | cur, |
const char * | format | ||
) |
Adds format to the current cursor position.
If the format being added is a visible format, add it before the cursor position, otherwise, add it after. This behavior is because visible formats are like characters and invisible should be stacked in a way that the last one is added last. If the format is visible the cursor is advanced after it.
This function works with native formats, that means that style defined tags like
won't work here. For those kind of things use markup prepend.
cur | the cursor to where to add format at. |
format | the format to add. |
void evas_textblock_cursor_range_delete | ( | Evas_Textblock_Cursor * | cur1, |
Evas_Textblock_Cursor * | cur2 | ||
) |
Delete the range between cur1 and cur2.
cur1 | one side of the range. |
cur2 | the second side of the range |
References _Evas_Object_Textblock_Node_Text::dirty, EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, eina_ustrbuf_length_get(), eina_ustrbuf_remove(), evas_textblock_cursor_compare(), evas_textblock_cursor_copy(), and _Evas_Object_Textblock_Node_Text::unicode.
const char* evas_textblock_cursor_paragraph_text_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Return the text of the paragraph cur points to - returns the text in markup.
cur | the cursor pointing to the paragraph. |
NULL
otherwise. References evas_textblock_cursor_paragraph_char_first(), evas_textblock_cursor_paragraph_char_last(), EVAS_TEXTBLOCK_TEXT_MARKUP, and _Evas_Object_Textblock_Node_Text::utf8.
int evas_textblock_cursor_paragraph_text_length_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Return the length of the paragraph, cheaper the eina_unicode_strlen()
cur | the position of the paragraph. |
References EINA_INLIST_GET, eina_ustrbuf_length_get(), and _Evas_Object_Textblock_Node_Text::unicode.
Eina_Bool evas_textblock_cursor_visible_range_get | ( | Evas_Textblock_Cursor * | start, |
Evas_Textblock_Cursor * | end | ||
) |
Return the currently visible range.
start | the start of the range. |
end | the end of the range. |
EINA_TRUE
on success, EINA_FALSE
otherwise. References EINA_FALSE, EINA_TRUE, EVAS_CANVAS_CLASS, evas_object_evas_get(), evas_textblock_cursor_line_char_last(), and evas_textblock_cursor_line_coord_set().
Referenced by evas_object_textblock_visible_range_get().
Eina_List* evas_textblock_cursor_range_formats_get | ( | const Evas_Textblock_Cursor * | cur1, |
const Evas_Textblock_Cursor * | cur2 | ||
) |
Return the format nodes in the range between cur1 and cur2.
cur1 | one side of the range. |
cur2 | the other side of the range |
References EINA_INLIST_GET, eina_list_append(), evas_textblock_cursor_compare(), _Evas_Object_Textblock_Node_Text::format_node, and _Evas_Textblock_Node_Format::text_node.
char* evas_textblock_cursor_range_text_get | ( | const Evas_Textblock_Cursor * | cur1, |
const Evas_Textblock_Cursor * | cur2, | ||
Evas_Textblock_Text_Type | format | ||
) |
Return the text in the range between cur1 and cur2.
cur1 | one side of the range. |
cur2 | the other side of the range |
format | The form on which to return the text. Markup - in textblock markup. Plain - UTF8. |
char* evas_textblock_cursor_content_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Return the content of the cursor.
Free the returned string pointer when done (if it is not NULL).
cur | the cursor |
References eina_strbuf_free(), eina_strbuf_new(), eina_strbuf_string_steal(), eina_unicode_unicode_to_utf8(), eina_ustrbuf_string_get(), evas_textblock_cursor_format_get(), evas_textblock_cursor_format_is_visible_get(), and _Evas_Object_Textblock_Node_Text::unicode.
Eina_Bool evas_textblock_cursor_geometry_bidi_get | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Coord * | cx, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cw, | ||
Evas_Coord * | ch, | ||
Evas_Coord * | cx2, | ||
Evas_Coord * | cy2, | ||
Evas_Coord * | cw2, | ||
Evas_Coord * | ch2, | ||
Evas_Textblock_Cursor_Type | ctype | ||
) |
Returns the geometry of two cursors ("split cursor"), if logical cursor is between LTR/RTL text, also considering paragraph direction.
Upper cursor is shown for the text of the same direction as paragraph, lower cursor - for opposite.
Split cursor geometry is valid only in '|' cursor mode. In this case EINA_TRUE
is returned and cx2, cy2, cw2, ch2 are set, otherwise it behaves like cursor_geometry_get.
[in] | cur | the cursor. |
[out] | cx | the x of the cursor (or upper cursor) |
[out] | cy | the y of the cursor (or upper cursor) |
[out] | cw | the width of the cursor (or upper cursor) |
[out] | ch | the height of the cursor (or upper cursor) |
[out] | cx2 | the x of the lower cursor |
[out] | cy2 | the y of the lower cursor |
[out] | cw2 | the width of the lower cursor |
[out] | ch2 | the height of the lower cursor |
[in] | ctype | the type of the cursor. |
EINA_TRUE
for split cursor, EINA_FALSE
otherwise References _EINA_INLIST_CONTAINER, EINA_FALSE, EINA_INLIST_GET, EINA_LIST_FOREACH, EINA_TRUE, evas_textblock_cursor_eol_get(), evas_textblock_cursor_geometry_get(), evas_textblock_cursor_pen_geometry_get(), and EVAS_TEXTBLOCK_CURSOR_UNDER.
int evas_textblock_cursor_geometry_get | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Coord * | cx, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cw, | ||
Evas_Coord * | ch, | ||
Evas_BiDi_Direction * | dir, | ||
Evas_Textblock_Cursor_Type | ctype | ||
) |
Returns the geometry of the cursor.
Depends on the type of cursor requested. This should be used instead of char_geometry_get because there are weird special cases with BiDi text. in '_' cursor mode (i.e a line below the char) it's the same as char_geometry get, except for the case of the last char of a line which depends on the paragraph direction.
in '|' cursor mode (i.e a line between two chars) it is very variable. For example consider the following visual string: "abcCBA" (ABC are rtl chars), a cursor pointing on A should actually draw a '|' between the c and the C.
cur | the cursor. |
cx | the x of the cursor |
cy | the y of the cursor |
cw | the width of the cursor |
ch | the height of the cursor |
dir | the direction of the cursor, can be NULL. |
ctype | the type of the cursor. |
References EVAS_TEXTBLOCK_CURSOR_BEFORE, evas_textblock_cursor_pen_geometry_get(), and EVAS_TEXTBLOCK_CURSOR_UNDER.
Referenced by evas_textblock_cursor_geometry_bidi_get().
int evas_textblock_cursor_char_geometry_get | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Coord * | cx, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cw, | ||
Evas_Coord * | ch | ||
) |
Returns the geometry of the char at cur.
cur | the position of the char. |
cx | the x of the char. |
cy | the y of the char. |
cw | the w of the char. |
ch | the h of the char. |
int evas_textblock_cursor_pen_geometry_get | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Coord * | cpen_x, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cadv, | ||
Evas_Coord * | ch | ||
) |
Returns the geometry of the pen at cur.
cur | the position of the char. |
cpen_x | the pen_x of the char. |
cy | the y of the char. |
cadv | the adv of the char. |
ch | the h of the char. |
Referenced by evas_textblock_cursor_geometry_bidi_get(), and evas_textblock_cursor_geometry_get().
int evas_textblock_cursor_line_geometry_get | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Coord * | cx, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cw, | ||
Evas_Coord * | ch | ||
) |
Returns the geometry of the line at cur.
cur | the position of the line. |
cx | the x of the line. |
cy | the y of the line. |
cw | the width of the line. |
ch | the height of the line. |
int evas_textblock_cursor_line_coord_set | ( | Evas_Textblock_Cursor * | cur, |
Evas_Coord | y | ||
) |
Set the cursor position according to the y coord.
cur | the cur to be set. |
y | the coord to set by. |
References EINA_INLIST_FOREACH, EINA_INLIST_GET, evas_textblock_cursor_line_set(), evas_textblock_cursor_paragraph_first(), evas_textblock_cursor_paragraph_last(), and _Evas_Object_Textblock_Node_Text::par.
Referenced by evas_textblock_cursor_visible_range_get().
Eina_List* evas_textblock_cursor_range_geometry_get | ( | const Evas_Textblock_Cursor * | cur1, |
const Evas_Textblock_Cursor * | cur2 | ||
) |
Get the geometry of a range.
cur1 | one side of the range. |
cur2 | other side of the range. |
Eina_Iterator* evas_textblock_cursor_range_simple_geometry_get | ( | const Evas_Textblock_Cursor * | cur1, |
const Evas_Textblock_Cursor * | cur2 | ||
) |
Get the simple geometry of a range.
The simple geometry is the geometry in which rectangles in middle lines of range are merged into one big rectangle.
cur1 | one side of the range. |
cur2 | other side of the range. |
References EINA_FALSE, eina_list_append(), eina_list_merge(), EINA_TRUE, evas_object_geometry_get(), evas_textblock_cursor_compare(), _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
Eina_Bool evas_textblock_cursor_eol_get | ( | const Evas_Textblock_Cursor * | cur | ) |
Checks if the cursor points to the end of the line.
cur | the cursor to check. |
EINA_TRUE
if true, EINA_FALSE
otherwise. References EINA_FALSE, EINA_TRUE, and evas_textblock_cursor_line_char_last().
Referenced by evas_textblock_cursor_geometry_bidi_get().
Eina_Bool evas_textblock_cursor_char_prev | ( | Evas_Textblock_Cursor * | obj | ) |
Advances the cursor one char backwards.
true
on success, false
otherwise. References EINA_FALSE.
Eina_Bool evas_textblock_cursor_char_next | ( | Evas_Textblock_Cursor * | obj | ) |
Advances the cursor one char forward.
true
on success, false
otherwise. References EINA_FALSE.
Eina_Bool evas_textblock_cursor_cluster_prev | ( | Evas_Textblock_Cursor * | obj | ) |
Advances the cursor one grapheme cluster backwards.
true
on success, false
otherwise. References EINA_TRUE.
Eina_Bool evas_textblock_cursor_cluster_next | ( | Evas_Textblock_Cursor * | obj | ) |
Advances the cursor one grapheme cluster forward.
true
on success, false
otherwise. References EINA_TRUE.
Eina_Bool evas_textblock_cursor_paragraph_next | ( | Evas_Textblock_Cursor * | obj | ) |
Advances to the start of the next text node.
true
if managed to advance, false
otherwise References EINA_FALSE.
Eina_Bool evas_textblock_cursor_paragraph_prev | ( | Evas_Textblock_Cursor * | obj | ) |
Advances to the end of the previous text node.
true
if managed to advance, false
otherwise References EINA_FALSE.
Eina_Bool evas_textblock_cursor_word_start | ( | Evas_Textblock_Cursor * | obj | ) |
Moves the cursor to the start of the word under the cursor.
true
on success, false
otherwise References EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, eina_ustrbuf_length_get(), eina_ustrbuf_string_get(), evas_textblock_cursor_word_start(), and _Evas_Object_Textblock_Node_Text::unicode.
Referenced by evas_textblock_cursor_word_start().
Eina_Bool evas_textblock_cursor_word_end | ( | Evas_Textblock_Cursor * | obj | ) |
Moves the cursor to the end of the word under the cursor.
true
on success, false
otherwise References EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, eina_ustrbuf_length_get(), eina_ustrbuf_string_get(), evas_textblock_cursor_word_end(), and _Evas_Object_Textblock_Node_Text::unicode.
Referenced by evas_textblock_cursor_word_end().
Evas_Object* evas_object_textblock_add | ( | Evas * | e | ) |
Adds a textblock to the given evas.
e | The given evas. |
References EINA_FALSE, and EINA_TRUE.
char* evas_textblock_text_markup_to_utf8 | ( | const Evas_Object * | obj, |
const char * | text | ||
) |
Return the plain version of the markup.
Works as if you set the markup to a textblock and then retrieve the plain version of the text. i.e:
and <
> will be replaced with
, &...; with the actual char and etc.
obj | The textblock object to work with. (if NULL , tries the default). |
text | The markup text (if NULL , return NULL ). |
References eina_strbuf_append(), eina_strbuf_append_length(), eina_strbuf_free(), eina_strbuf_new(), eina_strbuf_string_steal(), ERR, and evas_object_textblock_style_get().
char* evas_textblock_text_utf8_to_markup | ( | const Evas_Object * | obj, |
const char * | text | ||
) |
Return the markup version of the plain text.
Replaces \n -> <br/> \t -> <tab/> and etc. Generally needed before you pass plain text to be set in a textblock.
obj | the textblock object to work with (if NULL , it just does the default behaviour, i.e with no extra object information). |
text | The plain text (if NULL , return NULL ). |
References eina_strbuf_free(), eina_strbuf_new(), and eina_strbuf_string_steal().
void evas_object_textblock_clear | ( | Evas_Object * | obj | ) |
Clear the textblock object.
obj | the object to clear. |
References evas_textblock_cursor_paragraph_first(), and evas_textblock_cursor_text_append().
void evas_object_textblock_text_markup_set | ( | Evas_Object * | obj, |
const char * | text | ||
) |
Sets given text as markup for the textblock object.
obj | the textblock object. |
text | the markup text to set. |
References EINA_SAFETY_ON_NULL_RETURN.
const char* evas_object_textblock_text_markup_get | ( | Evas_Object * | obj | ) |
Gets the current markup text of the textblock object.
obj | the textblock object. |
References EINA_SAFETY_ON_NULL_RETURN_VAL.
Referenced by edje_object_part_text_unescaped_get().
void evas_object_textblock_text_markup_prepend | ( | Evas_Textblock_Cursor * | cur, |
const char * | text | ||
) |
Prepends markup to the cursor cur.
cur | the cursor to prepend to. |
text | the markup text to prepend. |
References EINA_SAFETY_ON_NULL_RETURN.
void evas_object_textblock_style_set | ( | Evas_Object * | obj, |
const Evas_Textblock_Style * | ts | ||
) |
Sets object's style to given style.
obj | the object we set the style on |
ts | the style to set. |
References EINA_SAFETY_ON_NULL_RETURN.
Evas_Textblock_Style* evas_object_textblock_style_get | ( | const Evas_Object * | obj | ) |
Gets the object's current style.
obj | the object to get the style from. |
References EINA_SAFETY_ON_NULL_RETURN_VAL.
Referenced by evas_textblock_text_markup_to_utf8().
void evas_object_textblock_style_user_push | ( | Evas_Object * | obj, |
Evas_Textblock_Style * | ts | ||
) |
Pushes ts to the top of the user style stack.
FIXME: API is solid but currently only supports 1 style in the stack.
The user style overrides the corresponding elements of the regular style. This is the proper way to do theme overrides in code.
obj | the object to push the style. |
References EINA_SAFETY_ON_NULL_RETURN.
Referenced by edje_object_part_text_style_user_push().
const Evas_Textblock_Style* evas_object_textblock_style_user_peek | ( | const Evas_Object * | obj | ) |
Peeks at the user-styles stack.
obj | the object to get the style from. |
References EINA_SAFETY_ON_NULL_RETURN_VAL.
Referenced by edje_object_part_text_style_user_peek().
void evas_object_textblock_style_user_pop | ( | Evas_Object * | obj | ) |
Removes the style at the top of the user-style stack.
obj | the object to remove the style from. |
References EINA_SAFETY_ON_NULL_RETURN.
Referenced by edje_object_part_text_style_user_pop().
const Evas_Object_Textblock_Node_Format* evas_textblock_node_format_first_get | ( | Evas_Object * | obj | ) |
Gets the first format node.
obj | The textblock object. |
References EINA_SAFETY_ON_NULL_RETURN_VAL.
const Evas_Object_Textblock_Node_Format* evas_textblock_node_format_last_get | ( | Evas_Object * | obj | ) |
Gets the last format node.
obj | The textblock object. |
References EINA_INLIST_GET, and EINA_SAFETY_ON_NULL_RETURN_VAL.
const Eina_List* evas_textblock_node_format_list_get | ( | const Evas_Object * | obj, |
const char * | anchor | ||
) |
Gets a list of format nodes that match given format.
obj | The textblock object to query. |
anchor | The format to find in the textblock. |
References EINA_SAFETY_ON_NULL_RETURN_VAL.
void evas_textblock_node_format_remove_pair | ( | Evas_Object * | obj, |
Evas_Object_Textblock_Node_Format * | n | ||
) |
Removes format node and its matching format node.
obj | The textblock object. |
n | The format node to remove. |
References _Evas_Object_Textblock_Node_Text::dirty, EINA_INLIST_GET, EINA_LIST_FOREACH, eina_list_free(), eina_list_next(), eina_list_prepend(), eina_list_remove_list(), EINA_SAFETY_ON_NULL_RETURN, EINA_TRUE, eina_ustrbuf_remove(), _Evas_Textblock_Node_Format::opener, _Evas_Textblock_Node_Format::orig_format, _Evas_Textblock_Node_Format::own_closer, and _Evas_Textblock_Node_Format::text_node.
Eina_Bool evas_object_textblock_line_number_geometry_get | ( | const Evas_Object * | obj, |
int | line, | ||
Evas_Coord * | cx, | ||
Evas_Coord * | cy, | ||
Evas_Coord * | cw, | ||
Evas_Coord * | ch | ||
) |
Gets the geometry of the line specified by its number.
obj | The textblock object to query. |
line | the line number of the queried line. |
References EINA_FALSE, EINA_SAFETY_ON_NULL_RETURN_VAL, and EINA_TRUE.
void evas_textblock_cursor_copy | ( | const Evas_Textblock_Cursor * | cur, |
Evas_Textblock_Cursor * | cur_dest | ||
) |
Make cur_dest point to the same place as cur.
Does not work if they don't point to the same object.
cur | the source cursor. |
cur_dest | destination cursor. |
References evas_textblock_cursor_equal().
Referenced by evas_textblock_cursor_range_delete().
Evas_Textblock_Cursor* evas_object_textblock_cursor_new | ( | const Evas_Object * | obj | ) |
Create a new cursor, associate it to the obj and init it to point to the start of the textblock.
Association to the object means the cursor will be updated when the object will change.
Note: if you need speed and you know what you are doing, it's slightly faster to just allocate the cursor yourself and not associate it. (only people developing the actual object, and not users of the object).
obj | The textblock to which the new cursor will associate. |
References eina_list_append(), and EINA_SAFETY_ON_NULL_RETURN_VAL.
Eina_Bool evas_textblock_cursor_char_coord_set | ( | Evas_Textblock_Cursor * | obj, |
Evas_Coord | x, | ||
Evas_Coord | y | ||
) |
Sets the position of the cursor according to the X and Y coordinates.
[in] | y | y coord to set by. |
true
on success, false
otherwise. References EINA_FALSE.
Eina_Bool evas_textblock_cursor_cluster_coord_set | ( | Evas_Textblock_Cursor * | obj, |
Evas_Coord | x, | ||
Evas_Coord | y | ||
) |
Sets the position of the cursor according to the X and Y coordinates and grapheme clusters of text.
[in] | y | y coord to set by. |
true
on success, false
otherwise. References EINA_TRUE.
void evas_textblock_cursor_free | ( | Evas_Textblock_Cursor * | cur | ) |
Free the cursor and unassociate it from the object.
cur | the cursor to free. |
References eina_list_remove().
int evas_textblock_cursor_text_append | ( | Evas_Textblock_Cursor * | cur, |
const char * | text | ||
) |
Adds text to the current cursor position and set the cursor to before the start of the text just added.
cur | the cursor to where to add text at. |
text | the text to add. |
Referenced by evas_object_textblock_clear().
int evas_textblock_cursor_text_prepend | ( | Evas_Textblock_Cursor * | cur, |
const char * | text | ||
) |
Adds text to the current cursor position and set the cursor to after the start of the text just added.
cur | the cursor to where to add text at. |
text | the text to add. |
void evas_object_textblock_replace_char_set | ( | Evas_Object * | obj, |
const char * | ch | ||
) |
The "replacement character" to use for the given textblock object.
[in] | ch | The charset name. |
References EINA_SAFETY_ON_NULL_RETURN, eina_stringshare_add(), and eina_stringshare_del().
const char* evas_object_textblock_replace_char_get | ( | const Evas_Object * | obj | ) |
The "replacement character" to use for the given textblock object.
References EINA_SAFETY_ON_NULL_RETURN_VAL.
void evas_object_textblock_valign_set | ( | Evas_Object * | obj, |
double | align | ||
) |
The vertical alignment of text within the textblock object as a whole.
Normally alignment is 0.0 (top of object). Values given should be between 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered etc.).
[in] | align | The alignment set for the object. |
References EINA_DBL_EQ, and EINA_SAFETY_ON_NULL_RETURN.
double evas_object_textblock_valign_get | ( | const Evas_Object * | obj | ) |
The vertical alignment of text within the textblock object as a whole.
Normally alignment is 0.0 (top of object). Values given should be between 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered etc.).
References EINA_SAFETY_ON_NULL_RETURN_VAL.
void evas_textblock_cursor_paragraph_first | ( | Evas_Textblock_Cursor * | cur | ) |
Sets the cursor to the start of the first text node.
cur | the cursor to update. |
Referenced by evas_object_textblock_clear(), and evas_textblock_cursor_line_coord_set().
void evas_textblock_cursor_paragraph_last | ( | Evas_Textblock_Cursor * | cur | ) |
sets the cursor to the end of the last text node.
cur | the cursor to set. |
References EINA_INLIST_GET, and evas_textblock_cursor_paragraph_char_last().
Referenced by evas_textblock_cursor_line_coord_set().
int evas_textblock_cursor_compare | ( | const Evas_Textblock_Cursor * | cur1, |
const Evas_Textblock_Cursor * | cur2 | ||
) |
Compare two cursors.
cur1 | the first cursor. |
cur2 | the second cursor. |
References EINA_INLIST_GET, _Eina_Inlist::next, and _Eina_Inlist::prev.
Referenced by evas_textblock_cursor_range_delete(), evas_textblock_cursor_range_formats_get(), and evas_textblock_cursor_range_simple_geometry_get().
Eina_Bool evas_textblock_cursor_equal | ( | const Evas_Textblock_Cursor * | obj, |
const Evas_Textblock_Cursor * | cur | ||
) |
Checks if two cursors are equal.
This is faster than evas_textblock_cursor_compare so it should be used if all we care about is equality.
[in] | cur | The second cursor. |
true
if equalReferenced by evas_textblock_cursor_copy().
void evas_textblock_cursor_line_char_first | ( | Evas_Textblock_Cursor * | cur | ) |
Go to the start of the current line.
cur | the cursor to update. |
void evas_textblock_cursor_line_char_last | ( | Evas_Textblock_Cursor * | cur | ) |
Go to the end of the current line.
cur | the cursor to update. |
References EINA_INLIST_FOREACH, and EINA_INLIST_GET.
Referenced by evas_textblock_cursor_eol_get(), and evas_textblock_cursor_visible_range_get().
void evas_textblock_cursor_pos_set | ( | Evas_Textblock_Cursor * | cur, |
int | _pos | ||
) |
Set the cursor pos.
cur | the cursor to be set. |
_pos | the pos to set. |
References EINA_INLIST_GET, eina_ustrbuf_length_get(), and _Evas_Object_Textblock_Node_Text::unicode.
void evas_textblock_cursor_paragraph_char_first | ( | Evas_Textblock_Cursor * | cur | ) |
Go to the first char in the node the cursor is pointing on.
cur | the cursor to update. |
Referenced by evas_textblock_cursor_paragraph_text_get().
void evas_textblock_cursor_paragraph_char_last | ( | Evas_Textblock_Cursor * | cur | ) |
Go to the last char in a text node.
cur | the cursor to update. |
References EINA_INLIST_GET, eina_ustrbuf_length_get(), and _Evas_Object_Textblock_Node_Text::unicode.
Referenced by evas_textblock_cursor_paragraph_last(), and evas_textblock_cursor_paragraph_text_get().
void evas_textblock_cursor_char_delete | ( | Evas_Textblock_Cursor * | cur | ) |
Deletes a single character from position pointed by given cursor.
cur | the cursor to update. |
References _Evas_Object_Textblock_Node_Text::dirty, EINA_FALSE, EINA_INLIST_GET, EINA_TRUE, eina_ustrbuf_length_get(), eina_ustrbuf_remove(), eina_ustrbuf_string_get(), _Evas_Textblock_Node_Format::format, _Evas_Textblock_Node_Format::own_closer, and _Evas_Textblock_Node_Format::visible.
int evas_textblock_fit_options_get | ( | const Evas_Object * | obj, |
unsigned int * | p_options | ||
) |
Get the object's content fit options.
obj | The textblock object. | |
[out] | p_options | content fitting options. |
int evas_textblock_fit_options_set | ( | Evas_Object * | obj, |
unsigned int | options | ||
) |
Set the object's content fit options.
obj | The textblock object. | |
[in] | options | content fitting options. |
int evas_textblock_fit_size_range_get | ( | const Evas_Object * | obj, |
unsigned int * | p_min_font_size, | ||
unsigned int * | p_max_font_size | ||
) |
Get the object's max and min font sizes used for fitting content.
obj | The textblock object. | |
[out] | p_min_font_size | min font size used when fitting content. |
[out] | p_max_font_size | max font size used when fitting content. |
int evas_textblock_fit_size_range_set | ( | Evas_Object * | obj, |
unsigned int | min_font_size, | ||
unsigned int | max_font_size | ||
) |
Set the object's max and min font sizes used for fitting content.
obj | The textblock object. | |
[in] | min_font_size | min font size used when fitting content. |
[in] | max_font_size | max font size used when fitting content. |
int evas_textblock_fit_step_size_get | ( | const Evas_Object * | obj, |
unsigned int * | p_step_size | ||
) |
Get the object's fitting step size when trying fonts between min font size and max font size.
obj | The textblock object. | |
[out] | p_step_size | step jumps between min and max font size. |
int evas_textblock_fit_step_size_set | ( | Evas_Object * | obj, |
unsigned int | step_size | ||
) |
Set the object's fitting step size when trying fonts between min font size and max font size.
obj | The textblock object. | |
[out] | step_size | step jumps between min and max font size. |
int evas_textblock_fit_size_array_get | ( | const Evas_Object * | obj, |
unsigned int * | p_size_array, | ||
size_t * | p_size_array_len, | ||
size_t | request_size_array | ||
) |
Get copy of the object's fitting font size array used internally.
obj | The textblock object. | |
[out] | p_size_array | pointer to size array (passing NULL will ignore filling array). |
[out] | p_size_array_len | the length of internall font sizes array. |
[out] | request_size_array | request to fill specific amount in p_size_array. |
int evas_textblock_fit_size_array_set | ( | Evas_Object * | obj, |
const unsigned int * | p_size_array, | ||
size_t | size_array_len | ||
) |
Set the object's fitting font size array that will be used internally Changing fitting step_size,min_font_size,max_font size will generate new array Internall array will be sorted.
obj | The textblock object. | |
[in] | p_size_array | pointer to font sizes array. |
[in] | size_array_len | the length passed font sizes array. |