[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