From e5957f67d00c04c0fbf88809df510426e74fe40a Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Tue, 18 Mar 2014 16:28:12 +0000 Subject: update comment on setShader to clarify alpha-bitmap behavior in bitmapshaders BUG=skia:2293 R=bsalomon@google.com, yunchao.he@intel.com Author: reed@google.com Review URL: https://codereview.chromium.org/203203005 git-svn-id: http://skia.googlecode.com/svn/trunk@13851 2bbb7eff-a529-9590-31e7-b0007b416f81 --- gm/bitmapshader.cpp | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'gm/bitmapshader.cpp') diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp index 4649b7e95f..fb563070d1 100644 --- a/gm/bitmapshader.cpp +++ b/gm/bitmapshader.cpp @@ -35,6 +35,11 @@ static void draw_mask(SkBitmap* bm) { canvas.drawCircle(10, 10, 10, circlePaint); } +static void adopt_shader(SkPaint* paint, SkShader* shader) { + paint->setShader(shader); + SkSafeUnref(shader); +} + class BitmapShaderGM : public GM { public: @@ -50,40 +55,33 @@ protected: } virtual SkISize onISize() { - return make_isize(75, 100); + return SkISize::Make(75, 100); } virtual void onDraw(SkCanvas* canvas) { - SkShader* shader = SkShader::CreateBitmapShader(fBitmap, - SkShader::kClamp_TileMode, - SkShader::kClamp_TileMode); SkPaint paint; - paint.setShader(shader); - // release the shader ref as the paint now holds a reference - shader->unref(); + + adopt_shader(&paint, SkShader::CreateBitmapShader(fBitmap, SkShader::kClamp_TileMode, + SkShader::kClamp_TileMode)); // draw the shader with a bitmap mask canvas->drawBitmap(fMask, 0, 0, &paint); canvas->drawBitmap(fMask, 30, 0, &paint); - canvas->translate(0, 25); + canvas->translate(0, 25); - // draw the shader with standard geometry - canvas->drawCircle(10, 10, 10, paint); - canvas->drawCircle(40, 10, 10, paint); // no blue circle expected + canvas->drawCircle(10, 10, 10, paint); + canvas->drawCircle(40, 10, 10, paint); // no blue circle expected - canvas->translate(0, 25); + canvas->translate(0, 25); - shader = SkShader::CreateBitmapShader(fMask, - SkShader::kRepeat_TileMode, - SkShader::kRepeat_TileMode); - paint.setShader(shader); + adopt_shader(&paint, SkShader::CreateBitmapShader(fMask, SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode)); paint.setColor(SK_ColorRED); - shader->unref(); - // draw the mask using the shader and a color - canvas->drawRect(SkRect::MakeXYWH(0, 0, 20, 20), paint); - canvas->drawRect(SkRect::MakeXYWH(30, 0, 20, 20), paint); + // draw the mask using the shader and a color + canvas->drawRect(SkRect::MakeXYWH(0, 0, 20, 20), paint); + canvas->drawRect(SkRect::MakeXYWH(30, 0, 20, 20), paint); } private: -- cgit v1.2.3