[Scummvm-cvs-logs] SF.net SVN: scummvm:[33172] scummvm/branches/gsoc2008-gui/gui/ThemeRenderer .cpp
Tanoku at users.sourceforge.net
Tanoku at users.sourceforge.net
Mon Jul 21 16:03:38 CEST 2008
Revision: 33172
http://scummvm.svn.sourceforge.net/scummvm/?rev=33172&view=rev
Author: Tanoku
Date: 2008-07-21 14:03:37 +0000 (Mon, 21 Jul 2008)
Log Message:
-----------
Milestone: Rendering pipeline is fully working. 'Yay...'
Modified Paths:
--------------
scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp
Modified: scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp 2008-07-21 13:13:59 UTC (rev 33171)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp 2008-07-21 14:03:37 UTC (rev 33172)
@@ -98,7 +98,7 @@
deinit();
setGraphicsMode(_graphicsMode);
- if (_screen->pixels) {
+ if (_screen->pixels && _backBuffer->pixels) {
_initOk = true;
clearAll();
resetDrawArea();
@@ -127,6 +127,7 @@
_system->hideOverlay();
freeRenderer();
freeScreen();
+ freeBackbuffer();
_initOk = false;
}
}
@@ -156,14 +157,17 @@
void ThemeRenderer::screenInit(bool backBuffer) {
freeScreen();
freeBackbuffer();
+
+ uint32 width = _system->getOverlayWidth();
+ uint32 height = _system->getOverlayHeight();
if (backBuffer) {
_backBuffer = new Surface;
- _backBuffer->create(_system->getOverlayWidth(), _system->getOverlayHeight(), sizeof(PixelType));
+ _backBuffer->create(width, height, sizeof(PixelType));
}
_screen = new Surface;
- _screen->create(_system->getOverlayWidth(), _system->getOverlayHeight(), sizeof(PixelType));
+ _screen->create(width, height, sizeof(PixelType));
_system->clearOverlay();
}
@@ -228,12 +232,6 @@
_widgets[data_id]->_surfaceCache = 0;
_widgets[data_id]->_hasText = false;
- // TODO: set this only when needed
- // possibly add an option to the parser to set this
- // on each drawdata...
-// if (data_id >= kDDMainDialogBackground && data_id <= kDDWidgetBackgroundSlider)
-// _widgets[data_id]->_buffer = true;
-
return true;
}
@@ -388,6 +386,7 @@
}
void ThemeRenderer::restoreBackground(Common::Rect r, bool special) {
+ r.clip(_screen->w, _screen->h); // AHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA... Oh god. :(
_vectorRenderer->blitSurface(_backBuffer, r);
}
@@ -544,11 +543,6 @@
void ThemeRenderer::drawText(const Common::Rect &r, const Common::String &str, WidgetStateInfo state, TextAlign align, bool inverted, int deltax, bool useEllipsis, FontStyle font) {
if (!_initOk)
return;
-
- // TODO: Queue this up too!
- // restoreBackground(r);
- // getFont(font)->drawString(_screen, str, r.left, r.top, r.width(), getTextColor(state), convertAligment(align), deltax, useEllipsis);
- // addDirtyRect(r);
queueDDText(kDDNone, r, str, getTextColor(state), align);
}
@@ -571,8 +565,8 @@
drawDD(*q, true, false);
_vectorRenderer->setSurface(_screen);
+ _vectorRenderer->blitSurface(_backBuffer, Common::Rect(0, 0, _screen->w, _screen->h));
_bufferQueue.clear();
- memcpy(_screen->pixels, _backBuffer->pixels, _screen->w * _screen->h * _screen->bytesPerPixel);
}
if (!_screenQueue.empty()) {
@@ -610,7 +604,9 @@
if (doBuffer)
_buffering = true;
- memcpy(_backBuffer->pixels, _screen->pixels, _screen->w * _screen->h * _screen->bytesPerPixel);
+ _vectorRenderer->setSurface(_backBuffer);
+ _vectorRenderer->blitSurface(_screen, Common::Rect(0, 0, _screen->w, _screen->h));
+ _vectorRenderer->setSurface(_screen);
}
} // end of namespace GUI.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list