aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeParser.cpp
diff options
context:
space:
mode:
authorMax Horn2009-06-28 19:57:27 +0000
committerMax Horn2009-06-28 19:57:27 +0000
commita882a6f46779768f15d38e350781785d975e5007 (patch)
tree84a9524aa63cc8bfbf5cae69c4312ca778ce4bbb /gui/ThemeParser.cpp
parent531e7a8c78d1374e1a5aba606339fd8155eb3dee (diff)
downloadscummvm-rg350-a882a6f46779768f15d38e350781785d975e5007.tar.gz
scummvm-rg350-a882a6f46779768f15d38e350781785d975e5007.tar.bz2
scummvm-rg350-a882a6f46779768f15d38e350781785d975e5007.zip
GUI: Replaced ThemeParser::_drawFunction hashmap by a static function getDrawingFunctionCallback which maps strings to draw funcs
svn-id: r41931
Diffstat (limited to 'gui/ThemeParser.cpp')
-rw-r--r--gui/ThemeParser.cpp58
1 files changed, 33 insertions, 25 deletions
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index 2e7e2d3214..8897eef9d7 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -23,17 +23,11 @@
*
*/
-#include "common/util.h"
-#include "common/system.h"
-#include "common/events.h"
-#include "common/hashmap.h"
-#include "common/hash-str.h"
-#include "common/xmlparser.h"
-
#include "gui/ThemeEngine.h"
#include "gui/ThemeEval.h"
#include "gui/ThemeParser.h"
#include "gui/GuiManager.h"
+
#include "graphics/VectorRenderer.h"
namespace GUI {
@@ -86,19 +80,6 @@ static GUI::ThemeEngine::TextAlignVertical parseTextVAlign(const Common::String
ThemeParser::ThemeParser(ThemeEngine *parent) : XMLParser() {
-
- _drawFunctions["circle"] = &Graphics::VectorRenderer::drawCallback_CIRCLE;
- _drawFunctions["square"] = &Graphics::VectorRenderer::drawCallback_SQUARE;
- _drawFunctions["roundedsq"] = &Graphics::VectorRenderer::drawCallback_ROUNDSQ;
- _drawFunctions["bevelsq"] = &Graphics::VectorRenderer::drawCallback_BEVELSQ;
- _drawFunctions["line"] = &Graphics::VectorRenderer::drawCallback_LINE;
- _drawFunctions["triangle"] = &Graphics::VectorRenderer::drawCallback_TRIANGLE;
- _drawFunctions["fill"] = &Graphics::VectorRenderer::drawCallback_FILLSURFACE;
- _drawFunctions["tab"] = &Graphics::VectorRenderer::drawCallback_TAB;
- _drawFunctions["void"] = &Graphics::VectorRenderer::drawCallback_VOID;
- _drawFunctions["bitmap"] = &Graphics::VectorRenderer::drawCallback_BITMAP;
- _drawFunctions["cross"] = &Graphics::VectorRenderer::drawCallback_CROSS;
-
_defaultStepGlobal = defaultDrawStep();
_defaultStepLocal = 0;
_theme = parent;
@@ -107,8 +88,6 @@ ThemeParser::ThemeParser(ThemeEngine *parent) : XMLParser() {
ThemeParser::~ThemeParser() {
delete _defaultStepGlobal;
delete _defaultStepLocal;
- _palette.clear();
- _drawFunctions.clear();
}
void ThemeParser::cleanup() {
@@ -281,15 +260,44 @@ bool ThemeParser::parserCallback_color(ParserNode *node) {
}
+static Graphics::DrawingFunctionCallback getDrawingFunctionCallback(const Common::String &name) {
+
+ if (name == "circle")
+ return &Graphics::VectorRenderer::drawCallback_CIRCLE;
+ if (name == "square")
+ return &Graphics::VectorRenderer::drawCallback_SQUARE;
+ if (name == "roundedsq")
+ return &Graphics::VectorRenderer::drawCallback_ROUNDSQ;
+ if (name == "bevelsq")
+ return &Graphics::VectorRenderer::drawCallback_BEVELSQ;
+ if (name == "line")
+ return &Graphics::VectorRenderer::drawCallback_LINE;
+ if (name == "triangle")
+ return &Graphics::VectorRenderer::drawCallback_TRIANGLE;
+ if (name == "fill")
+ return &Graphics::VectorRenderer::drawCallback_FILLSURFACE;
+ if (name == "tab")
+ return &Graphics::VectorRenderer::drawCallback_TAB;
+ if (name == "void")
+ return &Graphics::VectorRenderer::drawCallback_VOID;
+ if (name == "bitmap")
+ return &Graphics::VectorRenderer::drawCallback_BITMAP;
+ if (name == "cross")
+ return &Graphics::VectorRenderer::drawCallback_CROSS;
+
+ return 0;
+}
+
+
bool ThemeParser::parserCallback_drawstep(ParserNode *node) {
Graphics::DrawStep *drawstep = newDrawStep();
Common::String functionName = node->values["func"];
- if (_drawFunctions.contains(functionName) == false)
- return parserError("%s is not a valid drawing function name", functionName.c_str());
+ drawstep->drawingCall = getDrawingFunctionCallback(functionName);
- drawstep->drawingCall = _drawFunctions[functionName];
+ if (drawstep->drawingCall == 0)
+ return parserError("%s is not a valid drawing function name", functionName.c_str());
if (!parseDrawStep(node, drawstep, true))
return false;