Initial revision
[platform/upstream/atk.git] / atk / atktext.h
1 /* ATK - The Accessibility Toolkit for GTK+
2  * Copyright 2001 Sun Microsystems Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20
21 #ifndef __ATK_TEXT_H__
22 #define __ATK_TEXT_H__
23
24 #include <pango/pango.h>
25 #include <glib-object.h>
26 #include <atk/atkobject.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
31
32 #define ATK_TYPE_TEXT                    (atk_text_get_type ())
33 #define ATK_IS_TEXT(obj)                 G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_TEXT)
34 #define ATK_TEXT(obj)                    G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_TEXT, AtkText)
35 #define ATK_TEXT_GET_IFACE(obj)          (G_TYPE_INSTANCE_GET_INTERFACE ((obj), ATK_TYPE_TEXT, AtkTextIface))
36
37 #ifndef _TYPEDEF_ATK_TEXT_
38 #define _TYPEDEF_ATK_TEXT_
39 typedef struct _AtkText AtkText;
40 #endif
41
42 typedef enum {
43   ATK_TEXT_BOUNDARY_CHAR,
44   ATK_TEXT_BOUNDARY_CURSOR_POS,
45   ATK_TEXT_BOUNDARY_WORD_START,
46   ATK_TEXT_BOUNDARY_WORD_END,
47   ATK_TEXT_BOUNDARY_SENTENCE_START,
48   ATK_TEXT_BOUNDARY_SENTENCE_END,
49   ATK_TEXT_BOUNDARY_LINE_START,
50   ATK_TEXT_BOUNDARY_LINE_END
51 } AtkTextBoundary;
52
53 struct _AtkTextIface
54 {
55   GTypeInterface parent;
56
57   gchar* (* get_text)                     (AtkText          *text,
58                                            gint             start_offset,
59                                            gint             end_offset);
60   gchar* (* get_text_after_offset)        (AtkText          *text,
61                                            gint             offset,
62                                            AtkTextBoundary  boundary_type);
63   gchar* (* get_text_at_offset)           (AtkText          *text,
64                                            gint             offset,
65                                            AtkTextBoundary  boundary_type);
66   gunichar (* get_character_at_offset)    (AtkText          *text,
67                                            gint             offset);
68   gchar* (* get_text_before_offset)       (AtkText          *text,
69                                            gint             offset,
70                                            AtkTextBoundary  boundary_type);
71   gint   (* get_caret_offset)             (AtkText          *text);
72   void   (* get_row_col_at_offset)        (AtkText          *text,
73                                            gint             offset,
74                                            gint             *row,
75                                            gint             *col);
76   PangoAttrList* (* get_range_attributes) (AtkText          *text,
77                                            gint             start_offset,
78                                            gint             end_offset);
79   void   (* get_character_extents)        (AtkText          *text,
80                                            gint             offset,
81                                            gint             *x,
82                                            gint             *y,
83                                            gint             *length,
84                                            gint             *width);
85   gint   (* get_character_count)          (AtkText          *text);
86   gint   (* get_offset_at_point)          (AtkText          *text,
87                                            gint             x,
88                                            gint             y);
89   gchar* (* get_selected_text)            (AtkText          *text);
90   gboolean (* get_selection_bounds)       (AtkText          *text,
91                                            gint             *start_offset,
92                                            gint             *end_offset);
93   void     (*  set_selection_bounds)      (AtkText         *text,
94                                            gint            start_offset,
95                                            gint            end_offset);
96
97 };
98 GType            atk_text_get_type (void);
99
100
101 /*
102  * Additional AtkObject properties used by AtkText:
103  *    "accessible_text" (accessible text has changed)
104  *    "accessible_caret" (accessible text cursor position changed:
105  *                         editable text only)
106  */
107
108 gchar*        atk_text_get_text                           (AtkText          *text,
109                                                            gint             start_offset,
110                                                            gint             end_offset);
111
112 gunichar      atk_text_get_character_at_offset            (AtkText          *text,
113                                                            gint             offset);
114
115 gchar*        atk_text_get_text_after_offset              (AtkText          *text,
116                                                            gint             offset,
117                                                            AtkTextBoundary  boundary_type);
118 gchar*        atk_text_get_text_at_offset                 (AtkText          *text,
119                                                            gint             offset,
120                                                            AtkTextBoundary  boundary_type);
121 gchar*        atk_text_get_text_before_offset             (AtkText          *text,
122                                                            gint             offset,
123                                                            AtkTextBoundary  boundary_type);
124 gint          atk_text_get_caret_offset                   (AtkText          *text);
125 void          atk_text_get_row_col_at_offset              (AtkText          *text,
126                                                            gint             offset,
127                                                            gint             *row,
128                                                            gint             *col);
129 PangoAttrList* atk_text_get_range_attributes              (AtkText          *text,
130                                                            gint             start_offset,
131                                                            gint             end_offset);
132 void          atk_text_get_character_extents              (AtkText          *text,
133                                                            gint             offset,
134                                                            gint             *x,
135                                                            gint             *y,
136                                                            gint             *length,
137                                                            gint             *width);
138 gint          atk_text_get_character_count                (AtkText          *text);
139 gint          atk_text_get_offset_at_point                (AtkText          *text,
140                                                            gint             x,
141                                                            gint             y);
142 gchar*        atk_text_get_selected_text                  (AtkText          *text);
143 gboolean      atk_text_get_selection_bounds               (AtkText          *text,
144                                                            gint             *start_offset,
145                                                            gint             *end_offset);
146 void          atk_text_set_selection_bounds               (AtkText          *text,
147                                                            gint             start_offset,
148                                                            gint             end_offset);
149
150
151 #ifdef __cplusplus
152 }
153 #endif /* __cplusplus */
154
155
156 #endif /* __ATK_TEXT_H__ */