Etk
Main Page Object Hierarchy Data Structures Related Pages
Etk

Etk_Textblock2


Detailed Description

TODO: Etk_Textblock2: brief description.


Data Structures

struct  Etk_Textblock2_Format
struct  Etk_Textblock2_Node
struct  Etk_Textblock2_Line
struct  Etk_Textblock2_Paragraph
struct  Etk_Textblock2_Iter
 TODOC. More...
struct  Etk_Textblock2
 [Object] TODOC More...

Defines

#define ETK_TEXTBLOCK2_TYPE   (etk_textblock2_type_get())
#define ETK_TEXTBLOCK2(obj)   (ETK_OBJECT_CAST((obj), ETK_TEXTBLOCK2_TYPE, Etk_Textblock2))
#define ETK_IS_TEXTBLOCK2(obj)   (ETK_OBJECT_CHECK_TYPE((obj), ETK_TEXTBLOCK2_TYPE))

Enumerations

enum  Etk_Textblock2_Wrap {
  ETK_TEXTBLOCK2_WRAP_NONE,
  ETK_TEXTBLOCK2_WRAP_WORD,
  ETK_TEXTBLOCK2_WRAP_CHAR
}
 The different types of wrapping to apply on a textblock's paragraph. More...
enum  Etk_Textblock2_Tag_Type {
  ETK_TEXTBLOCK2_TAG_DEFAULT = 0,
  ETK_TEXTBLOCK2_TAG_BOLD = 1 << 0,
  ETK_TEXTBLOCK2_TAG_ITALIC = 1 << 1,
  ETK_TEXTBLOCK2_TAG_UNDERLINE = 1 << 2,
  ETK_TEXTBLOCK2_TAG_STRIKETHROUGH = 1 << 3,
  ETK_TEXTBLOCK2_TAG_STYLE = 1 << 4,
  ETK_TEXTBLOCK2_TAG_FONT = 1 << 5
}
 The different types of tag for a node. More...
enum  Etk_Textblock2_Style_Type {
  ETK_TEXTBLOCK2_STYLE_NONE,
  ETK_TEXTBLOCK2_STYLE_OUTLINE,
  ETK_TEXTBLOCK2_STYLE_SHADOW,
  ETK_TEXTBLOCK2_STYLE_SOFT_OUTLINE,
  ETK_TEXTBLOCK2_STYLE_GLOW,
  ETK_TEXTBLOCK2_STYLE_OUTLINE_SHADOW,
  ETK_TEXTBLOCK2_STYLE_FAR_SHADOW,
  ETK_TEXTBLOCK2_STYLE_OUTLINE_SOFT_SHADOW,
  ETK_TEXTBLOCK2_STYLE_SOFT_SHADOW,
  ETK_TEXTBLOCK2_STYLE_FAR_SOFT_SHADOW
}
 The different types of style that can be applied on a text. More...
enum  Etk_Textblock2_Underline_Type {
  ETK_TEXTBLOCK2_UNDERLINE_NONE,
  ETK_TEXTBLOCK2_UNDERLINE_SINGLE,
  ETK_TEXTBLOCK2_UNDERLINE_DOUBLE
}
 The different type of underlining for a text. More...

Functions

Etk_Textblock2 * etk_textblock2_new (void)
 Creates a new textblock.
void etk_textblock2_text_set (Etk_Textblock2 *tb, const char *text, Etk_Bool markup)
 Sets the text of the textblock. The current text will be replaced by text.
Etk_String * etk_textblock2_text_get (Etk_Textblock2 *tb, Etk_Bool markup)
 Gets the text of the textblock.
Etk_String * etk_textblock2_range_text_get (Etk_Textblock2_Iter *iter1, Etk_Textblock2_Iter *iter2, Etk_Bool markup)
 Gets the text of the textblock, between iter1 and iter2.
void etk_textblock2_insert (Etk_Textblock2_Iter *iter, const char *text, int length)
 Inserts length bytes of text at iter in the textblock. If you want to use tags to format the inserted text, you should use etk_textblock2_insert_markup() instead.
void etk_textblock2_insert_markup (Etk_Textblock2_Iter *iter, const char *markup_text, int length)
 Inserts length bytes of text at iter in the textblock. Tags can be used to format the text.
void etk_textblock2_clear (Etk_Textblock2 *tb)
 Clears the text of the given textblock. After this operation, the textblock will only have one paragraph, with one line made up of one empty node. All the iterators will still be valid and will be placed at the start of the empty textblock.
Etk_Bool etk_textblock2_delete_before (Etk_Textblock2_Iter *iter)
 Deletes the character before the iterator.
Etk_Bool etk_textblock2_delete_after (Etk_Textblock2_Iter *iter)
 Deletes the character after the iterator.
void etk_textblock2_delete_range (Etk_Textblock2_Iter *iter1, Etk_Textblock2_Iter *iter2)
 Deletes the text between iter1 and iter2.
void etk_textblock2_printf (Etk_Textblock2 *tb)
 Prints the textblock's structure to stdout. This function is for debug-purpose only and should be deleted soon.
Etk_Textblock2_Paragraph * etk_textblock2_paragraph_add (Etk_Textblock2_Iter *iter)
 Adds a new paragraph to the textblock at . The new paragraph will contain the content of the current paragraph located after the iterator. The iterator will be placed at the start of the new paragraph. The new paragraph will have the same properties as the current one.
Etk_Bool etk_textblock2_paragraph_delete (Etk_Textblock2_Paragraph *paragraph)
 Deletes an existing paragraph of a textblock. If the paragraph was the last remaining paragraph of the textblock, a new empty paragraph will be created (a textblock always has to have at least one paragraph in order to remain valid). The iterators will be moved to the start of the next paragraph if there is one, or to the end of the textblock otherwise.
Etk_Textblock2_Paragraph * etk_textblock2_paragraph_first_get (Etk_Textblock2 *tb)
 Gets the first paragraph of the textblock.
Etk_Textblock2_Paragraph * etk_textblock2_paragraph_last_get (Etk_Textblock2 *tb)
 Gets the last paragraph of the textblock.
Etk_Textblock2_Paragraph * etk_textblock2_paragraph_prev_get (Etk_Textblock2_Paragraph *paragraph)
 Gets the paragraph before paragraph.
Etk_Textblock2_Paragraph * etk_textblock2_paragraph_next_get (Etk_Textblock2_Paragraph *paragraph)
 Gets the paragraph after paragraph.
Etk_Textblock2_Line * etk_textblock2_line_add (Etk_Textblock2_Iter *iter)
 Adds a new line to the textblock at . The new line will contain the content of the current line located after the iterator. The iterator will be placed at the start of the new line.
Etk_Bool etk_textblock2_line_delete (Etk_Textblock2_Line *line)
 Deletes an existing line of a paragraph. If the line was the last remaining line of the paragraph, a new empty line will be created (a paragraph always has to have at least one line in order to remain valid). The iterators will be moved to the start of the next line if there is one, or to the end of the textblock otherwise.
Etk_Textblock2_Line * etk_textblock2_line_first_get (Etk_Textblock2_Paragraph *paragraph)
 Gets the first line of the paragraph.
Etk_Textblock2_Line * etk_textblock2_line_last_get (Etk_Textblock2_Paragraph *paragraph)
 Gets the last line of the paragraph.
Etk_Textblock2_Line * etk_textblock2_line_prev_get (Etk_Textblock2_Line *line)
 Gets the line before node in the current paragraph.
Etk_Textblock2_Line * etk_textblock2_line_next_get (Etk_Textblock2_Line *line)
 Gets the line after node in the current paragraph.
Etk_Textblock2_Line * etk_textblock2_line_walk_prev (Etk_Textblock2_Line *line)
 Walks to the previous line of the textblock. Unlike etk_textblock2_line_prev_get(), this function will not return NULL if the line is the first line of the paragraph. In this case, it will return the last line of the previous paragraph of the textblock.
Etk_Textblock2_Line * etk_textblock2_line_walk_next (Etk_Textblock2_Line *line)
 Walks to the next line of the textblock. Unlike etk_textblock2_line_next_get(), this function will not return NULL if the line is the last line of the paragraph. In this case, it will return the first line of the next paragraph of the textblock.
Etk_Textblock2_Node * etk_textblock2_node_add (Etk_Textblock2_Iter *iter)
 Adds an empty node to the textblock at .
Etk_Bool etk_textblock2_node_delete (Etk_Textblock2_Node *node)
 Deletes an existing node of a line. If the node was the last remaining node of the line, a new empty node will be created (a line always has to have at least one node in order to remain valid). The iterators will be moved to the start of the next node if there is one, or to the end of the textblock otherwise.
Etk_Textblock2_Node * etk_textblock2_node_first_get (Etk_Textblock2_Line *line)
 Gets the first node of the line.
Etk_Textblock2_Node * etk_textblock2_node_last_get (Etk_Textblock2_Line *line)
 Gets the last node of the line.
Etk_Textblock2_Node * etk_textblock2_node_prev_get (Etk_Textblock2_Node *node)
 Gets the node before node in the current line.
Etk_Textblock2_Node * etk_textblock2_node_next_get (Etk_Textblock2_Node *node)
 Gets the node after node in the current line.
Etk_Textblock2_Node * etk_textblock2_node_walk_prev (Etk_Textblock2_Node *node)
 Walks to the previous node of the textblock. Unlike etk_textblock2_node_prev_get(), this function will not return NULL if the node is the first node of the line. In this case, it will return the last node of the previous line of the textblock.
Etk_Textblock2_Node * etk_textblock2_node_walk_next (Etk_Textblock2_Node *node)
 Walks to the next node of the textblock. Unlike etk_textblock2_node_next_get(), this function will not return NULL if the node is the last node of the line. In this case, it will return the first node of the next line of the textblock.
void etk_textblock2_node_format_set (Etk_Textblock2_Node *node, const Etk_Textblock2_Format *format)
 TODOC.
const Etk_Textblock2_Format * etk_textblock2_node_format_get (Etk_Textblock2_Node *node)
 TODOC.
void etk_textblock2_node_format_apply (Etk_Textblock2_Node *node, const char *format)
 TODOC.
Etk_Textblock2_Format * etk_textblock2_format_new (void)
 TODOC.
void etk_textblock2_format_free (Etk_Textblock2_Format *format)
 TODOC.
void etk_textblock2_format_reset (Etk_Textblock2_Format *format)
 TODOC.
void etk_textblock2_format_copy (Etk_Textblock2_Format *format1, const Etk_Textblock2_Format *format2)
 TODOC.
Etk_Textblock2_Iter * etk_textblock2_iter_new (Etk_Textblock2 *tb)
 Creates a new iterator for the textblock. The new iterator will be placed at the start of the textblock. Iterators Are used to insert or delete text section at specific places.
void etk_textblock2_iter_free (Etk_Textblock2_Iter *iter)
 Destroys the given iterator. It will no longer be usable.
void etk_textblock2_iter_copy (Etk_Textblock2_Iter *dest, Etk_Textblock2_Iter *src)
 Copies the iterator src to the iterator dest.
int etk_textblock2_iter_compare (Etk_Textblock2_Iter *iter1, Etk_Textblock2_Iter *iter2)
 Compare the position of the two iterators.
void etk_textblock2_iter_backward_start (Etk_Textblock2_Iter *iter)
 Moves the iterator at the start of the textblock.
void etk_textblock2_iter_forward_end (Etk_Textblock2_Iter *iter)
 Moves the iterator at the end of the textblock.
Etk_Bool etk_textblock2_iter_backward_char (Etk_Textblock2_Iter *iter)
 Moves the iterator backward by one character offset.
Etk_Bool etk_textblock2_iter_forward_char (Etk_Textblock2_Iter *iter)
 Moves the iterator fortward by one character offset.
Evas_Object * etk_textblock2_object_add (Etk_Textblock2 *tb, Evas *evas)
 Creates a new textblock-object that will be used to render the textblock's content. A textblock can have several textblock-objects.
Etk_Textblock2_Iter * etk_textblock2_object_cursor_get (Evas_Object *tbo)
 Gets the cursor's iterator of the given textblock-object.
Etk_Textblock2_Iter * etk_textblock2_object_selection_bound_get (Evas_Object *tbo)
 Gets the selection-bound's iterator of the given textblock-object.
void etk_textblock2_object_offset_set (Evas_Object *tbo, int xoffset, int yoffset)
 TODOC.
void etk_textblock2_object_offset_get (Evas_Object *tbo, int *xoffset, int *yoffset)
 TODOC.


Define Documentation

#define ETK_TEXTBLOCK2_TYPE   (etk_textblock2_type_get())

Gets the type of a textblock

Referenced by etk_textblock2_new().

#define ETK_TEXTBLOCK2 ( obj   )     (ETK_OBJECT_CAST((obj), ETK_TEXTBLOCK2_TYPE, Etk_Textblock2))

Casts the object to an Etk_Textblock2

Referenced by etk_textblock2_new().

#define ETK_IS_TEXTBLOCK2 ( obj   )     (ETK_OBJECT_CHECK_TYPE((obj), ETK_TEXTBLOCK2_TYPE))

Check if the object is an Etk_Textblock


Enumeration Type Documentation

enum Etk_Textblock2_Wrap

The different types of wrapping to apply on a textblock's paragraph.

Enumerator:
ETK_TEXTBLOCK2_WRAP_NONE  The text is not wrapped
ETK_TEXTBLOCK2_WRAP_WORD  The text is wrapped between the words (or between the chars if it's not sufficient)
ETK_TEXTBLOCK2_WRAP_CHAR  The text is wrapped between the chars

enum Etk_Textblock2_Tag_Type

The different types of tag for a node.

Enumerator:
ETK_TEXTBLOCK2_TAG_DEFAULT  The default tag: no formatting
ETK_TEXTBLOCK2_TAG_BOLD  The text is bold
ETK_TEXTBLOCK2_TAG_ITALIC  The text is italic
ETK_TEXTBLOCK2_TAG_UNDERLINE  The text is underlined
ETK_TEXTBLOCK2_TAG_STRIKETHROUGH  The text is strikethrough
ETK_TEXTBLOCK2_TAG_STYLE  The tag describes the style of the text (normal, glow, ...)
ETK_TEXTBLOCK2_TAG_FONT  The tag describes the font used by the text (face, size, ...)

enum Etk_Textblock2_Style_Type

The different types of style that can be applied on a text.

Enumerator:
ETK_TEXTBLOCK2_STYLE_NONE  No style is applied
ETK_TEXTBLOCK2_STYLE_OUTLINE  The text is outlined
ETK_TEXTBLOCK2_STYLE_SHADOW  The text has a sharp shadow
ETK_TEXTBLOCK2_STYLE_SOFT_OUTLINE  The text has a soft outline
ETK_TEXTBLOCK2_STYLE_GLOW  The text has a glow
ETK_TEXTBLOCK2_STYLE_OUTLINE_SHADOW  The text is outlined and has a sharp shadow
ETK_TEXTBLOCK2_STYLE_FAR_SHADOW  The text has a sharp far shadow
ETK_TEXTBLOCK2_STYLE_OUTLINE_SOFT_SHADOW  The text is outlined and has a soft shadow
ETK_TEXTBLOCK2_STYLE_SOFT_SHADOW  The text has a soft shadow
ETK_TEXTBLOCK2_STYLE_FAR_SOFT_SHADOW  The text has a far soft shadow

enum Etk_Textblock2_Underline_Type

The different type of underlining for a text.

Enumerator:
ETK_TEXTBLOCK2_UNDERLINE_NONE  The text is not underlined
ETK_TEXTBLOCK2_UNDERLINE_SINGLE  The text is underlined by a single line
ETK_TEXTBLOCK2_UNDERLINE_DOUBLE  The text is underlined by two lines


Function Documentation

Etk_Textblock2 * etk_textblock2_new ( void   ) 

Creates a new textblock.

Returns:
Returns the new textblock

References etk_object_new(), ETK_TEXTBLOCK2, and ETK_TEXTBLOCK2_TYPE.

void etk_textblock2_text_set ( Etk_Textblock2 *  tb,
const char *  text,
Etk_Bool  markup 
)

Sets the text of the textblock. The current text will be replaced by text.

Parameters:
tb a textblock
text the text to set
markup whether or not you want to apply markup and styling on the text. If markup is ETK_TRUE, you can use tags to format the text.
Note:
After this operation, all the iterators will be at the start of the textblock

References etk_textblock2_clear(), etk_textblock2_insert(), etk_textblock2_insert_markup(), etk_textblock2_iter_free(), etk_textblock2_iter_new(), Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::nodes, paragraphs, and Etk_Textblock2_Iter::pos.

Etk_String * etk_textblock2_text_get ( Etk_Textblock2 *  tb,
Etk_Bool  markup 
)

Gets the text of the textblock.

Parameters:
tb a textblock
markup whether or not you want to get formatting-tags in the returned text
Returns:
Returns a string containing the text of the textblock
Note:
Once you no longer need the returned string, you should destroy it with etk_object_destroy()

References etk_textblock2_iter_forward_end(), etk_textblock2_iter_free(), etk_textblock2_iter_new(), and etk_textblock2_range_text_get().

Etk_String * etk_textblock2_range_text_get ( Etk_Textblock2_Iter *  iter1,
Etk_Textblock2_Iter *  iter2,
Etk_Bool  markup 
)

Gets the text of the textblock, between iter1 and iter2.

Parameters:
tb a textblock
iter1 the first iterator
iter2 the second_iterator
markup whether or not you want to get formatting-tags in the returned text
Returns:
Returns a string containing the text of the textblock, between iter1 and iter2
Note:
Once you no longer need the returned string, you should destroy it with etk_object_destroy()

iter1 has not necessarily to be before iter2

Referenced by etk_textblock2_text_get().

void etk_textblock2_insert ( Etk_Textblock2_Iter *  iter,
const char *  text,
int  length 
)

Inserts length bytes of text at iter in the textblock. If you want to use tags to format the inserted text, you should use etk_textblock2_insert_markup() instead.

Parameters:
iter the iterator where to insert the text. The iterator will be placed after the inserted text
text the unicode-encoded text to insert. You can use '
' to break the text into several lines
length the maximum number of bytes to insert. If length is negative, the text will be entirely inserted
See also:
etk_textblock_insert_markup()

References etk_string_insert_sized(), etk_textblock2_line_add(), Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Node::line, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Iter::pos, Etk_Textblock2_Iter::tb, tbos, Etk_Textblock2_Node::text, and Etk_Textblock2_Node::unicode_length.

Referenced by etk_textblock2_insert_markup(), and etk_textblock2_text_set().

void etk_textblock2_insert_markup ( Etk_Textblock2_Iter *  iter,
const char *  markup_text,
int  length 
)

Inserts length bytes of text at iter in the textblock. Tags can be used to format the text.

Parameters:
iter the iterator where to insert the text. The iterator will be placed after the inserted text
markup_text the unicode-encoded text to insert. You can use tags to format the text, as well as escape sequences
length the maximum number of bytes to insert. If length is negative, the text will be entirely inserted
See also:
etk_textblock_insert()

References ETK_OBJECT, etk_object_destroy(), etk_string_get(), etk_string_length_get(), etk_string_new(), etk_string_set_sized(), etk_textblock2_insert(), etk_textblock2_node_add(), etk_textblock2_node_format_apply(), etk_textblock2_node_format_set(), Etk_Textblock2_Node::format, Etk_Textblock2_Iter::node, and Etk_Textblock2_Node::unicode_length.

Referenced by etk_textblock2_text_set().

void etk_textblock2_clear ( Etk_Textblock2 *  tb  ) 

Clears the text of the given textblock. After this operation, the textblock will only have one paragraph, with one line made up of one empty node. All the iterators will still be valid and will be placed at the start of the empty textblock.

Parameters:
tb the textblock to clear

References etk_textblock2_paragraph_delete(), and paragraphs.

Referenced by etk_textblock2_text_set().

Etk_Bool etk_textblock2_delete_before ( Etk_Textblock2_Iter *  iter  ) 

Deletes the character before the iterator.

Parameters:
iter the iterator where to delete the character
Returns:
Returns ETK_TRUE if there was a character before the iterator, ETK_FALSE otherwise

References etk_textblock2_delete_range(), etk_textblock2_iter_backward_char(), etk_textblock2_iter_copy(), etk_textblock2_iter_free(), etk_textblock2_iter_new(), and Etk_Textblock2_Iter::tb.

Etk_Bool etk_textblock2_delete_after ( Etk_Textblock2_Iter *  iter  ) 

Deletes the character after the iterator.

Parameters:
iter the iterator where to delete the character
Returns:
Returns ETK_TRUE if there was a character after the iterator, ETK_FALSE otherwise

References etk_textblock2_delete_range(), etk_textblock2_iter_copy(), etk_textblock2_iter_forward_char(), etk_textblock2_iter_free(), etk_textblock2_iter_new(), and Etk_Textblock2_Iter::tb.

void etk_textblock2_delete_range ( Etk_Textblock2_Iter *  iter1,
Etk_Textblock2_Iter *  iter2 
)

Deletes the text between iter1 and iter2.

Parameters:
iter1 the first iterator
iter2 the second iterator
Note:
iter1 has not necessarily to be before iter2

References etk_textblock2_iter_compare().

Referenced by etk_textblock2_delete_after(), and etk_textblock2_delete_before().

void etk_textblock2_printf ( Etk_Textblock2 *  tb  ) 

Prints the textblock's structure to stdout. This function is for debug-purpose only and should be deleted soon.

Parameters:
tb the textblock to print

References etk_string_get(), Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Node::next, Etk_Textblock2_Line::next, Etk_Textblock2_Paragraph::next, Etk_Textblock2_Line::nodes, paragraphs, and Etk_Textblock2_Node::text.

Etk_Textblock2_Paragraph * etk_textblock2_paragraph_add ( Etk_Textblock2_Iter *  iter  ) 

Adds a new paragraph to the textblock at . The new paragraph will contain the content of the current paragraph located after the iterator. The iterator will be placed at the start of the new paragraph. The new paragraph will have the same properties as the current one.

Parameters:
iter the iter where to insert the new paragraph
Returns:
Returns the new paragraph

References Etk_Textblock2_Node::line, Etk_Textblock2_Iter::node, and Etk_Textblock2_Line::paragraph.

Etk_Bool etk_textblock2_paragraph_delete ( Etk_Textblock2_Paragraph *  paragraph  ) 

Deletes an existing paragraph of a textblock. If the paragraph was the last remaining paragraph of the textblock, a new empty paragraph will be created (a textblock always has to have at least one paragraph in order to remain valid). The iterators will be moved to the start of the next paragraph if there is one, or to the end of the textblock otherwise.

Parameters:
paragraph the paragraph to delete
Returns:
Returns ETK_FALSE if the paragraph was the last paragraph of the textblock, ETK_TRUE otherwise

References etk_string_length_get(), Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::last_node, last_paragraph, Etk_Textblock2_Node::line, Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Iter::next, Etk_Textblock2_Paragraph::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::nodes, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Iter::pos, Etk_Textblock2_Paragraph::prev, Etk_Textblock2_Paragraph::tb, Etk_Textblock2_Node::text, and Etk_Textblock2_Node::unicode_length.

Referenced by etk_textblock2_clear().

Etk_Textblock2_Paragraph * etk_textblock2_paragraph_first_get ( Etk_Textblock2 *  tb  ) 

Gets the first paragraph of the textblock.

Parameters:
tb a textblock
Returns:
Returns the first paragraph of the textblock

References paragraphs.

Etk_Textblock2_Paragraph * etk_textblock2_paragraph_last_get ( Etk_Textblock2 *  tb  ) 

Gets the last paragraph of the textblock.

Parameters:
tb a textblock
Returns:
Returns the last paragraph of the textblock

References last_paragraph.

Etk_Textblock2_Paragraph * etk_textblock2_paragraph_prev_get ( Etk_Textblock2_Paragraph *  paragraph  ) 

Gets the paragraph before paragraph.

Parameters:
paragraph a paragraph
Returns:
Returns the paragraph before paragraph or NULL if paragraph is the first one

References Etk_Textblock2_Paragraph::prev.

Etk_Textblock2_Paragraph * etk_textblock2_paragraph_next_get ( Etk_Textblock2_Paragraph *  paragraph  ) 

Gets the paragraph after paragraph.

Parameters:
paragraph a paragraph
Returns:
Returns the paragraph after paragraph or NULL if paragraph is the last one

References Etk_Textblock2_Paragraph::next.

Etk_Textblock2_Line * etk_textblock2_line_add ( Etk_Textblock2_Iter *  iter  ) 

Adds a new line to the textblock at . The new line will contain the content of the current line located after the iterator. The iterator will be placed at the start of the new line.

Parameters:
iter the iter where to insert the new line
Returns:
Returns the new line

References Etk_Textblock2_Node::line, and Etk_Textblock2_Iter::node.

Referenced by etk_textblock2_insert().

Etk_Bool etk_textblock2_line_delete ( Etk_Textblock2_Line *  line  ) 

Deletes an existing line of a paragraph. If the line was the last remaining line of the paragraph, a new empty line will be created (a paragraph always has to have at least one line in order to remain valid). The iterators will be moved to the start of the next line if there is one, or to the end of the textblock otherwise.

Parameters:
line the line to delete
Returns:
Returns ETK_FALSE if the line was the last line of the paragraph, ETK_TRUE otherwise

References etk_string_length_get(), etk_textblock2_line_walk_next(), Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::last_node, last_paragraph, Etk_Textblock2_Node::line, Etk_Textblock2_Iter::next, Etk_Textblock2_Line::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::nodes, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Iter::pos, Etk_Textblock2_Line::prev, Etk_Textblock2_Paragraph::tb, Etk_Textblock2_Node::text, and Etk_Textblock2_Node::unicode_length.

Etk_Textblock2_Line * etk_textblock2_line_first_get ( Etk_Textblock2_Paragraph *  paragraph  ) 

Gets the first line of the paragraph.

Parameters:
paragraph a paragraph
Returns:
Returns the first line of the paragraph

References Etk_Textblock2_Paragraph::lines.

Etk_Textblock2_Line * etk_textblock2_line_last_get ( Etk_Textblock2_Paragraph *  paragraph  ) 

Gets the last line of the paragraph.

Parameters:
tb a paragraph
Returns:
Returns the last line of the paragraph

References Etk_Textblock2_Paragraph::last_line.

Etk_Textblock2_Line * etk_textblock2_line_prev_get ( Etk_Textblock2_Line *  line  ) 

Gets the line before node in the current paragraph.

Parameters:
node a node
Returns:
Returns the line before line in the current paragraph, or NULL if line is the first one of the paragraph

References Etk_Textblock2_Line::prev.

Etk_Textblock2_Line * etk_textblock2_line_next_get ( Etk_Textblock2_Line *  line  ) 

Gets the line after node in the current paragraph.

Parameters:
node a node
Returns:
Returns the line after line in the current paragraph, or NULL if line is the last one of the paragraph

References Etk_Textblock2_Line::next.

Etk_Textblock2_Line * etk_textblock2_line_walk_prev ( Etk_Textblock2_Line *  line  ) 

Walks to the previous line of the textblock. Unlike etk_textblock2_line_prev_get(), this function will not return NULL if the line is the first line of the paragraph. In this case, it will return the last line of the previous paragraph of the textblock.

Parameters:
node a node
Returns:
Returns the line before line in the textblock, or NULL if line is the first line of the textblock

References Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Paragraph::prev, and Etk_Textblock2_Line::prev.

Etk_Textblock2_Line * etk_textblock2_line_walk_next ( Etk_Textblock2_Line *  line  ) 

Walks to the next line of the textblock. Unlike etk_textblock2_line_next_get(), this function will not return NULL if the line is the last line of the paragraph. In this case, it will return the first line of the next paragraph of the textblock.

Parameters:
node a node
Returns:
Returns the line after line in the textblock, or NULL if line is the last line of the textblock

References Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Paragraph::next, Etk_Textblock2_Line::next, and Etk_Textblock2_Line::paragraph.

Referenced by etk_textblock2_line_delete().

Etk_Textblock2_Node * etk_textblock2_node_add ( Etk_Textblock2_Iter *  iter  ) 

Adds an empty node to the textblock at .

Parameters:
iter the iter where to insert the new node
Returns:
Returns the new node

References Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Node::line, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Iter::pos, Etk_Textblock2_Node::prev, Etk_Textblock2_Iter::tb, and Etk_Textblock2_Node::unicode_length.

Referenced by etk_textblock2_insert_markup().

Etk_Bool etk_textblock2_node_delete ( Etk_Textblock2_Node *  node  ) 

Deletes an existing node of a line. If the node was the last remaining node of the line, a new empty node will be created (a line always has to have at least one node in order to remain valid). The iterators will be moved to the start of the next node if there is one, or to the end of the textblock otherwise.

Parameters:
node the node to delete
Returns:
Returns ETK_FALSE if the node was the last node of the line, ETK_TRUE otherwise

References etk_string_length_get(), etk_textblock2_node_walk_next(), Etk_Textblock2_Iter::index, iters, Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::last_node, last_paragraph, Etk_Textblock2_Node::line, Etk_Textblock2_Iter::next, Etk_Textblock2_Node::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Iter::pos, Etk_Textblock2_Node::prev, Etk_Textblock2_Paragraph::tb, Etk_Textblock2_Node::text, and Etk_Textblock2_Node::unicode_length.

Etk_Textblock2_Node * etk_textblock2_node_first_get ( Etk_Textblock2_Line *  line  ) 

Gets the first node of the line.

Parameters:
line a line
Returns:
Returns the first node of the line

References Etk_Textblock2_Line::nodes.

Etk_Textblock2_Node * etk_textblock2_node_last_get ( Etk_Textblock2_Line *  line  ) 

Gets the last node of the line.

Parameters:
line a line
Returns:
Returns the last node of the line

References Etk_Textblock2_Line::last_node.

Etk_Textblock2_Node * etk_textblock2_node_prev_get ( Etk_Textblock2_Node *  node  ) 

Gets the node before node in the current line.

Parameters:
node a node
Returns:
Returns the node before node in the current line, or NULL if node is the first node of the line

References Etk_Textblock2_Node::prev.

Etk_Textblock2_Node * etk_textblock2_node_next_get ( Etk_Textblock2_Node *  node  ) 

Gets the node after node in the current line.

Parameters:
node a node
Returns:
Returns the node after node in the current line, or NULL if node is the last one of the line

References Etk_Textblock2_Node::next.

Etk_Textblock2_Node * etk_textblock2_node_walk_prev ( Etk_Textblock2_Node *  node  ) 

Walks to the previous node of the textblock. Unlike etk_textblock2_node_prev_get(), this function will not return NULL if the node is the first node of the line. In this case, it will return the last node of the previous line of the textblock.

Parameters:
node a node
Returns:
Returns the node before node in the textblock, or NULL if node is the first node of the textblock

References Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::last_node, Etk_Textblock2_Node::line, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Paragraph::prev, Etk_Textblock2_Line::prev, and Etk_Textblock2_Node::prev.

Etk_Textblock2_Node * etk_textblock2_node_walk_next ( Etk_Textblock2_Node *  node  ) 

Walks to the next node of the textblock. Unlike etk_textblock2_node_next_get(), this function will not return NULL if the node is the last node of the line. In this case, it will return the first node of the next line of the textblock.

Parameters:
node a node
Returns:
Returns the node after node in the textblock, or NULL if node is the last node of the textblock

References Etk_Textblock2_Node::line, Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Paragraph::next, Etk_Textblock2_Line::next, Etk_Textblock2_Node::next, Etk_Textblock2_Line::nodes, and Etk_Textblock2_Line::paragraph.

Referenced by etk_textblock2_node_delete().

void etk_textblock2_node_format_set ( Etk_Textblock2_Node *  node,
const Etk_Textblock2_Format *  format 
)

TODOC.

References etk_textblock2_format_copy(), etk_textblock2_format_free(), etk_textblock2_format_new(), Etk_Textblock2_Node::format, Etk_Textblock2_Node::line, Etk_Textblock2_Line::paragraph, Etk_Textblock2_Paragraph::tb, and tbos.

Referenced by etk_textblock2_insert_markup().

const Etk_Textblock2_Format * etk_textblock2_node_format_get ( Etk_Textblock2_Node *  node  ) 

TODOC.

References Etk_Textblock2_Node::format.

void etk_textblock2_node_format_apply ( Etk_Textblock2_Node *  node,
const char *  format 
)

TODOC.

References Etk_Textblock2_Format::color, Etk_Textblock2_Format::color1, Etk_Textblock2_Format::color2, etk_textblock2_format_new(), ETK_TEXTBLOCK2_STYLE_FAR_SHADOW, ETK_TEXTBLOCK2_STYLE_FAR_SOFT_SHADOW, ETK_TEXTBLOCK2_STYLE_GLOW, ETK_TEXTBLOCK2_STYLE_NONE, ETK_TEXTBLOCK2_STYLE_OUTLINE, ETK_TEXTBLOCK2_STYLE_OUTLINE_SHADOW, ETK_TEXTBLOCK2_STYLE_OUTLINE_SOFT_SHADOW, ETK_TEXTBLOCK2_STYLE_SHADOW, ETK_TEXTBLOCK2_STYLE_SOFT_OUTLINE, ETK_TEXTBLOCK2_STYLE_SOFT_SHADOW, ETK_TEXTBLOCK2_TAG_BOLD, ETK_TEXTBLOCK2_TAG_DEFAULT, ETK_TEXTBLOCK2_TAG_FONT, ETK_TEXTBLOCK2_TAG_ITALIC, ETK_TEXTBLOCK2_TAG_STRIKETHROUGH, ETK_TEXTBLOCK2_TAG_STYLE, ETK_TEXTBLOCK2_TAG_UNDERLINE, ETK_TEXTBLOCK2_UNDERLINE_DOUBLE, ETK_TEXTBLOCK2_UNDERLINE_NONE, ETK_TEXTBLOCK2_UNDERLINE_SINGLE, ETK_WARNING, Etk_Textblock2_Format::face, Etk_Textblock2_Format::font, Etk_Textblock2_Node::format, Etk_Textblock2_Format::s, Etk_Textblock2_Format::size, Etk_Textblock2_Format::style, Etk_Textblock2_Format::type, and Etk_Textblock2_Format::u.

Referenced by etk_textblock2_insert_markup().

Etk_Textblock2_Format * etk_textblock2_format_new ( void   ) 

TODOC.

References etk_textblock2_format_reset().

Referenced by etk_textblock2_node_format_apply(), and etk_textblock2_node_format_set().

void etk_textblock2_format_free ( Etk_Textblock2_Format *  format  ) 

TODOC.

References Etk_Textblock2_Format::face, and Etk_Textblock2_Format::font.

Referenced by etk_textblock2_node_format_set().

void etk_textblock2_format_reset ( Etk_Textblock2_Format *  format  ) 

TODOC.

References Etk_Textblock2_Format::color, Etk_Textblock2_Format::color1, Etk_Textblock2_Format::color2, ETK_TEXTBLOCK2_STYLE_NONE, ETK_TEXTBLOCK2_TAG_DEFAULT, ETK_TEXTBLOCK2_UNDERLINE_SINGLE, Etk_Textblock2_Format::face, Etk_Textblock2_Format::font, Etk_Textblock2_Format::s, Etk_Textblock2_Format::size, Etk_Textblock2_Format::style, Etk_Textblock2_Format::type, and Etk_Textblock2_Format::u.

Referenced by etk_textblock2_format_new().

void etk_textblock2_format_copy ( Etk_Textblock2_Format *  format1,
const Etk_Textblock2_Format *  format2 
)

TODOC.

References Etk_Textblock2_Format::face, and Etk_Textblock2_Format::font.

Referenced by etk_textblock2_node_format_set().

Etk_Textblock2_Iter * etk_textblock2_iter_new ( Etk_Textblock2 *  tb  ) 

Creates a new iterator for the textblock. The new iterator will be placed at the start of the textblock. Iterators Are used to insert or delete text section at specific places.

Parameters:
tb a textblock
Returns:
Returns the new iterator

References Etk_Textblock2_Iter::index, Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::nodes, paragraphs, Etk_Textblock2_Iter::pos, Etk_Textblock2_Iter::prev, and Etk_Textblock2_Iter::tb.

Referenced by etk_textblock2_delete_after(), etk_textblock2_delete_before(), etk_textblock2_object_add(), etk_textblock2_text_get(), and etk_textblock2_text_set().

void etk_textblock2_iter_free ( Etk_Textblock2_Iter *  iter  ) 

Destroys the given iterator. It will no longer be usable.

Parameters:
iter the iterator to free
Note:
Iterators are automatically freed when a textblock is destroyed

References iters, last_iter, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::prev, and Etk_Textblock2_Iter::tb.

Referenced by etk_textblock2_delete_after(), etk_textblock2_delete_before(), etk_textblock2_text_get(), and etk_textblock2_text_set().

void etk_textblock2_iter_copy ( Etk_Textblock2_Iter *  dest,
Etk_Textblock2_Iter *  src 
)

Copies the iterator src to the iterator dest.

Parameters:
dest the destination iterator
src the source iterator

References ETK_WARNING, Etk_Textblock2_Iter::index, Etk_Textblock2_Iter::node, Etk_Textblock2_Iter::pos, and Etk_Textblock2_Iter::tb.

Referenced by etk_textblock2_delete_after(), and etk_textblock2_delete_before().

int etk_textblock2_iter_compare ( Etk_Textblock2_Iter *  iter1,
Etk_Textblock2_Iter *  iter2 
)

Compare the position of the two iterators.

Parameters:
iter1 the first iterator to compare
iter2 the second iterator to compare
Returns:
Returns 0 if the two iterators are at the same position, -1 if iter1 is before iter2 and 1 if iter1 is after iter2

References ETK_WARNING, iters, Etk_Textblock2_Iter::next, Etk_Textblock2_Iter::node, Etk_Textblock2_Iter::pos, and Etk_Textblock2_Iter::tb.

Referenced by etk_textblock2_delete_range().

void etk_textblock2_iter_backward_start ( Etk_Textblock2_Iter *  iter  ) 

Moves the iterator at the start of the textblock.

Parameters:
iter the iterator to move

References Etk_Textblock2_Iter::index, Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Iter::node, Etk_Textblock2_Line::nodes, paragraphs, Etk_Textblock2_Iter::pos, and Etk_Textblock2_Iter::tb.

void etk_textblock2_iter_forward_end ( Etk_Textblock2_Iter *  iter  ) 

Moves the iterator at the end of the textblock.

Parameters:
iter the iterator to move

References etk_string_length_get(), Etk_Textblock2_Iter::index, last_iter, Etk_Textblock2_Paragraph::last_line, Etk_Textblock2_Line::last_node, last_paragraph, Etk_Textblock2_Iter::node, Etk_Textblock2_Iter::pos, Etk_Textblock2_Iter::tb, Etk_Textblock2_Node::text, and Etk_Textblock2_Node::unicode_length.

Referenced by etk_textblock2_text_get().

Etk_Bool etk_textblock2_iter_backward_char ( Etk_Textblock2_Iter *  iter  ) 

Moves the iterator backward by one character offset.

Parameters:
iter an iterator
Returns:
Returns ETK_TRUE if the character has been moved, ETK_FALSE otherwise (meaning that the iterator was already at the start of the textblock)

Referenced by etk_textblock2_delete_before().

Etk_Bool etk_textblock2_iter_forward_char ( Etk_Textblock2_Iter *  iter  ) 

Moves the iterator fortward by one character offset.

Parameters:
iter an iterator
Returns:
Returns ETK_TRUE if the character has been moved, ETK_FALSE otherwise (meaning that the iterator was already at the end of the textblock)

Referenced by etk_textblock2_delete_after().

Evas_Object * etk_textblock2_object_add ( Etk_Textblock2 *  tb,
Evas *  evas 
)

Creates a new textblock-object that will be used to render the textblock's content. A textblock can have several textblock-objects.

Parameters:
tb a textblock
evas the Evas where to add the textblock-object
Returns:
Returns the new textblock-object

References etk_textblock2_iter_new(), Etk_Textblock2_Paragraph::lines, Etk_Textblock2_Line::next, Etk_Textblock2_Paragraph::next, paragraphs, and tbos.

Etk_Textblock2_Iter * etk_textblock2_object_cursor_get ( Evas_Object *  tbo  ) 

Gets the cursor's iterator of the given textblock-object.

Parameters:
tbo a textblock-object
Returns:
Returns the cursor's iterator of the textblock-object

Referenced by etk_text_view2_cursor_get().

Etk_Textblock2_Iter * etk_textblock2_object_selection_bound_get ( Evas_Object *  tbo  ) 

Gets the selection-bound's iterator of the given textblock-object.

Parameters:
tbo a textblock-object
Returns:
Returns the selection-bound's iterator of the textblock-object

Referenced by etk_text_view2_selection_bound_get().

void etk_textblock2_object_offset_set ( Evas_Object *  tbo,
int  xoffset,
int  yoffset 
)

TODOC.

Parameters:
tbo 
xoffset 
yoffset 

void etk_textblock2_object_offset_get ( Evas_Object *  tbo,
int *  xoffset,
int *  yoffset 
)

TODOC.

Parameters:
tbo 
xoffset 
yoffset