aboutsummaryrefslogtreecommitdiff
path: root/engines/pegasus/graphics.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2011-10-28 01:43:05 -0400
committerMatthew Hoops2011-10-28 01:43:05 -0400
commit59f7d432d11f7527a01e04be09c8afaef3d1cb1d (patch)
tree4812b090b10a16915e6cbb6cf39256efae2c8477 /engines/pegasus/graphics.cpp
parent0ec655f410a0b0ed485f7e6235b8054e97891fd8 (diff)
downloadscummvm-rg350-59f7d432d11f7527a01e04be09c8afaef3d1cb1d.tar.gz
scummvm-rg350-59f7d432d11f7527a01e04be09c8afaef3d1cb1d.tar.bz2
scummvm-rg350-59f7d432d11f7527a01e04be09c8afaef3d1cb1d.zip
PEGASUS: Implement dirty rect erase code (as used by the space chase)
Diffstat (limited to 'engines/pegasus/graphics.cpp')
-rw-r--r--engines/pegasus/graphics.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/engines/pegasus/graphics.cpp b/engines/pegasus/graphics.cpp
index cc6dcf04a8..06db31f71d 100644
--- a/engines/pegasus/graphics.cpp
+++ b/engines/pegasus/graphics.cpp
@@ -45,6 +45,7 @@ GraphicsManager::GraphicsManager(PegasusEngine *vm) : _vm(vm) {
_workArea.create(640, 480, _vm->_system->getScreenFormat());
_modifiedScreen = false;
_curSurface = &_workArea;
+ _erase = false;
}
GraphicsManager::~GraphicsManager() {
@@ -150,6 +151,10 @@ void GraphicsManager::updateDisplay() {
bool screenDirty = false;
if (!_dirtyRect.isEmpty()) {
+ // Fill the dirty area with black if erase mode is enabled
+ if (_erase)
+ _workArea.fillRect(_dirtyRect, _workArea.format.RGBToColor(0, 0, 0));
+
for (DisplayElement *runner = _firstDisplayElement; runner != 0; runner = runner->_nextElement) {
Common::Rect bounds;
runner->getBounds(bounds);
@@ -320,5 +325,13 @@ void GraphicsManager::shakeTheWorld(TimeValue duration, TimeScale scale) {
oldScreen.free();
}
+
+void GraphicsManager::enableErase() {
+ _erase = true;
+}
+
+void GraphicsManager::disableErase() {
+ _erase = false;
+}
} // End of namespace Pegasus