1 #ifndef __CAIRO_UTILS__ 2 #define __CAIRO_UTILS__ 3 4 #include <cairo/cairo.h> 5 6 7 class CairoSurfacePtr 8 { 9 public: CairoSurfacePtr(cairo_surface_t * ptr)10 CairoSurfacePtr(cairo_surface_t* ptr): ptr_(ptr) {} ~CairoSurfacePtr()11 ~CairoSurfacePtr() { cairo_surface_destroy(ptr_); } 12 13 cairo_surface_t* operator*() { return ptr_; } 14 operator cairo_surface_t* () { return ptr_; } 15 private: 16 cairo_surface_t* ptr_; 17 18 }; 19 20 class CairoPtr 21 { 22 public: CairoPtr(cairo_t * ptr)23 CairoPtr(cairo_t* ptr): ptr_(ptr) {} ~CairoPtr()24 ~CairoPtr() { cairo_destroy(ptr_); } 25 26 cairo_t* operator*() { return ptr_; } 27 operator cairo_t* () { return ptr_; } 28 29 private: 30 cairo_t* ptr_; 31 32 }; 33 34 #endif 35