diff options
author | 2014-04-28 14:55:39 +0000 | |
---|---|---|
committer | 2014-04-28 14:55:39 +0000 | |
commit | 9c9005a347e9996f357bd79591bd34f74f8bbc66 (patch) | |
tree | 5e03fa9c44510f969be6dee9641968574dbed932 /samplecode | |
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')
-rw-r--r-- | samplecode/SampleAARectModes.cpp | 11 | ||||
-rw-r--r-- | samplecode/SampleCamera.cpp | 10 | ||||
-rw-r--r-- | samplecode/SampleColorFilter.cpp | 7 | ||||
-rw-r--r-- | samplecode/SampleDash.cpp | 3 | ||||
-rw-r--r-- | samplecode/SampleFatBits.cpp | 7 | ||||
-rw-r--r-- | samplecode/SampleHairModes.cpp | 11 | ||||
-rw-r--r-- | samplecode/SampleLayers.cpp | 16 | ||||
-rw-r--r-- | samplecode/SampleXfermodesBlur.cpp | 8 |
8 files changed, 31 insertions, 42 deletions
diff --git a/samplecode/SampleAARectModes.cpp b/samplecode/SampleAARectModes.cpp index bea0e28799..f9972aea9b 100644 --- a/samplecode/SampleAARectModes.cpp +++ b/samplecode/SampleAARectModes.cpp @@ -68,14 +68,13 @@ static SkShader* make_bg_shader() { *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCC, 0xCC, 0xCC); - SkShader* s = SkShader::CreateBitmapShader(bm, - SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); - SkMatrix m; m.setScale(SkIntToScalar(6), SkIntToScalar(6)); - s->setLocalMatrix(m); - return s; + + return SkShader::CreateBitmapShader(bm, + SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode, + &m); } class AARectsModesView : public SampleView { diff --git a/samplecode/SampleCamera.cpp b/samplecode/SampleCamera.cpp index c700ee4f47..7660129c38 100644 --- a/samplecode/SampleCamera.cpp +++ b/samplecode/SampleCamera.cpp @@ -33,15 +33,15 @@ public: str.printf("/skimages/elephant%d.jpeg", i); SkBitmap bm; if (SkImageDecoder::DecodeFile(str.c_str(), &bm)) { - SkShader* s = SkShader::CreateBitmapShader(bm, - SkShader::kClamp_TileMode, - SkShader::kClamp_TileMode); - SkRect src = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) }; SkRect dst = { -150, -150, 150, 150 }; SkMatrix matrix; matrix.setRectToRect(src, dst, SkMatrix::kFill_ScaleToFit); - s->setLocalMatrix(matrix); + + SkShader* s = SkShader::CreateBitmapShader(bm, + SkShader::kClamp_TileMode, + SkShader::kClamp_TileMode, + &matrix); *fShaders.append() = s; } else { break; diff --git a/samplecode/SampleColorFilter.cpp b/samplecode/SampleColorFilter.cpp index 2dc2e427dc..fb5d42744f 100644 --- a/samplecode/SampleColorFilter.cpp +++ b/samplecode/SampleColorFilter.cpp @@ -92,13 +92,10 @@ SkShader* createChecker() { bm.lockPixels(); *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = SkPreMultiplyColor(0xFFFFFFFF); *bm.getAddr32(0, 1) = *bm.getAddr32(1, 0) = SkPreMultiplyColor(0xFFCCCCCC); - SkShader* s = SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); - SkMatrix m; m.setScale(12, 12); - s->setLocalMatrix(m); - return s; + return SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode, &m); } static SkBitmap createBitmap(int n) { diff --git a/samplecode/SampleDash.cpp b/samplecode/SampleDash.cpp index 26d36942df..e4fa79d47e 100644 --- a/samplecode/SampleDash.cpp +++ b/samplecode/SampleDash.cpp @@ -28,8 +28,7 @@ static void setBitmapDash(SkPaint* paint, int width) { matrix.setScale(SkIntToScalar(width), SK_Scalar1); SkShader* s = SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, - SkShader::kClamp_TileMode); - s->setLocalMatrix(matrix); + SkShader::kClamp_TileMode, &matrix); paint->setShader(s)->unref(); } diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp index 6900fae3eb..9ea1d9e479 100644 --- a/samplecode/SampleFatBits.cpp +++ b/samplecode/SampleFatBits.cpp @@ -43,13 +43,10 @@ static SkShader* createChecker() { bm.lockPixels(); *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = SkPreMultiplyColor(colors[0]); *bm.getAddr32(0, 1) = *bm.getAddr32(1, 0) = SkPreMultiplyColor(colors[1]); - SkShader* s = SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); - SkMatrix m; m.setScale(12, 12); - s->setLocalMatrix(m); - return s; + return SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode, &m); } class FatBits { diff --git a/samplecode/SampleHairModes.cpp b/samplecode/SampleHairModes.cpp index 4aa8e0208f..878857703e 100644 --- a/samplecode/SampleHairModes.cpp +++ b/samplecode/SampleHairModes.cpp @@ -66,14 +66,13 @@ static SkShader* make_bg_shader() { *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = 0xFFFFFFFF; *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCC, 0xCC, 0xCC); - SkShader* s = SkShader::CreateBitmapShader(bm, - SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); - SkMatrix m; m.setScale(SkIntToScalar(6), SkIntToScalar(6)); - s->setLocalMatrix(m); - return s; + + return SkShader::CreateBitmapShader(bm, + SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode, + &m); } class HairModesView : public SampleView { 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"); diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp index ea9561dfe1..de75d059a8 100644 --- a/samplecode/SampleXfermodesBlur.cpp +++ b/samplecode/SampleXfermodesBlur.cpp @@ -151,12 +151,12 @@ protected: const SkScalar w = SkIntToScalar(W); const SkScalar h = SkIntToScalar(H); - SkShader* s = SkShader::CreateBitmapShader(fBG, - SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); SkMatrix m; m.setScale(SkIntToScalar(6), SkIntToScalar(6)); - s->setLocalMatrix(m); + SkShader* s = SkShader::CreateBitmapShader(fBG, + SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode, + &m); SkPaint labelP; labelP.setAntiAlias(true); |