// Copyright 2020 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"
REG_FIDDLE(backdrop_blur_with_rrect_clip, 512, 512, false, 3) {
void draw(SkCanvas* canvas) {
    const SkRect r = SkRect::MakeXYWH(128, 128, 256, 256);
    const SkRRect rr = SkRRect::MakeRectXY(r, 128, 128);

    canvas->drawImage(image, 0, 0);

    canvas->save();
    canvas->clipRRect(rr, true);

    sk_sp<SkImageFilter> filter = SkImageFilters::Blur(10, 10, nullptr);
    SkPaint p;
    p.setImageFilter(std::move(filter));

    SkCanvas::SaveLayerRec slr(&r, &p, SkCanvas::kInitWithPrevious_SaveLayerFlag);
    canvas->saveLayer(slr);
    canvas->drawColor(0x40FFFFFF);
    canvas->restore();
    canvas->restore();
}
}  // END FIDDLE
