1 /*
2  *  kis_cursor.cc - part of KImageShop
3  *
4  *  Copyright (c) 1999 Matthias Elter <elter@kde.org>
5  *  Copyright (c) 2004 Adrian Page <adrian@pagenet.plus.com>
6  *  Copyright (c) 2013 David Revoy <info@davidrevoy.com>
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  */
22 
23 #include "kis_cursor.h"
24 
25 
26 #include <QtGlobal>
27 #include <QCursor>
28 
29 #include "kis_cursor_cache.h"
30 
KisCursor()31 KisCursor::KisCursor() {}
32 
33 /*
34  * Predefined Qt cursors
35  */
arrowCursor()36 QCursor KisCursor::arrowCursor()
37 {
38     return Qt::ArrowCursor;
39 }
40 
upArrowCursor()41 QCursor KisCursor::upArrowCursor()
42 {
43     return Qt::UpArrowCursor;
44 }
45 
crossCursor()46 QCursor KisCursor::crossCursor()
47 {
48     return load("cursor-cross.xpm");
49 }
50 
roundCursor()51 QCursor KisCursor::roundCursor()
52 {
53     return load("cursor-round.xpm");
54 }
55 
pixelBlackCursor()56 QCursor KisCursor::pixelBlackCursor()
57 {
58     return load("cursor-pixel-black.xpm");
59 }
60 
pixelWhiteCursor()61 QCursor KisCursor::pixelWhiteCursor()
62 {
63     return load("cursor-pixel-white.xpm");
64 }
65 
waitCursor()66 QCursor KisCursor::waitCursor()
67 {
68     return Qt::WaitCursor;
69 }
70 
ibeamCursor()71 QCursor KisCursor::ibeamCursor()
72 {
73     return Qt::IBeamCursor;
74 }
75 
sizeVerCursor()76 QCursor KisCursor::sizeVerCursor()
77 {
78     return Qt::SizeVerCursor;
79 }
80 
sizeHorCursor()81 QCursor KisCursor::sizeHorCursor()
82 {
83     return Qt::SizeHorCursor;
84 }
85 
sizeBDiagCursor()86 QCursor KisCursor::sizeBDiagCursor()
87 {
88     return Qt::SizeBDiagCursor;
89 }
90 
sizeFDiagCursor()91 QCursor KisCursor::sizeFDiagCursor()
92 {
93     return Qt::SizeFDiagCursor;
94 }
95 
sizeAllCursor()96 QCursor KisCursor::sizeAllCursor()
97 {
98     return Qt::SizeAllCursor;
99 }
100 
blankCursor()101 QCursor KisCursor::blankCursor()
102 {
103     return Qt::BlankCursor;
104 }
105 
splitVCursor()106 QCursor KisCursor::splitVCursor()
107 {
108     return Qt::SplitVCursor;
109 }
110 
splitHCursor()111 QCursor KisCursor::splitHCursor()
112 {
113     return Qt::SplitHCursor;
114 }
115 
pointingHandCursor()116 QCursor KisCursor::pointingHandCursor()
117 {
118     return Qt::PointingHandCursor;
119 }
120 
121 
pickerCursor()122 QCursor KisCursor::pickerCursor()
123 {
124     return pickerLayerForegroundCursor();
125 }
126 
pickerPlusCursor()127 QCursor KisCursor::pickerPlusCursor()
128 {
129     return KisCursorCache::instance()->pickerPlusCursor;
130 }
131 
pickerMinusCursor()132 QCursor KisCursor::pickerMinusCursor()
133 {
134     return KisCursorCache::instance()->pickerMinusCursor;
135 }
136 
pickLayerCursor()137 QCursor KisCursor::pickLayerCursor()
138 {
139     return load("precise-pick-layer-icon.xpm", 7, 23);
140 }
141 
penCursor()142 QCursor KisCursor::penCursor()
143 {
144     return KisCursorCache::instance()->penCursor;
145 }
146 
brushCursor()147 QCursor KisCursor::brushCursor()
148 {
149     return KisCursorCache::instance()->brushCursor;
150 }
151 
airbrushCursor()152 QCursor KisCursor::airbrushCursor()
153 {
154     return KisCursorCache::instance()->airbrushCursor;
155 }
156 
eraserCursor()157 QCursor KisCursor::eraserCursor()
158 {
159     return KisCursorCache::instance()->eraserCursor;
160 }
161 
fillerCursor()162 QCursor KisCursor::fillerCursor()
163 {
164     return KisCursorCache::instance()->fillerCursor;
165 }
166 
colorChangerCursor()167 QCursor KisCursor::colorChangerCursor()
168 {
169     return KisCursorCache::instance()->colorChangerCursor;
170 }
171 
zoomSmoothCursor()172 QCursor KisCursor::zoomSmoothCursor()
173 {
174     return load("zoom_smooth.xpm");
175 }
176 
zoomDiscreteCursor()177 QCursor KisCursor::zoomDiscreteCursor()
178 {
179     return load("zoom_discrete.xpm");
180 }
181 
rotateCanvasSmoothCursor()182 QCursor KisCursor::rotateCanvasSmoothCursor()
183 {
184     return load("rotate_smooth.xpm");
185 }
186 
rotateCanvasDiscreteCursor()187 QCursor KisCursor::rotateCanvasDiscreteCursor()
188 {
189     return load("rotate_discrete.xpm");
190 }
191 
pickerImageForegroundCursor()192 QCursor KisCursor::pickerImageForegroundCursor()
193 {
194     return load("color-picker_image_foreground.xpm", 8, 23);
195 }
196 
pickerImageBackgroundCursor()197 QCursor KisCursor::pickerImageBackgroundCursor()
198 {
199     return load("color-picker_image_background.xpm", 8, 23);
200 }
201 
pickerLayerForegroundCursor()202 QCursor KisCursor::pickerLayerForegroundCursor()
203 {
204     return load("color-picker_layer_foreground.xpm", 8, 23);
205 }
206 
pickerLayerBackgroundCursor()207 QCursor KisCursor::pickerLayerBackgroundCursor()
208 {
209     return load("color-picker_layer_background.xpm", 8, 23);
210 }
211 
changeExposureCursor()212 QCursor KisCursor::changeExposureCursor()
213 {
214     return load("exposure-cursor-gesture.xpm", 8, 23);
215 }
216 
changeGammaCursor()217 QCursor KisCursor::changeGammaCursor()
218 {
219     return load("gamma-cursor-gesture.xpm", 8, 23);
220 }
221 
triangleLeftHandedCursor()222 QCursor KisCursor::triangleLeftHandedCursor()
223 {
224     return load("cursor-triangle_lefthanded.xpm");
225 }
226 
triangleRightHandedCursor()227 QCursor KisCursor::triangleRightHandedCursor()
228 {
229     return load("cursor-triangle_righthanded.xpm");
230 }
231 
moveCursor()232 QCursor KisCursor::moveCursor()
233 {
234     return load("move-tool.png");
235 }
236 
moveSelectionCursor()237 QCursor KisCursor::moveSelectionCursor()
238 {
239     return load("move-selection.png");
240 }
241 
handCursor()242 QCursor KisCursor::handCursor()
243 {
244     return Qt::PointingHandCursor;
245 }
246 
selectCursor()247 QCursor KisCursor::selectCursor()
248 {
249     return KisCursorCache::instance()->selectCursor;
250 }
251 
openHandCursor()252 QCursor KisCursor::openHandCursor()
253 {
254     return Qt::OpenHandCursor;
255 }
256 
closedHandCursor()257 QCursor KisCursor::closedHandCursor()
258 {
259     return Qt::ClosedHandCursor;
260 }
261 
rotateCursor()262 QCursor KisCursor::rotateCursor()
263 {
264     return load("rotate_cursor.xpm");
265 }
266 
meshCursorFree()267 QCursor KisCursor::meshCursorFree()
268 {
269     return load("mesh_cursor_free.png", 5, 5);
270 }
271 
meshCursorLocked()272 QCursor KisCursor::meshCursorLocked()
273 {
274     return load("mesh_cursor_locked.png", 5, 5);
275 }
276 
load(const QString & cursorName,int hotspotX,int hotspotY)277 QCursor KisCursor::load(const QString & cursorName, int hotspotX, int hotspotY)
278 {
279     return KisCursorCache::instance()->load(cursorName, hotspotX, hotspotY);
280 }
281