| // 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 |