accessible/src/windows/ia2/ia2AccessibleText.h

branch
TOR_BUG_9701
changeset 8
97036ab72558
equal deleted inserted replaced
-1:000000000000 0:7ffbbebc07e9
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:expandtab:shiftwidth=2:tabstop=2:
3 */
4 /* This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7
8 #ifndef _ACCESSIBLE_TEXT_H
9 #define _ACCESSIBLE_TEXT_H
10
11 #include "nsISupports.h"
12 #include "nsIAccessibleText.h"
13
14 #include "AccessibleText.h"
15
16 namespace mozilla {
17 namespace a11y {
18
19 class ia2AccessibleText: public IAccessibleText
20 {
21 public:
22
23 // IAccessibleText
24 virtual HRESULT STDMETHODCALLTYPE addSelection(
25 /* [in] */ long startOffset,
26 /* [in] */ long endOffset);
27
28 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
29 /* [in] */ long offset,
30 /* [out] */ long *startOffset,
31 /* [out] */ long *endOffset,
32 /* [retval][out] */ BSTR *textAttributes);
33
34 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
35 /* [retval][out] */ long *offset);
36
37 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
38 /* [in] */ long offset,
39 /* [in] */ enum IA2CoordinateType coordType,
40 /* [out] */ long *x,
41 /* [out] */ long *y,
42 /* [out] */ long *width,
43 /* [retval][out] */ long *height);
44
45 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
46 /* [retval][out] */ long *nSelections);
47
48 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
49 /* [in] */ long x,
50 /* [in] */ long y,
51 /* [in] */ enum IA2CoordinateType coordType,
52 /* [retval][out] */ long *offset);
53
54 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
55 /* [in] */ long selectionIndex,
56 /* [out] */ long *startOffset,
57 /* [retval][out] */ long *endOffset);
58
59 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
60 /* [in] */ long startOffset,
61 /* [in] */ long endOffset,
62 /* [retval][out] */ BSTR *text);
63
64 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
65 /* [in] */ long offset,
66 /* [in] */ enum IA2TextBoundaryType boundaryType,
67 /* [out] */ long *startOffset,
68 /* [out] */ long *endOffset,
69 /* [retval][out] */ BSTR *text);
70
71 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
72 /* [in] */ long offset,
73 /* [in] */ enum IA2TextBoundaryType boundaryType,
74 /* [out] */ long *startOffset,
75 /* [out] */ long *endOffset,
76 /* [retval][out] */ BSTR *text);
77
78 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
79 /* [in] */ long offset,
80 /* [in] */ enum IA2TextBoundaryType boundaryType,
81 /* [out] */ long *startOffset,
82 /* [out] */ long *endOffset,
83 /* [retval][out] */ BSTR *text);
84
85 virtual HRESULT STDMETHODCALLTYPE removeSelection(
86 /* [in] */ long selectionIndex);
87
88 virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
89 /* [in] */ long offset);
90
91 virtual HRESULT STDMETHODCALLTYPE setSelection(
92 /* [in] */ long selectionIndex,
93 /* [in] */ long startOffset,
94 /* [in] */ long endOffset);
95
96 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
97 /* [retval][out] */ long *nCharacters);
98
99 virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
100 /* [in] */ long startIndex,
101 /* [in] */ long endIndex,
102 /* [in] */ enum IA2ScrollType scrollType);
103
104 virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
105 /* [in] */ long startIndex,
106 /* [in] */ long endIndex,
107 /* [in] */ enum IA2CoordinateType coordinateType,
108 /* [in] */ long x,
109 /* [in] */ long y);
110
111 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
112 /* [retval][out] */ IA2TextSegment *newText);
113
114 virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
115 /* [retval][out] */ IA2TextSegment *oldText);
116
117 protected:
118 virtual nsresult GetModifiedText(bool aGetInsertedText, nsAString& aText,
119 uint32_t *aStartOffset,
120 uint32_t *aEndOffset) = 0;
121
122 private:
123 HRESULT GetModifiedText(bool aGetInsertedText, IA2TextSegment *aNewText);
124 AccessibleTextBoundary GetGeckoTextBoundary(enum IA2TextBoundaryType coordinateType);
125 };
126
127 } // namespace a11y
128 } // namespace mozilla
129
130
131 #define FORWARD_IACCESSIBLETEXT(Class) \
132 virtual HRESULT STDMETHODCALLTYPE addSelection(long startOffset, \
133 long endOffset) \
134 { \
135 return Class::addSelection(startOffset, endOffset); \
136 } \
137 \
138 virtual HRESULT STDMETHODCALLTYPE get_attributes(long offset, \
139 long *startOffset, \
140 long *endOffset, \
141 BSTR *textAttributes) \
142 { \
143 return Class::get_attributes(offset, startOffset, endOffset, textAttributes);\
144 } \
145 \
146 virtual HRESULT STDMETHODCALLTYPE get_caretOffset(long *offset) \
147 { \
148 return Class::get_caretOffset(offset); \
149 } \
150 \
151 virtual HRESULT STDMETHODCALLTYPE get_characterExtents(long offset, \
152 enum IA2CoordinateType coordType,\
153 long *x, \
154 long *y, \
155 long *width, \
156 long *height) \
157 { \
158 return Class::get_characterExtents(offset, coordType, x, y, width, height); \
159 } \
160 \
161 virtual HRESULT STDMETHODCALLTYPE get_nSelections(long *nSelections) \
162 { \
163 return Class::get_nSelections(nSelections); \
164 } \
165 \
166 virtual HRESULT STDMETHODCALLTYPE get_offsetAtPoint(long x, \
167 long y, \
168 enum IA2CoordinateType coordType,\
169 long *offset) \
170 { \
171 return Class::get_offsetAtPoint(x, y, coordType, offset); \
172 } \
173 \
174 virtual HRESULT STDMETHODCALLTYPE get_selection(long selectionIndex, \
175 long *startOffset, \
176 long *endOffset) \
177 { \
178 return Class::get_selection(selectionIndex, startOffset, endOffset); \
179 } \
180 \
181 virtual HRESULT STDMETHODCALLTYPE get_text(long startOffset, \
182 long endOffset, \
183 BSTR *text) \
184 { \
185 return Class::get_text(startOffset, endOffset, text); \
186 } \
187 \
188 virtual HRESULT STDMETHODCALLTYPE get_textBeforeOffset(long offset, \
189 enum IA2TextBoundaryType boundaryType,\
190 long *startOffset, \
191 long *endOffset, \
192 BSTR *text) \
193 { \
194 return Class::get_textBeforeOffset(offset, boundaryType, \
195 startOffset, endOffset, text); \
196 } \
197 \
198 virtual HRESULT STDMETHODCALLTYPE get_textAfterOffset(long offset, \
199 enum IA2TextBoundaryType boundaryType,\
200 long *startOffset, \
201 long *endOffset, \
202 BSTR *text) \
203 { \
204 return Class::get_textAfterOffset(offset, boundaryType, \
205 startOffset, endOffset, text); \
206 } \
207 \
208 virtual HRESULT STDMETHODCALLTYPE get_textAtOffset(long offset, \
209 enum IA2TextBoundaryType boundaryType,\
210 long *startOffset, \
211 long *endOffset, \
212 BSTR *text) \
213 { \
214 return Class::get_textAtOffset(offset, boundaryType, \
215 startOffset, endOffset, text); \
216 } \
217 \
218 virtual HRESULT STDMETHODCALLTYPE removeSelection(long selectionIndex) \
219 { \
220 return Class::removeSelection(selectionIndex); \
221 } \
222 \
223 virtual HRESULT STDMETHODCALLTYPE setCaretOffset(long offset) \
224 { \
225 return Class::setCaretOffset(offset); \
226 } \
227 \
228 virtual HRESULT STDMETHODCALLTYPE setSelection(long selectionIndex, \
229 long startOffset, \
230 long endOffset) \
231 { \
232 return Class::setSelection(selectionIndex, startOffset, endOffset); \
233 } \
234 \
235 virtual HRESULT STDMETHODCALLTYPE get_nCharacters(long *nCharacters) \
236 { \
237 return Class::get_nCharacters(nCharacters); \
238 } \
239 \
240 virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(long startIndex, \
241 long endIndex, \
242 enum IA2ScrollType scrollType)\
243 { \
244 return Class::scrollSubstringTo(startIndex, endIndex, scrollType); \
245 } \
246 \
247 virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(long startIndex, \
248 long endIndex, \
249 enum IA2CoordinateType coordinateType,\
250 long x, \
251 long y) \
252 { \
253 return Class::scrollSubstringToPoint(startIndex, endIndex, \
254 coordinateType, x, y); \
255 } \
256 \
257 virtual HRESULT STDMETHODCALLTYPE get_newText(IA2TextSegment *newText) \
258 { \
259 return Class::get_newText(newText); \
260 } \
261 \
262 virtual HRESULT STDMETHODCALLTYPE get_oldText(IA2TextSegment *oldText) \
263 { \
264 return Class::get_oldText(oldText); \
265 } \
266
267 #endif
268

mercurial