initial commit, lordsawar source, slightly modified
[lordsawar] / src / tilestyle.cpp
diff --git a/src/tilestyle.cpp b/src/tilestyle.cpp
new file mode 100644 (file)
index 0000000..70d3c6d
--- /dev/null
@@ -0,0 +1,174 @@
+// Copyright (C) 2007, 2008, 2009 Ben Asselstine
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU Library General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
+//  02110-1301, USA.
+
+#include <iostream>
+#include <iomanip>
+
+
+#include "tilestyle.h"
+#include "ucompose.hpp"
+#include "defs.h"
+
+std::string TileStyle::d_tag = "tilestyle";
+using namespace std;
+
+TileStyle::TileStyle()
+  : d_image(0)
+{
+}
+
+TileStyle::TileStyle(XML_Helper* helper)
+  : d_image(0)
+{
+  int i;
+  char *end = NULL;
+  std::string idstr;
+
+  helper->getData(idstr, "id");
+  unsigned long int val = 0;
+  val = strtoul (idstr.c_str(), &end, 0);
+  d_id = (guint32) val;
+  helper->getData(i, "type");
+  d_type = static_cast<TileStyle::Type>(i);
+
+}
+    
+TileStyle::~TileStyle()
+{
+}
+
+bool TileStyle::save(XML_Helper *helper)
+{
+  bool retval = true;
+
+  retval &= helper->openTag(d_tag);
+  Glib::ustring idstr;
+  
+  idstr = String::ucompose ("0x%1", Glib::ustring::format(std::hex, std::setfill(L'0'), std::setw(2), d_id));
+  retval &= helper->saveData("id", idstr);
+  retval &= helper->saveData("type", d_type);
+  retval &= helper->closeTag();
+
+  return retval;
+}
+
+std::string TileStyle::getTypeName() const
+{
+  return getTypeName(d_type);
+}
+
+std::string TileStyle::getTypeName(Type type)
+{
+  switch (type)
+    {
+    case LONE:
+      return _("Lone");
+      break;
+    case OUTERTOPLEFT:
+      return _("Outer Top-Left");
+      break;
+    case OUTERTOPCENTER:
+      return _("Outer Top-Centre");
+      break;
+    case OUTERTOPRIGHT:
+      return _("Outer Top-Right");
+      break;
+    case OUTERBOTTOMLEFT:
+      return _("Outer Bottom-Left");
+      break;
+    case OUTERBOTTOMCENTER:
+      return _("Outer Bottom-Centre");
+      break;
+    case OUTERBOTTOMRIGHT:
+      return _("Outer Bottom-Right");
+      break;
+    case OUTERMIDDLELEFT:
+      return _("Outer Middle-Left");
+      break;
+    case INNERMIDDLECENTER:
+      return _("Outer Middle-Centre");
+      break;
+    case OUTERMIDDLERIGHT:
+      return _("Outer Middle-Right");
+      break;
+    case INNERTOPLEFT:
+      return _("Inner Top-Left");
+      break;
+    case INNERTOPRIGHT:
+      return _("Inner Top-Right");
+      break;
+    case INNERBOTTOMLEFT:
+      return _("Inner Bottom-Left");
+      break;
+    case INNERBOTTOMRIGHT:
+      return _("Inner Bottom-Right");
+      break;
+    case TOPLEFTTOBOTTOMRIGHTDIAGONAL:
+      return _("Top-Left To Bottom-Right Diagonal");
+      break;
+    case BOTTOMLEFTTOTOPRIGHTDIAGONAL:
+      return _("Bottom-Left to Top-Right Diagonal");
+      break;
+    case OTHER:
+      return _("Other");
+      break;
+    default:
+      return "unknown";
+    }
+}
+       
+TileStyle::Type TileStyle::typeNameToType(std::string name)
+{
+  if (name == _("Lone"))
+    return LONE;
+  else if (name == _("Outer Top-Left"))
+    return OUTERTOPLEFT;
+  else if (name == _("Outer Top-Centre"))
+    return OUTERTOPCENTER;
+  else if (name == _("Outer Top-Right"))
+    return OUTERTOPRIGHT;
+  else if (name == _("Outer Bottom-Left"))
+    return OUTERBOTTOMLEFT;
+  else if (name == _("Outer Bottom-Centre"))
+    return OUTERBOTTOMCENTER;
+  else if (name == _("Outer Bottom-Right"))
+    return OUTERBOTTOMRIGHT;
+  else if (name == _("Outer Middle-Left"))
+    return OUTERMIDDLELEFT;
+  else if (name == _("Outer Middle-Centre"))
+    return INNERMIDDLECENTER;
+  else if (name == _("Outer Middle-Right"))
+    return OUTERMIDDLERIGHT;
+  else if (name == _("Inner Top-Left"))
+    return INNERTOPLEFT;
+  else if (name == _("Inner Top-Right"))
+    return INNERTOPRIGHT;
+  else if (name == _("Inner Bottom-Left"))
+    return INNERBOTTOMLEFT;
+  else if (name == _("Inner Bottom-Right"))
+    return INNERBOTTOMRIGHT;
+  else if (name == _("Top-Left To Bottom-Right Diagonal"))
+    return TOPLEFTTOBOTTOMRIGHTDIAGONAL;
+  else if (name == _("Bottom-Left to Top-Right Diagonal"))
+    return BOTTOMLEFTTOTOPRIGHTDIAGONAL;
+  else if (name == _("Other"))
+    return OTHER;
+  else
+    return OTHER;
+}
+
+// End of file