blob: c899fc2832b879461ac2544d3d79d48e88d6c65f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include "cru/platform/graphics/cairo/CairoPainter.h"
#include "cru/platform/graphics/cairo/Base.h"
#include "cru/platform/graphics/cairo/CairoResource.h"
namespace cru::platform::graphics::cairo {
CairoPainter::CairoPainter(CairoGraphicsFactory* factory, cairo_t* cairo,
bool auto_release)
: CairoResource(factory), cairo_(cairo), auto_release_(auto_release) {}
CairoPainter::~CairoPainter() {
if (auto_release_) {
cairo_destroy(cairo_);
}
}
Matrix CairoPainter::GetTransform() {
cairo_matrix_t matrix;
cairo_get_matrix(cairo_, &matrix);
return Convert(matrix);
}
void CairoPainter::SetTransform(const Matrix& matrix) {
auto m = Convert(matrix);
cairo_set_matrix(cairo_, &m);
}
void CairoPainter::ConcatTransform(const Matrix& matrix) {
auto m = Convert(matrix);
cairo_transform(cairo_, &m);
}
void CairoPainter::Clear(const Color& color) {
cairo_set_source_rgba(cairo_, color.GetFloatRed(), color.GetFloatGreen(),
color.GetFloatBlue(), color.GetFloatAlpha());
cairo_paint(cairo_);
}
} // namespace cru::platform::graphics::cairo
|