static void test_path_with_hole(skiatest::Reporter* reporter) { static const uint8_t gExpectedImage[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; SkMask expected; expected.fBounds.set(0, 0, 4, 6); expected.fRowBytes = 4; expected.fFormat = SkMask::kA8_Format; expected.fImage = (uint8_t*)gExpectedImage; SkPath path; path.addRect(SkRect::MakeXYWH(0, 0, SkIntToScalar(4), SkIntToScalar(2))); path.addRect(SkRect::MakeXYWH(0, SkIntToScalar(4), SkIntToScalar(4), SkIntToScalar(2))); for (int i = 0; i < 2; ++i) { SkAAClip clip; clip.setPath(path, nullptr, 1 == i); SkMask mask; clip.copyToMask(&mask); SkAutoMaskFreeImage freeM(mask.fImage); REPORTER_ASSERT(reporter, expected == mask); } }
static bool operator==(const SkRegion& rgn, const SkAAClip& aaclip) { SkMask mask0, mask1; copyToMask(rgn, &mask0); aaclip.copyToMask(&mask1); bool eq = (mask0 == mask1); SkMask::FreeImage(mask0.fImage); SkMask::FreeImage(mask1.fImage); return eq; }
static void drawClip(SkCanvas* canvas, const SkAAClip& clip) { SkMask mask; SkBitmap bm; clip.copyToMask(&mask); SkAutoMaskFreeImage amfi(mask.fImage); bm.installMaskPixels(mask); SkPaint paint; canvas->drawBitmap(bm, SK_Scalar1 * mask.fBounds.fLeft, SK_Scalar1 * mask.fBounds.fTop, &paint); }
static void drawClip(SkCanvas* canvas, const SkAAClip& clip) { SkMask mask; SkBitmap bm; clip.copyToMask(&mask); SkAutoMaskFreeImage amfi(mask.fImage); bm.setConfig(SkBitmap::kA8_Config, mask.fBounds.width(), mask.fBounds.height(), mask.fRowBytes); bm.setPixels(mask.fImage); SkPaint paint; canvas->drawBitmap(bm, SK_Scalar1 * mask.fBounds.fLeft, SK_Scalar1 * mask.fBounds.fTop, &paint); }