Mercurial > sdl-ios-xcode
diff src/video/gem/SDL_gemmouse.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | 417f2af2bd52 |
children | 091bb215baf9 |
line wrap: on
line diff
--- a/src/video/gem/SDL_gemmouse.c Thu Jul 06 18:01:37 2006 +0000 +++ b/src/video/gem/SDL_gemmouse.c Mon Jul 10 21:04:37 2006 +0000 @@ -33,7 +33,6 @@ #include "../../events/SDL_events_c.h" #include "../SDL_cursor_c.h" #include "SDL_gemmouse_c.h" -#include "SDL_gemvideo.h" /* Defines */ @@ -42,144 +41,138 @@ #define MAXCURWIDTH 16 #define MAXCURHEIGHT 16 -void GEM_FreeWMCursor(_THIS, WMcursor *cursor) +/* The implementation dependent data for the window manager cursor */ +struct WMcursor { -#ifdef DEBUG_VIDEO_GEM - printf("sdl:video:gem: free cursor\n"); -#endif + MFORM *mform_p; +}; + - if (cursor == NULL) - return; - - graf_mouse(ARROW, NULL); +void +GEM_FreeWMCursor(_THIS, WMcursor * cursor) +{ + if (cursor == NULL) + return; - if (cursor->mform_p != NULL) - SDL_free(cursor->mform_p); + graf_mouse(ARROW, NULL); - SDL_free(cursor); + if (cursor->mform_p != NULL) + SDL_free(cursor->mform_p); + + SDL_free(cursor); } -WMcursor *GEM_CreateWMCursor(_THIS, - Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) +WMcursor * +GEM_CreateWMCursor(_THIS, + Uint8 * data, Uint8 * mask, int w, int h, int hot_x, + int hot_y) { - WMcursor *cursor; - MFORM *new_mform; - int i; + WMcursor *cursor; + MFORM *new_mform; + int i; + + /* Check the size */ + if ((w > MAXCURWIDTH) || (h > MAXCURHEIGHT)) { + SDL_SetError("Only cursors of dimension (%dx%d) are allowed", + MAXCURWIDTH, MAXCURHEIGHT); + return (NULL); + } + + /* Allocate the cursor memory */ + cursor = (WMcursor *) SDL_malloc(sizeof(WMcursor)); + if (cursor == NULL) { + SDL_OutOfMemory(); + return (NULL); + } + + /* Allocate mform */ + new_mform = (MFORM *) SDL_malloc(sizeof(MFORM)); + if (new_mform == NULL) { + SDL_free(cursor); + SDL_OutOfMemory(); + return (NULL); + } + + cursor->mform_p = new_mform; + + new_mform->mf_xhot = hot_x; + new_mform->mf_yhot = hot_y; + new_mform->mf_nplanes = 1; + new_mform->mf_fg = 0; + new_mform->mf_bg = 1; + + for (i = 0; i < MAXCURHEIGHT; i++) { + new_mform->mf_mask[i] = 0; + new_mform->mf_data[i] = 0; + } + + if (w <= 8) { + for (i = 0; i < h; i++) { + new_mform->mf_mask[i] = mask[i] << 8; + new_mform->mf_data[i] = data[i] << 8; + } + } else { + for (i = 0; i < h; i++) { + new_mform->mf_mask[i] = mask[i << 1] << 8 | mask[(i << 1) + 1]; + new_mform->mf_data[i] = data[i << 1] << 8 | data[(i << 1) + 1]; + } + } #ifdef DEBUG_VIDEO_GEM - Uint16 *data1, *mask1; + for (i = 0; i < h; i++) { + printf("sdl:video:gem: cursor, line %d = 0x%04x\n", i, + new_mform->mf_mask[i]); + } - printf("sdl:video:gem: create cursor\n"); + printf("sdl:video:gem: CreateWMCursor(): done\n"); #endif - /* Check the size */ - if ( (w > MAXCURWIDTH) || (h > MAXCURHEIGHT) ) { - SDL_SetError("Only cursors of dimension (%dx%d) are allowed", - MAXCURWIDTH, MAXCURHEIGHT); - return(NULL); - } - - /* Allocate the cursor memory */ - cursor = (WMcursor *)SDL_malloc(sizeof(WMcursor)); - if ( cursor == NULL ) { - SDL_OutOfMemory(); - return(NULL); - } - - /* Allocate mform */ - new_mform = (MFORM *)SDL_malloc(sizeof(MFORM)); - if (new_mform == NULL) { - SDL_free(cursor); - SDL_OutOfMemory(); - return(NULL); - } - - cursor->mform_p = new_mform; - - new_mform->mf_xhot = hot_x; - new_mform->mf_yhot = hot_y; - new_mform->mf_nplanes = 1; - new_mform->mf_fg = 0; - new_mform->mf_bg = 1; - - for (i=0;i<MAXCURHEIGHT;i++) { - new_mform->mf_mask[i]=0; - new_mform->mf_data[i]=0; -#ifdef DEBUG_VIDEO_GEM - data1 = (Uint16 *) &data[i<<1]; - mask1 = (Uint16 *) &mask[i<<1]; - printf("sdl:video:gem: source: line %d: data=0x%04x, mask=0x%04x\n", - i, data1[i], mask1[i]); -#endif - } - - if (w<=8) { - for (i=0;i<h;i++) { - new_mform->mf_mask[i]= mask[i]<<8; - new_mform->mf_data[i]= data[i]<<8; - } - } else { - for (i=0;i<h;i++) { - new_mform->mf_mask[i]= (mask[i<<1]<<8) | mask[(i<<1)+1]; - new_mform->mf_data[i]= (data[i<<1]<<8) | data[(i<<1)+1]; - } - } - -#ifdef DEBUG_VIDEO_GEM - for (i=0; i<h ;i++) { - printf("sdl:video:gem: cursor: line %d: data=0x%04x, mask=0x%04x\n", - i, new_mform->mf_data[i], new_mform->mf_mask[i]); - } - - printf("sdl:video:gem: CreateWMCursor(): done\n"); -#endif - - return cursor; + return cursor; } -int GEM_ShowWMCursor(_THIS, WMcursor *cursor) +int +GEM_ShowWMCursor(_THIS, WMcursor * cursor) { - GEM_cursor = cursor; +/* if (cursor == NULL) { graf_mouse(M_OFF, NULL); - GEM_cursor = (void *) -1; } else if (cursor->mform_p) { graf_mouse(USER_DEF, cursor->mform_p); } - +*/ #ifdef DEBUG_VIDEO_GEM - printf("sdl:video:gem: ShowWMCursor(0x%08x)\n", (long) cursor); + printf("sdl:video:gem: ShowWMCursor(0x%08x)\n", (long) cursor); #endif - return 1; + return 1; } #if 0 -void GEM_WarpWMCursor(_THIS, Uint16 x, Uint16 y) +void +GEM_WarpWMCursor(_THIS, Uint16 x, Uint16 y) { - /* This seems to work only on AES 3.4 (Falcon) */ + /* This seems to work only on AES 3.4 (Falcon) */ - EVNTREC warpevent; - - warpevent.ap_event = APPEVNT_MOUSE; - warpevent.ap_value = (x << 16) | y; + EVNTREC warpevent; - appl_tplay(&warpevent, 1, 1000); + warpevent.ap_event = APPEVNT_MOUSE; + warpevent.ap_value = (x << 16) | y; + + appl_tplay(&warpevent, 1, 1000); } #endif -void GEM_CheckMouseMode(_THIS) +void +GEM_CheckMouseMode(_THIS) { -#ifdef DEBUG_VIDEO_GEM - printf("sdl:video:gem: check mouse mode\n"); -#endif + /* If the mouse is hidden and input is grabbed, we use relative mode */ + if ((!(SDL_cursorstate & CURSOR_VISIBLE)) && + /*(this->input_grab != SDL_GRAB_OFF) && *//* Damn GEM can not grab */ + (SDL_GetAppState() & SDL_APPACTIVE)) { + GEM_mouse_relative = SDL_TRUE; + } else { + GEM_mouse_relative = SDL_FALSE; + } +} - /* If the mouse is hidden and input is grabbed, we use relative mode */ - if ( (!(SDL_cursorstate & CURSOR_VISIBLE)) && - /*(this->input_grab != SDL_GRAB_OFF) && */ /* Damn GEM can not grab */ - (SDL_GetAppState() & SDL_APPACTIVE) ) { - GEM_mouse_relative = SDL_TRUE; - } else { - GEM_mouse_relative = SDL_FALSE; - } -} +/* vi: set ts=4 sw=4 expandtab: */