diff options
author | Eugene Sandulenko | 2009-06-06 17:51:41 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2009-06-06 17:51:41 +0000 |
commit | b0f7f2e8d412b65a7bb950f50d1fa511fd6ef946 (patch) | |
tree | 7c48a81f6139f6c70497adb0d6e168046cbb1d5b /gui/ThemeParser.cpp | |
parent | b49d23b89810fc196a27e2d3c49e17364fc5f453 (diff) | |
download | scummvm-rg350-b0f7f2e8d412b65a7bb950f50d1fa511fd6ef946.tar.gz scummvm-rg350-b0f7f2e8d412b65a7bb950f50d1fa511fd6ef946.tar.bz2 scummvm-rg350-b0f7f2e8d412b65a7bb950f50d1fa511fd6ef946.zip |
Implement widget property "textalign". Added it to all theme layouts
svn-id: r41265
Diffstat (limited to 'gui/ThemeParser.cpp')
-rw-r--r-- | gui/ThemeParser.cpp | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp index d0e5528480..31d1deb656 100644 --- a/gui/ThemeParser.cpp +++ b/gui/ThemeParser.cpp @@ -62,6 +62,28 @@ static TextData parseTextDataId(const Common::String &name) { return kTextDataNone; } +static Graphics::TextAlign parseTextHAlign(const Common::String &val) { + if (val == "left") + return Graphics::kTextAlignLeft; + else if (val == "right") + return Graphics::kTextAlignRight; + else if (val == "center") + return Graphics::kTextAlignCenter; + else + return Graphics::kTextAlignInvalid; +} + +static GUI::ThemeEngine::TextAlignVertical parseTextVAlign(const Common::String &val) { + if (val == "top") + return GUI::ThemeEngine::kTextAlignVTop; + else if (val == "center") + return GUI::ThemeEngine::kTextAlignVCenter; + else if (val == "bottom") + return GUI::ThemeEngine::kTextAlignVBottom; + else + return GUI::ThemeEngine::kTextAlignVInvalid; +} + ThemeParser::ThemeParser(ThemeEngine *parent) : XMLParser() { @@ -206,22 +228,10 @@ bool ThemeParser::parserCallback_text(ParserNode *node) { Graphics::TextAlign alignH; GUI::ThemeEngine::TextAlignVertical alignV; - if (node->values["horizontal_align"] == "left") - alignH = Graphics::kTextAlignLeft; - else if (node->values["horizontal_align"] == "right") - alignH = Graphics::kTextAlignRight; - else if (node->values["horizontal_align"] == "center") - alignH = Graphics::kTextAlignCenter; - else + if ((alignH = parseTextHAlign(node->values["horizontal_align"])) == Graphics::kTextAlignInvalid) return parserError("Invalid value for text alignment."); - if (node->values["vertical_align"] == "top") - alignV = GUI::ThemeEngine::kTextAlignVTop; - else if (node->values["vertical_align"] == "center") - alignV = GUI::ThemeEngine::kTextAlignVCenter; - else if (node->values["vertical_align"] == "bottom") - alignV = GUI::ThemeEngine::kTextAlignVBottom; - else + if ((alignV = parseTextVAlign(node->values["vertical_align"])) == GUI::ThemeEngine::kTextAlignVInvalid) return parserError("Invalid value for text alignment."); Common::String id = getParentNode(node)->values["id"]; @@ -566,7 +576,14 @@ bool ThemeParser::parserCallback_widget(ParserNode *node) { return parserError("Corrupted height value in key for %s", var.c_str()); } - _theme->getEvaluator()->addWidget(var, width, height, node->values["type"], enabled); + Graphics::TextAlign alignH = Graphics::kTextAlignLeft; + + if (node->values.contains("textalign")) { + if((alignH = parseTextHAlign(node->values["textalign"])) == Graphics::kTextAlignInvalid) + return parserError("Invalid value for text alignment."); + } + + _theme->getEvaluator()->addWidget(var, width, height, node->values["type"], enabled, alignH); } return true; |