From c8d5f21010808f572016fbc13da424e67978f933 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Thu, 11 Mar 2010 06:15:23 +0000 Subject: Adding support for the early Fascination IMD format svn-id: r48234 --- engines/gob/videoplayer.cpp | 14 ++++++++------ engines/gob/videoplayer.h | 13 ++++++++----- 2 files changed, 16 insertions(+), 11 deletions(-) (limited to 'engines/gob') diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp index 6230cad18c..ec3901415a 100644 --- a/engines/gob/videoplayer.cpp +++ b/engines/gob/videoplayer.cpp @@ -38,7 +38,7 @@ namespace Gob { -const char *VideoPlayer::_extensions[] = { "IMD", "VMD", "RMD", "SMD" }; +const char *VideoPlayer::_extensions[] = { "IMD", "IMD", "VMD", "RMD", "SMD" }; VideoPlayer::Video::Video(GobEngine *vm) : _vm(vm), _stream(0), _video(0) { } @@ -47,7 +47,7 @@ VideoPlayer::Video::~Video() { close(); } -bool VideoPlayer::Video::open(const char *fileName, Type which) { +bool VideoPlayer::Video::open(const char *fileName, Type which, int16 width, int16 height) { close(); int16 handle = _vm->_dataIO->openData(fileName); @@ -61,6 +61,8 @@ bool VideoPlayer::Video::open(const char *fileName, Type which) { if (which == kVideoTypeIMD) { _video = new Graphics::Imd(); + } else if (which == kVideoTypePreIMD) { + _video = new Graphics::PreImd(width, height); } else if (which == kVideoTypeVMD) { _video = new Graphics::Vmd(_vm->_video->_palLUT); } else if (which == kVideoTypeRMD) { @@ -223,7 +225,7 @@ bool VideoPlayer::findFile(char *fileName, Type &which) { } bool VideoPlayer::primaryOpen(const char *videoFile, int16 x, int16 y, - int32 flags, Type which) { + int32 flags, Type which, int16 width, int16 height) { char fileName[256]; @@ -233,7 +235,7 @@ bool VideoPlayer::primaryOpen(const char *videoFile, int16 x, int16 y, return false; if (scumm_strnicmp(_primaryVideo->getFileName(), fileName, strlen(fileName))) { - if (!_primaryVideo->open(fileName, which)) + if (!_primaryVideo->open(fileName, which, width, height)) return false; // WORKAROUND: In some rare cases, the cursor should still be @@ -389,7 +391,7 @@ void VideoPlayer::primaryClose() { _primaryVideo->close(); } -int VideoPlayer::slotOpen(const char *videoFile, Type which) { +int VideoPlayer::slotOpen(const char *videoFile, Type which, int16 width, int16 height) { Video *video = new Video(_vm); char fileName[256]; @@ -400,7 +402,7 @@ int VideoPlayer::slotOpen(const char *videoFile, Type which) { return -1; } - if (!video->open(fileName, which)) { + if (!video->open(fileName, which, width, height)) { delete video; return -1; } diff --git a/engines/gob/videoplayer.h b/engines/gob/videoplayer.h index 28e72ab43a..8ca8aebf44 100644 --- a/engines/gob/videoplayer.h +++ b/engines/gob/videoplayer.h @@ -52,15 +52,17 @@ public: enum Type { kVideoTypeTry = -1, kVideoTypeIMD = 0, - kVideoTypeVMD = 1, - kVideoTypeRMD = 2 + kVideoTypePreIMD = 1, + kVideoTypeVMD = 2, + kVideoTypeRMD = 3 }; VideoPlayer(GobEngine *vm); ~VideoPlayer(); bool primaryOpen(const char *videoFile, int16 x = -1, int16 y = -1, - int32 flags = kFlagFrontSurface, Type which = kVideoTypeTry); + int32 flags = kFlagFrontSurface, Type which = kVideoTypeTry, + int16 width = -1, int16 height = -1); bool primaryPlay(int16 startFrame = -1, int16 lastFrame = -1, int16 breakKey = kShortKeyEscape, uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255, @@ -72,7 +74,8 @@ public: uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255, int16 palFrame = -1 , int16 endFrame = -1, bool noRetrace = false); - int slotOpen(const char *videoFile, Type which = kVideoTypeTry); + int slotOpen(const char *videoFile, Type which = kVideoTypeTry, + int16 width = -1, int16 height = -1); void slotPlay(int slot, int16 frame = -1); void slotClose(int slot); void slotCopyFrame(int slot, byte *dest, @@ -109,7 +112,7 @@ private: Video(GobEngine *vm); ~Video(); - bool open(const char *fileName, Type which); + bool open(const char *fileName, Type which, int16 width, int16 height); void close(); bool isOpen() const; -- cgit v1.2.3