aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2015-12-24 16:51:02 +0100
committerWillem Jan Palenstijn2015-12-24 16:51:02 +0100
commitd98d39c315bce9577093770c8b39d83bc0aa34ba (patch)
tree2ff2de89d36632f39806392eabb111736d120311 /engines
parentdacbf9881c72177369e4dde250bc6e9a907f7b00 (diff)
downloadscummvm-rg350-d98d39c315bce9577093770c8b39d83bc0aa34ba.tar.gz
scummvm-rg350-d98d39c315bce9577093770c8b39d83bc0aa34ba.tar.bz2
scummvm-rg350-d98d39c315bce9577093770c8b39d83bc0aa34ba.zip
LAB: Move dispBitMap to Anim
Diffstat (limited to 'engines')
-rw-r--r--engines/lab/anim.cpp18
-rw-r--r--engines/lab/anim.h5
-rw-r--r--engines/lab/dispman.cpp8
-rw-r--r--engines/lab/dispman.h2
4 files changed, 19 insertions, 14 deletions
diff --git a/engines/lab/anim.cpp b/engines/lab/anim.cpp
index 7f7e488e9e..6e9b04f7f1 100644
--- a/engines/lab/anim.cpp
+++ b/engines/lab/anim.cpp
@@ -67,6 +67,10 @@ Anim::Anim(LabEngine *vm) : _vm(vm) {
for (int i = 0; i < 3 * 256; i++)
_diffPalette[i] = 0;
+
+ _dispBitMap._bytesPerRow = _vm->_graphics->_screenWidth;
+ _dispBitMap._drawOnScreen = true;
+ _dispBitMap._buffer = nullptr;
}
Anim::~Anim() {
@@ -74,15 +78,21 @@ Anim::~Anim() {
_vm->_anim->_scrollScreenBuffer = nullptr;
}
+void Anim::setOutputBuffer(byte *memoryBuffer) {
+ _dispBitMap._bytesPerRow = _vm->_graphics->_screenWidth;
+ _dispBitMap._drawOnScreen = (memoryBuffer == nullptr);
+ _dispBitMap._buffer = memoryBuffer;
+}
+
+
void Anim::diffNextFrame(bool onlyDiffData) {
if (_lastBlockHeader == 65535)
// Already done.
return;
- BitMap *disp = _vm->_graphics->_dispBitMap;
- bool drawOnScreen = disp->_drawOnScreen;
- byte *startOfBuf = disp->_buffer;
- int bufPitch = disp->_bytesPerRow;
+ bool drawOnScreen = _dispBitMap._drawOnScreen;
+ byte *startOfBuf = _dispBitMap._buffer;
+ int bufPitch = _dispBitMap._bytesPerRow;
if (drawOnScreen) {
startOfBuf = _vm->_graphics->getCurrentDrawingBuffer();
diff --git a/engines/lab/anim.h b/engines/lab/anim.h
index de14035838..f9f72bbd20 100644
--- a/engines/lab/anim.h
+++ b/engines/lab/anim.h
@@ -71,6 +71,8 @@ private:
uint32 _diffWidth;
uint32 _diffHeight;
+ BitMap _dispBitMap;
+
public:
Anim(LabEngine *vm);
virtual ~Anim();
@@ -85,7 +87,8 @@ public:
/**
* Reads in a DIFF file.
*/
- void readDiff(Common::File *diffFile, bool playOnce, bool onlyDiffData = false);
+ void setOutputBuffer(byte *memoryBuffer); // nullptr for output to screen
+ void readDiff(Common::File *diffFile, bool playOnce, bool onlyDiffData);
void diffNextFrame(bool onlyDiffData = false);
/**
diff --git a/engines/lab/dispman.cpp b/engines/lab/dispman.cpp
index 7f581e720b..5a9d525b72 100644
--- a/engines/lab/dispman.cpp
+++ b/engines/lab/dispman.cpp
@@ -58,13 +58,10 @@ DisplayMan::DisplayMan(LabEngine *vm) : _vm(vm) {
for (int i = 0; i < 256 * 3; i++)
_curvgapal[i] = 0;
-
- _dispBitMap = new BitMap;
}
DisplayMan::~DisplayMan() {
freePict();
- delete _dispBitMap;
delete[] _displayBuffer;
}
@@ -95,10 +92,7 @@ void DisplayMan::readPict(const Common::String filename, bool playOnce, bool onl
if (!_vm->_music->_loopSoundEffect)
_vm->_music->stopSoundEffect();
- _dispBitMap->_bytesPerRow = _screenWidth;
- _dispBitMap->_drawOnScreen = (memoryBuffer == nullptr);
- _dispBitMap->_buffer = memoryBuffer;
-
+ _vm->_anim->setOutputBuffer(memoryBuffer);
_vm->_anim->readDiff(_curBitmap, playOnce, onlyDiffData);
}
diff --git a/engines/lab/dispman.h b/engines/lab/dispman.h
index 3b41505e2f..5778952668 100644
--- a/engines/lab/dispman.h
+++ b/engines/lab/dispman.h
@@ -33,7 +33,6 @@
namespace Lab {
-struct BitMap;
class LabEngine;
class Image;
@@ -272,7 +271,6 @@ public:
byte *_displayBuffer;
byte *_currentDisplayBuffer;
uint16 *_fadePalette;
- BitMap *_dispBitMap;
};
} // End of namespace Lab