40 conicCircle->
conicTo(0, 50, 50, 50,
w);
42 conicCircle->
rConicTo(0, -50, -50, -50,
w);
43 conicCircle->
rConicTo(-50, 0, -50, 50,
w);
48 hyperbola->
conicTo(0, 100, 100, 100, 2);
52 thinHyperbola->
moveTo(0, 0);
53 thinHyperbola->
conicTo(100, 100, 5, 0, 2);
57 veryThinHyperbola->
moveTo(0, 0);
58 veryThinHyperbola->
conicTo(100, 100, 1, 0, 2);
62 closedHyperbola->
moveTo(0, 0);
63 closedHyperbola->
conicTo(100, 100, 0, 0, 2);
68 nearParabola->
moveTo(0, 0);
69 nearParabola->
conicTo(0, 100, 100, 100, 0.999f);
78 veryThinEllipse->
moveTo(0, 0);
83 closedEllipse->
moveTo(0, 0);
93 b.
conicTo(0, -2.1e+11f, 1.05e+11f, -2.1e+11f,
w);
94 b.
conicTo(2.1e+11f, -2.1e+11f, 2.1e+11f, -1.05e+11f,
w);
105 const SkAlpha kAlphaValue[] = { 0xFF, 0x40 };
111 for (
int p = 0; p < fPaths.
size(); ++p) {
113 for (
size_t a = 0;
a < std::size(kAlphaValue); ++
a) {
114 paint.setARGB(kAlphaValue[
a], 0, 0, 0);
115 for (
int aa = 0; aa < 2; ++aa) {
117 for (
int fh = 0; fh < 2; ++fh) {
118 paint.setStroke(fh != 0);
120 const SkRect& bounds = fPaths[p].getBounds();
122 canvas->
translate(-bounds.fLeft, -bounds.fTop);
149 canvas->translate(50, 100);
150 SkPoint c = { 1052.5390625f, 506.8760978034711f };
151 SkScalar radius = 1096.702150363923f;
153 paint.setAntiAlias(
true);
154 paint.setStroke(
true);
155 canvas->drawCircle(c, radius,
paint);
157 .
arcTo({0, 0}, {-39.00216443306411f, 400.6058925796476f}, radius)
159 paint.setColor(0xff007f00);
160 canvas->drawPath(path,
paint);
165 canvas->translate(50, 100);
166 SkPoint c = { 1052.5390625f, 506.8760978034711f };
167 SkScalar radius = 1096.702150363923f;
169 paint.setAntiAlias(
true);
170 paint.setStroke(
true);
171 canvas->drawCircle(c, radius,
paint);
179 paint.setAntiAlias(
true);
180 paint.setStroke(
true);
181 paint.setStrokeWidth(100);
182 canvas->drawOval(r,
paint);
187 paint.setStrokeWidth(1);
188 canvas->drawOval(r,
paint);
191 canvas->rotate(1.0f);
194 paint.setStroke(
true);
195 paint.setStrokeWidth(100);
196 canvas->drawOval(r,
paint);
200 paint.setStrokeWidth(1);
201 canvas->drawOval(r,
paint);
214 paint.setAntiAlias(
true);
215 canvas->translate(125, 125);
216 canvas->drawPath(path.detach(),
paint);
constexpr SkColor SK_ColorLTGRAY
constexpr SkColor SK_ColorGRAY
constexpr SkColor SK_ColorDKGRAY
static float SkBits2Float(uint32_t bits)
static constexpr bool SkToBool(const T &x)
void(* Proc)(SkCanvas *, const SkRect &, const SkPaint &)
void drawGiantCircle(SkCanvas *canvas)
SkISize getISize() override
void append_path(Proc proc)
void onDraw(SkCanvas *canvas) override
void onOnceBeforeDraw() override
SkString getName() const override
void translate(SkScalar dx, SkScalar dy)
void drawPath(const SkPath &path, const SkPaint &paint)
@ kStrokeAndFill_Style
sets to stroke and fill geometry
SkPathBuilder & conicTo(SkPoint pt1, SkPoint pt2, SkScalar w)
SkPathBuilder & arcTo(const SkRect &oval, SkScalar startAngleDeg, SkScalar sweepAngleDeg, bool forceMoveTo)
SkPathBuilder & moveTo(SkPoint pt)
SkPathBuilder & rConicTo(SkPoint p1, SkPoint p2, SkScalar w)
#define DEF_SIMPLE_GM(NAME, CANVAS, W, H)
static constexpr SkISize Make(int32_t w, int32_t h)
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
void offset(float dx, float dy)