From ac457b983680af44f386b74ff96e63e3436b906f Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Tue, 1 Jul 2025 04:59:49 +0200 Subject: [PATCH] UI: SVG Icons as Internal Custom Mouse Cursors This PR replaces our current custom mouse cursors (defined in wm_cursors.cc using bitmaps and masks that we edit with a python program) with SVG sources that are rasterized at the exact size when needed. For Windows this would also replace the 29 platform-specific "cur" files, although this PR does not actually remove those. For Linux this creates the same kind of cursor as now (1bpp XBitMap) but at a better size. Pull Request: https://projects.blender.org/blender/blender/pulls/140990 --- intern/ghost/GHOST_C-api.h | 8 +- intern/ghost/GHOST_Types.h | 8 +- intern/ghost/intern/GHOST_SystemCocoa.mm | 2 + intern/ghost/intern/GHOST_SystemHeadless.hh | 3 +- intern/ghost/intern/GHOST_SystemSDL.cc | 2 + intern/ghost/intern/GHOST_SystemWayland.cc | 2 + intern/ghost/intern/GHOST_SystemWin32.cc | 34 + intern/ghost/intern/GHOST_SystemWin32.hh | 2 + intern/ghost/intern/GHOST_SystemX11.cc | 2 + intern/ghost/intern/GHOST_WindowWin32.cc | 117 +- release/datafiles/cursors/cursor_blade.svg | 111 + .../datafiles/cursors/cursor_both_handles.svg | 267 ++ release/datafiles/cursors/cursor_crossc.svg | 260 ++ .../datafiles/cursors/cursor_crosshair.svg | 197 ++ release/datafiles/cursors/cursor_dot.svg | 122 + release/datafiles/cursors/cursor_e_arrow.svg | 135 + release/datafiles/cursors/cursor_eraser.svg | 123 + .../datafiles/cursors/cursor_ew_scroll.svg | 141 + .../datafiles/cursors/cursor_eyedropper.svg | 140 + release/datafiles/cursors/cursor_h_split.svg | 143 + release/datafiles/cursors/cursor_hand.svg | 147 + .../datafiles/cursors/cursor_hand_closed.svg | 152 + .../datafiles/cursors/cursor_hand_point.svg | 143 + release/datafiles/cursors/cursor_knife.svg | 116 + .../datafiles/cursors/cursor_left_handle.svg | 262 ++ release/datafiles/cursors/cursor_mute.svg | 204 ++ release/datafiles/cursors/cursor_n_arrow.svg | 125 + .../datafiles/cursors/cursor_ns_scroll.svg | 141 + .../datafiles/cursors/cursor_nsew_scroll.svg | 148 + release/datafiles/cursors/cursor_paint.svg | 214 ++ release/datafiles/cursors/cursor_pencil.svg | 116 + .../datafiles/cursors/cursor_pick_area.svg | 132 + release/datafiles/cursors/cursor_pointer.svg | 108 + .../datafiles/cursors/cursor_right_handle.svg | 262 ++ release/datafiles/cursors/cursor_s_arrow.svg | 125 + release/datafiles/cursors/cursor_stop.svg | 110 + .../datafiles/cursors/cursor_swap_area.svg | 140 + .../datafiles/cursors/cursor_text_edit.svg | 130 + release/datafiles/cursors/cursor_v_split.svg | 143 + .../datafiles/cursors/cursor_vertex_loop.svg | 210 ++ release/datafiles/cursors/cursor_w_arrow.svg | 130 + release/datafiles/cursors/cursor_wait.svg | 121 + release/datafiles/cursors/cursor_x_move.svg | 240 ++ release/datafiles/cursors/cursor_y_move.svg | 240 ++ release/datafiles/cursors/cursor_zoom_in.svg | 156 + release/datafiles/cursors/cursor_zoom_out.svg | 157 + .../blender/editors/datafiles/CMakeLists.txt | 59 + .../editors/datafiles/svg_cursors.h.in | 15 + source/blender/windowmanager/CMakeLists.txt | 10 + source/blender/windowmanager/WM_api.hh | 2 + .../windowmanager/intern/wm_cursors.cc | 2792 ++--------------- .../blender/windowmanager/intern/wm_window.cc | 3 + 52 files changed, 6242 insertions(+), 2630 deletions(-) create mode 100644 release/datafiles/cursors/cursor_blade.svg create mode 100644 release/datafiles/cursors/cursor_both_handles.svg create mode 100644 release/datafiles/cursors/cursor_crossc.svg create mode 100644 release/datafiles/cursors/cursor_crosshair.svg create mode 100644 release/datafiles/cursors/cursor_dot.svg create mode 100644 release/datafiles/cursors/cursor_e_arrow.svg create mode 100644 release/datafiles/cursors/cursor_eraser.svg create mode 100644 release/datafiles/cursors/cursor_ew_scroll.svg create mode 100644 release/datafiles/cursors/cursor_eyedropper.svg create mode 100644 release/datafiles/cursors/cursor_h_split.svg create mode 100644 release/datafiles/cursors/cursor_hand.svg create mode 100644 release/datafiles/cursors/cursor_hand_closed.svg create mode 100644 release/datafiles/cursors/cursor_hand_point.svg create mode 100644 release/datafiles/cursors/cursor_knife.svg create mode 100644 release/datafiles/cursors/cursor_left_handle.svg create mode 100644 release/datafiles/cursors/cursor_mute.svg create mode 100644 release/datafiles/cursors/cursor_n_arrow.svg create mode 100644 release/datafiles/cursors/cursor_ns_scroll.svg create mode 100644 release/datafiles/cursors/cursor_nsew_scroll.svg create mode 100644 release/datafiles/cursors/cursor_paint.svg create mode 100644 release/datafiles/cursors/cursor_pencil.svg create mode 100644 release/datafiles/cursors/cursor_pick_area.svg create mode 100644 release/datafiles/cursors/cursor_pointer.svg create mode 100644 release/datafiles/cursors/cursor_right_handle.svg create mode 100644 release/datafiles/cursors/cursor_s_arrow.svg create mode 100644 release/datafiles/cursors/cursor_stop.svg create mode 100644 release/datafiles/cursors/cursor_swap_area.svg create mode 100644 release/datafiles/cursors/cursor_text_edit.svg create mode 100644 release/datafiles/cursors/cursor_v_split.svg create mode 100644 release/datafiles/cursors/cursor_vertex_loop.svg create mode 100644 release/datafiles/cursors/cursor_w_arrow.svg create mode 100644 release/datafiles/cursors/cursor_wait.svg create mode 100644 release/datafiles/cursors/cursor_x_move.svg create mode 100644 release/datafiles/cursors/cursor_y_move.svg create mode 100644 release/datafiles/cursors/cursor_zoom_in.svg create mode 100644 release/datafiles/cursors/cursor_zoom_out.svg create mode 100644 source/blender/editors/datafiles/svg_cursors.h.in diff --git a/intern/ghost/GHOST_C-api.h b/intern/ghost/GHOST_C-api.h index a169d96eb07..e156f501d17 100644 --- a/intern/ghost/GHOST_C-api.h +++ b/intern/ghost/GHOST_C-api.h @@ -324,10 +324,14 @@ extern GHOST_TSuccess GHOST_HasCursorShape(GHOST_WindowHandle windowhandle, GHOST_TStandardCursor cursorshape); /** - * Set the shape of the cursor to a custom cursor of specified size. + * Set the shape of the cursor to a custom cursor of specified size. Two + * formats are supported. XBitMap will always be a 1bpp 32x32 bitmap and mask. + * If mask is nullptr the bitmap should be assumed to be 32-bit RGBA bitmap of + * any size and dimension up to 128x128. RGBA data will only supplied if + * WM_CAPABILITY_RGBA_CURSORS capability flag is set. * \param windowhandle: The handle to the window. * \param bitmap: The bitmap data for the cursor. - * \param mask: The mask data for the cursor. + * \param mask: The mask for 1bpp cursor, nullptr if RGBA cursor. * \param sizex: The width of the cursor. * \param sizey: The height of the cursor. * \param hotX: The X coordinate of the cursor hot-spot. diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h index 3763ab01af1..3ae984af100 100644 --- a/intern/ghost/GHOST_Types.h +++ b/intern/ghost/GHOST_Types.h @@ -128,6 +128,11 @@ typedef enum { * Support for the "Hyper" modifier key. */ GHOST_kCapabilityKeyboardHyperKey = (1 << 9), + /** + * Support for creation of RGBA mouse cursors. This flag is likely + * to be temporary as our intention is to implement on all platforms. + */ + GHOST_kCapabilityRGBACursors = (1 << 10), } GHOST_TCapabilityFlag; @@ -140,7 +145,8 @@ typedef enum { GHOST_kCapabilityPrimaryClipboard | GHOST_kCapabilityGPUReadFrontBuffer | \ GHOST_kCapabilityClipboardImages | GHOST_kCapabilityDesktopSample | \ GHOST_kCapabilityInputIME | GHOST_kCapabilityTrackpadPhysicalDirection | \ - GHOST_kCapabilityWindowDecorationStyles | GHOST_kCapabilityKeyboardHyperKey) + GHOST_kCapabilityWindowDecorationStyles | GHOST_kCapabilityKeyboardHyperKey | \ + GHOST_kCapabilityRGBACursors) /* Xtilt and Ytilt represent how much the pen is tilted away from * vertically upright in either the X or Y direction, with X and Y the diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 96fb3707a34..024e7fceb26 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -981,6 +981,8 @@ GHOST_TCapabilityFlag GHOST_SystemCocoa::getCapabilities() const ~( /* Cocoa has no support for a primary selection clipboard. */ GHOST_kCapabilityPrimaryClipboard | + /* No support yet for RGBA mouse cursors. */ + GHOST_kCapabilityRGBACursors | /* Cocoa doesn't define a Hyper modifier key, * it's possible another modifier could be optionally used in it's place. */ GHOST_kCapabilityKeyboardHyperKey)); diff --git a/intern/ghost/intern/GHOST_SystemHeadless.hh b/intern/ghost/intern/GHOST_SystemHeadless.hh index 40e8f597366..e41bf7f3655 100644 --- a/intern/ghost/intern/GHOST_SystemHeadless.hh +++ b/intern/ghost/intern/GHOST_SystemHeadless.hh @@ -54,7 +54,8 @@ class GHOST_SystemHeadless : public GHOST_System { ~(GHOST_kCapabilityWindowPosition | GHOST_kCapabilityCursorWarp | GHOST_kCapabilityPrimaryClipboard | GHOST_kCapabilityDesktopSample | GHOST_kCapabilityClipboardImages | GHOST_kCapabilityInputIME | - GHOST_kCapabilityWindowDecorationStyles | GHOST_kCapabilityKeyboardHyperKey)); + GHOST_kCapabilityWindowDecorationStyles | GHOST_kCapabilityKeyboardHyperKey | + GHOST_kCapabilityRGBACursors)); } char *getClipboard(bool /*selection*/) const override { diff --git a/intern/ghost/intern/GHOST_SystemSDL.cc b/intern/ghost/intern/GHOST_SystemSDL.cc index ef31c145745..16fbbf51b23 100644 --- a/intern/ghost/intern/GHOST_SystemSDL.cc +++ b/intern/ghost/intern/GHOST_SystemSDL.cc @@ -793,6 +793,8 @@ GHOST_TCapabilityFlag GHOST_SystemSDL::getCapabilities() const GHOST_kCapabilityClipboardImages | /* No support yet for IME input methods. */ GHOST_kCapabilityInputIME | + /* No support yet for RGBA mouse cursors. */ + GHOST_kCapabilityRGBACursors | /* No support for window decoration styles. */ GHOST_kCapabilityWindowDecorationStyles | /* No support for a Hyper modifier key. */ diff --git a/intern/ghost/intern/GHOST_SystemWayland.cc b/intern/ghost/intern/GHOST_SystemWayland.cc index 1c4db5349be..c37a6a108da 100644 --- a/intern/ghost/intern/GHOST_SystemWayland.cc +++ b/intern/ghost/intern/GHOST_SystemWayland.cc @@ -8841,6 +8841,8 @@ GHOST_TCapabilityFlag GHOST_SystemWayland::getCapabilities() const * In all likelihood, this back-end will eventually need to support client-side * decorations, see #113795. */ GHOST_kCapabilityWindowDecorationStyles | + /* No support for RGBA mouse cursors yet, but will be added soon. */ + GHOST_kCapabilityRGBACursors | /* This flag will eventually be removed. */ ((has_wl_trackpad_physical_direction == 1) ? 0 : diff --git a/intern/ghost/intern/GHOST_SystemWin32.cc b/intern/ghost/intern/GHOST_SystemWin32.cc index 7055a406deb..b977c9584d0 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cc +++ b/intern/ghost/intern/GHOST_SystemWin32.cc @@ -509,6 +509,40 @@ GHOST_TSuccess GHOST_SystemWin32::getPixelAtCursor(float r_color[3]) const return GHOST_kSuccess; } +uint32_t GHOST_SystemWin32::getCursorPreferredLogicalSize() const +{ + int size = -1; + + HKEY hKey; + if (RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\\Cursors", 0, KEY_READ, &hKey) == + ERROR_SUCCESS) + { + DWORD cursorSizeSetting; + DWORD setting_size = sizeof(cursorSizeSetting); + if (RegQueryValueEx(hKey, + "CursorBaseSize", + nullptr, + nullptr, + reinterpret_cast(&cursorSizeSetting), + &setting_size) == ERROR_SUCCESS && + setting_size == sizeof(cursorSizeSetting)) + { + size = cursorSizeSetting; + } + RegCloseKey(hKey); + } + + if (size == -1) { + size = GetSystemMetrics(SM_CXCURSOR); + } + + /* Default size is 32 even though the cursor is smaller than this. Scale + * so that 32 returns 21 to better match our size to OS-supplied cursors. */ + size = int(roundf(float(size) * 0.65f)); + + return size; +} + GHOST_IWindow *GHOST_SystemWin32::getWindowUnderCursor(int32_t /*x*/, int32_t /*y*/) { /* Get cursor position from the OS. Do not use the supplied positions as those diff --git a/intern/ghost/intern/GHOST_SystemWin32.hh b/intern/ghost/intern/GHOST_SystemWin32.hh index abb91d67de2..b513c2b4f78 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.hh +++ b/intern/ghost/intern/GHOST_SystemWin32.hh @@ -192,6 +192,8 @@ class GHOST_SystemWin32 : public GHOST_System { */ GHOST_TSuccess getPixelAtCursor(float r_color[3]) const override; + uint32_t getCursorPreferredLogicalSize() const override; + /*************************************************************************************** ** Access to mouse button and keyboard states. ***************************************************************************************/ diff --git a/intern/ghost/intern/GHOST_SystemX11.cc b/intern/ghost/intern/GHOST_SystemX11.cc index 9c64c63dd50..e83386ec3f8 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cc +++ b/intern/ghost/intern/GHOST_SystemX11.cc @@ -1824,6 +1824,8 @@ GHOST_TCapabilityFlag GHOST_SystemX11::getCapabilities() const GHOST_kCapabilityClipboardImages | /* No support yet for IME input methods. */ GHOST_kCapabilityInputIME | + /* No support yet for RGBA mouse cursors. */ + GHOST_kCapabilityRGBACursors | /* No support for window decoration styles. */ GHOST_kCapabilityWindowDecorationStyles)); } diff --git a/intern/ghost/intern/GHOST_WindowWin32.cc b/intern/ghost/intern/GHOST_WindowWin32.cc index 82f5edf99c1..6f5e21fd793 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cc +++ b/intern/ghost/intern/GHOST_WindowWin32.cc @@ -1166,38 +1166,99 @@ GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(uint8_t *bitmap, int hotY, bool /*canInvertColor*/) { - uint32_t andData[32]; - uint32_t xorData[32]; - uint32_t fullBitRow, fullMaskRow; - int x, y, cols; + if (mask) { + /* Old 1bpp XBitMap bitmap and mask. */ + uint32_t andData[32]; + uint32_t xorData[32]; + uint32_t fullBitRow, fullMaskRow; + int x, y, cols; - cols = sizeX / 8; /* Number of whole bytes per row (width of bitmap/mask). */ - if (sizeX % 8) { - cols++; - } - - if (m_customCursor) { - DestroyCursor(m_customCursor); - m_customCursor = nullptr; - } - - memset(&andData, 0xFF, sizeof(andData)); - memset(&xorData, 0, sizeof(xorData)); - - for (y = 0; y < sizeY; y++) { - fullBitRow = 0; - fullMaskRow = 0; - for (x = cols - 1; x >= 0; x--) { - fullBitRow <<= 8; - fullMaskRow <<= 8; - fullBitRow |= uns8ReverseBits(bitmap[cols * y + x]); - fullMaskRow |= uns8ReverseBits(mask[cols * y + x]); + cols = sizeX / 8; /* Number of whole bytes per row (width of bitmap/mask). */ + if (sizeX % 8) { + cols++; } - xorData[y] = fullBitRow & fullMaskRow; - andData[y] = ~fullMaskRow; + + if (m_customCursor) { + DestroyCursor(m_customCursor); + m_customCursor = nullptr; + } + + memset(&andData, 0xFF, sizeof(andData)); + memset(&xorData, 0, sizeof(xorData)); + + for (y = 0; y < sizeY; y++) { + fullBitRow = 0; + fullMaskRow = 0; + for (x = cols - 1; x >= 0; x--) { + fullBitRow <<= 8; + fullMaskRow <<= 8; + fullBitRow |= uns8ReverseBits(bitmap[cols * y + x]); + fullMaskRow |= uns8ReverseBits(mask[cols * y + x]); + } + xorData[y] = fullBitRow & fullMaskRow; + andData[y] = ~fullMaskRow; + } + + m_customCursor = ::CreateCursor(::GetModuleHandle(0), hotX, hotY, 32, 32, andData, xorData); + + if (!m_customCursor) { + return GHOST_kFailure; + } + + if (::GetForegroundWindow() == m_hWnd) { + loadCursor(getCursorVisibility(), GHOST_kStandardCursorCustom); + } + + return GHOST_kSuccess; } - m_customCursor = ::CreateCursor(::GetModuleHandle(0), hotX, hotY, 32, 32, andData, xorData); + /* New format: RGBA bitmap, size up to 128x128. */ + + BITMAPV5HEADER header; + memset(&header, 0, sizeof(BITMAPV5HEADER)); + header.bV5Size = sizeof(BITMAPV5HEADER); + header.bV5Width = (LONG)sizeX; + header.bV5Height = (LONG)sizeY; + header.bV5Planes = 1; + header.bV5BitCount = 32; + header.bV5Compression = BI_BITFIELDS; + header.bV5RedMask = 0x00FF0000; + header.bV5GreenMask = 0x0000FF00; + header.bV5BlueMask = 0x000000FF; + header.bV5AlphaMask = 0xFF000000; + + HDC hdc = GetDC(m_hWnd); + void *bits = NULL; + HBITMAP bmp = CreateDIBSection( + hdc, (BITMAPINFO *)&header, DIB_RGB_COLORS, (void **)&bits, NULL, (DWORD)0); + ReleaseDC(NULL, hdc); + + uint32_t *ptr = (uint32_t *)bits; + char w = sizeX; + char h = sizeY; + for (int y = h - 1; y >= 0; y--) { + for (int x = 0; x < w; x++) { + int i = (y * w * 4) + (x * 4); + uint32_t r = bitmap[i]; + uint32_t g = bitmap[i + 1]; + uint32_t b = bitmap[i + 2]; + uint32_t a = bitmap[i + 3]; + *ptr++ = (a << 24) | (r << 16) | (g << 8) | b; + } + } + + HBITMAP empty_mask = CreateBitmap(sizeX, sizeY, 1, 1, NULL); + ICONINFO icon_info; + icon_info.fIcon = FALSE; + icon_info.xHotspot = (DWORD)hotX; + icon_info.yHotspot = (DWORD)hotY; + icon_info.hbmMask = empty_mask; + icon_info.hbmColor = bmp; + + m_customCursor = CreateIconIndirect(&icon_info); + DeleteObject(bmp); + DeleteObject(empty_mask); + if (!m_customCursor) { return GHOST_kFailure; } diff --git a/release/datafiles/cursors/cursor_blade.svg b/release/datafiles/cursors/cursor_blade.svg new file mode 100644 index 00000000000..e7158c84cee --- /dev/null +++ b/release/datafiles/cursors/cursor_blade.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_both_handles.svg b/release/datafiles/cursors/cursor_both_handles.svg new file mode 100644 index 00000000000..ab5bb91ae0f --- /dev/null +++ b/release/datafiles/cursors/cursor_both_handles.svg @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_crossc.svg b/release/datafiles/cursors/cursor_crossc.svg new file mode 100644 index 00000000000..bdfe29f7c50 --- /dev/null +++ b/release/datafiles/cursors/cursor_crossc.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_crosshair.svg b/release/datafiles/cursors/cursor_crosshair.svg new file mode 100644 index 00000000000..d2bbadcef8f --- /dev/null +++ b/release/datafiles/cursors/cursor_crosshair.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_dot.svg b/release/datafiles/cursors/cursor_dot.svg new file mode 100644 index 00000000000..4832c8bf71f --- /dev/null +++ b/release/datafiles/cursors/cursor_dot.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_e_arrow.svg b/release/datafiles/cursors/cursor_e_arrow.svg new file mode 100644 index 00000000000..4c24c9cb9b8 --- /dev/null +++ b/release/datafiles/cursors/cursor_e_arrow.svg @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_eraser.svg b/release/datafiles/cursors/cursor_eraser.svg new file mode 100644 index 00000000000..e606ed00b05 --- /dev/null +++ b/release/datafiles/cursors/cursor_eraser.svg @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_ew_scroll.svg b/release/datafiles/cursors/cursor_ew_scroll.svg new file mode 100644 index 00000000000..b5674319ccc --- /dev/null +++ b/release/datafiles/cursors/cursor_ew_scroll.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_eyedropper.svg b/release/datafiles/cursors/cursor_eyedropper.svg new file mode 100644 index 00000000000..ba9d0ac65ef --- /dev/null +++ b/release/datafiles/cursors/cursor_eyedropper.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_h_split.svg b/release/datafiles/cursors/cursor_h_split.svg new file mode 100644 index 00000000000..5de2aecb675 --- /dev/null +++ b/release/datafiles/cursors/cursor_h_split.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_hand.svg b/release/datafiles/cursors/cursor_hand.svg new file mode 100644 index 00000000000..6926c106050 --- /dev/null +++ b/release/datafiles/cursors/cursor_hand.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_hand_closed.svg b/release/datafiles/cursors/cursor_hand_closed.svg new file mode 100644 index 00000000000..99b5a17b6d4 --- /dev/null +++ b/release/datafiles/cursors/cursor_hand_closed.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_hand_point.svg b/release/datafiles/cursors/cursor_hand_point.svg new file mode 100644 index 00000000000..d2dc93b2297 --- /dev/null +++ b/release/datafiles/cursors/cursor_hand_point.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_knife.svg b/release/datafiles/cursors/cursor_knife.svg new file mode 100644 index 00000000000..b128ac5b631 --- /dev/null +++ b/release/datafiles/cursors/cursor_knife.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_left_handle.svg b/release/datafiles/cursors/cursor_left_handle.svg new file mode 100644 index 00000000000..167f1c9f4ce --- /dev/null +++ b/release/datafiles/cursors/cursor_left_handle.svg @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_mute.svg b/release/datafiles/cursors/cursor_mute.svg new file mode 100644 index 00000000000..c8bb34c8f7c --- /dev/null +++ b/release/datafiles/cursors/cursor_mute.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_n_arrow.svg b/release/datafiles/cursors/cursor_n_arrow.svg new file mode 100644 index 00000000000..403f7d2fd5a --- /dev/null +++ b/release/datafiles/cursors/cursor_n_arrow.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_ns_scroll.svg b/release/datafiles/cursors/cursor_ns_scroll.svg new file mode 100644 index 00000000000..3ee01b20126 --- /dev/null +++ b/release/datafiles/cursors/cursor_ns_scroll.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_nsew_scroll.svg b/release/datafiles/cursors/cursor_nsew_scroll.svg new file mode 100644 index 00000000000..cd5bc17bdad --- /dev/null +++ b/release/datafiles/cursors/cursor_nsew_scroll.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_paint.svg b/release/datafiles/cursors/cursor_paint.svg new file mode 100644 index 00000000000..52aaf726700 --- /dev/null +++ b/release/datafiles/cursors/cursor_paint.svg @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_pencil.svg b/release/datafiles/cursors/cursor_pencil.svg new file mode 100644 index 00000000000..c40d907361e --- /dev/null +++ b/release/datafiles/cursors/cursor_pencil.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_pick_area.svg b/release/datafiles/cursors/cursor_pick_area.svg new file mode 100644 index 00000000000..4ff3c33232c --- /dev/null +++ b/release/datafiles/cursors/cursor_pick_area.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_pointer.svg b/release/datafiles/cursors/cursor_pointer.svg new file mode 100644 index 00000000000..8f4af9f9c1b --- /dev/null +++ b/release/datafiles/cursors/cursor_pointer.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_right_handle.svg b/release/datafiles/cursors/cursor_right_handle.svg new file mode 100644 index 00000000000..8645b4984ad --- /dev/null +++ b/release/datafiles/cursors/cursor_right_handle.svg @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_s_arrow.svg b/release/datafiles/cursors/cursor_s_arrow.svg new file mode 100644 index 00000000000..f188605f7d5 --- /dev/null +++ b/release/datafiles/cursors/cursor_s_arrow.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_stop.svg b/release/datafiles/cursors/cursor_stop.svg new file mode 100644 index 00000000000..2c990f02163 --- /dev/null +++ b/release/datafiles/cursors/cursor_stop.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_swap_area.svg b/release/datafiles/cursors/cursor_swap_area.svg new file mode 100644 index 00000000000..c89b6287aed --- /dev/null +++ b/release/datafiles/cursors/cursor_swap_area.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_text_edit.svg b/release/datafiles/cursors/cursor_text_edit.svg new file mode 100644 index 00000000000..c7ceff64a60 --- /dev/null +++ b/release/datafiles/cursors/cursor_text_edit.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_v_split.svg b/release/datafiles/cursors/cursor_v_split.svg new file mode 100644 index 00000000000..d920ce7e89b --- /dev/null +++ b/release/datafiles/cursors/cursor_v_split.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_vertex_loop.svg b/release/datafiles/cursors/cursor_vertex_loop.svg new file mode 100644 index 00000000000..8bf16920528 --- /dev/null +++ b/release/datafiles/cursors/cursor_vertex_loop.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_w_arrow.svg b/release/datafiles/cursors/cursor_w_arrow.svg new file mode 100644 index 00000000000..6868db167f2 --- /dev/null +++ b/release/datafiles/cursors/cursor_w_arrow.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_wait.svg b/release/datafiles/cursors/cursor_wait.svg new file mode 100644 index 00000000000..e0a5cec932a --- /dev/null +++ b/release/datafiles/cursors/cursor_wait.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_x_move.svg b/release/datafiles/cursors/cursor_x_move.svg new file mode 100644 index 00000000000..8109b9b4d2d --- /dev/null +++ b/release/datafiles/cursors/cursor_x_move.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_y_move.svg b/release/datafiles/cursors/cursor_y_move.svg new file mode 100644 index 00000000000..a3a0017bcbf --- /dev/null +++ b/release/datafiles/cursors/cursor_y_move.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_zoom_in.svg b/release/datafiles/cursors/cursor_zoom_in.svg new file mode 100644 index 00000000000..1b107f5f3e6 --- /dev/null +++ b/release/datafiles/cursors/cursor_zoom_in.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/release/datafiles/cursors/cursor_zoom_out.svg b/release/datafiles/cursors/cursor_zoom_out.svg new file mode 100644 index 00000000000..cfc959239a7 --- /dev/null +++ b/release/datafiles/cursors/cursor_zoom_out.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt index c1f793c134f..1bbf944123f 100644 --- a/source/blender/editors/datafiles/CMakeLists.txt +++ b/source/blender/editors/datafiles/CMakeLists.txt @@ -931,6 +931,46 @@ if(WITH_BLENDER) zoom_previous zoom_selected ) + + set(SVG_CURSORS_FILENAMES_NOEXT + cursor_blade + cursor_both_handles + cursor_crossc + cursor_crosshair + cursor_dot + cursor_e_arrow + cursor_eraser + cursor_ew_scroll + cursor_eyedropper + cursor_hand + cursor_hand_closed + cursor_hand_point + cursor_h_split + cursor_knife + cursor_left_handle + cursor_mute + cursor_n_arrow + cursor_nsew_scroll + cursor_ns_scroll + cursor_paint + cursor_pencil + cursor_pick_area + cursor_pointer + cursor_right_handle + cursor_s_arrow + cursor_stop + cursor_swap_area + cursor_text_edit + cursor_v_split + cursor_vertex_loop + cursor_wait + cursor_w_arrow + cursor_x_move + cursor_y_move + cursor_zoom_in + cursor_zoom_out + ) + set(SVG_CONTENTS_H) set(SVG_CONTENTS_C) foreach(svg ${SVG_FILENAMES_NOEXT}) @@ -963,6 +1003,25 @@ if(WITH_BLENDER) list(APPEND SRC ${CMAKE_CURRENT_BINARY_DIR}/svg_icons.h) list(APPEND SRC ${CMAKE_CURRENT_BINARY_DIR}/svg_icons.cc) + + set(SVG_CURSORS_CONTENTS_H) + foreach(svg ${SVG_CURSORS_FILENAMES_NOEXT}) + data_to_c_simple(../../../../release/datafiles/cursors/${svg}.svg SRC) + list(APPEND SVG_CURSORS_CONTENTS_H + "extern const char datatoc_${svg}_svg[]\;\n" + ) + endforeach() + list(APPEND SRC ${CMAKE_CURRENT_BINARY_DIR}/svg_cursors.h) + list(JOIN SVG_CURSORS_CONTENTS_H "" SVG_CURSORS_CONTENTS_H) + + configure_file( + "svg_cursors.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/svg_cursors.h" + ESCAPE_QUOTES + @ONLY + ) + unset(SVG_CURSORS_CONTENTS_H) + # Blend files. data_to_c_simple(../../../../release/datafiles/preview.blend SRC) data_to_c_simple(../../../../release/datafiles/preview_grease_pencil.blend SRC) diff --git a/source/blender/editors/datafiles/svg_cursors.h.in b/source/blender/editors/datafiles/svg_cursors.h.in new file mode 100644 index 00000000000..d01c5be4c90 --- /dev/null +++ b/source/blender/editors/datafiles/svg_cursors.h.in @@ -0,0 +1,15 @@ +/* SPDX-FileCopyrightText: 2024 Blender Authors + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +@SVG_CURSORS_CONTENTS_H@ + +#ifdef __cplusplus +} +#endif diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index 40500aa3277..e6f65e54d2b 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -115,6 +115,16 @@ if(WIN32) add_definitions(-DNOMINMAX) endif() +if(WITH_HEADLESS) + add_definitions(-DWITH_HEADLESS) +else() + # SVG cursors. + list(APPEND LIB + PRIVATE bf::extern::nanosvg + PRIVATE bf::editor::datafiles + ) +endif() + if(WITH_AUDASPACE) list(APPEND INC_SYS ${AUDASPACE_C_INCLUDE_DIRS} diff --git a/source/blender/windowmanager/WM_api.hh b/source/blender/windowmanager/WM_api.hh index 329bb0e6705..7a212e6937b 100644 --- a/source/blender/windowmanager/WM_api.hh +++ b/source/blender/windowmanager/WM_api.hh @@ -189,6 +189,8 @@ enum eWM_CapabilitiesFlag { WM_CAPABILITY_WINDOW_DECORATION_STYLES = (1 << 8), /** Support for the "Hyper" modifier key. */ WM_CAPABILITY_KEYBOARD_HYPER_KEY = (1 << 9), + /** Support for RGBA Cursors. */ + WM_CAPABILITY_RGBA_CURSORS = (1 << 10), /** The initial value, indicates the value needs to be set by inspecting GHOST. */ WM_CAPABILITY_INITIALIZED = (1u << 31), }; diff --git a/source/blender/windowmanager/intern/wm_cursors.cc b/source/blender/windowmanager/intern/wm_cursors.cc index 48b41063f37..62b3617a071 100644 --- a/source/blender/windowmanager/intern/wm_cursors.cc +++ b/source/blender/windowmanager/intern/wm_cursors.cc @@ -21,37 +21,38 @@ #include "BKE_global.hh" #include "BKE_main.hh" +#include "nanosvgrast.h" +#include "svg_cursors.h" + #include "WM_api.hh" #include "WM_types.hh" #include "wm_cursors.hh" #include "wm_window.hh" -enum CursorSize { - /** Size: 16x16. */ - CURSOR_SIZE_16 = 0, - /** Size: 24x24. */ - CURSOR_SIZE_24, - /** Size: 32x32. */ - CURSOR_SIZE_32, -}; -#define CURSOR_SIZE_NUM (CURSOR_SIZE_32 + 1) - -static const uchar cursor_size_px[CURSOR_SIZE_NUM] = { - 16, - /** Not a mistake 24x24 is stored as 32x32. */ - 32, - 32, -}; - /* Blender custom cursor. */ struct BCursor { - char *bitmap[CURSOR_SIZE_NUM]; - char *mask[CURSOR_SIZE_NUM]; - char hotspot[CURSOR_SIZE_NUM][2]; - bool can_invert_color; + const char *svg_source; + float hotspot_x; + float hotspot_y; + bool can_invert; }; -static BCursor *BlenderCursor[WM_CURSOR_NUM] = {nullptr}; +/* We currently support multiple types of mouse cursors. Preferred + * is to use one provided by the OS. The availability of these are + * checked with GHOST_HasCursorShape(). These cursors can include + * platform-specific custom cursors. For example, on MacOS we provide + * vector PDF files and on Windows we have CUR files. + * + * If the OS cannot provide a built-in or custom platform cursor, + * then we use our own internal custom cursors. These are defined in + * SVG files, using a document size of 1600x1600 being the "normal" + * size, cropped to the image size and without any padding. The hotspot + * for these are set during definition at the bottom of this file, and + * are a float factor (0-1) from the top-left corner of the image (not + * of the document size). + */ + +static BCursor BlenderCursor[WM_CURSOR_NUM] = {{nullptr}}; /* Blender cursor to GHOST standard cursor conversion. */ static GHOST_TStandardCursor convert_to_ghost_standard_cursor(WMCursorType curs) @@ -131,49 +132,133 @@ static GHOST_TStandardCursor convert_to_ghost_standard_cursor(WMCursorType curs) } } -static CursorSize window_size_calc() +static float cursor_size() { + /* Scaling with UI scale can be useful for magnified captures. */ + const bool scale_cursor_with_ui_scale = false; + + if (scale_cursor_with_ui_scale) { + return 21.0f * UI_SCALE_FAC; + } + #if (OS_MAC) - /* MacOS always scales up this type of cursor for high-dpi displays. - * The mid-sized 24x24 versions are a nice compromise size. */ - return CURSOR_SIZE_24; + /* MacOS always scales up this type of cursor for high-dpi displays. */ + return 21.0f; #endif - const uint32_t cursor_size = WM_cursor_preferred_logical_size(); - const float cursor_scale = cursor_size ? (float(cursor_size) / WM_CURSOR_DEFAULT_LOGICAL_SIZE) : - 1.0f; - - /* Use `U.dpi` without the `U.ui_scale` because the UI scale does not impact the - * windowing-systems cursor size (only the size which is used for drawing the UI). - * The DPI however is used for scaling defined by the windowing-system. - * Ideally this would also be able to check the cursor size via GHOST. */ - const int dpi_system = int((U.dpi / U.ui_scale) * cursor_scale); - - if (dpi_system <= 72) { - return CURSOR_SIZE_16; - } - if (dpi_system <= int(72 * 1.2)) { - return CURSOR_SIZE_24; - } - return CURSOR_SIZE_32; + return WM_cursor_preferred_logical_size() * (UI_SCALE_FAC / U.ui_scale); } -static void window_set_custom_cursor(wmWindow *win, BCursor *cursor) +static blender::Array cursor_bitmap_from_svg(const char *svg, + float size, + size_t &r_width, + size_t &r_height) { - const CursorSize size = window_size_calc(); + /* Nano alters the source string. */ + std::string svg_source = svg; - GHOST_SetCustomCursorShape(static_cast(win->ghostwin), - (uint8_t *)cursor->bitmap[size], - (uint8_t *)cursor->mask[size], - cursor_size_px[size], - cursor_size_px[size], - cursor->hotspot[size][0], - cursor->hotspot[size][1], - cursor->can_invert_color); + NSVGimage *image = nsvgParse(svg_source.data(), "px", 96.0f); + if (image == nullptr) { + return {}; + } + if (image->width == 0 || image->height == 0) { + nsvgDelete(image); + return {}; + } + NSVGrasterizer *rast = nsvgCreateRasterizer(); + if (rast == nullptr) { + nsvgDelete(image); + return {}; + } + + float scale = (size / 1600.0f); + const size_t dest_w = std::min(size_t(ceil(image->width * scale)), size_t(size)); + const size_t dest_h = std::min(size_t(ceil(image->height * scale)), size_t(size)); + scale = float(dest_w) / image->width; + + blender::Array render_bmp(dest_w * dest_h * 4); + + nsvgRasterize(rast, image, 0.0f, 0.0f, scale, render_bmp.data(), dest_w, dest_h, dest_w * 4); + nsvgDeleteRasterizer(rast); + nsvgDelete(image); + + r_width = dest_w; + r_height = dest_h; + + return render_bmp; +} + +/* Convert 32-bit RGBA bitmap (1-32 x 1-32) to 32x32 1bpp XBitMap bitmap and mask. */ +static void cursor_rgba_to_xbm_32(const blender::Array rgba, + const size_t width, + const size_t height, + uint8_t *bitmap, + uint8_t *mask) +{ + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + int i = (y * width * 4) + (x * 4); + int j = (y * 4) + (x >> 3); + int k = (x % 8); + if (rgba[i + 3] > 128) { + if (rgba[i] > 128) { + bitmap[j] |= (1 << k); + } + mask[j] |= (1 << k); + } + } + } +} + +static bool window_set_custom_cursor(wmWindow *win, BCursor *cursor) +{ + /* Option to force use of 1bpp XBitMap cursors is needed for testing. */ + const bool use_only_1bpp_cursors = false; + + const bool use_rgba = !use_only_1bpp_cursors && + (WM_capabilities_flag() & WM_CAPABILITY_RGBA_CURSORS); + + const int max_size = use_rgba ? 128 : 32; + const float size = std::min(cursor_size(), float(max_size)); + + size_t width; + size_t height; + blender::Array render_bmp = cursor_bitmap_from_svg( + cursor->svg_source, size, width, height); + + int hotspot_x = int(cursor->hotspot_x * (width - 1)); + int hotspot_y = int(cursor->hotspot_y * (height - 1)); + + if (use_rgba) { + return GHOST_SetCustomCursorShape(static_cast(win->ghostwin), + render_bmp.data(), + nullptr, + width, + height, + hotspot_x, + hotspot_y, + cursor->can_invert) == GHOST_kSuccess; + } + else { + uint8_t bitmap[4 * 32] = {0}; + uint8_t mask[4 * 32] = {0}; + cursor_rgba_to_xbm_32(render_bmp, width, height, bitmap, mask); + return GHOST_SetCustomCursorShape(static_cast(win->ghostwin), + bitmap, + mask, + 32, + 32, + hotspot_x, + hotspot_y, + cursor->can_invert) == GHOST_kSuccess; + } } void WM_cursor_set(wmWindow *win, int curs) { + /* Option to not use any OS-supplied cursors is needed for testing. */ + const bool use_only_custom_cursors = false; + if (win == nullptr || G.background) { return; /* Can't set custom cursor before Window init. */ } @@ -202,19 +287,15 @@ void WM_cursor_set(wmWindow *win, int curs) GHOST_TStandardCursor ghost_cursor = convert_to_ghost_standard_cursor(WMCursorType(curs)); - if (ghost_cursor != GHOST_kStandardCursorCustom && + if (!use_only_custom_cursors && ghost_cursor != GHOST_kStandardCursorCustom && GHOST_HasCursorShape(static_cast(win->ghostwin), ghost_cursor)) { /* Use native GHOST cursor when available. */ GHOST_SetCursorShape(static_cast(win->ghostwin), ghost_cursor); } else { - BCursor *bcursor = BlenderCursor[curs]; - if (bcursor) { - /* Use custom bitmap cursor. */ - window_set_custom_cursor(win, bcursor); - } - else { + BCursor *bcursor = &BlenderCursor[curs]; + if (!bcursor || !bcursor->svg_source || !window_set_custom_cursor(win, bcursor)) { /* Fall back to default cursor if no bitmap found. */ GHOST_SetCursorShape(static_cast(win->ghostwin), GHOST_kStandardCursorDefault); @@ -513,2545 +594,60 @@ void WM_cursor_time(wmWindow *win, int nr) win->cursor = 0; } -/** - * Custom Cursor Description - * ========================= - * - * Each bit represents a pixel, so 1 byte = 8 pixels, - * the bytes go Left to Right. Top to bottom - * the bits in a byte go right to left - * (ie; 0x01, 0x80 represents a line of 16 pix with the first and last pix set.) - * - * - A 0 in the bitmap = white, a 1 black - * - a 0 in the mask = transparent pix. - * - * This type of cursor is 16x16 pixels only. - * - * ---- - * - * There is a nice Python GUI utility that can be used for drawing cursors in - * this format in the Blender source distribution, in - * `./tools/utils/make_cursor_gui.py` . - * - * Start it with the command `python3 make_cursor_gui.py` - * It will copy its output to the console when you press 'Do it'. - */ - -/** - * Because defining a cursor mixes declarations and executable code - * each cursor needs its own scoping block or it would be split up - * over several hundred lines of code. To enforce/document this better - * I define 2 pretty brain-dead macros so it's obvious what the extra "[]" are for. - */ - -#define BEGIN_CURSOR_BLOCK \ - { \ - ((void)0) -#define END_CURSOR_BLOCK \ - } \ - ((void)0) +static void wm_add_cursor(WMCursorType cursor, + const char *svg_source, + float hotspot_x, + float hotspot_y, + bool can_invert = true) +{ + BlenderCursor[cursor].svg_source = svg_source; + BlenderCursor[cursor].hotspot_x = hotspot_x; + BlenderCursor[cursor].hotspot_y = hotspot_y; + BlenderCursor[cursor].can_invert = can_invert; +} void wm_init_cursor_data() { - /********************** NW_ARROW Cursor **************************/ - BEGIN_CURSOR_BLOCK; - - static char nw_bitmap16[] = { - 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x3e, - 0x00, 0x7e, 0x00, 0xfe, 0x00, 0xfe, 0x01, 0xfe, 0x03, 0xfe, 0x07, - 0x7e, 0x00, 0x6e, 0x00, 0xc6, 0x00, 0xc2, 0x00, 0x00, 0x00, - }; - - static char nw_mask16[] = { - 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x3f, 0x00, 0x7f, - 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, 0xff, 0x07, 0xff, 0x0f, - 0xff, 0x0f, 0xff, 0x00, 0xef, 0x01, 0xe7, 0x01, 0xc3, 0x00, - }; - - static char nw_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00, - 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, - 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xde, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x00, - 0x00, 0x86, 0x03, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nw_mask24[] = { - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, - 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xdf, 0x03, 0x00, - 0x00, 0xcf, 0x07, 0x00, 0x00, 0x87, 0x07, 0x00, 0x00, 0x83, 0x07, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nw_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x00, - 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe, - 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x07, - 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f, - 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x3e, 0x00, 0x00, 0x7e, 0x3e, 0x00, 0x00, 0x3e, - 0x7c, 0x00, 0x00, 0x1e, 0x7c, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x06, 0x78, 0x00, 0x00, - 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nw_mask32[] = { - 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, - 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, - 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x0f, - 0x00, 0xff, 0xff, 0x1f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xff, 0x3f, - 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x7f, - 0xfe, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, - 0x07, 0x78, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, - }; - - static BCursor NWArrowCursor = { - {nw_bitmap16, nw_bitmap24, nw_bitmap32}, - {nw_mask16, nw_mask24, nw_mask32}, - {{0, 0}, {0, 0}, {0, 0}}, - true, - }; - - BlenderCursor[WM_CURSOR_DEFAULT] = &NWArrowCursor; - BlenderCursor[WM_CURSOR_MOVE] = &NWArrowCursor; - BlenderCursor[WM_CURSOR_COPY] = &NWArrowCursor; - BlenderCursor[WM_CURSOR_NW_ARROW] = &NWArrowCursor; - END_CURSOR_BLOCK; - - /************************ NS_ARROW Cursor *************************/ - BEGIN_CURSOR_BLOCK; - - static char ns_bitmap16[] = { - 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0x80, - 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, - 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, - }; - - static char ns_mask16[] = { - 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, - 0x1f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xfc, 0x1f, - 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, - }; - - static char ns_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, - 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xfc, 0x07, - 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ns_mask24[] = { - 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf8, 0x03, - 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xe0, - 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0x0f, - 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ns_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, - 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, - 0x3f, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, - 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ns_mask32[] = { - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff, - 0x7f, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, - 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, - 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, - 0xfe, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, - }; - - static BCursor NSArrowCursor = { - {ns_bitmap16, ns_bitmap24, ns_bitmap32}, - {ns_mask16, ns_mask24, ns_mask32}, - {{7, 7}, {15, 11}, {15, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_Y_MOVE] = &NSArrowCursor; - BlenderCursor[WM_CURSOR_NS_ARROW] = &NSArrowCursor; - END_CURSOR_BLOCK; - - /********************** EW_ARROW Cursor *************************/ - BEGIN_CURSOR_BLOCK; - - static char ew_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, - 0x18, 0x1c, 0x38, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ew_mask16[] = { - 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x30, 0x0c, 0x38, 0x1c, 0x3c, - 0x3c, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0x3c, 0x3c, 0x38, 0x1c, - 0x30, 0x0c, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ew_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x30, - 0x00, 0x0c, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0x7f, 0x00, - 0x3c, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x30, 0x00, 0x0c, 0x00, 0x20, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ew_mask24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x60, 0x00, 0x06, 0x00, 0x70, 0x00, 0x0e, 0x00, 0x78, - 0x00, 0x1e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, - 0xfe, 0xff, 0x7f, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x78, 0x00, 0x1e, 0x00, 0x70, 0x00, 0x0e, - 0x00, 0x60, 0x00, 0x06, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ew_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0xf0, - 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0xff, 0xff, 0x7f, - 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x0f, 0xe0, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ew_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x80, 0x01, - 0x80, 0x01, 0xc0, 0x01, 0x80, 0x03, 0xe0, 0x01, 0x80, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf8, - 0x01, 0x80, 0x1f, 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0x01, 0x80, 0x3f, 0xf8, 0x01, 0x80, - 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x01, 0x80, 0x07, 0xc0, 0x01, 0x80, 0x03, 0x80, 0x01, - 0x80, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor EWArrowCursor = { - {ew_bitmap16, ew_bitmap24, ew_bitmap32}, - {ew_mask16, ew_mask24, ew_mask32}, - {{7, 7}, {11, 14}, {15, 14}}, - true, - }; - - BlenderCursor[WM_CURSOR_X_MOVE] = &EWArrowCursor; - BlenderCursor[WM_CURSOR_EW_ARROW] = &EWArrowCursor; - END_CURSOR_BLOCK; - - /********************** Wait Cursor *****************************/ - BEGIN_CURSOR_BLOCK; - - static char wait_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf0, 0x07, 0xb0, 0x06, 0x60, - 0x03, 0xc0, 0x01, 0x80, 0x00, 0x80, 0x00, 0xc0, 0x01, 0x60, 0x03, - 0x30, 0x06, 0x10, 0x04, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, - }; - - static char wait_mask16[] = { - 0xfc, 0x1f, 0xfc, 0x1f, 0xf8, 0x0f, 0xf8, 0x0f, 0xf8, 0x0f, 0xf0, - 0x07, 0xe0, 0x03, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, - 0xf8, 0x0f, 0xf8, 0x0f, 0xf8, 0x0f, 0xfc, 0x1f, 0xfc, 0x1f, - }; - - static char wait_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, - 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x30, 0x18, - 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, - 0xe0, 0x0e, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, 0x3c, 0x78, 0x00, - 0x00, 0x1c, 0x70, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char wait_mask24[] = { - 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, - 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80, - 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, - 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, - 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, - 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char wait_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, - 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, - 0x7f, 0x00, 0x80, 0x07, 0x78, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, - 0x3c, 0x0f, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x30, 0x03, - 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x1f, - 0x3e, 0x00, 0x80, 0x0f, 0x7c, 0x00, 0x80, 0x07, 0x78, 0x00, 0x80, 0x03, 0x70, 0x00, 0x80, - 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char wait_mask32[] = { - 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, - 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, - 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, - 0xfe, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff, - 0x7f, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, - 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x03, - 0xf0, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0x03, - }; - - static BCursor WaitCursor = { - {wait_bitmap16, wait_bitmap24, wait_bitmap32}, - {wait_mask16, wait_mask24, wait_mask32}, - {{7, 7}, {8, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_WAIT] = &WaitCursor; - END_CURSOR_BLOCK; - - /********************** Mute Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char mute_bitmap16[] = { - 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x03, 0x14, 0x03, 0x22, - 0x03, 0x00, 0x03, 0x00, 0x03, 0xf8, 0x7c, 0xf8, 0x7c, 0x00, 0x03, - 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, - }; - - static char mute_mask16[] = { - 0x63, 0x00, 0x77, 0x00, 0x3e, 0x03, 0x1c, 0x03, 0x3e, 0x03, 0x77, - 0x03, 0x63, 0x03, 0x80, 0x07, 0xfc, 0xfc, 0xfc, 0xfc, 0x80, 0x07, - 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, - }; - - static char mute_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x88, 0x00, 0x00, - 0x00, 0x50, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x50, 0x60, 0x00, 0x00, 0x88, 0x60, - 0x00, 0x00, 0x04, 0x61, 0x00, 0x00, 0x02, 0x62, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x9f, 0x7f, 0x00, 0xe0, 0x9f, 0x7f, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char mute_mask24[] = { - 0x03, 0x06, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x8e, 0x03, 0x00, 0x00, 0xdc, 0x01, 0x00, - 0x00, 0xf8, 0xf0, 0x00, 0x00, 0x70, 0xf0, 0x00, 0x00, 0xf8, 0xf0, 0x00, 0x00, 0xdc, 0xf1, - 0x00, 0x00, 0x8e, 0xf3, 0x00, 0x00, 0x07, 0xf7, 0x00, 0x00, 0x03, 0xf6, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0x9f, 0xff, 0x00, 0xf0, 0x9f, 0xff, 0x00, - 0xf0, 0xff, 0xff, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char mute_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0c, 0x06, 0x00, - 0x00, 0x18, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x0f, 0x00, 0xe0, 0x00, 0x0f, 0x00, 0xe0, 0x00, - 0x0f, 0x00, 0xb0, 0x01, 0x0f, 0x00, 0x18, 0x03, 0x0f, 0x00, 0x0c, 0x06, 0x0f, 0x00, 0x06, - 0x0c, 0x0f, 0x00, 0x02, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0xe0, 0xff, 0xf0, 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0xe0, 0xff, 0xf0, - 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char mute_mask32[] = { - 0x03, 0x18, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x1e, 0x0f, 0x00, - 0x00, 0xbc, 0x87, 0x1f, 0x00, 0xf8, 0x83, 0x1f, 0x00, 0xf0, 0x81, 0x1f, 0x00, 0xf0, 0x81, - 0x1f, 0x00, 0xf8, 0x83, 0x1f, 0x00, 0xbc, 0x87, 0x1f, 0x00, 0x1e, 0x8f, 0x1f, 0x00, 0x0f, - 0x9e, 0x1f, 0x00, 0x07, 0x9c, 0x1f, 0x00, 0x03, 0x98, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, - 0xf0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, - 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, - 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, - 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, - 0x00, 0x80, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, - }; - - static BCursor MuteCursor = { - {mute_bitmap16, mute_bitmap24, mute_bitmap32}, - {mute_mask16, mute_mask24, mute_mask32}, - {{8, 8}, {13, 13}, {17, 17}}, - true, - }; - - BlenderCursor[WM_CURSOR_MUTE] = &MuteCursor; - END_CURSOR_BLOCK; - - /****************** Normal Cross Cursor ************************/ - BEGIN_CURSOR_BLOCK; - - static char cross_bitmap16[] = { - 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x00, 0x00, 0x3e, 0x7c, 0x3e, 0x7c, 0x00, 0x00, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, - }; - - static char cross_mask16[] = { - 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, - 0x03, 0xff, 0xff, 0x7f, 0xfe, 0x7f, 0xfe, 0xff, 0xff, 0xc0, 0x03, - 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, - }; - - static char cross_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0xc3, 0x7f, 0x00, 0xfe, 0xc3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char cross_mask24[] = { - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xe7, 0xff, 0x00, 0xff, 0xe7, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char cross_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, - 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, - 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xf8, 0x7f, - 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, - 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, - 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char cross_mask32[] = { - 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, - 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, - 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, - 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, - 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, - 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, - 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, - }; - - static BCursor CrossCursor = { - {cross_bitmap16, cross_bitmap24, cross_bitmap32}, - {cross_mask16, cross_mask24, cross_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_EDIT] = &CrossCursor; - BlenderCursor[WM_CURSOR_CROSS] = &CrossCursor; - END_CURSOR_BLOCK; - - /****************** Painting Cursor ************************/ - BEGIN_CURSOR_BLOCK; - - static char paint_bitmap16[] = { - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, - }; - - static char paint_mask16[] = { - 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0x78, 0xcf, 0x79, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, - }; - - static char paint_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, - 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paint_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x08, 0x3f, 0x00, 0xff, - 0x9c, 0x7f, 0x00, 0x7e, 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paint_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x83, 0xc1, 0x7f, 0xfe, 0x83, 0xc1, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paint_mask32[] = { - 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, - 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x83, 0xc1, 0x7f, - 0xff, 0xc7, 0xe3, 0xff, 0xff, 0xc7, 0xe3, 0xff, 0xfe, 0x83, 0xc1, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, - 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, - 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, - }; - - static BCursor PaintCursor = { - {paint_bitmap16, paint_bitmap24, paint_bitmap32}, - {paint_mask16, paint_mask24, paint_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_PAINT] = &PaintCursor; - END_CURSOR_BLOCK; - - /********************** Dot Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char dot_bitmap16[] = { - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, - }; - - static char dot_mask16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char dot_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char dot_mask24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char dot_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char dot_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor DotCursor = { - {dot_bitmap16, dot_bitmap24, dot_bitmap32}, - {dot_mask16, dot_mask24, dot_mask32}, - {{7, 7}, {14, 14}, {14, 14}}, - false, - }; - - BlenderCursor[WM_CURSOR_DOT] = &DotCursor; - END_CURSOR_BLOCK; - - /************* Minimal Crosshair Cursor ***************/ - BEGIN_CURSOR_BLOCK; - - static char crossc_bitmap16[] = { - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x55, 0x55, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - }; - - static char crossc_mask16[] = { - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, - 0x00, 0x80, 0x00, 0x7f, 0x7f, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, - }; - - static char crossc_bitmap24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x55, - 0x55, 0x55, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char crossc_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xff, - 0xf7, 0x7f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char crossc_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char crossc_mask32[] = { - 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, - 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, - }; - - static BCursor CrossCursorC = { - {crossc_bitmap16, crossc_bitmap24, crossc_bitmap32}, - {crossc_mask16, crossc_mask24, crossc_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_CROSSC] = &CrossCursorC; - END_CURSOR_BLOCK; - - /********************** Knife Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char knife_bitmap16[] = { - 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x0c, 0x00, 0x06, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, - 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x0e, 0x00, 0x00, 0x00, - }; - - static char knife_mask16[] = { - 0x00, 0x40, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x1e, 0x00, 0x0f, 0x80, 0x1f, 0xc0, 0x0f, 0xe0, 0x07, 0xf0, 0x03, - 0xf8, 0x01, 0xfc, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0x0f, 0x00, - }; - - static char knife_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, - 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char knife_mask24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, - 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, - 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, - 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char knife_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, - 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xfe, - 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, - 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char knife_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, - 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, - 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0xff, 0x01, - 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x80, 0xff, - 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8, - 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, - 0xff, 0x03, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - }; - - static BCursor KnifeCursor = { - {knife_bitmap16, knife_bitmap24, knife_bitmap32}, - {knife_mask16, knife_mask24, knife_mask32}, - {{0, 15}, {0, 23}, {0, 31}}, - false, - }; - - BlenderCursor[WM_CURSOR_KNIFE] = &KnifeCursor; - END_CURSOR_BLOCK; - - /********************** Loop Select Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char vloop_bitmap16[] = { - 0x00, 0x00, 0x7e, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0xfe, 0xf0, 0x96, - 0x9f, 0x92, 0x90, 0xf0, 0xf0, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, - 0x20, 0x40, 0xf0, 0xf0, 0x90, 0x90, 0x90, 0x9f, 0xf0, 0xf0, - }; - - static char vloop_mask16[] = { - 0xff, 0x01, 0xff, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0xff, 0xf0, 0xff, - 0xff, 0xf7, 0xff, 0xf3, 0xf0, 0x61, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0xf0, 0xf0, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xf0, - }; - - static char vloop_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x9e, 0x0f, 0xf8, 0x00, 0x8e, 0x08, - 0x88, 0x00, 0x86, 0xf8, 0x8f, 0x00, 0x82, 0x08, 0x88, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00, - 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, - 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x20, - 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, 0xf8, 0x8f, 0x00, 0x80, 0x08, - 0x88, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char vloop_mask24[] = { - 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, - 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xbf, 0x0f, 0xf8, 0x00, 0x9f, 0xff, - 0xff, 0x00, 0x8f, 0xff, 0xff, 0x00, 0x87, 0xff, 0xff, 0x00, 0x83, 0x0f, 0xf8, 0x00, 0x01, - 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, - 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, - 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, - 0xff, 0x00, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char vloop_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, - 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01, - 0x00, 0x00, 0xfe, 0x7e, 0x00, 0x7e, 0x7e, 0xff, 0x00, 0xff, 0x3e, 0xc3, 0x00, 0xc3, 0x1e, - 0xc3, 0xff, 0xc3, 0x0e, 0xc3, 0xff, 0xc3, 0x06, 0xc3, 0x00, 0xc3, 0x02, 0xff, 0x00, 0xff, - 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, - 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff, 0x00, - 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0xff, 0xc3, 0x00, 0xc3, 0xff, 0xc3, 0x00, 0xc3, 0x00, 0xc3, - 0x00, 0xff, 0x00, 0xff, 0x00, 0x7e, 0x00, 0x7e, - }; - - static char vloop_mask32[] = { - 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, - 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x7e, 0xff, 0xff, 0x00, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x3f, - 0xe7, 0xff, 0xe7, 0x1f, 0xe7, 0xff, 0xe7, 0x0f, 0xff, 0xff, 0xff, 0x07, 0xff, 0x00, 0xff, - 0x03, 0x7e, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, - 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, - 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff, 0x00, - 0xff, 0xff, 0xff, 0x00, 0xe7, 0xff, 0xe7, 0x00, 0xe7, 0xff, 0xe7, 0x00, 0xff, 0xff, 0xff, - 0x00, 0xff, 0x00, 0xff, 0x00, 0x7e, 0x00, 0x7e, - }; - - static BCursor VLoopCursor = { - {vloop_bitmap16, vloop_bitmap24, vloop_bitmap32}, - {vloop_mask16, vloop_mask24, vloop_mask32}, - {{0, 0}, {0, 0}, {0, 0}}, - false, - }; - - BlenderCursor[WM_CURSOR_VERTEX_LOOP] = &VLoopCursor; - END_CURSOR_BLOCK; - - /********************** TextEdit Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char textedit_bitmap16[] = { - 0x00, 0x00, 0x70, 0x07, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, - 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x70, 0x07, 0x00, 0x00, - }; - - static char textedit_mask16[] = { - 0x70, 0x07, 0xf8, 0x0f, 0xf0, 0x07, 0xc0, 0x01, 0xc0, 0x01, 0xc0, - 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, - 0xc0, 0x01, 0xc0, 0x01, 0xf0, 0x07, 0xf8, 0x0f, 0x70, 0x07, - }; - - static char textedit_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char textedit_mask24[] = { - 0x80, 0xf7, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0xff, 0x00, - 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char textedit_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0x01, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xff, 0x3f, 0x00, - 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char textedit_mask32[] = { - 0x00, 0x3f, 0x3f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, - 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, - 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, - 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, - 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80, 0xff, 0x7f, 0x00, - 0x80, 0xff, 0x7f, 0x00, 0x00, 0x3f, 0x3f, 0x00, - }; - - static BCursor TextEditCursor = { - {textedit_bitmap16, textedit_bitmap24, textedit_bitmap32}, - {textedit_mask16, textedit_mask24, textedit_mask32}, - {{7, 7}, {11, 10}, {14, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_TEXT_EDIT] = &TextEditCursor; - END_CURSOR_BLOCK; - - /********************** Paintbrush Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char paintbrush_bitmap16[] = { - 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x00, 0x74, 0x00, 0x2e, 0x00, - 0x1f, 0x80, 0x0f, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf8, 0x00, - 0x7c, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x00, 0x00, - }; - - static char paintbrush_mask16[] = { - 0x00, 0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0x7f, 0x80, - 0x3f, 0xc0, 0x1f, 0xe0, 0x0f, 0xf0, 0x07, 0xf8, 0x03, 0xfc, 0x01, - 0xfe, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x00, 0x0f, 0x00, - }; - - static char paintbrush_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, - 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0xc0, 0x17, 0x00, 0x00, 0xe0, - 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, - 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paintbrush_mask24[] = { - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, - 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, - 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, - 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, - 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, - 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0x00, - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paintbrush_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, - 0x10, 0x1f, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x7c, 0x04, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, - 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, - 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, - 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char paintbrush_mask32[] = { - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0, - 0x3f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, - 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, - 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x00, - 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, - 0x00, 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xff, - 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, - 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - }; - - static BCursor PaintBrushCursor = { - {paintbrush_bitmap16, paintbrush_bitmap24, paintbrush_bitmap32}, - {paintbrush_mask16, paintbrush_mask24, paintbrush_mask32}, - {{0, 15}, {0, 23}, {0, 31}}, - false, - }; - - BlenderCursor[WM_CURSOR_PAINT_BRUSH] = &PaintBrushCursor; - END_CURSOR_BLOCK; - - /********************** Eraser Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char eraser_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, 0x07, - 0xfe, 0x03, 0xfe, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eraser_mask16[] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x1f, 0x80, 0x3f, 0xc0, - 0x7f, 0xe0, 0xff, 0xf0, 0x7f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, - 0xff, 0x07, 0xff, 0x03, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00, - }; - - static char eraser_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x08, - 0x10, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x0a, 0x40, 0x00, 0x00, 0x1d, 0x80, 0x00, 0x80, - 0x3e, 0x40, 0x00, 0x40, 0x7f, 0x20, 0x00, 0xa0, 0xff, 0x10, 0x00, 0xd0, 0xff, 0x09, 0x00, - 0xe8, 0xff, 0x05, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xfa, 0x7f, 0x01, 0x00, 0xfd, 0xbf, 0x00, - 0x00, 0xfd, 0x5f, 0x00, 0x00, 0xfd, 0x2f, 0x00, 0x00, 0xfd, 0x17, 0x00, 0x00, 0x01, 0x08, - 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eraser_mask24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, - 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80, - 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, - 0xf8, 0xff, 0x07, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, - 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x0f, - 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eraser_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x80, - 0x01, 0x06, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, - 0x18, 0x00, 0x60, 0x00, 0x4c, 0x00, 0xc0, 0x00, 0xe6, 0x00, 0xc0, 0x00, 0xf3, 0x01, 0x60, - 0x80, 0xf9, 0x03, 0x30, 0xc0, 0xfc, 0x07, 0x18, 0x60, 0xfe, 0x0f, 0x0c, 0x30, 0xff, 0x1f, - 0x06, 0x98, 0xff, 0x3f, 0x03, 0xcc, 0xff, 0x9f, 0x01, 0xe6, 0xff, 0xcf, 0x00, 0xf3, 0xff, - 0x67, 0x00, 0xf9, 0xff, 0x33, 0x00, 0xfd, 0xff, 0x19, 0x00, 0xfd, 0xff, 0x0c, 0x00, 0xfd, - 0x7f, 0x06, 0x00, 0xfd, 0x3f, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eraser_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x80, - 0xff, 0x07, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x3f, 0x00, - 0xf8, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0x00, 0xff, 0xff, 0x7f, - 0x80, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, - 0x07, 0xf8, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0x00, 0xff, 0xff, - 0x7f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xff, - 0xff, 0x07, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor EraserCursor = { - {eraser_bitmap16, eraser_bitmap24, eraser_bitmap32}, - {eraser_mask16, eraser_mask24, eraser_mask32}, - {{0, 14}, {0, 23}, {0, 28}}, - false, - }; - - BlenderCursor[WM_CURSOR_ERASER] = &EraserCursor; - END_CURSOR_BLOCK; - - /********************** Hand Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char hand_bitmap16[] = { - 0x00, 0x00, 0x80, 0x01, 0x80, 0x0d, 0x98, 0x6d, 0xb8, 0x6d, 0xb0, - 0x6d, 0xb0, 0x6d, 0xe0, 0x6f, 0xe6, 0x7f, 0xee, 0x7f, 0x7c, 0x35, - 0x78, 0x35, 0x70, 0x15, 0x60, 0x15, 0xc0, 0x1f, 0xc0, 0x1f, - }; - - static char hand_mask16[] = { - 0x80, 0x01, 0xc0, 0x0f, 0xd8, 0x7f, 0xfc, 0xff, 0xfc, 0xff, 0xf8, - 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, - 0xfc, 0x7f, 0xf8, 0x3f, 0xf0, 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, - }; - - static char hand_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x3b, 0x00, - 0x00, 0x80, 0xbb, 0x03, 0x00, 0x80, 0xbb, 0x03, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb, - 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, 0xbb, 0x3b, 0x00, 0x80, - 0xbb, 0x3b, 0x00, 0x8e, 0xbb, 0x3b, 0x00, 0x8e, 0xbb, 0x3b, 0x00, 0x9e, 0xff, 0x3b, 0x00, - 0x9c, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xdb, 0x3e, 0x00, 0xf8, 0xdb, 0x1e, - 0x00, 0xf0, 0xdb, 0x1e, 0x00, 0xe0, 0xdb, 0x0e, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x80, 0xff, - 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char hand_mask24[] = { - 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0x03, - 0x00, 0xc0, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff, - 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0xce, - 0xff, 0x7f, 0x00, 0xcf, 0xff, 0x7f, 0x00, 0xdf, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x7f, 0x00, - 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x3f, - 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xc0, 0xff, - 0x0f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char hand_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x30, 0x0f, - 0x00, 0x00, 0x78, 0xcf, 0x00, 0x00, 0x78, 0xef, 0x01, 0x00, 0x78, 0xef, 0x01, 0x00, 0x78, - 0xef, 0x01, 0x00, 0x78, 0xef, 0x1d, 0x00, 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x00, - 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x00, 0x78, 0xef, 0x3d, 0x70, 0x78, 0xef, 0x3d, - 0xf0, 0x78, 0xef, 0x3d, 0xf0, 0xf8, 0xff, 0x3d, 0xf0, 0xf8, 0xff, 0x3d, 0xf0, 0xf8, 0xff, - 0x3f, 0xf0, 0xb9, 0xf7, 0x3f, 0xe0, 0xbb, 0xf7, 0x3f, 0xe0, 0xbf, 0xf7, 0x3e, 0xe0, 0xbf, - 0xf7, 0x3e, 0xc0, 0xbf, 0xf7, 0x3e, 0x80, 0xbf, 0xf7, 0x3e, 0x80, 0xbf, 0xf7, 0x3e, 0x00, - 0xbf, 0xf7, 0x1e, 0x00, 0xbe, 0xf7, 0x1e, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xfc, 0xff, 0x0f, - 0x00, 0xf8, 0xff, 0x07, 0x00, 0xf8, 0xff, 0x07, - }; - - static char hand_mask32[] = { - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0xff, - 0x01, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xfc, - 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, - 0xfc, 0xff, 0x7f, 0x60, 0xfc, 0xff, 0x7f, 0xf8, 0xfc, 0xff, 0x7f, 0xf8, 0xfd, 0xff, 0x7f, - 0xfc, 0xfd, 0xff, 0x7f, 0xfc, 0xfd, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, - 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xf0, 0xff, - 0xff, 0x7f, 0xe0, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x80, - 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x1f, - 0x00, 0xfe, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f, - }; - - static BCursor HandCursor = { - {hand_bitmap16, hand_bitmap24, hand_bitmap32}, - {hand_mask16, hand_mask24, hand_mask32}, - {{8, 8}, {11, 11}, {17, 17}}, - false, - }; - - BlenderCursor[WM_CURSOR_HAND] = &HandCursor; - BlenderCursor[WM_CURSOR_HAND_CLOSED] = &HandCursor; - BlenderCursor[WM_CURSOR_HAND_POINT] = &HandCursor; - END_CURSOR_BLOCK; - - /********************** NSEW Scroll Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char nsewscroll_bitmap16[] = { - 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x40, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x30, 0x06, 0x60, 0x06, 0x60, 0x0c, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x02, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00, - }; - - static char nsewscroll_mask16[] = { - 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0x40, 0x02, 0x0c, - 0x30, 0x1e, 0x78, 0x0f, 0xf0, 0x0f, 0xf8, 0x1e, 0x78, 0x0c, 0x30, - 0x40, 0x02, 0xe0, 0x07, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, - }; - - static char nsewscroll_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, - 0x00, 0x38, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x77, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsewscroll_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x1f, - 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00, - 0x10, 0x00, 0x04, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0xff, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsewscroll_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, - 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x38, - 0x1c, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x02, 0xe0, - 0x00, 0x00, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0x7c, 0x00, 0x00, 0x3e, - 0x3e, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x3e, 0xf8, 0x00, 0x00, - 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, - 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsewscroll_mask32[] = { - 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f, - 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x7c, - 0x3e, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x40, 0x10, 0x08, 0x02, 0xe0, 0x00, 0x00, 0x07, 0xf0, - 0x01, 0x80, 0x0f, 0xf8, 0x03, 0xc0, 0x1f, 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0x00, 0x00, 0x7f, - 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0xfc, 0x01, 0x80, - 0x3f, 0xf8, 0x03, 0xc0, 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0x40, 0x10, - 0x08, 0x02, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, - }; - - static BCursor NSEWScrollCursor = { - {nsewscroll_bitmap16, nsewscroll_bitmap24, nsewscroll_bitmap32}, - {nsewscroll_mask16, nsewscroll_mask24, nsewscroll_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_NSEW_SCROLL] = &NSEWScrollCursor; - END_CURSOR_BLOCK; - - /********************** NS Scroll Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char nsscroll_bitmap16[] = { - 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0x70, 0x07, 0x20, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, - 0x70, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, - }; - - static char nsscroll_mask16[] = { - 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0x70, - 0x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x70, 0x07, - 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, - }; - - static char nsscroll_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0xf7, 0x00, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xc1, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xc1, 0x00, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsscroll_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xe3, - 0x01, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, - 0xc0, 0xe3, 0x01, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsscroll_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, - 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xbf, - 0x1f, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0f, - 0x1e, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0xbf, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, - 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char nsscroll_mask32[] = { - 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf8, 0x03, - 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x80, 0xff, - 0x3f, 0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x80, 0x1f, 0x3f, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, - 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x80, 0x1f, - 0x3f, 0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, - 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - }; - - static BCursor NSScrollCursor = { - {nsscroll_bitmap16, nsscroll_bitmap24, nsscroll_bitmap32}, - {nsscroll_mask16, nsscroll_mask24, nsscroll_mask32}, - {{7, 7}, {11, 11}, {14, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_NS_SCROLL] = &NSScrollCursor; - END_CURSOR_BLOCK; - - /********************** EW Scroll Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char ewscroll_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x38, - 0x1c, 0x1c, 0x38, 0x0e, 0x70, 0x1c, 0x38, 0x38, 0x1c, 0x10, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ewscroll_mask16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x38, 0x1c, 0x7c, - 0x3e, 0x3e, 0x7c, 0x1f, 0xf8, 0x3e, 0x7c, 0x7c, 0x3e, 0x38, 0x1c, - 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ewscroll_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x07, 0x00, 0xf0, - 0x00, 0x0f, 0x00, 0x78, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x78, 0x00, - 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0xe0, 0x00, 0x07, - 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ewscroll_mask24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x07, 0x00, 0xf0, 0x81, 0x0f, 0x00, 0xf8, - 0x81, 0x1f, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0xfc, 0x00, - 0x7e, 0x00, 0x7e, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0xf8, 0x81, 0x1f, 0x00, 0xf0, 0x81, 0x0f, - 0x00, 0xe0, 0x00, 0x07, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ewscroll_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0xf0, - 0x03, 0xc0, 0x0f, 0xf8, 0x01, 0x80, 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0x7e, 0x00, 0x00, 0x7e, - 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x01, 0x80, 0x1f, 0xf0, 0x03, 0xc0, 0x0f, 0xe0, 0x07, 0xe0, - 0x07, 0xc0, 0x07, 0xe0, 0x03, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char ewscroll_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x80, 0x03, - 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xe0, 0x0f, 0xf0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0xf8, - 0x07, 0xe0, 0x1f, 0xfc, 0x03, 0xc0, 0x3f, 0xfe, 0x01, 0x80, 0x7f, 0xff, 0x00, 0x00, 0xff, - 0xfe, 0x01, 0x80, 0x7f, 0xfc, 0x03, 0xc0, 0x3f, 0xf8, 0x07, 0xe0, 0x1f, 0xf0, 0x0f, 0xf0, - 0x0f, 0xe0, 0x0f, 0xf0, 0x07, 0xc0, 0x07, 0xe0, 0x03, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x01, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor EWScrollCursor = { - {ewscroll_bitmap16, ewscroll_bitmap24, ewscroll_bitmap32}, - {ewscroll_mask16, ewscroll_mask24, ewscroll_mask32}, - {{7, 7}, {11, 14}, {15, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_EW_SCROLL] = &EWScrollCursor; - END_CURSOR_BLOCK; - - /********************** Eyedropper Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char eyedropper_bitmap16[] = { - 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x17, 0x00, - 0x0e, 0x00, 0x1d, 0x80, 0x0b, 0xc0, 0x01, 0xe0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, - }; - - static char eyedropper_mask16[] = { - 0x00, 0x60, 0x00, 0xf0, 0x00, 0xfa, 0x00, 0x7f, 0x80, 0x3f, 0x00, - 0x1f, 0x80, 0x3f, 0xc0, 0x1f, 0xe0, 0x0b, 0xf0, 0x01, 0xf8, 0x00, - 0x7c, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x03, 0x00, - }; - - static char eyedropper_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7e, - 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x60, 0x3f, 0x00, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0xe0, - 0x0d, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xb0, 0x07, 0x00, 0x00, 0x78, 0x07, 0x00, 0x00, - 0x7c, 0x02, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x80, 0x0d, 0x00, 0x00, - 0xc0, 0x06, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xd8, 0x00, 0x00, - 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eyedropper_mask24[] = { - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, - 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, - 0xfe, 0x07, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, - 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x1f, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eyedropper_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe4, 0x3f, 0x00, 0x00, - 0xee, 0x1f, 0x00, 0x00, 0xdf, 0x0f, 0x00, 0x00, 0xbf, 0x07, 0x00, 0x00, 0x7e, 0x03, 0x00, - 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x80, 0xf7, 0x03, 0x00, 0xc0, 0xef, 0x01, - 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, 0xdc, 0x01, - 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0xc0, 0x1d, - 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf8, - 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char eyedropper_mask32[] = { - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, - 0xff, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0xe4, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xff, 0x3f, 0x00, 0x80, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, - 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, - 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xcf, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, - 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc, - 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - }; - - static BCursor EyedropperCursor = { - {eyedropper_bitmap16, eyedropper_bitmap24, eyedropper_bitmap32}, - {eyedropper_mask16, eyedropper_mask24, eyedropper_mask32}, - {{0, 15}, {1, 22}, {1, 30}}, - false, - }; - - BlenderCursor[WM_CURSOR_EYEDROPPER] = &EyedropperCursor; - END_CURSOR_BLOCK; - - /********************** Swap Area Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char swap_bitmap16[] = { - 0xc0, 0xff, 0x40, 0x80, 0x40, 0xbc, 0x40, 0xb8, 0x40, 0xb8, 0x40, - 0xa4, 0x00, 0x82, 0xfe, 0x81, 0x7e, 0x81, 0xbe, 0xfd, 0xda, 0x01, - 0xe2, 0x01, 0xe2, 0x01, 0xc2, 0x01, 0xfe, 0x01, 0x00, 0x00, - }; - - static char swap_mask16[] = { - 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, - 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, - }; - - static char swap_bitmap24[] = { - 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x82, 0xbf, 0x00, 0x00, 0x02, 0xbf, - 0x00, 0x00, 0x02, 0xbe, 0x00, 0x00, 0x02, 0xbe, 0x00, 0x00, 0x02, 0xbf, 0x00, 0x00, 0x82, - 0xb3, 0x00, 0x00, 0xc2, 0xa1, 0x00, 0x00, 0xe0, 0x80, 0x00, 0xfe, 0x7f, 0x80, 0x00, 0xfe, - 0x37, 0x80, 0x00, 0xfe, 0x23, 0x80, 0x00, 0xfe, 0x31, 0x80, 0x00, 0xfe, 0xb8, 0xff, 0x00, - 0x7a, 0x3c, 0x00, 0x00, 0x32, 0x3e, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x82, 0x3f, 0x00, - 0x00, 0x82, 0x3f, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0xfe, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char swap_mask24[] = { - 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, - 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, - 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, - 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char swap_bitmap32[] = { - 0x00, 0xe0, 0xff, 0xff, 0x00, 0x20, 0x00, 0x80, 0x00, 0x20, 0x00, 0x80, 0x00, 0x20, 0xf8, - 0x9f, 0x00, 0x20, 0xf0, 0x9f, 0x00, 0x20, 0xe0, 0x9f, 0x00, 0x20, 0xc0, 0x9f, 0x00, 0x20, - 0x80, 0x9f, 0x00, 0x20, 0xc0, 0x9f, 0x00, 0x20, 0xe0, 0x9e, 0x00, 0x20, 0x70, 0x9c, 0x00, - 0x20, 0x38, 0x98, 0x00, 0x20, 0x1c, 0x90, 0x00, 0x00, 0x0e, 0x80, 0xfe, 0xff, 0x07, 0x80, - 0xfe, 0x7f, 0x03, 0x80, 0xfe, 0x3f, 0x02, 0x80, 0xfe, 0x1f, 0x03, 0x80, 0xfe, 0x8f, 0xfb, - 0xff, 0xf6, 0xc7, 0x03, 0x00, 0xe6, 0xe3, 0x03, 0x00, 0xc6, 0xf1, 0x03, 0x00, 0x86, 0xf8, - 0x03, 0x00, 0x06, 0xfc, 0x03, 0x00, 0x06, 0xfe, 0x03, 0x00, 0x06, 0xfc, 0x03, 0x00, 0x06, - 0xf8, 0x03, 0x00, 0x06, 0xf0, 0x03, 0x00, 0x06, 0xe0, 0x03, 0x00, 0xfe, 0xff, 0x03, 0x00, - 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char swap_mask32[] = { - 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, - 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, - 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x00, - 0xe0, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, - 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, - 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, - 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x07, 0x00, - }; - - static BCursor SwapCursor = { - {swap_bitmap16, swap_bitmap24, swap_bitmap32}, - {swap_mask16, swap_mask24, swap_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_SWAP_AREA] = &SwapCursor; - END_CURSOR_BLOCK; - - /********************** Vertical Split Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char vsplit_bitmap16[] = { - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x88, - 0x11, 0x8c, 0x31, 0x86, 0x61, 0x86, 0x61, 0x8c, 0x31, 0x88, 0x11, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - }; - - static char vsplit_mask16[] = { - 0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc8, 0x13, 0xdc, - 0x3b, 0xde, 0x7b, 0xcf, 0xf3, 0xcf, 0xf3, 0xde, 0x7b, 0xdc, 0x3b, - 0xc8, 0x13, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, - }; - - static char vsplit_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, - 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x20, 0xc3, - 0x04, 0x00, 0x30, 0xc3, 0x0c, 0x00, 0x38, 0xc3, 0x1c, 0x00, 0x1c, 0xc3, 0x38, 0x00, 0x0e, - 0xc3, 0x70, 0x00, 0x1c, 0xc3, 0x38, 0x00, 0x38, 0xc3, 0x1c, 0x00, 0x30, 0xc3, 0x0c, 0x00, - 0x20, 0xc3, 0x04, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, - 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char vsplit_mask24[] = { - 0x00, 0x81, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, - 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x20, 0xe7, 0x04, 0x00, 0x70, 0xe7, - 0x0e, 0x00, 0x78, 0xe7, 0x1e, 0x00, 0x7c, 0xe7, 0x3e, 0x00, 0x3e, 0xe7, 0x7c, 0x00, 0x1f, - 0xe7, 0xf8, 0x00, 0x3e, 0xe7, 0x7c, 0x00, 0x7c, 0xe7, 0x3e, 0x00, 0x78, 0xe7, 0x1e, 0x00, - 0x70, 0xe7, 0x0e, 0x00, 0x20, 0xe7, 0x04, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, - 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char vsplit_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, - 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, - 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x80, 0x38, 0x1c, 0x01, 0xc0, 0x39, 0x9c, 0x03, 0xe0, - 0x3b, 0xdc, 0x07, 0xf0, 0x39, 0x9c, 0x0f, 0xf8, 0x38, 0x1c, 0x1f, 0x7c, 0x38, 0x1c, 0x3e, - 0x3e, 0x38, 0x1c, 0x7c, 0x3e, 0x38, 0x1c, 0x7c, 0x7c, 0x38, 0x1c, 0x3e, 0xf8, 0x38, 0x1c, - 0x1f, 0xf0, 0x39, 0x9c, 0x0f, 0xe0, 0x3b, 0xdc, 0x07, 0xc0, 0x39, 0x9c, 0x03, 0x80, 0x38, - 0x1c, 0x01, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, - 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char vsplit_mask32[] = { - 0x00, 0x18, 0x18, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, - 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, - 0x1e, 0x00, 0x80, 0x78, 0x1e, 0x01, 0xc0, 0x79, 0x9e, 0x03, 0xe0, 0x7b, 0xde, 0x07, 0xf0, - 0x7f, 0xfe, 0x0f, 0xf8, 0x7b, 0xde, 0x1f, 0xfc, 0x79, 0x9e, 0x3f, 0xfe, 0x78, 0x1e, 0x7f, - 0x7f, 0x78, 0x1e, 0xfe, 0x7f, 0x78, 0x1e, 0xfe, 0xfe, 0x78, 0x1e, 0x7f, 0xfc, 0x79, 0x9e, - 0x3f, 0xf8, 0x7b, 0xde, 0x1f, 0xf0, 0x7f, 0xfe, 0x0f, 0xe0, 0x7b, 0xde, 0x07, 0xc0, 0x79, - 0x9e, 0x03, 0x80, 0x78, 0x1e, 0x01, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, - 0x00, 0x38, 0x1c, 0x00, 0x00, 0x18, 0x18, 0x00, - }; - - static BCursor VSplitCursor = { - {vsplit_bitmap16, vsplit_bitmap24, vsplit_bitmap32}, - {vsplit_mask16, vsplit_mask24, vsplit_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_V_SPLIT] = &VSplitCursor; - END_CURSOR_BLOCK; - - /********************** Horizontal Split Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char hsplit_bitmap16[] = { - 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0x60, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x06, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00, - }; - - static char hsplit_mask16[] = { - 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x60, 0x06, 0x01, - 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, - 0x60, 0x06, 0xf0, 0x0f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, - }; - - static char hsplit_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, - 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char hsplit_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0xc0, 0xf7, 0x01, - 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char hsplit_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, - 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x3e, - 0x7c, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, - 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x10, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, - 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char hsplit_mask32[] = { - 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x0f, - 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x7f, - 0xfe, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x08, 0x10, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x10, 0x00, 0x00, 0x1c, - 0x38, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, - }; - - static BCursor HSplitCursor = { - {hsplit_bitmap16, hsplit_bitmap24, hsplit_bitmap32}, - {hsplit_mask16, hsplit_mask24, hsplit_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_H_SPLIT] = &HSplitCursor; - END_CURSOR_BLOCK; - - /********************** North Arrow Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char narrow_bitmap16[] = { - 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, - 0x0f, 0x7c, 0x1f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char narrow_mask16[] = { - 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f, 0xfc, - 0x1f, 0xfe, 0x3f, 0x7f, 0x7f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char narrow_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff, - 0x03, 0x00, 0xf0, 0xf7, 0x07, 0x00, 0xf8, 0xe3, 0x0f, 0x00, 0xfc, 0xc1, 0x1f, 0x00, 0xfe, - 0x80, 0x3f, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char narrow_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, - 0x07, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xff, - 0xc1, 0x7f, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x0e, 0x00, - 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char narrow_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, - 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, - 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x80, 0xff, 0xfe, 0x03, 0xc0, - 0x7f, 0xfc, 0x07, 0xe0, 0x3f, 0xf8, 0x0f, 0xf0, 0x1f, 0xf0, 0x1f, 0xf8, 0x0f, 0xe0, 0x3f, - 0xfc, 0x07, 0xc0, 0x7f, 0xf8, 0x03, 0x80, 0x3f, 0xf0, 0x01, 0x00, 0x1f, 0xe0, 0x00, 0x00, - 0x0e, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char narrow_mask32[] = { - 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x07, 0xe0, - 0xff, 0xfe, 0x0f, 0xf0, 0x7f, 0xfc, 0x1f, 0xf8, 0x3f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf0, 0x7f, - 0xfe, 0x0f, 0xe0, 0xff, 0xfc, 0x07, 0xc0, 0x7f, 0xf8, 0x03, 0x80, 0x3f, 0xf0, 0x01, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor NArrowCursor = { - {narrow_bitmap16, narrow_bitmap24, narrow_bitmap32}, - {narrow_mask16, narrow_mask24, narrow_mask32}, - {{7, 5}, {11, 7}, {16, 9}}, - true, - }; - - BlenderCursor[WM_CURSOR_N_ARROW] = &NArrowCursor; - END_CURSOR_BLOCK; - - /********************** South Arrow Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char sarrow_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7c, 0x1f, 0xf8, 0x0f, - 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, - }; - - static char sarrow_mask16[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7f, 0x7f, 0xfe, 0x3f, 0xfc, 0x1f, - 0xf8, 0x0f, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, - }; - - static char sarrow_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f, - 0x00, 0xfe, 0x80, 0x3f, 0x00, 0xfc, 0xc1, 0x1f, 0x00, 0xf8, 0xe3, 0x0f, 0x00, 0xf0, 0xf7, - 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char sarrow_mask24[] = { - 0x10, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x1f, 0x00, 0xfe, 0x80, 0x3f, - 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0xf8, 0xff, - 0x0f, 0x00, 0xf0, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, - 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char sarrow_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x80, 0x0f, - 0xfc, 0x01, 0xc0, 0x1f, 0xfe, 0x03, 0xe0, 0x3f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xf8, - 0x0f, 0xf0, 0x1f, 0xfc, 0x07, 0xe0, 0x3f, 0xfe, 0x03, 0xc0, 0x7f, 0xff, 0x01, 0x80, 0xff, - 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, - 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char sarrow_mask32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x80, 0x0f, 0xfc, 0x01, 0xc0, 0x1f, - 0xfe, 0x03, 0xe0, 0x3f, 0xff, 0x07, 0xf0, 0x7f, 0xfe, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfc, - 0x1f, 0xf8, 0x3f, 0xfe, 0x0f, 0xf0, 0x7f, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff, - 0xff, 0x01, 0x80, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, - 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, - }; - - static BCursor SArrowCursor = { - {sarrow_bitmap16, sarrow_bitmap24, sarrow_bitmap32}, - {sarrow_mask16, sarrow_mask24, sarrow_mask32}, - {{7, 10}, {11, 8}, {15, 22}}, - true, - }; - - BlenderCursor[WM_CURSOR_S_ARROW] = &SArrowCursor; - END_CURSOR_BLOCK; - - /********************** East Arrow Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char earrow_bitmap16[] = { - 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07, 0x80, 0x0f, 0x00, - 0x1f, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x1f, 0x80, 0x0f, - 0xc0, 0x07, 0x80, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - }; - - static char earrow_mask16[] = { - 0x00, 0x01, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f, 0xc0, 0x1f, 0x80, - 0x3f, 0x00, 0x7f, 0x00, 0xfe, 0x00, 0x7f, 0x80, 0x3f, 0xc0, 0x1f, - 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03, 0x00, 0x01, 0x00, 0x00, - }; - - static char earrow_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x07, - 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, - 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char earrow_mask24[] = { - 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0xff, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, - 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, - 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char earrow_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, - 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, - 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, - 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, - 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, - 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, - 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, - 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char earrow_mask32[] = { - 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, - 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0, - 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, - 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x7f, - 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, - 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, - 0xff, 0x01, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, - 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor EArrowCursor = { - {earrow_bitmap16, earrow_bitmap24, earrow_bitmap32}, - {earrow_mask16, earrow_mask24, earrow_mask32}, - {{10, 7}, {8, 11}, {22, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_E_ARROW] = &EArrowCursor; - END_CURSOR_BLOCK; - - /********************** West Arrow Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char warrow_bitmap16[] = { - 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x01, 0xf8, - 0x00, 0x7c, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x01, - 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char warrow_mask16[] = { - 0x80, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x03, 0xfc, - 0x01, 0xfe, 0x00, 0x7f, 0x00, 0xfe, 0x00, 0xfc, 0x01, 0xf8, 0x03, - 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x80, 0x00, 0x00, 0x00, - }; - - static char warrow_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, - 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, - 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char warrow_mask24[] = { - 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x1f, - 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, - 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, - 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char warrow_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfe, - 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, - 0x3f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, - 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, - 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, - 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, - 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char warrow_mask32[] = { - 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, - 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, - 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, - 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, - 0xff, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, - 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x80, 0xff, - 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, - 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static BCursor WArrowCursor = { - {warrow_bitmap16, warrow_bitmap24, warrow_bitmap32}, - {warrow_mask16, warrow_mask24, warrow_mask32}, - {{5, 7}, {7, 11}, {9, 15}}, - true, - }; - - BlenderCursor[WM_CURSOR_W_ARROW] = &WArrowCursor; - END_CURSOR_BLOCK; - - /********************** Stop Sign Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char stop_bitmap16[] = { - 0x00, 0x00, 0xe0, 0x07, 0xf8, 0x1f, 0x1c, 0x3c, 0x3c, 0x30, 0x76, - 0x70, 0xe6, 0x60, 0xc6, 0x61, 0x86, 0x63, 0x06, 0x67, 0x0e, 0x6e, - 0x0c, 0x3c, 0x3c, 0x38, 0xf8, 0x1f, 0xe0, 0x07, 0x00, 0x00, - }; - - static char stop_mask16[] = { - 0xe0, 0x07, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, 0x7e, 0x7c, 0xff, - 0xf8, 0xff, 0xf1, 0xef, 0xf3, 0xcf, 0xf7, 0x8f, 0xff, 0x1f, 0xff, - 0x3e, 0x7e, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xe0, 0x07, - }; - - static char stop_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xc3, 0x07, - 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x78, 0x00, 0x1c, 0x00, 0xf8, 0x00, 0x18, 0x00, 0xdc, 0x01, - 0x38, 0x00, 0x8c, 0x03, 0x30, 0x00, 0x0e, 0x07, 0x70, 0x00, 0x06, 0x0e, 0x60, 0x00, 0x06, - 0x1c, 0x60, 0x00, 0x06, 0x38, 0x60, 0x00, 0x06, 0x70, 0x60, 0x00, 0x0e, 0xe0, 0x70, 0x00, - 0x0c, 0xc0, 0x31, 0x00, 0x1c, 0x80, 0x3b, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x38, 0x00, 0x1e, - 0x00, 0xf0, 0x00, 0x0f, 0x00, 0xe0, 0xc3, 0x07, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x7e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char stop_mask24[] = { - 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f, - 0x00, 0xf8, 0xc3, 0x1f, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0xfc, 0x01, 0x3c, 0x00, 0xfe, 0x03, - 0x7c, 0x00, 0xde, 0x07, 0x78, 0x00, 0x9f, 0x0f, 0xf8, 0x00, 0x0f, 0x1f, 0xf0, 0x00, 0x0f, - 0x3e, 0xf0, 0x00, 0x0f, 0x7c, 0xf0, 0x00, 0x0f, 0xf8, 0xf0, 0x00, 0x1f, 0xf0, 0xf9, 0x00, - 0x1e, 0xe0, 0x7b, 0x00, 0x3e, 0xc0, 0x7f, 0x00, 0x3c, 0x80, 0x3f, 0x00, 0xfc, 0x00, 0x3f, - 0x00, 0xf8, 0xc3, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x80, 0xff, - 0x01, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char stop_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, - 0x00, 0xc0, 0x1f, 0xf8, 0x03, 0xe0, 0x03, 0xc0, 0x07, 0xf0, 0x01, 0x80, 0x0f, 0xf0, 0x03, - 0x00, 0x0f, 0xf8, 0x07, 0x00, 0x1e, 0xbc, 0x0f, 0x00, 0x3c, 0x1c, 0x1f, 0x00, 0x38, 0x1c, - 0x3e, 0x00, 0x38, 0x1e, 0x7c, 0x00, 0x78, 0x0e, 0xf8, 0x00, 0x70, 0x0e, 0xf0, 0x01, 0x70, - 0x0e, 0xe0, 0x03, 0x70, 0x0e, 0xc0, 0x07, 0x70, 0x0e, 0x80, 0x0f, 0x70, 0x0e, 0x00, 0x1f, - 0x70, 0x1e, 0x00, 0x3e, 0x78, 0x1c, 0x00, 0x7c, 0x38, 0x1c, 0x00, 0xf8, 0x38, 0x3c, 0x00, - 0xf0, 0x3d, 0x78, 0x00, 0xe0, 0x1f, 0xf0, 0x00, 0xc0, 0x0f, 0xf0, 0x01, 0x80, 0x0f, 0xe0, - 0x03, 0xc0, 0x07, 0xc0, 0x1f, 0xf8, 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, - 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char stop_mask32[] = { - 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, - 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xfc, 0x0f, - 0xc0, 0x3f, 0xfe, 0x1f, 0x80, 0x7f, 0xfe, 0x3f, 0x00, 0x7f, 0xfe, 0x7f, 0x00, 0x7e, 0xbf, - 0xff, 0x00, 0xfc, 0x3f, 0xff, 0x01, 0xfc, 0x3f, 0xfe, 0x03, 0xfc, 0x1f, 0xfc, 0x07, 0xf8, - 0x1f, 0xf8, 0x0f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf8, 0x1f, 0xe0, 0x3f, 0xf8, 0x3f, 0xc0, 0x7f, - 0xfc, 0x3f, 0x80, 0xff, 0xfc, 0x3f, 0x00, 0xff, 0xfd, 0x7e, 0x00, 0xfe, 0x7f, 0xfe, 0x00, - 0xfc, 0x7f, 0xfe, 0x01, 0xf8, 0x7f, 0xfc, 0x03, 0xf0, 0x3f, 0xf8, 0x07, 0xe0, 0x1f, 0xf8, - 0x3f, 0xfc, 0x1f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x01, - 0x00, 0xff, 0xff, 0x00, 0x00, 0xf8, 0x1f, 0x00, - }; - - static BCursor StopCursor = { - {stop_bitmap16, stop_bitmap24, stop_bitmap32}, - {stop_mask16, stop_mask24, stop_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_STOP] = &StopCursor; - END_CURSOR_BLOCK; - - /********************** Zoom In Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char zoomin_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xb8, 0x03, 0xbc, - 0x07, 0x0c, 0x06, 0xbc, 0x07, 0xb8, 0x03, 0xf8, 0x0b, 0xe0, 0x14, - 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x00, 0x90, 0x00, 0x60, - }; - - static char zoomin_mask16[] = { - 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xfc, 0x07, 0xfc, 0x07, 0xfe, - 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0xf8, 0x1f, - 0xe0, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0x60, - }; - - static char zoomin_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, - 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, - 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfc, - 0x7e, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xbf, 0x01, 0x00, 0xf0, 0x5f, 0x02, 0x00, - 0xc0, 0x27, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x80, 0x20, - 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char zoomin_mask24[] = { - 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, - 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, - 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, - 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x03, 0x00, - 0xf0, 0xff, 0x07, 0x00, 0xc0, 0xe7, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, - 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char zoomin_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, - 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf8, 0xe7, - 0x1f, 0x00, 0xf8, 0xe7, 0x1f, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0x7c, - 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x3e, 0x00, 0xfc, 0xe7, 0x3f, 0x00, 0xfc, 0xe7, 0x3f, 0x00, - 0xf8, 0xe7, 0x1f, 0x00, 0xf8, 0xe7, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x4f, - 0x00, 0xe0, 0xff, 0xe7, 0x00, 0x80, 0xff, 0xb1, 0x01, 0x00, 0x7e, 0x18, 0x03, 0x00, 0x00, - 0x0c, 0x06, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, - 0x00, 0xc0, 0x60, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc6, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, - }; - - static char zoomin_mask32[] = { - 0x00, 0x7e, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f, - 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff, - 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, - 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0x03, 0x80, 0xff, - 0xff, 0x07, 0x00, 0x7e, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, - 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, - }; - - static BCursor ZoomInCursor = { - {zoomin_bitmap16, zoomin_bitmap24, zoomin_bitmap32}, - {zoomin_mask16, zoomin_mask24, zoomin_mask32}, - {{6, 6}, {8, 8}, {11, 11}}, - false, - }; - - BlenderCursor[WM_CURSOR_ZOOM_IN] = &ZoomInCursor; - END_CURSOR_BLOCK; - - /********************** Zoom Out Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char zoomout_bitmap16[] = { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0xfc, - 0x07, 0x0c, 0x06, 0xfc, 0x07, 0xf8, 0x03, 0xf8, 0x0b, 0xe0, 0x14, - 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x00, 0x90, 0x00, 0x60, - }; - - static char zoomout_mask16[] = { - 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x03, 0xfc, 0x07, 0xfc, 0x07, 0xfe, - 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfc, 0x07, 0xfc, 0x0f, 0xf8, 0x1f, - 0xe0, 0x3e, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0x60, - }; - - static char zoomout_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, - 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, - 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, - 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0xbf, 0x01, 0x00, 0xf0, 0x5f, 0x02, 0x00, - 0xc0, 0x27, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x80, 0x20, - 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char zoomout_mask24[] = { - 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, - 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, - 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfe, - 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0xf8, 0xff, 0x03, 0x00, - 0xf0, 0xff, 0x07, 0x00, 0xc0, 0xe7, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, - 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char zoomout_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f, - 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, - 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x7e, - 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, - 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x5f, - 0x00, 0xf8, 0xff, 0x9f, 0x00, 0xf0, 0xff, 0x0f, 0x01, 0xc0, 0xff, 0x03, 0x02, 0x00, 0x7e, - 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x20, 0x20, 0x00, - 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x38, - }; - - static char zoomout_mask32[] = { - 0x00, 0x7e, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x1f, - 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, - 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, - 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, - 0x00, 0xfc, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0xc0, 0xff, - 0xff, 0x07, 0x00, 0x7e, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, - 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x38, - }; - - static BCursor ZoomOutCursor = { - {zoomout_bitmap16, zoomout_bitmap24, zoomout_bitmap32}, - {zoomout_mask16, zoomout_mask24, zoomout_mask32}, - {{6, 6}, {8, 8}, {11, 11}}, - false, - }; - - BlenderCursor[WM_CURSOR_ZOOM_OUT] = &ZoomOutCursor; - END_CURSOR_BLOCK; - - /********************** Area Pick Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char pick_area_bitmap16[] = { - 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x10, - 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0xbf, 0x00, 0x81, 0x00, 0x81, - 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x80, 0x00, 0xff, - }; - - static char pick_area_mask16[] = { - 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0xff, 0x01, 0xff, 0x01, 0xff, - 0x01, 0x38, 0x00, 0xb8, 0x7f, 0xb8, 0xff, 0x80, 0xc1, 0x80, 0xc1, - 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xff, 0x00, 0xff, - }; - - static char pick_area_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf, 0x00, 0x00, - 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, - 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, - 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char pick_area_mask24[] = { - 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x70, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0xfc, 0x7f, 0x00, 0x70, 0xfc, 0xff, 0x00, 0x00, - 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, - 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, - 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0xfc, - 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char pick_area_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x1f, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x8e, 0x63, 0x00, 0x30, 0x8e, 0x63, - 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, - 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x30, 0x8e, 0x63, - 0x00, 0x30, 0x8e, 0x63, 0x00, 0x00, 0x00, 0x00, - }; - - static char pick_area_mask32[] = { - 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x3f, - 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0x00, 0xe0, 0x79, 0xdf, 0xf7, 0xe0, 0x79, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7, - 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, - 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0xf0, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7, - 0x00, 0x78, 0xdf, 0xf7, 0x00, 0x78, 0xdf, 0xf7, - }; - - static BCursor PickAreaCursor = { - {pick_area_bitmap16, pick_area_bitmap24, pick_area_bitmap32}, - {pick_area_mask16, pick_area_mask24, pick_area_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_PICK_AREA] = &PickAreaCursor; - END_CURSOR_BLOCK; - - /********************** Right Handle Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char right_handle_bitmap16[] = { - 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x70, 0x00, 0x70, 0x08, 0x70, - 0x18, 0x70, 0x38, 0x70, 0x78, 0x70, 0x78, 0x70, 0x38, 0x70, 0x18, - 0x70, 0x08, 0x70, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00, - }; - - static char right_handle_mask16[] = { - 0xff, 0x00, 0xff, 0x00, 0xff, 0x04, 0xff, 0x0c, 0xf8, 0x1c, 0xf8, - 0x3c, 0xf8, 0x7c, 0xf8, 0xfc, 0xf8, 0xfc, 0xf8, 0x7c, 0xf8, 0x3c, - 0xf8, 0x1c, 0xff, 0x0c, 0xff, 0x04, 0xff, 0x00, 0xff, 0x00, - }; - - static char right_handle_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x03, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87, - 0x00, 0x00, 0x0e, 0x87, 0x01, 0x00, 0x0e, 0x87, 0x03, 0x00, 0x0e, 0x87, 0x07, 0x00, 0x0e, - 0x87, 0x0f, 0x00, 0x0e, 0x87, 0x0f, 0x00, 0x0e, 0x87, 0x07, 0x00, 0x0e, 0x87, 0x03, 0x00, - 0x0e, 0x87, 0x01, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char right_handle_mask24[] = { - 0x7e, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, - 0x00, 0xfe, 0x07, 0x00, 0x00, 0xc0, 0x4f, 0x00, 0x00, 0x80, 0xcf, 0x00, 0x00, 0x8e, 0xcf, - 0x01, 0x00, 0x9f, 0xcf, 0x03, 0x00, 0x9f, 0xcf, 0x07, 0x00, 0x9f, 0xcf, 0x0f, 0x00, 0x9f, - 0xcf, 0x1f, 0x00, 0x9f, 0xcf, 0x1f, 0x00, 0x9f, 0xcf, 0x0f, 0x00, 0x9f, 0xcf, 0x07, 0x00, - 0x9f, 0xcf, 0x03, 0x00, 0x8e, 0xcf, 0x01, 0x00, 0x80, 0xcf, 0x00, 0x00, 0xc0, 0x4f, 0x00, - 0x00, 0xfe, 0x07, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x01, - 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char right_handle_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0xfc, 0x0f, - 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x0c, 0x00, 0x3c, 0x3c, 0x1c, 0x00, 0x3c, 0x3c, 0x3c, - 0x00, 0x3c, 0x3c, 0x7c, 0x00, 0x3c, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x1c, 0x00, 0x3c, 0x3c, - 0x0c, 0x00, 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, - 0x80, 0x1f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, - 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char right_handle_mask32[] = { - 0x00, 0xfc, 0x01, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xfe, 0x1f, - 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x3c, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x02, 0x00, 0x7e, 0x7e, 0x06, 0x00, - 0x7e, 0x7e, 0x0e, 0x00, 0x7e, 0x7e, 0x1e, 0x00, 0x7e, 0x7e, 0x3e, 0x00, 0x7e, 0x7e, 0x7e, - 0x00, 0x7e, 0x7e, 0xfe, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x3e, 0x00, 0x7e, 0x7e, - 0x1e, 0x00, 0x7e, 0x7e, 0x0e, 0x00, 0x7e, 0x7e, 0x06, 0x00, 0x7e, 0x7e, 0x02, 0x00, 0x7e, - 0x7e, 0x00, 0x00, 0x3c, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xfe, 0x0f, 0x00, - 0x00, 0xfe, 0x07, 0x00, 0x00, 0xfc, 0x01, 0x00, - }; - - static BCursor RightHandleCursor = { - {right_handle_bitmap16, right_handle_bitmap24, right_handle_bitmap32}, - {right_handle_mask16, right_handle_mask24, right_handle_mask32}, - {{6, 7}, {10, 11}, {19, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_RIGHT_HANDLE] = &RightHandleCursor; - END_CURSOR_BLOCK; - - /********************** Left Handle Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char left_handle_bitmap16[] = { - 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x0e, 0x10, 0x0e, 0x18, - 0x0e, 0x1c, 0x0e, 0x1e, 0x0e, 0x1e, 0x0e, 0x1c, 0x0e, 0x18, 0x0e, - 0x10, 0x0e, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, - }; - - static char left_handle_mask16[] = { - 0x00, 0xff, 0x00, 0xff, 0x20, 0xff, 0x30, 0xff, 0x38, 0x1f, 0x3c, - 0x1f, 0x3e, 0x1f, 0x3f, 0x1f, 0x3f, 0x1f, 0x3e, 0x1f, 0x3c, 0x1f, - 0x38, 0x1f, 0x30, 0xff, 0x20, 0xff, 0x00, 0xff, 0x00, 0xff, - }; - - static char left_handle_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x0f, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x20, 0x1c, - 0x00, 0x00, 0x30, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x0e, 0x00, 0x3c, 0x1c, 0x0e, 0x00, 0x3e, - 0x1c, 0x0e, 0x00, 0x3e, 0x1c, 0x0e, 0x00, 0x3c, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x30, 0x1c, 0x0e, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xc0, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char left_handle_mask24[] = { - 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x1f, - 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x40, 0x7e, 0x00, 0x00, 0x60, 0x3e, 0x00, 0x00, 0x70, 0x3e, - 0x0e, 0x00, 0x78, 0x3e, 0x1f, 0x00, 0x7c, 0x3e, 0x1f, 0x00, 0x7e, 0x3e, 0x1f, 0x00, 0x7f, - 0x3e, 0x1f, 0x00, 0x7f, 0x3e, 0x1f, 0x00, 0x7e, 0x3e, 0x1f, 0x00, 0x7c, 0x3e, 0x1f, 0x00, - 0x78, 0x3e, 0x1f, 0x00, 0x70, 0x3e, 0x0e, 0x00, 0x60, 0x3e, 0x00, 0x00, 0x40, 0x7e, 0x00, - 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xf0, - 0x1f, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char left_handle_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xf0, 0x3f, - 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x20, - 0x3c, 0x3c, 0x00, 0x30, 0x3c, 0x3c, 0x00, 0x38, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x00, - 0x3e, 0x3c, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x00, 0x38, 0x3c, 0x3c, 0x00, 0x30, 0x3c, 0x3c, - 0x00, 0x20, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, - 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0x3f, 0x00, - 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char left_handle_mask32[] = { - 0x00, 0x80, 0x3f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x7e, - 0x00, 0x00, 0x00, 0x7e, 0x3c, 0x00, 0x40, 0x7e, 0x7e, 0x00, 0x60, 0x7e, 0x7e, 0x00, 0x70, - 0x7e, 0x7e, 0x00, 0x78, 0x7e, 0x7e, 0x00, 0x7c, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x00, - 0x7f, 0x7e, 0x7e, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x7c, 0x7e, 0x7e, 0x00, 0x78, 0x7e, 0x7e, - 0x00, 0x70, 0x7e, 0x7e, 0x00, 0x60, 0x7e, 0x7e, 0x00, 0x40, 0x7e, 0x7e, 0x00, 0x00, 0x7e, - 0x7e, 0x00, 0x00, 0x7e, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0x7f, 0x00, - 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, - }; - - static BCursor LeftHandleCursor = { - {left_handle_bitmap16, left_handle_bitmap24, left_handle_bitmap32}, - {left_handle_mask16, left_handle_mask24, left_handle_mask32}, - {{9, 7}, {12, 11}, {12, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_LEFT_HANDLE] = &LeftHandleCursor; - END_CURSOR_BLOCK; - - /********************** Both Handles Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char both_handles_bitmap16[] = { - 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x60, 0x06, 0x60, 0x06, 0x64, - 0x26, 0x66, 0x66, 0x67, 0xe6, 0x67, 0xe6, 0x66, 0x66, 0x64, 0x26, - 0x60, 0x06, 0x60, 0x06, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, - }; - - static char both_handles_mask16[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xfe, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, - 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - }; - - static char both_handles_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0xfe, 0xc1, 0x3f, - 0x00, 0xe0, 0xc1, 0x03, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, - 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x88, 0xe3, 0x08, 0x00, 0x8c, 0xe3, 0x18, 0x00, 0x8e, - 0xe3, 0x38, 0x00, 0x8e, 0xe3, 0x38, 0x00, 0x8c, 0xe3, 0x18, 0x00, 0x88, 0xe3, 0x08, 0x00, - 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0xc0, 0xe3, 0x01, - 0x00, 0xe0, 0xc1, 0x01, 0x00, 0xfe, 0xc1, 0x3f, 0x00, 0xfe, 0x80, 0x3f, 0x00, 0x3e, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char both_handles_mask24[] = { - 0x3e, 0x00, 0x3e, 0x00, 0xff, 0x80, 0x7f, 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xff, 0xe3, 0x7f, - 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0xd0, 0xf7, - 0x05, 0x00, 0xd8, 0xf7, 0x0d, 0x00, 0xdc, 0xf7, 0x1d, 0x00, 0xde, 0xf7, 0x3d, 0x00, 0xdf, - 0xf7, 0x7d, 0x00, 0xdf, 0xf7, 0x7d, 0x00, 0xde, 0xf7, 0x3d, 0x00, 0xdc, 0xf7, 0x1d, 0x00, - 0xd8, 0xf7, 0x0d, 0x00, 0xd0, 0xf7, 0x05, 0x00, 0xc0, 0xf7, 0x01, 0x00, 0xe0, 0xf7, 0x03, - 0x00, 0xfe, 0xe3, 0x3f, 0x00, 0xff, 0xe3, 0x7f, 0x00, 0xff, 0xc1, 0x7f, 0x00, 0xff, 0x80, - 0x7f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char both_handles_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x80, 0x3f, 0xfc, 0x07, 0xe0, 0x3f, 0xfc, 0x0f, 0xf0, - 0x3f, 0xfc, 0x1f, 0xf8, 0x3f, 0x80, 0x1f, 0xf8, 0x01, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x3c, - 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x20, - 0x3c, 0x3c, 0x04, 0x30, 0x3c, 0x3c, 0x0c, 0x38, 0x3c, 0x3c, 0x1c, 0x3c, 0x3c, 0x3c, 0x3c, - 0x3e, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x38, 0x3c, 0x3c, 0x1c, 0x30, 0x3c, 0x3c, - 0x0c, 0x20, 0x3c, 0x3c, 0x04, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, - 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x80, - 0x1f, 0xf8, 0x01, 0xfc, 0x1f, 0xf8, 0x3f, 0xfc, 0x0f, 0xf0, 0x3f, 0xfc, 0x07, 0xe0, 0x3f, - 0xfc, 0x01, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, - }; - - static char both_handles_mask32[] = { - 0xfc, 0x01, 0x80, 0x3f, 0xfe, 0x07, 0xe0, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f, 0xfe, 0x1f, 0xf8, - 0x7f, 0xfe, 0x3f, 0xfc, 0x7f, 0xfc, 0x3f, 0xfc, 0x3f, 0x80, 0x7f, 0xfe, 0x01, 0x00, 0x7e, - 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x40, 0x7e, 0x7e, 0x02, 0x60, 0x7e, 0x7e, 0x06, 0x70, - 0x7e, 0x7e, 0x0e, 0x78, 0x7e, 0x7e, 0x1e, 0x7c, 0x7e, 0x7e, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7f, 0x7e, 0x7e, 0xfe, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x3e, 0x78, 0x7e, 0x7e, - 0x1e, 0x70, 0x7e, 0x7e, 0x0e, 0x60, 0x7e, 0x7e, 0x06, 0x40, 0x7e, 0x7e, 0x02, 0x00, 0x7e, - 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x80, 0x7f, 0xfe, 0x01, 0xfc, - 0x3f, 0xfc, 0x3f, 0xfe, 0x3f, 0xfc, 0x7f, 0xfe, 0x1f, 0xf8, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f, - 0xfe, 0x07, 0xe0, 0x7f, 0xfc, 0x01, 0x80, 0x3f, - }; - - static BCursor BothHandlesCursor = { - {both_handles_bitmap16, both_handles_bitmap24, both_handles_bitmap32}, - {both_handles_mask16, both_handles_mask24, both_handles_mask32}, - {{7, 7}, {11, 11}, {15, 15}}, - false, - }; - - BlenderCursor[WM_CURSOR_BOTH_HANDLES] = &BothHandlesCursor; - END_CURSOR_BLOCK; - - /********************** Blade Cursor ***********************/ - BEGIN_CURSOR_BLOCK; - - static char blade_bitmap16[] = { - 0x00, 0x00, 0x90, 0x00, 0xf8, 0x01, 0xdc, 0x03, 0xce, 0x07, 0xc4, - 0x0f, 0xbc, 0x1f, 0x7e, 0x3e, 0x7c, 0x7e, 0xf8, 0x3d, 0xf0, 0x23, - 0xe0, 0x73, 0xc0, 0x3b, 0x80, 0x1f, 0x00, 0x09, 0x00, 0x00, - }; - - static char blade_mask16[] = { - 0x90, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07, 0xff, 0x0f, 0xfe, - 0x1f, 0xfe, 0x3f, 0xff, 0x7f, 0xfe, 0xff, 0xfc, 0x7f, 0xf8, 0x7f, - 0xf0, 0xff, 0xe0, 0x7f, 0xc0, 0x3f, 0x80, 0x1f, 0x00, 0x09, - }; - - static char blade_bitmap24[] = { - 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, - 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x1e, 0x3f, 0x00, 0x00, 0x0c, 0x7f, 0x00, 0x00, 0x0c, 0xfc, - 0x00, 0x00, 0x7e, 0xfc, 0x01, 0x00, 0x7e, 0xf8, 0x03, 0x00, 0xfc, 0xc1, 0x07, 0x00, 0xf8, - 0xc3, 0x0f, 0x00, 0xf0, 0xc3, 0x1f, 0x00, 0xe0, 0x83, 0x3f, 0x00, 0xc0, 0x1f, 0x7e, 0x00, - 0x80, 0x3f, 0x7e, 0x00, 0x00, 0x3f, 0x30, 0x00, 0x00, 0xfe, 0x30, 0x00, 0x00, 0xfc, 0x78, - 0x00, 0x00, 0xf8, 0x7c, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char blade_mask24[] = { - 0x30, 0x03, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, - 0x00, 0xff, 0x3f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, - 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0xff, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xfc, - 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0x00, - 0xc0, 0xff, 0xff, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, - 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, - 0x1f, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static char blade_bitmap32[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 0x00, 0xc0, 0x79, 0x00, 0x00, 0xe0, 0xff, 0x00, - 0x00, 0xf0, 0xff, 0x01, 0x00, 0xf8, 0xfc, 0x03, 0x00, 0x7c, 0xfc, 0x07, 0x00, 0x3e, 0xfe, - 0x0f, 0x00, 0x1c, 0xf8, 0x1f, 0x00, 0x98, 0xc8, 0x3f, 0x00, 0xf8, 0xc0, 0x7f, 0x00, 0xfc, - 0xe3, 0xff, 0x00, 0xfe, 0xc1, 0xff, 0x01, 0xfe, 0x89, 0xff, 0x03, 0xfc, 0x1f, 0xfc, 0x07, - 0xf8, 0x3f, 0xfc, 0x0f, 0xf0, 0x3f, 0xfc, 0x1f, 0xe0, 0x3f, 0xf8, 0x3f, 0xc0, 0xff, 0x91, - 0x7f, 0x80, 0xff, 0x83, 0x7f, 0x00, 0xff, 0xc7, 0x3f, 0x00, 0xfe, 0x03, 0x1f, 0x00, 0xfc, - 0x13, 0x19, 0x00, 0xf8, 0x1f, 0x38, 0x00, 0xf0, 0x7f, 0x7c, 0x00, 0xe0, 0x3f, 0x3e, 0x00, - 0xc0, 0x3f, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x9e, 0x03, - 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, - }; - - static char blade_mask32[] = { - 0x80, 0x30, 0x00, 0x00, 0xc0, 0x79, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0x01, - 0x00, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0xff, 0xff, - 0x1f, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x00, 0xfe, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x0f, - 0xfc, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0x7f, 0xe0, 0xff, 0xff, - 0xff, 0xc0, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xfe, - 0xff, 0x3f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf0, 0xff, 0x7f, 0x00, - 0xe0, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xff, 0x07, - 0x00, 0x00, 0x9e, 0x03, 0x00, 0x00, 0x0c, 0x01, - }; - - static BCursor BladeCursor = { - {blade_bitmap16, blade_bitmap24, blade_bitmap32}, - {blade_mask16, blade_mask24, blade_mask32}, - {{1, 4}, {1, 5}, {1, 7}}, - false, - }; - - BlenderCursor[WM_CURSOR_BLADE] = &BladeCursor; - END_CURSOR_BLOCK; - - /********************** Put the cursors in the array ***********************/ - -#ifndef NDEBUG - /* Assert if any cursors are empty. */ - for (int i = 1; i < WM_CURSOR_NUM; i++) { - if (i == WM_CURSOR_NONE) { - continue; - } - BLI_assert(BlenderCursor[i] != nullptr); - } -#endif + wm_add_cursor(WM_CURSOR_DEFAULT, datatoc_cursor_pointer_svg, 0.0f, 0.0f); + wm_add_cursor(WM_CURSOR_NW_ARROW, datatoc_cursor_pointer_svg, 0.0f, 0.0f); + wm_add_cursor(WM_CURSOR_COPY, datatoc_cursor_pointer_svg, 0.0f, 0.0f); + wm_add_cursor(WM_CURSOR_MOVE, datatoc_cursor_pointer_svg, 0.0f, 0.0f); + wm_add_cursor(WM_CURSOR_TEXT_EDIT, datatoc_cursor_text_edit_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_WAIT, datatoc_cursor_wait_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_STOP, datatoc_cursor_stop_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_EDIT, datatoc_cursor_crosshair_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_HAND, datatoc_cursor_hand_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_HAND_CLOSED, datatoc_cursor_hand_closed_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_HAND_POINT, datatoc_cursor_hand_point_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_CROSS, datatoc_cursor_crosshair_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_PAINT, datatoc_cursor_paint_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_DOT, datatoc_cursor_dot_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_CROSSC, datatoc_cursor_crossc_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_KNIFE, datatoc_cursor_knife_svg, 0.0f, 1.0f); + wm_add_cursor(WM_CURSOR_BLADE, datatoc_cursor_blade_svg, 0.0f, 0.375f); + wm_add_cursor(WM_CURSOR_VERTEX_LOOP, datatoc_cursor_vertex_loop_svg, 0.0f, 0.0f); + wm_add_cursor(WM_CURSOR_PAINT_BRUSH, datatoc_cursor_pencil_svg, 0.0f, 1.0f); + wm_add_cursor(WM_CURSOR_ERASER, datatoc_cursor_eraser_svg, 0.0f, 1.0f); + wm_add_cursor(WM_CURSOR_EYEDROPPER, datatoc_cursor_eyedropper_svg, 0.0f, 1.0f); + wm_add_cursor(WM_CURSOR_SWAP_AREA, datatoc_cursor_swap_area_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_X_MOVE, datatoc_cursor_x_move_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_EW_ARROW, datatoc_cursor_x_move_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_Y_MOVE, datatoc_cursor_y_move_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_NS_ARROW, datatoc_cursor_y_move_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_H_SPLIT, datatoc_cursor_h_split_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_V_SPLIT, datatoc_cursor_v_split_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_N_ARROW, datatoc_cursor_n_arrow_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_S_ARROW, datatoc_cursor_s_arrow_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_E_ARROW, datatoc_cursor_e_arrow_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_W_ARROW, datatoc_cursor_w_arrow_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_NSEW_SCROLL, datatoc_cursor_nsew_scroll_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_EW_SCROLL, datatoc_cursor_ew_scroll_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_NS_SCROLL, datatoc_cursor_ns_scroll_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_ZOOM_IN, datatoc_cursor_zoom_in_svg, 0.32f, 0.32f); + wm_add_cursor(WM_CURSOR_ZOOM_OUT, datatoc_cursor_zoom_out_svg, 0.32f, 0.32f); + wm_add_cursor(WM_CURSOR_MUTE, datatoc_cursor_mute_svg, 0.59f, 0.59f); + wm_add_cursor(WM_CURSOR_PICK_AREA, datatoc_cursor_pick_area_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_BOTH_HANDLES, datatoc_cursor_both_handles_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_RIGHT_HANDLE, datatoc_cursor_right_handle_svg, 0.5f, 0.5f); + wm_add_cursor(WM_CURSOR_LEFT_HANDLE, datatoc_cursor_left_handle_svg, 0.5f, 0.5f); } diff --git a/source/blender/windowmanager/intern/wm_window.cc b/source/blender/windowmanager/intern/wm_window.cc index 82c2c01bd0d..d2fd58b9819 100644 --- a/source/blender/windowmanager/intern/wm_window.cc +++ b/source/blender/windowmanager/intern/wm_window.cc @@ -2201,6 +2201,9 @@ eWM_CapabilitiesFlag WM_capabilities_flag() if (ghost_flag & GHOST_kCapabilityKeyboardHyperKey) { flag |= WM_CAPABILITY_KEYBOARD_HYPER_KEY; } + if (ghost_flag & GHOST_kCapabilityRGBACursors) { + flag |= WM_CAPABILITY_RGBA_CURSORS; + } return flag; }