summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-07-08 01:29:06 +0300
committerAndrei Karas <akaras@inbox.ru>2012-07-08 01:29:06 +0300
commit25c00083bc6320262236595c3b7f7b4a3341abf2 (patch)
tree5170757e2cc393ae1c56a16f19d74b555ae499a7
parentdcc18eba1769a46aeaee2ff441706cf14f3ada4c (diff)
downloadmanaplus-25c00083bc6320262236595c3b7f7b4a3341abf2.tar.gz
manaplus-25c00083bc6320262236595c3b7f7b4a3341abf2.tar.bz2
manaplus-25c00083bc6320262236595c3b7f7b4a3341abf2.tar.xz
manaplus-25c00083bc6320262236595c3b7f7b4a3341abf2.zip
Simplify skin attributes reading.
-rw-r--r--src/gui/theme.cpp143
1 files changed, 26 insertions, 117 deletions
diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp
index b225cac08..a5dcb9e24 100644
--- a/src/gui/theme.cpp
+++ b/src/gui/theme.cpp
@@ -307,6 +307,16 @@ void Theme::optionChanged(const std::string &)
updateAlpha();
}
+#define loadSkinSubImage(object, name) \
+ if (partType == name) \
+ { \
+ if (dBorders) \
+ object = dBorders->getSubImage(xPos, yPos, width, height); \
+ else \
+ object = nullptr; \
+ }
+
+
Skin *Theme::readSkin(const std::string &filename)
{
if (filename.empty())
@@ -362,124 +372,23 @@ Skin *Theme::readSkin(const std::string &filename)
const int width = XML::getProperty(partNode, "width", 1);
const int height = XML::getProperty(partNode, "height", 1);
- if (partType == "top-left-corner")
- {
- if (dBorders)
- {
- border.grid[0] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[0] = nullptr;
- }
- }
- else if (partType == "top-edge")
- {
- if (dBorders)
- {
- border.grid[1] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[1] = nullptr;
- }
- }
- else if (partType == "top-right-corner")
- {
- if (dBorders)
- {
- border.grid[2] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[2] = nullptr;
- }
- }
-
- // MIDDLE ROW
- else if (partType == "left-edge")
- {
- if (dBorders)
- {
- border.grid[3] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[3] = nullptr;
- }
- }
- else if (partType == "bg-quad")
- {
- if (dBorders)
- {
- border.grid[4] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[4] = nullptr;
- }
- }
- else if (partType == "right-edge")
- {
- if (dBorders)
- {
- border.grid[5] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[5] = nullptr;
- }
- }
-
- // BOTTOM ROW
- else if (partType == "bottom-left-corner")
- {
- if (dBorders)
- {
- border.grid[6] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[6] = nullptr;
- }
- }
- else if (partType == "bottom-edge")
- {
- if (dBorders)
- {
- border.grid[7] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[7] = nullptr;
- }
- }
- else if (partType == "bottom-right-corner")
- {
- if (dBorders)
- {
- border.grid[8] = dBorders->getSubImage(
- xPos, yPos, width, height);
- }
- else
- {
- border.grid[8] = nullptr;
- }
- }
-
+ loadSkinSubImage(border.grid[0], "top-left-corner")
+ else
+ loadSkinSubImage(border.grid[1], "top-edge")
+ else
+ loadSkinSubImage(border.grid[2], "top-right-corner")
+ else
+ loadSkinSubImage(border.grid[3], "left-edge")
+ else
+ loadSkinSubImage(border.grid[4], "bg-quad")
+ else
+ loadSkinSubImage(border.grid[5], "right-edge")
+ else
+ loadSkinSubImage(border.grid[6], "bottom-left-corner")
+ else
+ loadSkinSubImage(border.grid[7], "bottom-edge")
else
- {
- logger->log("Theme::readSkin(): Unknown part type "
- "'%s'", partType.c_str());
- }
+ loadSkinSubImage(border.grid[8], "bottom-right-corner")
}
else if (xmlNameEqual(partNode, "option"))
{