aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graphics/cairo/CairoImage.h
diff options
context:
space:
mode:
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