nuclear@4: #ifndef IMAGE_H_ nuclear@4: #define IMAGE_H_ nuclear@4: nuclear@4: class Image { nuclear@4: private: nuclear@4: mutable int tex_width, tex_height; nuclear@4: mutable unsigned int tex; nuclear@4: mutable bool tex_valid; nuclear@4: nuclear@4: public: nuclear@4: int width, height; nuclear@4: unsigned char *pixels; nuclear@4: nuclear@4: Image(); nuclear@4: ~Image(); nuclear@4: nuclear@4: Image(const Image &img); nuclear@4: Image &operator =(const Image &img); nuclear@4: nuclear@4: bool create(int width, int height, unsigned char *pixels = 0); nuclear@4: void destroy(); nuclear@4: nuclear@4: bool load(const char *fname); nuclear@4: nuclear@4: unsigned int texture() const; nuclear@4: int texture_width() const; nuclear@4: int texture_height() const; nuclear@4: nuclear@4: void invalidate_texture(); nuclear@4: }; nuclear@4: nuclear@4: void clear_image(Image *img); nuclear@4: void clear_image(Image *img, float r, float g, float b); nuclear@4: nuclear@4: enum ImgCombine { nuclear@4: IMG_OP_ADD, nuclear@4: IMG_OP_SUB, nuclear@4: IMG_OP_MUL, nuclear@4: IMG_OP_LERP nuclear@4: }; nuclear@4: nuclear@4: bool combine_image(Image *dest, const Image *aimg, const Image *bimg, ImgCombine op = IMG_OP_LERP, float t = 0.5); nuclear@4: nuclear@4: #endif // IMAGE_H_