Index: src/c/sk_surface.cpp |
diff --git a/src/c/sk_surface.cpp b/src/c/sk_surface.cpp |
index c75ab23d55728f67ee0b348ba70bac82a3d24c65..7e93f9c7bd6f26520f6ec4e135c169fdac6b0786 100644 |
--- a/src/c/sk_surface.cpp |
+++ b/src/c/sk_surface.cpp |
@@ -91,6 +91,16 @@ 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) { |
+ 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]); |
+ } else { |
+ matrix->setIdentity(); |
+ } |
+} |
+ |
const struct { |
sk_path_direction_t fC; |
SkPath::Direction fSk; |
@@ -320,6 +330,12 @@ 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) { |
+ SkMatrix matrix; |
reed1
2014/12/02 17:41:43
can probably move the null-check to here, rather t
abarth-chromium
2014/12/02 17:43:16
IMHO, we should crash/assert. It seems better for
|
+ 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)); |
} |
@@ -419,13 +435,7 @@ sk_shader_t* sk_shader_new_linear_gradient(const sk_point_t pts[2], |
return NULL; |
} |
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]); |
- } else { |
- matrix.setIdentity(); |
- } |
+ from_c_matrix(cmatrix, &matrix); |
SkShader* s = SkGradientShader::CreateLinear(reinterpret_cast<const SkPoint*>(pts), |
reinterpret_cast<const SkColor*>(colors), |
colorPos, colorCount, mode, 0, &matrix); |