aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graphics/cairo/CairoImage.h
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-06-08 22:30:50 +0800
committercrupest <crupest@outlook.com>2022-06-08 22:30:50 +0800
commitccf67fcbd182d739ac73c0beb5380c6862811d22 (patch)
treea6ac77a8c16e34e802d2e51e11411da700be3a31 /include/cru/platform/graphics/cairo/CairoImage.h
parenta61a9c8cad237c9e46ad80dae54bd210bb2692b8 (diff)
downloadcru-ccf67fcbd182d739ac73c0beb5380c6862811d22.tar.gz
cru-ccf67fcbd182d739ac73c0beb5380c6862811d22.tar.bz2
cru-ccf67fcbd182d739ac73c0beb5380c6862811d22.zip
...
Diffstat (limited to 'include/cru/platform/graphics/cairo/CairoImage.h')
-rw-r--r--include/cru/platform/graphics/cairo/CairoImage.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/cru/platform/graphics/cairo/CairoImage.h b/include/cru/platform/graphics/cairo/CairoImage.h
new file mode 100644
index 00000000..61a2e65b
--- /dev/null
+++ b/include/cru/platform/graphics/cairo/CairoImage.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "../Image.h"
+#include "CairoResource.h"
+
+namespace cru::platform::graphics::cairo {
+class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoImage : public CairoResource,
+ public virtual IImage {
+ public:
+ CairoImage(CairoGraphicsFactory* factory, int width, int height);
+ CairoImage(CairoGraphicsFactory* factory,
+ cairo_surface_t* cairo_image_surface, bool auto_release);
+
+ ~CairoImage() override;
+
+ public:
+ float GetWidth() override;
+ float GetHeight() override;
+
+ std::unique_ptr<IImage> CreateWithRect(const Rect& rect) override;
+
+ std::unique_ptr<IPainter> CreatePainter() override;
+
+ cairo_surface_t* GetCairoSurface() { return cairo_surface_; }
+
+ private:
+ cairo_surface_t* cairo_surface_;
+ bool auto_release_;
+};
+} // namespace cru::platform::graphics::cairo