Qt 4.8
qwscursor_qws.cpp
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 #include "qcursor.h"
43 #include "qbitmap.h"
44 #include "qscreen_qws.h"
45 #include "qapplication.h"
46 #include "qwindowsystem_qws.h"
47 #include "qwindowsystem_p.h"
48 #include "qwscursor_qws.h"
49 
51 
52 #ifndef QT_NO_QWS_CURSOR
54 static bool systemCursorTableInit = false;
55 
56 // 16 x 16
57 static const uchar cur_arrow_bits[] = {
58  0x07, 0x00, 0x39, 0x00, 0xc1, 0x01, 0x02, 0x0e, 0x02, 0x10, 0x02, 0x08,
59  0x04, 0x04, 0x04, 0x02, 0x04, 0x04, 0x88, 0x08, 0x48, 0x11, 0x28, 0x22,
60  0x10, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00 };
61 static const uchar mcur_arrow_bits[] = {
62  0x07, 0x00, 0x3f, 0x00, 0xff, 0x01, 0xfe, 0x0f, 0xfe, 0x1f, 0xfe, 0x0f,
63  0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x0f, 0x78, 0x1f, 0x38, 0x3e,
64  0x10, 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00 };
65 
66 static const unsigned char cur_up_arrow_bits[] = {
67  0x80, 0x00, 0x40, 0x01, 0x40, 0x01, 0x20, 0x02, 0x20, 0x02, 0x10, 0x04,
68  0x10, 0x04, 0x08, 0x08, 0x78, 0x0f, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
69  0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0xc0, 0x01};
70 static const unsigned char mcur_up_arrow_bits[] = {
71  0x80, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xe0, 0x03, 0xf0, 0x07,
72  0xf0, 0x07, 0xf8, 0x0f, 0xf8, 0x0f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
73  0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01};
74 
75 static const unsigned char cur_cross_bits[] = {
76  0xc0, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
77  0x7f, 0x7f, 0x01, 0x40, 0x7f, 0x7f, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
78  0x40, 0x01, 0x40, 0x01, 0xc0, 0x01, 0x00, 0x00};
79 static const unsigned char mcur_cross_bits[] = {
80  0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
81  0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
82  0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00};
83 
84 static const uchar cur_ibeam_bits[] = {
85  0x00, 0x00, 0xe0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
86  0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
87  0x80, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00 };
88 static const uchar mcur_ibeam_bits[] = {
89  0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
90  0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
91  0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0x00, 0x00 };
92 
93 static const uchar cur_ver_bits[] = {
94  0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f,
95  0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
96  0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00 };
97 static const uchar mcur_ver_bits[] = {
98  0x00, 0x00, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f, 0xf0, 0x1f, 0xf8, 0x3f,
99  0xfc, 0x7f, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xfc, 0x7f, 0xf8, 0x3f,
100  0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03 };
101 
102 static const uchar cur_hor_bits[] = {
103  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x30, 0x18,
104  0x38, 0x38, 0xfc, 0x7f, 0xfc, 0x7f, 0x38, 0x38, 0x30, 0x18, 0x20, 0x08,
105  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
106 static const uchar mcur_hor_bits[] = {
107  0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x60, 0x0c, 0x70, 0x1c, 0x78, 0x3c,
108  0xfc, 0x7f, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0x7f, 0x78, 0x3c,
109  0x70, 0x1c, 0x60, 0x0c, 0x40, 0x04, 0x00, 0x00 };
110 static const uchar cur_bdiag_bits[] = {
111  0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3e,
112  0x00, 0x37, 0x88, 0x23, 0xd8, 0x01, 0xf8, 0x00, 0x78, 0x00, 0xf8, 0x00,
113  0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
114 static const uchar mcur_bdiag_bits[] = {
115  0x00, 0x00, 0xc0, 0x7f, 0x80, 0x7f, 0x00, 0x7f, 0x00, 0x7e, 0x04, 0x7f,
116  0x8c, 0x7f, 0xdc, 0x77, 0xfc, 0x63, 0xfc, 0x41, 0xfc, 0x00, 0xfc, 0x01,
117  0xfc, 0x03, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00 };
118 static const uchar cur_fdiag_bits[] = {
119  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x00, 0x78, 0x00,
120  0xf8, 0x00, 0xd8, 0x01, 0x88, 0x23, 0x00, 0x37, 0x00, 0x3e, 0x00, 0x3c,
121  0x00, 0x3e, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00 };
122 static const uchar mcur_fdiag_bits[] = {
123  0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x01, 0xfc, 0x00,
124  0xfc, 0x41, 0xfc, 0x63, 0xdc, 0x77, 0x8c, 0x7f, 0x04, 0x7f, 0x00, 0x7e,
125  0x00, 0x7f, 0x80, 0x7f, 0xc0, 0x7f, 0x00, 0x00 };
126 static const uchar cur_blank_bits[] = {
127  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
128  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
130 
131 // 20 x 20
132 static const uchar forbidden_bits[] = {
133  0x00,0x00,0x00,0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xf0,0x00,0x38,0xc0,0x01,
134  0x7c,0x80,0x03,0xec,0x00,0x03,0xce,0x01,0x07,0x86,0x03,0x06,0x06,0x07,0x06,
135  0x06,0x0e,0x06,0x06,0x1c,0x06,0x0e,0x38,0x07,0x0c,0x70,0x03,0x1c,0xe0,0x03,
136  0x38,0xc0,0x01,0xf0,0xe0,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00,0x00,0x00,0x00 };
137 
138 static const uchar forbiddenm_bits[] = {
139  0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xff,0x00,0xf8,0xff,0x01,0xfc,0xf0,0x03,
140  0xfe,0xc0,0x07,0xfe,0x81,0x07,0xff,0x83,0x0f,0xcf,0x07,0x0f,0x8f,0x0f,0x0f,
141  0x0f,0x1f,0x0f,0x0f,0x3e,0x0f,0x1f,0xfc,0x0f,0x1e,0xf8,0x07,0x3e,0xf0,0x07,
142  0xfc,0xe0,0x03,0xf8,0xff,0x01,0xf0,0xff,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00};
143 
144 // 32 x 32
145 static const uchar wait_data_bits[] = {
146  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00,
148  0x00, 0x04, 0x40, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x08, 0x20, 0x00,
149  0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00,
150  0x00, 0x50, 0x15, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x40, 0x05, 0x00,
151  0x00, 0x80, 0x02, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00,
152  0x00, 0x10, 0x10, 0x00, 0x00, 0x08, 0x21, 0x00, 0x00, 0x88, 0x22, 0x00,
153  0x00, 0x48, 0x25, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0xfc, 0x7f, 0x00,
154  0x00, 0x04, 0x40, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
155  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
157 static const uchar wait_mask_bits[] = {
158  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00,
160  0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
161  0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
162  0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00,
163  0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00,
164  0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
165  0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00,
166  0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
167  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
169 
170 static const uchar hsplit_bits[] = {
171  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173  0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
174  0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
175  0x00, 0x41, 0x82, 0x00, 0x80, 0x41, 0x82, 0x01, 0xc0, 0x7f, 0xfe, 0x03,
176  0x80, 0x41, 0x82, 0x01, 0x00, 0x41, 0x82, 0x00, 0x00, 0x40, 0x02, 0x00,
177  0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
178  0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
179  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
180  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
181  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
182 static const uchar hsplitm_bits[] = {
183  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185  0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
186  0x00, 0xe0, 0x07, 0x00, 0x00, 0xe2, 0x47, 0x00, 0x00, 0xe3, 0xc7, 0x00,
187  0x80, 0xe3, 0xc7, 0x01, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07,
188  0xc0, 0xff, 0xff, 0x03, 0x80, 0xe3, 0xc7, 0x01, 0x00, 0xe3, 0xc7, 0x00,
189  0x00, 0xe2, 0x47, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
190  0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
191  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
192  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
193  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
194 static const uchar vsplit_bits[] = {
195  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197  0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00,
198  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
199  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00,
200  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00,
201  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
202  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
203  0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
206 static const uchar vsplitm_bits[] = {
207  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
209  0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00,
210  0x00, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00,
211  0x00, 0xc0, 0x01, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00,
212  0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00,
213  0x80, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00,
214  0x00, 0xc0, 0x01, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00,
215  0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00,
216  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
218 static const uchar phand_bits[] = {
219  0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
220  0x7e, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x70, 0x08, 0x00, 0x00,
221  0x08, 0x08, 0x00, 0x00, 0x70, 0x14, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00,
222  0x30, 0x41, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00,
223  0x80, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
224  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
230 static const uchar phandm_bits[] = {
231  0xfe, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00,
232  0xff, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
233  0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00,
234  0xf8, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00,
235  0xc0, 0x1f, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
236  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
242 
243 static const uchar size_all_data_bits[] = {
244  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246  0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00,
247  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
248  0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x40, 0x00, 0x80, 0x81, 0xc0, 0x00,
249  0xc0, 0xff, 0xff, 0x01, 0x80, 0x81, 0xc0, 0x00, 0x00, 0x81, 0x40, 0x00,
250  0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
251  0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00,
252  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
253  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
254  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
255 static const uchar size_all_mask_bits[] = {
256  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
258  0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00,
259  0x00, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc2, 0x21, 0x00,
260  0x00, 0xc3, 0x61, 0x00, 0x80, 0xc3, 0xe1, 0x00, 0xc0, 0xff, 0xff, 0x01,
261  0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x01, 0x80, 0xc3, 0xe1, 0x00,
262  0x00, 0xc3, 0x61, 0x00, 0x00, 0xc2, 0x21, 0x00, 0x00, 0xc0, 0x01, 0x00,
263  0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00,
264  0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
267 
268 static const uchar whatsthis_bits[] = {
269  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xf0, 0x07, 0x00,
270  0x09, 0x18, 0x0e, 0x00, 0x11, 0x1c, 0x0e, 0x00, 0x21, 0x1c, 0x0e, 0x00,
271  0x41, 0x1c, 0x0e, 0x00, 0x81, 0x1c, 0x0e, 0x00, 0x01, 0x01, 0x07, 0x00,
272  0x01, 0x82, 0x03, 0x00, 0xc1, 0xc7, 0x01, 0x00, 0x49, 0xc0, 0x01, 0x00,
273  0x95, 0xc0, 0x01, 0x00, 0x93, 0xc0, 0x01, 0x00, 0x21, 0x01, 0x00, 0x00,
274  0x20, 0xc1, 0x01, 0x00, 0x40, 0xc2, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00,
275  0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
276  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
277  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
278  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
279  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
280 static const uchar whatsthism_bits[] = {
281  0x01, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x07, 0x00, 0x07, 0xf8, 0x0f, 0x00,
282  0x0f, 0xfc, 0x1f, 0x00, 0x1f, 0x3e, 0x1f, 0x00, 0x3f, 0x3e, 0x1f, 0x00,
283  0x7f, 0x3e, 0x1f, 0x00, 0xff, 0x3e, 0x1f, 0x00, 0xff, 0x9d, 0x0f, 0x00,
284  0xff, 0xc3, 0x07, 0x00, 0xff, 0xe7, 0x03, 0x00, 0x7f, 0xe0, 0x03, 0x00,
285  0xf7, 0xe0, 0x03, 0x00, 0xf3, 0xe0, 0x03, 0x00, 0xe1, 0xe1, 0x03, 0x00,
286  0xe0, 0xe1, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00,
287  0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
288  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
289  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
290  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
292 
293 static const uchar busy_bits[] = {
294  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
295  0x09, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
296  0x41, 0xe0, 0xff, 0x00, 0x81, 0x20, 0x80, 0x00, 0x01, 0xe1, 0xff, 0x00,
297  0x01, 0x42, 0x40, 0x00, 0xc1, 0x47, 0x40, 0x00, 0x49, 0x40, 0x55, 0x00,
298  0x95, 0x80, 0x2a, 0x00, 0x93, 0x00, 0x15, 0x00, 0x21, 0x01, 0x0a, 0x00,
299  0x20, 0x01, 0x11, 0x00, 0x40, 0x82, 0x20, 0x00, 0x40, 0x42, 0x44, 0x00,
300  0x80, 0x41, 0x4a, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0xe0, 0xff, 0x00,
301  0x00, 0x20, 0x80, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
302  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
303  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
304  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
305 static const uchar busym_bits[] = {
306  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
307  0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
308  0x7f, 0xe0, 0xff, 0x00, 0xff, 0xe0, 0xff, 0x00, 0xff, 0xe1, 0xff, 0x00,
309  0xff, 0xc3, 0x7f, 0x00, 0xff, 0xc7, 0x7f, 0x00, 0x7f, 0xc0, 0x7f, 0x00,
310  0xf7, 0x80, 0x3f, 0x00, 0xf3, 0x00, 0x1f, 0x00, 0xe1, 0x01, 0x0e, 0x00,
311  0xe0, 0x01, 0x1f, 0x00, 0xc0, 0x83, 0x3f, 0x00, 0xc0, 0xc3, 0x7f, 0x00,
312  0x80, 0xc1, 0x7f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00,
313  0x00, 0xe0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
314  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
315  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
317 
318 // 16 x 16
319 static const uchar openhand_bits[] = {
320  0x80,0x01,0x58,0x0e,0x64,0x12,0x64,0x52,0x48,0xb2,0x48,0x92,
321  0x16,0x90,0x19,0x80,0x11,0x40,0x02,0x40,0x04,0x40,0x04,0x20,
322  0x08,0x20,0x10,0x10,0x20,0x10,0x00,0x00};
323 static const uchar openhandm_bits[] = {
324  0x80,0x01,0xd8,0x0f,0xfc,0x1f,0xfc,0x5f,0xf8,0xff,0xf8,0xff,
325  0xfe,0xff,0xff,0xff,0xff,0x7f,0xfe,0x7f,0xfc,0x7f,0xfc,0x3f,
326  0xf8,0x3f,0xf0,0x1f,0xe0,0x1f,0x00,0x00};
327 static const uchar closedhand_bits[] = {
328  0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x0d,0x48,0x32,0x08,0x50,
329  0x10,0x40,0x18,0x40,0x04,0x40,0x04,0x20,0x08,0x20,0x10,0x10,
330  0x20,0x10,0x20,0x10,0x00,0x00,0x00,0x00};
331 static const uchar closedhandm_bits[] = {
332  0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x0d,0xf8,0x3f,0xf8,0x7f,
333  0xf0,0x7f,0xf8,0x7f,0xfc,0x7f,0xfc,0x3f,0xf8,0x3f,0xf0,0x1f,
334  0xe0,0x1f,0xe0,0x1f,0x00,0x00,0x00,0x00};
335 
336 #endif
337 
339 {
340  Q_Q(QWSServer);
341  // setup system cursors
342 #ifndef QT_NO_QWS_CURSOR
343 // qt_screen->initCursor(sharedram + ramlen,true);
344 
345  // default cursor
346  cursor = 0;
348 #endif
349  q->sendMouseEvent(QPoint(swidth/2, sheight/2), 0);
350 }
351 
353 {
354 #ifdef QT_NO_QWS_CURSOR
355  Q_UNUSED(curs);
356 #else
357  if (cursor == curs)
358  return;
359 
360  cursor = curs;
361 
362  if (!haveviscurs || !curs)
364 
365  if (qt_screencursor) {
366  qt_screencursor->set(curs->image(),
367  curs->hotSpot().x(),
368  curs->hotSpot().y());
369  }
370 #endif
371 }
372 
373 #ifndef QT_NO_QWS_CURSOR
375 {
376  for (int i = 0; i <= Qt::LastCursor; i++)
377  if (systemCursorTable[i]) {
378  delete systemCursorTable[i];
379  systemCursorTable[i] = 0;
380  }
381 }
382 #endif
383 
385 {
386 #ifdef QT_NO_QWS_CURSOR
387  Q_UNUSED(id);
388 #else
389  if (!systemCursorTableInit) {
390  for (int i = 0; i <= Qt::LastCursor; i++)
391  systemCursorTable[i] = 0;
393  systemCursorTableInit = true;
394  }
395  switch (id) {
396  // 16x16 cursors
397  case Qt::ArrowCursor:
398  systemCursorTable[Qt::ArrowCursor] =
399  new QWSCursor(cur_arrow_bits, mcur_arrow_bits, 16, 16, 0, 0);
400  break;
401 
402  case Qt::UpArrowCursor:
403  systemCursorTable[Qt::UpArrowCursor] =
404  new QWSCursor(cur_up_arrow_bits, mcur_up_arrow_bits, 16, 16, 7, 0);
405  break;
406 
407  case Qt::CrossCursor:
408  systemCursorTable[Qt::CrossCursor] =
409  new QWSCursor(cur_cross_bits, mcur_cross_bits, 16, 16, 7, 7);
410  break;
411 
412  case Qt::IBeamCursor:
413  systemCursorTable[Qt::IBeamCursor] =
414  new QWSCursor(cur_ibeam_bits, mcur_ibeam_bits, 16, 16, 7, 7);
415  break;
416 
417  case Qt::SizeVerCursor:
418  systemCursorTable[Qt::SizeVerCursor] =
419  new QWSCursor(cur_ver_bits, mcur_ver_bits, 16, 16, 7, 7);
420  break;
421 
422  case Qt::SizeHorCursor:
423  systemCursorTable[Qt::SizeHorCursor] =
424  new QWSCursor(cur_hor_bits, mcur_hor_bits, 16, 16, 7, 7);
425  break;
426 
427  case Qt::SizeBDiagCursor:
428  systemCursorTable[Qt::SizeBDiagCursor] =
429  new QWSCursor(cur_bdiag_bits, mcur_bdiag_bits, 16, 16, 7, 7);
430  break;
431 
432  case Qt::SizeFDiagCursor:
433  systemCursorTable[Qt::SizeFDiagCursor] =
434  new QWSCursor(cur_fdiag_bits, mcur_fdiag_bits, 16, 16, 7, 7);
435  break;
436 
437  case Qt::BlankCursor:
438  systemCursorTable[Qt::BlankCursor] =
439  new QWSCursor(0, 0, 0, 0, 0, 0);
440  break;
441 
442  // 20x20 cursors
443  case Qt::ForbiddenCursor:
444  systemCursorTable[Qt::ForbiddenCursor] =
445  new QWSCursor(forbidden_bits, forbiddenm_bits, 20, 20, 10, 10);
446  break;
447 
448  // 32x32 cursors
449  case Qt::WaitCursor:
450  systemCursorTable[Qt::WaitCursor] =
451  new QWSCursor(wait_data_bits, wait_mask_bits, 32, 32, 15, 15);
452  break;
453 
454  case Qt::SplitVCursor:
455  systemCursorTable[Qt::SplitVCursor] =
456  new QWSCursor(vsplit_bits, vsplitm_bits, 32, 32, 15, 15);
457  break;
458 
459  case Qt::SplitHCursor:
460  systemCursorTable[Qt::SplitHCursor] =
461  new QWSCursor(hsplit_bits, hsplitm_bits, 32, 32, 15, 15);
462  break;
463 
464  case Qt::SizeAllCursor:
465  systemCursorTable[Qt::SizeAllCursor] =
466  new QWSCursor(size_all_data_bits, size_all_mask_bits, 32, 32, 15, 15);
467  break;
468 
470  systemCursorTable[Qt::PointingHandCursor] =
471  new QWSCursor(phand_bits, phandm_bits, 32, 32, 0, 0);
472  break;
473 
474  case Qt::WhatsThisCursor:
475  systemCursorTable[Qt::WhatsThisCursor] =
476  new QWSCursor(whatsthis_bits, whatsthism_bits, 32, 32, 0, 0);
477  break;
478  case Qt::BusyCursor:
479  systemCursorTable[Qt::BusyCursor] =
480  new QWSCursor(busy_bits, busym_bits, 32, 32, 0, 0);
481  break;
482 
483  case Qt::OpenHandCursor:
484  systemCursorTable[Qt::OpenHandCursor] =
485  new QWSCursor(openhand_bits, openhandm_bits, 16, 16, 8, 8);
486  break;
488  systemCursorTable[Qt::ClosedHandCursor] =
489  new QWSCursor(closedhand_bits, closedhandm_bits, 16, 16, 8, 8);
490  break;
491  default:
492  qWarning("Unknown system cursor %d", id);
493  }
494 #endif
495 }
496 
498 {
499  QWSCursor *cursor = 0;
500 #ifdef QT_NO_QWS_CURSOR
501  Q_UNUSED(id);
502 #else
503  if (id >= 0 && id <= Qt::LastCursor) {
504  if (!systemCursorTable[id])
505  createSystemCursor(id);
506  cursor = systemCursorTable[id];
507  }
508 
509  if (cursor == 0) {
510  if (!systemCursorTable[Qt::ArrowCursor])
511  createSystemCursor(Qt::ArrowCursor);
512  cursor = systemCursorTable[Qt::ArrowCursor];
513  }
514 #endif
515  return cursor;
516 }
517 
518 void QWSCursor::set(const uchar *data, const uchar *mask,
519  int width, int height, int hx, int hy)
520 {
521 #ifdef QT_NO_QWS_CURSOR
522  Q_UNUSED(data);
523  Q_UNUSED(mask);
524  Q_UNUSED(width);
525  Q_UNUSED(height);
526  Q_UNUSED(hx);
527  Q_UNUSED(hy);
528 #else
529  hot.setX(hx);
530  hot.setY(hy);
531 
532  cursor = QImage(width,height, QImage::Format_Indexed8);
533 
534  if (!width || !height || !data || !mask || cursor.isNull())
535  return;
536 
537  cursor.setColorCount(3);
538  cursor.setColor(0, 0xff000000);
539  cursor.setColor(1, 0xffffffff);
540  cursor.setColor(2, 0x00000000);
541 
542  int bytesPerLine = (width + 7) / 8;
543  int p = 0;
544  int d, m;
545 
546  int x = -1, w = 0;
547 
548  uchar *cursor_data = cursor.bits();
549  int bpl = cursor.bytesPerLine();
550  for (int i = 0; i < height; i++)
551  {
552  for (int j = 0; j < bytesPerLine; j++, data++, mask++)
553  {
554  for (int b = 0; b < 8 && j*8+b < width; b++)
555  {
556  d = *data & (1 << b);
557  m = *mask & (1 << b);
558  if (d && m) p = 0;
559  else if (!d && m) p = 1;
560  else p = 2;
561  cursor_data[j*8+b] = p;
562 
563  // calc region
564  if (x < 0 && m)
565  x = j*8+b;
566  else if (x >= 0 && !m) {
567  x = -1;
568  w = 0;
569  }
570  if (m)
571  w++;
572  }
573  }
574  if (x >= 0) {
575  x = -1;
576  w = 0;
577  }
578  cursor_data += bpl;
579  }
580 
582  createDropShadow(5, 2);
583 #endif
584 }
585 
586 // now we're really silly
587 void QWSCursor::createDropShadow(int dropx, int dropy)
588 {
589  //####
590 #if 1 || defined(QT_NO_QWS_CURSOR) || defined(QT_NO_QWS_ALHPA_CURSOR)
591  Q_UNUSED(dropx);
592  Q_UNUSED(dropy);
593 #else
594  if (cursor.width() + dropx > 64 || cursor.height() + dropy > 64)
595  return;
596 
597  if (!cursor.hasAlphaBuffer()) {
598  cursor.setAlphaBuffer(true);
599 
600  const int nblur=4;
601  const int darkness=140;
602 
603  QImage drop(cursor.width()+dropx+nblur, cursor.height()+dropy+nblur, 8, 18);
604  drop.setColor(0, 0xff000000); // bg (black)
605  drop.setColor(1, 0xffffffff); // fg (white)
606  for (int i=0; i<16; i++) {
607  drop.setColor(2+i, (darkness*i/16)<<24);
608  }
609  drop.fill(2); // all trans
610  QImage drop2 = drop.copy();
611 
612  int cp;
613 
614  // made solid shadow
615  for (int row = 0; row < cursor.height(); row++) {
616  for (int col = 0; col < cursor.width(); col++) {
617  cp = cursor.pixelIndex(col, row);
618  if (cp != 2)
619  drop.setPixel(col+dropx, row+dropy, 17);
620  }
621  }
622 
623  // blur shadow
624  for (int blur=0; blur<nblur; blur++) {
625  QImage& to((blur&1)?drop:drop2);
626  QImage& from((blur&1)?drop2:drop);
627  for (int row = 1; row < drop.height()-1; row++) {
628  for (int col = 1; col < drop.width()-1; col++) {
629  int t=0;
630  for (int dx=-1; dx<=1; dx++) {
631  for (int dy=-1; dy<=1; dy++) {
632  t += from.pixelIndex(col+dx,row+dy)-2;
633  }
634  }
635  to.setPixel(col,row,2+t/9);
636  }
637  }
638  }
639 
640  // copy cursor
641  for (int row = 0; row < cursor.height(); row++) {
642  for (int col = 0; col < cursor.width(); col++) {
643  cp = cursor.pixelIndex(col, row);
644  if (cp != 2)
645  drop.setPixel(col, row, cp);
646  }
647  }
648 
649  cursor = drop;
650  }
651 #endif
652 }
653 
double d
Definition: qnumeric_p.h:62
static void cleanupSystemCursorTable()
static void createSystemCursor(int id)
static const uchar hsplit_bits[]
static const uchar size_all_mask_bits[]
QImage copy(const QRect &rect=QRect()) const
Returns a sub-area of the image as a new image.
Definition: qimage.cpp:1410
void setColor(int i, QRgb c)
Sets the color at the given index in the color table, to the given to colorValue. ...
Definition: qimage.cpp:1850
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
static const uchar closedhandm_bits[]
static QWSCursor * systemCursorTable[Qt::LastCursor+1]
static const unsigned char cur_cross_bits[]
static const uchar phand_bits[]
static const uchar vsplit_bits[]
void qAddPostRoutine(QtCleanUpFunction p)
static QWSCursor * systemCursor(int id)
static const uchar openhandm_bits[]
static const uchar cur_bdiag_bits[]
static const uchar openhand_bits[]
static const uchar mcur_ibeam_bits[]
static const uchar cur_hor_bits[]
static const uchar mcur_ver_bits[]
QImage & image()
Definition: qwscursor_qws.h:66
bool supportsAlphaCursor() const
Definition: qscreen_qws.h:146
static const uchar closedhand_bits[]
static const uchar whatsthis_bits[]
static const uchar phandm_bits[]
#define Q_Q(Class)
Definition: qglobal.h:2483
int pixelIndex(int x, int y) const
Returns the pixel index at (x, y).
Definition: qimage.cpp:4194
static const uchar mcur_hor_bits[]
unsigned char uchar
Definition: qglobal.h:994
static const uchar busy_bits[]
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
static const uchar hsplitm_bits[]
static const uchar mcur_arrow_bits[]
static const uchar busym_bits[]
static const uchar cur_arrow_bits[]
static const uchar whatsthism_bits[]
static const uchar cur_blank_bits[]
void createDropShadow(int dropx, int dropy)
static const unsigned char mcur_cross_bits[]
Q_CORE_EXPORT void qWarning(const char *,...)
The QImage class provides a hardware-independent image representation that allows direct access to th...
Definition: qimage.h:87
static const char * data(const QByteArray &arr)
static const uchar forbidden_bits[]
static const unsigned char cur_up_arrow_bits[]
static const uchar vsplitm_bits[]
static const uchar size_all_data_bits[]
static const uchar wait_data_bits[]
void setPixel(int x, int y, uint index_or_rgb)
Sets the pixel index or color at (x, y) to index_or_rgb.
Definition: qimage.cpp:4311
QWSCursor * cursor
The QWSServer class encapsulates a server process in Qt for Embedded Linux.
static const uchar wait_mask_bits[]
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:53
void set(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY)
int y() const
Returns the y coordinate of this point.
Definition: qpoint.h:131
static const uchar cur_ibeam_bits[]
static const unsigned char mcur_up_arrow_bits[]
static const uchar mcur_bdiag_bits[]
int x() const
Returns the x coordinate of this point.
Definition: qpoint.h:128
Q_GUI_EXPORT QScreenCursor * qt_screencursor
Definition: qscreen_qws.cpp:67
QPoint hotSpot() const
Definition: qwscursor_qws.h:65
static const uchar cur_ver_bits[]
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
static const uchar mcur_fdiag_bits[]
static const uchar forbiddenm_bits[]
static bool systemCursorTableInit
virtual void set(const QImage &image, int hotx, int hoty)
Sets the cursor&#39;s image to be the given image.
void setCursor(QWSCursor *curs)
static const uchar cur_fdiag_bits[]