00001 #ifndef IONFLUX_TOOLS_CAIRO_SURFACE
00002 #define IONFLUX_TOOLS_CAIRO_SURFACE
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 "cairo.h"
00030 #include "ionflux/ManagedObject.hpp"
00031
00032 namespace Ionflux
00033 {
00034
00035 namespace Tools
00036 {
00037
00038 namespace Cairo
00039 {
00040
00049 class Surface
00050 : public Ionflux::Tools::ManagedObject
00051 {
00052 private:
00053
00054 protected:
00056 cairo_surface_t* cairoSurface;
00057
00058 public:
00063 Surface();
00064
00071 Surface(const Surface& initSurface);
00072
00079 Surface(cairo_surface_t* initSurface);
00080
00085 virtual ~Surface();
00086
00097 virtual cairo_surface_t* createSimilar(cairo_content_t content,
00098 int width, int height);
00099
00104 virtual void reference();
00105
00110 virtual void destroy();
00111
00116 virtual void finish();
00117
00126 virtual void* getUserData(const cairo_user_data_key_t* key);
00127
00138 virtual cairo_status_t setUserData(const cairo_user_data_key_t* key,
00139 void* user_data, cairo_destroy_func_t destroy);
00140
00148 virtual void setDeviceOffset(double x_offset, double y_offset);
00149
00158 virtual Surface& operator=(const Surface& newCairoSurface);
00159
00168 virtual Surface& operator=(cairo_surface_t* newCairoSurface);
00169
00176 virtual void setCairoSurface(cairo_surface_t* newCairoSurface);
00177
00182 virtual cairo_surface_t* getCairoSurface() const;
00183 };
00184
00185 }
00186
00187 }
00188
00189 }
00190
00194 #endif