From 386127f1d431ef64bf655f39994f17daadfb5269 Mon Sep 17 00:00:00 2001 From: herb Date: Thu, 12 Nov 2015 08:53:42 -0800 Subject: Increment text pointer when the width is zero in the subpixel with center and right alignment. BUG=skia: Review URL: https://codereview.chromium.org/1438893002 --- tests/DrawTextTest.cpp | 59 +++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 27 deletions(-) (limited to 'tests/DrawTextTest.cpp') diff --git a/tests/DrawTextTest.cpp b/tests/DrawTextTest.cpp index 3a96c4ff2d..f2da450fe8 100644 --- a/tests/DrawTextTest.cpp +++ b/tests/DrawTextTest.cpp @@ -74,33 +74,38 @@ DEF_TEST(DrawText, reporter) { create(&drawPosTextBitmap, drawPosTextRect); SkCanvas drawPosTextCanvas(drawPosTextBitmap); - for (float offsetY = 0.0f; offsetY < 1.0f; offsetY += (1.0f / 16.0f)) { - for (float offsetX = 0.0f; offsetX < 1.0f; offsetX += (1.0f / 16.0f)) { - SkPoint point = SkPoint::Make(25.0f + offsetX, - 25.0f + offsetY); - - for (int align = 0; align < SkPaint::kAlignCount; ++align) { - paint.setTextAlign(static_cast(align)); - - for (unsigned int flags = 0; flags < (1 << 3); ++flags) { - static const unsigned int antiAliasFlag = 1; - static const unsigned int subpixelFlag = 1 << 1; - static const unsigned int lcdFlag = 1 << 2; - - paint.setAntiAlias(SkToBool(flags & antiAliasFlag)); - paint.setSubpixelText(SkToBool(flags & subpixelFlag)); - paint.setLCDRenderText(SkToBool(flags & lcdFlag)); - - // Test: drawText and drawPosText draw the same. - drawBG(&drawTextCanvas); - drawTextCanvas.drawText("A", 1, point.fX, point.fY, paint); - - drawBG(&drawPosTextCanvas); - drawPosTextCanvas.drawPosText("A", 1, &point, paint); - - REPORTER_ASSERT(reporter, - compare(drawTextBitmap, drawTextRect, - drawPosTextBitmap, drawPosTextRect)); + // Two test cases "A" for the normal path through the code, and " " to check the + // early return path. + const char* cases[] = {"A", " "}; + for (auto c : cases) { + for (float offsetY = 0.0f; offsetY < 1.0f; offsetY += (1.0f / 16.0f)) { + for (float offsetX = 0.0f; offsetX < 1.0f; offsetX += (1.0f / 16.0f)) { + SkPoint point = SkPoint::Make(25.0f + offsetX, + 25.0f + offsetY); + + for (int align = 0; align < SkPaint::kAlignCount; ++align) { + paint.setTextAlign(static_cast(align)); + + for (unsigned int flags = 0; flags < (1 << 3); ++flags) { + static const unsigned int antiAliasFlag = 1; + static const unsigned int subpixelFlag = 1 << 1; + static const unsigned int lcdFlag = 1 << 2; + + paint.setAntiAlias(SkToBool(flags & antiAliasFlag)); + paint.setSubpixelText(SkToBool(flags & subpixelFlag)); + paint.setLCDRenderText(SkToBool(flags & lcdFlag)); + + // Test: drawText and drawPosText draw the same. + drawBG(&drawTextCanvas); + drawTextCanvas.drawText(c, 1, point.fX, point.fY, paint); + + drawBG(&drawPosTextCanvas); + drawPosTextCanvas.drawPosText(c, 1, &point, paint); + + REPORTER_ASSERT(reporter, + compare(drawTextBitmap, drawTextRect, + drawPosTextBitmap, drawPosTextRect)); + } } } } -- cgit v1.2.3