1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QWSDISPLAY_QWS_H 43 #define QWSDISPLAY_QWS_H 44 45 #include <QtCore/qobject.h> 46 #include <QtCore/qbytearray.h> 47 #include <QtGui/qregion.h> 48 #include <QtGui/qimage.h> 49 #include <QtGui/qwindowdefs.h> 50 #include <QtCore/qlist.h> 51 52 QT_BEGIN_HEADER 53 54 QT_BEGIN_NAMESPACE 55 56 QT_MODULE(Gui) 57 58 class QWSEvent; 59 class QWSMouseEvent; 60 class QWSQCopMessageEvent; 61 class QVariant; 62 class QLock; 63 64 class QWSWindowInfo 65 { 66 67 public: 68 69 int winid; 70 unsigned int clientid; 71 QString name; 72 73 }; 74 75 #define QT_QWS_PROPERTY_CONVERTSELECTION 999 76 #define QT_QWS_PROPERTY_WINDOWNAME 998 77 #define QT_QWS_PROPERTY_MARKEDTEXT 997 78 79 class QWSDisplay; 80 extern Q_GUI_EXPORT QWSDisplay *qt_fbdpy; 81 82 class Q_GUI_EXPORT QWSDisplay 83 { 84 public: 85 QWSDisplay(); 86 ~QWSDisplay(); 87 instance()88 static QWSDisplay* instance() { return qt_fbdpy; } 89 90 bool eventPending() const; 91 QWSEvent *getEvent(); 92 // QWSRegionManager *regionManager() const; 93 94 uchar* frameBuffer() const; 95 int width() const; 96 int height() const; 97 int depth() const; 98 int pixmapDepth() const; 99 bool supportsDepth(int) const; 100 101 uchar *sharedRam() const; 102 int sharedRamSize() const; 103 104 #ifndef QT_NO_QWS_PROPERTIES 105 void addProperty(int winId, int property); 106 void setProperty(int winId, int property, int mode, const QByteArray &data); 107 void setProperty(int winId, int property, int mode, const char * data); 108 void removeProperty(int winId, int property); 109 bool getProperty(int winId, int property, char *&data, int &len); 110 #endif // QT_NO_QWS_PROPERTIES 111 112 QList<QWSWindowInfo> windowList(); 113 int windowAt(const QPoint &); 114 115 void setIdentity(const QString &appName); 116 void nameRegion(int winId, const QString& n, const QString &c); 117 void requestRegion(int winId, const QString &surfacekey, 118 const QByteArray &surfaceData, 119 const QRegion ®ion); 120 void repaintRegion(int winId, int windowFlags, bool opaque, QRegion); 121 void moveRegion(int winId, int dx, int dy); 122 void destroyRegion(int winId); 123 void requestFocus(int winId, bool get); 124 void setAltitude(int winId, int altitude, bool fixed = false); 125 void setOpacity(int winId, int opacity); 126 int takeId(); 127 void setSelectionOwner(int winId, const QTime &time); 128 void convertSelection(int winId, int selectionProperty, const QString &mimeTypes); 129 void defineCursor(int id, const QBitmap &curs, const QBitmap &mask, 130 int hotX, int hotY); 131 void destroyCursor(int id); 132 void selectCursor(QWidget *w, unsigned int id); 133 void setCursorPosition(int x, int y); 134 void grabMouse(QWidget *w, bool grab); 135 void grabKeyboard(QWidget *w, bool grab); 136 void playSoundFile(const QString&); 137 void registerChannel(const QString &channel); 138 void sendMessage(const QString &channel, const QString &msg, 139 const QByteArray &data); 140 void flushCommands(); 141 #ifndef QT_NO_QWS_INPUTMETHODS 142 void sendIMUpdate(int type, int winId, int widgetid); 143 void resetIM(); 144 void sendIMResponse(int winId, int property, const QVariant &result); 145 void sendIMMouseEvent(int index, bool isPress); 146 #endif 147 QWSQCopMessageEvent* waitForQCopResponse(); 148 void sendFontCommand(int type, const QByteArray &fontName); 149 150 void setWindowCaption(QWidget *w, const QString &); 151 152 // Lock display for access only by this process 153 static bool initLock(const QString &filename, bool create = false); 154 static bool grabbed(); 155 static void grab(); 156 static void grab(bool write); 157 static void ungrab(); 158 159 static void setTransformation(int transformation, int screenNo = -1); 160 static void setRawMouseEventFilter(void (*filter)(QWSMouseEvent *)); 161 162 private: 163 friend int qt_fork_qapplication(); 164 friend void qt_app_reinit( const QString& newAppName ); 165 friend class QApplication; 166 friend class QCopChannel; 167 friend class QWSEmbedWidget; 168 friend class QWSEmbedWidgetPrivate; 169 class Data; 170 friend class Data; 171 Data *d; 172 173 friend class QWSMemorySurface; 174 friend class QWSOnScreenSurface; 175 friend class QWSDirectPainterSurface; 176 int getPropertyLen; 177 char *getPropertyData; 178 static QLock *lock; 179 }; 180 181 QT_END_NAMESPACE 182 183 QT_END_HEADER 184 185 #endif // QWSDISPLAY_QWS_H 186