From 3df871ecaa95ab13a4fa154ab9ab17708fee6f9f Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 9 Jun 2022 14:01:53 +0800 Subject: ... --- src/platform/graphics/cairo/CairoPainter.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/platform/graphics/cairo/CairoPainter.cpp b/src/platform/graphics/cairo/CairoPainter.cpp index 1d457b8f..fb5e0046 100644 --- a/src/platform/graphics/cairo/CairoPainter.cpp +++ b/src/platform/graphics/cairo/CairoPainter.cpp @@ -5,6 +5,7 @@ #include "cru/platform/graphics/cairo/Base.h" #include "cru/platform/graphics/cairo/CairoBrush.h" #include "cru/platform/graphics/cairo/CairoGeometry.h" +#include "cru/platform/graphics/cairo/CairoImage.h" #include "cru/platform/graphics/cairo/CairoResource.h" #include "cru/platform/graphics/cairo/PangoTextLayout.h" @@ -187,7 +188,15 @@ void CairoPainter::DrawText(const Point& offset, ITextLayout* text_layout, } void CairoPainter::DrawImage(const Point& offset, IImage* image) { - throw Exception(u"Not implemented."); + CheckValidation(); + auto cairo_image = CheckPlatform(image, GetPlatformId()); + cairo_save(cairo_); + cairo_set_source_surface(cairo_, cairo_image->GetCairoSurface(), 0, 0); + cairo_new_path(cairo_); + cairo_rectangle(cairo_, offset.x, offset.y, image->GetWidth(), + image->GetHeight()); + cairo_fill(cairo_); + cairo_restore(cairo_); } void CairoPainter::PushLayer(const Rect& bounds) { -- cgit v1.2.3