Mercurial > sdl-ios-xcode
diff src/video/bwindow/SDL_sysmouse.cc @ 1662:782fd950bd46 SDL-1.3
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid.
The code is now run through a consistent indent format:
indent -i4 -nut -nsc -br -ce
The headers are being converted to automatically generate doxygen documentation.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 28 May 2006 13:04:16 +0000 |
parents | 376665398b25 |
children | 4da1ee79c9af |
line wrap: on
line diff
--- a/src/video/bwindow/SDL_sysmouse.cc Sun May 21 17:27:13 2006 +0000 +++ b/src/video/bwindow/SDL_sysmouse.cc Sun May 28 13:04:16 2006 +0000 @@ -26,7 +26,8 @@ #include "SDL_BWin.h" -extern "C" { +extern "C" +{ #include "SDL_sysmouse_c.h" @@ -34,105 +35,111 @@ #define PADDED_BITS(bits) ((bits+7)/8) /* The implementation dependent data for the window manager cursor */ -struct WMcursor { - char *bits; -}; + struct WMcursor + { + char *bits; + }; /* Can this be done in the BeOS? */ -WMcursor *BE_CreateWMCursor(_THIS, - Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) -{ - WMcursor *cursor; - int allowed_x; - int allowed_y; - int run, pad, i; - char *cptr; + WMcursor *BE_CreateWMCursor (_THIS, + Uint8 * data, Uint8 * mask, int w, int h, + int hot_x, int hot_y) + { + WMcursor *cursor; + int allowed_x; + int allowed_y; + int run, pad, i; + char *cptr; - allowed_x = 16; /* BeOS limitation */ - allowed_y = 16; /* BeOS limitation */ - if ( (w > allowed_x) || (h > allowed_y) ) { - SDL_SetError("Only cursors of dimension (%dx%d) are allowed", - allowed_x, allowed_y); - return(NULL); - } + allowed_x = 16; /* BeOS limitation */ + allowed_y = 16; /* BeOS limitation */ + if ((w > allowed_x) || (h > allowed_y)) + { + SDL_SetError ("Only cursors of dimension (%dx%d) are allowed", + allowed_x, allowed_y); + return (NULL); + } - /* Allocate the cursor */ - cursor = (WMcursor *)SDL_malloc(sizeof(WMcursor)); - if ( cursor == NULL ) { - SDL_OutOfMemory(); - return(NULL); - } - cursor->bits = (char *)SDL_malloc(4+2*((allowed_x/8)*allowed_y)); - if ( cursor->bits == NULL ) { - SDL_free(cursor); - SDL_OutOfMemory(); - return(NULL); - } - cursor->bits[0] = allowed_y; /* Size of the cursor */ - cursor->bits[1] = 1; /* Bit depth of cursor */ - cursor->bits[2] = hot_y; - cursor->bits[3] = hot_x; - cptr = &cursor->bits[4]; + /* Allocate the cursor */ + cursor = (WMcursor *) SDL_malloc (sizeof (WMcursor)); + if (cursor == NULL) { + SDL_OutOfMemory (); + return (NULL); + } + cursor->bits = + (char *) SDL_malloc (4 + 2 * ((allowed_x / 8) * allowed_y)); + if (cursor->bits == NULL) { + SDL_free (cursor); + SDL_OutOfMemory (); + return (NULL); + } + cursor->bits[0] = allowed_y; /* Size of the cursor */ + cursor->bits[1] = 1; /* Bit depth of cursor */ + cursor->bits[2] = hot_y; + cursor->bits[3] = hot_x; + cptr = &cursor->bits[4]; - /* Pad out to the normal cursor size */ - run = PADDED_BITS(w); - pad = PADDED_BITS(allowed_x)-run; - for ( i=0; i<h; ++i ) { - SDL_memcpy(cptr, data, run); - SDL_memset(cptr+run, 0, pad); - data += run; - cptr += (run+pad); - } - for ( ; i<allowed_y; ++i ) { - SDL_memset(cptr, 0, run+pad); - cptr += (run+pad); - } - for ( i=0; i<h; ++i ) { - /* FIXME: The mask should be OR'd with the data to turn - inverted color pixels black, since inverted color pixels - aren't supported under BeOS. - */ - SDL_memcpy(cptr, mask, run); - SDL_memset(cptr+run, 0, pad); - mask += run; - cptr += (run+pad); - } - for ( ; i<allowed_y; ++i ) { - SDL_memset(cptr, 0, run+pad); - cptr += (run+pad); - } - return(cursor); -} + /* Pad out to the normal cursor size */ + run = PADDED_BITS (w); + pad = PADDED_BITS (allowed_x) - run; + for (i = 0; i < h; ++i) { + SDL_memcpy (cptr, data, run); + SDL_memset (cptr + run, 0, pad); + data += run; + cptr += (run + pad); + } + for (; i < allowed_y; ++i) { + SDL_memset (cptr, 0, run + pad); + cptr += (run + pad); + } + for (i = 0; i < h; ++i) { + /* FIXME: The mask should be OR'd with the data to turn + inverted color pixels black, since inverted color pixels + aren't supported under BeOS. + */ + SDL_memcpy (cptr, mask, run); + SDL_memset (cptr + run, 0, pad); + mask += run; + cptr += (run + pad); + } + for (; i < allowed_y; ++i) { + SDL_memset (cptr, 0, run + pad); + cptr += (run + pad); + } + return (cursor); + } -int BE_ShowWMCursor(_THIS, WMcursor *cursor) -{ - if ( be_app->Lock() ) { - if ( cursor == NULL ) { - if ( SDL_BlankCursor != NULL ) { - be_app->SetCursor(SDL_BlankCursor->bits); - } - } else { - be_app->SetCursor(cursor->bits); - } - be_app->Unlock(); - } - return(1); -} + int BE_ShowWMCursor (_THIS, WMcursor * cursor) + { + if (be_app->Lock ()) { + if (cursor == NULL) { + if (SDL_BlankCursor != NULL) { + be_app->SetCursor (SDL_BlankCursor->bits); + } + } else { + be_app->SetCursor (cursor->bits); + } + be_app->Unlock (); + } + return (1); + } -void BE_FreeWMCursor(_THIS, WMcursor *cursor) -{ - SDL_free(cursor->bits); - SDL_free(cursor); -} + void BE_FreeWMCursor (_THIS, WMcursor * cursor) + { + SDL_free (cursor->bits); + SDL_free (cursor); + } /* Implementation by Christian Bauer <cbauer@student.physik.uni-mainz.de> */ -void BE_WarpWMCursor(_THIS, Uint16 x, Uint16 y) -{ - BPoint pt(x, y); - SDL_Win->Lock(); - SDL_Win->ConvertToScreen(&pt); - SDL_Win->Unlock(); - set_mouse_position((int32)pt.x, (int32)pt.y); -} + void BE_WarpWMCursor (_THIS, Uint16 x, Uint16 y) + { + BPoint pt (x, y); + SDL_Win->Lock (); + SDL_Win->ConvertToScreen (&pt); + SDL_Win->Unlock (); + set_mouse_position ((int32) pt.x, (int32) pt.y); + } -}; /* Extern C */ +}; /* Extern C */ + +/* vi: set ts=4 sw=4 expandtab: */