diff options
Diffstat (limited to 'src/platform/graphics/cairo')
-rw-r--r-- | src/platform/graphics/cairo/Base.cpp | 18 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CairoGeometry.cpp | 6 |
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) { |