[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