Minor fixes for distance field fonts:
- Remove additional transform in drawpostext()
- Use bitmap fonts if rasterizer set in paint
- Correctly set scale ratio for drawtext()

R=bsalomon@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/79283004

git-svn-id: http://skia.googlecode.com/svn/trunk@12338 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index aa91df3..0288dee 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -2012,7 +2012,7 @@
         paintRef = &paintCopy;
     }
     if (procFlags & SkDrawProcs::kSkipBakedGlyphTransform_Flag) {
-        ctm = NULL;
+        ctm = &SkMatrix::I();
     }
     SkAutoGlyphCache    autoCache(*paintRef, &fDevice->fLeakyProperties, ctm);
 #else
@@ -2036,7 +2036,11 @@
     AlignProc          alignProc = pick_align_proc(paint.getTextAlign());
     SkDraw1Glyph       d1g;
     SkDraw1Glyph::Proc proc = d1g.init(this, blitter, cache, paint);
+#if SK_DISTANCEFIELD_FONTS
+    TextMapState       tms(*ctm, constY);
+#else
     TextMapState       tms(*fMatrix, constY);
+#endif
     TextMapState::Proc tmsProc = tms.pickProc(scalarsPerPosition);
 
     if (cache->isSubpixel()) {
diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp
index 433eda1..8d955bb 100755
--- a/src/gpu/GrBitmapTextContext.cpp
+++ b/src/gpu/GrBitmapTextContext.cpp
@@ -124,7 +124,7 @@
     }
     if (NULL == fStrike) {
 #if SK_DISTANCEFIELD_FONTS
-        fStrike = fContext->getFontCache()->getStrike(scaler, true);
+        fStrike = fContext->getFontCache()->getStrike(scaler, false);
 #else
         fStrike = fContext->getFontCache()->getStrike(scaler);
 #endif
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index afdc7e9..063509a 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -1699,8 +1699,6 @@
         fDrawProcs->fContext = fContext;
 #if SK_DISTANCEFIELD_FONTS
         fDrawProcs->fFlags = 0;
-        fDrawProcs->fFlags |= SkDrawProcs::kSkipBakedGlyphTransform_Flag;
-        fDrawProcs->fFlags |= SkDrawProcs::kUseScaledGlyphs_Flag;
 #endif
     }
 
@@ -1726,13 +1724,22 @@
             return;
         }
 #if SK_DISTANCEFIELD_FONTS
-        GrDistanceFieldTextContext context(fContext, grPaint, paint.getColor(),
-                                           paint.getTextSize());
-#else
-        GrBitmapTextContext context(fContext, grPaint, paint.getColor());
+        if (paint.getRasterizer()) {
 #endif
-        myDraw.fProcs = this->initDrawForText(&context);
-        this->INHERITED::drawText(myDraw, text, byteLength, x, y, paint);
+            GrBitmapTextContext context(fContext, grPaint, paint.getColor());
+            myDraw.fProcs = this->initDrawForText(&context);
+            this->INHERITED::drawText(myDraw, text, byteLength, x, y, paint);
+#if SK_DISTANCEFIELD_FONTS
+        } else {
+            GrDistanceFieldTextContext context(fContext, grPaint, paint.getColor(),
+                                               paint.getTextSize()/SkDrawProcs::kBaseDFFontSize);
+            myDraw.fProcs = this->initDrawForText(&context);
+            fDrawProcs->fFlags |= SkDrawProcs::kSkipBakedGlyphTransform_Flag;
+            fDrawProcs->fFlags |= SkDrawProcs::kUseScaledGlyphs_Flag;
+            this->INHERITED::drawText(myDraw, text, byteLength, x, y, paint);
+            fDrawProcs->fFlags = 0;
+       }
+#endif
     }
 }
 
@@ -1754,14 +1761,24 @@
             return;
         }
 #if SK_DISTANCEFIELD_FONTS
-        GrDistanceFieldTextContext context(fContext, grPaint, paint.getColor(),
-                                           paint.getTextSize()/SkDrawProcs::kBaseDFFontSize);
-#else
-        GrBitmapTextContext context(fContext, grPaint, paint.getColor());
+        if (paint.getRasterizer()) {
 #endif
-        myDraw.fProcs = this->initDrawForText(&context);
-        this->INHERITED::drawPosText(myDraw, text, byteLength, pos, constY,
-                                     scalarsPerPos, paint);
+            GrBitmapTextContext context(fContext, grPaint, paint.getColor());
+            myDraw.fProcs = this->initDrawForText(&context);
+            this->INHERITED::drawPosText(myDraw, text, byteLength, pos, constY,
+                                         scalarsPerPos, paint);
+#if SK_DISTANCEFIELD_FONTS
+        } else {
+            GrDistanceFieldTextContext context(fContext, grPaint, paint.getColor(),
+                                               paint.getTextSize()/SkDrawProcs::kBaseDFFontSize);
+            myDraw.fProcs = this->initDrawForText(&context);
+            fDrawProcs->fFlags |= SkDrawProcs::kSkipBakedGlyphTransform_Flag;
+            fDrawProcs->fFlags |= SkDrawProcs::kUseScaledGlyphs_Flag;
+            this->INHERITED::drawPosText(myDraw, text, byteLength, pos, constY,
+                                         scalarsPerPos, paint);
+            fDrawProcs->fFlags = 0;
+        }
+#endif
     }
 }