58 center0.
set(pts[0].fX + radius0, pts[0].fY + radius0);
59 center1.
set(pts[1].fX - radius1, pts[1].fY - radius1);
61 data.fPos, data.fCount, tm, 0, &localMatrix);
68 center0.
set(pts[0].fX, pts[0].fY);
69 center1.
set(pts[1].fX, pts[1].fY);
71 data.fPos, data.fCount, tm, 0, &localMatrix);
79 center0.
set(pts[0].fX + radius0, pts[0].fY + radius0);
80 center1.
set(pts[1].fX - radius1, pts[1].fY - radius1);
82 data.fPos, data.fCount, tm, 0, &localMatrix);
93 center0, (pts[1].fX - pts[0].fX) / 2,
94 data.fColors, data.fPos, data.fCount, tm,
106 center1, (pts[1].fX - pts[0].fX) / 7,
107 data.fColors, data.fPos, data.fCount, tm,
117 center0, (pts[1].fX - pts[0].fX) / 2,
118 data.fColors, data.fPos, data.fCount, tm,
128 center0, (pts[1].fX - pts[0].fX) / 7,
129 data.fColors, data.fPos, data.fCount, tm,
141 center0, (pts[1].fX - pts[0].fX) / 2,
142 data.fColors, data.fPos, data.fCount, tm,
155 data.fColors, data.fPos, data.fCount, tm,
167 data.fColors, data.fPos, data.fCount, tm,
177 center0.
set(pts[0].fX + radius0, pts[0].fY + radius0);
178 center1.
set(pts[1].fX - radius1, pts[1].fY - radius1);
180 data.fColors, data.fPos,
181 data.fCount, tm, 0, &localMatrix);
190 center0.
set(pts[0].fX + radius0, pts[0].fY + radius0);
191 center1.
set(pts[1].fX - radius1, pts[1].fY - radius1);
193 data.fPos, data.fCount, tm, 0, &localMatrix);
203 center0.
set(center1.
fX + radius1, center1.
fY);
205 data.fPos, data.fCount, tm, 0, &localMatrix);
215 center0.
set(center1.
fX, center1.
fY + radius1);
217 data.fPos, data.fCount, tm, 0, &localMatrix);
228 center0.
set(center1.
fX + radius1, center1.
fY);
230 data.fPos, data.fCount, tm, 0, &localMatrix);
240 center0.
set(center1.
fX, center1.
fY + radius1);
242 data.fPos, data.fCount, tm, 0, &localMatrix);
252 center0.
set(center1.
fX - radius1 + radius0, center1.
fY);
254 data.fPos, data.fCount, tm, 0, &localMatrix);
264 center0.
set(center1.
fX, center1.
fY + radius1 - radius0);
266 data.fPos, data.fCount, tm, 0, &localMatrix);
277 center0, (pts[1].fX - pts[0].fX) / 2,
278 data.fColors, data.fPos, data.fCount, tm,
327 : fGradCaseType(gradCaseType)
331 fDither ?
"" :
"_nodither");
334 fName.appendf(
"_repeat");
337 fName.appendf(
"_mirror");
359 paint.setAntiAlias(
true);
360 paint.setDither(fDither);
367 for (
size_t i = 0; i < std::size(
gGradData); i++) {
369 for (
int j = 0; j <
count; j++) {
373 scale.setScale(0.5f, 0.5f);
374 scale.postTranslate(25.f, 25.f);
constexpr SkColor SK_ColorBLUE
constexpr SkColor SK_ColorRED
constexpr SkColor SK_ColorBLACK
constexpr SkColor SK_ColorGREEN
constexpr SkColor SK_ColorWHITE
#define SkScalarAve(a, b)
static SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t)
void drawRect(const SkRect &rect, const SkPaint &paint)
void translate(SkScalar dx, SkScalar dy)
static sk_sp< SkShader > MakeTwoPointConical(const SkPoint &start, SkScalar startRadius, const SkPoint &end, SkScalar endRadius, const SkColor colors[], const SkScalar pos[], int count, SkTileMode mode, uint32_t flags=0, const SkMatrix *localMatrix=nullptr)
static const SkMatrix & I()
void printf(const char format[],...) SK_PRINTF_LIKE(2
SkString getName() const override
SkISize getISize() override
void onOnceBeforeDraw() override
ConicalGradientsGM(GradCaseType gradCaseType, bool dither, SkTileMode mode=SkTileMode::kClamp)
void onDraw(SkCanvas *canvas) override
static sk_sp< SkShader > Make2ConicalZeroRad(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalZeroRadCenter(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalZeroRadOutside(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalInsideSmallRad(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalOutsideStrip(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr GradMaker gGradMakersInside[]
constexpr SkColor gColorClamp[]
static sk_sp< SkShader > Make2ConicalZeroRadFlip(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalZeroRadFlipOutside(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalTouchX(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalZeroRadEdgeY(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalInside(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr SkScalar gPos2[]
static sk_sp< SkShader > Make2ConicalEdgeY(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr SkScalar gPos0[]
constexpr GradData gGradData[]
static sk_sp< SkShader > Make2ConicalOutside(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr struct skiagm::@264 gGradCases[]
constexpr GradMaker gGradMakersEdgeCases[]
constexpr SkScalar gPos1[]
constexpr GradMaker gGradMakersOutside[]
static sk_sp< SkShader > Make2ConicalTouchY(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalInsideCenter(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalEdgeX(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
sk_sp< SkShader >(* GradMaker)(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalInsideCenterReversed(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
static sk_sp< SkShader > Make2ConicalOutsideFlip(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr SkColor gColors[]
static sk_sp< SkShader > Make2ConicalZeroRadEdgeX(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
constexpr SkScalar gPosClamp[]
static sk_sp< SkShader > Make2ConicalInsideFlip(const SkPoint pts[2], const GradData &data, SkTileMode tm, const SkMatrix &localMatrix)
void set(float x, float y)