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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Oct 4 21:49:47 CEST 2009


Revision: 44631
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44631&view=rev
Author:   m_kiewitz
Date:     2009-10-04 19:49:47 +0000 (Sun, 04 Oct 2009)

Log Message:
-----------
SCI/newgui: implemented kPalette / set intensity

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_gfx.cpp
    scummvm/trunk/engines/sci/gui/gui_gfx.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-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-04 19:49:47 UTC (rev 44631)
@@ -1099,25 +1099,18 @@
 	case 3:
 		debug(5, "STUB: kPalette() effect 3, clear flag to colors");
 		break;
-	case 4:	{	// Set palette intensity
-#if 0
-		// Colors 0 (black) and 255 (white) cannot be changed
-		int16 from = CLIP<int16>(1, 255, argv[2].toUint16());
-		int16 to = CLIP<int16>(1, 255, argv[3].toUint16());
-		int16 intensity = argv[4].toUint16();
+	case 4:	{ // Set palette intensity
+		if (argc >= 4) {
+			int fromColor = CLIP<int>(1, 255, argv[1].toUint16());
+			int toColor = CLIP<int>(1, 255, argv[2].toUint16());
+			int intensity = argv[3].toUint16();
+			bool setPalette = (argc < 5) ? true : (argv[5].isNull()) ? true : false;
 
-		if (argc < 5 || argv[5].toUint16() == 0) {
-			s->gfx_state->gfxResMan->setPaletteIntensity(from, to, intensity);
-		} else {
-			warning("kPalette: argv[5] != 0");
+			s->gui->paletteSetIntensity(fromColor, toColor, intensity, setPalette);
 		}
-
-		return s->r_acc;
-#endif
-		debug(5, "STUB: kPalette() effect 4, set color intensity");
 		break;
-		}
-	case 5: {	// Find closest color
+	}
+	case 5: { // Find closest color
 		int r = argv[1].toUint16();
 		int g = argv[2].toUint16();
 		int b = argv[3].toUint16();

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-04 19:49:47 UTC (rev 44631)
@@ -312,6 +312,13 @@
 	return _gfx->MatchColor(&_gfx->_sysPalette, r, g, b) & 0xFF;
 }
 
+void SciGUI::paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette) {
+	_gfx->PaletteSetIntensity(fromColor, toColor, intensity, &_gfx->_sysPalette);
+	if (setPalette) {
+		_gfx->SetCLUT(&_gfx->_sysPalette);
+	}
+}
+
 void SciGUI::paletteAnimate(int fromColor, int toColor, int speed) {
 	_gfx->PaletteAnimate(fromColor, toColor, speed);
 }

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui/gui.h	2009-10-04 19:49:47 UTC (rev 44631)
@@ -72,6 +72,7 @@
 
 	virtual void paletteSet(int resourceNo, int flags);
 	virtual int16 paletteFind(int r, int g, int b);
+	virtual void paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette);
 	virtual void paletteAnimate(int fromColor, int toColor, int speed);
 
 	virtual int16 onControl(byte screenMask, Common::Rect rect);

Modified: scummvm/trunk/engines/sci/gui/gui_gfx.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_gfx.cpp	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui/gui_gfx.cpp	2009-10-04 19:49:47 UTC (rev 44631)
@@ -1224,6 +1224,10 @@
 	}
 }
 
+void SciGUIgfx::PaletteSetIntensity(int fromColor, int toColor, int intensity, GUIPalette *destPalette) {
+	memset(destPalette->intensity + fromColor, intensity, toColor - fromColor);
+}
+
 void SciGUIgfx::PaletteAnimate(byte fromColor, byte toColor, int speed) {
 	GUIColor col;
 	int len = toColor - fromColor - 1;

Modified: scummvm/trunk/engines/sci/gui/gui_gfx.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_gfx.h	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui/gui_gfx.h	2009-10-04 19:49:47 UTC (rev 44631)
@@ -110,6 +110,7 @@
 	void drawPicture(GUIResourceId pictureId, uint16 style, bool addToFlag, GUIResourceId paletteId);
 	void drawCell(GUIResourceId viewId, GUIViewLoopNo loopNo, GUIViewCellNo cellNo, uint16 leftPos, uint16 topPos, byte priority, uint16 paletteNo);
 
+	void PaletteSetIntensity(int fromColor, int toColor, int intensity, GUIPalette *destPalette);
 	void PaletteAnimate(byte fromColor, byte toColor, int speed);
 
 	int16 onControl(uint16 screenMask, Common::Rect rect);

Modified: scummvm/trunk/engines/sci/gui32/gui32.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-10-04 19:49:47 UTC (rev 44631)
@@ -708,6 +708,12 @@
 	return bestindex;
 }
 
+void SciGUI32::paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette) {
+#if 0
+	s->gfx_state->gfxResMan->setPaletteIntensity(fromColor, toColor, intensity);
+#endif
+}
+
 void SciGUI32::paletteAnimate(int fromColor, int toColor, int speed) {
 	warning("STUB");
 }

Modified: scummvm/trunk/engines/sci/gui32/gui32.h
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-04 18:51:01 UTC (rev 44630)
+++ scummvm/trunk/engines/sci/gui32/gui32.h	2009-10-04 19:49:47 UTC (rev 44631)
@@ -64,7 +64,8 @@
 	void graphRestoreBox(reg_t handle);
 
 	void paletteSet(int resourceNo, int flags);
-	virtual int16 paletteFind(int r, int g, int b);
+	int16 paletteFind(int r, int g, int b);
+	void paletteSetIntensity(int fromColor, int toColor, int intensity, bool setPalette);
 	void paletteAnimate(int fromColor, int toColor, int speed);
 
 	int16 onControl(byte screenMask, Common::Rect rect);


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