00001 #ifndef IONFLUX_TOOLS_CAIRO_IMAGESURFACE
00002 #define IONFLUX_TOOLS_CAIRO_IMAGESURFACE
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "ionflux/CairoSurface.hpp"
00030
00031 namespace Ionflux
00032 {
00033
00034 namespace Tools
00035 {
00036
00037 namespace Cairo
00038 {
00039
00048 class ImageSurface
00049 : public Surface
00050 {
00051 private:
00052
00053 protected:
00054
00055 public:
00060 ImageSurface();
00061
00068 ImageSurface(const ImageSurface& initSurface);
00069
00076 ImageSurface(cairo_surface_t* initSurface);
00077
00086 ImageSurface(cairo_format_t format, int width, int height);
00087
00098 ImageSurface(unsigned char* data, cairo_format_t format, int width, int
00099 height, int stride);
00100
00107 ImageSurface(const std::string& pngFilename);
00108
00116 ImageSurface(cairo_read_func_t pngReadFunc, void* closure);
00117
00122 virtual ~ImageSurface();
00123
00132 virtual cairo_status_t writeToPng(const std::string& pngFilename);
00133
00143 virtual cairo_status_t writeToPngStream(cairo_write_func_t write_func,
00144 void* closure);
00145
00152 virtual int getWidth();
00153
00160 virtual int getHeight();
00161
00170 virtual ImageSurface& operator=(const ImageSurface& newCairoSurface);
00171
00180 virtual ImageSurface& operator=(cairo_surface_t* newCairoSurface);
00181 };
00182
00183 }
00184
00185 }
00186
00187 }
00188
00192 #endif