diff options
author | herb <herb@google.com> | 2015-11-12 08:53:42 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-12 08:53:42 -0800 |
commit | 386127f1d431ef64bf655f39994f17daadfb5269 (patch) | |
tree | 13f7460fb746988b559bed3b790c723b4839feb9 /tests/DrawTextTest.cpp | |
parent | d7b25c734e6835152451fbe2ff3b809c5006ad51 (diff) |
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
Diffstat (limited to 'tests/DrawTextTest.cpp')
-rw-r--r-- | tests/DrawTextTest.cpp | 59 |
1 files changed, 32 insertions, 27 deletions
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<SkPaint::Align>(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<SkPaint::Align>(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)); + } } } } |