• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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