diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-28 14:55:39 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-28 14:55:39 +0000 |
commit | 9c9005a347e9996f357bd79591bd34f74f8bbc66 (patch) | |
tree | 5e03fa9c44510f969be6dee9641968574dbed932 /gm/gradient_matrix.cpp | |
parent | c76a4b2a81b5c502ded23dee1e0c5d762028d5cf (diff) |
Move SkShader::fLocalMatrix into SkShader constructor.
As a first step towards removing SkShader::setLocalMatrix, which will make
SkShader thread-safe, remove calls to setLocalMatrix that happen immediately
after the shader is being created. Instead, pass the matrix into the constructor
or factory method.
BUG=skia:1976
R=scroggo@google.com, reed@google.com, skyostil@google.com, mtklein@google.com
Author: dominikg@chromium.org
Review URL: https://codereview.chromium.org/245963010
git-svn-id: http://skia.googlecode.com/svn/trunk@14401 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/gradient_matrix.cpp')
-rw-r--r-- | gm/gradient_matrix.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gm/gradient_matrix.cpp b/gm/gradient_matrix.cpp index d1d0e42d6e..b2bc5d1cd8 100644 --- a/gm/gradient_matrix.cpp +++ b/gm/gradient_matrix.cpp @@ -61,21 +61,22 @@ static const SkScalar TESTGRID_Y = SkIntToScalar(200); static const int IMAGES_X = 4; // number of images per row -static SkShader* make_linear_gradient(const SkPoint pts[2]) { +static SkShader* make_linear_gradient(const SkPoint pts[2], const SkMatrix& localMatrix) { return SkGradientShader::CreateLinear(pts, gColors, NULL, SK_ARRAY_COUNT(gColors), - SkShader::kClamp_TileMode, NULL); + SkShader::kClamp_TileMode, NULL, 0, &localMatrix); } -static SkShader* make_radial_gradient(const SkPoint pts[2]) { +static SkShader* make_radial_gradient(const SkPoint pts[2], const SkMatrix& localMatrix) { SkPoint center; center.set(SkScalarAve(pts[0].fX, pts[1].fX), SkScalarAve(pts[0].fY, pts[1].fY)); float radius = (center - pts[0]).length(); return SkGradientShader::CreateRadial(center, radius, gColors, NULL, SK_ARRAY_COUNT(gColors), - SkShader::kClamp_TileMode, NULL); + SkShader::kClamp_TileMode, NULL, 0, &localMatrix); } -static void draw_gradients(SkCanvas* canvas, SkShader* (*makeShader)(const SkPoint[2]), +static void draw_gradients(SkCanvas* canvas, + SkShader* (*makeShader)(const SkPoint[2], const SkMatrix&), const SkPoint ptsArray[][2], int numImages) { // Use some nice prime numbers for the rectangle and matrix with // different scaling along the x and y axes (which is the bug this @@ -97,8 +98,7 @@ static void draw_gradients(SkCanvas* canvas, SkShader* (*makeShader)(const SkPoi } // Setup shader and draw. - SkAutoTUnref<SkShader> shader(makeShader(*ptsArray)); - shader->setLocalMatrix(shaderMat); + SkAutoTUnref<SkShader> shader(makeShader(*ptsArray, shaderMat)); SkPaint paint; paint.setShader(shader); |