From bb74fbc120c186de186f7e575e83cac184d3a030 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Mon, 4 Mar 2024 16:29:43 +0200 Subject: [PATCH 1/2] Directly cast bewteen SkM44 and sk_matrix44_t --- include/c/sk_types.h | 9 ++++--- src/c/sk_canvas.cpp | 4 +-- src/c/sk_structs.cpp | 1 + src/c/sk_types_priv.h | 58 +------------------------------------------ 4 files changed, 9 insertions(+), 63 deletions(-) diff --git a/include/c/sk_types.h b/include/c/sk_types.h index cc71e89489e0..41e2b336df25 100644 --- a/include/c/sk_types.h +++ b/include/c/sk_types.h @@ -175,10 +175,11 @@ typedef struct { // row major typedef struct { - float m00, m01, m02, m03; - float m10, m11, m12, m13; - float m20, m21, m22, m23; - float m30, m31, m32, m33; + // name: m + float m00, m01, m02, m03; // row 0 + float m10, m11, m12, m13; // row 1 + float m20, m21, m22, m23; // row 2 + float m30, m31, m32, m33; // row 3 } sk_matrix44_t; /** diff --git a/src/c/sk_canvas.cpp b/src/c/sk_canvas.cpp index f0272679b7a0..921834d335dd 100644 --- a/src/c/sk_canvas.cpp +++ b/src/c/sk_canvas.cpp @@ -74,7 +74,7 @@ void sk_canvas_reset_matrix(sk_canvas_t* ccanvas) { } void sk_canvas_set_matrix(sk_canvas_t* ccanvas, const sk_matrix44_t* cmatrix) { - AsCanvas(ccanvas)->setMatrix(AsM44(cmatrix)); + AsCanvas(ccanvas)->setMatrix(*AsM44(cmatrix)); } void sk_canvas_get_matrix(sk_canvas_t* ccanvas, sk_matrix44_t* cmatrix) { @@ -138,7 +138,7 @@ void sk_canvas_skew(sk_canvas_t* ccanvas, float sx, float sy) { } void sk_canvas_concat(sk_canvas_t* ccanvas, const sk_matrix44_t* cmatrix) { - AsCanvas(ccanvas)->concat(AsM44(cmatrix)); + AsCanvas(ccanvas)->concat(*AsM44(cmatrix)); } bool sk_canvas_quick_reject(sk_canvas_t* ccanvas, const sk_rect_t* crect) { diff --git a/src/c/sk_structs.cpp b/src/c/sk_structs.cpp index 8df3495d1f59..8d6dbe53668c 100644 --- a/src/c/sk_structs.cpp +++ b/src/c/sk_structs.cpp @@ -74,6 +74,7 @@ static_assert (sizeof (sk_cubic_resampler_t) == sizeof (SkCubicResampler), ASSER static_assert (sizeof (sk_sampling_options_t) == sizeof (SkSamplingOptions), ASSERT_MSG(SkSamplingOptions, sk_sampling_options_t)); static_assert (sizeof (sk_runtimeeffect_uniform_t) == sizeof (SkRuntimeEffect::Uniform), ASSERT_MSG(SkRuntimeEffect::Uniform, sk_runtimeeffect_uniform_t)); static_assert (sizeof (sk_runtimeeffect_child_t) == sizeof (SkRuntimeEffect::Child), ASSERT_MSG(SkRuntimeEffect::Child, sk_runtimeeffect_child_t)); +static_assert (sizeof (sk_matrix44_t) == sizeof (SkM44), ASSERT_MSG(SkM44, sk_matrix44_t)); static_assert (sizeof (skottie_animation_builder_stats_t) == sizeof (skottie::Animation::Builder::Stats), ASSERT_MSG(skottie::Animation::Builder::Stats, skottie_animation_builder_stats_t)); diff --git a/src/c/sk_types_priv.h b/src/c/sk_types_priv.h index fc51e3fbf4d8..fde20683869f 100644 --- a/src/c/sk_types_priv.h +++ b/src/c/sk_types_priv.h @@ -162,6 +162,7 @@ DEF_STRUCT_MAP(SkPoint, sk_point_t, Point) DEF_STRUCT_MAP(SkPoint3, sk_point3_t, Point3) DEF_STRUCT_MAP(SkRect, sk_rect_t, Rect) DEF_STRUCT_MAP(SkRSXform, sk_rsxform_t, RSXform) +DEF_STRUCT_MAP(SkM44, sk_matrix44_t, M44) DEF_STRUCT_MAP(SkSize, sk_size_t, Size) DEF_STRUCT_MAP(SkCubicResampler, sk_cubic_resampler_t, CubicResampler) DEF_STRUCT_MAP(SkSamplingOptions, sk_sampling_options_t, SamplingOptions) @@ -245,63 +246,6 @@ static inline sk_matrix_t ToMatrix(const SkMatrix& matrix) { return m; } -#include "include/core/SkM44.h" -static inline SkM44 AsM44(const sk_matrix44_t* matrix) { - return SkM44( - matrix->m00, matrix->m01, matrix->m02, matrix->m03, - matrix->m10, matrix->m11, matrix->m12, matrix->m13, - matrix->m20, matrix->m21, matrix->m22, matrix->m23, - matrix->m30, matrix->m31, matrix->m32, matrix->m33); -} -static inline sk_matrix44_t ToM44(const SkM44* matrix) { - sk_matrix44_t m; - // row 0 - m.m00 = matrix->rc(0, 0); - m.m01 = matrix->rc(0, 1); - m.m02 = matrix->rc(0, 2); - m.m03 = matrix->rc(0, 3); - // row 1 - m.m10 = matrix->rc(1, 0); - m.m11 = matrix->rc(1, 1); - m.m12 = matrix->rc(1, 2); - m.m13 = matrix->rc(1, 3); - // row 2 - m.m20 = matrix->rc(2, 0); - m.m21 = matrix->rc(2, 1); - m.m22 = matrix->rc(2, 2); - m.m23 = matrix->rc(2, 3); - // row 3 - m.m30 = matrix->rc(3, 0); - m.m31 = matrix->rc(3, 1); - m.m32 = matrix->rc(3, 2); - m.m33 = matrix->rc(3, 3); - return m; -} -static inline sk_matrix44_t ToM44(const SkM44& matrix) { - sk_matrix44_t m; - // row 0 - m.m00 = matrix.rc(0, 0); - m.m01 = matrix.rc(0, 1); - m.m02 = matrix.rc(0, 2); - m.m03 = matrix.rc(0, 3); - // row 1 - m.m10 = matrix.rc(1, 0); - m.m11 = matrix.rc(1, 1); - m.m12 = matrix.rc(1, 2); - m.m13 = matrix.rc(1, 3); - // row 2 - m.m20 = matrix.rc(2, 0); - m.m21 = matrix.rc(2, 1); - m.m22 = matrix.rc(2, 2); - m.m23 = matrix.rc(2, 3); - // row 3 - m.m30 = matrix.rc(3, 0); - m.m31 = matrix.rc(3, 1); - m.m32 = matrix.rc(3, 2); - m.m33 = matrix.rc(3, 3); - return m; -} - #include "include/core/SkImageInfo.h" static inline SkImageInfo AsImageInfo(const sk_imageinfo_t* info) { return SkImageInfo::Make( From f1e052377a3426250616af89ce51ff249e383e31 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Mon, 4 Mar 2024 17:57:21 +0200 Subject: [PATCH 2/2] oops --- src/c/sk_types_priv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/c/sk_types_priv.h b/src/c/sk_types_priv.h index fde20683869f..2ab313139064 100644 --- a/src/c/sk_types_priv.h +++ b/src/c/sk_types_priv.h @@ -144,6 +144,7 @@ DEF_CLASS_MAP(SkTraceMemoryDump, sk_tracememorydump_t, TraceMemoryDump) DEF_CLASS_MAP(SkTypeface, sk_typeface_t, Typeface) DEF_CLASS_MAP(SkVertices, sk_vertices_t, Vertices) DEF_CLASS_MAP(SkWStream, sk_wstream_t, WStream) +DEF_CLASS_MAP(SkM44, sk_matrix44_t, M44) DEF_CLASS_MAP(GrDirectContext, gr_direct_context_t, GrDirectContext) DEF_CLASS_MAP(GrRecordingContext, gr_recording_context_t, GrRecordingContext) @@ -162,7 +163,6 @@ DEF_STRUCT_MAP(SkPoint, sk_point_t, Point) DEF_STRUCT_MAP(SkPoint3, sk_point3_t, Point3) DEF_STRUCT_MAP(SkRect, sk_rect_t, Rect) DEF_STRUCT_MAP(SkRSXform, sk_rsxform_t, RSXform) -DEF_STRUCT_MAP(SkM44, sk_matrix44_t, M44) DEF_STRUCT_MAP(SkSize, sk_size_t, Size) DEF_STRUCT_MAP(SkCubicResampler, sk_cubic_resampler_t, CubicResampler) DEF_STRUCT_MAP(SkSamplingOptions, sk_sampling_options_t, SamplingOptions)