aboutsummaryrefslogtreecommitdiffstats
path: root/yage/core/spritesheet.h
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-10-31 22:11:18 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-10-31 22:11:18 +0000
commitf776df6076725d14679b31168e3ede53c966182e (patch)
treeb843d7ef0d0722a1b3571ee09aa1345d19c60e7f /yage/core/spritesheet.h
parent1bb0ef8960c71ef505a351702bec54c01ba15e22 (diff)
downloadYAGE-f776df6076725d14679b31168e3ede53c966182e.tar.gz
YAGE-f776df6076725d14679b31168e3ede53c966182e.zip
renaming base folder
Diffstat (limited to 'yage/core/spritesheet.h')
-rw-r--r--yage/core/spritesheet.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/yage/core/spritesheet.h b/yage/core/spritesheet.h
new file mode 100644
index 00000000..2ead0ba1
--- /dev/null
+++ b/yage/core/spritesheet.h
@@ -0,0 +1,64 @@
+/* ----------------------------------------------------------------------------
+ * spritesheet.h
+ *
+ * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com>
+ * MIT License, see LICENSE file for more details.
+ * ----------------------------------------------------------------------------
+ */
+
+/** @file
+ */
+
+#ifndef YAGE_SPRITESHEET_H
+#define YAGE_SPRITESHEET_H
+
+#include "texture.h"
+
+#include <rapidjson/reader.h>
+
+#include <map>
+#include <string>
+
+namespace yage
+{
+
+namespace details
+{
+
+struct Coordinate {
+ int x;
+ int y;
+ int width;
+ int height;
+
+ Coordinate() = default;
+
+ Coordinate(int x_i, int y_i, int width_i, int height_i)
+ : x(x_i), y(y_i), width(width_i), height(height_i)
+ {
+ }
+};
+
+typedef std::map<std::string, details::Coordinate> SpriteMap;
+
+} // namespace details
+
+class SpriteSheet
+{
+public:
+ SpriteSheet(std::string pngFileName, std::string jsonFileName);
+
+ void sprite(std::string spriteName) const;
+ std::string fileContent(std::string jsonFileName) const;
+
+private:
+ Texture texture_;
+ details::SpriteMap fileLocations_;
+
+ details::SpriteMap parseJson(int &width, int &height,
+ std::string jsonContent) const;
+};
+
+} // namespace yage
+
+#endif