aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/platform/graphics/cairo/CairoImageFactory.h18
-rw-r--r--src/platform/graphics/cairo/CMakeLists.txt1
-rw-r--r--src/platform/graphics/cairo/CairoImageFactory.cpp27
3 files changed, 46 insertions, 0 deletions
diff --git a/include/cru/platform/graphics/cairo/CairoImageFactory.h b/include/cru/platform/graphics/cairo/CairoImageFactory.h
new file mode 100644
index 00000000..6bc41309
--- /dev/null
+++ b/include/cru/platform/graphics/cairo/CairoImageFactory.h
@@ -0,0 +1,18 @@
+#pragma once
+#include "../ImageFactory.h"
+#include "CairoResource.h"
+
+namespace cru::platform::graphics::cairo {
+class CairoImageFactory : public CairoResource, public virtual IImageFactory {
+ public:
+ CairoImageFactory(CairoGraphicsFactory* factory);
+ ~CairoImageFactory() override;
+
+ public:
+ std::unique_ptr<IImage> DecodeFromStream(io::Stream* stream) override;
+ void EncodeToStream(IImage* image, io::Stream* stream, ImageFormat format,
+ float quality) override;
+
+ std::unique_ptr<IImage> CreateBitmap(int width, int height) override;
+};
+} // namespace cru::platform::graphics::cairo
diff --git a/src/platform/graphics/cairo/CMakeLists.txt b/src/platform/graphics/cairo/CMakeLists.txt
index ec8005d3..3e12b604 100644
--- a/src/platform/graphics/cairo/CMakeLists.txt
+++ b/src/platform/graphics/cairo/CMakeLists.txt
@@ -20,6 +20,7 @@ if (UNIX)
CairoGeometry.cpp
CairoGraphicsFactory.cpp
CairoImage.cpp
+ CairoImageFactory.cpp
CairoPainter.cpp
CairoResource.cpp
PangoFont.cpp
diff --git a/src/platform/graphics/cairo/CairoImageFactory.cpp b/src/platform/graphics/cairo/CairoImageFactory.cpp
new file mode 100644
index 00000000..74275c45
--- /dev/null
+++ b/src/platform/graphics/cairo/CairoImageFactory.cpp
@@ -0,0 +1,27 @@
+#include "cru/platform/graphics/cairo/CairoImageFactory.h"
+#include <memory>
+#include "cru/common/Exception.h"
+#include "cru/platform/graphics/cairo/CairoImage.h"
+#include "cru/platform/graphics/cairo/CairoResource.h"
+
+namespace cru::platform::graphics::cairo {
+CairoImageFactory::CairoImageFactory(CairoGraphicsFactory* factory)
+ : CairoResource(factory) {}
+
+CairoImageFactory::~CairoImageFactory() {}
+
+std::unique_ptr<IImage> CairoImageFactory::DecodeFromStream(
+ io::Stream* stream) {
+ throw Exception(u"Not implemented.");
+}
+
+void CairoImageFactory::EncodeToStream(IImage* image, io::Stream* stream,
+ ImageFormat format, float quality) {
+ throw Exception(u"Not implemented.");
+}
+
+std::unique_ptr<IImage> CairoImageFactory::CreateBitmap(int width, int height) {
+ return std::make_unique<CairoImage>(GetCairoGraphicsFactory(), width, height);
+}
+
+} // namespace cru::platform::graphics::cairo