aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/anim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/anim.cpp')
-rw-r--r--engines/lab/anim.cpp18
1 files changed, 14 insertions, 4 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();