|  | // Copyright 2019 Google LLC. | 
|  | // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | 
|  | #include "tools/fiddle/examples.h" | 
|  | // HASH=85a76163138a2720ac003691d6363938 | 
|  | REG_FIDDLE(Image_makeWithFilter, 256, 256, false, 5) { | 
|  | void draw(SkCanvas* canvas) { | 
|  | sk_sp<SkImageFilter> shadowFilter = SkImageFilters::DropShadow( | 
|  | -10.0f * frame, 5.0f * frame, 3.0f, 3.0f, SK_ColorBLUE, nullptr); | 
|  | sk_sp<SkImageFilter> offsetFilter = SkImageFilters::Offset(40, 40, shadowFilter, nullptr); | 
|  | SkIRect subset = image->bounds(); | 
|  | SkIRect clipBounds = image->bounds(); | 
|  | clipBounds.outset(60, 60); | 
|  | SkIRect outSubset; | 
|  | SkIPoint offset; | 
|  | sk_sp<SkImage> filtered(image->makeWithFilter(canvas->recordingContext(), offsetFilter.get(), | 
|  | subset, clipBounds, &outSubset, &offset)); | 
|  | SkPaint paint; | 
|  | paint.setAntiAlias(true); | 
|  | paint.setStyle(SkPaint::kStroke_Style); | 
|  | canvas->drawLine(0, 0, offset.fX, offset.fY, paint); | 
|  | canvas->translate(offset.fX, offset.fY); | 
|  | canvas->drawImage(filtered, 0, 0); | 
|  | canvas->drawRect(SkRect::Make(outSubset), paint); | 
|  | } | 
|  | }  // END FIDDLE |