[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