1 // Copyright (C) 2007, 2008, 2009 Ben Asselstine
3 // This program is free software; you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation; either version 3 of the License, or
6 // (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU Library General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 #include "tilestyle.h"
23 #include "ucompose.hpp"
26 std::string TileStyle::d_tag = "tilestyle";
29 TileStyle::TileStyle()
34 TileStyle::TileStyle(XML_Helper* helper)
41 helper->getData(idstr, "id");
42 unsigned long int val = 0;
43 val = strtoul (idstr.c_str(), &end, 0);
45 helper->getData(i, "type");
46 d_type = static_cast<TileStyle::Type>(i);
50 TileStyle::~TileStyle()
54 bool TileStyle::save(XML_Helper *helper)
58 retval &= helper->openTag(d_tag);
61 idstr = String::ucompose ("0x%1", Glib::ustring::format(std::hex, std::setfill(L'0'), std::setw(2), d_id));
62 retval &= helper->saveData("id", idstr);
63 retval &= helper->saveData("type", d_type);
64 retval &= helper->closeTag();
69 std::string TileStyle::getTypeName() const
71 return getTypeName(d_type);
74 std::string TileStyle::getTypeName(Type type)
82 return _("Outer Top-Left");
85 return _("Outer Top-Centre");
88 return _("Outer Top-Right");
91 return _("Outer Bottom-Left");
93 case OUTERBOTTOMCENTER:
94 return _("Outer Bottom-Centre");
96 case OUTERBOTTOMRIGHT:
97 return _("Outer Bottom-Right");
100 return _("Outer Middle-Left");
102 case INNERMIDDLECENTER:
103 return _("Outer Middle-Centre");
105 case OUTERMIDDLERIGHT:
106 return _("Outer Middle-Right");
109 return _("Inner Top-Left");
112 return _("Inner Top-Right");
114 case INNERBOTTOMLEFT:
115 return _("Inner Bottom-Left");
117 case INNERBOTTOMRIGHT:
118 return _("Inner Bottom-Right");
120 case TOPLEFTTOBOTTOMRIGHTDIAGONAL:
121 return _("Top-Left To Bottom-Right Diagonal");
123 case BOTTOMLEFTTOTOPRIGHTDIAGONAL:
124 return _("Bottom-Left to Top-Right Diagonal");
134 TileStyle::Type TileStyle::typeNameToType(std::string name)
136 if (name == _("Lone"))
138 else if (name == _("Outer Top-Left"))
140 else if (name == _("Outer Top-Centre"))
141 return OUTERTOPCENTER;
142 else if (name == _("Outer Top-Right"))
143 return OUTERTOPRIGHT;
144 else if (name == _("Outer Bottom-Left"))
145 return OUTERBOTTOMLEFT;
146 else if (name == _("Outer Bottom-Centre"))
147 return OUTERBOTTOMCENTER;
148 else if (name == _("Outer Bottom-Right"))
149 return OUTERBOTTOMRIGHT;
150 else if (name == _("Outer Middle-Left"))
151 return OUTERMIDDLELEFT;
152 else if (name == _("Outer Middle-Centre"))
153 return INNERMIDDLECENTER;
154 else if (name == _("Outer Middle-Right"))
155 return OUTERMIDDLERIGHT;
156 else if (name == _("Inner Top-Left"))
158 else if (name == _("Inner Top-Right"))
159 return INNERTOPRIGHT;
160 else if (name == _("Inner Bottom-Left"))
161 return INNERBOTTOMLEFT;
162 else if (name == _("Inner Bottom-Right"))
163 return INNERBOTTOMRIGHT;
164 else if (name == _("Top-Left To Bottom-Right Diagonal"))
165 return TOPLEFTTOBOTTOMRIGHTDIAGONAL;
166 else if (name == _("Bottom-Left to Top-Right Diagonal"))
167 return BOTTOMLEFTTOTOPRIGHTDIAGONAL;
168 else if (name == _("Other"))