LPCGame
A Simple 2d Game Engine
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
image.h
1 #ifndef IMAGE_H
2 #define IMAGE_H
3 
4 #include <string>
5 #include <vector>
6 #include <memory>
7 #include <SDL.h>
8 #include "external/json/json.h"
9 #include "rect.h"
10 #include "vectors.h"
11 
13 
17 class Image {
18 public:
19  Image();
25  Image(const std::string &file);
30  ~Image();
38  void SetClips(const std::vector<Recti> &clips);
46  void GenClips(int cW, int cH);
53  SDL_Texture* Texture();
59  Recti Clip(int clipNum) const;
64  Recti Clip() const;
69  void SetActiveClip(int clip);
74  int ClipCount() const;
80  void Size(int *w, int *h = NULL) const;
82  int W() const;
84  int H() const;
86  std::string File() const;
91  virtual void Save(const std::string &file) const;
97  virtual void Load(const std::string &file);
98 
99 protected:
104  virtual void Load(Json::Value val);
109  Json::Value SaveClips() const;
110 
111 private:
113  Image(const Image &a);
114  Image& operator = (const Image &a);
115 
116 protected:
117  std::shared_ptr<SDL_Texture> mTexture;
118  std::string mFile;
119  Recti *mClips;
120  int mNumClips;
121  int mActiveClip;
122 };
123 
124 #endif