aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-05-24 23:14:45 +0800
committercrupest <crupest@outlook.com>2022-05-24 23:14:45 +0800
commitad4f06c133dc0475ef6a98cac0fa97f6e0527bf1 (patch)
tree63b07dc8674afd7ec99380e121eca0f1762ae11e /src
parentae0694c91602fa1cd278394132bc1320c00deba8 (diff)
downloadcru-ad4f06c133dc0475ef6a98cac0fa97f6e0527bf1.tar.gz
cru-ad4f06c133dc0475ef6a98cac0fa97f6e0527bf1.tar.bz2
cru-ad4f06c133dc0475ef6a98cac0fa97f6e0527bf1.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/platform/graphics/cairo/Base.cpp18
-rw-r--r--src/platform/graphics/cairo/CMakeLists.txt3
-rw-r--r--src/platform/graphics/cairo/CairoGeometry.cpp6
3 files changed, 24 insertions, 3 deletions
diff --git a/src/platform/graphics/cairo/Base.cpp b/src/platform/graphics/cairo/Base.cpp
new file mode 100644
index 00000000..3e24efc9
--- /dev/null
+++ b/src/platform/graphics/cairo/Base.cpp
@@ -0,0 +1,18 @@
+#include "cru/platform/graphics/cairo/Base.h"
+#include <cairo/cairo.h>
+
+namespace cru::platform::graphics::cairo {
+cairo_matrix_t Convert(const Matrix& matrix) {
+ cairo_matrix_t m;
+ cairo_matrix_init(&m, matrix.m11, matrix.m12, matrix.m21, matrix.m22,
+ matrix.m31, matrix.m32);
+ return m;
+}
+
+Matrix Convert(const cairo_matrix_t* matrix) {
+ return Matrix(matrix->xx, matrix->yx, matrix->xy, matrix->yy, matrix->x0,
+ matrix->y0);
+}
+
+Matrix Convert(const cairo_matrix_t& matrix) { return Convert(&matrix); }
+} // namespace cru::platform::graphics::cairo
diff --git a/src/platform/graphics/cairo/CMakeLists.txt b/src/platform/graphics/cairo/CMakeLists.txt
index 0fa618a0..31fa46d2 100644
--- a/src/platform/graphics/cairo/CMakeLists.txt
+++ b/src/platform/graphics/cairo/CMakeLists.txt
@@ -3,11 +3,12 @@ if (UNIX)
find_library(LIB_PANGO NAMES pango pango-1.0 REQUIRED)
add_library(CruPlatformGraphicsCairo SHARED
+ Base.cpp
CairoBrush.cpp
CairoGeometry.cpp
CairoGraphicsFactory.cpp
CairoResource.cpp
)
target_compile_definitions(CruPlatformGraphicsCairo PRIVATE CRU_PLATFORM_GRAPHICS_CAIRO_EXPORT_API)
- target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PRIVATE ${LIB_CAIRO} ${LIB_PANGO})
+ target_link_libraries(CruPlatformGraphicsCairo PUBLIC CruPlatformGraphics PUBLIC ${LIB_CAIRO} ${LIB_PANGO})
endif()
diff --git a/src/platform/graphics/cairo/CairoGeometry.cpp b/src/platform/graphics/cairo/CairoGeometry.cpp
index 7abe273c..43ba08d8 100644
--- a/src/platform/graphics/cairo/CairoGeometry.cpp
+++ b/src/platform/graphics/cairo/CairoGeometry.cpp
@@ -3,9 +3,11 @@
namespace cru::platform::graphics::cairo {
CairoGeometry::CairoGeometry(CairoGraphicsFactory* factory,
- cairo_path_t* cairo_path, bool auto_destroy)
+ cairo_path_t* cairo_path, const Matrix& transform,
+ bool auto_destroy)
: CairoResource(factory),
cairo_path_(cairo_path),
+ transform_(transform),
auto_destroy_(auto_destroy) {
Expects(cairo_path);
}
@@ -39,7 +41,7 @@ Rect CairoGeometry::GetBounds() {
}
std::unique_ptr<IGeometry> CairoGeometry::Transform(const Matrix& matrix) {
- throw Exception(u"Not implemented");
+
}
std::unique_ptr<IGeometry> CairoGeometry::CreateStrokeGeometry(float width) {