aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2010-06-20 13:15:45 +0000
committerMartin Kiewitz2010-06-20 13:15:45 +0000
commit871c9bdddeaee6756f5c8d943c2ff8ed337abd4d (patch)
tree94993cdfa8b855dc874d4d6459e5bc9c1b770fe1
parentdaf1429ca22e887d49e761304e60b47f46e97bbf (diff)
downloadscummvm-rg350-871c9bdddeaee6756f5c8d943c2ff8ed337abd4d.tar.gz
scummvm-rg350-871c9bdddeaee6756f5c8d943c2ff8ed337abd4d.tar.bz2
scummvm-rg350-871c9bdddeaee6756f5c8d943c2ff8ed337abd4d.zip
SCI: removing unneeded parameters inside SciPalette, cleanup of SciPalette
svn-id: r50076
-rw-r--r--engines/sci/graphics/cursor.cpp2
-rw-r--r--engines/sci/graphics/palette.cpp62
-rw-r--r--engines/sci/graphics/palette.h4
3 files changed, 34 insertions, 34 deletions
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index 369549cf7b..db42dac3dd 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -120,7 +120,7 @@ void GfxCursor::kernelSetShape(GuiResourceId resourceId) {
colorMapping[0] = 0; // Black is hardcoded
colorMapping[1] = _screen->getColorWhite(); // White is also hardcoded
colorMapping[2] = SCI_CURSOR_SCI0_TRANSPARENCYCOLOR;
- colorMapping[3] = _palette->matchColor(&_palette->_sysPalette, 170, 170, 170); // Grey
+ colorMapping[3] = _palette->matchColor(170, 170, 170); // Grey
// Seek to actual data
resourceData += 4;
diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index fbf3433c29..7fa76586ad 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -207,12 +207,12 @@ void GfxPalette::setEGA() {
setOnScreen();
}
-void GfxPalette::set(Palette *sciPal, bool force, bool forceRealMerge) {
+void GfxPalette::set(Palette *newPalette, bool force, bool forceRealMerge) {
uint32 systime = _sysPalette.timestamp;
- if (force || sciPal->timestamp != systime) {
- _sysPaletteChanged |= merge(sciPal, &_sysPalette, force, forceRealMerge);
- sciPal->timestamp = _sysPalette.timestamp;
+ if (force || newPalette->timestamp != systime) {
+ _sysPaletteChanged |= merge(newPalette, force, forceRealMerge);
+ newPalette->timestamp = _sysPalette.timestamp;
if (_sysPaletteChanged && _screen->_picNotValid == 0) { // && systime != _sysPalette.timestamp) {
// Removed timestamp checking, because this shouldnt be needed anymore. I'm leaving it commented just in
// case this causes regressions
@@ -222,7 +222,7 @@ void GfxPalette::set(Palette *sciPal, bool force, bool forceRealMerge) {
}
}
-bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealMerge) {
+bool GfxPalette::merge(Palette *pFrom, bool force, bool forceRealMerge) {
uint16 res;
int i,j;
bool paletteChanged = false;
@@ -234,13 +234,13 @@ bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealM
// SCI1.1+ doesnt do real merging anymore, but simply copying over the used colors from other palettes
for (i = 1; i < 255; i++) {
if (pFrom->colors[i].used) {
- if ((pFrom->colors[i].r != pTo->colors[i].r) || (pFrom->colors[i].g != pTo->colors[i].g) || (pFrom->colors[i].b != pTo->colors[i].b)) {
- pTo->colors[i].r = pFrom->colors[i].r;
- pTo->colors[i].g = pFrom->colors[i].g;
- pTo->colors[i].b = pFrom->colors[i].b;
+ if ((pFrom->colors[i].r != _sysPalette.colors[i].r) || (pFrom->colors[i].g != _sysPalette.colors[i].g) || (pFrom->colors[i].b != _sysPalette.colors[i].b)) {
+ _sysPalette.colors[i].r = pFrom->colors[i].r;
+ _sysPalette.colors[i].g = pFrom->colors[i].g;
+ _sysPalette.colors[i].b = pFrom->colors[i].b;
paletteChanged = true;
}
- pTo->colors[i].used = pFrom->colors[i].used;
+ _sysPalette.colors[i].used = pFrom->colors[i].used;
pFrom->mapping[i] = i;
}
}
@@ -250,12 +250,12 @@ bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealM
if (!pFrom->colors[i].used)// color is not used - so skip it
continue;
// forced palette merging or dest color is not used yet
- if (force || (!pTo->colors[i].used)) {
- pTo->colors[i].used = pFrom->colors[i].used;
- if ((pFrom->colors[i].r != pTo->colors[i].r) || (pFrom->colors[i].g != pTo->colors[i].g) || (pFrom->colors[i].b != pTo->colors[i].b)) {
- pTo->colors[i].r = pFrom->colors[i].r;
- pTo->colors[i].g = pFrom->colors[i].g;
- pTo->colors[i].b = pFrom->colors[i].b;
+ if (force || (!_sysPalette.colors[i].used)) {
+ _sysPalette.colors[i].used = pFrom->colors[i].used;
+ if ((pFrom->colors[i].r != _sysPalette.colors[i].r) || (pFrom->colors[i].g != _sysPalette.colors[i].g) || (pFrom->colors[i].b != _sysPalette.colors[i].b)) {
+ _sysPalette.colors[i].r = pFrom->colors[i].r;
+ _sysPalette.colors[i].g = pFrom->colors[i].g;
+ _sysPalette.colors[i].b = pFrom->colors[i].b;
paletteChanged = true;
}
pFrom->mapping[i] = i;
@@ -264,23 +264,23 @@ bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealM
// is the same color already at the same position? -> match it directly w/o lookup
// this fixes games like lsl1demo/sq5 where the same rgb color exists multiple times and where we would
// otherwise match the wrong one (which would result into the pixels affected (or not) by palette changes)
- if ((pTo->colors[i].r == pFrom->colors[i].r) && (pTo->colors[i].g == pFrom->colors[i].g) && (pTo->colors[i].b == pFrom->colors[i].b)) {
+ if ((_sysPalette.colors[i].r == pFrom->colors[i].r) && (_sysPalette.colors[i].g == pFrom->colors[i].g) && (_sysPalette.colors[i].b == pFrom->colors[i].b)) {
pFrom->mapping[i] = i;
continue;
}
// check if exact color could be matched
- res = matchColor(pTo, pFrom->colors[i].r, pFrom->colors[i].g, pFrom->colors[i].b);
+ res = matchColor(pFrom->colors[i].r, pFrom->colors[i].g, pFrom->colors[i].b);
if (res & 0x8000) { // exact match was found
pFrom->mapping[i] = res & 0xFF;
continue;
}
// no exact match - see if there is an unused color
for (j = 1; j < 256; j++)
- if (!pTo->colors[j].used) {
- pTo->colors[j].used = pFrom->colors[i].used;
- pTo->colors[j].r = pFrom->colors[i].r;
- pTo->colors[j].g = pFrom->colors[i].g;
- pTo->colors[j].b = pFrom->colors[i].b;
+ if (!_sysPalette.colors[j].used) {
+ _sysPalette.colors[j].used = pFrom->colors[i].used;
+ _sysPalette.colors[j].r = pFrom->colors[i].r;
+ _sysPalette.colors[j].g = pFrom->colors[i].g;
+ _sysPalette.colors[j].b = pFrom->colors[i].b;
pFrom->mapping[i] = j;
paletteChanged = true;
break;
@@ -288,25 +288,25 @@ bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealM
// if still no luck - set an approximate color
if (j == 256) {
pFrom->mapping[i] = res & 0xFF;
- pTo->colors[res & 0xFF].used |= 0x10;
+ _sysPalette.colors[res & 0xFF].used |= 0x10;
}
}
}
- pTo->timestamp = g_system->getMillis() * 60 / 1000;
+ _sysPalette.timestamp = g_system->getMillis() * 60 / 1000;
return paletteChanged;
}
-uint16 GfxPalette::matchColor(Palette *pPal, byte r, byte g, byte b) {
+uint16 GfxPalette::matchColor(byte r, byte g, byte b) {
byte found = 0xFF;
int diff = 0x2FFFF, cdiff;
int16 dr,dg,db;
for (int i = 1; i < 255; i++) {
- if ((!pPal->colors[i].used))
+ if ((!_sysPalette.colors[i].used))
continue;
- dr = pPal->colors[i].r - r;
- dg = pPal->colors[i].g - g;
- db = pPal->colors[i].b - b;
+ dr = _sysPalette.colors[i].r - r;
+ dg = _sysPalette.colors[i].g - g;
+ db = _sysPalette.colors[i].b - b;
// minimum squares match
cdiff = (dr*dr) + (dg*dg) + (db*db);
// minimum sum match (Sierra's)
@@ -372,7 +372,7 @@ void GfxPalette::kernelSetIntensity(uint16 fromColor, uint16 toColor, uint16 int
}
int16 GfxPalette::kernelFindColor(uint16 r, uint16 g, uint16 b) {
- return matchColor(&_sysPalette, r, g, b) & 0xFF;
+ return matchColor(r, g, b) & 0xFF;
}
// Returns true, if palette got changed
diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h
index 265f36ad54..b7767537a1 100644
--- a/engines/sci/graphics/palette.h
+++ b/engines/sci/graphics/palette.h
@@ -45,8 +45,8 @@ public:
void modifyAmigaPalette(byte *data);
void setEGA();
void set(Palette *sciPal, bool force, bool forceRealMerge = false);
- bool merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealMerge);
- uint16 matchColor(Palette *pPal, byte r, byte g, byte b);
+ bool merge(Palette *pFrom, bool force, bool forceRealMerge);
+ uint16 matchColor(byte r, byte g, byte b);
void getSys(Palette *pal);
void setOnScreen();