DEF_SIMPLE_GM_BG(overdraw_canvas, canvas, WIDTH, HEIGHT, SK_ColorWHITE) { // Set up the overdraw canvas. SkImageInfo offscreenInfo = SkImageInfo::MakeA8(WIDTH, HEIGHT); sk_sp<SkSurface> offscreen = SkSurface::MakeRaster(offscreenInfo); auto c = offscreen->getCanvas(); SkOverdrawCanvas overdrawCanvas(c); overdrawCanvas.drawRect(SkRect::MakeLTRB(10, 10, 200, 200), SkPaint()); overdrawCanvas.drawRect(SkRect::MakeLTRB(20, 20, 190, 190), SkPaint()); overdrawCanvas.drawRect(SkRect::MakeLTRB(30, 30, 180, 180), SkPaint()); overdrawCanvas.drawRect(SkRect::MakeLTRB(40, 40, 170, 170), SkPaint()); overdrawCanvas.drawRect(SkRect::MakeLTRB(50, 50, 160, 160), SkPaint()); overdrawCanvas.drawRect(SkRect::MakeLTRB(60, 60, 150, 150), SkPaint()); char text[] = "Ae_p"; overdrawCanvas.drawSimpleText(text, 4, SkTextEncoding::kUTF8, 300, 300, SkFont(), SkPaint()); sk_sp<SkImage> counts = offscreen->makeImageSnapshot(); // Draw overdraw colors to the canvas. The color filter will convert counts to colors. SkPaint paint; paint.setColorFilter(SkOverdrawColorFilter::Make(kOverdrawColors)); canvas->drawImage(counts.get(), 0.0f, 0.0f, &paint); canvas->drawString("This is some text:", 180, 300, SkFont(), SkPaint()); }
void draw(SkCanvas* canvas) { const char* colors[] = { "Unknown", "Alpha_8", "RGB_565", "ARGB_4444", "RGBA_8888", "RGB_888x", "BGRA_8888", "RGBA_1010102", "RGB_101010x", "Gray_8", "RGBA_F16Norm", "RGBA_F16" }; SkColorType colorType = image->colorType(); canvas->drawImage(image, 16, 0); canvas->drawString(colors[(int) colorType], 20, image->height() + 20, SkFont(), SkPaint()); }
// This test used to assert without the fix submitted for // http://code.google.com/p/skia/issues/detail?id=1083. // SKP files might have invalid glyph ids. This test ensures they are ignored, // and there is no assert on input data in Debug mode. static void test_issue1083() { SkDynamicMemoryWStream outStream; auto doc = SkPDF::MakeDocument(&outStream); SkCanvas* canvas = doc->beginPage(100.0f, 100.0f); uint16_t glyphID = 65000; canvas->drawSimpleText(&glyphID, 2, SkTextEncoding::kGlyphID, 0, 0, SkFont(), SkPaint()); doc->close(); }
DEF_TEST(SkPDF_document_skbug_4734, r) { REQUIRE_PDF_DOCUMENT(SkPDF_document_skbug_4734, r); SkDynamicMemoryWStream stream; auto doc = SkPDF::MakeDocument(&stream); SkCanvas* canvas = doc->beginPage(64, 64); canvas->scale(10000.0f, 10000.0f); canvas->translate(20.0f, 10.0f); canvas->rotate(30.0f); const char text[] = "HELLO"; canvas->drawString(text, 0, 0, SkFont(), SkPaint()); }
DEF_TEST(TextBlob_MakeAsDrawText, reporter) { const char text[] = "Hello"; auto blob = SkTextBlob::MakeFromString(text, SkFont(), SkTextEncoding::kUTF8); int runs = 0; for(SkTextBlobRunIterator it(blob.get()); !it.done(); it.next()) { REPORTER_ASSERT(reporter, it.glyphCount() == strlen(text)); REPORTER_ASSERT(reporter, it.positioning() == SkTextBlobRunIterator::kFull_Positioning); runs += 1; } REPORTER_ASSERT(reporter, runs == 1); }