From dae16f4a262b93f129dd7872bcfc6ad9a2492ec3 Mon Sep 17 00:00:00 2001 From: Moritz Martinius Date: Wed, 15 Oct 2025 19:12:15 +0200 Subject: [PATCH] Fix includes, fix copy ctor and mov ctor for CairoWrapper --- .vscode/settings.json | 3 ++ src/graphics/CairoWrapper.hpp | 10 ++++-- src/graphics/interface/ICairoWrapper.hpp | 43 ++++++++++++------------ 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b11bcc6..bf6734c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -90,6 +90,9 @@ "cSpell.words": [ "fakelabel", "fontsize", + "gboolean", + "gint", + "gobject", "halign", "libusb", "ptrnt", diff --git a/src/graphics/CairoWrapper.hpp b/src/graphics/CairoWrapper.hpp index dfbad40..d95318b 100644 --- a/src/graphics/CairoWrapper.hpp +++ b/src/graphics/CairoWrapper.hpp @@ -33,6 +33,12 @@ class CairoWrapper : public ICairoWrapper { public: ~CairoWrapper() override = default; + // No copy, no move + CairoWrapper(const CairoWrapper&) = delete; + CairoWrapper& operator=(const CairoWrapper&) = delete; + CairoWrapper(CairoWrapper&&) = delete; + CairoWrapper& operator=(CairoWrapper&&) = delete; + // Cairo image surface functions cairo_surface_t* cairo_image_surface_create(cairo_format_t format, int width, int height) override { return ::cairo_image_surface_create(format, width, height); @@ -86,9 +92,7 @@ class CairoWrapper : public ICairoWrapper { PangoContext* pango_cairo_create_context(cairo_t* cr) override { return ::pango_cairo_create_context(cr); } - void pango_cairo_show_layout(cairo_t* cr, PangoLayout* layout) override { - ::pango_cairo_show_layout(cr, layout); - } + void pango_cairo_show_layout(cairo_t* cr, PangoLayout* layout) override { ::pango_cairo_show_layout(cr, layout); } // Pango layout functions PangoLayout* pango_layout_new(PangoContext* context) override { return ::pango_layout_new(context); } diff --git a/src/graphics/interface/ICairoWrapper.hpp b/src/graphics/interface/ICairoWrapper.hpp index 48e384e..b181787 100644 --- a/src/graphics/interface/ICairoWrapper.hpp +++ b/src/graphics/interface/ICairoWrapper.hpp @@ -21,6 +21,7 @@ #include #include +#include namespace ptprnt::graphics { @@ -36,43 +37,43 @@ class ICairoWrapper { // Cairo image surface functions virtual cairo_surface_t* cairo_image_surface_create(cairo_format_t format, int width, int height) = 0; - virtual void cairo_surface_destroy(cairo_surface_t* surface) = 0; - virtual void cairo_surface_flush(cairo_surface_t* surface) = 0; - virtual void cairo_surface_mark_dirty(cairo_surface_t* surface) = 0; - virtual cairo_status_t cairo_surface_status(cairo_surface_t* surface) = 0; - virtual cairo_format_t cairo_image_surface_get_format(cairo_surface_t* surface) = 0; - virtual int cairo_image_surface_get_width(cairo_surface_t* surface) = 0; - virtual int cairo_image_surface_get_height(cairo_surface_t* surface) = 0; - virtual int cairo_image_surface_get_stride(cairo_surface_t* surface) = 0; - virtual unsigned char* cairo_image_surface_get_data(cairo_surface_t* surface) = 0; + virtual void cairo_surface_destroy(cairo_surface_t* surface) = 0; + virtual void cairo_surface_flush(cairo_surface_t* surface) = 0; + virtual void cairo_surface_mark_dirty(cairo_surface_t* surface) = 0; + virtual cairo_status_t cairo_surface_status(cairo_surface_t* surface) = 0; + virtual cairo_format_t cairo_image_surface_get_format(cairo_surface_t* surface) = 0; + virtual int cairo_image_surface_get_width(cairo_surface_t* surface) = 0; + virtual int cairo_image_surface_get_height(cairo_surface_t* surface) = 0; + virtual int cairo_image_surface_get_stride(cairo_surface_t* surface) = 0; + virtual unsigned char* cairo_image_surface_get_data(cairo_surface_t* surface) = 0; virtual cairo_status_t cairo_surface_write_to_png(cairo_surface_t* surface, const char* filename) = 0; // Cairo context functions - virtual cairo_t* cairo_create(cairo_surface_t* surface) = 0; - virtual void cairo_destroy(cairo_t* cr) = 0; - virtual void cairo_move_to(cairo_t* cr, double x, double y) = 0; + virtual cairo_t* cairo_create(cairo_surface_t* surface) = 0; + virtual void cairo_destroy(cairo_t* cr) = 0; + virtual void cairo_move_to(cairo_t* cr, double x, double y) = 0; virtual void cairo_set_source_rgb(cairo_t* cr, double red, double green, double blue) = 0; // Pango-Cairo functions - virtual PangoFontMap* pango_cairo_font_map_new() = 0; - virtual PangoContext* pango_cairo_create_context(cairo_t* cr) = 0; + virtual PangoFontMap* pango_cairo_font_map_new() = 0; + virtual PangoContext* pango_cairo_create_context(cairo_t* cr) = 0; virtual void pango_cairo_show_layout(cairo_t* cr, PangoLayout* layout) = 0; // Pango layout functions - virtual PangoLayout* pango_layout_new(PangoContext* context) = 0; + virtual PangoLayout* pango_layout_new(PangoContext* context) = 0; virtual void pango_layout_set_font_description(PangoLayout* layout, const PangoFontDescription* desc) = 0; - virtual void pango_layout_set_text(PangoLayout* layout, const char* text, int length) = 0; - virtual void pango_layout_set_height(PangoLayout* layout, int height) = 0; - virtual void pango_layout_set_alignment(PangoLayout* layout, PangoAlignment alignment) = 0; - virtual void pango_layout_set_justify(PangoLayout* layout, gboolean justify) = 0; + virtual void pango_layout_set_text(PangoLayout* layout, const char* text, int length) = 0; + virtual void pango_layout_set_height(PangoLayout* layout, int height) = 0; + virtual void pango_layout_set_alignment(PangoLayout* layout, PangoAlignment alignment) = 0; + virtual void pango_layout_set_justify(PangoLayout* layout, gboolean justify) = 0; #if PANGO_VERSION_MAJOR >= 1 && PANGO_VERSION_MINOR >= 50 virtual void pango_layout_set_justify_last_line(PangoLayout* layout, gboolean justify) = 0; #endif virtual void pango_layout_get_size(PangoLayout* layout, int* width, int* height) = 0; // Pango font description functions - virtual PangoFontDescription* pango_font_description_new() = 0; - virtual void pango_font_description_set_size(PangoFontDescription* desc, gint size) = 0; + virtual PangoFontDescription* pango_font_description_new() = 0; + virtual void pango_font_description_set_size(PangoFontDescription* desc, gint size) = 0; virtual void pango_font_description_set_family(PangoFontDescription* desc, const char* family) = 0; // GObject reference counting