Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Unified Diff: skia/ext/analysis_canvas_unittest.cc

Issue 13726013: Smart layer invalidation for LCD text. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« skia/ext/analysis_canvas.cc ('K') | « skia/ext/analysis_canvas.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: skia/ext/analysis_canvas_unittest.cc
diff --git a/skia/ext/analysis_canvas_unittest.cc b/skia/ext/analysis_canvas_unittest.cc
index 46c96451b2fd314dfd53c5db16c54ad1a99359f8..6e9f254b7efa5cb03d4defbaebda1aab660ca30e 100644
--- a/skia/ext/analysis_canvas_unittest.cc
+++ b/skia/ext/analysis_canvas_unittest.cc
@@ -454,4 +454,83 @@ TEST(AnalysisCanvasTest, PixelRefsFromPaint) {
}
}
+TEST(AnalysisCanvasTest, HasText) {
+ SkBitmap bitmap;
+ bitmap.setConfig(SkBitmap::kNo_Config, 200, 100);
+
+ const char* text = "A";
+ size_t byteLength = 1;
+ SkPoint point = SkPoint::Make(SkIntToScalar(25), SkIntToScalar(25));
+ SkPath path;
+ path.moveTo(point);
+ path.lineTo(SkIntToScalar(75), SkIntToScalar(75));
+ SkPaint paint;
+ paint.setTextSize(SkIntToScalar(10));
+
+ {
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ // Test after initialization.
+ EXPECT_FALSE(canvas.hasText());
+ // Test drawing anything other than text.
+ canvas.drawRect(SkRect::MakeWH(100, 100), paint);
+ EXPECT_FALSE(canvas.hasText());
+ }
+ {
+ // Test SkCanvas::drawText.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Test SkCanvas::drawPosText.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.drawPosText(text, byteLength, &point, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Test SkCanvas::drawPosTextH.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.drawPosTextH(text, byteLength, &point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Test SkCanvas::drawTextOnPathHV.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.drawTextOnPathHV(text, byteLength, path, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Test SkCanvas::drawTextOnPath.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.drawTextOnPath(text, byteLength, path, NULL, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Text inside clip region.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.clipRect(SkRect::MakeWH(100, 100));
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.hasText());
+ }
+ {
+ // Text outside clip region.
+ skia::AnalysisDevice device(bitmap);
+ skia::AnalysisCanvas canvas(&device);
+ canvas.clipRect(SkRect::MakeXYWH(100, 0, 100, 100));
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ // Analysis device does not do any clipping.
+ // So even when text is outside the clip region,
+ // it is marked as having the text.
+ // TODO(alokp): We may be able to do some trivial rejection.
+ EXPECT_TRUE(canvas.hasText());
+ }
+}
+
} // namespace skia
« skia/ext/analysis_canvas.cc ('K') | « skia/ext/analysis_canvas.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698