2004-02-11 Padraig O'Briain <padraig.obriain@sun.com>
[platform/core/uifw/at-spi2-atk.git] / idl / Accessibility_Text.idl
1 /* 
2  * AT-SPI - Assistive Technology Service Provider Interface 
3  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4  *
5  * Copyright 2001 Sun Microsystems, Inc.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 module Accessibility {
24
25   enum TEXT_BOUNDARY_TYPE {
26     TEXT_BOUNDARY_CHAR,
27     TEXT_BOUNDARY_WORD_START,
28     TEXT_BOUNDARY_WORD_END,
29     TEXT_BOUNDARY_SENTENCE_START,
30     TEXT_BOUNDARY_SENTENCE_END,
31     TEXT_BOUNDARY_LINE_START,
32     TEXT_BOUNDARY_LINE_END
33   };
34
35   /**
36    * TEXT_CLIP_TYPE:
37    * CLIP_MIN means text clipped by min coordinate is omitted,
38    * CLIP_MAX clips text interescted by the max coord, and CLIP_BOTH
39    * will retain only text falling fully within the min/max bounds.
40    *
41    **/
42   enum TEXT_CLIP_TYPE {
43     TEXT_CLIP_NONE,
44     TEXT_CLIP_MIN,
45     TEXT_CLIP_MAX,
46     TEXT_CLIP_BOTH
47   };
48
49   interface Text : Bonobo::Unknown {
50
51     struct Range {
52       long startOffset;
53       long endOffset; 
54       string content;
55       any  data;
56     };
57     
58     typedef sequence<Range> RangeList;
59     
60     readonly attribute long characterCount;
61     readonly attribute long caretOffset;
62     string getText (in long startOffset, in long endOffset);
63     boolean setCaretOffset (in long offset);
64     string getTextBeforeOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
65                                 out long startOffset, out long endOffset);
66     string getTextAtOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
67                                                         out long startOffset, out long endOffset);
68     string getTextAfterOffset (in long offset, in TEXT_BOUNDARY_TYPE type,
69                                                         out long startOffset, out long endOffset);
70     unsigned long getCharacterAtOffset (in long offset);  /* long instead of wchar, 
71                                                            * to allow unicode chars > 16 bits 
72                                                            */
73     string getAttributes (in long offset,
74                           out long startOffset, out long endOffset);
75     string getDefaultAttributes ();
76     void getCharacterExtents (in long offset, out long x, out long y, out long width, out long height, in short coordType);
77     long getOffsetAtPoint (in long x, in long y, in short coordType);
78     long getNSelections ();
79     void getSelection (in long selectionNum, out long startOffset, out long endOffset);
80     boolean addSelection (in long startOffset, in long endOffset);
81     boolean removeSelection (in long selectionNum);
82     boolean setSelection (in long selectionNum, in long startOffset, in long endOffset);
83     void    getRangeExtents (in long startOffset, in long endOffset, 
84                              out long x, out long y, 
85                              out long width, out long height, in short coordType);
86     RangeList getBoundedRanges (in long x, in long y, 
87                                 in long width, in long height, 
88                                 in short coordType, 
89                                 in TEXT_CLIP_TYPE xClipType, 
90                                 in TEXT_CLIP_TYPE yClipType);
91
92     /**
93      * unImplemented:
94      *
95      * placeholders for future expansion.
96      */
97     void unImplemented ();
98     void unImplemented2 ();
99     void unImplemented3 ();
100   };
101 };