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