diff options
author | Paul Gilbert | 2017-11-29 21:34:28 -0500 |
---|---|---|
committer | Paul Gilbert | 2017-11-29 21:34:28 -0500 |
commit | 2ca0235f44a1144aa248a497428fd59fd11840d7 (patch) | |
tree | fbf327976a40a5b3b5aab2802a9369c67211e2ca /engines/xeen/screen.cpp | |
parent | 7c74f4f82697570f9627ce1c87eacf7cf7361d31 (diff) | |
download | scummvm-rg350-2ca0235f44a1144aa248a497428fd59fd11840d7.tar.gz scummvm-rg350-2ca0235f44a1144aa248a497428fd59fd11840d7.tar.bz2 scummvm-rg350-2ca0235f44a1144aa248a497428fd59fd11840d7.zip |
XEEN: Refactor FontSurface as ancestors of Window, not Screen
This refactoring allowed Screen to now simply derive from
Graphics::Screen, and several duplicated methods could be removed.
Diffstat (limited to 'engines/xeen/screen.cpp')
-rw-r--r-- | engines/xeen/screen.cpp | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/engines/xeen/screen.cpp b/engines/xeen/screen.cpp index b8cf1786b0..54d0b8f4fd 100644 --- a/engines/xeen/screen.cpp +++ b/engines/xeen/screen.cpp @@ -35,79 +35,6 @@ Screen::Screen(XeenEngine *vm) : _vm(vm) { create(SCREEN_WIDTH, SCREEN_HEIGHT); Common::fill(&_tempPalette[0], &_tempPalette[PALETTE_SIZE], 0); Common::fill(&_mainPalette[0], &_mainPalette[PALETTE_SIZE], 0); - - // Load font data for the screen - File f("fnt"); - byte *data = new byte[f.size()]; - f.read(data, f.size()); - _fontData = data; -} - -Screen::~Screen() { - delete[] _fontData; -} - -void Screen::update() { - // Merge the dirty rects - mergeDirtyRects(); - - // Loop through copying dirty areas to the physical screen - Common::List<Common::Rect>::iterator i; - for (i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) { - const Common::Rect &r = *i; - const byte *srcP = (const byte *)getBasePtr(r.left, r.top); - g_system->copyRectToScreen(srcP, this->pitch, r.left, r.top, - r.width(), r.height()); - } - - // Signal the physical screen to update - g_system->updateScreen(); - _dirtyRects.clear(); -} - -void Screen::addDirtyRect(const Common::Rect &r) { - assert(r.isValidRect() && r.width() > 0 && r.height() > 0 - && r.left >= 0 && r.top >= 0 - && r.right <= SCREEN_WIDTH && r.bottom <= SCREEN_HEIGHT); - _dirtyRects.push_back(r); -} - -void Screen::mergeDirtyRects() { - Common::List<Common::Rect>::iterator rOuter, rInner; - - // Ensure dirty rect list has at least two entries - rOuter = _dirtyRects.begin(); - for (int i = 0; i < 2; ++i, ++rOuter) { - if (rOuter == _dirtyRects.end()) - return; - } - - // Process the dirty rect list to find any rects to merge - for (rOuter = _dirtyRects.begin(); rOuter != _dirtyRects.end(); ++rOuter) { - rInner = rOuter; - while (++rInner != _dirtyRects.end()) { - - if ((*rOuter).intersects(*rInner)) { - // these two rectangles overlap or - // are next to each other - merge them - - unionRectangle(*rOuter, *rOuter, *rInner); - - // remove the inner rect from the list - _dirtyRects.erase(rInner); - - // move back to beginning of list - rInner = rOuter; - } - } - } -} - -bool Screen::unionRectangle(Common::Rect &destRect, const Common::Rect &src1, const Common::Rect &src2) { - destRect = src1; - destRect.extend(src2); - - return !destRect.isEmpty(); } void Screen::loadPalette(const Common::String &name) { |