41 constexpr int kBig = 65536;
45 SkRect insetRect = bigRect;
46 insetRect.
inset(20, 20);
54 const SkScalar kLeftTopPad = 3*kSigma;
55 const SkScalar kRightBotPad = kCloseUpSize-3*kSigma;
59 { -kLeftTopPad, -kLeftTopPad },
60 { kBig-kRightBotPad, -kLeftTopPad },
61 { kBig-kRightBotPad, kBig-kRightBotPad },
62 { -kLeftTopPad, kBig-kRightBotPad },
63 { kBig/2-kCloseUpSize/2, kBig/2-kCloseUpSize/2 },
74 int desiredX = 0, desiredY = 0;
76 for (
int i = 0; i < 2; ++i) {
80 for (
int k = 0; k < (
int)std::size(origins); ++k) {
91 desiredY-origins[k].fY);
94 canvas->
drawRect(bigRect, blurPaint);
96 canvas->
drawPath(rectori, blurPaint);
99 canvas->
drawRect(clipRect, outlinePaint);
101 desiredX += kCloseUpSize;
105 desiredY += kCloseUpSize;
111 inline static constexpr int kCloseUpSize = 64;
112 inline static constexpr int kWidth = 5 * kCloseUpSize;
115 using INHERITED =
GM;
118DEF_GM(
return new BigBlursGM;)
constexpr SkColor SK_ColorRED
constexpr SkColor SK_ColorBLACK
Type::kYUV Type::kRGBA() int(0.7 *637)
static SkScalar SK_SPI ConvertRadiusToSigma(SkScalar radius)
void drawRect(const SkRect &rect, const SkPaint &paint)
void clipRect(const SkRect &rect, SkClipOp op, bool doAntiAlias)
void translate(SkScalar dx, SkScalar dy)
void drawPath(const SkPath &path, const SkPaint &paint)
static sk_sp< SkMaskFilter > MakeBlur(SkBlurStyle style, SkScalar sigma, bool respectCTM=true)
void setStyle(Style style)
void setColor(SkColor color)
void setAntiAlias(bool aa)
@ kStroke_Style
set to stroke geometry
void setMaskFilter(sk_sp< SkMaskFilter > maskFilter)
SkPathBuilder & addRect(const SkRect &, SkPathDirection, unsigned startIndex)
void onDraw(SkCanvas *canvas) override
SkISize getISize() override
SkString getName() const override
static constexpr SkISize Make(int32_t w, int32_t h)
void inset(float dx, float dy)
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
static constexpr SkRect MakeWH(float w, float h)