From 9503ac7a3cc98327a88eff59c71c451fbdd7e043 Mon Sep 17 00:00:00 2001 From: abarth Date: Tue, 2 Dec 2014 15:47:33 -0800 Subject: Add matrix operations to C canvas API R=reed@google.com BUG=skia: Review URL: https://codereview.chromium.org/769123002 --- src/c/sk_surface.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/c') diff --git a/src/c/sk_surface.cpp b/src/c/sk_surface.cpp index c75ab23d55..94e925ada4 100644 --- a/src/c/sk_surface.cpp +++ b/src/c/sk_surface.cpp @@ -91,6 +91,12 @@ static bool from_c_info(const sk_imageinfo_t& cinfo, SkImageInfo* info) { return true; } +static void from_c_matrix(const sk_matrix_t* cmatrix, SkMatrix* matrix) { + matrix->setAll(cmatrix->mat[0], cmatrix->mat[1], cmatrix->mat[2], + cmatrix->mat[3], cmatrix->mat[4], cmatrix->mat[5], + cmatrix->mat[6], cmatrix->mat[7], cmatrix->mat[8]); +} + const struct { sk_path_direction_t fC; SkPath::Direction fSk; @@ -320,6 +326,13 @@ void sk_canvas_skew(sk_canvas_t* ccanvas, float sx, float sy) { AsCanvas(ccanvas)->skew(sx, sy); } +void sk_canvas_concat_matrix(sk_canvas_t* ccanvas, const sk_matrix_t* cmatrix) { + SkASSERT(cmatrix); + SkMatrix matrix; + from_c_matrix(cmatrix, &matrix); + AsCanvas(ccanvas)->concat(matrix); +} + void sk_canvas_draw_paint(sk_canvas_t* ccanvas, const sk_paint_t* cpaint) { AsCanvas(ccanvas)->drawPaint(AsPaint(*cpaint)); } @@ -420,9 +433,7 @@ sk_shader_t* sk_shader_new_linear_gradient(const sk_point_t pts[2], } SkMatrix matrix; if (cmatrix) { - matrix.setAll(cmatrix->mat[0], cmatrix->mat[1], cmatrix->mat[2], - cmatrix->mat[3], cmatrix->mat[4], cmatrix->mat[5], - cmatrix->mat[6], cmatrix->mat[7], cmatrix->mat[8]); + from_c_matrix(cmatrix, &matrix); } else { matrix.setIdentity(); } -- cgit v1.2.3