static void test_edgeclipper() { SkPoint pts[] = { { -8.38822452e+21f, -7.69721471e+19f }, { 1.57645875e+23f, 1.44634003e+21f }, { 1.61519691e+23f, 1.48208059e+21f }, { 3.13963584e+23f, 2.88057438e+21f } }; SkRect clip = { 0, 0, 300, 200 }; SkEdgeClipper clipper; clipper.clipCubic(pts, clip); }
static void test_edgeclipper() { SkEdgeClipper clipper; const SkPoint pts[] = { { SkFloatToScalar(3.0995476e+010f), SkFloatToScalar(42.929779f) }, { SkFloatToScalar(-3.0995163e+010f), SkFloatToScalar(51.050385f) }, { SkFloatToScalar(-3.0995157e+010f), SkFloatToScalar(51.050392f) }, { SkFloatToScalar(-3.0995134e+010f), SkFloatToScalar(51.050400f) }, }; const SkRect clip = { 0, 0, SkIntToScalar(300), SkIntToScalar(200) }; // this should not assert, even though our choppers do a poor numerical // job when computing their t values. // http://code.google.com/p/skia/issues/detail?id=444 clipper.clipCubic(pts, clip); }
static void quad_clipper(const SkPoint src[], const SkRect& clip, SkCanvas* canvas, const SkPaint& p0, const SkPaint& p1) { drawQuad(canvas, src, p1); SkEdgeClipper clipper; if (clipper.clipQuad(src, clip)) { SkPoint pts[4]; SkPath::Verb verb; while ((verb = clipper.next(pts)) != SkPath::kDone_Verb) { switch (verb) { case SkPath::kLine_Verb: check_clipper(2, pts, clip); canvas->drawPoints(SkCanvas::kLines_PointMode, 2, pts, p0); break; case SkPath::kQuad_Verb: check_clipper(3, pts, clip); drawQuad(canvas, pts, p0); break; default: SkASSERT(!"unexpected verb"); } } } }