fork download
  1. #ifndef CAIRO_IMAGE_H
  2. #define CAIRO_IMAGE_H
  3.  
  4. #include <gtk/gtk.h>
  5. #include <utility>
  6. #include <memory>
  7.  
  8.  
  9. class CairoImage
  10. {
  11. public:
  12. CairoImage();
  13.  
  14. private:
  15. // Introduce alias to help with verbosity
  16. using surface_type = std::unique_ptr<cairo_surface_t, void(*)(cairo_surface_t*)>;
  17.  
  18. surface_type m_surface;
  19. };
  20.  
  21.  
  22.  
  23. // Constructor
  24. // pass dispose as deleter -- you can pass &deleter, too
  25. CairoImage::CairoImage( const std::string& imageFile )
  26. : m_surface(cairo_image_surface_create_from_png(imageFile.c_str()), cairo_surface_destroy)
  27. , m_cr(cairo_create( m_surface.get() ))
  28. , m_size(cairo_image_surface_get_width( m_surface.get() )
  29. ,cairo_image_surface_get_height ( m_surface.get() ))
  30. {
  31. std::cout << "Image Created" << std::endl;
  32. }
  33. CairoImage::~CairoImage()
  34. {
  35. std::cout << "Unique ptr is magic" << std::endl;
  36. }
  37.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty