// 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_compose_shader, 256, 256, false, 0) {
// skpaint_compose_shader
void draw(SkCanvas* canvas) {
    SkColor4f colors[2] = {SkColors::kBlue, SkColors::kYellow};
    SkPaint paint;
    paint.setShader(SkShaders::Blend(SkBlendMode::kDifference,
                                     SkShaders::RadialGradient({128.0f, 128.0f}, 180.0f,
                                                               {{colors, {}, SkTileMode::kClamp},
                                                                {}}),
                                     SkShaders::MakeTurbulence(0.025f, 0.025f, 2, 0.0f, nullptr)));
    canvas->drawPaint(paint);
}
}  // END FIDDLE
