///////////////////////////////////////////////////////////////////////////////
// Name: wx/gtk/private/cairo.h
// Purpose: Cairo-related helpers
// Author: Vadim Zeitlin
// Created: 2022-09-23
// Copyright: (c) 2022 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_GTK_PRIVATE_CAIRO_H_
#define _WX_GTK_PRIVATE_CAIRO_H_
// ----------------------------------------------------------------------------
// Redefine GDK function to avoiding deprecation warnings
// ----------------------------------------------------------------------------
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
static inline
cairo_t* wx_gdk_cairo_create(GdkWindow* w) { return gdk_cairo_create(w); }
#define gdk_cairo_create wx_gdk_cairo_create
wxGCC_WARNING_RESTORE(deprecated-declarations)
// ----------------------------------------------------------------------------
// RAII helper creating a Cairo context in ctor and destroying it in dtor
// ----------------------------------------------------------------------------
namespace wxGTKImpl
{
class CairoContext
{
public:
explicit CairoContext(GdkWindow* window)
: m_cr(gdk_cairo_create(window))
{
}
~CairoContext()
{
cairo_destroy(m_cr);
}
operator cairo_t*() const { return m_cr; }
private:
cairo_t* const m_cr;
wxDECLARE_NO_COPY_CLASS(CairoContext);
};
} // namespace wxGTKImpl
#endif // _WX_GTK_PRIVATE_CAIRO_H_