#ifndef CAIRO_IMAGE_H
#define CAIRO_IMAGE_H
#include <gtk/gtk.h>
#include <utility>
#include <memory>
class CairoImage
{
public:
CairoImage();
private:
// Introduce alias to help with verbosity
using surface_type = std::unique_ptr<cairo_surface_t, void(*)(cairo_surface_t*)>;
surface_type m_surface;
};
// Constructor
// pass dispose as deleter -- you can pass &deleter, too
CairoImage::CairoImage( const std::string& imageFile )
: m_surface(cairo_image_surface_create_from_png(imageFile.c_str()), cairo_surface_destroy)
, m_cr(cairo_create( m_surface.get() ))
, m_size(cairo_image_surface_get_width( m_surface.get() )
,cairo_image_surface_get_height ( m_surface.get() ))
{
std::cout << "Image Created" << std::endl;
}
CairoImage::~CairoImage()
{
std::cout << "Unique ptr is magic" << std::endl;
}
I2lmbmRlZiBDQUlST19JTUFHRV9ICiNkZWZpbmUgQ0FJUk9fSU1BR0VfSAoKI2luY2x1ZGUgPGd0ay9ndGsuaD4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxtZW1vcnk+IAoKCmNsYXNzIENhaXJvSW1hZ2UKewpwdWJsaWM6CiAgICBDYWlyb0ltYWdlKCk7CiAJCnByaXZhdGU6CiAgICAvLyBJbnRyb2R1Y2UgYWxpYXMgdG8gaGVscCB3aXRoIHZlcmJvc2l0eQogICAgdXNpbmcgc3VyZmFjZV90eXBlID0gc3RkOjp1bmlxdWVfcHRyPGNhaXJvX3N1cmZhY2VfdCwgdm9pZCgqKShjYWlyb19zdXJmYWNlX3QqKT47CiAKICAgIHN1cmZhY2VfdHlwZSBtX3N1cmZhY2U7Cn07CiAKCgovLyBDb25zdHJ1Y3RvcgovLyBwYXNzIGRpc3Bvc2UgYXMgZGVsZXRlciAtLSB5b3UgY2FuIHBhc3MgJmRlbGV0ZXIsIHRvbwpDYWlyb0ltYWdlOjpDYWlyb0ltYWdlKCBjb25zdCBzdGQ6OnN0cmluZyYgaW1hZ2VGaWxlICkgCiAgIDogbV9zdXJmYWNlKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zyb21fcG5nKGltYWdlRmlsZS5jX3N0cigpKSwgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KQogICAsIG1fY3IoY2Fpcm9fY3JlYXRlKCBtX3N1cmZhY2UuZ2V0KCkgKSkKICAgLCBtX3NpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoIG1fc3VyZmFjZS5nZXQoKSApCiAgICAgICAsY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0ICggbV9zdXJmYWNlLmdldCgpICkpCnsKICAgIHN0ZDo6Y291dCA8PCAiSW1hZ2UgQ3JlYXRlZCIgPDwgc3RkOjplbmRsOwp9CkNhaXJvSW1hZ2U6On5DYWlyb0ltYWdlKCkgCnsKICAgIHN0ZDo6Y291dCA8PCAiVW5pcXVlIHB0ciBpcyBtYWdpYyIgPDwgc3RkOjplbmRsOwp9Cg==