aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
diff options
context:
space:
mode:
authorMax Horn2011-05-09 14:41:49 +0200
committerMax Horn2011-05-09 14:41:49 +0200
commit76cf7bc907f7d8dafaddd01a42c843c6a06cd5f2 (patch)
treef2a99063ec926451c47b8e0433ca45db70ccb806 /engines/sci/graphics
parentb4058a696ab507991b6b8c8cf6c0bdd9cb5c714f (diff)
downloadscummvm-rg350-76cf7bc907f7d8dafaddd01a42c843c6a06cd5f2.tar.gz
scummvm-rg350-76cf7bc907f7d8dafaddd01a42c843c6a06cd5f2.tar.bz2
scummvm-rg350-76cf7bc907f7d8dafaddd01a42c843c6a06cd5f2.zip
SCI: Slight cleanup to undithering code
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r--engines/sci/graphics/picture.cpp2
-rw-r--r--engines/sci/graphics/screen.cpp10
-rw-r--r--engines/sci/graphics/screen.h39
3 files changed, 30 insertions, 21 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 82aae5399f..7209084446 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -512,7 +512,7 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) {
// WORKAROUND: we remove certain visual&priority lines in underwater rooms of iceman, when not dithering the
// picture. Normally those lines aren't shown, because they share the same color as the dithered
// fill color combination. When not dithering, those lines would appear and get distracting.
- if ((_screen->getUnditherState()) && ((_resourceId >= 53 && _resourceId <= 58) || (_resourceId == 61)))
+ if ((_screen->isUnditheringEnabled()) && ((_resourceId >= 53 && _resourceId <= 58) || (_resourceId == 61)))
icemanDrawFix = true;
}
if (g_sci->getGameId() == GID_KQ5) {
diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp
index f619780c7c..aa4ee0b638 100644
--- a/engines/sci/graphics/screen.cpp
+++ b/engines/sci/graphics/screen.cpp
@@ -111,7 +111,7 @@ GfxScreen::GfxScreen(ResourceManager *resMan) : _resMan(resMan) {
_picNotValid = 0;
_picNotValidSci11 = 0;
- _unditherState = true;
+ _unditheringEnabled = true;
_fontIsUpscaled = false;
if (_resMan->getViewType() != kViewEga) {
@@ -560,7 +560,7 @@ void GfxScreen::dither(bool addToFlag) {
byte *visualPtr = _visualScreen;
byte *displayPtr = _displayScreen;
- if (!_unditherState) {
+ if (!_unditheringEnabled) {
// Do dithering on visual and display-screen
for (y = 0; y < _height; y++) {
for (x = 0; x < _width; x++) {
@@ -624,12 +624,12 @@ void GfxScreen::ditherForceDitheredColor(byte color) {
_ditheredPicColors[color] = 256;
}
-void GfxScreen::debugUnditherSetState(bool flag) {
- _unditherState = flag;
+void GfxScreen::enableUndithering(bool flag) {
+ _unditheringEnabled = flag;
}
int16 *GfxScreen::unditherGetDitheredBgColors() {
- if (_unditherState)
+ if (_unditheringEnabled)
return (int16 *)&_ditheredPicColors;
else
return NULL;
diff --git a/engines/sci/graphics/screen.h b/engines/sci/graphics/screen.h
index 89ad52e0ac..bfe0a50b81 100644
--- a/engines/sci/graphics/screen.h
+++ b/engines/sci/graphics/screen.h
@@ -95,9 +95,10 @@ public:
return _upscaledHires;
}
- bool getUnditherState() const {
- return _unditherState;
+ bool isUnditheringEnabled() const {
+ return _unditheringEnabled;
}
+ void enableUndithering(bool flag);
void putKanjiChar(Graphics::FontSJIS *commonFont, int16 x, int16 y, uint16 chr, byte color);
byte getVisual(int x, int y);
@@ -119,7 +120,6 @@ public:
// Force a color combination as a dithered color
void ditherForceDitheredColor(byte color);
- void debugUnditherSetState(bool flag);
int16 *unditherGetDitheredBgColors();
void debugShowMap(int mapNo);
@@ -151,7 +151,10 @@ private:
void setVerticalShakePos(uint16 shakePos);
- bool _unditherState;
+ /**
+ * If this flag is true, undithering is enabled, otherwise disabled.
+ */
+ bool _unditheringEnabled;
int16 _ditheredPicColors[DITHERED_BG_COLORS_SIZE];
// These screens have the real resolution of the game engine (320x200 for
@@ -161,13 +164,13 @@ private:
byte *_priorityScreen;
byte *_controlScreen;
- // This screen is the one that is actually displayed to the user. It may be
- // 640x400 for japanese SCI1 games. SCI0 games may be undithered in here.
- // Only read from this buffer for Save/ShowBits usage.
+ /**
+ * This screen is the one that is actually displayed to the user. It may be
+ * 640x400 for japanese SCI1 games. SCI0 games may be undithered in here.
+ * Only read from this buffer for Save/ShowBits usage.
+ */
byte *_displayScreen;
- Common::Rect getScaledRect(Common::Rect rect);
-
ResourceManager *_resMan;
/**
@@ -176,16 +179,22 @@ private:
*/
byte *_activeScreen;
- // This variable defines, if upscaled hires is active and what upscaled mode
- // is used.
+ /**
+ * This variable defines, if upscaled hires is active and what upscaled mode
+ * is used.
+ */
GfxScreenUpscaledMode _upscaledHires;
- // This here holds a translation for vertical coordinates between native
- // (visual) and actual (display) screen.
+ /**
+ * This here holds a translation for vertical coordinates between native
+ * (visual) and actual (display) screen.
+ */
int _upscaledMapping[SCI_SCREEN_UPSCALEDMAXHEIGHT + 1];
- // This defines whether or not the font we're drawing is already scaled
- // to the screen size (and we therefore should not upscale it ourselves).
+ /**
+ * This defines whether or not the font we're drawing is already scaled
+ * to the screen size (and we therefore should not upscale it ourselves).
+ */
bool _fontIsUpscaled;
uint16 getLowResScreenHeight();