aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graphics/cairo/Base.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/graphics/cairo/Base.h')
-rw-r--r--include/cru/platform/graphics/cairo/Base.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/include/cru/platform/graphics/cairo/Base.h b/include/cru/platform/graphics/cairo/Base.h
index a776f90c..4338d7f7 100644
--- a/include/cru/platform/graphics/cairo/Base.h
+++ b/include/cru/platform/graphics/cairo/Base.h
@@ -1,5 +1,9 @@
#pragma once
+#include <cru/platform/graphics/Base.h>
+
+#include <cairo/cairo.h>
+
#ifdef CRU_PLATFORM_WINDOWS
#ifdef CRU_PLATFORM_GRAPHICS_CAIRO_EXPORT_API
#define CRU_PLATFORM_GRAPHICS_CAIRO_API __declspec(dllexport)
@@ -10,12 +14,29 @@
#define CRU_PLATFORM_GRAPHICS_CAIRO_API
#endif
-#include <cairo/cairo.h>
-
-#include "../Base.h"
-
namespace cru::platform::graphics::cairo {
cairo_matrix_t CRU_PLATFORM_GRAPHICS_CAIRO_API Convert(const Matrix& matrix);
Matrix CRU_PLATFORM_GRAPHICS_CAIRO_API Convert(const cairo_matrix_t* matrix);
Matrix CRU_PLATFORM_GRAPHICS_CAIRO_API Convert(const cairo_matrix_t& matrix);
+
+class CairoGraphicsFactory;
+
+class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoResource
+ : public Object,
+ public virtual IGraphicsResource {
+ public:
+ explicit CairoResource(CairoGraphicsFactory* factory);
+
+ CRU_DELETE_COPY(CairoResource)
+ CRU_DELETE_MOVE(CairoResource)
+
+ ~CairoResource() override;
+
+ std::string GetPlatformId() const override;
+ IGraphicsFactory* GetGraphicsFactory() override;
+ CairoGraphicsFactory* GetCairoGraphicsFactory() const { return factory_; }
+
+ private:
+ CairoGraphicsFactory* factory_;
+};
} // namespace cru::platform::graphics::cairo