// 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(skpaint_blur_mask_filter_2, 256, 256, false, 0) {
void draw(SkCanvas* canvas) {
    const SkScalar blurSigma = 3.4f;
    const SkColor blurColor = SkColorSetRGB(96, 96, 0);
    const uint8_t blurAlpha = 127;
    const SkScalar xDrop = 5.0f;
    const SkScalar yDrop = 5.0f;

    const char text[] = "Skia";
    const SkScalar x = 0.0f;
    const SkScalar y = 160.0f;

    canvas->drawColor(SK_ColorWHITE);

    SkPaint paint;
    paint.setAntiAlias(true);

    SkPaint blur(paint);
    blur.setColor(blurColor);
    blur.setAlpha(blurAlpha);
    blur.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, blurSigma, false));

    SkFont font(nullptr, 120);

    // Draw once with drop shadow blur;
    canvas->drawString(text, x + xDrop, y + yDrop, font, blur);

    // Overdraw with with no blur mask
    canvas->drawString(text, x, y, font, paint);
}
}  // END FIDDLE
