[Scummvm-git-logs] scummvm master -> 5419f5a26a5d0b39a09ceda0ed99b3ddfc3005f2

sev- sev at scummvm.org
Wed Apr 1 20:29:56 UTC 2020


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

Summary:
8da6b6b227 DIRECTOR: Implement kTransAlgoZoom transitions
f8127a731a DIRECTOR: Implement blind transitions, that completes the transitions code, yay!
5419f5a26a DIRECTOR: Clean up TransitionType enum


Commit: 8da6b6b2275e05d7cd131aa7aabf93983db324aa
    https://github.com/scummvm/scummvm/commit/8da6b6b2275e05d7cd131aa7aabf93983db324aa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-01T22:29:40+02:00

Commit Message:
DIRECTOR: Implement kTransAlgoZoom transitions

Changed paths:
    engines/director/transitions.cpp


diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index 1b33f2a7e9..cd519237f6 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -23,6 +23,8 @@
 #include "common/system.h"
 
 #include "graphics/managed_surface.h"
+#include "graphics/primitives.h"
+#include "graphics/macgui/macwindowmanager.h"
 
 #include "director/director.h"
 #include "director/frame.h"
@@ -157,6 +159,7 @@ static void initTransParams(TransParams &t, Score *score, Common::Rect &clipRect
 static void dissolveTrans(TransParams &t, Score *score, Common::Rect &clipRect);
 static void dissolvePatternsTrans(TransParams &t, Score *score, Common::Rect &clipRect);
 static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect);
+static void transZoom(TransParams &t, Score *score, Common::Rect &clipRect);
 
 void Frame::playTransition(Score *score) {
 	TransParams t;
@@ -193,6 +196,10 @@ void Frame::playTransition(Score *score) {
 		transMultiPass(t, score, clipRect);
 		return;
 
+	case kTransAlgoZoom:
+		transZoom(t, score, clipRect);
+		return;
+
 	case kTransAlgoCenterOut:
 	case kTransAlgoCover:
 	case kTransAlgoWipe:
@@ -415,6 +422,11 @@ void Frame::playTransition(Score *score) {
 			// Multipass
 			break;
 
+		case kTransZoomOpen:								// 47
+		case kTransZoomClose:								// 48
+			// Zoom
+			break;
+
 		case kTransDissolveBitsFast:						// 50
 		case kTransDissolvePixels:							// 51
 		case kTransDissolveBits:							// 52
@@ -888,13 +900,63 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 	}
 }
 
+static void transZoom(TransParams &t, Score *score, Common::Rect &clipRect) {
+	Common::Rect r = clipRect;
+	uint w = clipRect.width();
+	uint h = clipRect.height();
+
+	t.steps += 2;
+
+	Graphics::MacPlotData pd(score->_backSurface, &g_director->_wm->getPatterns(), Graphics::kPatternCheckers, 0, 0, 1, 0);
+
+	for (uint16 i = 1; i < t.steps; i++) {
+		bool stop = false;
+
+		score->_backSurface->copyFrom(*score->_backSurface2);
+
+		for (int s = 2; s >= 0; s--) {
+			if (i - s < 0 || i - s > t.steps - 2)
+				continue;
+
+			if (t.type == kTransZoomOpen) {
+				r.setHeight(t.yStepSize * (i - s) * 2);
+				r.setWidth(t.xStepSize * (i - s) * 2);
+				r.moveTo(w / 2 - t.xStepSize * (i - s), h / 2 - t.yStepSize * (i - s));
+			} else {
+				r.setHeight(h - t.yStepSize * (i - s) * 2);
+				r.setWidth(w - t.xStepSize * (i - s) * 2);
+				r.moveTo(t.xStepSize * (i - s), t.yStepSize * (i - s));
+			}
+
+			Graphics::drawLine(r.left,  r.top,    r.right, r.top,    0xffff, Graphics::macDrawPixel, &pd);
+			Graphics::drawLine(r.right, r.top,    r.right, r.bottom, 0xffff, Graphics::macDrawPixel, &pd);
+			Graphics::drawLine(r.left,  r.bottom, r.right, r.bottom, 0xffff, Graphics::macDrawPixel, &pd);
+			Graphics::drawLine(r.left,  r.top,    r.left,  r.bottom, 0xffff, Graphics::macDrawPixel, &pd);
+		}
+
+		r.setHeight(t.yStepSize * i * 2);
+		r.setWidth(t.xStepSize * i * 2);
+		r.moveTo(w / 2 - t.xStepSize * i, h / 2 - t.yStepSize * i);
+
+		if (stop)
+			break;
+
+		g_system->copyRectToScreen(score->_backSurface->getPixels(), score->_backSurface->pitch, 0, 0, w, h);
+		g_system->updateScreen();
+
+		g_system->delayMillis(t.stepDuration);
+		if (processQuitEvent(true))
+			break;
+	}
+}
+
 static void initTransParams(TransParams &t, Score *score, Common::Rect &clipRect) {
 	int w = clipRect.width();
 	int h = clipRect.height();
 	int m = MIN(w, h);
 	TransitionAlgo a = transProps[t.type].algo;
 
-	if (a == kTransAlgoCenterOut || a == kTransAlgoEdgesIn) {
+	if (a == kTransAlgoCenterOut || a == kTransAlgoEdgesIn || a == kTransAlgoZoom) {
 		w = (w + 1) >> 1;	// round up
 		h = (h + 1) >> 1;
 	}


Commit: f8127a731ac4478b6040fb9ffddd4de5f5c458d0
    https://github.com/scummvm/scummvm/commit/f8127a731ac4478b6040fb9ffddd4de5f5c458d0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-01T22:29:40+02:00

Commit Message:
DIRECTOR: Implement blind transitions, that completes the transitions code, yay!

Changed paths:
    engines/director/transitions.cpp


diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index cd519237f6..b9a5b88dea 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -56,12 +56,15 @@ enum TransitionDirection {
 	kTransDirBoth,
 	kTransDirStepsH,
 	kTransDirStepsV,
-	kTransDirCheckers
+	kTransDirCheckers,
+	kTransDirBlindsV,
+	kTransDirBlindsH
 };
 
 enum {
 	kNumStrips = 16,
-	kNumChecks = 16
+	kNumChecks = 16,
+	kNumBlinds = 12
 };
 
 #define TRANS(t,a,d) {t,#t,a,d}
@@ -109,7 +112,7 @@ struct {
 	TRANS(kTransCoverUp,				kTransAlgoCover,	kTransDirVertical),
 	TRANS(kTransCoverUpLeft,			kTransAlgoCover,	kTransDirBoth),			// 35
 	TRANS(kTransCoverUpRight,			kTransAlgoCover,	kTransDirBoth),
-	TRANS(kTransTypeVenetianBlind,		kTransAlgoBlinds,	kTransDirHorizontal),
+	TRANS(kTransTypeVenetianBlind,		kTransAlgoBlinds,	kTransDirBlindsH),
 	TRANS(kTransTypeCheckerboard,		kTransAlgoCheckerBoard, kTransDirCheckers),
 	TRANS(kTransTypeStripsBottomBuildLeft, kTransAlgoBuildStrips, kTransDirStepsV),
 	TRANS(kTransTypeStripsBottomBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),// 40
@@ -121,7 +124,7 @@ struct {
 	TRANS(kTransTypeStripsTopBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),
 	TRANS(kTransZoomOpen,				kTransAlgoZoom,		kTransDirBoth),
 	TRANS(kTransZoomClose,				kTransAlgoZoom,		kTransDirBoth),
-	TRANS(kTransVerticalBinds,			kTransAlgoBlinds,	kTransDirBoth),
+	TRANS(kTransVerticalBinds,			kTransAlgoBlinds,	kTransDirBlindsV),
 	TRANS(kTransDissolveBitsFast,		kTransAlgoDissolve,	kTransDirNone),			// 50
 	TRANS(kTransDissolvePixels,			kTransAlgoDissolve,	kTransDirNone),
 	TRANS(kTransDissolveBits,			kTransAlgoDissolve,	kTransDirNone)
@@ -168,11 +171,6 @@ void Frame::playTransition(Score *score) {
 	t.duration = MAX<uint16>(250, _transDuration); // When duration is < 1/4s, make it 1/4
 	t.chunkSize = MAX<uint>(1, _transChunkSize);
 
-#if 0
-	t.type = kTransDissolveBits;
-	t.chunkSize = 4;
-#endif
-
 	Common::Rect clipRect(score->_movieRect);
 	clipRect.moveTo(0, 0);
 
@@ -193,6 +191,7 @@ void Frame::playTransition(Score *score) {
 
 	case kTransAlgoCheckerBoard:
 	case kTransAlgoBuildStrips:
+	case kTransAlgoBlinds:
 		transMultiPass(t, score, clipRect);
 		return;
 
@@ -410,6 +409,7 @@ void Frame::playTransition(Score *score) {
 			rto.moveTo(-w + t.xStepSize * i, h - t.yStepSize * i);
 			break;
 
+		case kTransTypeVenetianBlind:						// 37
 		case kTransTypeCheckerboard:						// 38
 		case kTransTypeStripsBottomBuildLeft:				// 39
 		case kTransTypeStripsBottomBuildRight:				// 40
@@ -427,6 +427,10 @@ void Frame::playTransition(Score *score) {
 			// Zoom
 			break;
 
+		case kTransVerticalBinds:							// 49
+			// Multipass
+			break;
+
 		case kTransDissolveBitsFast:						// 50
 		case kTransDissolvePixels:							// 51
 		case kTransDissolveBits:							// 52
@@ -759,6 +763,14 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 		rto = clipRect;
 
 		switch (t.type) {
+		case kTransTypeVenetianBlind:						// 37
+			rto.setHeight(t.yStepSize * i);
+			for (int r = 0; r < kNumBlinds; r++) {
+				rto.moveTo(0, r * t.stripSize);
+				rects.push_back(rto);
+			}
+			break;
+
 		case kTransTypeCheckerboard:						// 38
 			rto.setWidth(t.stripSize);
 			rto.setHeight((i % ((t.steps + 1) / 2)) * t.chunkSize);
@@ -871,6 +883,14 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
+		case kTransVerticalBinds:							// 49
+			rto.setWidth(t.xStepSize * i);
+			for (int r = 0; r < kNumBlinds; r++) {
+				rto.moveTo(r * t.stripSize, 0);
+				rects.push_back(rto);
+			}
+			break;
+
 		default:
 			warning("Frame::playTransition(): Unhandled transition type %s %d %d", transProps[t.type].name, t.duration, t.chunkSize);
 			stop = true;
@@ -1008,6 +1028,20 @@ static void initTransParams(TransParams &t, Score *score, Common::Rect &clipRect
 		t.yStepSize = (h + t.stripSize - 1) / t.stripSize;		// number of checkers
 		break;
 
+	case kTransDirBlindsV:
+		t.xStepSize = t.chunkSize;
+		t.yStepSize = t.chunkSize;
+		t.stripSize = (w + kNumBlinds - 1) / kNumBlinds;
+		t.steps = (w + t.stripSize - 1) / t.stripSize;
+		break;
+
+	case kTransDirBlindsH:
+		t.xStepSize = t.chunkSize;
+		t.yStepSize = t.chunkSize;
+		t.stripSize = (h + kNumBlinds - 1) / kNumBlinds;
+		t.steps = (h + t.stripSize - 1) / t.stripSize;
+		break;
+
 	default:
 		t.steps = 1;
 	}


Commit: 5419f5a26a5d0b39a09ceda0ed99b3ddfc3005f2
    https://github.com/scummvm/scummvm/commit/5419f5a26a5d0b39a09ceda0ed99b3ddfc3005f2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-01T22:29:40+02:00

Commit Message:
DIRECTOR: Clean up TransitionType enum

Changed paths:
    engines/director/transitions.cpp
    engines/director/types.h


diff --git a/engines/director/transitions.cpp b/engines/director/transitions.cpp
index b9a5b88dea..13eb85a960 100644
--- a/engines/director/transitions.cpp
+++ b/engines/director/transitions.cpp
@@ -112,16 +112,16 @@ struct {
 	TRANS(kTransCoverUp,				kTransAlgoCover,	kTransDirVertical),
 	TRANS(kTransCoverUpLeft,			kTransAlgoCover,	kTransDirBoth),			// 35
 	TRANS(kTransCoverUpRight,			kTransAlgoCover,	kTransDirBoth),
-	TRANS(kTransTypeVenetianBlind,		kTransAlgoBlinds,	kTransDirBlindsH),
-	TRANS(kTransTypeCheckerboard,		kTransAlgoCheckerBoard, kTransDirCheckers),
-	TRANS(kTransTypeStripsBottomBuildLeft, kTransAlgoBuildStrips, kTransDirStepsV),
-	TRANS(kTransTypeStripsBottomBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),// 40
-	TRANS(kTransTypeStripsLeftBuildDown, kTransAlgoBuildStrips, kTransDirStepsH),
-	TRANS(kTransTypeStripsLeftBuildUp, kTransAlgoBuildStrips, kTransDirStepsH),
-	TRANS(kTransTypeStripsRightBuildDown, kTransAlgoBuildStrips, kTransDirStepsH),
-	TRANS(kTransTypeStripsRightBuildUp, kTransAlgoBuildStrips, kTransDirStepsH),
-	TRANS(kTransTypeStripsTopBuildLeft,	kTransAlgoBuildStrips, kTransDirStepsV),	// 45
-	TRANS(kTransTypeStripsTopBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),
+	TRANS(kTransVenetianBlind,		kTransAlgoBlinds,	kTransDirBlindsH),
+	TRANS(kTransCheckerboard,		kTransAlgoCheckerBoard, kTransDirCheckers),
+	TRANS(kTransStripsBottomBuildLeft, kTransAlgoBuildStrips, kTransDirStepsV),
+	TRANS(kTransStripsBottomBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),	// 40
+	TRANS(kTransStripsLeftBuildDown, kTransAlgoBuildStrips, kTransDirStepsH),
+	TRANS(kTransStripsLeftBuildUp, kTransAlgoBuildStrips, kTransDirStepsH),
+	TRANS(kTransStripsRightBuildDown, kTransAlgoBuildStrips, kTransDirStepsH),
+	TRANS(kTransStripsRightBuildUp, kTransAlgoBuildStrips, kTransDirStepsH),
+	TRANS(kTransStripsTopBuildLeft,	kTransAlgoBuildStrips, kTransDirStepsV),		// 45
+	TRANS(kTransStripsTopBuildRight, kTransAlgoBuildStrips, kTransDirStepsV),
 	TRANS(kTransZoomOpen,				kTransAlgoZoom,		kTransDirBoth),
 	TRANS(kTransZoomClose,				kTransAlgoZoom,		kTransDirBoth),
 	TRANS(kTransVerticalBinds,			kTransAlgoBlinds,	kTransDirBlindsV),
@@ -409,16 +409,16 @@ void Frame::playTransition(Score *score) {
 			rto.moveTo(-w + t.xStepSize * i, h - t.yStepSize * i);
 			break;
 
-		case kTransTypeVenetianBlind:						// 37
-		case kTransTypeCheckerboard:						// 38
-		case kTransTypeStripsBottomBuildLeft:				// 39
-		case kTransTypeStripsBottomBuildRight:				// 40
-		case kTransTypeStripsLeftBuildDown:					// 41
-		case kTransTypeStripsLeftBuildUp:					// 42
-		case kTransTypeStripsRightBuildDown:				// 43
-		case kTransTypeStripsRightBuildUp:					// 44
-		case kTransTypeStripsTopBuildLeft:					// 45
-		case kTransTypeStripsTopBuildRight:					// 46
+		case kTransVenetianBlind:							// 37
+		case kTransCheckerboard:							// 38
+		case kTransStripsBottomBuildLeft:					// 39
+		case kTransStripsBottomBuildRight:					// 40
+		case kTransStripsLeftBuildDown:						// 41
+		case kTransStripsLeftBuildUp:						// 42
+		case kTransStripsRightBuildDown:					// 43
+		case kTransStripsRightBuildUp:						// 44
+		case kTransStripsTopBuildLeft:						// 45
+		case kTransStripsTopBuildRight:						// 46
 			// Multipass
 			break;
 
@@ -763,7 +763,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 		rto = clipRect;
 
 		switch (t.type) {
-		case kTransTypeVenetianBlind:						// 37
+		case kTransVenetianBlind:							// 37
 			rto.setHeight(t.yStepSize * i);
 			for (int r = 0; r < kNumBlinds; r++) {
 				rto.moveTo(0, r * t.stripSize);
@@ -771,7 +771,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeCheckerboard:						// 38
+		case kTransCheckerboard:							// 38
 			rto.setWidth(t.stripSize);
 			rto.setHeight((i % ((t.steps + 1) / 2)) * t.chunkSize);
 
@@ -787,7 +787,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsBottomBuildLeft:				// 39
+		case kTransStripsBottomBuildLeft:					// 39
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.yStepSize * i - (kNumStrips - r - 1) * t.stripSize;
 				if (len > 0) {
@@ -799,7 +799,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsBottomBuildRight:				// 40
+		case kTransStripsBottomBuildRight:					// 40
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.yStepSize * i - r * t.stripSize;
 				if (len > 0) {
@@ -811,7 +811,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsLeftBuildDown:					// 41
+		case kTransStripsLeftBuildDown:						// 41
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.xStepSize * i - r * t.stripSize;
 				if (len > 0) {
@@ -823,7 +823,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsLeftBuildUp:					// 42
+		case kTransStripsLeftBuildUp:						// 42
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.xStepSize * i - (kNumStrips - r - 1) * t.stripSize;
 				if (len > 0) {
@@ -835,7 +835,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsRightBuildDown:				// 43
+		case kTransStripsRightBuildDown:					// 43
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.xStepSize * i - r * t.stripSize;
 				if (len > 0) {
@@ -847,7 +847,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsRightBuildUp:					// 44
+		case kTransStripsRightBuildUp:						// 44
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.xStepSize * i - (kNumStrips - r - 1) * t.stripSize;
 				if (len > 0) {
@@ -859,7 +859,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsTopBuildLeft:					// 45
+		case kTransStripsTopBuildLeft:						// 45
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.yStepSize * i - (kNumStrips - r - 1) * t.stripSize;
 				if (len > 0) {
@@ -871,7 +871,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			}
 			break;
 
-		case kTransTypeStripsTopBuildRight:					// 46
+		case kTransStripsTopBuildRight:						// 46
 			for (int r = 0; r < kNumStrips; r++) {
 				int len = t.yStepSize * i - r * t.stripSize;
 				if (len > 0) {
@@ -892,7 +892,7 @@ static void transMultiPass(TransParams &t, Score *score, Common::Rect &clipRect)
 			break;
 
 		default:
-			warning("Frame::playTransition(): Unhandled transition type %s %d %d", transProps[t.type].name, t.duration, t.chunkSize);
+			warning("Frame::transMultiPass(): Unhandled transition type %s %d %d", transProps[t.type].name, t.duration, t.chunkSize);
 			stop = true;
 			break;
 		}
diff --git a/engines/director/types.h b/engines/director/types.h
index 1a296bfa60..647d976144 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -213,16 +213,16 @@ enum TransitionType {
 	kTransCoverUp,
 	kTransCoverUpLeft,			// 35
 	kTransCoverUpRight,
-	kTransTypeVenetianBlind,
-	kTransTypeCheckerboard,
-	kTransTypeStripsBottomBuildLeft,
-	kTransTypeStripsBottomBuildRight,	// 40
-	kTransTypeStripsLeftBuildDown,
-	kTransTypeStripsLeftBuildUp,
-	kTransTypeStripsRightBuildDown,
-	kTransTypeStripsRightBuildUp,
-	kTransTypeStripsTopBuildLeft,		// 45
-	kTransTypeStripsTopBuildRight,
+	kTransVenetianBlind,
+	kTransCheckerboard,
+	kTransStripsBottomBuildLeft,
+	kTransStripsBottomBuildRight,	// 40
+	kTransStripsLeftBuildDown,
+	kTransStripsLeftBuildUp,
+	kTransStripsRightBuildDown,
+	kTransStripsRightBuildUp,
+	kTransStripsTopBuildLeft,		// 45
+	kTransStripsTopBuildRight,
 	kTransZoomOpen,
 	kTransZoomClose,
 	kTransVerticalBinds,




More information about the Scummvm-git-logs mailing list