[Scummvm-cvs-logs] scummvm master -> 31aec8c581043f4a94eb8dfb1e1554c8300ab3b5
bluegr
bluegr at gmail.com
Sun Jan 13 16:29:00 CET 2013
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
31aec8c581 SCI: Some more work on scaling in SCI32
Commit: 31aec8c581043f4a94eb8dfb1e1554c8300ab3b5
https://github.com/scummvm/scummvm/commit/31aec8c581043f4a94eb8dfb1e1554c8300ab3b5
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-13T07:28:09-08:00
Commit Message:
SCI: Some more work on scaling in SCI32
Changed paths:
engines/sci/graphics/animate.h
engines/sci/graphics/frameout.cpp
engines/sci/graphics/frameout.h
diff --git a/engines/sci/graphics/animate.h b/engines/sci/graphics/animate.h
index 5e2e39e..52da7d6 100644
--- a/engines/sci/graphics/animate.h
+++ b/engines/sci/graphics/animate.h
@@ -51,7 +51,6 @@ enum ViewScaleSignals {
kScaleSignalDoScaling = 0x0001, // enables scaling when drawing that cel (involves scaleX and scaleY)
kScaleSignalGlobalScaling = 0x0002, // means that global scaling shall get applied on that cel (sets scaleX/scaleY)
kScaleSignalHoyle4SpecialHandling = 0x0004 // HOYLE4-exclusive: special handling inside kAnimate, is used when giving out cards
-
};
struct AnimateEntry {
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 220a7ed..e251bd3 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -421,7 +421,8 @@ void GfxFrameout::kernelUpdateScreenItem(reg_t object) {
itemEntry->signal = readSelectorValue(_segMan, object, SELECTOR(signal));
itemEntry->scaleSignal = readSelectorValue(_segMan, object, SELECTOR(scaleSignal));
- if (itemEntry->scaleSignal == 1) {
+
+ if (itemEntry->scaleSignal & kScaleSignalDoScaling32) {
itemEntry->scaleX = readSelectorValue(_segMan, object, SELECTOR(scaleX));
itemEntry->scaleY = readSelectorValue(_segMan, object, SELECTOR(scaleY));
} else {
@@ -743,10 +744,10 @@ void GfxFrameout::kernelFrameout() {
} else if (view) {
// Process global scaling, if needed.
// TODO: Seems like SCI32 always processes global scaling for scaled objects
- if (itemEntry->scaleSignal != 0 && itemEntry->scaleSignal != 1)
- error("Unknown scale signal: %d", itemEntry->scaleSignal);
// TODO: We can only process symmetrical scaling for now (i.e. same value for scaleX/scaleY)
- if (itemEntry->scaleSignal == 1 && itemEntry->scaleX == itemEntry->scaleY)
+ if ((itemEntry->scaleSignal & kScaleSignalDoScaling32) &&
+ !(itemEntry->scaleSignal & kScaleSignalDisableGlobalScaling32) &&
+ (itemEntry->scaleX == itemEntry->scaleY))
applyGlobalScaling(itemEntry, it->planeRect, view->getHeight(itemEntry->loopNo, itemEntry->celNo));
if ((itemEntry->scaleX == 128) && (itemEntry->scaleY == 128))
diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h
index 5dadca6..5ef7704 100644
--- a/engines/sci/graphics/frameout.h
+++ b/engines/sci/graphics/frameout.h
@@ -97,11 +97,18 @@ struct ScrollTextEntry {
typedef Common::Array<ScrollTextEntry> ScrollTextList;
+enum ViewScaleSignals32 {
+ kScaleSignalDoScaling32 = 0x0001, // enables scaling when drawing that cel (involves scaleX and scaleY)
+ kScaleSignalUnk1 = 0x0002, // unknown
+ kScaleSignalDisableGlobalScaling32 = 0x0004
+};
+
class GfxCache;
class GfxCoordAdjuster32;
class GfxPaint32;
class GfxPalette;
class GfxScreen;
+
/**
* Frameout class, kFrameout and relevant functions for SCI32 games
*/
More information about the Scummvm-git-logs
mailing list