nuclear@0: #ifndef IMAGE_H_ nuclear@0: #define IMAGE_H_ nuclear@0: nuclear@15: namespace goatgfx { nuclear@0: nuclear@0: class Image { nuclear@0: public: nuclear@0: enum Format { nuclear@0: FMT_GREY, nuclear@0: FMT_RGB, nuclear@0: FMT_RGBA, nuclear@0: FMT_GREY_FLOAT, nuclear@0: FMT_RGB_FLOAT, nuclear@0: FMT_RGBA_FLOAT nuclear@0: }; nuclear@0: nuclear@0: private: nuclear@0: Format fmt; nuclear@0: int width, height; nuclear@0: void *pixels; nuclear@0: nuclear@0: public: nuclear@0: Image(); nuclear@0: ~Image(); nuclear@0: nuclear@0: int get_width() const; nuclear@0: int get_height() const; nuclear@0: nuclear@0: Format get_format() const; nuclear@0: nuclear@0: bool create(int x, int y, Format fmt = FMT_RGBA); nuclear@6: bool set_pixels(int xsz, int ysz, void *pixels, Format fmt = FMT_RGBA); nuclear@6: bool set_pixels(int xsz, int ysz, void *pixels, int scan_width, Format fmt = FMT_RGBA); nuclear@6: bool set_pixels(int xsz, int ysz, void *pixels, int x, int y, int scan_width = -1, Format fmt = FMT_RGBA); nuclear@0: void *get_pixels() const; nuclear@0: nuclear@6: void flip_horizontal(); nuclear@6: void flip_vertical(); nuclear@6: void rotate_180(); nuclear@6: nuclear@0: bool load(const char *fname); nuclear@0: bool save(const char *fname) const; nuclear@0: }; nuclear@0: nuclear@15: } // namespace goatgfx nuclear@15: nuclear@0: #endif // IMAGE_H_