blob: 94942f826677a6f44e5c87d8035bdb4715177f4f [file] [log] [blame]
// 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;
if (auto rContext = canvas->recordingContext()) {
filtered = SkImages::MakeWithFilter(rContext, image, offsetFilter.get(),
subset, clipBounds, &outSubset, &offset);
} else {
filtered = SkImages::MakeWithFilter(image, 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