Index: gm/dftext.cpp |
diff --git a/gm/dftext.cpp b/gm/dftext.cpp |
index dccc62adb46a1e3b08ebe76ac7d971a45b17337b..59106f7344c70e68f556e2532d24c63c4a288cea 100755 |
--- a/gm/dftext.cpp |
+++ b/gm/dftext.cpp |
@@ -51,10 +51,13 @@ protected: |
SkSurfaceProps props(SkSurfaceProps::kUseDistanceFieldFonts_Flag, |
SkSurfaceProps::kLegacyFontHost_InitType); |
SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget(ctx, info, 0, &props)); |
- SkCanvas* canvas = surface->getCanvas(); |
+ SkCanvas* canvas = surface.get() ? surface->getCanvas() : inputCanvas; |
#else |
SkCanvas* canvas = inputCanvas; |
#endif |
+ |
+ // apply global scale to test glyph positioning |
+ canvas->scale(1.05f, 1.05f); |
canvas->clear(0xffffffff); |
SkPaint paint; |
@@ -97,7 +100,7 @@ protected: |
// check scaling down |
paint.setLCDRenderText(true); |
- x = SkIntToScalar(700); |
+ x = SkIntToScalar(680); |
y = SkIntToScalar(20); |
size_t arraySize = SK_ARRAY_COUNT(textSizes); |
for (size_t i = 0; i < arraySize; ++i) { |
@@ -110,6 +113,29 @@ protected: |
y += paint.getFontMetrics(NULL)*scaleFactor; |
} |
+ // check pos text |
+ { |
+ SkAutoCanvasRestore acr(canvas, true); |
+ |
+ canvas->scale(2.0f, 2.0f); |
+ |
+ SkAutoTArray<SkPoint> pos(textLen); |
+ SkAutoTArray<SkScalar> widths(textLen); |
+ paint.setTextSize(textSizes[0]); |
+ |
+ paint.getTextWidths(text, textLen, &widths[0]); |
+ |
+ SkScalar x = SkIntToScalar(340); |
+ SkScalar y = SkIntToScalar(75); |
+ for (unsigned int i = 0; i < textLen; ++i) { |
+ pos[i].set(x, y); |
+ x += widths[i]; |
+ } |
+ |
+ canvas->drawPosText(text, textLen, &pos[0], paint); |
+ } |
+ |
+ |
// check gamma-corrected blending |
const SkColor fg[] = { |
0xFFFFFFFF, |
@@ -119,10 +145,10 @@ protected: |
}; |
paint.setColor(0xFFF1F1F1); |
- SkRect r = SkRect::MakeLTRB(690, 250, 840, 460); |
+ SkRect r = SkRect::MakeLTRB(670, 250, 820, 460); |
canvas->drawRect(r, paint); |
- x = SkIntToScalar(700); |
+ x = SkIntToScalar(680); |
y = SkIntToScalar(270); |
paint.setTextSize(SkIntToScalar(22)); |
for (size_t i = 0; i < SK_ARRAY_COUNT(fg); ++i) { |
@@ -133,10 +159,10 @@ protected: |
} |
paint.setColor(0xFF1F1F1F); |
- r = SkRect::MakeLTRB(840, 250, 990, 460); |
+ r = SkRect::MakeLTRB(820, 250, 970, 460); |
canvas->drawRect(r, paint); |
- x = SkIntToScalar(850); |
+ x = SkIntToScalar(830); |
y = SkIntToScalar(270); |
paint.setTextSize(SkIntToScalar(22)); |
for (size_t i = 0; i < SK_ARRAY_COUNT(fg); ++i) { |
@@ -148,9 +174,11 @@ protected: |
#if SK_SUPPORT_GPU |
// render offscreen buffer |
- SkImage* image = surface->newImageSnapshot(); |
- image->draw(inputCanvas, 0, 0, NULL); |
- image->unref(); |
+ if (surface) { |
+ SkImage* image = surface->newImageSnapshot(); |
+ image->draw(inputCanvas, 0, 0, NULL); |
+ image->unref(); |
+ } |
#endif |
} |