Qt 4.8
qcursor_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
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 Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/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 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QCURSOR_P_H
43 #define QCURSOR_P_H
44 
45 //
46 // W A R N I N G
47 // -------------
48 //
49 // This file is not part of the Qt API. It exists for the convenience
50 // of a number of Qt sources files. This header file may change from
51 // version to version without notice, or even be removed.
52 //
53 // We mean it.
54 //
55 
56 #include "QtCore/qatomic.h"
57 #include "QtCore/qglobal.h"
58 #include "QtCore/qnamespace.h"
59 #include "QtGui/qpixmap.h"
60 
61 # if defined (Q_WS_MAC)
62 # include "private/qt_mac_p.h"
63 # elif defined(Q_WS_X11)
64 # include "private/qt_x11_p.h"
65 # elif defined(Q_WS_WIN)
66 # include "QtCore/qt_windows.h"
67 # elif defined(Q_OS_SYMBIAN)
68 # include "private/qt_s60_p.h"
69 #endif
70 
72 
73 #if defined (Q_WS_MAC)
74 void *qt_mac_nsCursorForQCursor(const QCursor &c);
75 class QMacAnimateCursor;
76 #endif
77 
78 class QBitmap;
79 class QCursorData {
80 public:
82  ~QCursorData();
83 
84  static void initialize();
85  static void cleanup();
86 
91  short hx, hy;
92 #if defined (Q_WS_MAC)
93  int mId;
94 #elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
95  int id;
96 #endif
97 #if defined (Q_WS_WIN)
99 #elif defined (Q_WS_X11)
100  XColor fg, bg;
101  Cursor hcurs;
102  Pixmap pm, pmm;
103 #elif defined (Q_WS_MAC)
104  enum { TYPE_None, TYPE_ImageCursor, TYPE_ThemeCursor } type;
105  union {
106  struct {
107  uint my_cursor:1;
108  void *nscursor;
109  } cp;
110  struct {
111  QMacAnimateCursor *anim;
112  ThemeCursor curs;
113  } tc;
114  } curs;
115  void initCursorFromBitmap();
116  void initCursorFromPixmap();
117 #elif defined Q_OS_SYMBIAN
118  void loadShapeFromResource(RWsSpriteBase& target, QString resource, int hx, int hy, int interval=0);
119  void constructShapeSprite(RWsSpriteBase& target);
120  void constructCursorSprite(RWsSpriteBase& target);
121  RWsPointerCursor pcurs;
122  RWsSprite scurs;
123  RPointerArray<TSpriteMember> nativeSpriteMembers;
124 #endif
125  static bool initialized;
126  void update();
127  static QCursorData *setBitmap(const QBitmap &bitmap, const QBitmap &mask, int hotX, int hotY);
128 };
129 
130 extern QCursorData *qt_cursorTable[Qt::LastCursor + 1]; // qcursor.cpp
131 
133 
134 #endif // QCURSOR_P_H
int type
Definition: qmetatype.cpp:239
The QCursor class provides a mouse cursor with an arbitrary shape.
Definition: qcursor.h:89
unsigned char c[8]
Definition: qnumeric_p.h:62
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
The QAtomicInt class provides platform-independent atomic operations on integers. ...
Definition: qatomic.h:55
short hy
Definition: qcursor_p.h:91
QPixmap pixmap
Definition: qcursor_p.h:90
HICON HCURSOR
void * qt_mac_nsCursorForQCursor(const QCursor &c)
Definition: qcursor_mac.mm:100
static bool initialized
Definition: qcursor_p.h:125
The QString class provides a Unicode character string.
Definition: qstring.h:83
HCURSOR hcurs
Definition: qcursor_p.h:98
static QCursorData * setBitmap(const QBitmap &bitmap, const QBitmap &mask, int hotX, int hotY)
Definition: qcursor_mac.mm:278
The QBitmap class provides monochrome (1-bit depth) pixmaps.
Definition: qbitmap.h:55
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
QCursorData(Qt::CursorShape s=Qt::ArrowCursor)
Definition: qcursor_mac.mm:253
unsigned int uint
Definition: qglobal.h:996
void update()
Creates the cursor.
Definition: qcursor_mac.mm:387
Qt::CursorShape cshape
Definition: qcursor_p.h:88
CursorShape
Definition: qnamespace.h:1262
short hx
Definition: qcursor_p.h:91
The QPixmap class is an off-screen image representation that can be used as a paint device...
Definition: qpixmap.h:71
QBitmap * bmm
Definition: qcursor_p.h:89
static void cleanup()
Definition: qcursor.cpp:402
static void initialize()
Definition: qcursor.cpp:417
QAtomicInt ref
Definition: qcursor_p.h:87
QBitmap * bm
Definition: qcursor_p.h:89
QCursorData * qt_cursorTable[Qt::LastCursor+1]
Definition: qcursor.cpp:398