diff options
Diffstat (limited to 'src/platform/graphics/cairo/CairoPainter.cpp')
-rw-r--r-- | src/platform/graphics/cairo/CairoPainter.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
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 |