1 // Copyright 2019 Google LLC.
2 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3 #include "tools/fiddle/examples.h"
4 REG_FIDDLE(Image_makeWithFilter, 256, 256, false, 5) {
draw(SkCanvas * canvas)5 void draw(SkCanvas* canvas) {
6 sk_sp<SkImageFilter> shadowFilter = SkImageFilters::DropShadow(
7 -10.0f * frame, 5.0f * frame, 3.0f, 3.0f, SK_ColorBLUE, nullptr);
8 sk_sp<SkImageFilter> offsetFilter = SkImageFilters::Offset(40, 40, shadowFilter, nullptr);
9 SkIRect subset = image->bounds();
10 SkIRect clipBounds = image->bounds();
11 clipBounds.outset(60, 60);
12 SkIRect outSubset;
13 SkIPoint offset;
14 sk_sp<SkImage> filtered;
15
16 if (auto rContext = canvas->recordingContext()) {
17 filtered = SkImages::MakeWithFilter(rContext, image, offsetFilter.get(),
18 subset, clipBounds, &outSubset, &offset);
19 } else {
20 filtered = SkImages::MakeWithFilter(image, offsetFilter.get(),
21 subset, clipBounds, &outSubset, &offset);
22 }
23
24 SkPaint paint;
25 paint.setAntiAlias(true);
26 paint.setStyle(SkPaint::kStroke_Style);
27 canvas->drawLine(0, 0, offset.fX, offset.fY, paint);
28 canvas->translate(offset.fX, offset.fY);
29 canvas->drawImage(filtered, 0, 0);
30 canvas->drawRect(SkRect::Make(outSubset), paint);
31 }
32 } // END FIDDLE
33