Lines Matching defs:canvas
94 SkCanvas canvas(10, 10);
98 irect = canvas.getDeviceClipBounds();
100 REPORTER_ASSERT(reporter, canvas.getDeviceClipBounds(&irect2));
104 rect = canvas.getLocalClipBounds();
106 REPORTER_ASSERT(reporter, canvas.getLocalClipBounds(&rect2));
109 canvas.clipRect(SkRect::MakeEmpty());
111 irect = canvas.getDeviceClipBounds();
113 REPORTER_ASSERT(reporter, !canvas.getDeviceClipBounds(&irect2));
116 rect = canvas.getLocalClipBounds();
118 REPORTER_ASSERT(reporter, !canvas.getLocalClipBounds(&rect2));
130 // Will call proc with multiple styles of canvas (recording, raster, pdf)
144 static void test_restriction(skiatest::Reporter* reporter, SkCanvas* canvas) {
145 REPORTER_ASSERT(reporter, canvas->getDeviceClipBounds() == gBaseRestrictedR);
148 canvas->androidFramework_setDeviceClipRestriction(restrictionR);
149 REPORTER_ASSERT(reporter, canvas->getDeviceClipBounds() == restrictionR);
152 canvas->clipRect(SkRect::Make(clipR), SkClipOp::kIntersect);
153 REPORTER_ASSERT(reporter, canvas->getDeviceClipBounds() == clipR);
157 * Clip restriction logic exists in the canvas itself, and in various kinds of devices.
160 * - picture : empty device but exercises canvas itself
166 [reporter](SkCanvas* canvas) { test_restriction(reporter, canvas); });
170 multi_canvas_driver(50, 50, [reporter](SkCanvas* canvas) {
171 canvas->save();
172 canvas->clipRect({0, 0, 20, 40 });
173 REPORTER_ASSERT(reporter, !canvas->isClipEmpty());
174 canvas->clipRect({30, 0, 50, 40 });
175 REPORTER_ASSERT(reporter, canvas->isClipEmpty());
187 std::unique_ptr<SkCanvas> canvas = SkCanvas::MakeRasterDirect(info, baseAddr, minRowBytes);
188 REPORTER_ASSERT(reporter, canvas);
191 const SkPMColor* addr = canvas->peekPixels(&pmap) ? pmap.addr32() : nullptr;
220 canvas = SkCanvas::MakeRasterDirect(info, baseAddr, minRowBytes);
221 REPORTER_ASSERT(reporter, nullptr == canvas);
376 // test case because the canvas flush on a deferred canvas will
378 // clip and matrix stack state on the playback canvas.
417 SkCanvas* canvas = doc->beginPage(SkIntToScalar(kWidth),
419 REPORTER_ASSERT(reporter, canvas);
420 test(canvas, reporter);
426 SkCanvas canvas(10, 10);
427 REPORTER_ASSERT(reporter, 1 == canvas.getSaveCount());
429 int n = canvas.save();
431 REPORTER_ASSERT(reporter, 2 == canvas.getSaveCount());
433 n = canvas.saveLayer(nullptr, nullptr);
435 REPORTER_ASSERT(reporter, 3 == canvas.getSaveCount());
437 canvas.restore();
438 REPORTER_ASSERT(reporter, 2 == canvas.getSaveCount());
439 canvas.restore();
440 REPORTER_ASSERT(reporter, 1 == canvas.getSaveCount());
444 SkCanvas canvas(10, 10);
445 canvas.save();
447 canvas.clipPath(path);
448 canvas.restore();
449 canvas.save();
451 canvas.clipPath(path);
452 canvas.restore();
453 canvas.save();
455 canvas.clipPath(path); // should not assert here
456 canvas.restore();
463 MockFilterCanvas(SkCanvas* canvas) : INHERITED(canvas) { }
474 // SkPaintFilterCanvas should inherit the initial target canvas state.
476 SkCanvas canvas(100, 100);
477 canvas.clipRect(SkRect::MakeXYWH(12.7f, 12.7f, 75, 75));
478 canvas.scale(0.5f, 0.75f);
480 MockFilterCanvas filterCanvas(&canvas);
481 REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix());
482 REPORTER_ASSERT(reporter, canvas.getLocalClipBounds() == filterCanvas.getLocalClipBounds());
486 REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix());
487 REPORTER_ASSERT(reporter, filterCanvas.getLocalClipBounds().contains(canvas.getLocalClipBounds()));
560 static void test_cliptype(SkCanvas* canvas, skiatest::Reporter* r) {
561 REPORTER_ASSERT(r, !canvas->isClipEmpty());
562 REPORTER_ASSERT(r, canvas->isClipRect());
564 canvas->save();
565 canvas->clipRect({0, 0, 0, 0});
566 REPORTER_ASSERT(r, canvas->isClipEmpty());
567 REPORTER_ASSERT(r, !canvas->isClipRect());
568 canvas->restore();
570 canvas->save();
571 canvas->clipRect({2, 2, 6, 6});
572 REPORTER_ASSERT(r, !canvas->isClipEmpty());
573 REPORTER_ASSERT(r, canvas->isClipRect());
574 canvas->restore();
576 canvas->save();
577 canvas->clipRect({2, 2, 6, 6}, SkClipOp::kDifference); // punch a hole in the clip
578 REPORTER_ASSERT(r, !canvas->isClipEmpty());
579 REPORTER_ASSERT(r, !canvas->isClipRect());
580 canvas->restore();
582 REPORTER_ASSERT(r, !canvas->isClipEmpty());
583 REPORTER_ASSERT(r, canvas->isClipRect());
607 // Wrap it in a legacy canvas. Test that the canvas behaves like a legacy canvas.
608 SkCanvas canvas(bitmap, SkCanvas::ColorBehavior::kLegacy);
609 REPORTER_ASSERT(r, !canvas.imageInfo().colorSpace());
612 canvas.drawIRect(SkIRect::MakeWH(1, 1), p);
648 SkCanvas canvas(10, 10);
652 canvas.saveLayer(nullptr, &p);
653 REPORTER_ASSERT(r, canvas.getDeviceClipBounds().isEmpty());
654 canvas.restore();
657 // Test that we don't crash/assert when building a canvas with degenerate coordintes
671 SkCanvas canvas(bm);
672 canvas.drawRect({0, 0, 100, 90*1024}, paint);
677 SkCanvas canvas(100, 100);
691 canvas.clipRect(clipRect);
693 canvas.rotate(45);
694 const SkMatrix preCTM = canvas.getTotalMatrix();
695 canvas.drawRect(blurredRect, p);
696 const SkMatrix postCTM = canvas.getTotalMatrix();
701 SkCanvas canvas(10, 10);
707 REPORTER_ASSERT(reporter, !canvas.findMarkedCTM(id_a, nullptr));
708 REPORTER_ASSERT(reporter, !canvas.findMarkedCTM(id_b, nullptr));
711 SkM44 b = canvas.getLocalToDevice();
712 canvas.markCTM(id_b);
715 canvas.concat(SkM44::Scale(2, 4, 6));
716 SkM44 a = canvas.getLocalToDevice();
717 canvas.markCTM(id_a);
718 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_a, &m) && m == a);
721 canvas.translate(1, 2);
722 SkM44 a1 = canvas.getLocalToDevice();
724 canvas.markCTM(id_a);
725 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_a, &m) && m == a1);
728 canvas.save();
730 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_b, &m) && m == b);
731 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_a, &m) && m == a1);
732 canvas.translate(2, 3);
733 SkM44 a2 = canvas.getLocalToDevice();
735 canvas.markCTM(id_a);
737 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_a, &m) && m == a2);
738 canvas.restore();
740 REPORTER_ASSERT(reporter, canvas.findMarkedCTM(id_a, &m) && m == a1);
767 auto canvas = surf->getCanvas();
769 canvas->clear(SK_ColorRED);
773 canvas->saveLayer(nullptr, nullptr);
776 canvas->clear(SK_ColorBLUE);
781 canvas->restore();
783 // by returning, we are implicitly deleting the surface, and its associated canvas
790 // Now repeat that, but delete the canvas before we restore it