aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-06-08 16:45:30 +0800
committercrupest <crupest@outlook.com>2022-06-08 16:45:30 +0800
commit0888ee514af093bcfa17de6efc4d3693a34de52d (patch)
treef97dbcde81b0c644f8a0ac77e173da2a77f6aea9 /src
parent1e5e914f40503d2a936d1b7db56fcff6d1f8514e (diff)
downloadcru-0888ee514af093bcfa17de6efc4d3693a34de52d.tar.gz
cru-0888ee514af093bcfa17de6efc4d3693a34de52d.tar.bz2
cru-0888ee514af093bcfa17de6efc4d3693a34de52d.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/platform/graphics/cairo/CairoPainter.cpp11
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