diff options
Diffstat (limited to 'gm/blend.cpp')
-rw-r--r-- | gm/blend.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gm/blend.cpp b/gm/blend.cpp index 3ba92a7981..452eb4945c 100644 --- a/gm/blend.cpp +++ b/gm/blend.cpp @@ -63,6 +63,14 @@ protected: return make_isize(500, 100); } + void drawClippedBitmap(SkCanvas* canvas, const SkPaint& paint, int x) { + canvas->save(); + canvas->clipRect(SkRect::MakeXYWH(SkIntToScalar(x), 0, + SkIntToScalar(fBitmap.width()), SkIntToScalar(fBitmap.height()))); + canvas->drawBitmap(fBitmap, SkIntToScalar(x), 0, &paint); + canvas->restore(); + } + virtual void onDraw(SkCanvas* canvas) { if (!fInitialized) { make_bitmap(); @@ -73,15 +81,15 @@ protected: SkPaint paint; SkAutoTUnref<SkImageFilter> background(SkNEW_ARGS(SkBitmapSource, (fCheckerboard))); paint.setImageFilter(SkNEW_ARGS(SkBlendImageFilter, (SkBlendImageFilter::kNormal_Mode, background)))->unref(); - canvas->drawSprite(fBitmap, 0, 0, &paint); + drawClippedBitmap(canvas, paint, 0); paint.setImageFilter(SkNEW_ARGS(SkBlendImageFilter, (SkBlendImageFilter::kMultiply_Mode, background)))->unref(); - canvas->drawSprite(fBitmap, 100, 0, &paint); + drawClippedBitmap(canvas, paint, 100); paint.setImageFilter(SkNEW_ARGS(SkBlendImageFilter, (SkBlendImageFilter::kScreen_Mode, background)))->unref(); - canvas->drawSprite(fBitmap, 200, 0, &paint); + drawClippedBitmap(canvas, paint, 200); paint.setImageFilter(SkNEW_ARGS(SkBlendImageFilter, (SkBlendImageFilter::kDarken_Mode, background)))->unref(); - canvas->drawSprite(fBitmap, 300, 0, &paint); + drawClippedBitmap(canvas, paint, 300); paint.setImageFilter(SkNEW_ARGS(SkBlendImageFilter, (SkBlendImageFilter::kLighten_Mode, background)))->unref(); - canvas->drawSprite(fBitmap, 400, 0, &paint); + drawClippedBitmap(canvas, paint, 400); } private: |