22 #ifndef FIFE_VIDEO_IMAGE_H
23 #define FIFE_VIDEO_IMAGE_H
36 #include "util/base/fife_stdint.h"
37 #include "util/resource/resource.h"
38 #include "util/structures/point.h"
39 #include "util/structures/rect.h"
43 typedef SharedPtr<Image> ImagePtr;
47 class Image :
public IResource {
51 Image(IResourceLoader* loader = 0);
52 Image(
const std::string& name, IResourceLoader* loader = 0);
58 Image(SDL_Surface* surface);
59 Image(
const std::string& name, SDL_Surface* surface);
66 Image(
const uint8_t* data, uint32_t width, uint32_t height);
67 Image(
const std::string& name,
const uint8_t* data, uint32_t width, uint32_t height);
83 virtual void render(
const Rect& rect, uint8_t alpha = 255, uint8_t
const* rgb = 0) = 0;
84 virtual void renderZ(
const Rect& rect,
float vertexZ, uint8_t alpha = 255,
bool forceNewBatch =
false, uint8_t
const* rgb = 0) {}
91 SDL_Surface* getSurface() { assert(m_surface);
return m_surface; }
92 const SDL_Surface* getSurface()
const { assert(m_surface);
return m_surface; }
99 virtual void setSurface(SDL_Surface* surface) = 0;
103 void saveImage(
const std::string& filename);
107 static void saveAsPng(
const std::string& filename,
const SDL_Surface& surface);
108 static bool putPixel(SDL_Surface* surface, int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
110 uint32_t getWidth()
const;
111 uint32_t getHeight()
const;
112 const Rect& getArea()
const;
114 void setXShift(int32_t xshift) {
117 int32_t getXShift()
const {
120 void setYShift(int32_t yshift) {
123 int32_t getYShift()
const {
127 void getPixelRGBA(int32_t x, int32_t y, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a);
129 virtual size_t getSize();
155 SDL_Surface* m_surface;
167 void reset(SDL_Surface* surface);
175 std::string createUniqueImageName();