1 /* 2 * SPDX-FileCopyrightText: 2012 Frederik Gladhorn <gladhorn@kde.org> 3 * 4 * SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #ifndef TERMINALDISPLAYACCESSIBLE_H 8 #define TERMINALDISPLAYACCESSIBLE_H 9 10 //#include <QtGlobal> 11 12 #include <QAccessibleTextInterface> 13 #include <QAccessibleWidget> 14 15 #include "Screen.h" 16 #include "ScreenWindow.h" 17 #include "terminalDisplay/TerminalDisplay.h" 18 19 namespace Konsole 20 { 21 /** 22 * Class implementing the QAccessibleInterface for the terminal display. 23 * This exposes information about the display to assistive technology using the QAccessible framework. 24 * 25 * Most functions are re-implemented from QAccessibleTextInterface. 26 */ 27 class TerminalDisplayAccessible : public QAccessibleWidget, public QAccessibleTextInterface 28 { 29 public: 30 explicit TerminalDisplayAccessible(TerminalDisplay *display); 31 32 QString text(QAccessible::Text t) const override; 33 QString text(int startOffset, int endOffset) const override; 34 int characterCount() const override; 35 36 int selectionCount() const override; 37 void selection(int selectionIndex, int *startOffset, int *endOffset) const override; 38 void addSelection(int startOffset, int endOffset) override; 39 void setSelection(int selectionIndex, int startOffset, int endOffset) override; 40 void removeSelection(int selectionIndex) override; 41 42 QRect characterRect(int offset) const override; 43 int offsetAtPoint(const QPoint &point) const override; 44 void scrollToSubstring(int startIndex, int endIndex) override; 45 46 QString attributes(int offset, int *startOffset, int *endOffset) const override; 47 48 int cursorPosition() const override; 49 void setCursorPosition(int position) override; 50 51 void *interface_cast(QAccessible::InterfaceType type) override; 52 53 private: 54 Konsole::TerminalDisplay *display() const; 55 positionToOffset(int column,int line)56 inline int positionToOffset(int column, int line) const 57 { 58 return line * display()->_usedColumns + column; 59 } 60 lineForOffset(int offset)61 inline int lineForOffset(int offset) const 62 { 63 return offset / display()->_usedColumns; 64 } 65 columnForOffset(int offset)66 inline int columnForOffset(int offset) const 67 { 68 return offset % display()->_usedColumns; 69 } 70 71 QString visibleText() const; 72 }; 73 } // namespace 74 75 #endif // TERMINALDISPLAYACCESSIBLE_H 76