From 14c8d5d6c3d70cfa4f3229e3cd7c76771f566f9c Mon Sep 17 00:00:00 2001
From: Vicent Marti
Date: Wed, 16 Jul 2008 10:48:14 +0000
Subject: Stroking on tab widgets. Basic support for backcaching.
svn-id: r33084
---
gui/ThemeDefaultXML.cpp | 2 +-
gui/ThemeRenderer.cpp | 14 ++++++++++----
gui/ThemeRenderer.h | 14 +++++++++++++-
3 files changed, 24 insertions(+), 6 deletions(-)
(limited to 'gui')
diff --git a/gui/ThemeDefaultXML.cpp b/gui/ThemeDefaultXML.cpp
index 0561f4b8d1..bbd18fce5c 100644
--- a/gui/ThemeDefaultXML.cpp
+++ b/gui/ThemeDefaultXML.cpp
@@ -63,7 +63,7 @@ bool ThemeRenderer::loadDefaultXML() {
""
""
- ""
+ ""
""
""
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp
index 7995c34a40..4b56eba4a2 100644
--- a/gui/ThemeRenderer.cpp
+++ b/gui/ThemeRenderer.cpp
@@ -76,7 +76,7 @@ const char *ThemeRenderer::kDrawDataStrings[] = {
ThemeRenderer::ThemeRenderer(Common::String themeName, GraphicsMode mode) :
_vectorRenderer(0), _system(0), _graphicsMode(kGfxDisabled),
- _screen(0), _bytesPerPixel(0), _initOk(false), _themeOk(false), _enabled(false) {
+ _screen(0), _backBuffer(0), _bytesPerPixel(0), _initOk(false), _themeOk(false), _enabled(false) {
_system = g_system;
_parser = new ThemeParser(this);
@@ -153,9 +153,15 @@ void ThemeRenderer::disable() {
}
template
-void ThemeRenderer::screenInit() {
+void ThemeRenderer::screenInit(bool backBuffer) {
freeScreen();
-
+ freeBackbuffer();
+
+ if (backBuffer) {
+ _backBuffer = new Surface;
+ _backBuffer->create(_system->getOverlayWidth(), _system->getOverlayHeight(), sizeof(PixelType));
+ }
+
_screen = new Surface;
_screen->create(_system->getOverlayWidth(), _system->getOverlayHeight(), sizeof(PixelType));
_system->clearOverlay();
@@ -166,7 +172,7 @@ void ThemeRenderer::setGraphicsMode(GraphicsMode mode) {
case kGfxStandard16bit:
case kGfxAntialias16bit:
_bytesPerPixel = sizeof(uint16);
- screenInit();
+ screenInit(kEnableBackCaching);
break;
default:
diff --git a/gui/ThemeRenderer.h b/gui/ThemeRenderer.h
index 3addda17a7..e7e320d048 100644
--- a/gui/ThemeRenderer.h
+++ b/gui/ThemeRenderer.h
@@ -73,6 +73,9 @@ class ThemeRenderer : public Theme {
/** Constant value to expand dirty rectangles, to make sure they are fully copied */
static const int kDirtyRectangleThreshold = 2;
+
+ /** Sets whether backcaching is enabled */
+ static const bool kEnableBackCaching = true;
public:
enum GraphicsMode {
@@ -204,7 +207,7 @@ public:
void setGraphicsMode(GraphicsMode mode);
protected:
- template void screenInit();
+ template void screenInit(bool backBuffer);
bool loadThemeXML(Common::String themeName);
bool loadDefaultXML();
@@ -228,6 +231,14 @@ protected:
delete _vectorRenderer;
_vectorRenderer = 0;
}
+
+ void freeBackbuffer() {
+ if (_backBuffer != 0) {
+ _backBuffer->free();
+ delete _backBuffer;
+ _backBuffer = 0;
+ }
+ }
void freeScreen() {
if (_screen != 0) {
@@ -283,6 +294,7 @@ protected:
GUI::ThemeParser *_parser;
Graphics::Surface *_screen;
+ Graphics::Surface *_backBuffer;
int _bytesPerPixel;
GraphicsMode _graphicsMode;
--
cgit v1.2.3