File indexing completed on 2024-04-28 05:50:55
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Frederik Gladhorn <gladhorn@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef TERMINALDISPLAYACCESSIBLE_H 0008 #define TERMINALDISPLAYACCESSIBLE_H 0009 0010 //#include <QtGlobal> 0011 0012 #include <QAccessibleTextInterface> 0013 #include <QAccessibleWidget> 0014 0015 #include "Screen.h" 0016 #include "ScreenWindow.h" 0017 #include "terminalDisplay/TerminalDisplay.h" 0018 0019 namespace Konsole 0020 { 0021 /** 0022 * Class implementing the QAccessibleInterface for the terminal display. 0023 * This exposes information about the display to assistive technology using the QAccessible framework. 0024 * 0025 * Most functions are re-implemented from QAccessibleTextInterface. 0026 */ 0027 class TerminalDisplayAccessible : public QAccessibleWidget, public QAccessibleTextInterface 0028 { 0029 public: 0030 explicit TerminalDisplayAccessible(TerminalDisplay *display); 0031 0032 QString text(QAccessible::Text t) const override; 0033 QString text(int startOffset, int endOffset) const override; 0034 int characterCount() const override; 0035 0036 int selectionCount() const override; 0037 void selection(int selectionIndex, int *startOffset, int *endOffset) const override; 0038 void addSelection(int startOffset, int endOffset) override; 0039 void setSelection(int selectionIndex, int startOffset, int endOffset) override; 0040 void removeSelection(int selectionIndex) override; 0041 0042 QRect characterRect(int offset) const override; 0043 int offsetAtPoint(const QPoint &point) const override; 0044 void scrollToSubstring(int startIndex, int endIndex) override; 0045 0046 QString attributes(int offset, int *startOffset, int *endOffset) const override; 0047 0048 int cursorPosition() const override; 0049 void setCursorPosition(int position) override; 0050 0051 void *interface_cast(QAccessible::InterfaceType type) override; 0052 0053 private: 0054 Konsole::TerminalDisplay *display() const; 0055 0056 inline int positionToOffset(int column, int line) const 0057 { 0058 return line * display()->_usedColumns + column; 0059 } 0060 0061 inline int lineForOffset(int offset) const 0062 { 0063 return offset / display()->_usedColumns; 0064 } 0065 0066 inline int columnForOffset(int offset) const 0067 { 0068 return offset % display()->_usedColumns; 0069 } 0070 0071 QString visibleText() const; 0072 }; 0073 } // namespace 0074 0075 #endif // TERMINALDISPLAYACCESSIBLE_H