void TestCanvas::test(GiCanvas* canvas, int bits, int n, bool randStyle) { s_randStyle = randStyle; if ((bits & 0x400) == 0 || !s_inited) { initRand(); } if (bits & 0x01) testRect(canvas, n); if (bits & 0x02) testLine(canvas, n); if (bits & 0x04) testTextAt(canvas, n); if (bits & 0x08) testEllipse(canvas, n); if (bits & 0x10) testQuadBezier(canvas, n); if (bits & 0x20) testCubicBezier(canvas, n); if (bits & 0x40) testPolygon(canvas, n); if (bits & 0x80) canvas->clearRect(100, 100, 200, 200); if (bits & 0x100) testClipPath(canvas, n); if (bits & 0x200) testHandle(canvas, n); if (bits & 0x400) testDynCurves(canvas); }
void TestCanvas::testClipPath(GiCanvas* canvas) { for (int i = 0; i < 5; i++) { canvas->saveClip(); canvas->clipRect(randFloat(10.f, 400.f), randFloat(10.f, 400.f), randFloat(50.f, 200.f), randFloat(50.f, 200.f)); testCubicBezier(canvas); canvas->restoreClip(); } for (int j = 0; j < 5; j++) { canvas->saveClip(); canvas->beginPath(); float x = randFloat(200.f, 600.f); float y = randFloat(200.f, 600.f); canvas->moveTo(x, y); for (int j = randInt(1, 5); j > 0; j--) { canvas->lineTo(x += randFloat(-200.f, 200.f), y += randFloat(-200.f, 200.f)); } canvas->closePath(); canvas->clipPath(); canvas->setPen(0x41000000 | randInt(0, 0xFFFFFF), -1.f, randInt(0, 4)); canvas->setBrush(0x11000000 | randInt(0, 0xFFFFFF), 0); canvas->drawPath(true, true); canvas->restoreClip(); } }
void TestCanvas::test(GiCanvas* canvas, int bits, int n, bool randStyle) { s_randStyle = randStyle; if ((bits & kDynCurves) == 0 || !s_inited) { initRand(); } if (bits & kRect) testRect(canvas, n * 2); if (bits & kLine) testLine(canvas, n * 2); if (bits & kTextAt) testTextAt(canvas, n); if (bits & kEllipse) testEllipse(canvas, n * 2); if (bits & kQuadBezier) testQuadBezier(canvas, n); if (bits & kCubicBezier) testCubicBezier(canvas, n); if (bits & kPolygon) testPolygon(canvas, n); if (bits & kClearRect) canvas->clearRect(100, 100, 200, 200); if (bits & kClipPath) testClipPath(canvas, n); if (bits & kHandle) testHandle(canvas, n); if (bits & kDynCurves) testDynCurves(canvas); }
void TestCanvas::testClipPath(GiCanvas* canvas, int n) { for (int i = 0; i < 2; i++) { canvas->saveClip(); if (canvas->clipRect(randFloat(100.f, 500.f), randFloat(100.f, 500.f), randFloat(50.f, 200.f), randFloat(50.f, 200.f))) { testLine(canvas, n); } canvas->restoreClip(); } canvas->saveClip(); canvas->beginPath(); for (int j = 0; j < 5; j++) { float x1 = randFloat(100.f, 400.f); float y1 = randFloat(100.f, 400.f); canvas->moveTo(x1, y1); for (int k = randInt(2, 4); k > 0; k--) { float x2 = x1 + randFloat(-150.f, 150.f); float y2 = y1 + randFloat(-150.f, 150.f); float x3 = x2 + randFloat(-150.f, 150.f); float y3 = y2 + randFloat(-150.f, 150.f); x1 = x3 + randFloat(-150.f, 150.f); y1 = y3 + randFloat(-150.f, 150.f); canvas->bezierTo(x2, y2, x3, y3, x1, y1); } canvas->closePath(); } if (canvas->clipPath()) { if (s_randStyle) { canvas->setPen(0x41000000 | randInt(0, 0xFFFFFF), -1.f, -1, 0); canvas->setBrush(0x41000000 | randInt(0, 0xFFFFFF), 0); } canvas->drawRect(0, 0, 1000, 1000, true, true); testCubicBezier(canvas, n); } canvas->restoreClip(); }