start removing legacy paint calls

Bug: skia:
Change-Id: I2a5c98c65e587015beb0ed6f6d5bcf5a3a1b69a2
Reviewed-on: https://skia-review.googlesource.com/c/177066
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
diff --git a/src/utils/SkTextUtils.cpp b/src/utils/SkTextUtils.cpp
index e588d3c..570643c 100644
--- a/src/utils/SkTextUtils.cpp
+++ b/src/utils/SkTextUtils.cpp
@@ -6,48 +6,21 @@
  */
 
 #include "SkTextUtils.h"
+#include "SkTextBlob.h"
 
 void SkTextUtils::DrawText(SkCanvas* canvas, const void* text, size_t size, SkScalar x, SkScalar y,
-                            const SkPaint& origPaint, Align align) {
-    int count = origPaint.countText(text, size);
-    if (!count) {
-        return;
-    }
+                            const SkPaint& paint, Align align) {
 
-    SkPaint paint(origPaint);
-    SkAutoSTArray<32, uint16_t> glyphStorage;
-    const uint16_t* glyphs;
-
-    if (paint.getTextEncoding() != kGlyphID_SkTextEncoding) {
-        glyphStorage.reset(count);
-        paint.textToGlyphs(text, size, glyphStorage.get());
-        glyphs = glyphStorage.get();
-        paint.setTextEncoding(kGlyphID_SkTextEncoding);
-    } else {
-        glyphs = static_cast<const uint16_t*>(text);
-    }
-
-    SkAutoSTArray<32, SkScalar> widthStorage(count);
-    SkScalar* widths = widthStorage.get();
-    paint.getTextWidths(glyphs, count * sizeof(uint16_t), widths);
+    SkFont font = SkFont::LEGACY_ExtractFromPaint(paint);
 
     if (align != kLeft_Align) {
-        SkScalar offset = 0;
-        for (int i = 0; i < count; ++i) {
-            offset += widths[i];
-        }
+        SkScalar width = font.measureText(text, size, paint.getTextEncoding());
         if (align == kCenter_Align) {
-            offset *= 0.5f;
+            width *= 0.5f;
         }
-        x -= offset;
+        x -= width;
     }
 
-    // Turn widths into h-positions
-    for (int i = 0; i < count; ++i) {
-        SkScalar w = widths[i];
-        widths[i] = x;
-        x += w;
-    }
-    canvas->drawPosTextH(glyphs, count * sizeof(uint16_t), widths, y, paint);
+    canvas->drawTextBlob(SkTextBlob::MakeFromText(text, size, font, paint.getTextEncoding()), x, y, paint);
 }