Blender V4.5
wm_cursors.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2005-2007 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10
11#include <cstring>
12
13#include "GHOST_C-api.h"
14
15#include "BLI_utildefines.h"
16
17#include "DNA_listBase.h"
18#include "DNA_userdef_types.h"
19#include "DNA_workspace_types.h"
20
21#include "BKE_global.hh"
22#include "BKE_main.hh"
23
24#include "WM_api.hh"
25#include "WM_types.hh"
26#include "wm_cursors.hh"
27#include "wm_window.hh"
28
37#define CURSOR_SIZE_NUM (CURSOR_SIZE_32 + 1)
38
40 16,
42 32,
43 32,
44};
45
46/* Blender custom cursor. */
53
54static BCursor *BlenderCursor[WM_CURSOR_NUM] = {nullptr};
55
56/* Blender cursor to GHOST standard cursor conversion. */
58{
59 switch (curs) {
62 case WM_CURSOR_WAIT:
64 case WM_CURSOR_EDIT:
65 case WM_CURSOR_CROSS:
67 case WM_CURSOR_MOVE:
73 case WM_CURSOR_COPY:
75 case WM_CURSOR_HAND:
85 case WM_CURSOR_STOP:
87 case WM_CURSOR_KNIFE:
101 case WM_CURSOR_PAINT:
103 case WM_CURSOR_DOT:
105 case WM_CURSOR_CROSSC:
107 case WM_CURSOR_ERASER:
127 case WM_CURSOR_BLADE:
129 default:
131 }
132}
133
135{
136#if (OS_MAC)
137 /* MacOS always scales up this type of cursor for high-dpi displays.
138 * The mid-sized 24x24 versions are a nice compromise size. */
139 return CURSOR_SIZE_24;
140#endif
141 const uint32_t cursor_size = WM_cursor_preferred_logical_size();
142
143 const float cursor_scale = cursor_size ? (float(cursor_size) / WM_CURSOR_DEFAULT_LOGICAL_SIZE) :
144 1.0f;
145
146 /* Use `U.dpi` without the `U.ui_scale` because the UI scale does not impact the
147 * windowing-systems cursor size (only the size which is used for drawing the UI).
148 * The DPI however is used for scaling defined by the windowing-system.
149 * Ideally this would also be able to check the cursor size via GHOST. */
150 const int dpi_system = int((U.dpi / U.ui_scale) * cursor_scale);
151
152 if (dpi_system <= 72) {
153 return CURSOR_SIZE_16;
154 }
155 if (dpi_system <= int(72 * 1.2)) {
156 return CURSOR_SIZE_24;
157 }
158 return CURSOR_SIZE_32;
159}
160
161static void window_set_custom_cursor(wmWindow *win, BCursor *cursor)
162{
164
165 GHOST_SetCustomCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin),
166 (uint8_t *)cursor->bitmap[size],
167 (uint8_t *)cursor->mask[size],
170 cursor->hotspot[size][0],
171 cursor->hotspot[size][1],
172 cursor->can_invert_color);
173}
174
175void WM_cursor_set(wmWindow *win, int curs)
176{
177 if (win == nullptr || G.background) {
178 return; /* Can't set custom cursor before Window init. */
179 }
180
181 if (curs == WM_CURSOR_DEFAULT && win->modalcursor) {
182 curs = win->modalcursor;
183 }
184
185 if (curs == WM_CURSOR_NONE) {
186 GHOST_SetCursorVisibility(static_cast<GHOST_WindowHandle>(win->ghostwin), false);
187 return;
188 }
189
190 GHOST_SetCursorVisibility(static_cast<GHOST_WindowHandle>(win->ghostwin), true);
191
192 if (win->cursor == curs) {
193 return; /* Cursor is already set. */
194 }
195
196 win->cursor = curs;
197
198 if (curs < 0 || curs >= WM_CURSOR_NUM) {
199 BLI_assert_msg(0, "Invalid cursor number");
200 return;
201 }
202
204
205 if (ghost_cursor != GHOST_kStandardCursorCustom &&
206 GHOST_HasCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin), ghost_cursor))
207 {
208 /* Use native GHOST cursor when available. */
209 GHOST_SetCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin), ghost_cursor);
210 }
211 else {
212 BCursor *bcursor = BlenderCursor[curs];
213 if (bcursor) {
214 /* Use custom bitmap cursor. */
215 window_set_custom_cursor(win, bcursor);
216 }
217 else {
218 /* Fall back to default cursor if no bitmap found. */
219 GHOST_SetCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin),
221 }
222 }
223}
224
225bool WM_cursor_set_from_tool(wmWindow *win, const ScrArea *area, const ARegion *region)
226{
227 if (region && !ELEM(region->regiontype, RGN_TYPE_WINDOW, RGN_TYPE_PREVIEW)) {
228 return false;
229 }
230
231 bToolRef_Runtime *tref_rt = (area && area->runtime.tool) ? area->runtime.tool->runtime : nullptr;
232 if (tref_rt && tref_rt->cursor != WM_CURSOR_DEFAULT) {
233 if (win->modalcursor == 0) {
234 WM_cursor_set(win, tref_rt->cursor);
235 win->cursor = tref_rt->cursor;
236 return true;
237 }
238 }
239 return false;
240}
241
242void WM_cursor_modal_set(wmWindow *win, int val)
243{
244 if (win->lastcursor == 0) {
245 win->lastcursor = win->cursor;
246 }
247 win->modalcursor = val;
248 WM_cursor_set(win, val);
249}
250
252{
253 win->modalcursor = 0;
254 if (win->lastcursor) {
255 WM_cursor_set(win, win->lastcursor);
256 }
257 win->lastcursor = 0;
258}
259
260void WM_cursor_wait(bool val)
261{
262 if (!G.background) {
263 wmWindowManager *wm = static_cast<wmWindowManager *>(G_MAIN->wm.first);
264 wmWindow *win = static_cast<wmWindow *>(wm ? wm->windows.first : nullptr);
265
266 for (; win; win = win->next) {
267 if (val) {
269 }
270 else {
272 }
273 }
274 }
275}
276
279 const rcti *wrap_region,
280 const bool hide)
281{
282 int _wrap_region_buf[4];
283 int *wrap_region_screen = nullptr;
284
285 /* Only grab cursor when not running debug.
286 * It helps not to get a stuck WM when hitting a break-point. */
289
290 if (wrap_region) {
291 wrap_region_screen = _wrap_region_buf;
292 wrap_region_screen[0] = wrap_region->xmin;
293 wrap_region_screen[1] = wrap_region->ymax;
294 wrap_region_screen[2] = wrap_region->xmax;
295 wrap_region_screen[3] = wrap_region->ymin;
296 wm_cursor_position_to_ghost_screen_coords(win, &wrap_region_screen[0], &wrap_region_screen[1]);
297 wm_cursor_position_to_ghost_screen_coords(win, &wrap_region_screen[2], &wrap_region_screen[3]);
298 }
299
300 if (hide) {
301 mode = GHOST_kGrabHide;
302 }
303 else if (wrap != WM_CURSOR_WRAP_NONE) {
304 mode = GHOST_kGrabWrap;
305
306 if (wrap == WM_CURSOR_WRAP_X) {
307 mode_axis = GHOST_kAxisX;
308 }
309 else if (wrap == WM_CURSOR_WRAP_Y) {
310 mode_axis = GHOST_kAxisY;
311 }
312 }
313
314 if ((G.debug & G_DEBUG) == 0) {
315 if (win->ghostwin) {
316 if (win->eventstate->tablet.is_motion_absolute == false) {
317 GHOST_SetCursorGrab(static_cast<GHOST_WindowHandle>(win->ghostwin),
318 mode,
319 mode_axis,
320 wrap_region_screen,
321 nullptr);
322 }
323
324 win->grabcursor = mode;
325 }
326 }
327}
328
329void WM_cursor_grab_disable(wmWindow *win, const int mouse_ungrab_xy[2])
330{
331 if ((G.debug & G_DEBUG) == 0) {
332 if (win && win->ghostwin) {
333 if (mouse_ungrab_xy) {
334 int mouse_xy[2] = {mouse_ungrab_xy[0], mouse_ungrab_xy[1]};
335 wm_cursor_position_to_ghost_screen_coords(win, &mouse_xy[0], &mouse_xy[1]);
336 GHOST_SetCursorGrab(static_cast<GHOST_WindowHandle>(win->ghostwin),
339 nullptr,
340 mouse_xy);
341 }
342 else {
343 GHOST_SetCursorGrab(static_cast<GHOST_WindowHandle>(win->ghostwin),
346 nullptr,
347 nullptr);
348 }
349
351 }
352 }
353}
354
355static void wm_cursor_warp_relative(wmWindow *win, int x, int y)
356{
357 /* NOTE: don't use wmEvent coords because of continuous grab #36409. */
358 int cx, cy;
359 if (wm_cursor_position_get(win, &cx, &cy)) {
360 WM_cursor_warp(win, cx + x, cy + y);
361 }
362}
363
364bool wm_cursor_arrow_move(wmWindow *win, const wmEvent *event)
365{
366 /* TODO: give it a modal keymap? Hard coded for now. */
367
368 if (win && event->val == KM_PRESS) {
369 /* Must move at least this much to avoid rounding in WM_cursor_warp. */
370 float fac = GHOST_GetNativePixelSize(static_cast<GHOST_WindowHandle>(win->ghostwin));
371
372 if (event->type == EVT_UPARROWKEY) {
373 wm_cursor_warp_relative(win, 0, fac);
374 return true;
375 }
376 if (event->type == EVT_DOWNARROWKEY) {
377 wm_cursor_warp_relative(win, 0, -fac);
378 return true;
379 }
380 if (event->type == EVT_LEFTARROWKEY) {
381 wm_cursor_warp_relative(win, -fac, 0);
382 return true;
383 }
384 if (event->type == EVT_RIGHTARROWKEY) {
385 wm_cursor_warp_relative(win, fac, 0);
386 return true;
387 }
388 }
389 return false;
390}
391
392static bool wm_cursor_time_large(wmWindow *win, uint32_t nr)
393{
394 /* 10 16x16 digits. */
395 const uchar number_bitmaps[][32] = {
396 {0x00, 0x00, 0xf0, 0x0f, 0xf8, 0x1f, 0x1c, 0x38, 0x0c, 0x30, 0x0c,
397 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30,
398 0x0c, 0x30, 0x1c, 0x38, 0xf8, 0x1f, 0xf0, 0x0f, 0x00, 0x00},
399 {0x00, 0x00, 0x80, 0x01, 0xc0, 0x01, 0xf0, 0x01, 0xbc, 0x01, 0x8c,
400 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
401 0x80, 0x01, 0x80, 0x01, 0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00},
402 {0x00, 0x00, 0xf0, 0x1f, 0xf8, 0x3f, 0x1c, 0x30, 0x0c, 0x30, 0x00,
403 0x30, 0x00, 0x30, 0xe0, 0x3f, 0xf0, 0x1f, 0x38, 0x00, 0x1c, 0x00,
404 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x00},
405 {0x00, 0x00, 0xf0, 0x0f, 0xf8, 0x1f, 0x1c, 0x38, 0x00, 0x30, 0x00,
406 0x30, 0x00, 0x38, 0xf0, 0x1f, 0xf0, 0x1f, 0x00, 0x38, 0x00, 0x30,
407 0x00, 0x30, 0x1c, 0x38, 0xf8, 0x1f, 0xf0, 0x0f, 0x00, 0x00},
408 {0x00, 0x00, 0x00, 0x0f, 0x80, 0x0f, 0xc0, 0x0d, 0xe0, 0x0c, 0x70,
409 0x0c, 0x38, 0x0c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
410 0xfc, 0x3f, 0xfc, 0x3f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00},
411 {0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x0c, 0x00, 0x0c, 0x00, 0x0c,
412 0x00, 0xfc, 0x0f, 0xfc, 0x1f, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30,
413 0x00, 0x30, 0x0c, 0x38, 0xfc, 0x1f, 0xf8, 0x0f, 0x00, 0x00},
414 {0x00, 0x00, 0xc0, 0x3f, 0xe0, 0x3f, 0x70, 0x00, 0x38, 0x00, 0x1c,
415 0x00, 0xfc, 0x0f, 0xfc, 0x1f, 0x0c, 0x38, 0x0c, 0x30, 0x0c, 0x30,
416 0x0c, 0x30, 0x1c, 0x38, 0xf8, 0x1f, 0xf0, 0x0f, 0x00, 0x00},
417 {0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x0c, 0x30, 0x0c, 0x38, 0x00,
418 0x18, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x07,
419 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00},
420 {0x00, 0x00, 0xf0, 0x0f, 0xf8, 0x1f, 0x1c, 0x38, 0x0c, 0x30, 0x0c,
421 0x30, 0x1c, 0x38, 0xf8, 0x1f, 0xf8, 0x1f, 0x1c, 0x38, 0x0c, 0x30,
422 0x0c, 0x30, 0x1c, 0x38, 0xf8, 0x1f, 0xf0, 0x0f, 0x00, 0x00},
423 {0x00, 0x00, 0xf0, 0x0f, 0xf8, 0x1f, 0x1c, 0x38, 0x0c, 0x30, 0x0c,
424 0x30, 0x0c, 0x30, 0x1c, 0x30, 0xf8, 0x3f, 0xf0, 0x3f, 0x00, 0x38,
425 0x00, 0x1c, 0x00, 0x0e, 0xfc, 0x07, 0xfc, 0x03, 0x00, 0x00},
426 };
427 uchar mask[32][4] = {{0}};
428 uchar bitmap[32][4] = {{0}};
429
430 /* Print number bottom right justified. */
431 for (int idx = 3; nr && idx >= 0; idx--) {
432 const uchar *digit = number_bitmaps[nr % 10];
433 int x = idx % 2;
434 int y = idx / 2;
435
436 for (int i = 0; i < 16; i++) {
437 bitmap[i + y * 16][x * 2] = digit[i * 2];
438 bitmap[i + y * 16][(x * 2) + 1] = digit[(i * 2) + 1];
439 }
440 for (int i = 0; i < 16; i++) {
441 mask[i + y * 16][x * 2] = 0xFF;
442 mask[i + y * 16][(x * 2) + 1] = 0xFF;
443 }
444
445 nr /= 10;
446 }
447
448 return GHOST_SetCustomCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin),
449 (uint8_t *)bitmap,
450 (uint8_t *)mask,
451 32,
452 32,
453 15,
454 15,
455 false) == GHOST_kSuccess;
456}
457
458static void wm_cursor_time_small(wmWindow *win, uint32_t nr)
459{
460 /* 10 8x8 digits. */
461 const char number_bitmaps[10][8] = {
462 {0, 56, 68, 68, 68, 68, 68, 56},
463 {0, 24, 16, 16, 16, 16, 16, 56},
464 {0, 60, 66, 32, 16, 8, 4, 126},
465 {0, 124, 32, 16, 56, 64, 66, 60},
466 {0, 32, 48, 40, 36, 126, 32, 32},
467 {0, 124, 4, 60, 64, 64, 68, 56},
468 {0, 56, 4, 4, 60, 68, 68, 56},
469 {0, 124, 64, 32, 16, 8, 8, 8},
470 {0, 60, 66, 66, 60, 66, 66, 60},
471 {0, 56, 68, 68, 120, 64, 68, 56},
472 };
473 uchar mask[16][2] = {{0}};
474 uchar bitmap[16][2] = {{0}};
475
476 /* Print number bottom right justified. */
477 for (int idx = 3; nr && idx >= 0; idx--) {
478 const char *digit = number_bitmaps[nr % 10];
479 int x = idx % 2;
480 int y = idx / 2;
481
482 for (int i = 0; i < 8; i++) {
483 bitmap[i + y * 8][x] = digit[i];
484 }
485 for (int i = 0; i < 8; i++) {
486 mask[i + y * 8][x] = 0xFF;
487 }
488 nr /= 10;
489 }
490
491 GHOST_SetCustomCursorShape(static_cast<GHOST_WindowHandle>(win->ghostwin),
492 (uint8_t *)bitmap,
493 (uint8_t *)mask,
494 16,
495 16,
496 7,
497 7,
498 false);
499}
500
501void WM_cursor_time(wmWindow *win, int nr)
502{
503 if (win->lastcursor == 0) {
504 win->lastcursor = win->cursor;
505 }
506
507 /* Negative numbers not supported by #wm_cursor_time_large & #wm_cursor_time_small.
508 * Make absolute to show *something* although in typical usage this shouldn't be negative.
509 * NOTE: Use of unsigned here to allow negation when `nr` is `std::numeric_limits<int>::min()`
510 * which *can't* be negated. */
511 const uint32_t nr_abs = nr >= 0 ? uint32_t(nr) : -uint32_t(nr);
512
513 /* Use `U.ui_scale` instead of `UI_SCALE_FAC` here to ignore HiDPI/Retina scaling. */
514 if (U.ui_scale < 1.45f || !wm_cursor_time_large(win, nr_abs)) {
515 wm_cursor_time_small(win, nr_abs);
516 }
517
518 /* Unset current cursor value so it's properly reset to wmWindow.lastcursor. */
519 win->cursor = 0;
520}
521
545
552
553#define BEGIN_CURSOR_BLOCK \
554 { \
555 ((void)0)
556#define END_CURSOR_BLOCK \
557 } \
558 ((void)0)
559
561{
562 /********************** NW_ARROW Cursor **************************/
564
565 static char nw_bitmap16[] = {
566 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x3e,
567 0x00, 0x7e, 0x00, 0xfe, 0x00, 0xfe, 0x01, 0xfe, 0x03, 0xfe, 0x07,
568 0x7e, 0x00, 0x6e, 0x00, 0xc6, 0x00, 0xc2, 0x00, 0x00, 0x00,
569 };
570
571 static char nw_mask16[] = {
572 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x3f, 0x00, 0x7f,
573 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, 0xff, 0x07, 0xff, 0x0f,
574 0xff, 0x0f, 0xff, 0x00, 0xef, 0x01, 0xe7, 0x01, 0xc3, 0x00,
575 };
576
577 static char nw_bitmap24[] = {
578 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
579 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00,
580 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe,
581 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00,
582 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x00,
583 0x00, 0x86, 0x03, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
584 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
585 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
587 };
588
589 static char nw_mask24[] = {
590 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
591 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00,
592 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff,
593 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00,
594 0xff, 0x7f, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xdf, 0x03, 0x00,
595 0x00, 0xcf, 0x07, 0x00, 0x00, 0x87, 0x07, 0x00, 0x00, 0x83, 0x07, 0x00, 0x00, 0x01, 0x00,
596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
598 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599 };
600
601 static char nw_bitmap32[] = {
602 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
603 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x00,
604 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe,
605 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
606 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x07,
607 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f,
608 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3e, 0x00, 0x00, 0x7e, 0x3e, 0x00, 0x00, 0x3e,
609 0x7c, 0x00, 0x00, 0x1e, 0x7c, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x06, 0x78, 0x00, 0x00,
610 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
611 };
612
613 static char nw_mask32[] = {
614 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
615 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01,
616 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff,
617 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
618 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x0f,
619 0x00, 0xff, 0xff, 0x1f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xff, 0x3f,
620 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x7f,
621 0xfe, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00,
622 0x07, 0x78, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00,
623 };
624
625 static BCursor NWArrowCursor = {
626 {nw_bitmap16, nw_bitmap24, nw_bitmap32},
627 {nw_mask16, nw_mask24, nw_mask32},
628 {{0, 0}, {0, 0}, {0, 0}},
629 true,
630 };
631
632 BlenderCursor[WM_CURSOR_DEFAULT] = &NWArrowCursor;
633 BlenderCursor[WM_CURSOR_MOVE] = &NWArrowCursor;
634 BlenderCursor[WM_CURSOR_COPY] = &NWArrowCursor;
635 BlenderCursor[WM_CURSOR_NW_ARROW] = &NWArrowCursor;
637
638 /************************ NS_ARROW Cursor *************************/
640
641 static char ns_bitmap16[] = {
642 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0x80,
643 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
644 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00,
645 };
646
647 static char ns_mask16[] = {
648 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc,
649 0x1f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xfc, 0x1f,
650 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00,
651 };
652
653 static char ns_bitmap24[] = {
654 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01,
655 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40,
656 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
657 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
658 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xfc, 0x07,
659 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x40,
660 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
663 };
664
665 static char ns_mask24[] = {
666 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf8, 0x03,
667 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0,
668 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
669 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
670 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0x0f,
671 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0,
672 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
673 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
674 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
675 };
676
677 static char ns_bitmap32[] = {
678 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03,
679 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff,
680 0x3f, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
681 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
682 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00,
683 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0,
684 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
685 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00,
686 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
687 };
688
689 static char ns_mask32[] = {
690 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07,
691 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff,
692 0x7f, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
693 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00,
694 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01,
695 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0,
696 0x01, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00,
697 0xfe, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00,
698 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00,
699 };
700
701 static BCursor NSArrowCursor = {
702 {ns_bitmap16, ns_bitmap24, ns_bitmap32},
703 {ns_mask16, ns_mask24, ns_mask32},
704 {{7, 7}, {15, 11}, {15, 15}},
705 true,
706 };
707
708 BlenderCursor[WM_CURSOR_Y_MOVE] = &NSArrowCursor;
709 BlenderCursor[WM_CURSOR_NS_ARROW] = &NSArrowCursor;
711
712 /********************** EW_ARROW Cursor *************************/
714
715 static char ew_bitmap16[] = {
716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18,
717 0x18, 0x1c, 0x38, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
718 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
719 };
720
721 static char ew_mask16[] = {
722 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x30, 0x0c, 0x38, 0x1c, 0x3c,
723 0x3c, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0x3c, 0x3c, 0x38, 0x1c,
724 0x30, 0x0c, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
725 };
726
727 static char ew_bitmap24[] = {
728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
729 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
730 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x30,
731 0x00, 0x0c, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0x7f, 0x00,
732 0x3c, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x20, 0x00, 0x04,
733 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
734 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
737 };
738
739 static char ew_mask24[] = {
740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
742 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x60, 0x00, 0x06, 0x00, 0x70, 0x00, 0x0e, 0x00, 0x78,
743 0x00, 0x1e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00,
744 0xfe, 0xff, 0x7f, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x78, 0x00, 0x1e, 0x00, 0x70, 0x00, 0x0e,
745 0x00, 0x60, 0x00, 0x06, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
746 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
747 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
748 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
749 };
750
751 static char ew_bitmap32[] = {
752 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
753 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
754 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0xf0,
755 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0xff, 0xff, 0x7f,
756 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00,
757 0x0f, 0xe0, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00,
758 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
759 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
760 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
761 };
762
763 static char ew_mask32[] = {
764 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
765 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x80, 0x01,
766 0x80, 0x01, 0xc0, 0x01, 0x80, 0x03, 0xe0, 0x01, 0x80, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf8,
767 0x01, 0x80, 0x1f, 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
768 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0x01, 0x80, 0x3f, 0xf8, 0x01, 0x80,
769 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x01, 0x80, 0x07, 0xc0, 0x01, 0x80, 0x03, 0x80, 0x01,
770 0x80, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
771 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
772 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
773 };
774
775 static BCursor EWArrowCursor = {
776 {ew_bitmap16, ew_bitmap24, ew_bitmap32},
777 {ew_mask16, ew_mask24, ew_mask32},
778 {{7, 7}, {11, 14}, {15, 14}},
779 true,
780 };
781
782 BlenderCursor[WM_CURSOR_X_MOVE] = &EWArrowCursor;
783 BlenderCursor[WM_CURSOR_EW_ARROW] = &EWArrowCursor;
785
786 /********************** Wait Cursor *****************************/
788
789 static char wait_bitmap16[] = {
790 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf0, 0x07, 0xb0, 0x06, 0x60,
791 0x03, 0xc0, 0x01, 0x80, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x60, 0x03,
792 0x30, 0x06, 0x10, 0x04, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00,
793 };
794
795 static char wait_mask16[] = {
796 0xfc, 0x1f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf8, 0x0f, 0xf8, 0x0f, 0xf0,
797 0x07, 0xe0, 0x03, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07,
798 0xf8, 0x0f, 0xf8, 0x0f, 0xf8, 0x0f, 0xfc, 0x1f, 0xfc, 0x1f,
799 };
800
801 static char wait_bitmap24[] = {
802 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00,
803 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x30, 0x18,
804 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00,
805 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
806 0xe0, 0x0e, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, 0x3c, 0x78, 0x00,
807 0x00, 0x1c, 0x70, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00,
808 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
809 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
810 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
811 };
812
813 static char wait_mask24[] = {
814 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00,
815 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f,
816 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80,
817 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00,
818 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00,
819 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff,
820 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
821 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
822 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
823 };
824
825 static char wait_bitmap32[] = {
826 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f,
827 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff,
828 0x7f, 0x00, 0x80, 0x07, 0x78, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00,
829 0x3c, 0x0f, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00,
830 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x30, 0x03,
831 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x1f,
832 0x3e, 0x00, 0x80, 0x0f, 0x7c, 0x00, 0x80, 0x07, 0x78, 0x00, 0x80, 0x03, 0x70, 0x00, 0x80,
833 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00,
834 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
835 };
836
837 static char wait_mask32[] = {
838 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff,
839 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff,
840 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00,
841 0xfe, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00,
842 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07,
843 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff,
844 0x7f, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0,
845 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x03,
846 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03,
847 };
848
849 static BCursor WaitCursor = {
850 {wait_bitmap16, wait_bitmap24, wait_bitmap32},
851 {wait_mask16, wait_mask24, wait_mask32},
852 {{7, 7}, {8, 11}, {15, 15}},
853 false,
854 };
855
856 BlenderCursor[WM_CURSOR_WAIT] = &WaitCursor;
858
859 /********************** Mute Cursor ***********************/
861
862 static char mute_bitmap16[] = {
863 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x03, 0x14, 0x03, 0x22,
864 0x03, 0x00, 0x03, 0x00, 0x03, 0xf8, 0x7c, 0xf8, 0x7c, 0x00, 0x03,
865 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00,
866 };
867
868 static char mute_mask16[] = {
869 0x63, 0x00, 0x77, 0x00, 0x3e, 0x03, 0x1c, 0x03, 0x3e, 0x03, 0x77,
870 0x03, 0x63, 0x03, 0x80, 0x07, 0xfc, 0xfc, 0xfc, 0xfc, 0x80, 0x07,
871 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
872 };
873
874 static char mute_bitmap24[] = {
875 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x88, 0x00, 0x00,
876 0x00, 0x50, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x50, 0x60, 0x00, 0x00, 0x88, 0x60,
877 0x00, 0x00, 0x04, 0x61, 0x00, 0x00, 0x02, 0x62, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
878 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x9f, 0x7f, 0x00, 0xe0, 0x9f, 0x7f, 0x00,
879 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
880 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
881 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
882 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
883 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
884 };
885
886 static char mute_mask24[] = {
887 0x03, 0x06, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x8e, 0x03, 0x00, 0x00, 0xdc, 0x01, 0x00,
888 0x00, 0xf8, 0xf0, 0x00, 0x00, 0x70, 0xf0, 0x00, 0x00, 0xf8, 0xf0, 0x00, 0x00, 0xdc, 0xf1,
889 0x00, 0x00, 0x8e, 0xf3, 0x00, 0x00, 0x07, 0xf7, 0x00, 0x00, 0x03, 0xf6, 0x00, 0x00, 0x00,
890 0xf0, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0x9f, 0xff, 0x00, 0xf0, 0x9f, 0xff, 0x00,
891 0xf0, 0xff, 0xff, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00,
892 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0,
893 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
894 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
895 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
896 };
897
898 static char mute_bitmap32[] = {
899 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0c, 0x06, 0x00,
900 0x00, 0x18, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x0f, 0x00, 0xe0, 0x00, 0x0f, 0x00, 0xe0, 0x00,
901 0x0f, 0x00, 0xb0, 0x01, 0x0f, 0x00, 0x18, 0x03, 0x0f, 0x00, 0x0c, 0x06, 0x0f, 0x00, 0x06,
902 0x0c, 0x0f, 0x00, 0x02, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00,
903 0x00, 0x00, 0x0f, 0x00, 0xe0, 0xff, 0xf0, 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0xe0, 0xff, 0xf0,
904 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
905 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
906 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00,
907 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
908 };
909
910 static char mute_mask32[] = {
911 0x03, 0x18, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x1e, 0x0f, 0x00,
912 0x00, 0xbc, 0x87, 0x1f, 0x00, 0xf8, 0x83, 0x1f, 0x00, 0xf0, 0x81, 0x1f, 0x00, 0xf0, 0x81,
913 0x1f, 0x00, 0xf8, 0x83, 0x1f, 0x00, 0xbc, 0x87, 0x1f, 0x00, 0x1e, 0x8f, 0x1f, 0x00, 0x0f,
914 0x9e, 0x1f, 0x00, 0x07, 0x9c, 0x1f, 0x00, 0x03, 0x98, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00,
915 0xf0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0,
916 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80,
917 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00,
918 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00,
919 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00,
920 };
921
922 static BCursor MuteCursor = {
923 {mute_bitmap16, mute_bitmap24, mute_bitmap32},
924 {mute_mask16, mute_mask24, mute_mask32},
925 {{8, 8}, {13, 13}, {17, 17}},
926 true,
927 };
928
929 BlenderCursor[WM_CURSOR_MUTE] = &MuteCursor;
931
932 /****************** Normal Cross Cursor ************************/
934
935 static char cross_bitmap16[] = {
936 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
937 0x01, 0x00, 0x00, 0x3e, 0x7c, 0x3e, 0x7c, 0x00, 0x00, 0x80, 0x01,
938 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
939 };
940
941 static char cross_mask16[] = {
942 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0,
943 0x03, 0xff, 0xff, 0x7f, 0xfe, 0x7f, 0xfe, 0xff, 0xff, 0xc0, 0x03,
944 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03,
945 };
946
947 static char cross_bitmap24[] = {
948 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00,
949 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18,
950 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
951 0xc3, 0x7f, 0x00, 0xfe, 0xc3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
952 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00,
953 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18,
954 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
955 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
956 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
957 };
958
959 static char cross_mask24[] = {
960 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00,
961 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c,
962 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff,
963 0xe7, 0xff, 0x00, 0xff, 0xe7, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x00,
964 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00,
965 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c,
966 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
967 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
968 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
969 };
970
971 static char cross_bitmap32[] = {
972 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03,
973 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0,
974 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
975 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xf8, 0x7f,
976 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0x00, 0x00, 0x00,
977 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0,
978 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
979 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
980 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
981 };
982
983 static char cross_mask32[] = {
984 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07,
985 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
986 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00,
987 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff,
988 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff,
989 0xff, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
990 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00,
991 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
992 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
993 };
994
995 static BCursor CrossCursor = {
996 {cross_bitmap16, cross_bitmap24, cross_bitmap32},
997 {cross_mask16, cross_mask24, cross_mask32},
998 {{7, 7}, {11, 11}, {15, 15}},
999 false,
1000 };
1001
1002 BlenderCursor[WM_CURSOR_EDIT] = &CrossCursor;
1003 BlenderCursor[WM_CURSOR_CROSS] = &CrossCursor;
1005
1006 /****************** Painting Cursor ************************/
1008
1009 static char paint_bitmap16[] = {
1010 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1011 0x00, 0x00, 0x00, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1012 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00,
1013 };
1014
1015 static char paint_mask16[] = {
1016 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, 0x00,
1017 0x00, 0x8f, 0x78, 0xcf, 0x79, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00,
1018 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00,
1019 };
1020
1021 static char paint_bitmap24[] = {
1022 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1023 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
1024 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e,
1025 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1026 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1027 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
1028 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1029 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1030 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1031 };
1032
1033 static char paint_mask24[] = {
1034 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00,
1035 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
1036 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x08, 0x3f, 0x00, 0xff,
1037 0x9c, 0x7f, 0x00, 0x7e, 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1038 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00,
1039 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
1040 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1041 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1042 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1043 };
1044
1045 static char paint_bitmap32[] = {
1046 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01,
1047 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
1048 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1049 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1050 0xfe, 0x83, 0xc1, 0x7f, 0xfe, 0x83, 0xc1, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1051 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1052 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1053 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00,
1054 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1055 };
1056
1057 static char paint_mask32[] = {
1058 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03,
1059 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0,
1060 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1061 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x83, 0xc1, 0x7f,
1062 0xff, 0xc7, 0xe3, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xfe, 0x83, 0xc1, 0x7f, 0x00, 0x00, 0x00,
1063 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0,
1064 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
1065 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
1066 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00,
1067 };
1068
1069 static BCursor PaintCursor = {
1070 {paint_bitmap16, paint_bitmap24, paint_bitmap32},
1071 {paint_mask16, paint_mask24, paint_mask32},
1072 {{7, 7}, {11, 11}, {15, 15}},
1073 false,
1074 };
1075
1076 BlenderCursor[WM_CURSOR_PAINT] = &PaintCursor;
1078
1079 /********************** Dot Cursor ***********************/
1081
1082 static char dot_bitmap16[] = {
1083 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1084 0x00, 0x00, 0x00, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1085 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00,
1086 };
1087
1088 static char dot_mask16[] = {
1089 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1090 0x00, 0x80, 0x00, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
1091 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1092 };
1093
1094 static char dot_bitmap24[] = {
1095 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1096 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1097 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1098 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
1099 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1104 };
1105
1106 static char dot_mask24[] = {
1107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
1111 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1116 };
1117
1118 static char dot_bitmap32[] = {
1119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
1123 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1128 };
1129
1130 static char dot_mask32[] = {
1131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
1135 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1140 };
1141
1142 static BCursor DotCursor = {
1143 {dot_bitmap16, dot_bitmap24, dot_bitmap32},
1144 {dot_mask16, dot_mask24, dot_mask32},
1145 {{7, 7}, {14, 14}, {14, 14}},
1146 false,
1147 };
1148
1149 BlenderCursor[WM_CURSOR_DOT] = &DotCursor;
1151
1152 /************* Minimal Crosshair Cursor ***************/
1154
1155 static char crossc_bitmap16[] = {
1156 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
1157 0x00, 0x80, 0x00, 0x55, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,
1158 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
1159 };
1160
1161 static char crossc_mask16[] = {
1162 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
1163 0x00, 0x80, 0x00, 0x7f, 0x7f, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
1164 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00,
1165 };
1166
1167 static char crossc_bitmap24[] = {
1168 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
1169 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
1170 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x55,
1171 0x55, 0x55, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
1172 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
1174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1177 };
1178
1179 static char crossc_mask24[] = {
1180 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1181 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
1182 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xff,
1183 0xf7, 0x7f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
1184 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1185 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
1186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1189 };
1190
1191 static char crossc_bitmap32[] = {
1192 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
1193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
1194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00,
1196 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01,
1197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
1198 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1199 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
1200 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1201 };
1202
1203 static char crossc_mask32[] = {
1204 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01,
1205 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
1206 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1207 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00,
1208 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01,
1209 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
1210 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
1211 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00,
1212 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00,
1213 };
1214
1215 static BCursor CrossCursorC = {
1216 {crossc_bitmap16, crossc_bitmap24, crossc_bitmap32},
1217 {crossc_mask16, crossc_mask24, crossc_mask32},
1218 {{7, 7}, {11, 11}, {15, 15}},
1219 false,
1220 };
1221
1222 BlenderCursor[WM_CURSOR_CROSSC] = &CrossCursorC;
1224
1225 /********************** Knife Cursor ***********************/
1227
1228 static char knife_bitmap16[] = {
1229 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00,
1230 0x0c, 0x00, 0x06, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
1231 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x0e, 0x00, 0x00, 0x00,
1232 };
1233
1234 static char knife_mask16[] = {
1235 0x00, 0x40, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00,
1236 0x1e, 0x00, 0x0f, 0x80, 0x1f, 0xc0, 0x0f, 0xe0, 0x07, 0xf0, 0x03,
1237 0xf8, 0x01, 0xfc, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0x0f, 0x00,
1238 };
1239
1240 static char knife_bitmap24[] = {
1241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30,
1242 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
1243 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
1244 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
1245 0x00, 0x3f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00,
1246 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1e, 0x00,
1247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1250 };
1251
1252 static char knife_mask24[] = {
1253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78,
1254 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80,
1255 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00,
1256 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00,
1257 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00,
1258 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7f, 0x00,
1259 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1262 };
1263
1264 static char knife_bitmap32[] = {
1265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1266 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
1267 0x00, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00,
1268 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00,
1269 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x1f,
1270 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe,
1271 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0,
1272 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00,
1273 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1274 };
1275
1276 static char knife_mask32[] = {
1277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
1278 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00,
1279 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00,
1280 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0xff, 0x01,
1281 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8, 0x7f,
1282 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x80, 0xff,
1283 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8,
1284 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00,
1285 0xff, 0x03, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
1286 };
1287
1288 static BCursor KnifeCursor = {
1289 {knife_bitmap16, knife_bitmap24, knife_bitmap32},
1290 {knife_mask16, knife_mask24, knife_mask32},
1291 {{0, 15}, {0, 23}, {0, 31}},
1292 false,
1293 };
1294
1295 BlenderCursor[WM_CURSOR_KNIFE] = &KnifeCursor;
1297
1298 /********************** Loop Select Cursor ***********************/
1300
1301 static char vloop_bitmap16[] = {
1302 0x00, 0x00, 0x7e, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0xfe, 0xf0, 0x96,
1303 0x9f, 0x92, 0x90, 0xf0, 0xf0, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40,
1304 0x20, 0x40, 0xf0, 0xf0, 0x90, 0x90, 0x90, 0x9f, 0xf0, 0xf0,
1305 };
1306
1307 static char vloop_mask16[] = {
1308 0xff, 0x01, 0xff, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0xff, 0xf0, 0xff,
1309 0xff, 0xf7, 0xff, 0xf3, 0xf0, 0x61, 0x60, 0x60, 0x60, 0x60, 0x60,
1310 0x60, 0x60, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xf0,
1311 };
1312
1313 static char vloop_bitmap24[] = {
1314 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00,
1315 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x9e, 0x0f, 0xf8, 0x00, 0x8e, 0x08,
1316 0x88, 0x00, 0x86, 0xf8, 0x8f, 0x00, 0x82, 0x08, 0x88, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00,
1317 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00,
1318 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20,
1319 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, 0xf8, 0x8f, 0x00, 0x80, 0x08,
1320 0x88, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1321 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1322 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1323 };
1324
1325 static char vloop_mask24[] = {
1326 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00,
1327 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xbf, 0x0f, 0xf8, 0x00, 0x9f, 0xff,
1328 0xff, 0x00, 0x8f, 0xff, 0xff, 0x00, 0x87, 0xff, 0xff, 0x00, 0x83, 0x0f, 0xf8, 0x00, 0x01,
1329 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00,
1330 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70,
1331 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff,
1332 0xff, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1333 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1334 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1335 };
1336
1337 static char vloop_bitmap32[] = {
1338 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00,
1339 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01,
1340 0x00, 0x00, 0xfe, 0x7e, 0x00, 0x7e, 0x7e, 0xff, 0x00, 0xff, 0x3e, 0xc3, 0x00, 0xc3, 0x1e,
1341 0xc3, 0xff, 0xc3, 0x0e, 0xc3, 0xff, 0xc3, 0x06, 0xc3, 0x00, 0xc3, 0x02, 0xff, 0x00, 0xff,
1342 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
1343 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18,
1344 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff, 0x00,
1345 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0xff, 0xc3, 0x00, 0xc3, 0xff, 0xc3, 0x00, 0xc3, 0x00, 0xc3,
1346 0x00, 0xff, 0x00, 0xff, 0x00, 0x7e, 0x00, 0x7e,
1347 };
1348
1349 static char vloop_mask32[] = {
1350 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00,
1351 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03,
1352 0x00, 0x00, 0xff, 0x7f, 0x00, 0x7e, 0xff, 0xff, 0x00, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x3f,
1353 0xe7, 0xff, 0xe7, 0x1f, 0xe7, 0xff, 0xe7, 0x0f, 0xff, 0xff, 0xff, 0x07, 0xff, 0x00, 0xff,
1354 0x03, 0x7e, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00,
1355 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c,
1356 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff, 0x00,
1357 0xff, 0xff, 0xff, 0x00, 0xe7, 0xff, 0xe7, 0x00, 0xe7, 0xff, 0xe7, 0x00, 0xff, 0xff, 0xff,
1358 0x00, 0xff, 0x00, 0xff, 0x00, 0x7e, 0x00, 0x7e,
1359 };
1360
1361 static BCursor VLoopCursor = {
1362 {vloop_bitmap16, vloop_bitmap24, vloop_bitmap32},
1363 {vloop_mask16, vloop_mask24, vloop_mask32},
1364 {{0, 0}, {0, 0}, {0, 0}},
1365 false,
1366 };
1367
1368 BlenderCursor[WM_CURSOR_VERTEX_LOOP] = &VLoopCursor;
1370
1371 /********************** TextEdit Cursor ***********************/
1373
1374 static char textedit_bitmap16[] = {
1375 0x00, 0x00, 0x70, 0x07, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
1376 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
1377 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x70, 0x07, 0x00, 0x00,
1378 };
1379
1380 static char textedit_mask16[] = {
1381 0x70, 0x07, 0xf8, 0x0f, 0xf0, 0x07, 0xc0, 0x01, 0xc0, 0x01, 0xc0,
1382 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
1383 0xc0, 0x01, 0xc0, 0x01, 0xf0, 0x07, 0xf8, 0x0f, 0x70, 0x07,
1384 };
1385
1386 static char textedit_bitmap24[] = {
1387 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1388 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
1389 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
1390 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
1391 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
1392 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1396 };
1397
1398 static char textedit_mask24[] = {
1399 0x80, 0xf7, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00,
1400 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
1401 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
1402 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
1403 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0xff, 0x00,
1404 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1405 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1407 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1408 };
1409
1410 static char textedit_bitmap32[] = {
1411 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0x01,
1412 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0,
1413 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
1414 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
1415 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00,
1416 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0,
1417 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
1418 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xff, 0x3f, 0x00,
1419 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
1420 };
1421
1422 static char textedit_mask32[] = {
1423 0x00, 0x3f, 0x3f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f,
1424 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0,
1425 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
1426 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00,
1427 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01,
1428 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0,
1429 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
1430 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff, 0x7f, 0x00,
1431 0x80, 0xff, 0x7f, 0x00, 0x00, 0x3f, 0x3f, 0x00,
1432 };
1433
1434 static BCursor TextEditCursor = {
1435 {textedit_bitmap16, textedit_bitmap24, textedit_bitmap32},
1436 {textedit_mask16, textedit_mask24, textedit_mask32},
1437 {{7, 7}, {11, 10}, {14, 15}},
1438 false,
1439 };
1440
1441 BlenderCursor[WM_CURSOR_TEXT_EDIT] = &TextEditCursor;
1443
1444 /********************** Paintbrush Cursor ***********************/
1446
1447 static char paintbrush_bitmap16[] = {
1448 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x00, 0x74, 0x00, 0x2e, 0x00,
1449 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00,
1450 0x7c, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x00, 0x00,
1451 };
1452
1453 static char paintbrush_mask16[] = {
1454 0x00, 0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0x7f, 0x80,
1455 0x3f, 0xc0, 0x1f, 0xe0, 0x0f, 0xf0, 0x07, 0xf8, 0x03, 0xfc, 0x01,
1456 0xfe, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x00, 0x0f, 0x00,
1457 };
1458
1459 static char paintbrush_bitmap24[] = {
1460 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e,
1461 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0xc0, 0x17, 0x00, 0x00, 0xe0,
1462 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00,
1463 0xfe, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00,
1464 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00,
1465 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00,
1466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1469 };
1470
1471 static char paintbrush_mask24[] = {
1472 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f,
1473 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0,
1474 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00,
1475 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00,
1476 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00,
1477 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00,
1478 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1481 };
1482
1483 static char paintbrush_bitmap32[] = {
1484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
1485 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00,
1486 0x10, 0x1f, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x7c, 0x04, 0x00, 0x00, 0xfe, 0x00, 0x00,
1487 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
1488 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03,
1489 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f,
1490 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe,
1491 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
1492 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1493 };
1494
1495 static char paintbrush_mask32[] = {
1496 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0,
1497 0x3f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00,
1498 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00,
1499 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00,
1500 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f,
1501 0x00, 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xff,
1502 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff,
1503 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00,
1504 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
1505 };
1506
1507 static BCursor PaintBrushCursor = {
1508 {paintbrush_bitmap16, paintbrush_bitmap24, paintbrush_bitmap32},
1509 {paintbrush_mask16, paintbrush_mask24, paintbrush_mask32},
1510 {{0, 15}, {0, 23}, {0, 31}},
1511 false,
1512 };
1513
1514 BlenderCursor[WM_CURSOR_PAINT_BRUSH] = &PaintBrushCursor;
1516
1517 /********************** Eraser Cursor ***********************/
1519
1520 static char eraser_bitmap16[] = {
1521 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1522 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x07,
1523 0xfe, 0x03, 0xfe, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
1524 };
1525
1526 static char eraser_mask16[] = {
1527 0x00, 0x00, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x1f, 0x80, 0x3f, 0xc0,
1528 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f,
1529 0xff, 0x07, 0xff, 0x03, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00,
1530 };
1531
1532 static char eraser_bitmap24[] = {
1533 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
1534 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x08,
1535 0x10, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x0a, 0x40, 0x00, 0x00, 0x1d, 0x80, 0x00, 0x80,
1536 0x3e, 0x40, 0x00, 0x40, 0x7f, 0x20, 0x00, 0xa0, 0xff, 0x10, 0x00, 0xd0, 0xff, 0x09, 0x00,
1537 0xe8, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xfa, 0x7f, 0x01, 0x00, 0xfd, 0xbf, 0x00,
1538 0x00, 0xfd, 0x5f, 0x00, 0x00, 0xfd, 0x2f, 0x00, 0x00, 0xfd, 0x17, 0x00, 0x00, 0x01, 0x08,
1539 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1540 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1541 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1542 };
1543
1544 static char eraser_mask24[] = {
1545 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
1546 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8,
1547 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80,
1548 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00,
1549 0xf8, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00,
1550 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x0f,
1551 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1554 };
1555
1556 static char eraser_bitmap32[] = {
1557 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78,
1558 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x80,
1559 0x01, 0x06, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00,
1560 0x18, 0x00, 0x60, 0x00, 0x4c, 0x00, 0xc0, 0x00, 0xe6, 0x00, 0xc0, 0x00, 0xf3, 0x01, 0x60,
1561 0x80, 0xf9, 0x03, 0x30, 0xc0, 0xfc, 0x07, 0x18, 0x60, 0xfe, 0x0f, 0x0c, 0x30, 0xff, 0x1f,
1562 0x06, 0x98, 0xff, 0x3f, 0x03, 0xcc, 0xff, 0x9f, 0x01, 0xe6, 0xff, 0xcf, 0x00, 0xf3, 0xff,
1563 0x67, 0x00, 0xf9, 0xff, 0x33, 0x00, 0xfd, 0xff, 0x19, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd,
1564 0x7f, 0x06, 0x00, 0xfd, 0x3f, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00,
1565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1566 };
1567
1568 static char eraser_mask32[] = {
1569 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78,
1570 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80,
1571 0xff, 0x07, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x3f, 0x00,
1572 0xf8, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xff, 0xff, 0x7f,
1573 0x80, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff,
1574 0x07, 0xf8, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0x00, 0xff, 0xff,
1575 0x7f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xff,
1576 0xff, 0x07, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00,
1577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1578 };
1579
1580 static BCursor EraserCursor = {
1581 {eraser_bitmap16, eraser_bitmap24, eraser_bitmap32},
1582 {eraser_mask16, eraser_mask24, eraser_mask32},
1583 {{0, 14}, {0, 23}, {0, 28}},
1584 false,
1585 };
1586
1587 BlenderCursor[WM_CURSOR_ERASER] = &EraserCursor;
1589
1590 /********************** Hand Cursor ***********************/
1592
1593 static char hand_bitmap16[] = {
1594 0x00, 0x00, 0x80, 0x01, 0x80, 0x0d, 0x98, 0x6d, 0xb8, 0x6d, 0xb0,
1595 0x6d, 0xb0, 0x6d, 0xe0, 0x6f, 0xe6, 0x7f, 0xee, 0x7f, 0x7c, 0x35,
1596 0x78, 0x35, 0x70, 0x15, 0x60, 0x15, 0xc0, 0x1f, 0xc0, 0x1f,
1597 };
1598
1599 static char hand_mask16[] = {
1600 0x80, 0x01, 0xc0, 0x0f, 0xd8, 0x7f, 0xfc, 0xff, 0xfc, 0xff, 0xf8,
1601 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f,
1602 0xfc, 0x7f, 0xf8, 0x3f, 0xf0, 0x3f, 0xe0, 0x3f, 0xe0, 0x3f,
1603 };
1604
1605 static char hand_bitmap24[] = {
1606 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x3b, 0x00,
1607 0x00, 0x80, 0xbb, 0x03, 0x00, 0x80, 0xbb, 0x03, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb,
1608 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80,
1609 0xbb, 0x3b, 0x00, 0x8e, 0xbb, 0x3b, 0x00, 0x8e, 0xbb, 0x3b, 0x00, 0x9e, 0xff, 0x3b, 0x00,
1610 0x9c, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xdb, 0x3e, 0x00, 0xf8, 0xdb, 0x1e,
1611 0x00, 0xf0, 0xdb, 0x1e, 0x00, 0xe0, 0xdb, 0x0e, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x80, 0xff,
1612 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1613 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1615 };
1616
1617 static char hand_mask24[] = {
1618 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0x03,
1619 0x00, 0xc0, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff,
1620 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xce,
1621 0xff, 0x7f, 0x00, 0xcf, 0xff, 0x7f, 0x00, 0xdf, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x7f, 0x00,
1622 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x3f,
1623 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xc0, 0xff,
1624 0x0f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1626 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1627 };
1628
1629 static char hand_bitmap32[] = {
1630 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x30, 0x0f,
1631 0x00, 0x00, 0x78, 0xcf, 0x00, 0x00, 0x78, 0xef, 0x01, 0x00, 0x78, 0xef, 0x01, 0x00, 0x78,
1632 0xef, 0x01, 0x00, 0x78, 0xef, 0x1d, 0x00, 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x00,
1633 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x70, 0x78, 0xef, 0x3d,
1634 0xf0, 0x78, 0xef, 0x3d, 0xf0, 0xf8, 0xff, 0x3d, 0xf0, 0xf8, 0xff, 0x3d, 0xf0, 0xf8, 0xff,
1635 0x3f, 0xf0, 0xb9, 0xf7, 0x3f, 0xe0, 0xbb, 0xf7, 0x3f, 0xe0, 0xbf, 0xf7, 0x3e, 0xe0, 0xbf,
1636 0xf7, 0x3e, 0xc0, 0xbf, 0xf7, 0x3e, 0x80, 0xbf, 0xf7, 0x3e, 0x80, 0xbf, 0xf7, 0x3e, 0x00,
1637 0xbf, 0xf7, 0x1e, 0x00, 0xbe, 0xf7, 0x1e, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f,
1638 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x07,
1639 };
1640
1641 static char hand_mask32[] = {
1642 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0xff,
1643 0x01, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc,
1644 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00,
1645 0xfc, 0xff, 0x7f, 0x60, 0xfc, 0xff, 0x7f, 0xf8, 0xfc, 0xff, 0x7f, 0xf8, 0xfd, 0xff, 0x7f,
1646 0xfc, 0xfd, 0xff, 0x7f, 0xfc, 0xfd, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff,
1647 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf0, 0xff,
1648 0xff, 0x7f, 0xe0, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x80,
1649 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x1f,
1650 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f,
1651 };
1652
1653 static BCursor HandCursor = {
1654 {hand_bitmap16, hand_bitmap24, hand_bitmap32},
1655 {hand_mask16, hand_mask24, hand_mask32},
1656 {{8, 8}, {11, 11}, {17, 17}},
1657 false,
1658 };
1659
1660 BlenderCursor[WM_CURSOR_HAND] = &HandCursor;
1661 BlenderCursor[WM_CURSOR_HAND_CLOSED] = &HandCursor;
1662 BlenderCursor[WM_CURSOR_HAND_POINT] = &HandCursor;
1664
1665 /********************** NSEW Scroll Cursor ***********************/
1667
1668 static char nsewscroll_bitmap16[] = {
1669 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x40, 0x02, 0x00, 0x00, 0x00,
1670 0x00, 0x0c, 0x30, 0x06, 0x60, 0x06, 0x60, 0x0c, 0x30, 0x00, 0x00,
1671 0x00, 0x00, 0x40, 0x02, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00,
1672 };
1673
1674 static char nsewscroll_mask16[] = {
1675 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0x40, 0x02, 0x0c,
1676 0x30, 0x1e, 0x78, 0x0f, 0xf0, 0x0f, 0xf8, 0x1e, 0x78, 0x0c, 0x30,
1677 0x40, 0x02, 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01,
1678 };
1679
1680 static char nsewscroll_bitmap24[] = {
1681 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00,
1682 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1683 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e,
1684 0x00, 0x38, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x04, 0x00,
1685 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x77, 0x00,
1686 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
1687 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1689 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1690 };
1691
1692 static char nsewscroll_mask24[] = {
1693 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00,
1694 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x10, 0x00,
1695 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x1f,
1696 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00,
1697 0x10, 0x00, 0x04, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0xff, 0x00,
1698 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
1699 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1700 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1701 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1702 };
1703
1704 static char nsewscroll_bitmap32[] = {
1705 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07,
1706 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x38,
1707 0x1c, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x02, 0xe0,
1708 0x00, 0x00, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0x7c, 0x00, 0x00, 0x3e,
1709 0x3e, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x3e, 0xf8, 0x00, 0x00,
1710 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00,
1711 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00,
1712 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00,
1713 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1714 };
1715
1716 static char nsewscroll_mask32[] = {
1717 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f,
1718 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x7c,
1719 0x3e, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x40, 0x10, 0x08, 0x02, 0xe0, 0x00, 0x00, 0x07, 0xf0,
1720 0x01, 0x80, 0x0f, 0xf8, 0x03, 0xc0, 0x1f, 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0x00, 0x00, 0x7f,
1721 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0xfc, 0x01, 0x80,
1722 0x3f, 0xf8, 0x03, 0xc0, 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0x40, 0x10,
1723 0x08, 0x02, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
1724 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00,
1725 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00,
1726 };
1727
1728 static BCursor NSEWScrollCursor = {
1729 {nsewscroll_bitmap16, nsewscroll_bitmap24, nsewscroll_bitmap32},
1730 {nsewscroll_mask16, nsewscroll_mask24, nsewscroll_mask32},
1731 {{7, 7}, {11, 11}, {15, 15}},
1732 true,
1733 };
1734
1735 BlenderCursor[WM_CURSOR_NSEW_SCROLL] = &NSEWScrollCursor;
1737
1738 /********************** NS Scroll Cursor ***********************/
1740
1741 static char nsscroll_bitmap16[] = {
1742 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0x70, 0x07, 0x20,
1743 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02,
1744 0x70, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00,
1745 };
1746
1747 static char nsscroll_mask16[] = {
1748 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0x70,
1749 0x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x70, 0x07,
1750 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00,
1751 };
1752
1753 static char nsscroll_bitmap24[] = {
1754 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00,
1755 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xc1,
1756 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1757 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1758 0x80, 0xc1, 0x00, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x7f, 0x00,
1759 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
1760 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1761 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1762 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1763 };
1764
1765 static char nsscroll_mask24[] = {
1766 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00,
1767 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xe3,
1768 0x01, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1769 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00,
1770 0xc0, 0xe3, 0x01, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00,
1771 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
1772 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1773 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1774 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1775 };
1776
1777 static char nsscroll_bitmap32[] = {
1778 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01,
1779 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xbf,
1780 0x1f, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00,
1781 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1782 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1783 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0f,
1784 0x1e, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0xbf, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00,
1785 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00,
1786 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1787 };
1788
1789 static char nsscroll_mask32[] = {
1790 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf8, 0x03,
1791 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff,
1792 0x3f, 0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00,
1793 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1794 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1795 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x80, 0x1f,
1796 0x3f, 0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00,
1797 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00,
1798 0x00, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
1799 };
1800
1801 static BCursor NSScrollCursor = {
1802 {nsscroll_bitmap16, nsscroll_bitmap24, nsscroll_bitmap32},
1803 {nsscroll_mask16, nsscroll_mask24, nsscroll_mask32},
1804 {{7, 7}, {11, 11}, {14, 15}},
1805 true,
1806 };
1807
1808 BlenderCursor[WM_CURSOR_NS_SCROLL] = &NSScrollCursor;
1810
1811 /********************** EW Scroll Cursor ***********************/
1813
1814 static char ewscroll_bitmap16[] = {
1815 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x38,
1816 0x1c, 0x1c, 0x38, 0x0e, 0x70, 0x1c, 0x38, 0x38, 0x1c, 0x10, 0x08,
1817 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1818 };
1819
1820 static char ewscroll_mask16[] = {
1821 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x38, 0x1c, 0x7c,
1822 0x3e, 0x3e, 0x7c, 0x1f, 0xf8, 0x3e, 0x7c, 0x7c, 0x3e, 0x38, 0x1c,
1823 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1824 };
1825
1826 static char ewscroll_bitmap24[] = {
1827 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1828 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1829 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x07, 0x00, 0xf0,
1830 0x00, 0x0f, 0x00, 0x78, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x78, 0x00,
1831 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0xe0, 0x00, 0x07,
1832 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1833 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1834 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1835 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1836 };
1837
1838 static char ewscroll_mask24[] = {
1839 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1840 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1841 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x07, 0x00, 0xf0, 0x81, 0x0f, 0x00, 0xf8,
1842 0x81, 0x1f, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0xfc, 0x00,
1843 0x7e, 0x00, 0x7e, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0xf8, 0x81, 0x1f, 0x00, 0xf0, 0x81, 0x0f,
1844 0x00, 0xe0, 0x00, 0x07, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1845 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1846 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1847 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1848 };
1849
1850 static char ewscroll_bitmap32[] = {
1851 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1852 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
1853 0x80, 0x00, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0xf0,
1854 0x03, 0xc0, 0x0f, 0xf8, 0x01, 0x80, 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0x7e, 0x00, 0x00, 0x7e,
1855 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x01, 0x80, 0x1f, 0xf0, 0x03, 0xc0, 0x0f, 0xe0, 0x07, 0xe0,
1856 0x07, 0xc0, 0x07, 0xe0, 0x03, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
1857 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1858 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1859 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1860 };
1861
1862 static char ewscroll_mask32[] = {
1863 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1864 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x80, 0x03,
1865 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xe0, 0x0f, 0xf0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0xf8,
1866 0x07, 0xe0, 0x1f, 0xfc, 0x03, 0xc0, 0x3f, 0xfe, 0x01, 0x80, 0x7f, 0xff, 0x00, 0x00, 0xff,
1867 0xfe, 0x01, 0x80, 0x7f, 0xfc, 0x03, 0xc0, 0x3f, 0xf8, 0x07, 0xe0, 0x1f, 0xf0, 0x0f, 0xf0,
1868 0x0f, 0xe0, 0x0f, 0xf0, 0x07, 0xc0, 0x07, 0xe0, 0x03, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x01,
1869 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1870 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1871 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1872 };
1873
1874 static BCursor EWScrollCursor = {
1875 {ewscroll_bitmap16, ewscroll_bitmap24, ewscroll_bitmap32},
1876 {ewscroll_mask16, ewscroll_mask24, ewscroll_mask32},
1877 {{7, 7}, {11, 14}, {15, 15}},
1878 true,
1879 };
1880
1881 BlenderCursor[WM_CURSOR_EW_SCROLL] = &EWScrollCursor;
1883
1884 /********************** Eyedropper Cursor ***********************/
1886
1887 static char eyedropper_bitmap16[] = {
1888 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x17, 0x00,
1889 0x0e, 0x00, 0x1d, 0x80, 0x0b, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00,
1890 0x38, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00,
1891 };
1892
1893 static char eyedropper_mask16[] = {
1894 0x00, 0x60, 0x00, 0xf0, 0x00, 0xfa, 0x00, 0x7f, 0x80, 0x3f, 0x00,
1895 0x1f, 0x80, 0x3f, 0xc0, 0x1f, 0xe0, 0x0b, 0xf0, 0x01, 0xf8, 0x00,
1896 0x7c, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x03, 0x00,
1897 };
1898
1899 static char eyedropper_bitmap24[] = {
1900 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7e,
1901 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x60, 0x3f, 0x00, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0xe0,
1902 0x0d, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xb0, 0x07, 0x00, 0x00, 0x78, 0x07, 0x00, 0x00,
1903 0x7c, 0x02, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x80, 0x0d, 0x00, 0x00,
1904 0xc0, 0x06, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xd8, 0x00, 0x00,
1905 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00,
1906 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1907 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1908 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1909 };
1910
1911 static char eyedropper_mask24[] = {
1912 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xff,
1913 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0,
1914 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00,
1915 0xfe, 0x07, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00,
1916 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00,
1917 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00,
1918 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1919 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1920 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1921 };
1922
1923 static char eyedropper_bitmap32[] = {
1924 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
1925 0x7f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe4, 0x3f, 0x00, 0x00,
1926 0xee, 0x1f, 0x00, 0x00, 0xdf, 0x0f, 0x00, 0x00, 0xbf, 0x07, 0x00, 0x00, 0x7e, 0x03, 0x00,
1927 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x80, 0xf7, 0x03, 0x00, 0xc0, 0xef, 0x01,
1928 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, 0xdc, 0x01,
1929 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0xc0, 0x1d,
1930 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf8,
1931 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
1932 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1933 };
1934
1935 static char eyedropper_mask32[] = {
1936 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80,
1937 0xff, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
1938 0xff, 0x3f, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00,
1939 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03,
1940 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xcf, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03,
1941 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f,
1942 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc,
1943 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
1944 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
1945 };
1946
1947 static BCursor EyedropperCursor = {
1948 {eyedropper_bitmap16, eyedropper_bitmap24, eyedropper_bitmap32},
1949 {eyedropper_mask16, eyedropper_mask24, eyedropper_mask32},
1950 {{0, 15}, {1, 22}, {1, 30}},
1951 false,
1952 };
1953
1954 BlenderCursor[WM_CURSOR_EYEDROPPER] = &EyedropperCursor;
1956
1957 /********************** Swap Area Cursor ***********************/
1959
1960 static char swap_bitmap16[] = {
1961 0xc0, 0xff, 0x40, 0x80, 0x40, 0xbc, 0x40, 0xb8, 0x40, 0xb8, 0x40,
1962 0xa4, 0x00, 0x82, 0xfe, 0x81, 0x7e, 0x81, 0xbe, 0xfd, 0xda, 0x01,
1963 0xe2, 0x01, 0xe2, 0x01, 0xc2, 0x01, 0xfe, 0x01, 0x00, 0x00,
1964 };
1965
1966 static char swap_mask16[] = {
1967 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0,
1968 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
1969 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03,
1970 };
1971
1972 static char swap_bitmap24[] = {
1973 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x82, 0xbf, 0x00, 0x00, 0x02, 0xbf,
1974 0x00, 0x00, 0x02, 0xbe, 0x00, 0x00, 0x02, 0xbe, 0x00, 0x00, 0x02, 0xbf, 0x00, 0x00, 0x82,
1975 0xb3, 0x00, 0x00, 0xc2, 0xa1, 0x00, 0x00, 0xe0, 0x80, 0x00, 0xfe, 0x7f, 0x80, 0x00, 0xfe,
1976 0x37, 0x80, 0x00, 0xfe, 0x23, 0x80, 0x00, 0xfe, 0x31, 0x80, 0x00, 0xfe, 0xb8, 0xff, 0x00,
1977 0x7a, 0x3c, 0x00, 0x00, 0x32, 0x3e, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x82, 0x3f, 0x00,
1978 0x00, 0x82, 0x3f, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0xfe, 0x3f,
1979 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1980 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1981 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1982 };
1983
1984 static char swap_mask24[] = {
1985 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
1986 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe,
1987 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff,
1988 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00,
1989 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00,
1990 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f,
1991 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1992 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1993 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1994 };
1995
1996 static char swap_bitmap32[] = {
1997 0x00, 0xe0, 0xff, 0xff, 0x00, 0x20, 0x00, 0x80, 0x00, 0x20, 0x00, 0x80, 0x00, 0x20, 0xf8,
1998 0x9f, 0x00, 0x20, 0xf0, 0x9f, 0x00, 0x20, 0xe0, 0x9f, 0x00, 0x20, 0xc0, 0x9f, 0x00, 0x20,
1999 0x80, 0x9f, 0x00, 0x20, 0xc0, 0x9f, 0x00, 0x20, 0xe0, 0x9e, 0x00, 0x20, 0x70, 0x9c, 0x00,
2000 0x20, 0x38, 0x98, 0x00, 0x20, 0x1c, 0x90, 0x00, 0x00, 0x0e, 0x80, 0xfe, 0xff, 0x07, 0x80,
2001 0xfe, 0x7f, 0x03, 0x80, 0xfe, 0x3f, 0x02, 0x80, 0xfe, 0x1f, 0x03, 0x80, 0xfe, 0x8f, 0xfb,
2002 0xff, 0xf6, 0xc7, 0x03, 0x00, 0xe6, 0xe3, 0x03, 0x00, 0xc6, 0xf1, 0x03, 0x00, 0x86, 0xf8,
2003 0x03, 0x00, 0x06, 0xfc, 0x03, 0x00, 0x06, 0xfe, 0x03, 0x00, 0x06, 0xfc, 0x03, 0x00, 0x06,
2004 0xf8, 0x03, 0x00, 0x06, 0xf0, 0x03, 0x00, 0x06, 0xe0, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00,
2005 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
2006 };
2007
2008 static char swap_mask32[] = {
2009 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff,
2010 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0,
2011 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00,
2012 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff,
2015 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff,
2016 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00,
2017 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00,
2018 };
2019
2020 static BCursor SwapCursor = {
2021 {swap_bitmap16, swap_bitmap24, swap_bitmap32},
2022 {swap_mask16, swap_mask24, swap_mask32},
2023 {{7, 7}, {11, 11}, {15, 15}},
2024 false,
2025 };
2026
2027 BlenderCursor[WM_CURSOR_SWAP_AREA] = &SwapCursor;
2029
2030 /********************** Vertical Split Cursor ***********************/
2032
2033 static char vsplit_bitmap16[] = {
2034 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x88,
2035 0x11, 0x8c, 0x31, 0x86, 0x61, 0x86, 0x61, 0x8c, 0x31, 0x88, 0x11,
2036 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
2037 };
2038
2039 static char vsplit_mask16[] = {
2040 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc8, 0x13, 0xdc,
2041 0x3b, 0xde, 0x7b, 0xcf, 0xf3, 0xcf, 0xf3, 0xde, 0x7b, 0xdc, 0x3b,
2042 0xc8, 0x13, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07,
2043 };
2044
2045 static char vsplit_bitmap24[] = {
2046 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00,
2047 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x20, 0xc3,
2048 0x04, 0x00, 0x30, 0xc3, 0x0c, 0x00, 0x38, 0xc3, 0x1c, 0x00, 0x1c, 0xc3, 0x38, 0x00, 0x0e,
2049 0xc3, 0x70, 0x00, 0x1c, 0xc3, 0x38, 0x00, 0x38, 0xc3, 0x1c, 0x00, 0x30, 0xc3, 0x0c, 0x00,
2050 0x20, 0xc3, 0x04, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00,
2051 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00,
2052 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2053 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2054 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2055 };
2056
2057 static char vsplit_mask24[] = {
2058 0x00, 0x81, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00,
2059 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x20, 0xe7, 0x04, 0x00, 0x70, 0xe7,
2060 0x0e, 0x00, 0x78, 0xe7, 0x1e, 0x00, 0x7c, 0xe7, 0x3e, 0x00, 0x3e, 0xe7, 0x7c, 0x00, 0x1f,
2061 0xe7, 0xf8, 0x00, 0x3e, 0xe7, 0x7c, 0x00, 0x7c, 0xe7, 0x3e, 0x00, 0x78, 0xe7, 0x1e, 0x00,
2062 0x70, 0xe7, 0x0e, 0x00, 0x20, 0xe7, 0x04, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00,
2063 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81,
2064 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2065 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2066 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2067 };
2068
2069 static char vsplit_bitmap32[] = {
2070 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c,
2071 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38,
2072 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x80, 0x38, 0x1c, 0x01, 0xc0, 0x39, 0x9c, 0x03, 0xe0,
2073 0x3b, 0xdc, 0x07, 0xf0, 0x39, 0x9c, 0x0f, 0xf8, 0x38, 0x1c, 0x1f, 0x7c, 0x38, 0x1c, 0x3e,
2074 0x3e, 0x38, 0x1c, 0x7c, 0x3e, 0x38, 0x1c, 0x7c, 0x7c, 0x38, 0x1c, 0x3e, 0xf8, 0x38, 0x1c,
2075 0x1f, 0xf0, 0x39, 0x9c, 0x0f, 0xe0, 0x3b, 0xdc, 0x07, 0xc0, 0x39, 0x9c, 0x03, 0x80, 0x38,
2076 0x1c, 0x01, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00,
2077 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00,
2078 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
2079 };
2080
2081 static char vsplit_mask32[] = {
2082 0x00, 0x18, 0x18, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e,
2083 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78,
2084 0x1e, 0x00, 0x80, 0x78, 0x1e, 0x01, 0xc0, 0x79, 0x9e, 0x03, 0xe0, 0x7b, 0xde, 0x07, 0xf0,
2085 0x7f, 0xfe, 0x0f, 0xf8, 0x7b, 0xde, 0x1f, 0xfc, 0x79, 0x9e, 0x3f, 0xfe, 0x78, 0x1e, 0x7f,
2086 0x7f, 0x78, 0x1e, 0xfe, 0x7f, 0x78, 0x1e, 0xfe, 0xfe, 0x78, 0x1e, 0x7f, 0xfc, 0x79, 0x9e,
2087 0x3f, 0xf8, 0x7b, 0xde, 0x1f, 0xf0, 0x7f, 0xfe, 0x0f, 0xe0, 0x7b, 0xde, 0x07, 0xc0, 0x79,
2088 0x9e, 0x03, 0x80, 0x78, 0x1e, 0x01, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00,
2089 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00,
2090 0x00, 0x38, 0x1c, 0x00, 0x00, 0x18, 0x18, 0x00,
2091 };
2092
2093 static BCursor VSplitCursor = {
2094 {vsplit_bitmap16, vsplit_bitmap24, vsplit_bitmap32},
2095 {vsplit_mask16, vsplit_mask24, vsplit_mask32},
2096 {{7, 7}, {11, 11}, {15, 15}},
2097 true,
2098 };
2099
2100 BlenderCursor[WM_CURSOR_V_SPLIT] = &VSplitCursor;
2102
2103 /********************** Horizontal Split Cursor ***********************/
2105
2106 static char hsplit_bitmap16[] = {
2107 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x60, 0x06, 0x00, 0x00, 0x00,
2108 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
2109 0x00, 0x00, 0x60, 0x06, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00,
2110 };
2111
2112 static char hsplit_mask16[] = {
2113 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x60, 0x06, 0x01,
2114 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80,
2115 0x60, 0x06, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01,
2116 };
2117
2118 static char hsplit_bitmap24[] = {
2119 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00,
2120 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2121 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00,
2123 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00,
2124 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
2125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2128 };
2129
2130 static char hsplit_mask24[] = {
2131 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00,
2132 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00,
2133 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00,
2134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x3f, 0x00,
2135 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0xc0, 0xf7, 0x01,
2136 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c,
2137 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2140 };
2141
2142 static char hsplit_bitmap32[] = {
2143 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07,
2144 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x3e,
2145 0x7c, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
2146 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
2147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
2148 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
2149 0x10, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00,
2150 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00,
2151 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2152 };
2153
2154 static char hsplit_mask32[] = {
2155 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f,
2156 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x7f,
2157 0xfe, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x08, 0x10, 0x00, 0xff,
2158 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f,
2159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff,
2160 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x10, 0x00, 0x00, 0x1c,
2161 0x38, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
2162 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00,
2163 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00,
2164 };
2165
2166 static BCursor HSplitCursor = {
2167 {hsplit_bitmap16, hsplit_bitmap24, hsplit_bitmap32},
2168 {hsplit_mask16, hsplit_mask24, hsplit_mask32},
2169 {{7, 7}, {11, 11}, {15, 15}},
2170 true,
2171 };
2172
2173 BlenderCursor[WM_CURSOR_H_SPLIT] = &HSplitCursor;
2175
2176 /********************** North Arrow Cursor ***********************/
2178
2179 static char narrow_bitmap16[] = {
2180 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8,
2181 0x0f, 0x7c, 0x1f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x08, 0x00, 0x00,
2182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2183 };
2184
2185 static char narrow_mask16[] = {
2186 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc,
2187 0x1f, 0xfe, 0x3f, 0x7f, 0x7f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x08,
2188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2189 };
2190
2191 static char narrow_bitmap24[] = {
2192 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00,
2193 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff,
2194 0x03, 0x00, 0xf0, 0xf7, 0x07, 0x00, 0xf8, 0xe3, 0x0f, 0x00, 0xfc, 0xc1, 0x1f, 0x00, 0xfe,
2195 0x80, 0x3f, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x04, 0x00,
2196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2201 };
2202
2203 static char narrow_mask24[] = {
2204 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00,
2205 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff,
2206 0x07, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xff,
2207 0xc1, 0x7f, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00,
2208 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2213 };
2214
2215 static char narrow_bitmap32[] = {
2216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07,
2217 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc,
2218 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x80, 0xff, 0xfe, 0x03, 0xc0,
2219 0x7f, 0xfc, 0x07, 0xe0, 0x3f, 0xf8, 0x0f, 0xf0, 0x1f, 0xf0, 0x1f, 0xf8, 0x0f, 0xe0, 0x3f,
2220 0xfc, 0x07, 0xc0, 0x7f, 0xf8, 0x03, 0x80, 0x3f, 0xf0, 0x01, 0x00, 0x1f, 0xe0, 0x00, 0x00,
2221 0x0e, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2225 };
2226
2227 static char narrow_mask32[] = {
2228 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f,
2229 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe,
2230 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x07, 0xe0,
2231 0xff, 0xfe, 0x0f, 0xf0, 0x7f, 0xfc, 0x1f, 0xf8, 0x3f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf0, 0x7f,
2232 0xfe, 0x0f, 0xe0, 0xff, 0xfc, 0x07, 0xc0, 0x7f, 0xf8, 0x03, 0x80, 0x3f, 0xf0, 0x01, 0x00,
2233 0x1f, 0xe0, 0x00, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2237 };
2238
2239 static BCursor NArrowCursor = {
2240 {narrow_bitmap16, narrow_bitmap24, narrow_bitmap32},
2241 {narrow_mask16, narrow_mask24, narrow_mask32},
2242 {{7, 5}, {11, 7}, {16, 9}},
2243 true,
2244 };
2245
2246 BlenderCursor[WM_CURSOR_N_ARROW] = &NArrowCursor;
2248
2249 /********************** South Arrow Cursor ***********************/
2251
2252 static char sarrow_bitmap16[] = {
2253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2254 0x00, 0x08, 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7c, 0x1f, 0xf8, 0x0f,
2255 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00,
2256 };
2257
2258 static char sarrow_mask16[] = {
2259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
2260 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7f, 0x7f, 0xfe, 0x3f, 0xfc, 0x1f,
2261 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00,
2262 };
2263
2264 static char sarrow_bitmap24[] = {
2265 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f,
2266 0x00, 0xfe, 0x80, 0x3f, 0x00, 0xfc, 0xc1, 0x1f, 0x00, 0xf8, 0xe3, 0x0f, 0x00, 0xf0, 0xf7,
2267 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00,
2268 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
2269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2274 };
2275
2276 static char sarrow_mask24[] = {
2277 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0xfe, 0x80, 0x3f,
2278 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0xf8, 0xff,
2279 0x0f, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80,
2280 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
2281 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2286 };
2287
2288 static char sarrow_bitmap32[] = {
2289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2292 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x80, 0x0f,
2293 0xfc, 0x01, 0xc0, 0x1f, 0xfe, 0x03, 0xe0, 0x3f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xf8,
2294 0x0f, 0xf0, 0x1f, 0xfc, 0x07, 0xe0, 0x3f, 0xfe, 0x03, 0xc0, 0x7f, 0xff, 0x01, 0x80, 0xff,
2295 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00,
2296 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00,
2297 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2298 };
2299
2300 static char sarrow_mask32[] = {
2301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
2304 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x80, 0x0f, 0xfc, 0x01, 0xc0, 0x1f,
2305 0xfe, 0x03, 0xe0, 0x3f, 0xff, 0x07, 0xf0, 0x7f, 0xfe, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfc,
2306 0x1f, 0xf8, 0x3f, 0xfe, 0x0f, 0xf0, 0x7f, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff,
2307 0xff, 0x01, 0x80, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00,
2308 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00,
2309 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00,
2310 };
2311
2312 static BCursor SArrowCursor = {
2313 {sarrow_bitmap16, sarrow_bitmap24, sarrow_bitmap32},
2314 {sarrow_mask16, sarrow_mask24, sarrow_mask32},
2315 {{7, 10}, {11, 8}, {15, 22}},
2316 true,
2317 };
2318
2319 BlenderCursor[WM_CURSOR_S_ARROW] = &SArrowCursor;
2321
2322 /********************** East Arrow Cursor ***********************/
2324
2325 static char earrow_bitmap16[] = {
2326 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07, 0x80, 0x0f, 0x00,
2327 0x1f, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f,
2328 0xc0, 0x07, 0x80, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
2329 };
2330
2331 static char earrow_mask16[] = {
2332 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f, 0xc0, 0x1f, 0x80,
2333 0x3f, 0x00, 0x7f, 0x00, 0xfe, 0x00, 0x7f, 0x80, 0x3f, 0xc0, 0x1f,
2334 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03, 0x00, 0x01, 0x00, 0x00,
2335 };
2336
2337 static char earrow_bitmap24[] = {
2338 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00,
2339 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x07,
2340 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00,
2341 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00,
2342 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00,
2343 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
2344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2347 };
2348
2349 static char earrow_mask24[] = {
2350 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
2351 0x00, 0xff, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f,
2352 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80,
2353 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00,
2354 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00,
2355 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00,
2356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2359 };
2360
2361 static char earrow_bitmap32[] = {
2362 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07,
2363 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0,
2364 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00,
2365 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f,
2366 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8,
2367 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80,
2368 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00,
2369 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00,
2370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2371 };
2372
2373 static char earrow_mask32[] = {
2374 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f,
2375 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0,
2376 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00,
2377 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x7f,
2378 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc,
2379 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0,
2380 0xff, 0x01, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00,
2381 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00,
2382 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2383 };
2384
2385 static BCursor EArrowCursor = {
2386 {earrow_bitmap16, earrow_bitmap24, earrow_bitmap32},
2387 {earrow_mask16, earrow_mask24, earrow_mask32},
2388 {{10, 7}, {8, 11}, {22, 15}},
2389 true,
2390 };
2391
2392 BlenderCursor[WM_CURSOR_E_ARROW] = &EArrowCursor;
2394
2395 /********************** West Arrow Cursor ***********************/
2397
2398 static char warrow_bitmap16[] = {
2399 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x01, 0xf8,
2400 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x01,
2401 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
2402 };
2403
2404 static char warrow_mask16[] = {
2405 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x03, 0xfc,
2406 0x01, 0xfe, 0x00, 0x7f, 0x00, 0xfe, 0x00, 0xfc, 0x01, 0xf8, 0x03,
2407 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00,
2408 };
2409
2410 static char warrow_bitmap24[] = {
2411 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00,
2412 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f,
2413 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe,
2414 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00,
2415 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00,
2416 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
2417 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2418 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2420 };
2421
2422 static char warrow_mask24[] = {
2423 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00,
2424 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f,
2425 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff,
2426 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00,
2427 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00,
2428 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08,
2429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2432 };
2433
2434 static char warrow_bitmap32[] = {
2435 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03,
2436 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe,
2437 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0,
2438 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
2439 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00,
2440 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff,
2441 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00,
2442 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00,
2443 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2444 };
2445
2446 static char warrow_mask32[] = {
2447 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07,
2448 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff,
2449 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0,
2450 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00,
2451 0xff, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
2452 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff,
2453 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00,
2454 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00,
2455 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2456 };
2457
2458 static BCursor WArrowCursor = {
2459 {warrow_bitmap16, warrow_bitmap24, warrow_bitmap32},
2460 {warrow_mask16, warrow_mask24, warrow_mask32},
2461 {{5, 7}, {7, 11}, {9, 15}},
2462 true,
2463 };
2464
2465 BlenderCursor[WM_CURSOR_W_ARROW] = &WArrowCursor;
2467
2468 /********************** Stop Sign Cursor ***********************/
2470
2471 static char stop_bitmap16[] = {
2472 0x00, 0x00, 0xe0, 0x07, 0xf8, 0x1f, 0x1c, 0x3c, 0x3c, 0x30, 0x76,
2473 0x70, 0xe6, 0x60, 0xc6, 0x61, 0x86, 0x63, 0x06, 0x67, 0x0e, 0x6e,
2474 0x0c, 0x3c, 0x3c, 0x38, 0xf8, 0x1f, 0xe0, 0x07, 0x00, 0x00,
2475 };
2476
2477 static char stop_mask16[] = {
2478 0xe0, 0x07, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, 0x7e, 0x7c, 0xff,
2479 0xf8, 0xff, 0xf1, 0xef, 0xf3, 0xcf, 0xf7, 0x8f, 0xff, 0x1f, 0xff,
2480 0x3e, 0x7e, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xe0, 0x07,
2481 };
2482
2483 static char stop_bitmap24[] = {
2484 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xc3, 0x07,
2485 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x78, 0x00, 0x1c, 0x00, 0xf8, 0x00, 0x18, 0x00, 0xdc, 0x01,
2486 0x38, 0x00, 0x8c, 0x03, 0x30, 0x00, 0x0e, 0x07, 0x70, 0x00, 0x06, 0x0e, 0x60, 0x00, 0x06,
2487 0x1c, 0x60, 0x00, 0x06, 0x38, 0x60, 0x00, 0x06, 0x70, 0x60, 0x00, 0x0e, 0xe0, 0x70, 0x00,
2488 0x0c, 0xc0, 0x31, 0x00, 0x1c, 0x80, 0x3b, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x1e,
2489 0x00, 0xf0, 0x00, 0x0f, 0x00, 0xe0, 0xc3, 0x07, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x7e,
2490 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2491 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2492 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2493 };
2494
2495 static char stop_mask24[] = {
2496 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f,
2497 0x00, 0xf8, 0xc3, 0x1f, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0xfc, 0x01, 0x3c, 0x00, 0xfe, 0x03,
2498 0x7c, 0x00, 0xde, 0x07, 0x78, 0x00, 0x9f, 0x0f, 0xf8, 0x00, 0x0f, 0x1f, 0xf0, 0x00, 0x0f,
2499 0x3e, 0xf0, 0x00, 0x0f, 0x7c, 0xf0, 0x00, 0x0f, 0xf8, 0xf0, 0x00, 0x1f, 0xf0, 0xf9, 0x00,
2500 0x1e, 0xe0, 0x7b, 0x00, 0x3e, 0xc0, 0x7f, 0x00, 0x3c, 0x80, 0x3f, 0x00, 0xfc, 0x00, 0x3f,
2501 0x00, 0xf8, 0xc3, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x80, 0xff,
2502 0x01, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2503 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2505 };
2506
2507 static char stop_bitmap32[] = {
2508 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff,
2509 0x00, 0xc0, 0x1f, 0xf8, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf0, 0x03,
2510 0x00, 0x0f, 0xf8, 0x07, 0x00, 0x1e, 0xbc, 0x0f, 0x00, 0x3c, 0x1c, 0x1f, 0x00, 0x38, 0x1c,
2511 0x3e, 0x00, 0x38, 0x1e, 0x7c, 0x00, 0x78, 0x0e, 0xf8, 0x00, 0x70, 0x0e, 0xf0, 0x01, 0x70,
2512 0x0e, 0xe0, 0x03, 0x70, 0x0e, 0xc0, 0x07, 0x70, 0x0e, 0x80, 0x0f, 0x70, 0x0e, 0x00, 0x1f,
2513 0x70, 0x1e, 0x00, 0x3e, 0x78, 0x1c, 0x00, 0x7c, 0x38, 0x1c, 0x00, 0xf8, 0x38, 0x3c, 0x00,
2514 0xf0, 0x3d, 0x78, 0x00, 0xe0, 0x1f, 0xf0, 0x00, 0xc0, 0x0f, 0xf0, 0x01, 0x80, 0x0f, 0xe0,
2515 0x03, 0xc0, 0x07, 0xc0, 0x1f, 0xf8, 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00,
2516 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
2517 };
2518
2519 static char stop_mask32[] = {
2520 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff,
2521 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xfc, 0x0f,
2522 0xc0, 0x3f, 0xfe, 0x1f, 0x80, 0x7f, 0xfe, 0x3f, 0x00, 0x7f, 0xfe, 0x7f, 0x00, 0x7e, 0xbf,
2523 0xff, 0x00, 0xfc, 0x3f, 0xff, 0x01, 0xfc, 0x3f, 0xfe, 0x03, 0xfc, 0x1f, 0xfc, 0x07, 0xf8,
2524 0x1f, 0xf8, 0x0f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf8, 0x1f, 0xe0, 0x3f, 0xf8, 0x3f, 0xc0, 0x7f,
2525 0xfc, 0x3f, 0x80, 0xff, 0xfc, 0x3f, 0x00, 0xff, 0xfd, 0x7e, 0x00, 0xfe, 0x7f, 0xfe, 0x00,
2526 0xfc, 0x7f, 0xfe, 0x01, 0xf8, 0x7f, 0xfc, 0x03, 0xf0, 0x3f, 0xf8, 0x07, 0xe0, 0x1f, 0xf8,
2527 0x3f, 0xfc, 0x1f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x01,
2528 0x00, 0xff, 0xff, 0x00, 0x00, 0xf8, 0x1f, 0x00,
2529 };
2530
2531 static BCursor StopCursor = {
2532 {stop_bitmap16, stop_bitmap24, stop_bitmap32},
2533 {stop_mask16, stop_mask24, stop_mask32},
2534 {{7, 7}, {11, 11}, {15, 15}},
2535 false,
2536 };
2537
2538 BlenderCursor[WM_CURSOR_STOP] = &StopCursor;
2540
2541 /********************** Zoom In Cursor ***********************/
2543
2544 static char zoomin_bitmap16[] = {
2545 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xb8, 0x03, 0xbc,
2546 0x07, 0x0c, 0x06, 0xbc, 0x07, 0xb8, 0x03, 0xf8, 0x0b, 0xe0, 0x14,
2547 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x00, 0x90, 0x00, 0x60,
2548 };
2549
2550 static char zoomin_mask16[] = {
2551 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xfc, 0x07, 0xfc, 0x07, 0xfe,
2552 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0xf8, 0x1f,
2553 0xe0, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0x60,
2554 };
2555
2556 static char zoomin_bitmap24[] = {
2557 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
2558 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe,
2559 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfc,
2560 0x7e, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xbf, 0x01, 0x00, 0xf0, 0x5f, 0x02, 0x00,
2561 0xc0, 0x27, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x80, 0x20,
2562 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
2563 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2564 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2566 };
2567
2568 static char zoomin_mask24[] = {
2569 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00,
2570 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff,
2571 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe,
2572 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x03, 0x00,
2573 0xf0, 0xff, 0x07, 0x00, 0xc0, 0xe7, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f,
2574 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
2575 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2576 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2578 };
2579
2580 static char zoomin_bitmap32[] = {
2581 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01,
2582 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf8, 0xe7,
2583 0x1f, 0x00, 0xf8, 0xe7, 0x1f, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0x7c,
2584 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0xfc, 0xe7, 0x3f, 0x00,
2585 0xf8, 0xe7, 0x1f, 0x00, 0xf8, 0xe7, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x4f,
2586 0x00, 0xe0, 0xff, 0xe7, 0x00, 0x80, 0xff, 0xb1, 0x01, 0x00, 0x7e, 0x18, 0x03, 0x00, 0x00,
2587 0x0c, 0x06, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00,
2588 0x00, 0xc0, 0x60, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc6,
2589 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38,
2590 };
2591
2592 static char zoomin_mask32[] = {
2593 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f,
2594 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff,
2595 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff,
2596 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00,
2597 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f,
2598 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0x03, 0x80, 0xff,
2599 0xff, 0x07, 0x00, 0x7e, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
2600 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfe,
2601 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38,
2602 };
2603
2604 static BCursor ZoomInCursor = {
2605 {zoomin_bitmap16, zoomin_bitmap24, zoomin_bitmap32},
2606 {zoomin_mask16, zoomin_mask24, zoomin_mask32},
2607 {{6, 6}, {8, 8}, {11, 11}},
2608 false,
2609 };
2610
2611 BlenderCursor[WM_CURSOR_ZOOM_IN] = &ZoomInCursor;
2613
2614 /********************** Zoom Out Cursor ***********************/
2616
2617 static char zoomout_bitmap16[] = {
2618 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0xfc,
2619 0x07, 0x0c, 0x06, 0xfc, 0x07, 0xf8, 0x03, 0xf8, 0x0b, 0xe0, 0x14,
2620 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x00, 0x90, 0x00, 0x60,
2621 };
2622
2623 static char zoomout_mask16[] = {
2624 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xfc, 0x07, 0xfc, 0x07, 0xfe,
2625 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0xf8, 0x1f,
2626 0xe0, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0x60,
2627 };
2628
2629 static char zoomout_bitmap24[] = {
2630 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
2631 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
2632 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc,
2633 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xbf, 0x01, 0x00, 0xf0, 0x5f, 0x02, 0x00,
2634 0xc0, 0x27, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x80, 0x20,
2635 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
2636 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2637 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2638 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2639 };
2640
2641 static char zoomout_mask24[] = {
2642 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00,
2643 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff,
2644 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe,
2645 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x03, 0x00,
2646 0xf0, 0xff, 0x07, 0x00, 0xc0, 0xe7, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f,
2647 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
2648 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2649 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2650 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2651 };
2652
2653 static char zoomout_bitmap32[] = {
2654 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f,
2655 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff,
2656 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x7e,
2657 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00,
2658 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x5f,
2659 0x00, 0xf8, 0xff, 0x9f, 0x00, 0xf0, 0xff, 0x0f, 0x01, 0xc0, 0xff, 0x03, 0x02, 0x00, 0x7e,
2660 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x20, 0x20, 0x00,
2661 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82,
2662 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x38,
2663 };
2664
2665 static char zoomout_mask32[] = {
2666 0x00, 0x7e, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x1f,
2667 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff,
2668 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff,
2669 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00,
2670 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f,
2671 0x00, 0xfc, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0xc0, 0xff,
2672 0xff, 0x07, 0x00, 0x7e, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
2673 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfe,
2674 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38,
2675 };
2676
2677 static BCursor ZoomOutCursor = {
2678 {zoomout_bitmap16, zoomout_bitmap24, zoomout_bitmap32},
2679 {zoomout_mask16, zoomout_mask24, zoomout_mask32},
2680 {{6, 6}, {8, 8}, {11, 11}},
2681 false,
2682 };
2683
2684 BlenderCursor[WM_CURSOR_ZOOM_OUT] = &ZoomOutCursor;
2686
2687 /********************** Area Pick Cursor ***********************/
2689
2690 static char pick_area_bitmap16[] = {
2691 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x10,
2692 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0xbf, 0x00, 0x81, 0x00, 0x81,
2693 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x80, 0x00, 0xff,
2694 };
2695
2696 static char pick_area_mask16[] = {
2697 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0xff, 0x01, 0xff, 0x01, 0xff,
2698 0x01, 0x38, 0x00, 0xb8, 0x7f, 0xb8, 0xff, 0x80, 0xc1, 0x80, 0xc1,
2699 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xff, 0x00, 0xff,
2700 };
2701
2702 static char pick_area_bitmap24[] = {
2703 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
2704 0x00, 0x20, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
2705 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf, 0x00, 0x00,
2706 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00,
2707 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80,
2708 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00,
2709 0x80, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2710 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2711 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2712 };
2713
2714 static char pick_area_mask24[] = {
2715 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2716 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x70, 0x00,
2717 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0xfc, 0x7f, 0x00, 0x70, 0xfc, 0xff, 0x00, 0x00,
2718 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00,
2719 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0,
2720 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0xfc,
2721 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2722 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2723 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2724 };
2725
2726 static char pick_area_bitmap32[] = {
2727 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
2728 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x1f,
2729 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0,
2730 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x8e, 0x63, 0x00, 0x30, 0x8e, 0x63,
2731 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2732 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30,
2733 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2734 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x8e, 0x63,
2735 0x00, 0x30, 0x8e, 0x63, 0x00, 0x00, 0x00, 0x00,
2736 };
2737
2738 static char pick_area_mask32[] = {
2739 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00,
2740 0x00, 0xe0, 0x01, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f,
2741 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0,
2742 0x01, 0x00, 0x00, 0xe0, 0x79, 0xdf, 0xf7, 0xe0, 0x79, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7,
2743 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x00,
2744 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78,
2745 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
2746 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7,
2747 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7,
2748 };
2749
2750 static BCursor PickAreaCursor = {
2751 {pick_area_bitmap16, pick_area_bitmap24, pick_area_bitmap32},
2752 {pick_area_mask16, pick_area_mask24, pick_area_mask32},
2753 {{7, 7}, {11, 11}, {15, 15}},
2754 false,
2755 };
2756
2757 BlenderCursor[WM_CURSOR_PICK_AREA] = &PickAreaCursor;
2759
2760 /********************** Right Handle Cursor ***********************/
2762
2763 static char right_handle_bitmap16[] = {
2764 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x70, 0x00, 0x70, 0x08, 0x70,
2765 0x18, 0x70, 0x38, 0x70, 0x78, 0x70, 0x78, 0x70, 0x38, 0x70, 0x18,
2766 0x70, 0x08, 0x70, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00,
2767 };
2768
2769 static char right_handle_mask16[] = {
2770 0xff, 0x00, 0xff, 0x00, 0xff, 0x04, 0xff, 0x0c, 0xf8, 0x1c, 0xf8,
2771 0x3c, 0xf8, 0x7c, 0xf8, 0xfc, 0xf8, 0xfc, 0xf8, 0x7c, 0xf8, 0x3c,
2772 0xf8, 0x1c, 0xff, 0x0c, 0xff, 0x04, 0xff, 0x00, 0xff, 0x00,
2773 };
2774
2775 static char right_handle_bitmap24[] = {
2776 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00,
2777 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87,
2778 0x00, 0x00, 0x0e, 0x87, 0x01, 0x00, 0x0e, 0x87, 0x03, 0x00, 0x0e, 0x87, 0x07, 0x00, 0x0e,
2779 0x87, 0x0f, 0x00, 0x0e, 0x87, 0x0f, 0x00, 0x0e, 0x87, 0x07, 0x00, 0x0e, 0x87, 0x03, 0x00,
2780 0x0e, 0x87, 0x01, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00,
2781 0x00, 0xc0, 0x03, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7e, 0x00,
2782 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2783 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2784 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2785 };
2786
2787 static char right_handle_mask24[] = {
2788 0x7e, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00,
2789 0x00, 0xfe, 0x07, 0x00, 0x00, 0xc0, 0x4f, 0x00, 0x00, 0x80, 0xcf, 0x00, 0x00, 0x8e, 0xcf,
2790 0x01, 0x00, 0x9f, 0xcf, 0x03, 0x00, 0x9f, 0xcf, 0x07, 0x00, 0x9f, 0xcf, 0x0f, 0x00, 0x9f,
2791 0xcf, 0x1f, 0x00, 0x9f, 0xcf, 0x1f, 0x00, 0x9f, 0xcf, 0x0f, 0x00, 0x9f, 0xcf, 0x07, 0x00,
2792 0x9f, 0xcf, 0x03, 0x00, 0x8e, 0xcf, 0x01, 0x00, 0x80, 0xcf, 0x00, 0x00, 0xc0, 0x4f, 0x00,
2793 0x00, 0xfe, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01,
2794 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2795 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2796 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2797 };
2798
2799 static char right_handle_bitmap32[] = {
2800 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x0f,
2801 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
2802 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00,
2803 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x0c, 0x00, 0x3c, 0x3c, 0x1c, 0x00, 0x3c, 0x3c, 0x3c,
2804 0x00, 0x3c, 0x3c, 0x7c, 0x00, 0x3c, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x1c, 0x00, 0x3c, 0x3c,
2805 0x0c, 0x00, 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c,
2806 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00,
2807 0x80, 0x1f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00,
2808 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2809 };
2810
2811 static char right_handle_mask32[] = {
2812 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f,
2813 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00,
2814 0x7e, 0x00, 0x00, 0x3c, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x02, 0x00, 0x7e, 0x7e, 0x06, 0x00,
2815 0x7e, 0x7e, 0x0e, 0x00, 0x7e, 0x7e, 0x1e, 0x00, 0x7e, 0x7e, 0x3e, 0x00, 0x7e, 0x7e, 0x7e,
2816 0x00, 0x7e, 0x7e, 0xfe, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x3e, 0x00, 0x7e, 0x7e,
2817 0x1e, 0x00, 0x7e, 0x7e, 0x0e, 0x00, 0x7e, 0x7e, 0x06, 0x00, 0x7e, 0x7e, 0x02, 0x00, 0x7e,
2818 0x7e, 0x00, 0x00, 0x3c, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00,
2819 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00,
2820 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfc, 0x01, 0x00,
2821 };
2822
2823 static BCursor RightHandleCursor = {
2824 {right_handle_bitmap16, right_handle_bitmap24, right_handle_bitmap32},
2825 {right_handle_mask16, right_handle_mask24, right_handle_mask32},
2826 {{6, 7}, {10, 11}, {19, 15}},
2827 false,
2828 };
2829
2830 BlenderCursor[WM_CURSOR_RIGHT_HANDLE] = &RightHandleCursor;
2832
2833 /********************** Left Handle Cursor ***********************/
2835
2836 static char left_handle_bitmap16[] = {
2837 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x0e, 0x10, 0x0e, 0x18,
2838 0x0e, 0x1c, 0x0e, 0x1e, 0x0e, 0x1e, 0x0e, 0x1c, 0x0e, 0x18, 0x0e,
2839 0x10, 0x0e, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00,
2840 };
2841
2842 static char left_handle_mask16[] = {
2843 0x00, 0xff, 0x00, 0xff, 0x20, 0xff, 0x30, 0xff, 0x38, 0x1f, 0x3c,
2844 0x1f, 0x3e, 0x1f, 0x3f, 0x1f, 0x3f, 0x1f, 0x3e, 0x1f, 0x3c, 0x1f,
2845 0x38, 0x1f, 0x30, 0xff, 0x20, 0xff, 0x00, 0xff, 0x00, 0xff,
2846 };
2847
2848 static char left_handle_bitmap24[] = {
2849 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x0f,
2850 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x20, 0x1c,
2851 0x00, 0x00, 0x30, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x0e, 0x00, 0x3c, 0x1c, 0x0e, 0x00, 0x3e,
2852 0x1c, 0x0e, 0x00, 0x3e, 0x1c, 0x0e, 0x00, 0x3c, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x0e, 0x00,
2853 0x30, 0x1c, 0x0e, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00,
2854 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xc0,
2855 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2856 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2857 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2858 };
2859
2860 static char left_handle_mask24[] = {
2861 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x1f,
2862 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x40, 0x7e, 0x00, 0x00, 0x60, 0x3e, 0x00, 0x00, 0x70, 0x3e,
2863 0x0e, 0x00, 0x78, 0x3e, 0x1f, 0x00, 0x7c, 0x3e, 0x1f, 0x00, 0x7e, 0x3e, 0x1f, 0x00, 0x7f,
2864 0x3e, 0x1f, 0x00, 0x7f, 0x3e, 0x1f, 0x00, 0x7e, 0x3e, 0x1f, 0x00, 0x7c, 0x3e, 0x1f, 0x00,
2865 0x78, 0x3e, 0x1f, 0x00, 0x70, 0x3e, 0x0e, 0x00, 0x60, 0x3e, 0x00, 0x00, 0x40, 0x7e, 0x00,
2866 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0,
2867 0x1f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2868 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2869 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2870 };
2871
2872 static char left_handle_bitmap32[] = {
2873 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x3f,
2874 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c,
2875 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x20,
2876 0x3c, 0x3c, 0x00, 0x30, 0x3c, 0x3c, 0x00, 0x38, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x00,
2877 0x3e, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x00, 0x38, 0x3c, 0x3c, 0x00, 0x30, 0x3c, 0x3c,
2878 0x00, 0x20, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c,
2879 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
2880 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
2881 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
2882 };
2883
2884 static char left_handle_mask32[] = {
2885 0x00, 0x80, 0x3f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x7f,
2886 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7e,
2887 0x00, 0x00, 0x00, 0x7e, 0x3c, 0x00, 0x40, 0x7e, 0x7e, 0x00, 0x60, 0x7e, 0x7e, 0x00, 0x70,
2888 0x7e, 0x7e, 0x00, 0x78, 0x7e, 0x7e, 0x00, 0x7c, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x00,
2889 0x7f, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x7c, 0x7e, 0x7e, 0x00, 0x78, 0x7e, 0x7e,
2890 0x00, 0x70, 0x7e, 0x7e, 0x00, 0x60, 0x7e, 0x7e, 0x00, 0x40, 0x7e, 0x7e, 0x00, 0x00, 0x7e,
2891 0x7e, 0x00, 0x00, 0x7e, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00,
2892 0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 0x00,
2893 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00,
2894 };
2895
2896 static BCursor LeftHandleCursor = {
2897 {left_handle_bitmap16, left_handle_bitmap24, left_handle_bitmap32},
2898 {left_handle_mask16, left_handle_mask24, left_handle_mask32},
2899 {{9, 7}, {12, 11}, {12, 15}},
2900 false,
2901 };
2902
2903 BlenderCursor[WM_CURSOR_LEFT_HANDLE] = &LeftHandleCursor;
2905
2906 /********************** Both Handles Cursor ***********************/
2908
2909 static char both_handles_bitmap16[] = {
2910 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x60, 0x06, 0x60, 0x06, 0x64,
2911 0x26, 0x66, 0x66, 0x67, 0xe6, 0x67, 0xe6, 0x66, 0x66, 0x64, 0x26,
2912 0x60, 0x06, 0x60, 0x06, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00,
2913 };
2914
2915 static char both_handles_mask16[] = {
2916 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xfe,
2917 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f,
2918 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919 };
2920
2921 static char both_handles_bitmap24[] = {
2922 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0xfe, 0xc1, 0x3f,
2923 0x00, 0xe0, 0xc1, 0x03, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3,
2924 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x88, 0xe3, 0x08, 0x00, 0x8c, 0xe3, 0x18, 0x00, 0x8e,
2925 0xe3, 0x38, 0x00, 0x8e, 0xe3, 0x38, 0x00, 0x8c, 0xe3, 0x18, 0x00, 0x88, 0xe3, 0x08, 0x00,
2926 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0xc0, 0xe3, 0x01,
2927 0x00, 0xe0, 0xc1, 0x01, 0x00, 0xfe, 0xc1, 0x3f, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0x3e, 0x00,
2928 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2929 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2930 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2931 };
2932
2933 static char both_handles_mask24[] = {
2934 0x3e, 0x00, 0x3e, 0x00, 0xff, 0x80, 0x7f, 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xff, 0xe3, 0x7f,
2935 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0xd0, 0xf7,
2936 0x05, 0x00, 0xd8, 0xf7, 0x0d, 0x00, 0xdc, 0xf7, 0x1d, 0x00, 0xde, 0xf7, 0x3d, 0x00, 0xdf,
2937 0xf7, 0x7d, 0x00, 0xdf, 0xf7, 0x7d, 0x00, 0xde, 0xf7, 0x3d, 0x00, 0xdc, 0xf7, 0x1d, 0x00,
2938 0xd8, 0xf7, 0x0d, 0x00, 0xd0, 0xf7, 0x05, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0xe0, 0xf7, 0x03,
2939 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xff, 0xe3, 0x7f, 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xff, 0x80,
2940 0x7f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2941 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2942 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2943 };
2944
2945 static char both_handles_bitmap32[] = {
2946 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x80, 0x3f, 0xfc, 0x07, 0xe0, 0x3f, 0xfc, 0x0f, 0xf0,
2947 0x3f, 0xfc, 0x1f, 0xf8, 0x3f, 0x80, 0x1f, 0xf8, 0x01, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x3c,
2948 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x20,
2949 0x3c, 0x3c, 0x04, 0x30, 0x3c, 0x3c, 0x0c, 0x38, 0x3c, 0x3c, 0x1c, 0x3c, 0x3c, 0x3c, 0x3c,
2950 0x3e, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x38, 0x3c, 0x3c, 0x1c, 0x30, 0x3c, 0x3c,
2951 0x0c, 0x20, 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c,
2952 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x80,
2953 0x1f, 0xf8, 0x01, 0xfc, 0x1f, 0xf8, 0x3f, 0xfc, 0x0f, 0xf0, 0x3f, 0xfc, 0x07, 0xe0, 0x3f,
2954 0xfc, 0x01, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
2955 };
2956
2957 static char both_handles_mask32[] = {
2958 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0x07, 0xe0, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f, 0xfe, 0x1f, 0xf8,
2959 0x7f, 0xfe, 0x3f, 0xfc, 0x7f, 0xfc, 0x3f, 0xfc, 0x3f, 0x80, 0x7f, 0xfe, 0x01, 0x00, 0x7e,
2960 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x40, 0x7e, 0x7e, 0x02, 0x60, 0x7e, 0x7e, 0x06, 0x70,
2961 0x7e, 0x7e, 0x0e, 0x78, 0x7e, 0x7e, 0x1e, 0x7c, 0x7e, 0x7e, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e,
2962 0x7f, 0x7e, 0x7e, 0xfe, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x3e, 0x78, 0x7e, 0x7e,
2963 0x1e, 0x70, 0x7e, 0x7e, 0x0e, 0x60, 0x7e, 0x7e, 0x06, 0x40, 0x7e, 0x7e, 0x02, 0x00, 0x7e,
2964 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x80, 0x7f, 0xfe, 0x01, 0xfc,
2965 0x3f, 0xfc, 0x3f, 0xfe, 0x3f, 0xfc, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f,
2966 0xfe, 0x07, 0xe0, 0x7f, 0xfc, 0x01, 0x80, 0x3f,
2967 };
2968
2969 static BCursor BothHandlesCursor = {
2970 {both_handles_bitmap16, both_handles_bitmap24, both_handles_bitmap32},
2971 {both_handles_mask16, both_handles_mask24, both_handles_mask32},
2972 {{7, 7}, {11, 11}, {15, 15}},
2973 false,
2974 };
2975
2976 BlenderCursor[WM_CURSOR_BOTH_HANDLES] = &BothHandlesCursor;
2978
2979 /********************** Blade Cursor ***********************/
2981
2982 static char blade_bitmap16[] = {
2983 0x00, 0x00, 0x90, 0x00, 0xf8, 0x01, 0xdc, 0x03, 0xce, 0x07, 0xc4,
2984 0x0f, 0xbc, 0x1f, 0x7e, 0x3e, 0x7c, 0x7e, 0xf8, 0x3d, 0xf0, 0x23,
2985 0xe0, 0x73, 0xc0, 0x3b, 0x80, 0x1f, 0x00, 0x09, 0x00, 0x00,
2986 };
2987
2988 static char blade_mask16[] = {
2989 0x90, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07, 0xff, 0x0f, 0xfe,
2990 0x1f, 0xfe, 0x3f, 0xff, 0x7f, 0xfe, 0xff, 0xfc, 0x7f, 0xf8, 0x7f,
2991 0xf0, 0xff, 0xe0, 0x7f, 0xc0, 0x3f, 0x80, 0x1f, 0x00, 0x09,
2992 };
2993
2994 static char blade_bitmap24[] = {
2995 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00,
2996 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x1e, 0x3f, 0x00, 0x00, 0x0c, 0x7f, 0x00, 0x00, 0x0c, 0xfc,
2997 0x00, 0x00, 0x7e, 0xfc, 0x01, 0x00, 0x7e, 0xf8, 0x03, 0x00, 0xfc, 0xc1, 0x07, 0x00, 0xf8,
2998 0xc3, 0x0f, 0x00, 0xf0, 0xc3, 0x1f, 0x00, 0xe0, 0x83, 0x3f, 0x00, 0xc0, 0x1f, 0x7e, 0x00,
2999 0x80, 0x3f, 0x7e, 0x00, 0x00, 0x3f, 0x30, 0x00, 0x00, 0xfe, 0x30, 0x00, 0x00, 0xfc, 0x78,
3000 0x00, 0x00, 0xf8, 0x7c, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xc0,
3001 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3002 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3003 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3004 };
3005
3006 static char blade_mask24[] = {
3007 0x30, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00,
3008 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
3009 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfc,
3010 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x00,
3011 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff,
3012 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0,
3013 0x1f, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3014 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3015 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3016 };
3017
3018 static char blade_bitmap32[] = {
3019 0x00, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 0x00, 0xc0, 0x79, 0x00, 0x00, 0xe0, 0xff, 0x00,
3020 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xfc, 0x03, 0x00, 0x7c, 0xfc, 0x07, 0x00, 0x3e, 0xfe,
3021 0x0f, 0x00, 0x1c, 0xf8, 0x1f, 0x00, 0x98, 0xc8, 0x3f, 0x00, 0xf8, 0xc0, 0x7f, 0x00, 0xfc,
3022 0xe3, 0xff, 0x00, 0xfe, 0xc1, 0xff, 0x01, 0xfe, 0x89, 0xff, 0x03, 0xfc, 0x1f, 0xfc, 0x07,
3023 0xf8, 0x3f, 0xfc, 0x0f, 0xf0, 0x3f, 0xfc, 0x1f, 0xe0, 0x3f, 0xf8, 0x3f, 0xc0, 0xff, 0x91,
3024 0x7f, 0x80, 0xff, 0x83, 0x7f, 0x00, 0xff, 0xc7, 0x3f, 0x00, 0xfe, 0x03, 0x1f, 0x00, 0xfc,
3025 0x13, 0x19, 0x00, 0xf8, 0x1f, 0x38, 0x00, 0xf0, 0x7f, 0x7c, 0x00, 0xe0, 0x3f, 0x3e, 0x00,
3026 0xc0, 0x3f, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x9e, 0x03,
3027 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00,
3028 };
3029
3030 static char blade_mask32[] = {
3031 0x80, 0x30, 0x00, 0x00, 0xc0, 0x79, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x01,
3032 0x00, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xff, 0xff,
3033 0x1f, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x00, 0xfe,
3034 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x0f,
3035 0xfc, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff,
3036 0xff, 0xc0, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xfe,
3037 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf0, 0xff, 0x7f, 0x00,
3038 0xe0, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07,
3039 0x00, 0x00, 0x9e, 0x03, 0x00, 0x00, 0x0c, 0x01,
3040 };
3041
3042 static BCursor BladeCursor = {
3043 {blade_bitmap16, blade_bitmap24, blade_bitmap32},
3044 {blade_mask16, blade_mask24, blade_mask32},
3045 {{1, 4}, {1, 5}, {1, 7}},
3046 false,
3047 };
3048
3049 BlenderCursor[WM_CURSOR_BLADE] = &BladeCursor;
3051
3052 /********************** Put the cursors in the array ***********************/
3053
3054#ifndef NDEBUG
3055 /* Assert if any cursors are empty. */
3056 for (int i = 1; i < WM_CURSOR_NUM; i++) {
3057 if (i == WM_CURSOR_NONE) {
3058 continue;
3059 }
3060 BLI_assert(BlenderCursor[i] != nullptr);
3061 }
3062#endif
3063}
#define G_MAIN
@ G_DEBUG
#define BLI_assert(a)
Definition BLI_assert.h:46
#define BLI_assert_msg(a, msg)
Definition BLI_assert.h:53
unsigned char uchar
#define ELEM(...)
These structs are the foundation for all linked lists in the library system.
@ RGN_TYPE_WINDOW
@ RGN_TYPE_PREVIEW
GHOST C-API function and type declarations.
GHOST_TSuccess GHOST_SetCustomCursorShape(GHOST_WindowHandle windowhandle, uint8_t *bitmap, uint8_t *mask, int sizex, int sizey, int hotX, int hotY, bool canInvertColor)
GHOST_TSuccess GHOST_SetCursorShape(GHOST_WindowHandle windowhandle, GHOST_TStandardCursor cursorshape)
GHOST_TSuccess GHOST_SetCursorGrab(GHOST_WindowHandle windowhandle, GHOST_TGrabCursorMode mode, GHOST_TAxisFlag wrap_axis, const int bounds[4], const int mouse_ungrab_xy[2])
GHOST_TSuccess GHOST_SetCursorVisibility(GHOST_WindowHandle windowhandle, bool visible)
float GHOST_GetNativePixelSize(GHOST_WindowHandle windowhandle)
GHOST_TSuccess GHOST_HasCursorShape(GHOST_WindowHandle windowhandle, GHOST_TStandardCursor cursorshape)
GHOST_TStandardCursor
@ GHOST_kStandardCursorLeftHandle
@ GHOST_kStandardCursorHandClosed
@ GHOST_kStandardCursorHandOpen
@ GHOST_kStandardCursorZoomIn
@ GHOST_kStandardCursorVerticalSplit
@ GHOST_kStandardCursorCopy
@ GHOST_kStandardCursorWait
@ GHOST_kStandardCursorRightHandle
@ GHOST_kStandardCursorHorizontalSplit
@ GHOST_kStandardCursorStop
@ GHOST_kStandardCursorCrosshair
@ GHOST_kStandardCursorCustom
@ GHOST_kStandardCursorNSEWScroll
@ GHOST_kStandardCursorLeftRight
@ GHOST_kStandardCursorPencil
@ GHOST_kStandardCursorNSScroll
@ GHOST_kStandardCursorCrosshairA
@ GHOST_kStandardCursorUpDown
@ GHOST_kStandardCursorUpArrow
@ GHOST_kStandardCursorHandPoint
@ GHOST_kStandardCursorBothHandles
@ GHOST_kStandardCursorEyedropper
@ GHOST_kStandardCursorKnife
@ GHOST_kStandardCursorMove
@ GHOST_kStandardCursorCrosshairB
@ GHOST_kStandardCursorBlade
@ GHOST_kStandardCursorDownArrow
@ GHOST_kStandardCursorEraser
@ GHOST_kStandardCursorDefault
@ GHOST_kStandardCursorEWScroll
@ GHOST_kStandardCursorRightArrow
@ GHOST_kStandardCursorCrosshairC
@ GHOST_kStandardCursorZoomOut
@ GHOST_kStandardCursorText
@ GHOST_kStandardCursorLeftArrow
GHOST_TAxisFlag
@ GHOST_kAxisX
@ GHOST_kAxisY
@ GHOST_kAxisNone
@ GHOST_kSuccess
Definition GHOST_Types.h:80
GHOST_TGrabCursorMode
@ GHOST_kGrabWrap
@ GHOST_kGrabDisable
@ GHOST_kGrabHide
@ GHOST_kGrabNormal
#define WM_CURSOR_DEFAULT_LOGICAL_SIZE
Definition WM_api.hh:531
@ KM_PRESS
Definition WM_types.hh:308
eWM_CursorWrapAxis
Definition WM_types.hh:225
@ WM_CURSOR_WRAP_X
Definition WM_types.hh:227
@ WM_CURSOR_WRAP_Y
Definition WM_types.hh:228
@ WM_CURSOR_WRAP_NONE
Definition WM_types.hh:226
#define U
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
#define G(x, y, z)
float wrap(float value, float max, float min)
Definition node_math.h:71
char * bitmap[CURSOR_SIZE_NUM]
Definition wm_cursors.cc:48
char * mask[CURSOR_SIZE_NUM]
Definition wm_cursors.cc:49
char hotspot[CURSOR_SIZE_NUM][2]
Definition wm_cursors.cc:50
bool can_invert_color
Definition wm_cursors.cc:51
void * first
struct bToolRef * tool
ScrArea_Runtime runtime
bToolRef_Runtime * runtime
int ymin
int ymax
int xmin
int xmax
wmEventType type
Definition WM_types.hh:754
short val
Definition WM_types.hh:756
wmTabletData tablet
Definition WM_types.hh:783
char is_motion_absolute
Definition WM_types.hh:709
struct wmEvent * eventstate
struct wmWindow * next
i
Definition text_draw.cc:230
void WM_cursor_modal_set(wmWindow *win, int val)
void WM_cursor_set(wmWindow *win, int curs)
bool wm_cursor_arrow_move(wmWindow *win, const wmEvent *event)
#define BEGIN_CURSOR_BLOCK
static BCursor * BlenderCursor[WM_CURSOR_NUM]
Definition wm_cursors.cc:54
static void window_set_custom_cursor(wmWindow *win, BCursor *cursor)
bool WM_cursor_set_from_tool(wmWindow *win, const ScrArea *area, const ARegion *region)
static bool wm_cursor_time_large(wmWindow *win, uint32_t nr)
void WM_cursor_modal_restore(wmWindow *win)
static GHOST_TStandardCursor convert_to_ghost_standard_cursor(WMCursorType curs)
Definition wm_cursors.cc:57
void WM_cursor_wait(bool val)
#define END_CURSOR_BLOCK
#define CURSOR_SIZE_NUM
Definition wm_cursors.cc:37
void WM_cursor_time(wmWindow *win, int nr)
void wm_init_cursor_data()
static void wm_cursor_time_small(wmWindow *win, uint32_t nr)
CursorSize
Definition wm_cursors.cc:29
@ CURSOR_SIZE_32
Definition wm_cursors.cc:35
@ CURSOR_SIZE_16
Definition wm_cursors.cc:31
@ CURSOR_SIZE_24
Definition wm_cursors.cc:33
static void wm_cursor_warp_relative(wmWindow *win, int x, int y)
static const uchar cursor_size_px[CURSOR_SIZE_NUM]
Definition wm_cursors.cc:39
static CursorSize window_size_calc()
void WM_cursor_grab_enable(wmWindow *win, const eWM_CursorWrapAxis wrap, const rcti *wrap_region, const bool hide)
void WM_cursor_grab_disable(wmWindow *win, const int mouse_ungrab_xy[2])
WMCursorType
Definition wm_cursors.hh:14
@ WM_CURSOR_WAIT
Definition wm_cursors.hh:17
@ WM_CURSOR_COPY
Definition wm_cursors.hh:20
@ WM_CURSOR_HAND
Definition wm_cursors.hh:22
@ WM_CURSOR_NSEW_SCROLL
Definition wm_cursors.hh:52
@ WM_CURSOR_CROSS
Definition wm_cursors.hh:26
@ WM_CURSOR_DEFAULT
Definition wm_cursors.hh:15
@ WM_CURSOR_RIGHT_HANDLE
Definition wm_cursors.hh:65
@ WM_CURSOR_HAND_CLOSED
Definition wm_cursors.hh:23
@ WM_CURSOR_BOTH_HANDLES
Definition wm_cursors.hh:66
@ WM_CURSOR_H_SPLIT
Definition wm_cursors.hh:41
@ WM_CURSOR_PAINT
Definition wm_cursors.hh:27
@ WM_CURSOR_S_ARROW
Definition wm_cursors.hh:48
@ WM_CURSOR_Y_MOVE
Definition wm_cursors.hh:40
@ WM_CURSOR_PICK_AREA
Definition wm_cursors.hh:62
@ WM_CURSOR_TEXT_EDIT
Definition wm_cursors.hh:16
@ WM_CURSOR_PAINT_BRUSH
Definition wm_cursors.hh:34
@ WM_CURSOR_NS_SCROLL
Definition wm_cursors.hh:53
@ WM_CURSOR_MOVE
Definition wm_cursors.hh:21
@ WM_CURSOR_EW_ARROW
Definition wm_cursors.hh:46
@ WM_CURSOR_E_ARROW
Definition wm_cursors.hh:49
@ WM_CURSOR_DOT
Definition wm_cursors.hh:28
@ WM_CURSOR_ZOOM_OUT
Definition wm_cursors.hh:57
@ WM_CURSOR_EDIT
Definition wm_cursors.hh:19
@ WM_CURSOR_LEFT_HANDLE
Definition wm_cursors.hh:64
@ WM_CURSOR_ZOOM_IN
Definition wm_cursors.hh:56
@ WM_CURSOR_BLADE
Definition wm_cursors.hh:32
@ WM_CURSOR_N_ARROW
Definition wm_cursors.hh:47
@ WM_CURSOR_KNIFE
Definition wm_cursors.hh:31
@ WM_CURSOR_NW_ARROW
Definition wm_cursors.hh:44
@ WM_CURSOR_STOP
Definition wm_cursors.hh:18
@ WM_CURSOR_CROSSC
Definition wm_cursors.hh:29
@ WM_CURSOR_EYEDROPPER
Definition wm_cursors.hh:36
@ WM_CURSOR_VERTEX_LOOP
Definition wm_cursors.hh:33
@ WM_CURSOR_ERASER
Definition wm_cursors.hh:35
@ WM_CURSOR_HAND_POINT
Definition wm_cursors.hh:24
@ WM_CURSOR_EW_SCROLL
Definition wm_cursors.hh:54
@ WM_CURSOR_V_SPLIT
Definition wm_cursors.hh:42
@ WM_CURSOR_SWAP_AREA
Definition wm_cursors.hh:38
@ WM_CURSOR_MUTE
Definition wm_cursors.hh:60
@ WM_CURSOR_NONE
Definition wm_cursors.hh:59
@ WM_CURSOR_X_MOVE
Definition wm_cursors.hh:39
@ WM_CURSOR_W_ARROW
Definition wm_cursors.hh:50
@ WM_CURSOR_NUM
Definition wm_cursors.hh:69
@ WM_CURSOR_NS_ARROW
Definition wm_cursors.hh:45
@ EVT_DOWNARROWKEY
@ EVT_RIGHTARROWKEY
@ EVT_UPARROWKEY
@ EVT_LEFTARROWKEY
void wm_cursor_position_to_ghost_screen_coords(wmWindow *win, int *x, int *y)
void WM_cursor_warp(wmWindow *win, int x, int y)
bool wm_cursor_position_get(wmWindow *win, int *r_x, int *r_y)
uint WM_cursor_preferred_logical_size()