[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