From 1a8ec165031af3b860028ef1b360acc8e7baf9e6 Mon Sep 17 00:00:00 2001 From: TravisBot <> Date: Thu, 21 Sep 2017 23:32:46 +0000 Subject: Rebuilding documentation --- yage/base/spritesheet.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 yage/base/spritesheet.h (limited to 'yage/base/spritesheet.h') diff --git a/yage/base/spritesheet.h b/yage/base/spritesheet.h new file mode 100644 index 00000000..bc60f8b9 --- /dev/null +++ b/yage/base/spritesheet.h @@ -0,0 +1,90 @@ +/* ---------------------------------------------------------------------------- + * spritesheet.h + * + * Copyright (c) 2017 Yann Herklotz Grave + * MIT License, see LICENSE file for more details. + * ---------------------------------------------------------------------------- + */ + +#ifndef YAGE_SPRITESHEET_H +#define YAGE_SPRITESHEET_H + +#include "texture.h" + +#include + +#include +#include + +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 SpriteMap; + +class SpriteSheetHandler + : public rapidjson::BaseReaderHandler, SpriteSheetHandler> +{ +public: + bool Null(); + bool Bool(bool b); + bool Int(int i); + bool Uint(unsigned u); + bool Int64(int64_t i); + bool Uint64(uint64_t u); + bool Double(double d); + bool String(const char *str, rapidjson::SizeType length, bool copy); + + bool Key(const char *str, rapidjson::SizeType length, bool copy); + bool StartObject(); + bool EndObject(rapidjson::SizeType memberCount); + bool StartArray(); + bool EndArray(rapidjson::SizeType memberCount); + + SpriteMap spriteMap() const; + +private: + std::string current_key_; + std::string current_image_; + Coordinate coord_; + int depth_; + int image_width_; + int image_height_; + SpriteMap map_; + + bool handleNumber(int i); +}; + +} // namespace details + +class SpriteSheet +{ +public: + SpriteSheet(std::string pngFileName, std::string jsonFileName); + + void sprite(std::string spriteName) const; + +private: + Texture texture_; + details::SpriteMap fileLocations_; +}; + +} // namespace yage + +#endif -- cgit