diff options
author | Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> | 2012-04-09 14:16:19 -0700 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-16 19:36:19 +0200 |
commit | ce2b46daea5815df1070463b6bc379e1b4573dae (patch) | |
tree | 285476dfe393748b414362975c31af8dc68dc008 /src/plugins/platforms/eglfs/qeglfscursor.h | |
parent | 420b62f2028d2331a729ef800b40dfc762d1613c (diff) |
Add eglfs cursor support
cursor-atlas.png was generated from existing cursor images
(qttools/src/shared/qtpropertybrowser/images/)
Change-Id: Ic4b396590eaec93e14a4b0915b15f735f5b1a5f5
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/plugins/platforms/eglfs/qeglfscursor.h')
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfscursor.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfscursor.h b/src/plugins/platforms/eglfs/qeglfscursor.h new file mode 100644 index 0000000000..a580404ab8 --- /dev/null +++ b/src/plugins/platforms/eglfs/qeglfscursor.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEGLFSCURSOR_H +#define QEGLFSCURSOR_H + +#include <qpa/qplatformcursor.h> +#include "qeglfsscreen.h" + +QT_BEGIN_NAMESPACE + +class QOpenGLShaderProgram; + +class QEglFSCursor : public QPlatformCursor +{ +public: + QEglFSCursor(QEglFSScreen *screen); + ~QEglFSCursor(); + + void changeCursor(QCursor *cursor, QWindow *widget); + void pointerEvent(const QMouseEvent &event); + + QPoint pos() const; + void setPos(const QPoint &pos); + + QRect cursorRect() const { return QRect(m_pos, m_cursor.size); } + + void render(); + +private: + void createShaderPrograms(); + static void createCursorTexture(uint *texture, const QImage &image); + void initCursorAtlas(); + + QPlatformScreen *m_screen; + + // cursor atlas information + struct CursorAtlas { + CursorAtlas() : texture(0), cursorWidth(0), cursorHeight(0) { } + uint texture; + int width, height; // width and height of the the atlas + int cursorWidth, cursorHeight; // width and height of cursors inside the atlas + QPoint hotSpot; + } m_cursorAtlas; + + // current cursor information + struct Cursor { + Cursor() : texture(0), shape(Qt::BlankCursor) { } + uint texture; // a texture from 'image' or the atlas + Qt::CursorShape shape; + QRectF textureRect; // normalized rect inside texture + QSize size; // size of the cursor + QPoint hotSpot; + } m_cursor; + + QPoint m_pos; + + QOpenGLShaderProgram *m_program; + int m_vertexCoordEntry; + int m_textureCoordEntry; + int m_textureEntry; +}; + +QT_END_NAMESPACE + +#endif // QEGLFSCURSOR_H + |