summaryrefslogtreecommitdiffstats
path: root/accessible/windows/ia2/ia2AccessibleText.h
diff options
context:
space:
mode:
Diffstat (limited to 'accessible/windows/ia2/ia2AccessibleText.h')
-rw-r--r--accessible/windows/ia2/ia2AccessibleText.h275
1 files changed, 275 insertions, 0 deletions
diff --git a/accessible/windows/ia2/ia2AccessibleText.h b/accessible/windows/ia2/ia2AccessibleText.h
new file mode 100644
index 000000000..a513e44a2
--- /dev/null
+++ b/accessible/windows/ia2/ia2AccessibleText.h
@@ -0,0 +1,275 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:expandtab:shiftwidth=2:tabstop=2:
+ */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef _ACCESSIBLE_TEXT_H
+#define _ACCESSIBLE_TEXT_H
+
+#include "nsIAccessibleText.h"
+
+#include "AccessibleText.h"
+
+namespace mozilla {
+namespace a11y {
+class HyperTextAccessibleWrap;
+
+class ia2AccessibleText: public IAccessibleText
+{
+public:
+
+ // IAccessibleText
+ virtual HRESULT STDMETHODCALLTYPE addSelection(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
+ /* [retval][out] */ long *offset);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
+ /* [retval][out] */ long *nSelections);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ virtual HRESULT STDMETHODCALLTYPE removeSelection(
+ /* [in] */ long selectionIndex);
+
+ virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
+ /* [in] */ long offset);
+
+ virtual HRESULT STDMETHODCALLTYPE setSelection(
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
+ /* [retval][out] */ long *nCharacters);
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ static void InitTextChangeData();
+ static void UpdateTextChangeData(HyperTextAccessibleWrap* aAcc, bool aInsert,
+ const nsString& aStr, int32_t aStart,
+ uint32_t aLen);
+
+protected:
+ static StaticRefPtr<HyperTextAccessibleWrap> sLastTextChangeAcc;
+ static StaticAutoPtr<nsString> sLastTextChangeString;
+ static bool sLastTextChangeWasInsert;
+ static uint32_t sLastTextChangeStart;
+ static uint32_t sLastTextChangeEnd;
+
+private:
+ HRESULT GetModifiedText(bool aGetInsertedText, IA2TextSegment *aNewText);
+ AccessibleTextBoundary GetGeckoTextBoundary(enum IA2TextBoundaryType coordinateType);
+};
+
+} // namespace a11y
+} // namespace mozilla
+
+
+#define FORWARD_IACCESSIBLETEXT(Class) \
+virtual HRESULT STDMETHODCALLTYPE addSelection(long startOffset, \
+ long endOffset) \
+{ \
+ return Class::addSelection(startOffset, endOffset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_attributes(long offset, \
+ long *startOffset, \
+ long *endOffset, \
+ BSTR *textAttributes) \
+{ \
+ return Class::get_attributes(offset, startOffset, endOffset, textAttributes);\
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_caretOffset(long *offset) \
+{ \
+ return Class::get_caretOffset(offset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_characterExtents(long offset, \
+ enum IA2CoordinateType coordType,\
+ long *x, \
+ long *y, \
+ long *width, \
+ long *height) \
+{ \
+ return Class::get_characterExtents(offset, coordType, x, y, width, height); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_nSelections(long *nSelections) \
+{ \
+ return Class::get_nSelections(nSelections); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_offsetAtPoint(long x, \
+ long y, \
+ enum IA2CoordinateType coordType,\
+ long *offset) \
+{ \
+ return Class::get_offsetAtPoint(x, y, coordType, offset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_selection(long selectionIndex, \
+ long *startOffset, \
+ long *endOffset) \
+{ \
+ return Class::get_selection(selectionIndex, startOffset, endOffset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_text(long startOffset, \
+ long endOffset, \
+ BSTR *text) \
+{ \
+ return Class::get_text(startOffset, endOffset, text); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_textBeforeOffset(long offset, \
+ enum IA2TextBoundaryType boundaryType,\
+ long *startOffset, \
+ long *endOffset, \
+ BSTR *text) \
+{ \
+ return Class::get_textBeforeOffset(offset, boundaryType, \
+ startOffset, endOffset, text); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_textAfterOffset(long offset, \
+ enum IA2TextBoundaryType boundaryType,\
+ long *startOffset, \
+ long *endOffset, \
+ BSTR *text) \
+{ \
+ return Class::get_textAfterOffset(offset, boundaryType, \
+ startOffset, endOffset, text); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_textAtOffset(long offset, \
+ enum IA2TextBoundaryType boundaryType,\
+ long *startOffset, \
+ long *endOffset, \
+ BSTR *text) \
+{ \
+ return Class::get_textAtOffset(offset, boundaryType, \
+ startOffset, endOffset, text); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE removeSelection(long selectionIndex) \
+{ \
+ return Class::removeSelection(selectionIndex); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE setCaretOffset(long offset) \
+{ \
+ return Class::setCaretOffset(offset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE setSelection(long selectionIndex, \
+ long startOffset, \
+ long endOffset) \
+{ \
+ return Class::setSelection(selectionIndex, startOffset, endOffset); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_nCharacters(long *nCharacters) \
+{ \
+ return Class::get_nCharacters(nCharacters); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(long startIndex, \
+ long endIndex, \
+ enum IA2ScrollType scrollType)\
+{ \
+ return Class::scrollSubstringTo(startIndex, endIndex, scrollType); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(long startIndex, \
+ long endIndex, \
+ enum IA2CoordinateType coordinateType,\
+ long x, \
+ long y) \
+{ \
+ return Class::scrollSubstringToPoint(startIndex, endIndex, \
+ coordinateType, x, y); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_newText(IA2TextSegment *newText) \
+{ \
+ return Class::get_newText(newText); \
+} \
+ \
+virtual HRESULT STDMETHODCALLTYPE get_oldText(IA2TextSegment *oldText) \
+{ \
+ return Class::get_oldText(oldText); \
+} \
+
+#endif
+