From 0888ee514af093bcfa17de6efc4d3693a34de52d Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 8 Jun 2022 16:45:30 +0800 Subject: ... --- src/platform/graphics/cairo/CairoPainter.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/platform/graphics/cairo/CairoPainter.cpp b/src/platform/graphics/cairo/CairoPainter.cpp index c899fc28..dcee70ad 100644 --- a/src/platform/graphics/cairo/CairoPainter.cpp +++ b/src/platform/graphics/cairo/CairoPainter.cpp @@ -1,4 +1,5 @@ #include "cru/platform/graphics/cairo/CairoPainter.h" +#include "cru/platform/Exception.h" #include "cru/platform/graphics/cairo/Base.h" #include "cru/platform/graphics/cairo/CairoResource.h" @@ -14,24 +15,34 @@ CairoPainter::~CairoPainter() { } Matrix CairoPainter::GetTransform() { + CheckValidation(); cairo_matrix_t matrix; cairo_get_matrix(cairo_, &matrix); return Convert(matrix); } void CairoPainter::SetTransform(const Matrix& matrix) { + CheckValidation(); auto m = Convert(matrix); cairo_set_matrix(cairo_, &m); } void CairoPainter::ConcatTransform(const Matrix& matrix) { + CheckValidation(); auto m = Convert(matrix); cairo_transform(cairo_, &m); } void CairoPainter::Clear(const Color& color) { + CheckValidation(); cairo_set_source_rgba(cairo_, color.GetFloatRed(), color.GetFloatGreen(), color.GetFloatBlue(), color.GetFloatAlpha()); cairo_paint(cairo_); } + +void CairoPainter::CheckValidation() { + if (!valid_) { + throw ReuseException(u"Painter already ended drawing."); + } +} } // namespace cru::platform::graphics::cairo -- cgit v1.2.3