aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/c
diff options
context:
space:
mode:
authorGravatar abarth <abarth@chromium.org>2014-12-02 15:47:33 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-02 15:47:34 -0800
commit9503ac7a3cc98327a88eff59c71c451fbdd7e043 (patch)
tree4861cca7daae6592db23f8083e9e9a81bcfca6ba /src/c
parent84bc52ad26e69c01a694a9d724944507acb64d38 (diff)
Add matrix operations to C canvas API
R=reed@google.com BUG=skia: Review URL: https://codereview.chromium.org/769123002
Diffstat (limited to 'src/c')
-rw-r--r--src/c/sk_surface.cpp17
1 files changed, 14 insertions, 3 deletions
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();
}