[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