[Scummvm-cvs-logs] SF.net SVN: scummvm:[45277] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Oct 20 20:45:46 CEST 2009


Revision: 45277
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45277&view=rev
Author:   m_kiewitz
Date:     2009-10-20 18:45:46 +0000 (Tue, 20 Oct 2009)

Log Message:
-----------
SCI/newgui: Changed kPalette(animate) and implemented setFlags/unsetFlags

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui.h
    scummvm/trunk/engines/sci/gui/gui_palette.cpp
    scummvm/trunk/engines/sci/gui/gui_palette.h
    scummvm/trunk/engines/sci/gui32/gui32.cpp
    scummvm/trunk/engines/sci/gui32/gui32.h

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-20 18:45:46 UTC (rev 45277)
@@ -567,18 +567,26 @@
 			s->_gui->paletteSet(resourceId, flags);
 		}
 		break;
-	case 2: // Set flag to colors
-		warning("kPalette(2), set flag to colors");
+	case 2: { // Set palette-flag(s)
+		uint16 fromColor = CLIP<uint16>(argv[1].toUint16(), 1, 255);
+		uint16 toColor = CLIP<uint16>(argv[2].toUint16(), 1, 255);
+		uint16 flags = argv[3].toUint16();
+		s->_gui->paletteSetFlag(fromColor, toColor, flags);
 		break;
-	case 3:	// Clear flag to colors
-		warning("kPalette(3), clear flag to colors");
+	}
+	case 3:	{ // Remove palette-flag(s)
+		uint16 fromColor = CLIP<uint16>(argv[1].toUint16(), 1, 255);
+		uint16 toColor = CLIP<uint16>(argv[2].toUint16(), 1, 255);
+		uint16 flags = argv[3].toUint16();
+		s->_gui->paletteUnsetFlag(fromColor, toColor, flags);
 		break;
+	}
 	case 4:	{ // Set palette intensity
 		switch (argc) {
 		case 4:
 		case 5: {
-			uint16 fromColor = CLIP<int>(argv[1].toUint16(), 1, 255);
-			uint16 toColor = CLIP<int>(argv[2].toUint16(), 1, 255);
+			uint16 fromColor = CLIP<uint16>(argv[1].toUint16(), 1, 255);
+			uint16 toColor = CLIP<uint16>(argv[2].toUint16(), 1, 255);
 			uint16 intensity = argv[3].toUint16();
 			bool setPalette = (argc < 5) ? true : (argv[4].isNull()) ? true : false;
 
@@ -598,19 +606,13 @@
 		return make_reg(0, s->_gui->paletteFind(r, g, b));
 	}
 	case 6: { // Animate
-		switch (argc) {
-		case 4: {
-			uint16 fromColor = argv[1].toUint16();
-			uint16 toColor = argv[2].toUint16();
-			int16 speed = argv[3].toSint16();
+		int16 argNr;
+		for (argNr = 1; argNr < argc; argNr += 3) {
+			uint16 fromColor = argv[argNr].toUint16();
+			uint16 toColor = argv[argNr + 1].toUint16();
+			int16 speed = argv[argNr + 2].toSint16();
 			s->_gui->paletteAnimate(fromColor, toColor, speed);
-			break;
 		}
-		case 22:
-
-		default:
-			warning("kPalette(6) called with %d parameters", argc);
-		}
 		break;
 	}
 	case 7: { // Save palette to heap

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-20 18:45:46 UTC (rev 45277)
@@ -461,6 +461,14 @@
    _palette->setFromResource(resourceId, flags);
 }
 
+void SciGui::paletteSetFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+	_palette->setFlag(fromColor, toColor, flag);
+}
+
+void SciGui::paletteUnsetFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+	_palette->unsetFlag(fromColor, toColor, flag);
+}
+
 int16 SciGui::paletteFind(uint16 r, uint16 g, uint16 b) {
 	return _palette->matchColor(&_palette->_sysPalette, r, g, b) & 0xFF;
 }

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui/gui.h	2009-10-20 18:45:46 UTC (rev 45277)
@@ -101,6 +101,8 @@
 	virtual int16 picNotValid(int16 newPicNotValid);
 
 	virtual void paletteSet(GuiResourceId resourceNo, uint16 flags);
+	virtual void paletteSetFlag(uint16 fromColor, uint16 toColor, uint16 flag);
+	virtual void paletteUnsetFlag(uint16 fromColor, uint16 toColor, uint16 flag);
 	virtual int16 paletteFind(uint16 r, uint16 g, uint16 b);
 	virtual void paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity, bool setPalette);
 	virtual void paletteAnimate(uint16 fromColor, uint16 toColor, int16 speed);

Modified: scummvm/trunk/engines/sci/gui/gui_palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-20 18:45:46 UTC (rev 45277)
@@ -269,7 +269,21 @@
 	_screen->setPalette(&_sysPalette);
 }
 
-void SciGuiPalette::setIntensity(int fromColor, int toColor, int intensity, bool setPalette) {
+void SciGuiPalette::setFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+	uint16 colorNr;
+	for (colorNr = fromColor; colorNr < toColor; colorNr++) {
+		_sysPalette.colors[colorNr].used |= flag;
+	}
+}
+
+void SciGuiPalette::unsetFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+	uint16 colorNr;
+	for (colorNr = fromColor; colorNr < toColor; colorNr++) {
+		_sysPalette.colors[colorNr].used &= ~flag;
+	}
+}
+
+void SciGuiPalette::setIntensity(uint16 fromColor, uint16 toColor, uint16 intensity, bool setPalette) {
 	memset(&_sysPalette.intensity[0] + fromColor, intensity, toColor - fromColor);
 	if (setPalette)
 		setOnScreen();

Modified: scummvm/trunk/engines/sci/gui/gui_palette.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.h	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui/gui_palette.h	2009-10-20 18:45:46 UTC (rev 45277)
@@ -47,7 +47,9 @@
 
 	void setOnScreen();
 
-	void setIntensity(int fromColor, int toColor, int intensity, bool setPalette);
+	void setFlag(uint16 fromColor, uint16 toColor, uint16 flag);
+	void unsetFlag(uint16 fromColor, uint16 toColor, uint16 flag);
+	void setIntensity(uint16 fromColor, uint16 toColor, uint16 intensity, bool setPalette);
 	void animate(byte fromColor, byte toColor, int speed);
 
 	GuiPalette _sysPalette;

Modified: scummvm/trunk/engines/sci/gui32/gui32.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-20 18:45:46 UTC (rev 45277)
@@ -1346,6 +1346,12 @@
 	//warning("STUB");
 }
 
+void SciGui32::paletteSetFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+}
+
+void SciGui32::paletteUnsetFlag(uint16 fromColor, uint16 toColor, uint16 flag) {
+}
+
 int16 SciGui32::paletteFind(uint16 r, uint16 g, uint16 b) {
 	int i, delta, bestindex = -1, bestdelta = 200000;
 

Modified: scummvm/trunk/engines/sci/gui32/gui32.h
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-20 18:34:12 UTC (rev 45276)
+++ scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-20 18:45:46 UTC (rev 45277)
@@ -79,6 +79,8 @@
 	int16 picNotValid(int16 newPicNotValid);
 
 	void paletteSet(GuiResourceId resourceNo, uint16 flags);
+	void paletteSetFlag(uint16 fromColor, uint16 toColor, uint16 flag);
+	void paletteUnsetFlag(uint16 fromColor, uint16 toColor, uint16 flag);
 	int16 paletteFind(uint16 r, uint16 g, uint16 b);
 	void paletteSetIntensity(uint16 fromColor, uint16 toColor, uint16 intensity);
 	void paletteAnimate(uint16 fromColor, uint16 toColor, uint16 speed);


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