| 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
|
| }
|
|
|
|
|