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