diff options
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/graphics/cairo/CairoGraphicsFactory.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
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<ISolidColorBrush> +CairoGraphicsFactory::CreateSolidColorBrush() { + return std::make_unique<CairoSolidColorBrush>(this); +} + +std::unique_ptr<IGeometryBuilder> +CairoGraphicsFactory::CreateGeometryBuilder() { + return std::make_unique<CairoGeometryBuilder>(this); +} + +std::unique_ptr<IFont> CairoGraphicsFactory::CreateFont(String font_family, + float font_size) { + return std::make_unique<PangoFont>(this, std::move(font_family), font_size); +} + +std::unique_ptr<ITextLayout> CairoGraphicsFactory::CreateTextLayout( + std::shared_ptr<IFont> font, String text) { + auto text_layout = std::make_unique<PangoTextLayout>(this, std::move(font)); + text_layout->SetText(std::move(text)); + return text_layout; +} + +IImageFactory* CairoGraphicsFactory::GetImageFactory() { return nullptr; } } // namespace cru::platform::graphics::cairo |