void onDrawContent(SkCanvas* canvas) override { bool afterFirstFrame = fInitialized; if (!fInitialized) { this->init(); fInitialized = true; } canvas->clear(0xFFDDDDDD); SkPaint paint; paint.setAntiAlias(true); paint.setColor(0xDE000000); paint.setTypeface(fTypeface); paint.setTextSize(11); paint.setTextEncoding(SkPaint::kUTF32_TextEncoding); if (afterFirstFrame) { #if SK_SUPPORT_GPU GrContext* grContext = canvas->getGrContext(); if (grContext) { sk_sp<SkImage> image = grContext->getFontAtlasImage_ForTesting(GrMaskFormat::kA8_GrMaskFormat, 0); canvas->drawImageRect(image, SkRect::MakeXYWH(10.0f, 10.0f, 512.0f, 512.0), &paint); image = grContext->getFontAtlasImage_ForTesting(GrMaskFormat::kA8_GrMaskFormat, 1); canvas->drawImageRect(image, SkRect::MakeXYWH(522.0f, 10.0f, 512.f, 512.0f), &paint); image = grContext->getFontAtlasImage_ForTesting(GrMaskFormat::kA8_GrMaskFormat, 2); canvas->drawImageRect(image, SkRect::MakeXYWH(10.0f, 522.0f, 512.0f, 512.0f), &paint); image = grContext->getFontAtlasImage_ForTesting(GrMaskFormat::kA8_GrMaskFormat, 3); canvas->drawImageRect(image, SkRect::MakeXYWH(522.0f, 522.0f, 512.0f, 512.0f), &paint); } #endif } canvas->scale(fScale, fScale); canvas->translate(0, fTranslate); fTranslate -= 0.5f; // draw a consistent run of the 'words' - one word per line SkScalar y = 0; for (int index = 0; index < kNumBlobs; ++index) { y += -fMetrics.fAscent; canvas->drawTextBlob(fBlobs[index], 0, y, paint); y += 3*(fMetrics.fDescent - fMetrics.fAscent + fMetrics.fLeading); } }