diff options
-rw-r--r-- | include/cru/platform/graphics/cairo/CairoImageFactory.h | 18 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CairoImageFactory.cpp | 27 |
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 |