Add more mouse cursor types

This commit is contained in:
Joshua Granick
2014-12-29 13:41:13 -08:00
parent fe10d38dde
commit ed34459738
5 changed files with 171 additions and 25 deletions

View File

@@ -21,6 +21,8 @@ class Mouse {
if (!__hidden) {
__hidden = true;
#if (js && html5)
for (window in Application.__instance.windows) {
@@ -35,8 +37,6 @@ class Mouse {
#end
__hidden = true;
}
}
@@ -46,6 +46,8 @@ class Mouse {
if (__hidden) {
__hidden = false;
#if (js && html5)
var cacheValue = __cursor;
@@ -58,8 +60,6 @@ class Mouse {
#end
__hidden = false;
}
}
@@ -92,9 +92,18 @@ class Mouse {
window.element.style.cursor = switch (value) {
case ARROW: "default";
case CROSSHAIR: "crosshair";
case MOVE: "move";
case POINTER: "pointer";
case RESIZE_NESW: "nesw-resize";
case RESIZE_NS: "ns-resize";
case RESIZE_NWSE: "nwse-resize";
case RESIZE_WE: "ew-resize";
case TEXT: "text";
default: "default";
case WAIT: "wait";
case WAIT_ARROW: "wait";
default: "auto";
}
@@ -102,11 +111,20 @@ class Mouse {
#elseif (cpp || neko || nodejs)
var type = switch (value) {
var type:MouseCursorType = switch (value) {
case POINTER: MouseCursorType.POINTER;
case TEXT: MouseCursorType.TEXT;
default: MouseCursorType.DEFAULT;
case ARROW: ARROW;
case CROSSHAIR: CROSSHAIR;
case MOVE: MOVE;
case POINTER: POINTER;
case RESIZE_NESW: RESIZE_NESW;
case RESIZE_NS: RESIZE_NS;
case RESIZE_NWSE: RESIZE_NWSE;
case RESIZE_WE: RESIZE_WE;
case TEXT: TEXT;
case WAIT: WAIT;
case WAIT_ARROW: WAIT_ARROW;
default: DEFAULT;
}
@@ -137,8 +155,17 @@ class Mouse {
@:enum private abstract MouseCursorType(Int) {
var DEFAULT = 0;
var POINTER = 1;
var TEXT = 2;
var ARROW = 0;
var CROSSHAIR = 1;
var DEFAULT = 2;
var MOVE = 3;
var POINTER = 4;
var RESIZE_NESW = 5;
var RESIZE_NS = 6;
var RESIZE_NWSE = 7;
var RESIZE_WE = 8;
var TEXT = 9;
var WAIT = 10;
var WAIT_ARROW = 11;
}

View File

@@ -3,11 +3,18 @@ package lime.ui;
enum MouseCursor {
ARROW;
CROSSHAIR;
DEFAULT;
MOVE;
POINTER;
RESIZE_NESW;
RESIZE_NS;
RESIZE_NWSE;
RESIZE_WE;
TEXT;
WAIT;
WAIT_ARROW;
CUSTOM;
}

View File

@@ -7,9 +7,18 @@ namespace lime {
enum MouseCursor {
DEFAULT,
POINTER,
TEXT,
ARROW,
CROSSHAIR,
DEFAULT,
MOVE,
POINTER,
RESIZE_NESW,
RESIZE_NS,
RESIZE_NWSE,
RESIZE_WE,
TEXT,
WAIT,
WAIT_ARROW,
CUSTOM
};

View File

@@ -5,9 +5,18 @@ namespace lime {
MouseCursor Mouse::currentCursor = DEFAULT;
SDL_Cursor* SDLMouse::defaultCursor = 0;
SDL_Cursor* SDLMouse::arrowCursor = 0;
SDL_Cursor* SDLMouse::crosshairCursor = 0;
SDL_Cursor* SDLMouse::moveCursor = 0;
SDL_Cursor* SDLMouse::pointerCursor = 0;
SDL_Cursor* SDLMouse::resizeNESWCursor = 0;
SDL_Cursor* SDLMouse::resizeNSCursor = 0;
SDL_Cursor* SDLMouse::resizeNWSECursor = 0;
SDL_Cursor* SDLMouse::resizeWECursor = 0;
SDL_Cursor* SDLMouse::textCursor = 0;
SDL_Cursor* SDLMouse::waitCursor = 0;
SDL_Cursor* SDLMouse::waitArrowCursor = 0;
void Mouse::Hide () {
@@ -23,6 +32,28 @@ namespace lime {
switch (cursor) {
case CROSSHAIR:
if (!SDLMouse::crosshairCursor) {
SDLMouse::crosshairCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_CROSSHAIR);
}
SDL_SetCursor (SDLMouse::crosshairCursor);
break;
case MOVE:
if (!SDLMouse::moveCursor) {
SDLMouse::moveCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_SIZEALL);
}
SDL_SetCursor (SDLMouse::moveCursor);
break;
case POINTER:
if (!SDLMouse::pointerCursor) {
@@ -34,6 +65,50 @@ namespace lime {
SDL_SetCursor (SDLMouse::pointerCursor);
break;
case RESIZE_NESW:
if (!SDLMouse::resizeNESWCursor) {
SDLMouse::resizeNESWCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_SIZENESW);
}
SDL_SetCursor (SDLMouse::resizeNESWCursor);
break;
case RESIZE_NS:
if (!SDLMouse::resizeNSCursor) {
SDLMouse::resizeNSCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_SIZENS);
}
SDL_SetCursor (SDLMouse::resizeNSCursor);
break;
case RESIZE_NWSE:
if (!SDLMouse::resizeNWSECursor) {
SDLMouse::resizeNWSECursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_SIZENWSE);
}
SDL_SetCursor (SDLMouse::resizeNWSECursor);
break;
case RESIZE_WE:
if (!SDLMouse::resizeWECursor) {
SDLMouse::resizeWECursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_SIZEWE);
}
SDL_SetCursor (SDLMouse::resizeWECursor);
break;
case TEXT:
if (!SDLMouse::textCursor) {
@@ -45,15 +120,37 @@ namespace lime {
SDL_SetCursor (SDLMouse::textCursor);
break;
default:
case WAIT:
if (!SDLMouse::defaultCursor) {
if (!SDLMouse::waitCursor) {
SDLMouse::defaultCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_ARROW);
SDLMouse::waitCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_WAIT);
}
SDL_SetCursor (SDLMouse::defaultCursor);
SDL_SetCursor (SDLMouse::waitCursor);
break;
case WAIT_ARROW:
if (!SDLMouse::waitArrowCursor) {
SDLMouse::waitArrowCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_WAITARROW);
}
SDL_SetCursor (SDLMouse::waitArrowCursor);
break;
default:
if (!SDLMouse::arrowCursor) {
SDLMouse::arrowCursor = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_ARROW);
}
SDL_SetCursor (SDLMouse::arrowCursor);
break;
}
@@ -62,8 +159,6 @@ namespace lime {
}
}

View File

@@ -14,9 +14,17 @@ namespace lime {
public:
static SDL_Cursor* defaultCursor;
static SDL_Cursor* arrowCursor;
static SDL_Cursor* crosshairCursor;
static SDL_Cursor* moveCursor;
static SDL_Cursor* pointerCursor;
static SDL_Cursor* resizeNESWCursor;
static SDL_Cursor* resizeNSCursor;
static SDL_Cursor* resizeNWSECursor;
static SDL_Cursor* resizeWECursor;
static SDL_Cursor* textCursor;
static SDL_Cursor* waitCursor;
static SDL_Cursor* waitArrowCursor;
};