[Scummvm-cvs-logs] SF.net SVN: scummvm:[38822] scummvm/trunk/engines/sci/gfx/gfx_driver.cpp
wjpalenstijn at users.sourceforge.net
wjpalenstijn at users.sourceforge.net
Tue Feb 24 00:49:11 CET 2009
Revision: 38822
http://scummvm.svn.sourceforge.net/scummvm/?rev=38822&view=rev
Author: wjpalenstijn
Date: 2009-02-23 23:49:11 +0000 (Mon, 23 Feb 2009)
Log Message:
-----------
SCI: translate cursor's palette to global palette
Modified Paths:
--------------
scummvm/trunk/engines/sci/gfx/gfx_driver.cpp
Modified: scummvm/trunk/engines/sci/gfx/gfx_driver.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_driver.cpp 2009-02-23 22:36:39 UTC (rev 38821)
+++ scummvm/trunk/engines/sci/gfx/gfx_driver.cpp 2009-02-23 23:49:11 UTC (rev 38822)
@@ -268,7 +268,8 @@
// Mouse pointer operations
-static uint8 *create_scaled_cursor(gfx_driver_t *drv, gfx_pixmap_t *pointer, int mode)
+// Scale cursor and map its colors to the global palette
+static uint8 *create_cursor(gfx_driver_t *drv, gfx_pixmap_t *pointer, int mode)
{
int linewidth = pointer->xl;
int lines = pointer->yl;
@@ -280,8 +281,11 @@
pos = linebase;
for (int xc = 0; xc < pointer->index_xl; xc++) {
+ uint8 color = *src;
+ if (color != 255)
+ color = pointer->colors[color].global_index;
for (int scalectr = 0; scalectr < drv->mode->xfact; scalectr++) {
- *pos++ = *src;
+ *pos++ = color;
}
src++;
}
@@ -297,13 +301,9 @@
if (pointer == NULL) {
g_system->showMouse(false);
} else {
- if (drv->mode->xfact > 1 || drv->mode->yfact > 1) {
- delete[] S->pointer_data;
- S->pointer_data = create_scaled_cursor(drv, pointer, 1);
- g_system->setMouseCursor(S->pointer_data, pointer->xl, pointer->yl, pointer->xoffset, pointer->yoffset);
- } else {
- g_system->setMouseCursor(pointer->index_data, pointer->xl, pointer->yl, pointer->xoffset, pointer->yoffset);
- }
+ delete[] S->pointer_data;
+ S->pointer_data = create_cursor(drv, pointer, 1);
+ g_system->setMouseCursor(S->pointer_data, pointer->xl, pointer->yl, pointer->xoffset, pointer->yoffset);
g_system->showMouse(true);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list