1 /****************************************************************************
2 ** $Id: qt/qcursor.h 3.3.8 edited Jan 11 14:38 $
3 **
4 ** Definition of QCursor class
5 **
6 ** Created : 940219
7 **
8 ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
9 **
10 ** This file is part of the kernel module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech ASA of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 ** information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37
38 #ifndef QCURSOR_H
39 #define QCURSOR_H
40
41 #ifndef QT_H
42 #include "qpoint.h"
43 #include "qshared.h"
44 #endif // QT_H
45
46 /*
47 ### The fake cursor has to go first with old qdoc.
48 */
49 #ifdef QT_NO_CURSOR
50
51 class Q_EXPORT QCursor : public Qt
52 {
53 public:
54 static QPoint pos();
55 static void setPos( int x, int y );
56 static void setPos( const QPoint & );
57 private:
58 QCursor();
59 };
60
61 #endif // QT_NO_CURSOR
62
63 #ifndef QT_NO_CURSOR
64
65 struct QCursorData;
66
67
68 class Q_EXPORT QCursor : public Qt
69 {
70 public:
71 QCursor(); // create default arrow cursor
72 QCursor( int shape );
73 QCursor( const QBitmap &bitmap, const QBitmap &mask,
74 int hotX=-1, int hotY=-1 );
75 QCursor( const QPixmap &pixmap,
76 int hotX=-1, int hotY=-1 );
77 QCursor( const QCursor & );
78 ~QCursor();
79 QCursor &operator=( const QCursor & );
80
81 int shape() const;
82 void setShape( int );
83
84 const QBitmap *bitmap() const;
85 const QBitmap *mask() const;
86 QPoint hotSpot() const;
87
88 #if defined(Q_WS_WIN)
89 HCURSOR handle() const;
90 QCursor( HCURSOR );
91 #elif defined(Q_WS_X11)
92 HANDLE handle() const;
93 QCursor( HANDLE );
94 #elif defined(Q_WS_MAC)
95 HANDLE handle() const;
96 #elif defined(Q_WS_QWS)
97 HANDLE handle() const;
98 #endif
99
100 static QPoint pos();
101 static void setPos( int x, int y );
102 static void setPos( const QPoint & );
103
104 static void initialize();
105 static void cleanup();
106
107 #if defined(Q_WS_X11)
108 static int x11Screen();
109 #endif
110 private:
111 void setBitmap( const QBitmap &bitmap, const QBitmap &mask,
112 int hotX, int hotY );
113 void update() const;
114 QCursorData *data;
115 QCursor *find_cur(int);
116 #if defined(Q_WS_MAC)
117 friend void qt_mac_set_cursor(const QCursor *c, const Point *p);
118 #endif
119 };
120
121
122 #if !defined(QT_CLEAN_NAMESPACE)
123 // CursorShape is defined in X11/X.h
124 #ifdef CursorShape
125 #define X_CursorShape CursorShape
126 #undef CursorShape
127 #endif
128 typedef Qt::CursorShape QCursorShape;
129 #ifdef X_CursorShape
130 #define CursorShape X_CursorShape
131 #endif
132 #endif
133
134
135 /*****************************************************************************
136 QCursor stream functions
137 *****************************************************************************/
138 #ifndef QT_NO_DATASTREAM
139 Q_EXPORT QDataStream &operator<<( QDataStream &, const QCursor & );
140 Q_EXPORT QDataStream &operator>>( QDataStream &, QCursor & );
141 #endif
142 #endif // QT_NO_CURSOR
143
144
setPos(const QPoint & p)145 inline void QCursor::setPos( const QPoint &p )
146 {
147 setPos( p.x(), p.y() );
148 }
149
150 #endif // QCURSOR_H
151