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 |