1cb93a386Sopenharmony_ci// Copyright 2020 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci#include "tools/fiddle/examples.h" 4cb93a386Sopenharmony_ciREG_FIDDLE(blur4444, 650, 480, false, 0) { 5cb93a386Sopenharmony_civoid draw(SkCanvas* canvas) { 6cb93a386Sopenharmony_ci bool forceRaster = false; 7cb93a386Sopenharmony_ci bool dither = false; 8cb93a386Sopenharmony_ci bool postDither = false; 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci canvas->clear(SK_ColorTRANSPARENT); 11cb93a386Sopenharmony_ci SkPaint grayPaint; 12cb93a386Sopenharmony_ci grayPaint.setColor(SK_ColorGRAY); 13cb93a386Sopenharmony_ci SkPaint ltGrayPaint; 14cb93a386Sopenharmony_ci ltGrayPaint.setColor(SK_ColorLTGRAY); 15cb93a386Sopenharmony_ci canvas->drawRect({350, 0, 400, 480}, ltGrayPaint); 16cb93a386Sopenharmony_ci canvas->drawRect({400, 0, 500, 480}, grayPaint); 17cb93a386Sopenharmony_ci canvas->drawRect({500, 0, 640, 480}, SkPaint()); 18cb93a386Sopenharmony_ci canvas->drawRect({0, 200, 320, 215}, ltGrayPaint); 19cb93a386Sopenharmony_ci canvas->drawRect({0, 215, 320, 230}, grayPaint); 20cb93a386Sopenharmony_ci canvas->drawRect({0, 230, 320, 250}, SkPaint()); 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ci sk_sp<SkSurface> surf; 23cb93a386Sopenharmony_ci auto ii = SkImageInfo::Make(650, 480, kARGB_4444_SkColorType, kPremul_SkAlphaType); 24cb93a386Sopenharmony_ci if (canvas->recordingContext() && !forceRaster) { 25cb93a386Sopenharmony_ci surf = SkSurface::MakeRenderTarget(canvas->recordingContext(), SkBudgeted::kNo, ii); 26cb93a386Sopenharmony_ci } else { 27cb93a386Sopenharmony_ci surf = SkSurface::MakeRaster(ii); 28cb93a386Sopenharmony_ci } 29cb93a386Sopenharmony_ci if (!surf) { 30cb93a386Sopenharmony_ci return; 31cb93a386Sopenharmony_ci } 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci auto c = surf->getCanvas(); 34cb93a386Sopenharmony_ci c->clear(SK_ColorTRANSPARENT); 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci SkPaint blrPaint; 37cb93a386Sopenharmony_ci blrPaint.setAntiAlias(true); 38cb93a386Sopenharmony_ci blrPaint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, 12.047)); 39cb93a386Sopenharmony_ci blrPaint.setBlendMode(SkBlendMode::kSrc); 40cb93a386Sopenharmony_ci blrPaint.setDither(dither); 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci blrPaint.setColor(SK_ColorWHITE); 43cb93a386Sopenharmony_ci c->drawRect(SkRect{0, 20, 640, 104}, blrPaint); 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci blrPaint.setColor(SkColorSetARGB(255, 247, 247, 247)); 46cb93a386Sopenharmony_ci c->drawRect(SkRect{0, 0, 640, 84}.makeOffset(0, 300), blrPaint); 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci static constexpr SkColor colors[]{SkColorSetARGB(255, 247, 247, 247), 0}; 49cb93a386Sopenharmony_ci static constexpr SkPoint pts[]{{0.5, 0}, {256.5, 0}}; 50cb93a386Sopenharmony_ci auto grd = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkTileMode::kClamp); 51cb93a386Sopenharmony_ci SkPaint grdPaint; 52cb93a386Sopenharmony_ci grdPaint.setShader(grd); 53cb93a386Sopenharmony_ci grdPaint.setDither(dither); 54cb93a386Sopenharmony_ci 55cb93a386Sopenharmony_ci c->drawRect(SkRect{0, 0, 640, 100}.makeOffset(0, 150), grdPaint); 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci SkPaint postPaint; 58cb93a386Sopenharmony_ci postPaint.setDither(postDither); 59cb93a386Sopenharmony_ci surf->draw(canvas, 0, 0, SkSamplingOptions(), &postPaint); 60cb93a386Sopenharmony_ci} 61cb93a386Sopenharmony_ci} // END FIDDLE 62