[Scummvm-cvs-logs] scummvm master -> 5a547bd242e3d09e34a4aa170f138d721120e155

bluegr bluegr at gmail.com
Wed Mar 16 00:51:40 CET 2016


This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
75527e3df5 SCI32: Remove getColorAtCoordinate()
b50d425387 SCI32: Global 12 contains the previous room
a393a1348a SCI32: Remove dead code related to priority map handling
f94ddfe5a6 SCI32: Spacing
1f47766b60 SCI32: Implement analyzeUncompressedForRemap()
5be798c92f SCI32: Implement the remapping drawing functions
5a547bd242 SCI32: Implement analyzeForRemap()


Commit: 75527e3df5349fe0cdbdc2ccc06a641d64849dc1
    https://github.com/scummvm/scummvm/commit/75527e3df5349fe0cdbdc2ccc06a641d64849dc1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:06+02:00

Commit Message:
SCI32: Remove getColorAtCoordinate()

The only calling code for this was removed in commit 3f2469c33ed6017d3c385fbbfd01a4e690987fbc

Changed paths:
    engines/sci/graphics/cache.cpp
    engines/sci/graphics/cache.h
    engines/sci/graphics/view.cpp
    engines/sci/graphics/view.h



diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp
index 59af833..fb1f557 100644
--- a/engines/sci/graphics/cache.cpp
+++ b/engines/sci/graphics/cache.cpp
@@ -102,8 +102,4 @@ int16 GfxCache::kernelViewGetCelCount(GuiResourceId viewId, int16 loopNo) {
 	return getView(viewId)->getCelCount(loopNo);
 }
 
-byte GfxCache::kernelViewGetColorAtCoordinate(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 x, int16 y) {
-	return getView(viewId)->getColorAtCoordinate(loopNo, celNo, x, y);
-}
-
 } // End of namespace Sci
diff --git a/engines/sci/graphics/cache.h b/engines/sci/graphics/cache.h
index 33fa4fe..6195271 100644
--- a/engines/sci/graphics/cache.h
+++ b/engines/sci/graphics/cache.h
@@ -49,8 +49,6 @@ public:
 	int16 kernelViewGetLoopCount(GuiResourceId viewId);
 	int16 kernelViewGetCelCount(GuiResourceId viewId, int16 loopNo);
 
-	byte kernelViewGetColorAtCoordinate(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 x, int16 y);
-
 private:
 	void purgeFontCache();
 	void purgeViewCache();
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp
index ff3fc70..1939e66 100644
--- a/engines/sci/graphics/view.cpp
+++ b/engines/sci/graphics/view.cpp
@@ -975,13 +975,4 @@ void GfxView::adjustBackUpscaledCoordinates(int16 &y, int16 &x) {
 	_screen->adjustBackUpscaledCoordinates(y, x, _sci2ScaleRes);
 }
 
-byte GfxView::getColorAtCoordinate(int16 loopNo, int16 celNo, int16 x, int16 y) {
-	const CelInfo *celInfo = getCelInfo(loopNo, celNo);
-	const byte *bitmap = getBitmap(loopNo, celNo);
-	const int16 celWidth = celInfo->width;
-
-	bitmap += (celWidth * y);
-	return bitmap[x];
-}
-
 } // End of namespace Sci
diff --git a/engines/sci/graphics/view.h b/engines/sci/graphics/view.h
index d8803db..9159020 100644
--- a/engines/sci/graphics/view.h
+++ b/engines/sci/graphics/view.h
@@ -85,8 +85,6 @@ public:
 	void adjustToUpscaledCoordinates(int16 &y, int16 &x);
 	void adjustBackUpscaledCoordinates(int16 &y, int16 &x);
 
-	byte getColorAtCoordinate(int16 loopNo, int16 celNo, int16 x, int16 y);
-
 private:
 	void initData(GuiResourceId resourceId);
 	void unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint32 pixelCount);


Commit: b50d425387ff88a09a8654fd5cd8ad76fc27a412
    https://github.com/scummvm/scummvm/commit/b50d425387ff88a09a8654fd5cd8ad76fc27a412
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:06+02:00

Commit Message:
SCI32: Global 12 contains the previous room

Changed paths:
    engines/sci/graphics/frameout.cpp



diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 99abb92..308a3a1 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -826,9 +826,7 @@ void GfxFrameout::palMorphFrameOut(const int8 *styleRanges, const ShowStyleEntry
 	Palette sourcePalette(*_palette->getNextPalette());
 	alterVmap(sourcePalette, sourcePalette, -1, styleRanges);
 
-	// TODO: unsure if this is what this variable actually
-	// represents, but it is the correct variable number
-	int16 lastRoom = g_sci->getEngineState()->variables[VAR_GLOBAL][12].toSint16();
+	int16 prevRoom = g_sci->getEngineState()->variables[VAR_GLOBAL][12].toSint16();
 
 	Common::Rect rect(_screen->getDisplayWidth(), _screen->getDisplayHeight());
 	_showList.add(rect);
@@ -869,7 +867,7 @@ void GfxFrameout::palMorphFrameOut(const int8 *styleRanges, const ShowStyleEntry
 
 	Palette nextPalette(*_palette->getNextPalette());
 
-	if (lastRoom < 1000) {
+	if (prevRoom < 1000) {
 		for (int i = 0; i < ARRAYSIZE(sourcePalette.colors); ++i) {
 			if (styleRanges[i] == -1 || styleRanges[i] == 0) {
 				sourcePalette.colors[i] = nextPalette.colors[i];


Commit: a393a1348ab01a7e2f00d5441bc04a26de44da47
    https://github.com/scummvm/scummvm/commit/a393a1348ab01a7e2f00d5441bc04a26de44da47
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:07+02:00

Commit Message:
SCI32: Remove dead code related to priority map handling

The priority map is not used at all in SCI32 at the engine level by
design, so all the relevant code that handles picture priority is
pretty much dead

Changed paths:
    engines/sci/graphics/celobj32.cpp
    engines/sci/graphics/celobj32.h
    engines/sci/graphics/frameout.cpp
    engines/sci/graphics/frameout.h



diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index eb71a45..34ae155 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -335,152 +335,87 @@ struct MAPPER_NoMDNoSkip {
 };
 
 void CelObj::draw(Buffer &target, const ScreenItem &screenItem, const Common::Rect &targetRect) const {
-	const Buffer &priorityMap = g_sci->_gfxFrameout->getPriorityMap();
 	const Common::Point &scaledPosition = screenItem._scaledPosition;
 	const Ratio &scaleX = screenItem._ratioX;
 	const Ratio &scaleY = screenItem._ratioY;
 
 	if (_remap) {
-		if (g_sci->_gfxFrameout->_hasRemappedScreenItem) {
-			const uint8 priority = MAX((int16)0, MIN((int16)255, screenItem._priority));
-
-			// NOTE: In the original engine code, there was a second branch for
-			// _remap here that would then call the following functions if _remap was false:
-			//
-			// drawHzFlip(Buffer &, Buffer &, Common::Rect &, Common::Point &, uint8)
-			// drawNoFlip(Buffer &, Buffer &, Common::Rect &, Common::Point &, uint8)
-			// drawUncompHzFlip(Buffer &, Buffer &, Common::Rect &, Common::Point &, uint8)
-			// drawUncompNoFlip(Buffer &, Buffer &, Common::Rect &, Common::Point &, uint8)
-			// scaleDraw(Buffer &, Buffer &, Ratio &, Ratio &, Common::Rect &, Common::Point &, uint8)
-			// scaleDrawUncomp(Buffer &, Buffer &, Ratio &, Ratio &, Common::Rect &, Common::Point &, uint8)
-			//
-			// However, obviously, _remap cannot be false here. This dead code branch existed in
-			// at least SCI2/GK1 and SCI2.1/SQ6.
-
+		// NOTE: In the original code this check was `g_Remap_numActiveRemaps && _remap`,
+		// but since we are already in a `_remap` branch, there is no reason to check it
+		// again
+		if (g_sci->_gfxRemap32->getRemapCount()) {
 			if (scaleX.isOne() && scaleY.isOne()) {
 				if (_compressionType == kCelCompressionNone) {
 					if (_drawMirrored) {
-						drawUncompHzFlipMap(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompHzFlipMap(target, targetRect, scaledPosition);
 					} else {
-						drawUncompNoFlipMap(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompNoFlipMap(target, targetRect, scaledPosition);
 					}
 				} else {
 					if (_drawMirrored) {
-						drawHzFlipMap(target, priorityMap, targetRect, scaledPosition, priority);
+						drawHzFlipMap(target, targetRect, scaledPosition);
 					} else {
-						drawNoFlipMap(target, priorityMap, targetRect, scaledPosition, priority);
+						drawNoFlipMap(target, targetRect, scaledPosition);
 					}
 				}
 			} else {
 				if (_compressionType == kCelCompressionNone) {
-					scaleDrawUncompMap(target, priorityMap, scaleX, scaleY, targetRect, scaledPosition, priority);
+					scaleDrawUncompMap(target, scaleX, scaleY, targetRect, scaledPosition);
 				} else {
-					scaleDrawMap(target, priorityMap, scaleX, scaleY, targetRect, scaledPosition, priority);
+					scaleDrawMap(target, scaleX, scaleY, targetRect, scaledPosition);
 				}
 			}
 		} else {
-			// NOTE: In the original code this check was `g_Remap_numActiveRemaps && _remap`,
-			// but since we are already in a `_remap` branch, there is no reason to check it
-			// again
-			if (g_sci->_gfxRemap32->getRemapCount()) {
-				if (scaleX.isOne() && scaleY.isOne()) {
-					if (_compressionType == kCelCompressionNone) {
-						if (_drawMirrored) {
-							drawUncompHzFlipMap(target, targetRect, scaledPosition);
-						} else {
-							drawUncompNoFlipMap(target, targetRect, scaledPosition);
-						}
+			if (scaleX.isOne() && scaleY.isOne()) {
+				if (_compressionType == kCelCompressionNone) {
+					if (_drawMirrored) {
+						drawUncompHzFlip(target, targetRect, scaledPosition);
 					} else {
-						if (_drawMirrored) {
-							drawHzFlipMap(target, targetRect, scaledPosition);
-						} else {
-							drawNoFlipMap(target, targetRect, scaledPosition);
-						}
+						drawUncompNoFlip(target, targetRect, scaledPosition);
 					}
 				} else {
-					if (_compressionType == kCelCompressionNone) {
-						scaleDrawUncompMap(target, scaleX, scaleY, targetRect, scaledPosition);
+					if (_drawMirrored) {
+						drawHzFlip(target, targetRect, scaledPosition);
 					} else {
-						scaleDrawMap(target, scaleX, scaleY, targetRect, scaledPosition);
+						drawNoFlip(target, targetRect, scaledPosition);
 					}
 				}
 			} else {
-				if (scaleX.isOne() && scaleY.isOne()) {
-					if (_compressionType == kCelCompressionNone) {
-						if (_drawMirrored) {
-							drawUncompHzFlip(target, targetRect, scaledPosition);
-						} else {
-							drawUncompNoFlip(target, targetRect, scaledPosition);
-						}
-					} else {
-						if (_drawMirrored) {
-							drawHzFlip(target, targetRect, scaledPosition);
-						} else {
-							drawNoFlip(target, targetRect, scaledPosition);
-						}
-					}
+				if (_compressionType == kCelCompressionNone) {
+					scaleDrawUncomp(target, scaleX, scaleY, targetRect, scaledPosition);
 				} else {
-					if (_compressionType == kCelCompressionNone) {
-						scaleDrawUncomp(target, scaleX, scaleY, targetRect, scaledPosition);
-					} else {
-						scaleDraw(target, scaleX, scaleY, targetRect, scaledPosition);
-					}
+					scaleDraw(target, scaleX, scaleY, targetRect, scaledPosition);
 				}
 			}
 		}
 	} else {
-		if (g_sci->_gfxFrameout->_hasRemappedScreenItem) {
-			const uint8 priority = MAX((int16)0, MIN((int16)255, screenItem._priority));
-			if (scaleX.isOne() && scaleY.isOne()) {
-				if (_compressionType == kCelCompressionNone) {
+		if (scaleX.isOne() && scaleY.isOne()) {
+			if (_compressionType == kCelCompressionNone) {
+				if (_transparent) {
 					if (_drawMirrored) {
-						drawUncompHzFlipNoMD(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompHzFlipNoMD(target, targetRect, scaledPosition);
 					} else {
-						drawUncompNoFlipNoMD(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompNoFlipNoMD(target, targetRect, scaledPosition);
 					}
 				} else {
 					if (_drawMirrored) {
-						drawHzFlipNoMD(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompHzFlipNoMDNoSkip(target, targetRect, scaledPosition);
 					} else {
-						drawNoFlipNoMD(target, priorityMap, targetRect, scaledPosition, priority);
+						drawUncompNoFlipNoMDNoSkip(target, targetRect, scaledPosition);
 					}
 				}
 			} else {
-				if (_compressionType == kCelCompressionNone) {
-					scaleDrawUncompNoMD(target, priorityMap, scaleX, scaleY, targetRect, scaledPosition, priority);
+				if (_drawMirrored) {
+					drawHzFlipNoMD(target, targetRect, scaledPosition);
 				} else {
-					scaleDrawNoMD(target, priorityMap, scaleX, scaleY, targetRect, scaledPosition, priority);
+					drawNoFlipNoMD(target, targetRect, scaledPosition);
 				}
 			}
 		} else {
-			if (scaleX.isOne() && scaleY.isOne()) {
-				if (_compressionType == kCelCompressionNone) {
-					if (_transparent) {
-						if (_drawMirrored) {
-							drawUncompHzFlipNoMD(target, targetRect, scaledPosition);
-						} else {
-							drawUncompNoFlipNoMD(target, targetRect, scaledPosition);
-						}
-					} else {
-						if (_drawMirrored) {
-							drawUncompHzFlipNoMDNoSkip(target, targetRect, scaledPosition);
-						} else {
-							drawUncompNoFlipNoMDNoSkip(target, targetRect, scaledPosition);
-						}
-					}
-				} else {
-					if (_drawMirrored) {
-						drawHzFlipNoMD(target, targetRect, scaledPosition);
-					} else {
-						drawNoFlipNoMD(target, targetRect, scaledPosition);
-					}
-				}
+			if (_compressionType == kCelCompressionNone) {
+				scaleDrawUncompNoMD(target, scaleX, scaleY, targetRect, scaledPosition);
 			} else {
-				if (_compressionType == kCelCompressionNone) {
-					scaleDrawUncompNoMD(target, scaleX, scaleY, targetRect, scaledPosition);
-				} else {
-					scaleDrawNoMD(target, scaleX, scaleY, targetRect, scaledPosition);
-				}
+				scaleDrawNoMD(target, scaleX, scaleY, targetRect, scaledPosition);
 			}
 		}
 	}
@@ -760,20 +695,6 @@ void CelObj::scaleDrawUncompNoMD(Buffer &target, const Ratio &scaleX, const Rati
 	}
 }
 
-// TODO: These functions may all be vestigial.
-void CelObj::drawHzFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawNoFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawUncompNoFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawUncompHzFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::scaleDrawMap(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::scaleDrawUncompMap(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawHzFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawNoFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawUncompNoFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::drawUncompHzFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::scaleDrawNoMD(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-void CelObj::scaleDrawUncompNoMD(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const {}
-
 #pragma mark -
 #pragma mark CelObjView
 CelObjView::CelObjView(const GuiResourceId viewId, const int16 loopNo, const int16 celNo) {
diff --git a/engines/sci/graphics/celobj32.h b/engines/sci/graphics/celobj32.h
index 14d9fa3..600ae82 100644
--- a/engines/sci/graphics/celobj32.h
+++ b/engines/sci/graphics/celobj32.h
@@ -394,18 +394,15 @@ private:
 	void drawUncompHzFlip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDraw(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDrawUncomp(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
+
 	void drawHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void drawNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void drawUncompNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void drawUncompHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDrawMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDrawUncompMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
-	void drawHzFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawNoFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawUncompNoFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawUncompHzFlipMap(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void scaleDrawMap(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void scaleDrawUncompMap(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
+	// NOTE: The original includes versions of the above functions with priority parameters, which were not actually used in SCI32
+
 	void drawHzFlipNoMD(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void drawNoFlipNoMD(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void drawUncompNoFlipNoMD(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
@@ -414,12 +411,7 @@ private:
 	void drawUncompHzFlipNoMDNoSkip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDrawNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
 	void scaleDrawUncompNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const;
-	void drawHzFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawNoFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawUncompNoFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void drawUncompHzFlipNoMD(Buffer &target, const Buffer &priorityMap, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void scaleDrawNoMD(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
-	void scaleDrawUncompNoMD(Buffer &target, const Buffer &priorityMap, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition, const uint8 priority) const;
+	// NOTE: The original includes versions of the above functions with priority parameters, which were not actually used in SCI32
 
 #pragma mark -
 #pragma mark CelObj - Caching
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 308a3a1..fc9f5d8 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -82,7 +82,6 @@ GfxFrameout::GfxFrameout(SegManager *segMan, ResourceManager *resMan, GfxCoordAd
 	_showStyles(nullptr),
 	// TODO: Stop using _gfxScreen
 	_currentBuffer(screen->getDisplayWidth(), screen->getDisplayHeight(), nullptr),
-	_priorityMap(screen->getDisplayWidth(), screen->getDisplayHeight(), nullptr),
 	_remapOccurred(false),
 	_frameNowVisible(false),
 	_screenRect(screen->getDisplayWidth(), screen->getDisplayHeight()),
@@ -772,16 +771,6 @@ void GfxFrameout::drawEraseList(const RectList &eraseList, const Plane &plane) {
 }
 
 void GfxFrameout::drawScreenItemList(const DrawList &screenItemList) {
-	_hasRemappedScreenItem = false;
-	if (/* TODO: g_Remap_UnknownCounter2 */ false && !_priorityMap.isNull()) {
-		for (DrawList::const_iterator it = screenItemList.begin(); it != screenItemList.end(); ++it) {
-			if ((*it)->screenItem->getCelObj()._remap) {
-				_hasRemappedScreenItem = true;
-				break;
-			}
-		}
-	}
-
 	for (DrawList::const_iterator it = screenItemList.begin(); it != screenItemList.end(); ++it) {
 		DrawItem &drawItem = **it;
 		mergeToShowList(drawItem.rect, _showList, _overdrawThreshold);
diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h
index a820696..aef2153 100644
--- a/engines/sci/graphics/frameout.h
+++ b/engines/sci/graphics/frameout.h
@@ -352,13 +352,6 @@ private:
 	 */
 	Buffer _currentBuffer;
 
-	// TODO: In SCI2.1/SQ6, priority map pixels are not allocated
-	// by default. In SCI2/GK1, pixels are allocated, but not used
-	// anywhere except within CelObj::Draw in seemingly the same
-	// way they are used in SCI2.1/SQ6: that is, never read, only
-	// written.
-	Buffer _priorityMap;
-
 	/**
 	 * TODO: Documentation
 	 */
@@ -457,12 +450,6 @@ private:
 
 public:
 	/**
-	 * TODO: Document
-	 * This is used by CelObj::Draw.
-	 */
-	bool _hasRemappedScreenItem;
-
-	/**
 	 * Whether palMorphFrameOut should be used instead of
 	 * frameOut for rendering. Used by kMorphOn to
 	 * explicitly enable palMorphFrameOut for one frame.
@@ -488,11 +475,6 @@ public:
 	 */
 	void alterVmap(const Palette &palette1, const Palette &palette2, const int8 style, const int8 *const styleRanges);
 
-	// TODO: SCI2 engine never uses priority map?
-	inline Buffer &getPriorityMap() {
-		return _priorityMap;
-	}
-
 	// NOTE: This function is used within ScreenItem subsystem and assigned
 	// to various booleanish fields that seem to represent the state of the
 	// screen item (created, updated, deleted). In GK1/DOS, Phant1/m68k,


Commit: f94ddfe5a62878052527b86ca98749699e055b1d
    https://github.com/scummvm/scummvm/commit/f94ddfe5a62878052527b86ca98749699e055b1d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:07+02:00

Commit Message:
SCI32: Spacing

Changed paths:
    engines/sci/graphics/celobj32.cpp



diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index 34ae155..2270279 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -612,46 +612,57 @@ void CelObj::drawHzFlip(Buffer &target, const Common::Rect &targetRect, const Co
 	debug("drawHzFlip");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawNoFlip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawNoFlip");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawUncompNoFlip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawUncompNoFlip");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawUncompHzFlip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawUncompHzFlip");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::scaleDraw(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("scaleDraw");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::scaleDrawUncomp(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("scaleDrawUncomp");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawHzFlipMap");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawNoFlipMap");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawUncompNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawUncompNoFlipMap");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::drawUncompHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("drawUncompHzFlipMap");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::scaleDrawMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("scaleDrawMap");
 	dummyFill(target, targetRect);
 }
+
 void CelObj::scaleDrawUncompMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	debug("scaleDrawUncompMap");
 	dummyFill(target, targetRect);
@@ -672,27 +683,27 @@ void CelObj::drawUncompNoFlipNoMD(Buffer &target, const Common::Rect &targetRect
 void CelObj::drawUncompNoFlipNoMDNoSkip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	render<MAPPER_NoMDNoSkip, SCALER_NoScale<false, READER_Uncompressed> >(target, targetRect, scaledPosition);
 }
+
 void CelObj::drawUncompHzFlipNoMD(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	render<MAPPER_NoMD, SCALER_NoScale<true, READER_Uncompressed> >(target, targetRect, scaledPosition);
 }
+
 void CelObj::drawUncompHzFlipNoMDNoSkip(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	render<MAPPER_NoMDNoSkip, SCALER_NoScale<true, READER_Uncompressed> >(target, targetRect, scaledPosition);
 }
 
 void CelObj::scaleDrawNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	if (_drawMirrored) {
+	if (_drawMirrored)
 		render<MAPPER_NoMD, SCALER_Scale<true, READER_Compressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
-	} else {
+	else
 		render<MAPPER_NoMD, SCALER_Scale<false, READER_Compressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
-	}
 }
 
 void CelObj::scaleDrawUncompNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	if (_drawMirrored) {
+	if (_drawMirrored)
 		render<MAPPER_NoMD, SCALER_Scale<true, READER_Uncompressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
-	} else {
+	else
 		render<MAPPER_NoMD, SCALER_Scale<false, READER_Uncompressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
-	}
 }
 
 #pragma mark -


Commit: 1f47766b6046a2d1f06982099a3a113c7ff61617
    https://github.com/scummvm/scummvm/commit/1f47766b6046a2d1f06982099a3a113c7ff61617
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:08+02:00

Commit Message:
SCI32: Implement analyzeUncompressedForRemap()

Changed paths:
    engines/sci/graphics/celobj32.cpp
    engines/sci/graphics/remap.h



diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index 2270279..80ff70f 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -822,7 +822,7 @@ bool CelObjView::analyzeUncompressedForRemap() const {
 	byte *pixels = getResPointer() + READ_SCI11ENDIAN_UINT32(getResPointer() + _celHeaderOffset + 24);
 	for (int i = 0; i < _width * _height; ++i) {
 		uint8 pixel = pixels[i];
-		if (/* TODO: pixel >= Remap::minRemapColor && pixel <= Remap::maxRemapColor */ false && pixel != _transparentColor) {
+		if (pixel >= g_sci->_gfxRemap32->getStartColor() && pixel <= g_sci->_gfxRemap32->getEndColor() && pixel != _transparentColor) {
 			return true;
 		}
 	}
diff --git a/engines/sci/graphics/remap.h b/engines/sci/graphics/remap.h
index b2b37aa..d2cec5b 100644
--- a/engines/sci/graphics/remap.h
+++ b/engines/sci/graphics/remap.h
@@ -130,7 +130,8 @@ public:
 	void setNoMatchRange(byte from, byte count);
 	bool remapAllTables(bool palChanged);
 	int getRemapCount() const { return _remapCount; }
-
+	int getStartColor() const { return _remapEndColor - REMAP_COLOR_COUNT + 1; }
+	int getEndColor() const { return _remapEndColor; }
 private:
 	GfxPalette32 *_palette;
 	RemapParams _remaps[REMAP_COLOR_COUNT];


Commit: 5be798c92f31dade1e59ca7279a022eff605c9ca
    https://github.com/scummvm/scummvm/commit/5be798c92f31dade1e59ca7279a022eff605c9ca
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:09+02:00

Commit Message:
SCI32: Implement the remapping drawing functions

Changed paths:
    engines/sci/graphics/celobj32.cpp
    engines/sci/graphics/remap.cpp
    engines/sci/graphics/remap.h



diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index 80ff70f..de5bf02 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -334,6 +334,19 @@ struct MAPPER_NoMDNoSkip {
 	}
 };
 
+struct MAPPER_Map {
+	inline void draw(byte *target, const byte pixel, const uint8 skipColor) const {
+		if (pixel != skipColor) {
+			if (pixel < g_sci->_gfxRemap32->getStartColor()) {
+				*target = pixel;
+			} else {
+				if (g_sci->_gfxRemap32->remapEnabled(pixel))
+					*target = g_sci->_gfxRemap32->remapColor(pixel, *target);
+			}
+		}
+	}
+};
+
 void CelObj::draw(Buffer &target, const ScreenItem &screenItem, const Common::Rect &targetRect) const {
 	const Common::Point &scaledPosition = screenItem._scaledPosition;
 	const Ratio &scaleX = screenItem._ratioX;
@@ -639,33 +652,33 @@ void CelObj::scaleDrawUncomp(Buffer &target, const Ratio &scaleX, const Ratio &s
 }
 
 void CelObj::drawHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("drawHzFlipMap");
-	dummyFill(target, targetRect);
+	render<MAPPER_Map, SCALER_NoScale<true, READER_Compressed> >(target, targetRect, scaledPosition);
 }
 
 void CelObj::drawNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("drawNoFlipMap");
-	dummyFill(target, targetRect);
+	render<MAPPER_Map, SCALER_NoScale<false, READER_Compressed> >(target, targetRect, scaledPosition);
 }
 
 void CelObj::drawUncompNoFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("drawUncompNoFlipMap");
-	dummyFill(target, targetRect);
+	render<MAPPER_Map, SCALER_NoScale<false, READER_Uncompressed> >(target, targetRect, scaledPosition);
 }
 
 void CelObj::drawUncompHzFlipMap(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("drawUncompHzFlipMap");
-	dummyFill(target, targetRect);
+	render<MAPPER_Map, SCALER_NoScale<true, READER_Uncompressed> >(target, targetRect, scaledPosition);
 }
 
 void CelObj::scaleDrawMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("scaleDrawMap");
-	dummyFill(target, targetRect);
+	if (_drawMirrored)
+		render<MAPPER_Map, SCALER_Scale<true, READER_Compressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
+	else
+		render<MAPPER_Map, SCALER_Scale<false, READER_Compressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
 }
 
 void CelObj::scaleDrawUncompMap(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
-	debug("scaleDrawUncompMap");
-	dummyFill(target, targetRect);
+	if (_drawMirrored)
+		render<MAPPER_Map, SCALER_Scale<true, READER_Uncompressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
+	else
+		render<MAPPER_Map, SCALER_Scale<false, READER_Uncompressed> >(target, targetRect, scaledPosition, scaleX, scaleY);
 }
 
 void CelObj::drawNoFlipNoMD(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
diff --git a/engines/sci/graphics/remap.cpp b/engines/sci/graphics/remap.cpp
index 9f4b9f7..e331eaf 100644
--- a/engines/sci/graphics/remap.cpp
+++ b/engines/sci/graphics/remap.cpp
@@ -174,6 +174,21 @@ void GfxRemap32::setNoMatchRange(byte from, byte count) {
 	_noMapCount = count;
 }
 
+bool GfxRemap32::remapEnabled(byte color) const {
+	assert(_remapEndColor - color >= 0 && _remapEndColor - color < REMAP_COLOR_COUNT);
+	const byte index = _remapEndColor - color;
+	return (_remaps[index].type != kRemappingNone);
+}
+
+byte GfxRemap32::remapColor(byte color, byte target) {
+	assert(_remapEndColor - color >= 0 && _remapEndColor - color < REMAP_COLOR_COUNT);
+	const byte index = _remapEndColor - color;
+	if (_remaps[index].type != kRemappingNone)
+		return _remaps[index].remap[target];
+	else
+		return target;
+}
+
 void GfxRemap32::initColorArrays(byte index) {
 	Palette *curPalette = &_palette->_sysPalette;
 	RemapParams *curRemap = &_remaps[index];
diff --git a/engines/sci/graphics/remap.h b/engines/sci/graphics/remap.h
index d2cec5b..d012568 100644
--- a/engines/sci/graphics/remap.h
+++ b/engines/sci/graphics/remap.h
@@ -128,6 +128,8 @@ public:
 	void setRemappingToGray(byte color, byte gray);
 	void setRemappingToPercentGray(byte color, byte gray, byte percent);
 	void setNoMatchRange(byte from, byte count);
+	bool remapEnabled(byte color) const;
+	byte remapColor(byte color, byte target);
 	bool remapAllTables(bool palChanged);
 	int getRemapCount() const { return _remapCount; }
 	int getStartColor() const { return _remapEndColor - REMAP_COLOR_COUNT + 1; }


Commit: 5a547bd242e3d09e34a4aa170f138d721120e155
    https://github.com/scummvm/scummvm/commit/5a547bd242e3d09e34a4aa170f138d721120e155
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2016-03-16T01:51:09+02:00

Commit Message:
SCI32: Implement analyzeForRemap()

Changed paths:
    engines/sci/graphics/celobj32.cpp



diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index de5bf02..693bc5f 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -834,7 +834,7 @@ CelObjView::CelObjView(const GuiResourceId viewId, const int16 loopNo, const int
 bool CelObjView::analyzeUncompressedForRemap() const {
 	byte *pixels = getResPointer() + READ_SCI11ENDIAN_UINT32(getResPointer() + _celHeaderOffset + 24);
 	for (int i = 0; i < _width * _height; ++i) {
-		uint8 pixel = pixels[i];
+		byte pixel = pixels[i];
 		if (pixel >= g_sci->_gfxRemap32->getStartColor() && pixel <= g_sci->_gfxRemap32->getEndColor() && pixel != _transparentColor) {
 			return true;
 		}
@@ -843,7 +843,16 @@ bool CelObjView::analyzeUncompressedForRemap() const {
 }
 
 bool CelObjView::analyzeForRemap() const {
-	// TODO: Implement decompression and analysis
+	READER_Compressed reader(*this, _width);
+	for (int y = 0; y < _height; y++) {
+		const byte *curRow = reader.getRow(y);
+		for (int x = 0; x < _width; x++) {
+			byte pixel = curRow[x];
+			if (pixel >= g_sci->_gfxRemap32->getStartColor() && pixel <= g_sci->_gfxRemap32->getEndColor() && pixel != _transparentColor) {
+				return true;
+			}
+		}
+	}
 	return false;
 }
 






More information about the Scummvm-git-logs mailing list