aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graphics/cairo
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-06-08 22:30:50 +0800
committercrupest <crupest@outlook.com>2022-06-08 22:30:50 +0800
commitccf67fcbd182d739ac73c0beb5380c6862811d22 (patch)
treea6ac77a8c16e34e802d2e51e11411da700be3a31 /include/cru/platform/graphics/cairo
parenta61a9c8cad237c9e46ad80dae54bd210bb2692b8 (diff)
downloadcru-ccf67fcbd182d739ac73c0beb5380c6862811d22.tar.gz
cru-ccf67fcbd182d739ac73c0beb5380c6862811d22.tar.bz2
cru-ccf67fcbd182d739ac73c0beb5380c6862811d22.zip
...
Diffstat (limited to 'include/cru/platform/graphics/cairo')
-rw-r--r--include/cru/platform/graphics/cairo/CairoImage.h29
-rw-r--r--include/cru/platform/graphics/cairo/CairoPainter.h3
-rw-r--r--include/cru/platform/graphics/cairo/PangoFont.h3
-rw-r--r--include/cru/platform/graphics/cairo/PangoTextLayout.h4
4 files changed, 36 insertions, 3 deletions
diff --git a/include/cru/platform/graphics/cairo/CairoImage.h b/include/cru/platform/graphics/cairo/CairoImage.h
new file mode 100644
index 00000000..61a2e65b
--- /dev/null
+++ b/include/cru/platform/graphics/cairo/CairoImage.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "../Image.h"
+#include "CairoResource.h"
+
+namespace cru::platform::graphics::cairo {
+class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoImage : public CairoResource,
+ public virtual IImage {
+ public:
+ CairoImage(CairoGraphicsFactory* factory, int width, int height);
+ CairoImage(CairoGraphicsFactory* factory,
+ cairo_surface_t* cairo_image_surface, bool auto_release);
+
+ ~CairoImage() override;
+
+ public:
+ float GetWidth() override;
+ float GetHeight() override;
+
+ std::unique_ptr<IImage> CreateWithRect(const Rect& rect) override;
+
+ std::unique_ptr<IPainter> CreatePainter() override;
+
+ cairo_surface_t* GetCairoSurface() { return cairo_surface_; }
+
+ private:
+ cairo_surface_t* cairo_surface_;
+ bool auto_release_;
+};
+} // namespace cru::platform::graphics::cairo
diff --git a/include/cru/platform/graphics/cairo/CairoPainter.h b/include/cru/platform/graphics/cairo/CairoPainter.h
index 1b965cb4..83f0329b 100644
--- a/include/cru/platform/graphics/cairo/CairoPainter.h
+++ b/include/cru/platform/graphics/cairo/CairoPainter.h
@@ -5,7 +5,8 @@
#include <vector>
namespace cru::platform::graphics::cairo {
-class CairoPainter : public CairoResource, public virtual IPainter {
+class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoPainter : public CairoResource,
+ public virtual IPainter {
public:
CairoPainter(CairoGraphicsFactory* factory, cairo_t* cairo,
bool auto_release);
diff --git a/include/cru/platform/graphics/cairo/PangoFont.h b/include/cru/platform/graphics/cairo/PangoFont.h
index 0e080c18..3014739d 100644
--- a/include/cru/platform/graphics/cairo/PangoFont.h
+++ b/include/cru/platform/graphics/cairo/PangoFont.h
@@ -6,7 +6,8 @@
#include <pango/pango.h>
namespace cru::platform::graphics::cairo {
-class PangoFont : public CairoResource, public virtual IFont {
+class CRU_PLATFORM_GRAPHICS_CAIRO_API PangoFont : public CairoResource,
+ public virtual IFont {
public:
PangoFont(CairoGraphicsFactory* factory, String font_family, float font_size);
diff --git a/include/cru/platform/graphics/cairo/PangoTextLayout.h b/include/cru/platform/graphics/cairo/PangoTextLayout.h
index 9b6d4791..cdc54e8d 100644
--- a/include/cru/platform/graphics/cairo/PangoTextLayout.h
+++ b/include/cru/platform/graphics/cairo/PangoTextLayout.h
@@ -6,7 +6,9 @@
#include <pango/pango.h>
namespace cru::platform::graphics::cairo {
-class PangoTextLayout : public CairoResource, public virtual ITextLayout {
+class CRU_PLATFORM_GRAPHICS_CAIRO_API PangoTextLayout
+ : public CairoResource,
+ public virtual ITextLayout {
public:
PangoTextLayout(CairoGraphicsFactory* factory, std::shared_ptr<IFont> font);