aboutsummaryrefslogtreecommitdiff
path: root/src/platform/graphics/cairo
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/graphics/cairo')
-rw-r--r--src/platform/graphics/cairo/CairoGraphicsFactory.cpp28
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