diff options
author | fmalita <fmalita@chromium.org> | 2015-09-15 11:26:13 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-15 11:26:14 -0700 |
commit | 5598b63cd2443a608a74a222d0206bb2455383b7 (patch) | |
tree | 1e661b0510b7deeadea831d5288989598a66a3a8 /gm/offsetimagefilter.cpp | |
parent | 30c4cae7d3a26252e7e45adf6e5722b34adf6848 (diff) |
Convert unit tests, GMs from SkBitmapSource to SkImagesource
This removes SkBitmapSource clients within Skia.
http://crrev.com/1334173004 does the same for Blink, so we should be
able to remove SkBitmapSource in a follow-up.
R=reed@google.com,robertphillips@google.com,mtklein@google.com
Review URL: https://codereview.chromium.org/1343123002
Diffstat (limited to 'gm/offsetimagefilter.cpp')
-rw-r--r-- | gm/offsetimagefilter.cpp | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp index fcf2b9843f..eec18cffb9 100644 --- a/gm/offsetimagefilter.cpp +++ b/gm/offsetimagefilter.cpp @@ -6,8 +6,10 @@ */ #include "sk_tool_utils.h" -#include "SkBitmapSource.h" +#include "SkImage.h" +#include "SkImageSource.h" #include "SkOffsetImageFilter.h" +#include "SkSurface.h" #include "gm.h" #define WIDTH 600 @@ -29,36 +31,15 @@ protected: return SkISize::Make(WIDTH, HEIGHT); } - void drawClippedBitmap(SkCanvas* canvas, const SkBitmap& bitmap, const SkPaint& paint, - SkScalar scale, const SkIRect& cropRect) { - SkRect clipRect = SkRect::MakeIWH(bitmap.width(), bitmap.height()); - - canvas->save(); - canvas->clipRect(clipRect); - canvas->scale(scale, scale); - canvas->drawBitmap(bitmap, 0, 0, &paint); - canvas->restore(); - - // Draw a boundary rect around the intersection of the clip rect and crop rect. - SkRect cropRectFloat; - SkMatrix::MakeScale(scale, scale).mapRect(&cropRectFloat, SkRect::Make(cropRect)); - if (clipRect.intersect(cropRectFloat)) { - SkPaint strokePaint; - strokePaint.setStyle(SkPaint::kStroke_Style); - strokePaint.setStrokeWidth(2); - strokePaint.setColor(SK_ColorRED); - canvas->drawRect(clipRect, strokePaint); - } - } - void onOnceBeforeDraw() override { - fBitmap = sk_tool_utils::create_string_bitmap(80, 80, 0xD000D000, 15, 65, 96, "e"); + fBitmap.reset(SkImage::NewFromBitmap( + sk_tool_utils::create_string_bitmap(80, 80, 0xD000D000, 15, 65, 96, "e"))); - fCheckerboard = sk_tool_utils::create_checkerboard_bitmap( - 80, 80, - sk_tool_utils::color_to_565(0xFFA0A0A0), - sk_tool_utils::color_to_565(0xFF404040), - 8); + fCheckerboard.reset(SkImage::NewFromBitmap( + sk_tool_utils::create_checkerboard_bitmap(80, 80, + sk_tool_utils::color_to_565(0xFFA0A0A0), + sk_tool_utils::color_to_565(0xFF404040), + 8))); } void onDraw(SkCanvas* canvas) override { @@ -66,30 +47,52 @@ protected: SkPaint paint; for (int i = 0; i < 4; i++) { - const SkBitmap* bitmap = (i & 0x01) ? &fCheckerboard : &fBitmap; + const SkImage* image = (i & 0x01) ? fCheckerboard : fBitmap; SkIRect cropRect = SkIRect::MakeXYWH(i * 12, i * 8, - bitmap->width() - i * 8, - bitmap->height() - i * 12); + image->width() - i * 8, + image->height() - i * 12); SkImageFilter::CropRect rect(SkRect::Make(cropRect)); - SkAutoTUnref<SkImageFilter> tileInput(SkBitmapSource::Create(*bitmap)); + SkAutoTUnref<SkImageFilter> tileInput(SkImageSource::Create(image)); SkScalar dx = SkIntToScalar(i*5); SkScalar dy = SkIntToScalar(i*10); SkAutoTUnref<SkImageFilter> filter(SkOffsetImageFilter::Create(dx, dy, tileInput, &rect)); paint.setImageFilter(filter); - drawClippedBitmap(canvas, *bitmap, paint, 1, cropRect); - canvas->translate(SkIntToScalar(bitmap->width() + MARGIN), 0); + DrawClippedImage(canvas, image, paint, 1, cropRect); + canvas->translate(SkIntToScalar(image->width() + MARGIN), 0); } SkIRect cropRect = SkIRect::MakeXYWH(0, 0, 100, 100); SkImageFilter::CropRect rect(SkRect::Make(cropRect)); SkAutoTUnref<SkImageFilter> filter(SkOffsetImageFilter::Create(-5, -10, nullptr, &rect)); paint.setImageFilter(filter); - drawClippedBitmap(canvas, fBitmap, paint, 2, cropRect); + DrawClippedImage(canvas, fBitmap, paint, 2, cropRect); } private: - SkBitmap fBitmap, fCheckerboard; + static void DrawClippedImage(SkCanvas* canvas, const SkImage* image, const SkPaint& paint, + SkScalar scale, const SkIRect& cropRect) { + SkRect clipRect = SkRect::MakeIWH(image->width(), image->height()); + + canvas->save(); + canvas->clipRect(clipRect); + canvas->scale(scale, scale); + canvas->drawImage(image, 0, 0, &paint); + canvas->restore(); + + // Draw a boundary rect around the intersection of the clip rect and crop rect. + SkRect cropRectFloat; + SkMatrix::MakeScale(scale, scale).mapRect(&cropRectFloat, SkRect::Make(cropRect)); + if (clipRect.intersect(cropRectFloat)) { + SkPaint strokePaint; + strokePaint.setStyle(SkPaint::kStroke_Style); + strokePaint.setStrokeWidth(2); + strokePaint.setColor(SK_ColorRED); + canvas->drawRect(clipRect, strokePaint); + } + } + + SkAutoTUnref<SkImage> fBitmap, fCheckerboard; typedef skiagm::GM INHERITED; }; |