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

Unified Diff: skia/ext/analysis_canvas_unittest.cc

Issue 416333003: Revert of skia/ext: Early out from analysis when we have more than 1 draw op. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « 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 ce863b9b5e389a4a3b569504b171cc37c9b65b07..91d9692fb0af7640a3ab1eb4248c83586d77ba8c 100644
--- a/skia/ext/analysis_canvas_unittest.cc
+++ b/skia/ext/analysis_canvas_unittest.cc
@@ -280,4 +280,114 @@
EXPECT_NE(static_cast<SkColor>(SK_ColorTRANSPARENT), outputColor);
}
+TEST(AnalysisCanvasTest, HasText) {
+ int width = 200;
+ int height = 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.setColor(SK_ColorGRAY);
+ paint.setTextSize(SkIntToScalar(10));
+
+ {
+ skia::AnalysisCanvas canvas(width, height);
+ // Test after initialization.
+ EXPECT_FALSE(canvas.HasText());
+ // Test drawing anything other than text.
+ canvas.drawRect(SkRect::MakeWH(width/2, height), paint);
+ EXPECT_FALSE(canvas.HasText());
+ }
+ {
+ // Test SkCanvas::drawText.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Test SkCanvas::drawPosText.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawPosText(text, byteLength, &point, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Test SkCanvas::drawPosTextH.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawPosTextH(text, byteLength, &point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Test SkCanvas::drawTextOnPathHV.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawTextOnPathHV(text, byteLength, path, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Test SkCanvas::drawTextOnPath.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawTextOnPath(text, byteLength, path, NULL, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Text under opaque rect.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ canvas.drawRect(SkRect::MakeWH(width, height), paint);
+ EXPECT_FALSE(canvas.HasText());
+ }
+ {
+ // Text under translucent rect.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ SkPaint translucentPaint;
+ translucentPaint.setColor(0x88FFFFFF);
+ canvas.drawRect(SkRect::MakeWH(width, height), translucentPaint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Text under rect in clear mode.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ SkPaint clearModePaint;
+ clearModePaint.setXfermodeMode(SkXfermode::kClear_Mode);
+ canvas.drawRect(SkRect::MakeWH(width, height), clearModePaint);
+ EXPECT_FALSE(canvas.HasText());
+ }
+ {
+ // Clear.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ canvas.clear(SK_ColorGRAY);
+ EXPECT_FALSE(canvas.HasText());
+ }
+ {
+ // Text inside clip region.
+ skia::AnalysisCanvas canvas(width, height);
+ canvas.clipRect(SkRect::MakeWH(100, 100));
+ canvas.drawText(text, byteLength, point.fX, point.fY, paint);
+ EXPECT_TRUE(canvas.HasText());
+ }
+ {
+ // Text outside clip region.
+ skia::AnalysisCanvas canvas(width, height);
+ 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
« no previous file with comments | « skia/ext/analysis_canvas.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698