1c041511dScube/*********************************************************** 2c041511dScube * Copyright (C) 1997, Be Inc. Copyright (C) 1999, Jake Hamby. 3c041511dScube * 4c041511dScube * This program is freely distributable without licensing fees 5c041511dScube * and is provided without guarantee or warrantee expressed or 6c041511dScube * implied. This program is -not- in the public domain. 7c041511dScube * 8c041511dScube * 9c041511dScube * FILE: glutCursor.cpp 10c041511dScube * 11c041511dScube * DESCRIPTION: code for handling custom mouse cursors 12c041511dScube ***********************************************************/ 13c041511dScube 14c041511dScube/*********************************************************** 15c041511dScube * Headers 16c041511dScube ***********************************************************/ 17c041511dScube#include <GL/glut.h> 18c041511dScube#include "glutint.h" 19c041511dScube#include "glutState.h" 20c041511dScube#include "glutCursors.h" 21c041511dScube 22c041511dScubestatic const unsigned char *cursorTable[] = { 23c041511dScube XC_arrow, /* GLUT_CURSOR_RIGHT_ARROW */ 24c041511dScube XC_top_left_arrow, /* GLUT_CURSOR_LEFT_ARROW */ 25c041511dScube XC_hand1, /* GLUT_CURSOR_INFO */ 26c041511dScube XC_pirate, /* GLUT_CURSOR_DESTROY */ 27c041511dScube XC_question_arrow, /* GLUT_CURSOR_HELP */ 28c041511dScube XC_exchange, /* GLUT_CURSOR_CYCLE */ 29c041511dScube XC_spraycan, /* GLUT_CURSOR_SPRAY */ 30c041511dScube XC_watch, /* GLUT_CURSOR_WAIT */ 31c041511dScube XC_xterm, /* GLUT_CURSOR_TEXT */ 32c041511dScube XC_crosshair, /* GLUT_CURSOR_CROSSHAIR */ 33c041511dScube XC_sb_v_double_arrow, /* GLUT_CURSOR_UP_DOWN */ 34c041511dScube XC_sb_h_double_arrow, /* GLUT_CURSOR_LEFT_RIGHT */ 35c041511dScube XC_top_side, /* GLUT_CURSOR_TOP_SIDE */ 36c041511dScube XC_bottom_side, /* GLUT_CURSOR_BOTTOM_SIDE */ 37c041511dScube XC_left_side, /* GLUT_CURSOR_LEFT_SIDE */ 38c041511dScube XC_right_side, /* GLUT_CURSOR_RIGHT_SIDE */ 39c041511dScube XC_top_left_corner, /* GLUT_CURSOR_TOP_LEFT_CORNER */ 40c041511dScube XC_top_right_corner, /* GLUT_CURSOR_TOP_RIGHT_CORNER */ 41c041511dScube XC_bottom_right_corner, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */ 42c041511dScube XC_bottom_left_corner, /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */ 43c041511dScube}; 44c041511dScube 45c041511dScube/*********************************************************** 46c041511dScube * FUNCTION: glutSetCursor (4.13) 47c041511dScube * 48c041511dScube * DESCRIPTION: set a new mouse cursor for current window 49c041511dScube ***********************************************************/ 50c041511dScubevoid glutSetCursor(int cursor) { 51c041511dScube gState.currentWindow->Window()->Lock(); 52c041511dScube gState.currentWindow->cursor = cursor; 53c041511dScube __glutSetCursor(cursor); 54c041511dScube gState.currentWindow->Window()->Unlock(); 55c041511dScube} 56c041511dScube 57c041511dScube/*********************************************************** 58c041511dScube * FUNCTION: __glutSetCursor 59c041511dScube * 60c041511dScube * DESCRIPTION: the actual cursor changing routine 61c041511dScube ***********************************************************/ 62c041511dScubevoid __glutSetCursor(int cursor) { 63c041511dScube int realcursor = cursor; 64c041511dScube if (cursor < 0 || cursor > GLUT_CURSOR_BOTTOM_LEFT_CORNER) { 65c041511dScube switch(cursor) { 66c041511dScube case GLUT_CURSOR_INHERIT: 67c041511dScube return; // don't change cursor 68c041511dScube case GLUT_CURSOR_NONE: 69c041511dScube // this hides the cursor until the user moves the mouse 70c041511dScube // change it to HideCursor() AT YOUR OWN RISK! 71c041511dScube be_app->ObscureCursor(); 72c041511dScube return; 73c041511dScube case GLUT_CURSOR_FULL_CROSSHAIR: 74c041511dScube realcursor = GLUT_CURSOR_CROSSHAIR; 75c041511dScube break; 76c041511dScube default: 77c041511dScube __glutWarning("unknown cursor\n"); 78c041511dScube return; 79c041511dScube } 80c041511dScube } 81c041511dScube be_app->SetCursor(cursorTable[realcursor]); 82c041511dScube} 83c041511dScube 84c041511dScube/*********************************************************** 85c041511dScube * FUNCTION: glutWarpPointer (x.xx) 86c041511dScube * 87c041511dScube * DESCRIPTION: move the mouse pointer to a new location 88c041511dScube * (note: can't do this in BeOS!) 89c041511dScube ***********************************************************/ 90c041511dScubevoid glutWarpPointer(int x, int y) { } 91