diff options
author | crupest <crupest@outlook.com> | 2022-06-08 16:45:30 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-06-08 16:45:30 +0800 |
commit | 0888ee514af093bcfa17de6efc4d3693a34de52d (patch) | |
tree | f97dbcde81b0c644f8a0ac77e173da2a77f6aea9 /src/platform/graphics/cairo | |
parent | 1e5e914f40503d2a936d1b7db56fcff6d1f8514e (diff) | |
download | cru-0888ee514af093bcfa17de6efc4d3693a34de52d.tar.gz cru-0888ee514af093bcfa17de6efc4d3693a34de52d.tar.bz2 cru-0888ee514af093bcfa17de6efc4d3693a34de52d.zip |
...
Diffstat (limited to 'src/platform/graphics/cairo')
-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 |