aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/ThemeParser.cpp')
-rw-r--r--gui/ThemeParser.cpp50
1 files changed, 35 insertions, 15 deletions
diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp
index 70d81a962e..230dad8cc5 100644
--- a/gui/ThemeParser.cpp
+++ b/gui/ThemeParser.cpp
@@ -26,10 +26,10 @@
#include "gui/ThemeEngine.h"
#include "gui/ThemeEval.h"
#include "gui/ThemeParser.h"
-#include "gui/gui-manager.h"
#include "graphics/VectorRenderer.h"
+#include "common/system.h"
#include "common/tokenizer.h"
namespace GUI {
@@ -861,30 +861,50 @@ bool ThemeParser::resolutionCheck(const Common::String &resolution) {
return true;
Common::StringTokenizer globTokenizer(resolution, ", ");
- Common::String cur, w, h;
- bool definedRes = false;
+ Common::String cur;
while (!globTokenizer.empty()) {
- bool ignore = false;
cur = globTokenizer.nextToken();
- if (cur[0] == '-') {
- ignore = true;
- cur.deleteChar(0);
+ bool lt;
+ int val;
+
+ if (cur.size() < 5) {
+ warning("Invalid theme 'resolution' token '%s'", resolution.c_str());
+ return false;
+ }
+
+ if (cur[0] == 'x') {
+ val = g_system->getOverlayWidth();
+ } else if (cur[0] == 'y') {
+ val = g_system->getOverlayHeight();
+ } else {
+ warning("Error parsing theme 'resolution' token '%s'", resolution.c_str());
+ return false;
+ }
+
+ if (cur[1] == '<') {
+ lt = true;
+ } else if (cur[1] == '>') {
+ lt = false;
} else {
- definedRes = true;
+ warning("Error parsing theme 'resolution' token '%s'", resolution.c_str());
+ return false;
}
- Common::StringTokenizer resTokenizer(cur, "x");
- w = resTokenizer.nextToken();
- h = resTokenizer.nextToken();
+ int token = atoi(cur.c_str() + 2);
- if ((w == "X" || atoi(w.c_str()) == g_system->getOverlayWidth()) &&
- (h == "Y" || atoi(h.c_str()) == g_system->getOverlayHeight()))
- return !ignore;
+ // check inverse for unfulfilled requirements
+ if (lt) {
+ if (val >= token)
+ return false;
+ } else {
+ if (val <= token)
+ return false;
+ }
}
- return !definedRes;
+ return true;
}
} // End of namespace GUI