<!-- ##### SECTION Title ##### -->
AtkText

<!-- ##### SECTION Short_Description ##### -->
The ATK interface implemented by components with text content.

<!-- ##### SECTION Long_Description ##### -->
<para>
#AtkText should be implemented by #AtkObjects on behalf of widgets that
have text content which is either attributed or otherwise non-trivial.
#AtkObjects whose text content is simple, unattributed, and very brief
may expose that content via #atk_object_get_name instead; however if the
text is editable, multi-line, typically longer than three or four words,
attributed, selectable, or if the object already uses the 'name' ATK
property for other information, the #AtkText interface should be used
to expose the text content.  In the case of editable text content,
#AtkEditableText (a subtype of the #AtkText interface) should be
implemented instead.
</para>
<para>
#AtkText provides not only traversal facilities and change notification
for text content, but also caret tracking and glyph bounding box
calculations.  Note that the text strings are exposed as UTF-8, and are
therefore potentially multi-byte, and caret-to-byte offset mapping makes
no assumptions about the character length; also bounding box
glyph-to-offset mapping may be complex for languages which use ligatures.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT AtkText ##### -->
<para>
The AtkText structure does not contain any fields.

</para>


<!-- ##### SIGNAL AtkText::text-attributes-changed ##### -->
<para>
The "text-attributes-changed" signal is emitted when the text attributes of 
the text of an object which implements AtkText changes.
</para>

@atktext: the object which received the signal.

<!-- ##### SIGNAL AtkText::text-caret-moved ##### -->
<para>
The "text-caret-moved" signal is emitted when the caret position of 
the text of an object which implements AtkText changes.
</para>

@atktext: the object which received the signal.
@arg1: The new position of the text caret.

<!-- ##### SIGNAL AtkText::text-changed ##### -->
<para>
The "text-changed" signal is emitted when the text of the object which 
implements the AtkText interface changes, This signal will have a detail 
which is either "insert" or "delete" which identifies whether the text 
change was an insertion or a deletion
</para>

@atktext: the object which received the signal.
@arg1: The position (character offset) of the insertion or deletion.
@arg2: The length (in characters) of text inserted or deleted.

<!-- ##### SIGNAL AtkText::text-selection-changed ##### -->
<para>
The "text-selection-changed" signal is emitted when the selected text of 
an object which implements AtkText changes.

</para>

@atktext: the object which received the signal.

<!-- ##### ENUM AtkTextBoundary ##### -->
<para>

</para>

@ATK_TEXT_BOUNDARY_CHAR: 
@ATK_TEXT_BOUNDARY_WORD_START: 
@ATK_TEXT_BOUNDARY_WORD_END: 
@ATK_TEXT_BOUNDARY_SENTENCE_START: 
@ATK_TEXT_BOUNDARY_SENTENCE_END: 
@ATK_TEXT_BOUNDARY_LINE_START: 
@ATK_TEXT_BOUNDARY_LINE_END: 

<!-- ##### ENUM AtkTextClipType ##### -->
<para>

</para>

@ATK_TEXT_CLIP_NONE: 
@ATK_TEXT_CLIP_MIN: 
@ATK_TEXT_CLIP_MAX: 
@ATK_TEXT_CLIP_BOTH: 

<!-- ##### STRUCT AtkTextRange ##### -->
<para>

</para>

@bounds: 
@start_offset: 
@end_offset: 
@content: 

<!-- ##### STRUCT AtkTextRectangle ##### -->
<para>

</para>

@x: 
@y: 
@width: 
@height: 

<!-- ##### STRUCT AtkAttribute ##### -->
<para>

</para>

@name: 
@value: 

<!-- ##### TYPEDEF AtkAttributeSet ##### -->
<para>

</para>


<!-- ##### ENUM AtkTextAttribute ##### -->
<para>

</para>

@ATK_TEXT_ATTR_INVALID: 
@ATK_TEXT_ATTR_LEFT_MARGIN: 
@ATK_TEXT_ATTR_RIGHT_MARGIN: 
@ATK_TEXT_ATTR_INDENT: 
@ATK_TEXT_ATTR_INVISIBLE: 
@ATK_TEXT_ATTR_EDITABLE: 
@ATK_TEXT_ATTR_PIXELS_ABOVE_LINES: 
@ATK_TEXT_ATTR_PIXELS_BELOW_LINES: 
@ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP: 
@ATK_TEXT_ATTR_BG_FULL_HEIGHT: 
@ATK_TEXT_ATTR_RISE: 
@ATK_TEXT_ATTR_UNDERLINE: 
@ATK_TEXT_ATTR_STRIKETHROUGH: 
@ATK_TEXT_ATTR_SIZE: 
@ATK_TEXT_ATTR_SCALE: 
@ATK_TEXT_ATTR_WEIGHT: 
@ATK_TEXT_ATTR_LANGUAGE: 
@ATK_TEXT_ATTR_FAMILY_NAME: 
@ATK_TEXT_ATTR_BG_COLOR: 
@ATK_TEXT_ATTR_FG_COLOR: 
@ATK_TEXT_ATTR_BG_STIPPLE: 
@ATK_TEXT_ATTR_FG_STIPPLE: 
@ATK_TEXT_ATTR_WRAP_MODE: 
@ATK_TEXT_ATTR_DIRECTION: 
@ATK_TEXT_ATTR_JUSTIFICATION: 
@ATK_TEXT_ATTR_STRETCH: 
@ATK_TEXT_ATTR_VARIANT: 
@ATK_TEXT_ATTR_STYLE: 
@ATK_TEXT_ATTR_LAST_DEFINED: 

<!-- ##### FUNCTION atk_text_get_text ##### -->
<para>

</para>

@text: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_character_at_offset ##### -->
<para>

</para>

@text: 
@offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_text_after_offset ##### -->
<para>

</para>

@text: 
@offset: 
@boundary_type: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_text_at_offset ##### -->
<para>

</para>

@text: 
@offset: 
@boundary_type: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_text_before_offset ##### -->
<para>

</para>

@text: 
@offset: 
@boundary_type: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_caret_offset ##### -->
<para>

</para>

@text: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_character_extents ##### -->
<para>

</para>

@text: 
@offset: 
@x: 
@y: 
@width: 
@height: 
@coords: 


<!-- ##### FUNCTION atk_text_get_run_attributes ##### -->
<para>

</para>

@text: 
@offset: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_default_attributes ##### -->
<para>

</para>

@text: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_character_count ##### -->
<para>

</para>

@text: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_offset_at_point ##### -->
<para>

</para>

@text: 
@x: 
@y: 
@coords: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_bounded_ranges ##### -->
<para>

</para>

@text: 
@rect: 
@coord_type: 
@x_clip_type: 
@y_clip_type: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_range_extents ##### -->
<para>

</para>

@text: 
@start_offset: 
@end_offset: 
@coord_type: 
@rect: 


<!-- ##### FUNCTION atk_text_free_ranges ##### -->
<para>

</para>

@ranges: 


<!-- ##### FUNCTION atk_text_get_n_selections ##### -->
<para>

</para>

@text: 
@Returns: 


<!-- ##### FUNCTION atk_text_get_selection ##### -->
<para>

</para>

@text: 
@selection_num: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_add_selection ##### -->
<para>

</para>

@text: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_remove_selection ##### -->
<para>

</para>

@text: 
@selection_num: 
@Returns: 


<!-- ##### FUNCTION atk_text_set_selection ##### -->
<para>

</para>

@text: 
@selection_num: 
@start_offset: 
@end_offset: 
@Returns: 


<!-- ##### FUNCTION atk_text_set_caret_offset ##### -->
<para>

</para>

@text: 
@offset: 
@Returns: 


<!-- ##### FUNCTION atk_attribute_set_free ##### -->
<para>

</para>

@attrib_set: 


<!-- ##### FUNCTION atk_text_attribute_register ##### -->
<para>

</para>

@name: 
@Returns: 


<!-- ##### FUNCTION atk_text_attribute_get_name ##### -->
<para>

</para>

@attr: 
@Returns: 


<!-- ##### FUNCTION atk_text_attribute_for_name ##### -->
<para>

</para>

@name: 
@Returns: 


<!-- ##### FUNCTION atk_text_attribute_get_value ##### -->
<para>

</para>

@attr: 
@index_: 
@Returns: 


