<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
  <!ENTITY % gtkdocentities SYSTEM "../xml/gtkdocentities.ent">
  %gtkdocentities;
]>
<refentry id="AtkText">
<refmeta>
<refentrytitle role="top_of_page" id="AtkText.top_of_page">AtkText</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>ATK Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>AtkText</refname>
<refpurpose>The ATK interface implemented by components
with text content.</refpurpose>
</refnamediv>

<refsect1 id="AtkText.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-text">atk_text_get_text</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-character-at-offset">atk_text_get_character_at_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-text-after-offset">atk_text_get_text_after_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-text-at-offset">atk_text_get_text_at_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-text-before-offset">atk_text_get_text_before_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-string-at-offset">atk_text_get_string_at_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-caret-offset">atk_text_get_caret_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-character-extents">atk_text_get_character_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkAttributeSet"><returnvalue>AtkAttributeSet</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-run-attributes">atk_text_get_run_attributes</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkAttributeSet"><returnvalue>AtkAttributeSet</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-default-attributes">atk_text_get_default_attributes</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-character-count">atk_text_get_character_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-offset-at-point">atk_text_get_offset_at_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkTextRange"><returnvalue>AtkTextRange</returnvalue></link>&#160;**
</entry><entry role="function_name"><link linkend="atk-text-get-bounded-ranges">atk_text_get_bounded_ranges</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-range-extents">atk_text_get_range_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-free-ranges">atk_text_free_ranges</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-get-n-selections">atk_text_get_n_selections</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-get-selection">atk_text_get_selection</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-add-selection">atk_text_add_selection</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-remove-selection">atk_text_remove_selection</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-set-selection">atk_text_set_selection</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-set-caret-offset">atk_text_set_caret_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-attribute-set-free">atk_attribute_set_free</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkTextAttribute"><returnvalue>AtkTextAttribute</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-attribute-register">atk_text_attribute_register</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-attribute-get-name">atk_text_attribute_get_name</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkTextAttribute"><returnvalue>AtkTextAttribute</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-text-attribute-for-name">atk_text_attribute_for_name</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-text-attribute-get-value">atk_text_attribute_get_value</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="AtkText.signals" role="signal_proto">
<title role="signal_proto.title">Signals</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="signal_proto_type" colwidth="150px"/>
<colspec colname="signal_proto_name" colwidth="300px"/>
<colspec colname="signal_proto_flags" colwidth="200px"/>
<tbody>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-attributes-changed">text-attributes-changed</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-caret-moved">text-caret-moved</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-changed">text-changed</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-insert">text-insert</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-remove">text-remove</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="AtkText-text-selection-changed">text-selection-changed</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<anchor id="AtkTextRange"/><refsect1 id="AtkText.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="AtkText-struct">AtkText</link></entry></row>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="AtkTextIface">AtkTextIface</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="AtkTextBoundary">AtkTextBoundary</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="AtkTextGranularity">AtkTextGranularity</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="AtkTextClipType">AtkTextClipType</link></entry></row>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="AtkTextRange-struct">AtkTextRange</link></entry></row>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="AtkTextRectangle">AtkTextRectangle</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="AtkTextAttribute">AtkTextAttribute</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="AtkText.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GBoxed">GBoxed</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> AtkTextRange
    <link linkend="GEnum">GEnum</link>
    <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> AtkTextAttribute
    <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> AtkTextBoundary
    <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> AtkTextClipType
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> AtkTextGranularity
    <link linkend="GInterface">GInterface</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> AtkText
</screen>
</refsect1>
<refsect1 id="AtkText.implementations" role="implementations">
<title role="implementations.title">Known Implementations</title>
<para>
AtkText is implemented by
 <link linkend="AtkNoOpObject">AtkNoOpObject</link>.</para>

</refsect1>


<refsect1 id="AtkText.description" role="desc">
<title role="desc.title">Description</title>
<para><link linkend="AtkText"><type>AtkText</type></link> should be implemented by <link linkend="AtkObjects"><type>AtkObjects</type></link> on behalf of widgets
that have text content which is either attributed or otherwise
non-trivial.  <link linkend="AtkObjects"><type>AtkObjects</type></link> whose text content is simple,
unattributed, and very brief may expose that content via
<link linkend="atk-object-get-name"><type>atk_object_get_name</type></link> 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 <link linkend="AtkText"><type>AtkText</type></link> interface should be used to
expose the text content.  In the case of editable text content,
<link linkend="AtkEditableText"><type>AtkEditableText</type></link> (a subtype of the <link linkend="AtkText"><type>AtkText</type></link> interface) should be
implemented instead.</para>
<para> <link linkend="AtkText"><type>AtkText</type></link> 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>

</refsect1>
<refsect1 id="AtkText.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="atk-text-get-text" role="function">
<title>atk_text_get_text&#160;()</title>
<indexterm zone="atk-text-get-text"><primary>atk_text_get_text</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_text (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                   <parameter><link linkend="gint"><type>gint</type></link> start_offset</parameter>,
                   <parameter><link linkend="gint"><type>gint</type></link> end_offset</parameter>);</programlisting>
<para>Gets the specified text.</para>
<refsect3 id="atk-text-get-text.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>a starting character offset within <parameter>text</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>an ending character offset within <parameter>text</parameter>
, or -1 for the end of the string.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-text.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string containing the text from <parameter>start_offset</parameter>
up
to, but not including <parameter>end_offset</parameter>
. Use <link linkend="g-free"><function>g_free()</function></link> to free the returned string.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-character-at-offset" role="function">
<title>atk_text_get_character_at_offset&#160;()</title>
<indexterm zone="atk-text-get-character-at-offset"><primary>atk_text_get_character_at_offset</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
atk_text_get_character_at_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                                  <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>);</programlisting>
<para>Gets the specified text.</para>
<refsect3 id="atk-text-get-character-at-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>a character offset within <parameter>text</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-character-at-offset.returns" role="returns">
<title>Returns</title>
<para> the character at <parameter>offset</parameter>
.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-text-after-offset" role="function" condition="deprecated:2.9.3: Please use atk_text_get_string_at_offset() instead.">
<title>atk_text_get_text_after_offset&#160;()</title>
<indexterm zone="atk-text-get-text-after-offset" role="deprecated"><primary>atk_text_get_text_after_offset</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_text_after_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                                <parameter><link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link> boundary_type</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<warning><para><literal>atk_text_get_text_after_offset</literal> has been deprecated since version 2.9.3 and should not be used in newly-written code.</para> <para>Please use <link linkend="atk-text-get-string-at-offset"><function>atk_text_get_string_at_offset()</function></link> instead.</para>
</warning>
<para>Gets the specified text.</para>
<refsect3 id="atk-text-get-text-after-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>position</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>boundary_type</para></entry>
<entry role="parameter_description"><para>An <link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the starting character offset of the returned string. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the offset of the first character after the
returned substring. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-text-after-offset.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string containing the text after <parameter>offset</parameter>
bounded
by the specified <parameter>boundary_type</parameter>
. Use <link linkend="g-free"><function>g_free()</function></link> to free the returned string.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-text-at-offset" role="function" condition="deprecated">
<title>atk_text_get_text_at_offset&#160;()</title>
<indexterm zone="atk-text-get-text-at-offset" role="deprecated"><primary>atk_text_get_text_at_offset</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_text_at_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                             <parameter><link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link> boundary_type</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<warning><para><literal>atk_text_get_text_at_offset</literal> is deprecated and should not be used in newly-written code.</para> <para>This method is deprecated since ATK version
2.9.4. Please use <link linkend="atk-text-get-string-at-offset"><function>atk_text_get_string_at_offset()</function></link> instead.</para>
</warning>
<para>Gets the specified text.</para>
<para>If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character at the
offset is returned.</para>
<para>If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start at or before the offset to the word start after
the offset.</para>
<para>The returned string will contain the word at the offset if the offset
is inside a word and will contain the word before the offset if the
offset is not inside a word.</para>
<para>If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start at or before the offset to the sentence
start after the offset.</para>
<para>The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence before the offset
if the offset is not inside a sentence.</para>
<para>If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start at or before the offset to the line
start after the offset.</para>
<refsect3 id="atk-text-get-text-at-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>position</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>boundary_type</para></entry>
<entry role="parameter_description"><para>An <link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the starting character offset of the returned string. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the offset of the first character after the
returned substring. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-text-at-offset.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string containing the text at <parameter>offset</parameter>
bounded by
the specified <parameter>boundary_type</parameter>
. Use <link linkend="g-free"><function>g_free()</function></link> to free the returned string.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-text-before-offset" role="function" condition="deprecated:2.9.3: Please use atk_text_get_string_at_offset() instead.">
<title>atk_text_get_text_before_offset&#160;()</title>
<indexterm zone="atk-text-get-text-before-offset" role="deprecated"><primary>atk_text_get_text_before_offset</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_text_before_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                                 <parameter><link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link> boundary_type</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<warning><para><literal>atk_text_get_text_before_offset</literal> has been deprecated since version 2.9.3 and should not be used in newly-written code.</para> <para>Please use <link linkend="atk-text-get-string-at-offset"><function>atk_text_get_string_at_offset()</function></link> instead.</para>
</warning>
<para>Gets the specified text.</para>
<refsect3 id="atk-text-get-text-before-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>position</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>boundary_type</para></entry>
<entry role="parameter_description"><para>An <link linkend="AtkTextBoundary"><type>AtkTextBoundary</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the starting character offset of the returned string. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the offset of the first character after the
returned substring. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-text-before-offset.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string containing the text before <parameter>offset</parameter>
bounded
by the specified <parameter>boundary_type</parameter>
. Use <link linkend="g-free"><function>g_free()</function></link> to free the returned string.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-string-at-offset" role="function" condition="since:2.10">
<title>atk_text_get_string_at_offset&#160;()</title>
<indexterm zone="atk-text-get-string-at-offset" role="2.10"><primary>atk_text_get_string_at_offset</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_string_at_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                               <parameter><link linkend="AtkTextGranularity"><type>AtkTextGranularity</type></link> granularity</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<para>Gets a portion of the text exposed through an <link linkend="AtkText"><type>AtkText</type></link> according to a given <parameter>offset</parameter>

and a specific <parameter>granularity</parameter>
, along with the start and end offsets defining the
boundaries of such a portion of text.</para>
<para>If <parameter>granularity</parameter>
 is ATK_TEXT_GRANULARITY_CHAR the character at the
offset is returned.</para>
<para>If <parameter>granularity</parameter>
 is ATK_TEXT_GRANULARITY_WORD the returned string
is from the word start at or before the offset to the word start after
the offset.</para>
<para>The returned string will contain the word at the offset if the offset
is inside a word and will contain the word before the offset if the
offset is not inside a word.</para>
<para>If <parameter>granularity</parameter>
 is ATK_TEXT_GRANULARITY_SENTENCE the returned string
is from the sentence start at or before the offset to the sentence
start after the offset.</para>
<para>The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence before the offset
if the offset is not inside a sentence.</para>
<para>If <parameter>granularity</parameter>
 is ATK_TEXT_GRANULARITY_LINE the returned string
is from the line start at or before the offset to the line
start after the offset.</para>
<para>If <parameter>granularity</parameter>
 is ATK_TEXT_GRANULARITY_PARAGRAPH the returned string
is from the start of the paragraph at or before the offset to the start
of the following paragraph after the offset.</para>
<refsect3 id="atk-text-get-string-at-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>position</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>granularity</para></entry>
<entry role="parameter_description"><para>An <link linkend="AtkTextGranularity"><type>AtkTextGranularity</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the starting character offset of the returned string, or -1
if an error has occurred (e.g. invalid offset, not implemented). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the offset of the first character after the returned string,
or -1 if an error has occurred (e.g. invalid offset, not implemented). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-string-at-offset.returns" role="returns">
<title>Returns</title>
<para>a newly allocated string containing the text
at the <parameter>offset</parameter>
bounded by the specified <parameter>granularity</parameter>
. Use
<link linkend="g-free"><function>g_free()</function></link> to free the returned string.  Returns <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the
offset is invalid or no implementation is available. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-2.10">2.10</link></para></refsect2>
<refsect2 id="atk-text-get-caret-offset" role="function">
<title>atk_text_get_caret_offset&#160;()</title>
<indexterm zone="atk-text-get-caret-offset"><primary>atk_text_get_caret_offset</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
atk_text_get_caret_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>);</programlisting>
<para>Gets the offset of the position of the caret (cursor).</para>
<refsect3 id="atk-text-get-caret-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-caret-offset.returns" role="returns">
<title>Returns</title>
<para> the character offset of position of the caret (cursor).</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-character-extents" role="function">
<title>atk_text_get_character_extents&#160;()</title>
<indexterm zone="atk-text-get-character-extents"><primary>atk_text_get_character_extents</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
atk_text_get_character_extents (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *width</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> *height</parameter>,
                                <parameter><link linkend="AtkCoordType"><type>AtkCoordType</type></link> coords</parameter>);</programlisting>
<para>Get the bounding box containing the glyph representing the character at 
    a particular text offset.</para>
<refsect3 id="atk-text-get-character-extents.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>The offset of the text character for which bounding information is required.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>Pointer for the x coordinate of the bounding box. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Pointer for the y coordinate of the bounding box. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>Pointer for the width of the bounding box. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>Pointer for the height of the bounding box. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>coords</para></entry>
<entry role="parameter_description"><para>specify whether coordinates are relative to the screen or widget window </para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="atk-text-get-run-attributes" role="function">
<title>atk_text_get_run_attributes&#160;()</title>
<indexterm zone="atk-text-get-run-attributes"><primary>atk_text_get_run_attributes</primary></indexterm>
<programlisting language="C"><link linkend="AtkAttributeSet"><returnvalue>AtkAttributeSet</returnvalue></link>&#160;*
atk_text_get_run_attributes (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<para>Creates an <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> which consists of the attributes explicitly
set at the position <parameter>offset</parameter>
 in the text. <parameter>start_offset</parameter>
 and <parameter>end_offset</parameter>
 are
set to the start and end of the range around <parameter>offset</parameter>
 where the attributes are
invariant. Note that <parameter>end_offset</parameter>
 is the offset of the first character
after the range.  See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.</para>
<refsect3 id="atk-text-get-run-attributes.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>the character offset at which to get the attributes, -1 means the offset of
the character to be inserted at the caret location.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the address to put the start offset of the range. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the address to put the end offset of the range. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-run-attributes.returns" role="returns">
<title>Returns</title>
<para>an <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> which contains the attributes
explicitly set at <parameter>offset</parameter>
. This <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> should be freed by a call
to <link linkend="atk-attribute-set-free"><function>atk_attribute_set_free()</function></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-default-attributes" role="function">
<title>atk_text_get_default_attributes&#160;()</title>
<indexterm zone="atk-text-get-default-attributes"><primary>atk_text_get_default_attributes</primary></indexterm>
<programlisting language="C"><link linkend="AtkAttributeSet"><returnvalue>AtkAttributeSet</returnvalue></link>&#160;*
atk_text_get_default_attributes (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>);</programlisting>
<para>Creates an <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> which consists of the default values of
attributes for the text. See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.</para>
<refsect3 id="atk-text-get-default-attributes.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-default-attributes.returns" role="returns">
<title>Returns</title>
<para>an <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> which contains the default
values of attributes.  at <parameter>offset</parameter>
. this <link linkend="atkattributeset"><type>atkattributeset</type></link> should be freed by
a call to <link linkend="atk-attribute-set-free"><function>atk_attribute_set_free()</function></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-character-count" role="function">
<title>atk_text_get_character_count&#160;()</title>
<indexterm zone="atk-text-get-character-count"><primary>atk_text_get_character_count</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
atk_text_get_character_count (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>);</programlisting>
<para>Gets the character count.</para>
<refsect3 id="atk-text-get-character-count.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-character-count.returns" role="returns">
<title>Returns</title>
<para> the number of characters.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-offset-at-point" role="function">
<title>atk_text_get_offset_at_point&#160;()</title>
<indexterm zone="atk-text-get-offset-at-point"><primary>atk_text_get_offset_at_point</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
atk_text_get_offset_at_point (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> x</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> y</parameter>,
                              <parameter><link linkend="AtkCoordType"><type>AtkCoordType</type></link> coords</parameter>);</programlisting>
<para>Gets the offset of the character located at coordinates <parameter>x</parameter>
 and <parameter>y</parameter>
. <parameter>x</parameter>
 and <parameter>y</parameter>

are interpreted as being relative to the screen or this widget's window
depending on <parameter>coords</parameter>
.</para>
<refsect3 id="atk-text-get-offset-at-point.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>screen x-position of character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>screen y-position of character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>coords</para></entry>
<entry role="parameter_description"><para>specify whether coordinates are relative to the screen or
widget window </para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-offset-at-point.returns" role="returns">
<title>Returns</title>
<para> the offset to the character which is located at
the specified <parameter>x</parameter>
and <parameter>y</parameter>
coordinates.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-bounded-ranges" role="function" condition="since:1.3">
<title>atk_text_get_bounded_ranges&#160;()</title>
<indexterm zone="atk-text-get-bounded-ranges" role="1.3"><primary>atk_text_get_bounded_ranges</primary></indexterm>
<programlisting language="C"><link linkend="AtkTextRange"><returnvalue>AtkTextRange</returnvalue></link>&#160;**
atk_text_get_bounded_ranges (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                             <parameter><link linkend="AtkTextRectangle"><type>AtkTextRectangle</type></link> *rect</parameter>,
                             <parameter><link linkend="AtkCoordType"><type>AtkCoordType</type></link> coord_type</parameter>,
                             <parameter><link linkend="AtkTextClipType"><type>AtkTextClipType</type></link> x_clip_type</parameter>,
                             <parameter><link linkend="AtkTextClipType"><type>AtkTextClipType</type></link> y_clip_type</parameter>);</programlisting>
<para>Get the ranges of text in the specified bounding box.</para>

<para><emphasis role="annotation">[<acronym>virtual</acronym> get_bounded_ranges]</emphasis></para><refsect3 id="atk-text-get-bounded-ranges.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>rect</para></entry>
<entry role="parameter_description"><para>An AtkTextRectangle giving the dimensions of the bounding box.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>coord_type</para></entry>
<entry role="parameter_description"><para>Specify whether coordinates are relative to the screen or widget window.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x_clip_type</para></entry>
<entry role="parameter_description"><para>Specify the horizontal clip type.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y_clip_type</para></entry>
<entry role="parameter_description"><para>Specify the vertical clip type.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-bounded-ranges.returns" role="returns">
<title>Returns</title>
<para>Array of AtkTextRange. The last
element of the array returned by this function will be NULL. </para>
<para><emphasis role="annotation">[<acronym>array</acronym> zero-terminated=1]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-1.3">1.3</link></para></refsect2>
<refsect2 id="atk-text-get-range-extents" role="function" condition="since:1.3">
<title>atk_text_get_range_extents&#160;()</title>
<indexterm zone="atk-text-get-range-extents" role="1.3"><primary>atk_text_get_range_extents</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
atk_text_get_range_extents (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> start_offset</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> end_offset</parameter>,
                            <parameter><link linkend="AtkCoordType"><type>AtkCoordType</type></link> coord_type</parameter>,
                            <parameter><link linkend="AtkTextRectangle"><type>AtkTextRectangle</type></link> *rect</parameter>);</programlisting>
<para>Get the bounding box for text within the specified range.</para>
<refsect3 id="atk-text-get-range-extents.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>The offset of the first text character for which boundary
information is required.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>The offset of the text character after the last character
for which boundary information is required.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>coord_type</para></entry>
<entry role="parameter_description"><para>Specify whether coordinates are relative to the screen or widget window.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>rect</para></entry>
<entry role="parameter_description"><para>A pointer to a AtkTextRectangle which is filled in by this function. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.3">1.3</link></para></refsect2>
<refsect2 id="atk-text-free-ranges" role="function" condition="since:1.3">
<title>atk_text_free_ranges&#160;()</title>
<indexterm zone="atk-text-free-ranges" role="1.3"><primary>atk_text_free_ranges</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
atk_text_free_ranges (<parameter><link linkend="AtkTextRange"><type>AtkTextRange</type></link> **ranges</parameter>);</programlisting>
<para>Frees the memory associated with an array of AtkTextRange. It is assumed
that the array was returned by the function atk_text_get_bounded_ranges
and is NULL terminated.</para>
<refsect3 id="atk-text-free-ranges.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ranges</para></entry>
<entry role="parameter_description"><para>A pointer to an array of <link linkend="AtkTextRange"><type>AtkTextRange</type></link> which is
to be freed. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.3">1.3</link></para></refsect2>
<refsect2 id="atk-text-get-n-selections" role="function">
<title>atk_text_get_n_selections&#160;()</title>
<indexterm zone="atk-text-get-n-selections"><primary>atk_text_get_n_selections</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
atk_text_get_n_selections (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>);</programlisting>
<para>Gets the number of selected regions.</para>
<refsect3 id="atk-text-get-n-selections.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-n-selections.returns" role="returns">
<title>Returns</title>
<para> The number of selected regions, or -1 if a failure
occurred.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-get-selection" role="function">
<title>atk_text_get_selection&#160;()</title>
<indexterm zone="atk-text-get-selection"><primary>atk_text_get_selection</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_get_selection (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> selection_num</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> *start_offset</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> *end_offset</parameter>);</programlisting>
<para>Gets the text from the specified selection.</para>
<refsect3 id="atk-text-get-selection.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>selection_num</para></entry>
<entry role="parameter_description"><para>The selection number.  The selected regions are
assigned numbers that correspond to how far the region is from the
start of the text.  The selected region closest to the beginning
of the text region is assigned the number 0, etc.  Note that adding,
moving or deleting a selected region can change the numbering.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>passes back the starting character offset of the selected region. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>passes back the ending character offset (offset immediately past)
of the selected region. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-get-selection.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string containing the selected text. Use <link linkend="g-free"><function>g_free()</function></link>
to free the returned string.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-add-selection" role="function">
<title>atk_text_add_selection&#160;()</title>
<indexterm zone="atk-text-add-selection"><primary>atk_text_add_selection</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_text_add_selection (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> start_offset</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> end_offset</parameter>);</programlisting>
<para>Adds a selection bounded by the specified offsets.</para>
<refsect3 id="atk-text-add-selection.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the starting character offset of the selected region</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the offset of the first character after the selected region.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-add-selection.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>
<refsect2 id="atk-text-remove-selection" role="function">
<title>atk_text_remove_selection&#160;()</title>
<indexterm zone="atk-text-remove-selection"><primary>atk_text_remove_selection</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_text_remove_selection (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                           <parameter><link linkend="gint"><type>gint</type></link> selection_num</parameter>);</programlisting>
<para>Removes the specified selection.</para>
<refsect3 id="atk-text-remove-selection.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>selection_num</para></entry>
<entry role="parameter_description"><para>The selection number.  The selected regions are
assigned numbers that correspond to how far the region is from the
start of the text.  The selected region closest to the beginning
of the text region is assigned the number 0, etc.  Note that adding,
moving or deleting a selected region can change the numbering.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-remove-selection.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>
<refsect2 id="atk-text-set-selection" role="function">
<title>atk_text_set_selection&#160;()</title>
<indexterm zone="atk-text-set-selection"><primary>atk_text_set_selection</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_text_set_selection (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> selection_num</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> start_offset</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> end_offset</parameter>);</programlisting>
<para>Changes the start and end offset of the specified selection.</para>
<refsect3 id="atk-text-set-selection.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>selection_num</para></entry>
<entry role="parameter_description"><para>The selection number.  The selected regions are
assigned numbers that correspond to how far the region is from the
start of the text.  The selected region closest to the beginning
of the text region is assigned the number 0, etc.  Note that adding,
moving or deleting a selected region can change the numbering.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_offset</para></entry>
<entry role="parameter_description"><para>the new starting character offset of the selection</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_offset</para></entry>
<entry role="parameter_description"><para>the new end position of (e.g. offset immediately past)
the selection</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-set-selection.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>
<refsect2 id="atk-text-set-caret-offset" role="function">
<title>atk_text_set_caret_offset&#160;()</title>
<indexterm zone="atk-text-set-caret-offset"><primary>atk_text_set_caret_offset</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_text_set_caret_offset (<parameter><link linkend="AtkText"><type>AtkText</type></link> *text</parameter>,
                           <parameter><link linkend="gint"><type>gint</type></link> offset</parameter>);</programlisting>
<para>Sets the caret (cursor) position to the specified <parameter>offset</parameter>
.</para>
<refsect3 id="atk-text-set-caret-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkText"><type>AtkText</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>the character offset of the new caret position</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-set-caret-offset.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.</para>
</refsect3></refsect2>
<refsect2 id="atk-attribute-set-free" role="function">
<title>atk_attribute_set_free&#160;()</title>
<indexterm zone="atk-attribute-set-free"><primary>atk_attribute_set_free</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
atk_attribute_set_free (<parameter><link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> *attrib_set</parameter>);</programlisting>
<para>Frees the memory used by an <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link>, including all its
<link linkend="AtkAttributes"><type>AtkAttributes</type></link>.</para>
<refsect3 id="atk-attribute-set-free.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>attrib_set</para></entry>
<entry role="parameter_description"><para>The <link linkend="AtkAttributeSet"><type>AtkAttributeSet</type></link> to free</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="atk-text-attribute-register" role="function">
<title>atk_text_attribute_register&#160;()</title>
<indexterm zone="atk-text-attribute-register"><primary>atk_text_attribute_register</primary></indexterm>
<programlisting language="C"><link linkend="AtkTextAttribute"><returnvalue>AtkTextAttribute</returnvalue></link>
atk_text_attribute_register (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>);</programlisting>
<para>Associate <parameter>name</parameter>
 with a new <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link></para>
<refsect3 id="atk-text-attribute-register.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>a name string</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-attribute-register.returns" role="returns">
<title>Returns</title>
<para> an <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> associated with <parameter>name</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="atk-text-attribute-get-name" role="function">
<title>atk_text_attribute_get_name&#160;()</title>
<indexterm zone="atk-text-attribute-get-name"><primary>atk_text_attribute_get_name</primary></indexterm>
<programlisting language="C">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_attribute_get_name (<parameter><link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> attr</parameter>);</programlisting>
<para>Gets the name corresponding to the <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link></para>
<refsect3 id="atk-text-attribute-get-name.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>attr</para></entry>
<entry role="parameter_description"><para>The <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> whose name is required</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-attribute-get-name.returns" role="returns">
<title>Returns</title>
<para> a string containing the name; this string should not be freed</para>
</refsect3></refsect2>
<refsect2 id="atk-text-attribute-for-name" role="function">
<title>atk_text_attribute_for_name&#160;()</title>
<indexterm zone="atk-text-attribute-for-name"><primary>atk_text_attribute_for_name</primary></indexterm>
<programlisting language="C"><link linkend="AtkTextAttribute"><returnvalue>AtkTextAttribute</returnvalue></link>
atk_text_attribute_for_name (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>);</programlisting>
<para>Get the <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> type corresponding to a text attribute name.</para>
<refsect3 id="atk-text-attribute-for-name.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>a string which is the (non-localized) name of an ATK text attribute.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-attribute-for-name.returns" role="returns">
<title>Returns</title>
<para> the <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> enumerated type corresponding to the specified
name,
or <link linkend="ATK-TEXT-ATTRIBUTE-INVALID:CAPS"><type>ATK_TEXT_ATTRIBUTE_INVALID</type></link> if no matching text attribute is found.</para>
</refsect3></refsect2>
<refsect2 id="atk-text-attribute-get-value" role="function">
<title>atk_text_attribute_get_value&#160;()</title>
<indexterm zone="atk-text-attribute-get-value"><primary>atk_text_attribute_get_value</primary></indexterm>
<programlisting language="C">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_text_attribute_get_value (<parameter><link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> attr</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> index_</parameter>);</programlisting>
<para>Gets the value for the index of the <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link></para>
<refsect3 id="atk-text-attribute-get-value.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>attr</para></entry>
<entry role="parameter_description"><para>The <link linkend="AtkTextAttribute"><type>AtkTextAttribute</type></link> for which a value is required</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>index_</para></entry>
<entry role="parameter_description"><para>The index of the required value</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-text-attribute-get-value.returns" role="returns">
<title>Returns</title>
<para>a string containing the value; this string
should not be freed; <link linkend="NULL:CAPS"><literal>NULL</literal></link> is returned if there are no values
maintained for the attr value. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="AtkText.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="AtkText-struct" role="struct">
<title>AtkText</title>
<indexterm zone="AtkText-struct"><primary>AtkText</primary></indexterm>
<programlisting language="C">typedef struct _AtkText AtkText;</programlisting>
</refsect2>
<refsect2 id="AtkTextIface" role="struct">
<title>struct AtkTextIface</title>
<indexterm zone="AtkTextIface"><primary>AtkTextIface</primary></indexterm>
<programlisting language="C">struct AtkTextIface {
  GTypeInterface parent;

  gchar*         (* get_text)                     (AtkText          *text,
                                                   gint             start_offset,
                                                   gint             end_offset);
  gchar*         (* get_text_after_offset)        (AtkText          *text,
                                                   gint             offset,
                                                   AtkTextBoundary  boundary_type,
						   gint             *start_offset,
						   gint             *end_offset);
  gchar*         (* get_text_at_offset)           (AtkText          *text,
                                                   gint             offset,
                                                   AtkTextBoundary  boundary_type,
						   gint             *start_offset,
						   gint             *end_offset);
  gunichar       (* get_character_at_offset)      (AtkText          *text,
                                                   gint             offset);
  gchar*         (* get_text_before_offset)       (AtkText          *text,
                                                   gint             offset,
                                                   AtkTextBoundary  boundary_type,
 						   gint             *start_offset,
						   gint             *end_offset);
  gint           (* get_caret_offset)             (AtkText          *text);
  AtkAttributeSet* (* get_run_attributes)         (AtkText	    *text,
						   gint	  	    offset,
						   gint             *start_offset,
						   gint	 	    *end_offset);
  AtkAttributeSet* (* get_default_attributes)     (AtkText	    *text);
  void           (* get_character_extents)        (AtkText          *text,
                                                   gint             offset,
                                                   gint             *x,
                                                   gint             *y,
                                                   gint             *width,
                                                   gint             *height,
                                                   AtkCoordType	    coords);
  gint           (* get_character_count)          (AtkText          *text);
  gint           (* get_offset_at_point)          (AtkText          *text,
                                                   gint             x,
                                                   gint             y,
                                                   AtkCoordType	    coords);
  gint		 (* get_n_selections)		  (AtkText          *text);
  gchar*         (* get_selection)	          (AtkText          *text,
						   gint		    selection_num,
						   gint		    *start_offset,
						   gint		    *end_offset);
  gboolean       (* add_selection)		  (AtkText          *text,
						   gint		    start_offset,
						   gint		    end_offset);
  gboolean       (* remove_selection)		  (AtkText          *text,
						   gint             selection_num);
  gboolean       (* set_selection)		  (AtkText          *text,
						   gint		    selection_num,
						   gint		    start_offset,
						   gint		    end_offset);
  gboolean       (* set_caret_offset)             (AtkText          *text,
                                                   gint             offset);

  /*
   * signal handlers
   */
  void		 (* text_changed)                 (AtkText          *text,
                                                   gint             position,
                                                   gint             length);
  void           (* text_caret_moved)             (AtkText          *text,
                                                   gint             location);
  void           (* text_selection_changed)       (AtkText          *text);

  void           (* text_attributes_changed)      (AtkText          *text);

  void           (* get_range_extents)            (AtkText          *text,
                                                   gint             start_offset,
                                                   gint             end_offset,
                                                   AtkCoordType     coord_type,
                                                   AtkTextRectangle *rect);

  AtkTextRange** (* get_bounded_ranges)           (AtkText          *text,
                                                   AtkTextRectangle *rect,
                                                   AtkCoordType     coord_type,
                                                   AtkTextClipType  x_clip_type,
                                                   AtkTextClipType  y_clip_type);

  gchar*         (* get_string_at_offset)         (AtkText            *text,
                                                   gint               offset,
                                                   AtkTextGranularity granularity,
                                                   gint               *start_offset,
                                                   gint               *end_offset);
};
</programlisting>
<refsect3 id="AtkTextIface.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><link linkend="GTypeInterface"><type>GTypeInterface</type></link>&#160;<structfield id="AtkTextIface.parent">parent</structfield>;</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-text">get_text</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-text-after-offset">get_text_after_offset</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Gets specified text. This virtual function
is deprecated and it should not be overridden.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-text-at-offset">get_text_at_offset</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Gets specified text. This virtual function
is deprecated and it should not be overridden.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-character-at-offset">get_character_at_offset</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-text-before-offset">get_text_before_offset</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Gets specified text. This virtual function
is deprecated and it should not be overridden.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-caret-offset">get_caret_offset</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-run-attributes">get_run_attributes</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-default-attributes">get_default_attributes</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-character-extents">get_character_extents</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-character-count">get_character_count</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-offset-at-point">get_offset_at_point</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-n-selections">get_n_selections</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-selection">get_selection</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.add-selection">add_selection</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.remove-selection">remove_selection</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.set-selection">set_selection</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.set-caret-offset">set_caret_offset</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.text-changed">text_changed</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>the signal handler which is executed when there is a
text change. This virtual function is deprecated sice 2.9.4 and
it should not be overriden.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.text-caret-moved">text_caret_moved</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.text-selection-changed">text_selection_changed</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.text-attributes-changed">text_attributes_changed</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-range-extents">get_range_extents</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-bounded-ranges">get_bounded_ranges</structfield>&#160;()</para></entry>
<entry /><entry />
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="AtkTextIface.get-string-at-offset">get_string_at_offset</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Gets a portion of the text exposed through
an AtkText according to a given offset and a specific
granularity, along with the start and end offsets defining the
boundaries of such a portion of text.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
</refsect2>
<refsect2 id="AtkTextBoundary" role="enum">
<title>enum AtkTextBoundary</title>
<indexterm zone="AtkTextBoundary"><primary>AtkTextBoundary</primary></indexterm>
<para>Text boundary types used for specifying boundaries for regions of text.
This enumeration is deprecated since 2.9.4 and should not be used. Use
AtkTextGranularity with <link linkend="atk-text-get-string-at-offset"><type>atk_text_get_string_at_offset</type></link> instead.</para>
<refsect3 id="AtkTextBoundary.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-CHAR:CAPS">ATK_TEXT_BOUNDARY_CHAR</para></entry>
<entry role="enum_member_description"><para>Boundary is the boundary between characters
(including non-printing characters)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-WORD-START:CAPS">ATK_TEXT_BOUNDARY_WORD_START</para></entry>
<entry role="enum_member_description"><para>Boundary is the start (i.e. first character) of a word.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-WORD-END:CAPS">ATK_TEXT_BOUNDARY_WORD_END</para></entry>
<entry role="enum_member_description"><para>Boundary is the end (i.e. last
character) of a word.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-SENTENCE-START:CAPS">ATK_TEXT_BOUNDARY_SENTENCE_START</para></entry>
<entry role="enum_member_description"><para>Boundary is the first character in a sentence.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-SENTENCE-END:CAPS">ATK_TEXT_BOUNDARY_SENTENCE_END</para></entry>
<entry role="enum_member_description"><para>Boundary is the last (terminal)
character in a sentence; in languages which use "sentence stop"
punctuation such as English, the boundary is thus the '.', '?', or
similar terminal punctuation character.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-LINE-START:CAPS">ATK_TEXT_BOUNDARY_LINE_START</para></entry>
<entry role="enum_member_description"><para>Boundary is the initial character of the content or a
character immediately following a newline, linefeed, or return character.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-BOUNDARY-LINE-END:CAPS">ATK_TEXT_BOUNDARY_LINE_END</para></entry>
<entry role="enum_member_description"><para>Boundary is the linefeed, or return
character.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="AtkTextGranularity" role="enum">
<title>enum AtkTextGranularity</title>
<indexterm zone="AtkTextGranularity"><primary>AtkTextGranularity</primary></indexterm>
<para>Text granularity types used for specifying the granularity of the region of
text we are interested in.</para>
<refsect3 id="AtkTextGranularity.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-GRANULARITY-CHAR:CAPS">ATK_TEXT_GRANULARITY_CHAR</para></entry>
<entry role="enum_member_description"><para>Granularity is defined by the boundaries between characters
(including non-printing characters)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-GRANULARITY-WORD:CAPS">ATK_TEXT_GRANULARITY_WORD</para></entry>
<entry role="enum_member_description"><para>Granularity is defined by the boundaries of a word,
starting at the beginning of the current word and finishing at the beginning of
the following one, if present.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-GRANULARITY-SENTENCE:CAPS">ATK_TEXT_GRANULARITY_SENTENCE</para></entry>
<entry role="enum_member_description"><para>Granularity is defined by the boundaries of a sentence,
starting at the beginning of the current sentence and finishing at the beginning of
the following one, if present.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-GRANULARITY-LINE:CAPS">ATK_TEXT_GRANULARITY_LINE</para></entry>
<entry role="enum_member_description"><para>Granularity is defined by the boundaries of a line,
starting at the beginning of the current line and finishing at the beginning of
the following one, if present.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-GRANULARITY-PARAGRAPH:CAPS">ATK_TEXT_GRANULARITY_PARAGRAPH</para></entry>
<entry role="enum_member_description"><para>Granularity is defined by the boundaries of a paragraph,
starting at the beginning of the current paragraph and finishing at the beginning of
the following one, if present.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="AtkTextClipType" role="enum">
<title>enum AtkTextClipType</title>
<indexterm zone="AtkTextClipType"><primary>AtkTextClipType</primary></indexterm>
<para>Describes the type of clipping required.</para>
<refsect3 id="AtkTextClipType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-CLIP-NONE:CAPS">ATK_TEXT_CLIP_NONE</para></entry>
<entry role="enum_member_description"><para>No clipping to be done</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-CLIP-MIN:CAPS">ATK_TEXT_CLIP_MIN</para></entry>
<entry role="enum_member_description"><para>Text clipped by min coordinate is omitted</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-CLIP-MAX:CAPS">ATK_TEXT_CLIP_MAX</para></entry>
<entry role="enum_member_description"><para>Text clipped by max coordinate is omitted</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-CLIP-BOTH:CAPS">ATK_TEXT_CLIP_BOTH</para></entry>
<entry role="enum_member_description"><para>Only text fully within mix/max bound is retained</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="AtkTextRange-struct" role="struct">
<title>struct AtkTextRange</title>
<indexterm zone="AtkTextRange-struct"><primary>AtkTextRange</primary></indexterm>
<programlisting language="C">struct AtkTextRange {
  AtkTextRectangle bounds;
  gint start_offset;
  gint end_offset;
  gchar* content;
};
</programlisting>
<para>A structure used to describe a text range.</para>
<refsect3 id="AtkTextRange.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><link linkend="AtkTextRectangle"><type>AtkTextRectangle</type></link>&#160;<structfield id="AtkTextRange-struct.bounds">bounds</structfield>;</para></entry>
<entry role="struct_member_description"><para>A rectangle giving the bounds of the text range</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRange-struct.start-offset">start_offset</structfield>;</para></entry>
<entry role="struct_member_description"><para>The start offset of a AtkTextRange</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRange-struct.end-offset">end_offset</structfield>;</para></entry>
<entry role="struct_member_description"><para>The end offset of a AtkTextRange</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gchar"><type>gchar</type></link>&#160;*<structfield id="AtkTextRange-struct.content">content</structfield>;</para></entry>
<entry role="struct_member_description"><para>The text in the text range</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
</refsect2>
<refsect2 id="AtkTextRectangle" role="struct">
<title>struct AtkTextRectangle</title>
<indexterm zone="AtkTextRectangle"><primary>AtkTextRectangle</primary></indexterm>
<programlisting language="C">struct AtkTextRectangle {
  gint x;
  gint y;
  gint width;
  gint height;
};
</programlisting>
<para>A structure used to store a rectangle used by AtkText.</para>
<refsect3 id="AtkTextRectangle.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRectangle.x">x</structfield>;</para></entry>
<entry role="struct_member_description"><para>The horizontal coordinate of a rectangle</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRectangle.y">y</structfield>;</para></entry>
<entry role="struct_member_description"><para>The vertical coordinate of a rectangle</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRectangle.width">width</structfield>;</para></entry>
<entry role="struct_member_description"><para>The width of a rectangle</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="AtkTextRectangle.height">height</structfield>;</para></entry>
<entry role="struct_member_description"><para>The height of a rectangle</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
</refsect2>
<refsect2 id="AtkTextAttribute" role="enum">
<title>enum AtkTextAttribute</title>
<indexterm zone="AtkTextAttribute"><primary>AtkTextAttribute</primary></indexterm>
<para>Describes the text attributes supported</para>
<refsect3 id="AtkTextAttribute.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-INVALID:CAPS">ATK_TEXT_ATTR_INVALID</para></entry>
<entry role="enum_member_description"><para>Invalid attribute, like bad spelling or grammar.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-LEFT-MARGIN:CAPS">ATK_TEXT_ATTR_LEFT_MARGIN</para></entry>
<entry role="enum_member_description"><para>The pixel width of the left margin</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-RIGHT-MARGIN:CAPS">ATK_TEXT_ATTR_RIGHT_MARGIN</para></entry>
<entry role="enum_member_description"><para>The pixel width of the right margin</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-INDENT:CAPS">ATK_TEXT_ATTR_INDENT</para></entry>
<entry role="enum_member_description"><para>The number of pixels that the text is indented</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-INVISIBLE:CAPS">ATK_TEXT_ATTR_INVISIBLE</para></entry>
<entry role="enum_member_description"><para>Either "true" or "false" indicating whether text is visible or not</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-EDITABLE:CAPS">ATK_TEXT_ATTR_EDITABLE</para></entry>
<entry role="enum_member_description"><para>Either "true" or "false" indicating whether text is editable or not</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-PIXELS-ABOVE-LINES:CAPS">ATK_TEXT_ATTR_PIXELS_ABOVE_LINES</para></entry>
<entry role="enum_member_description"><para>Pixels of blank space to leave above each newline-terminated line. </para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-PIXELS-BELOW-LINES:CAPS">ATK_TEXT_ATTR_PIXELS_BELOW_LINES</para></entry>
<entry role="enum_member_description"><para>Pixels of blank space to leave below each newline-terminated line.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-PIXELS-INSIDE-WRAP:CAPS">ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP</para></entry>
<entry role="enum_member_description"><para>Pixels of blank space to leave between wrapped lines inside the same newline-terminated line (paragraph).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-BG-FULL-HEIGHT:CAPS">ATK_TEXT_ATTR_BG_FULL_HEIGHT</para></entry>
<entry role="enum_member_description"><para>"true" or "false" whether to make the background color for each character the height of the highest font used on the current line, or the height of the font used for the current character.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-RISE:CAPS">ATK_TEXT_ATTR_RISE</para></entry>
<entry role="enum_member_description"><para>Number of pixels that the characters are risen above the baseline</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-UNDERLINE:CAPS">ATK_TEXT_ATTR_UNDERLINE</para></entry>
<entry role="enum_member_description"><para>"none", "single", "double", "low", or "error"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-STRIKETHROUGH:CAPS">ATK_TEXT_ATTR_STRIKETHROUGH</para></entry>
<entry role="enum_member_description"><para>"true" or "false" whether the text is strikethrough </para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-SIZE:CAPS">ATK_TEXT_ATTR_SIZE</para></entry>
<entry role="enum_member_description"><para>The size of the characters in points. eg: 10</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-SCALE:CAPS">ATK_TEXT_ATTR_SCALE</para></entry>
<entry role="enum_member_description"><para>The scale of the characters. The value is a string representation of a double </para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-WEIGHT:CAPS">ATK_TEXT_ATTR_WEIGHT</para></entry>
<entry role="enum_member_description"><para>The weight of the characters.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-LANGUAGE:CAPS">ATK_TEXT_ATTR_LANGUAGE</para></entry>
<entry role="enum_member_description"><para>The language used</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-FAMILY-NAME:CAPS">ATK_TEXT_ATTR_FAMILY_NAME</para></entry>
<entry role="enum_member_description"><para>The font family name</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-BG-COLOR:CAPS">ATK_TEXT_ATTR_BG_COLOR</para></entry>
<entry role="enum_member_description"><para>The background color. The value is an RGB value of the format "<link linkend="u"><literal>u</literal></link>,<link linkend="u"><literal>u</literal></link>,<link linkend="u"><literal>u</literal></link>"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-FG-COLOR:CAPS">ATK_TEXT_ATTR_FG_COLOR</para></entry>
<entry role="enum_member_description"><para>The foreground color. The value is an RGB value of the format "<link linkend="u"><literal>u</literal></link>,<link linkend="u"><literal>u</literal></link>,<link linkend="u"><literal>u</literal></link>"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-BG-STIPPLE:CAPS">ATK_TEXT_ATTR_BG_STIPPLE</para></entry>
<entry role="enum_member_description"><para>"true" if a <link linkend="GdkBitmap"><type>GdkBitmap</type></link> is set for stippling the background color.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-FG-STIPPLE:CAPS">ATK_TEXT_ATTR_FG_STIPPLE</para></entry>
<entry role="enum_member_description"><para>"true" if a <link linkend="GdkBitmap"><type>GdkBitmap</type></link> is set for stippling the foreground color.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-WRAP-MODE:CAPS">ATK_TEXT_ATTR_WRAP_MODE</para></entry>
<entry role="enum_member_description"><para>The wrap mode of the text, if any. Values are "none", "char", "word", or "word_char".</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-DIRECTION:CAPS">ATK_TEXT_ATTR_DIRECTION</para></entry>
<entry role="enum_member_description"><para>The direction of the text, if set. Values are "none", "ltr" or "rtl" </para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-JUSTIFICATION:CAPS">ATK_TEXT_ATTR_JUSTIFICATION</para></entry>
<entry role="enum_member_description"><para>The justification of the text, if set. Values are "left", "right", "center" or "fill" </para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-STRETCH:CAPS">ATK_TEXT_ATTR_STRETCH</para></entry>
<entry role="enum_member_description"><para>The stretch of the text, if set. Values are "ultra_condensed", "extra_condensed", "condensed", "semi_condensed", "normal", "semi_expanded", "expanded", "extra_expanded" or "ultra_expanded"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-VARIANT:CAPS">ATK_TEXT_ATTR_VARIANT</para></entry>
<entry role="enum_member_description"><para>The capitalization variant of the text, if set. Values are "normal" or "small_caps"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-STYLE:CAPS">ATK_TEXT_ATTR_STYLE</para></entry>
<entry role="enum_member_description"><para>The slant style of the text, if set. Values are "normal", "oblique" or "italic"</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-TEXT-ATTR-LAST-DEFINED:CAPS">ATK_TEXT_ATTR_LAST_DEFINED</para></entry>
<entry role="enum_member_description"><para>not a valid text attribute, used for finding end of enumeration</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="AtkText.signal-details" role="signals">
<title role="signals.title">Signal Details</title>
<refsect2 id="AtkText-text-attributes-changed" role="signal"><title>The <literal>“text-attributes-changed”</literal> signal</title>
<indexterm zone="AtkText-text-attributes-changed"><primary>AtkText::text-attributes-changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<para>The "text-attributes-changed" signal is emitted when the text
attributes of the text of an object which implements AtkText
changes.</para>
<refsect3 id="AtkText-text-attributes-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></para>
</refsect2><refsect2 id="AtkText-text-caret-moved" role="signal"><title>The <literal>“text-caret-moved”</literal> signal</title>
<indexterm zone="AtkText-text-caret-moved"><primary>AtkText::text-caret-moved</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gint"><type>gint</type></link>     arg1,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<para>The "text-caret-moved" signal is emitted when the caret
position of the text of an object which implements AtkText
changes.</para>
<refsect3 id="AtkText-text-caret-moved.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg1</para></entry>
<entry role="parameter_description"><para>The new position of the text caret.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></para>
</refsect2><refsect2 id="AtkText-text-changed" role="signal"><title>The <literal>“text-changed”</literal> signal</title>
<indexterm zone="AtkText-text-changed" role="deprecated"><primary>AtkText::text-changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gint"><type>gint</type></link>     arg1,
               <link linkend="gint"><type>gint</type></link>     arg2,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<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>
<warning><para><literal>AtkText::text-changed</literal> has been deprecated since version 2.9.4 and should not be used in newly-written code.</para> <para>Use <link linkend="AtkObject-text-insert"><type>“text-insert”</type></link> or
<link linkend="AtkObject-text-remove"><type>“text-remove”</type></link> instead.</para>
</warning>
<refsect3 id="AtkText-text-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg1</para></entry>
<entry role="parameter_description"><para>The position (character offset) of the insertion or deletion.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg2</para></entry>
<entry role="parameter_description"><para>The length (in characters) of text inserted or deleted.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></para>
</refsect2><refsect2 id="AtkText-text-insert" role="signal"><title>The <literal>“text-insert”</literal> signal</title>
<indexterm zone="AtkText-text-insert"><primary>AtkText::text-insert</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gint"><type>gint</type></link>     arg1,
               <link linkend="gint"><type>gint</type></link>     arg2,
               <link linkend="gchar"><type>gchar</type></link>   *arg3,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<para>The "text-insert" signal is emitted when a new text is
inserted. If the signal was not triggered by the user
(e.g. typing or pasting text), the "system" detail should be
included.</para>
<refsect3 id="AtkText-text-insert.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg1</para></entry>
<entry role="parameter_description"><para>The position (character offset) of the insertion.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg2</para></entry>
<entry role="parameter_description"><para>The length (in characters) of text inserted.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg3</para></entry>
<entry role="parameter_description"><para>The new text inserted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></para>
</refsect2><refsect2 id="AtkText-text-remove" role="signal"><title>The <literal>“text-remove”</literal> signal</title>
<indexterm zone="AtkText-text-remove"><primary>AtkText::text-remove</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gint"><type>gint</type></link>     arg1,
               <link linkend="gint"><type>gint</type></link>     arg2,
               <link linkend="gchar"><type>gchar</type></link>   *arg3,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<para>The "text-remove" signal is emitted when a new text is
removed. If the signal was not triggered by the user
(e.g. typing or pasting text), the "system" detail should be
included.</para>
<refsect3 id="AtkText-text-remove.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg1</para></entry>
<entry role="parameter_description"><para>The position (character offset) of the removal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg2</para></entry>
<entry role="parameter_description"><para>The length (in characters) of text removed.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>arg3</para></entry>
<entry role="parameter_description"><para>The old text removed</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-DETAILED:CAPS">Has Details</link></para>
</refsect2><refsect2 id="AtkText-text-selection-changed" role="signal"><title>The <literal>“text-selection-changed”</literal> signal</title>
<indexterm zone="AtkText-text-selection-changed"><primary>AtkText::text-selection-changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="AtkText"><type>AtkText</type></link> *atktext,
               <link linkend="gpointer"><type>gpointer</type></link> user_data)</programlisting>
<para>The "text-selection-changed" signal is emitted when the
selected text of an object which implements AtkText changes.</para>
<refsect3 id="AtkText-text-selection-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>atktext</para></entry>
<entry role="parameter_description"><para>the object which received the signal.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></para>
</refsect2>
</refsect1>

</refentry>
