Extend setMouseCursor with additional keycolor parameter. Lets saga use 255
as white color. Made this function more safe by copying cursor data to newly created buffer. svn-id: r13777
This commit is contained in:
parent
5d0f0ea0c6
commit
b7e62e4b61
13 changed files with 76 additions and 29 deletions
|
@ -175,6 +175,8 @@ void OSystem_SDL::initSize(uint w, uint h) {
|
|||
free(_dirty_checksums);
|
||||
_dirty_checksums = (uint32 *)calloc(CKSUM_NUM * 2, sizeof(uint32));
|
||||
|
||||
_mouseData = NULL;
|
||||
|
||||
unload_gfx_mode();
|
||||
load_gfx_mode();
|
||||
}
|
||||
|
@ -992,7 +994,7 @@ void OSystem_SDL::warpMouse(int x, int y) {
|
|||
}
|
||||
}
|
||||
|
||||
void OSystem_SDL::setMouseCursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y) {
|
||||
void OSystem_SDL::setMouseCursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y, byte keycolor) {
|
||||
|
||||
undraw_mouse();
|
||||
|
||||
|
@ -1004,7 +1006,13 @@ void OSystem_SDL::setMouseCursor(const byte *buf, uint w, uint h, int hotspot_x,
|
|||
_mouseHotspotX = hotspot_x;
|
||||
_mouseHotspotY = hotspot_y;
|
||||
|
||||
_mouseData = buf;
|
||||
_mouseKeycolor = keycolor;
|
||||
|
||||
if (_mouseData)
|
||||
free(_mouseData);
|
||||
|
||||
_mouseData = (byte *)malloc(w * h);
|
||||
memcpy(_mouseData, buf, w * h);
|
||||
}
|
||||
|
||||
void OSystem_SDL::toggleMouseGrab() {
|
||||
|
@ -1063,7 +1071,7 @@ void OSystem_SDL::draw_mouse() {
|
|||
while (width > 0) {
|
||||
*bak++ = *dst;
|
||||
color = *src++;
|
||||
if (color != 0xFF) // 0xFF = transparent, don't draw
|
||||
if (color != _mouseKeycolor) // transparent, don't draw
|
||||
*dst = color;
|
||||
dst++;
|
||||
width--;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue