aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gui
diff options
context:
space:
mode:
authorMartin Kiewitz2009-10-20 18:45:46 +0000
committerMartin Kiewitz2009-10-20 18:45:46 +0000
commit1e1172af499dd995651e3f8a80d8af291f0f177d (patch)
tree2bbe3225d67b1a1cdbcdebbeffe6556c00fa5d7a /engines/sci/gui
parent1fb02d2c4b33f8341c659429a07661cbff1a43dc (diff)
downloadscummvm-rg350-1e1172af499dd995651e3f8a80d8af291f0f177d.tar.gz
scummvm-rg350-1e1172af499dd995651e3f8a80d8af291f0f177d.tar.bz2
scummvm-rg350-1e1172af499dd995651e3f8a80d8af291f0f177d.zip
SCI/newgui: Changed kPalette(animate) and implemented setFlags/unsetFlags
svn-id: r45277
Diffstat (limited to 'engines/sci/gui')
-rw-r--r--engines/sci/gui/gui.cpp8
-rw-r--r--engines/sci/gui/gui.h2
-rw-r--r--engines/sci/gui/gui_palette.cpp16
-rw-r--r--engines/sci/gui/gui_palette.h4
4 files changed, 28 insertions, 2 deletions
diff --git a/engines/sci/gui/gui.cpp b/engines/sci/gui/gui.cpp
index c2e7a17f06..707c8af7c5 100644
--- a/engines/sci/gui/gui.cpp
+++ b/engines/sci/gui/gui.cpp
@@ -461,6 +461,14 @@ void SciGui::paletteSet(GuiResourceId resourceId, uint16 flags) {
_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;
}
diff --git a/engines/sci/gui/gui.h b/engines/sci/gui/gui.h
index ba6d8b7ff9..697ad539f7 100644
--- a/engines/sci/gui/gui.h
+++ b/engines/sci/gui/gui.h
@@ -101,6 +101,8 @@ public:
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);
diff --git a/engines/sci/gui/gui_palette.cpp b/engines/sci/gui/gui_palette.cpp
index 83b94e2085..8f9558f7e5 100644
--- a/engines/sci/gui/gui_palette.cpp
+++ b/engines/sci/gui/gui_palette.cpp
@@ -269,7 +269,21 @@ void SciGuiPalette::setOnScreen() {
_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();
diff --git a/engines/sci/gui/gui_palette.h b/engines/sci/gui/gui_palette.h
index 9313d7e169..ea63f7fe0f 100644
--- a/engines/sci/gui/gui_palette.h
+++ b/engines/sci/gui/gui_palette.h
@@ -47,7 +47,9 @@ public:
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;