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();
151 virtual void copySubimage(uint32_t xoffset, uint32_t yoffset,
const ImagePtr& img);
155 SDL_Surface* m_surface;
167 void reset(SDL_Surface* surface);
175 std::string createUniqueImageName();
Image(IResourceLoader *loader=0)
void reset(SDL_Surface *surface)
void saveImage(const std::string &filename)
virtual void invalidate()=0
const Rect & getSubImageRect() const
SDL_Surface * detachSurface()
static void saveAsPng(const std::string &filename, const SDL_Surface &surface)
virtual void copySubimage(uint32_t xoffset, uint32_t yoffset, const ImagePtr &img)
virtual void setSurface(SDL_Surface *surface)=0
bool isSharedImage() const
virtual void render(const Rect &rect, uint8_t alpha=255, uint8_t const *rgb=0)=0
virtual void forceLoadInternal()=0
virtual void useSharedImage(const ImagePtr &shared, const Rect ®ion)=0
credit to phoku for his NodeDisplay example which the visitor code is adapted from ( he coded the qua...