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 /samplecode/SampleLayers.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 'samplecode/SampleLayers.cpp')
-rw-r--r-- | samplecode/SampleLayers.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp index 3ae543915c..51f02a1ade 100644 --- a/samplecode/SampleLayers.cpp +++ b/samplecode/SampleLayers.cpp @@ -27,10 +27,11 @@ #include "SkXfermode.h" #include "SkDrawFilter.h" -static void make_paint(SkPaint* paint) { +static void make_paint(SkPaint* paint, const SkMatrix& localMatrix) { SkColor colors[] = { 0, SK_ColorWHITE }; SkPoint pts[] = { { 0, 0 }, { 0, SK_Scalar1*20 } }; - SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode); + SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode, + NULL, 0, &localMatrix); paint->setShader(s)->unref(); paint->setXfermodeMode(SkXfermode::kDstIn_Mode); @@ -104,19 +105,16 @@ static void test_fade(SkCanvas* canvas) { dump_layers("outside layer alpha", canvas); // now apply an effect + SkMatrix m; + m.setScale(SK_Scalar1, -SK_Scalar1); + m.postTranslate(0, SkIntToScalar(100)); SkPaint paint; - make_paint(&paint); + make_paint(&paint, m); r.set(0, 0, SkIntToScalar(100), SkIntToScalar(20)); // SkDebugf("--------- draw top grad\n"); canvas->drawRect(r, paint); - SkMatrix m; - SkShader* s = paint.getShader(); - m.setScale(SK_Scalar1, -SK_Scalar1); - m.postTranslate(0, SkIntToScalar(100)); - s->setLocalMatrix(m); - r.fTop = SkIntToScalar(80); r.fBottom = SkIntToScalar(100); // SkDebugf("--------- draw bot grad\n"); |