aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeEngine.h
diff options
context:
space:
mode:
authorMax Horn2009-01-01 21:41:55 +0000
committerMax Horn2009-01-01 21:41:55 +0000
commit97e9b28c8ac480e7ba9819c5525a1d8bec45d2f4 (patch)
treecdf664f30b7df331b6247494d5af5629df67f290 /gui/ThemeEngine.h
parent9752882f8bbe6070f69638d3c54156a1c0e61204 (diff)
downloadscummvm-rg350-97e9b28c8ac480e7ba9819c5525a1d8bec45d2f4.tar.gz
scummvm-rg350-97e9b28c8ac480e7ba9819c5525a1d8bec45d2f4.tar.bz2
scummvm-rg350-97e9b28c8ac480e7ba9819c5525a1d8bec45d2f4.zip
Revamping the handling of GUI themes a bit:
* Moved the code which handles fallback to the built-in theme from ThemeEngine to GuiManager * Changed ThemeEngine::init() to only init&load the theme; no more messing with the overlay * Commented to a somewhat obscure line in the GuiManager event loop (taking eriktorbjorn's original commit message for that change as comment text) * Cleaned up the way the Dialog constructor ensures that the current Theme is correctly setup * Got rid of varios members of ThemeEngine * Changed ThemeEngine members _screen and _backBuffer from Surface pointers to just plain Surfaces * Changed ThemeEngine::loadFontFromArchive to use _themeArchive instead of creating an Archive from scratch * Renamed ThemeEngine::getThemeFileName() to getThemeId() (and some associated tweaks) * Lots of further cleanup and tweaks svn-id: r35653
Diffstat (limited to 'gui/ThemeEngine.h')
-rw-r--r--gui/ThemeEngine.h48
1 files changed, 18 insertions, 30 deletions
diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index b96cc47d7e..1067d11b11 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -57,9 +57,6 @@ protected:
friend class GUI::Dialog;
friend class GUI::GuiObject;
- /** Sets whether backcaching is enabled */
- static const bool kEnableBackCaching = true;
-
/**
* DrawData sets enumeration.
* Each DD set corresponds to the actual looks
@@ -244,7 +241,6 @@ public:
~ThemeEngine();
bool init();
- void deinit();
void clearAll();
void refresh();
@@ -343,7 +339,7 @@ public:
* @param special Deprecated.
*/
bool addDirtyRect(Common::Rect r, bool backup = false, bool special = false) {
- r.clip(_screen->w, _screen->h);
+ r.clip(_screen.w, _screen.h);
_dirtyScreen.push_back(r);
return true;
}
@@ -422,6 +418,7 @@ public:
*/
bool addTextData(const Common::String &drawDataId, const Common::String &textDataId, Graphics::TextAlign alignH, TextAlignVertical alignV);
+protected:
/**
* Returns if the Theme is ready to draw stuff on screen.
* Must be called instead of just checking _initOk, because
@@ -433,7 +430,7 @@ public:
}
/** Load the them from the file with the specified name. */
- bool loadTheme(const Common::String &fileName);
+ void loadTheme(const Common::String &themeid);
/**
* Changes the active graphics mode of the GUI; may be used to either
@@ -441,7 +438,7 @@ public:
*/
void setGraphicsMode(GraphicsMode mode);
-
+public:
/**
* Finishes buffering: widgets from then on will be drawn straight on the screen
* without drawing queues.
@@ -497,7 +494,7 @@ public:
bool isWidgetCached(DrawData type, const Common::Rect &r);
const Common::String &getThemeName() const { return _themeName; }
- const Common::String &getThemeFileName() const { return _themeFileName; }
+ const Common::String &getThemeId() const { return _themeId; }
int getGraphicsMode() const { return _graphicsMode; }
protected:
@@ -513,12 +510,11 @@ protected:
/**
* Loads the given theme into the ThemeEngine.
- * Note that ThemeName is an identifier, not a filename.
*
- * @param ThemeName Theme identifier.
+ * @param themeId Theme identifier.
* @returns true if the theme was successfully loaded.
*/
- bool loadThemeXML(const Common::String &themeName);
+ bool loadThemeXML(const Common::String &themeId);
/**
* Loads the default theme file (the embedded XML file found
@@ -533,6 +529,10 @@ protected:
*/
void unloadTheme();
+ const Graphics::Font *loadFont(const Common::String &filename);
+ const Graphics::Font *loadFontFromArchive(const Common::String &filename);
+ Common::String genCacheFilename(const char *filename);
+
/**
* Actual Dirty Screen handling function.
* Handles all the dirty squares in the list, merges and optimizes
@@ -586,19 +586,9 @@ protected:
public:
/**
- * LEGACY: Old GUI::Theme API
+ * @name LEGACY: Old GUI::Theme API
*/
-
- bool needThemeReload() {
- return ((_loadedThemeX != g_system->getOverlayWidth()) ||
- (_loadedThemeY != g_system->getOverlayHeight()));
- }
-
- const Graphics::Font *loadFont(const Common::String &filename);
- const Graphics::Font *loadFontFromArchive(const Common::String &filename);
- Common::String genCacheFilename(const char *filename);
-
- bool isThemeLoadingRequired();
+ //@{
static bool themeConfigUseable(const Common::FSNode &node, Common::String &themeName);
static bool themeConfigParseHeader(Common::String header, Common::String &themeName);
@@ -606,6 +596,8 @@ public:
int getTabSpacing() const { return 0; }
int getTabPadding() const { return 3; }
+ //@}
+
protected:
OSystem *_system; /** Global system object. */
@@ -619,10 +611,10 @@ protected:
GUI::ThemeEval *_themeEval;
/** Main screen surface. This is blitted straight into the overlay. */
- Graphics::Surface *_screen;
+ Graphics::Surface _screen;
/** Backbuffer surface. Stores previous states of the screen to blit back */
- Graphics::Surface *_backBuffer;
+ Graphics::Surface _backBuffer;
/** Sets whether the current drawing is being buffered (stored for later
processing) or drawn directly to the screen. */
@@ -663,12 +655,9 @@ protected:
bool _enabled; //!< Whether the Theme is currently shown on the overlay
Common::String _themeName; //!< Name of the currently loaded theme
- Common::String _themeFileName;
+ Common::String _themeId;
Common::Archive *_themeArchive;
- /** Custom Cursor Management */
- void setUpCursor();
-
bool _useCursor;
int _cursorHotspotX, _cursorHotspotY;
int _cursorTargetScale;
@@ -679,7 +668,6 @@ protected:
bool _needPaletteUpdates;
uint _cursorWidth, _cursorHeight;
byte _cursorPal[4*MAX_CURS_COLORS];
- int _loadedThemeX, _loadedThemeY;
};
} // end of namespace GUI.