aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/scene.cpp')
-rw-r--r--engines/sherlock/scene.cpp552
1 files changed, 2 insertions, 550 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index 06bbabf6e0..0f0187e215 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -23,8 +23,10 @@
#include "sherlock/scene.h"
#include "sherlock/sherlock.h"
#include "sherlock/scalpel/scalpel.h"
+#include "sherlock/scalpel/scalpel_scene.h"
#include "sherlock/screen.h"
#include "sherlock/tattoo/tattoo.h"
+#include "sherlock/tattoo/tattoo_scene.h"
namespace Sherlock {
@@ -1325,554 +1327,4 @@ void Scene::checkBgShapes() {
}
}
-/*----------------------------------------------------------------*/
-
-namespace Scalpel {
-
-void ScalpelScene::checkBgShapes() {
- People &people = *_vm->_people;
- Person &holmes = people._player;
- Common::Point pt(holmes._position.x / FIXED_INT_MULTIPLIER, holmes._position.y / FIXED_INT_MULTIPLIER);
-
- // Call the base scene method to handle bg shapes
- Scene::checkBgShapes();
-
- // Iterate through the canim list
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &obj = _canimShapes[idx];
- if (obj._type == STATIC_BG_SHAPE || obj._type == ACTIVE_BG_SHAPE) {
- if ((obj._flags & 5) == 1) {
- obj._misc = (pt.y < (obj._position.y + obj._imageFrame->_frame.h - 1)) ?
- NORMAL_FORWARD : NORMAL_BEHIND;
- } else if (!(obj._flags & 1)) {
- obj._misc = BEHIND;
- } else if (obj._flags & 4) {
- obj._misc = FORWARD;
- }
- }
- }
-}
-
-void ScalpelScene::doBgAnimCheckCursor() {
- Inventory &inv = *_vm->_inventory;
- Events &events = *_vm->_events;
- Sound &sound = *_vm->_sound;
- UserInterface &ui = *_vm->_ui;
- Common::Point mousePos = events.mousePos();
-
- if (ui._menuMode == LOOK_MODE) {
- if (mousePos.y > CONTROLS_Y1)
- events.setCursor(ARROW);
- else if (mousePos.y < CONTROLS_Y)
- events.setCursor(MAGNIFY);
- }
-
- // Check for setting magnifying glass cursor
- if (ui._menuMode == INV_MODE || ui._menuMode == USE_MODE || ui._menuMode == GIVE_MODE) {
- if (inv._invMode == INVMODE_LOOK) {
- // Only show Magnifying glass cursor if it's not on the inventory command line
- if (mousePos.y < CONTROLS_Y || mousePos.y >(CONTROLS_Y1 + 13))
- events.setCursor(MAGNIFY);
- else
- events.setCursor(ARROW);
- } else {
- events.setCursor(ARROW);
- }
- }
-
- if (sound._diskSoundPlaying && !*sound._soundIsOn) {
- // Loaded sound just finished playing
- sound.freeDigiSound();
- }
-}
-
-void ScalpelScene::doBgAnim() {
- Scalpel::ScalpelEngine &vm = *((Scalpel::ScalpelEngine *)_vm);
- Events &events = *_vm->_events;
- People &people = *_vm->_people;
- Screen &screen = *_vm->_screen;
- Talk &talk = *_vm->_talk;
-
- screen.setDisplayBounds(Common::Rect(0, 0, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCENE_HEIGHT));
- talk._talkToAbort = false;
-
- if (_restoreFlag) {
- for (int idx = 0; idx < MAX_CHARACTERS; ++idx) {
- if (people[idx]._type == CHARACTER)
- people[idx].checkSprite();
- }
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- if (_bgShapes[idx]._type == ACTIVE_BG_SHAPE)
- _bgShapes[idx].checkObject();
- }
-
- if (people._portraitLoaded && people._portrait._type == ACTIVE_BG_SHAPE)
- people._portrait.checkObject();
-
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- if (_canimShapes[idx]._type != INVALID && _canimShapes[idx]._type != REMOVE)
- _canimShapes[idx].checkObject();
- }
-
- if (_currentScene == 12)
- vm.eraseMirror12();
-
- // Restore the back buffer from the back buffer 2 in the changed area
- Common::Rect bounds(people[AL]._oldPosition.x, people[AL]._oldPosition.y,
- people[AL]._oldPosition.x + people[AL]._oldSize.x,
- people[AL]._oldPosition.y + people[AL]._oldSize.y);
- Common::Point pt(bounds.left, bounds.top);
-
- if (people[AL]._type == CHARACTER)
- screen.restoreBackground(bounds);
- else if (people[AL]._type == REMOVE)
- screen._backBuffer->blitFrom(screen._backBuffer2, pt, bounds);
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE || o._type == HIDE_SHAPE || o._type == REMOVE)
- screen.restoreBackground(o.getOldBounds());
- }
-
- if (people._portraitLoaded)
- screen.restoreBackground(Common::Rect(
- people._portrait._oldPosition.x, people._portrait._oldPosition.y,
- people._portrait._oldPosition.x + people._portrait._oldSize.x,
- people._portrait._oldPosition.y + people._portrait._oldSize.y
- ));
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == NO_SHAPE && ((o._flags & OBJ_BEHIND) == 0)) {
- // Restore screen area
- screen._backBuffer->blitFrom(screen._backBuffer2, o._position,
- Common::Rect(o._position.x, o._position.y,
- o._position.x + o._noShapeSize.x, o._position.y + o._noShapeSize.y));
-
- o._oldPosition = o._position;
- o._oldSize = o._noShapeSize;
- }
- }
-
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &o = _canimShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE || o._type == HIDE_SHAPE || o._type == REMOVE)
- screen.restoreBackground(Common::Rect(o._oldPosition.x, o._oldPosition.y,
- o._oldPosition.x + o._oldSize.x, o._oldPosition.y + o._oldSize.y));
- }
- }
-
- //
- // Update the background objects and canimations
- //
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE || o._type == NO_SHAPE)
- o.adjustObject();
- }
-
- if (people._portraitLoaded && people._portrait._type == ACTIVE_BG_SHAPE)
- people._portrait.adjustObject();
-
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- if (_canimShapes[idx]._type != INVALID)
- _canimShapes[idx].adjustObject();
- }
-
- if (people[AL]._type == CHARACTER && people._holmesOn)
- people[AL].adjustSprite();
-
- // Flag the bg shapes which need to be redrawn
- checkBgShapes();
-
- if (_currentScene == 12)
- vm.doMirror12();
-
- // Draw all active shapes which are behind the person
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE && o._misc == BEHIND)
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
-
- // Draw all canimations which are behind the person
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &o = _canimShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE && o._misc == BEHIND) {
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
- }
-
- // Draw all active shapes which are HAPPEN and behind the person
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE && o._misc == NORMAL_BEHIND)
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
-
- // Draw all canimations which are NORMAL and behind the person
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &o = _canimShapes[idx];
- if (o._type == ACTIVE_BG_SHAPE && o._misc == NORMAL_BEHIND) {
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
- }
-
- // Draw the person if not animating
- if (people[AL]._type == CHARACTER && people[AL]._walkLoaded) {
- // If Holmes is too far to the right, move him back so he's on-screen
- int xRight = SHERLOCK_SCREEN_WIDTH - 2 - people[AL]._imageFrame->_frame.w;
- int tempX = MIN(people[AL]._position.x / FIXED_INT_MULTIPLIER, xRight);
-
- bool flipped = people[AL]._sequenceNumber == WALK_LEFT || people[AL]._sequenceNumber == STOP_LEFT ||
- people[AL]._sequenceNumber == WALK_UPLEFT || people[AL]._sequenceNumber == STOP_UPLEFT ||
- people[AL]._sequenceNumber == WALK_DOWNRIGHT || people[AL]._sequenceNumber == STOP_DOWNRIGHT;
- screen._backBuffer->transBlitFrom(*people[AL]._imageFrame,
- Common::Point(tempX, people[AL]._position.y / FIXED_INT_MULTIPLIER - people[AL]._imageFrame->_frame.h), flipped);
- }
-
- // Draw all static and active shapes are NORMAL and are in front of the person
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if ((o._type == ACTIVE_BG_SHAPE || o._type == STATIC_BG_SHAPE) && o._misc == NORMAL_FORWARD)
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
-
- // Draw all static and active canimations that are NORMAL and are in front of the person
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &o = _canimShapes[idx];
- if ((o._type == ACTIVE_BG_SHAPE || o._type == STATIC_BG_SHAPE) && o._misc == NORMAL_FORWARD) {
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
- }
-
- // Draw all static and active shapes that are in front of the person
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if ((o._type == ACTIVE_BG_SHAPE || o._type == STATIC_BG_SHAPE) && o._misc == FORWARD)
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
-
- // Draw any active portrait
- if (people._portraitLoaded && people._portrait._type == ACTIVE_BG_SHAPE)
- screen._backBuffer->transBlitFrom(*people._portrait._imageFrame,
- people._portrait._position, people._portrait._flags & OBJ_FLIPPED);
-
- // Draw all static and active canimations that are in front of the person
- for (uint idx = 0; idx < _canimShapes.size(); ++idx) {
- Object &o = _canimShapes[idx];
- if ((o._type == ACTIVE_BG_SHAPE || o._type == STATIC_BG_SHAPE) && o._misc == FORWARD) {
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
- }
-
- // Draw all NO_SHAPE shapes which have flag bit 0 clear
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == NO_SHAPE && (o._flags & OBJ_BEHIND) == 0)
- screen._backBuffer->transBlitFrom(*o._imageFrame, o._position, o._flags & OBJ_FLIPPED);
- }
-
- // Bring the newly built picture to the screen
- if (_animating == 2) {
- _animating = 0;
- screen.slamRect(Common::Rect(0, 0, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCENE_HEIGHT));
- } else {
- if (people[AL]._type != INVALID && ((_goToScene == -1 || _canimShapes.empty()))) {
- if (people[AL]._type == REMOVE) {
- screen.slamRect(Common::Rect(
- people[AL]._oldPosition.x, people[AL]._oldPosition.y,
- people[AL]._oldPosition.x + people[AL]._oldSize.x,
- people[AL]._oldPosition.y + people[AL]._oldSize.y
- ));
- people[AL]._type = INVALID;
- } else {
- screen.flushImage(people[AL]._imageFrame,
- Common::Point(people[AL]._position.x / FIXED_INT_MULTIPLIER,
- people[AL]._position.y / FIXED_INT_MULTIPLIER - people[AL].frameHeight()),
- &people[AL]._oldPosition.x, &people[AL]._oldPosition.y,
- &people[AL]._oldSize.x, &people[AL]._oldSize.y);
- }
- }
-
- if (_currentScene == 12)
- vm.flushMirror12();
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if ((o._type == ACTIVE_BG_SHAPE || o._type == REMOVE) && _goToScene == -1) {
- screen.flushImage(o._imageFrame, o._position,
- &o._oldPosition.x, &o._oldPosition.y, &o._oldSize.x, &o._oldSize.y);
- }
- }
-
- if (people._portraitLoaded) {
- if (people._portrait._type == REMOVE)
- screen.slamRect(Common::Rect(
- people._portrait._position.x, people._portrait._position.y,
- people._portrait._position.x + people._portrait._delta.x,
- people._portrait._position.y + people._portrait._delta.y
- ));
- else
- screen.flushImage(people._portrait._imageFrame, people._portrait._position,
- &people._portrait._oldPosition.x, &people._portrait._oldPosition.y,
- &people._portrait._oldSize.x, &people._portrait._oldSize.y);
-
- if (people._portrait._type == REMOVE)
- people._portrait._type = INVALID;
- }
-
- if (_goToScene == -1) {
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &o = _bgShapes[idx];
- if (o._type == NO_SHAPE && (o._flags & OBJ_BEHIND) == 0) {
- screen.slamArea(o._position.x, o._position.y, o._oldSize.x, o._oldSize.y);
- screen.slamArea(o._oldPosition.x, o._oldPosition.y, o._oldSize.x, o._oldSize.y);
- } else if (o._type == HIDE_SHAPE) {
- // Hiding shape, so flush it out and mark it as hidden
- screen.flushImage(o._imageFrame, o._position,
- &o._oldPosition.x, &o._oldPosition.y, &o._oldSize.x, &o._oldSize.y);
- o._type = HIDDEN;
- }
- }
- }
-
- for (int idx = _canimShapes.size() - 1; idx >= 0; --idx) {
- Object &o = _canimShapes[idx];
-
- if (o._type == INVALID) {
- // Anim shape was invalidated by checkEndOfSequence, so at this point we can remove it
- _canimShapes.remove_at(idx);
- } else if (o._type == REMOVE) {
- if (_goToScene == -1)
- screen.slamArea(o._position.x, o._position.y, o._delta.x, o._delta.y);
-
- // Shape for an animation is no longer needed, so remove it completely
- _canimShapes.remove_at(idx);
- } else if (o._type == ACTIVE_BG_SHAPE) {
- screen.flushImage(o._imageFrame, o._position,
- &o._oldPosition.x, &o._oldPosition.y, &o._oldSize.x, &o._oldSize.y);
- }
- }
- }
-
- _restoreFlag = true;
- _doBgAnimDone = true;
-
- events.wait(3);
- screen.resetDisplayBounds();
-
- // Check if the method was called for calling a portrait, and a talk was
- // interrupting it. This talk file would not have been executed at the time,
- // since we needed to finish the 'doBgAnim' to finish clearing the portrait
- if (people._clearingThePortrait && talk._scriptMoreFlag == 3) {
- // Reset the flags and call to talk
- people._clearingThePortrait = false;
- talk._scriptMoreFlag = 0;
- talk.talkTo(talk._scriptName);
- }
-}
-
-} // End of namespace Scalpel
-
-/*----------------------------------------------------------------*/
-
-namespace Tattoo {
-
-TattooScene::TattooScene(SherlockEngine *vm) : Scene(vm) {
- _arrowZone = -1;
- _mask = _mask1 = nullptr;
- _maskCounter = 0;
-}
-
-void TattooScene::checkBgShapes() {
- People &people = *_vm->_people;
- Person &holmes = people._player;
- Common::Point pt(holmes._position.x / FIXED_INT_MULTIPLIER, holmes._position.y / FIXED_INT_MULTIPLIER);
-
- // Call the base scene method to handle bg shapes
- Scene::checkBgShapes();
-
- // Check for any active playing animation
- if (_activeCAnim._images && _activeCAnim._zPlacement != REMOVE) {
- switch (_activeCAnim._flags & 3) {
- case 0:
- _activeCAnim._zPlacement = BEHIND;
- break;
- case 1:
- _activeCAnim._zPlacement = ((_activeCAnim._position.y + _activeCAnim._imageFrame->_frame.h - 1)) ?
- NORMAL_FORWARD : NORMAL_BEHIND;
- break;
- case 2:
- _activeCAnim._zPlacement = FORWARD;
- break;
- default:
- break;
- }
- }
-}
-
-void TattooScene::doBgAnimCheckCursor() {
- Events &events = *_vm->_events;
- UserInterface &ui = *_vm->_ui;
- Common::Point mousePos = events.mousePos();
-
- // If we're in Look Mode, make sure the cursor is the magnifying glass
- if (ui._menuMode == LOOK_MODE && events.getCursor() != MAGNIFY)
- events.setCursor(MAGNIFY);
-
- // See if the mouse is over any of the arrow zones, and if so, change the cursor to the correct
- // arrow cursor indicating the direcetion of the exit
- if (events.getCursor() == ARROW || events.getCursor() >= EXIT_ZONES_START) {
- CursorId cursorId = ARROW;
-
- if (ui._menuMode == STD_MODE && _arrowZone != -1 && _currentScene != 90) {
- for (uint idx = 0; idx < _exits.size(); ++idx) {
- Exit &exit = _exits[idx];
- if (exit.contains(mousePos))
- cursorId = (CursorId)(exit._image + EXIT_ZONES_START);
- }
- }
-
- events.setCursor(cursorId);
- }
-}
-
-void TattooScene::doBgAnimEraseBackground() {
- TattooEngine &vm = *((TattooEngine *)_vm);
- People &people = *_vm->_people;
- Screen &screen = *_vm->_screen;
- TattooUserInterface &ui = *((TattooUserInterface *)_vm->_ui);
-
- static const int16 OFFSETS[16] = { -1, -2, -3, -3, -2, -1, -1, 0, 1, 2, 3, 3, 2, 1, 0, 0 };
-
- if (_mask != nullptr) {
- if (screen._backBuffer1.w() > screen.w())
- screen.blitFrom(screen._backBuffer1, Common::Point(0, 0), Common::Rect(screen._currentScroll, 0,
- screen._currentScroll + screen.w(), screen.h()));
- else
- screen.blitFrom(screen._backBuffer1);
-
- switch (_currentScene) {
- case 7:
- if (++_maskCounter == 2) {
- _maskCounter = 0;
- if (--_maskOffset.x < 0)
- _maskOffset.x = SHERLOCK_SCREEN_WIDTH - 1;
- }
- break;
-
- case 8:
- _maskOffset.x += 2;
- if (_maskOffset.x >= SHERLOCK_SCREEN_WIDTH)
- _maskOffset.x = 0;
- break;
-
- case 18:
- case 68:
- ++_maskCounter;
- if (_maskCounter / 4 >= 16)
- _maskCounter = 0;
-
- _maskOffset.x = OFFSETS[_maskCounter / 4];
- break;
-
- case 53:
- if (++_maskCounter == 2) {
- _maskCounter = 0;
- if (++_maskOffset.x == screen._backBuffer1.w())
- _maskOffset.x = 0;
- }
- break;
-
- default:
- break;
- }
- } else {
- // Standard scene without mask, so call user interface to erase any UI elements as necessary
- ui.doBgAnimRestoreUI();
-
- // Restore background for any areas covered by characters and shapes
- for (uint idx = 0; idx < MAX_CHARACTERS; ++idx)
- screen.restoreBackground(Common::Rect(people[idx]._oldPosition.x, people[idx]._oldPosition.y,
- people[idx]._oldPosition.x + people[idx]._oldSize.x, people[idx]._oldPosition.y + people[idx]._oldSize.y));
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &obj = _bgShapes[idx];
-
- if ((obj._type == ACTIVE_BG_SHAPE && (obj._maxFrames > 1 || obj._delta.x != 0 || obj._delta.y != 0)) ||
- obj._type == HIDE_SHAPE || obj._type == REMOVE)
- screen._backBuffer1.blitFrom(*obj._imageFrame, obj._oldPosition,
- Common::Rect(obj._oldPosition.x, obj._oldPosition.y, obj._oldPosition.x + obj._oldSize.x,
- obj._oldPosition.y + obj._oldSize.y));
- }
-
- // If credits are active, erase the area they cover
- if (vm._creditsActive)
- vm.eraseCredits();
- }
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- Object &obj = _bgShapes[idx];
-
- if (obj._type == NO_SHAPE && (obj._flags & 1) == 0) {
- screen._backBuffer1.blitFrom(screen._backBuffer2, obj._position, obj.getNoShapeBounds());
-
- obj._oldPosition = obj._position;
- obj._oldSize = obj._noShapeSize;
- }
- }
-
- // Adjust the Target Scroll if needed
- if ((people[people._walkControl]._position.x / FIXED_INT_MULTIPLIER - screen._currentScroll) <
- (SHERLOCK_SCREEN_WIDTH / 8) && people[people._walkControl]._delta.x < 0) {
-
- screen._targetScroll = (short)(people[people._walkControl]._position.x / FIXED_INT_MULTIPLIER -
- SHERLOCK_SCREEN_WIDTH / 8 - 250);
- if (screen._targetScroll < 0)
- screen._targetScroll = 0;
- }
-
- if ((people[people._walkControl]._position.x / FIXED_INT_MULTIPLIER - screen._currentScroll) > (SHERLOCK_SCREEN_WIDTH / 4 * 3)
- && people[people._walkControl]._delta.x > 0)
- screen._targetScroll = (short)(people[people._walkControl]._position.x / FIXED_INT_MULTIPLIER -
- SHERLOCK_SCREEN_WIDTH / 4 * 3 + 250);
-
- if (screen._targetScroll > screen._scrollSize)
- screen._targetScroll = screen._scrollSize;
-
- ui.doScroll();
-}
-
-void TattooScene::doBgAnim() {
- doBgAnimCheckCursor();
-
-// Events &events = *_vm->_events;
- People &people = *_vm->_people;
-// Scene &scene = *_vm->_scene;
- Screen &screen = *_vm->_screen;
- Talk &talk = *_vm->_talk;
-
- screen.setDisplayBounds(Common::Rect(0, 0, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCENE_HEIGHT));
- talk._talkToAbort = false;
-
- // Check the characters and sprites for updates
- for (int idx = 0; idx < MAX_CHARACTERS; ++idx) {
- if (people[idx]._type == CHARACTER)
- people[idx].checkSprite();
- }
-
- for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
- if (_bgShapes[idx]._type == ACTIVE_BG_SHAPE)
- _bgShapes[idx].checkObject();
- }
-
- // Erase any affected background areas
- doBgAnimEraseBackground();
-}
-
-} // End of namespace Tattoo
-
} // End of namespace Sherlock