From 6795641779916e39e999ea28b51e159a9fade685 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 8 Jun 2022 16:30:33 +0800 Subject: ... --- .../platform/graphics/cairo/CairoGraphicsFactory.h | 13 ++++++++++ .../graphics/cairo/CairoGraphicsFactory.cpp | 28 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h b/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h index 6932f10a..e95b78a3 100644 --- a/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h +++ b/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h @@ -19,6 +19,19 @@ class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoGraphicsFactory cairo_t* GetDefaultCairo() { return default_cairo_; } PangoContext* GetDefaultPangoContext() { return default_pango_context_; } + public: + std::unique_ptr CreateSolidColorBrush() override; + + std::unique_ptr CreateGeometryBuilder() override; + + std::unique_ptr CreateFont(String font_family, + float font_size) override; + + std::unique_ptr CreateTextLayout(std::shared_ptr font, + String text) override; + + IImageFactory* GetImageFactory() override; + private: cairo_surface_t* default_cairo_surface_; cairo_t* default_cairo_; diff --git a/src/platform/graphics/cairo/CairoGraphicsFactory.cpp b/src/platform/graphics/cairo/CairoGraphicsFactory.cpp index 1fea8979..8fb7d12e 100644 --- a/src/platform/graphics/cairo/CairoGraphicsFactory.cpp +++ b/src/platform/graphics/cairo/CairoGraphicsFactory.cpp @@ -1,5 +1,9 @@ #include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" +#include "cru/platform/graphics/cairo/CairoBrush.h" +#include "cru/platform/graphics/cairo/CairoGeometry.h" #include "cru/platform/graphics/cairo/CairoResource.h" +#include "cru/platform/graphics/cairo/PangoFont.h" +#include "cru/platform/graphics/cairo/PangoTextLayout.h" namespace cru::platform::graphics::cairo { CairoGraphicsFactory::CairoGraphicsFactory() : CairoResource(this) { @@ -14,4 +18,28 @@ CairoGraphicsFactory::~CairoGraphicsFactory() { cairo_destroy(default_cairo_); cairo_surface_destroy(default_cairo_surface_); } + +std::unique_ptr +CairoGraphicsFactory::CreateSolidColorBrush() { + return std::make_unique(this); +} + +std::unique_ptr +CairoGraphicsFactory::CreateGeometryBuilder() { + return std::make_unique(this); +} + +std::unique_ptr CairoGraphicsFactory::CreateFont(String font_family, + float font_size) { + return std::make_unique(this, std::move(font_family), font_size); +} + +std::unique_ptr CairoGraphicsFactory::CreateTextLayout( + std::shared_ptr font, String text) { + auto text_layout = std::make_unique(this, std::move(font)); + text_layout->SetText(std::move(text)); + return text_layout; +} + +IImageFactory* CairoGraphicsFactory::GetImageFactory() { return nullptr; } } // namespace cru::platform::graphics::cairo -- cgit v1.2.3