don't use paint's gettextpath
Bug: skia:
Change-Id: I8ad0b924195f46a29b095e85a8c0573912f0045d
Reviewed-on: https://skia-review.googlesource.com/c/179986
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
diff --git a/src/utils/SkTextUtils.cpp b/src/utils/SkTextUtils.cpp
index 3ae9b06..3973497 100644
--- a/src/utils/SkTextUtils.cpp
+++ b/src/utils/SkTextUtils.cpp
@@ -5,6 +5,8 @@
* found in the LICENSE file.
*/
+#include "SkFontPriv.h"
+#include "SkPath.h"
#include "SkTextUtils.h"
#include "SkTextBlob.h"
@@ -22,3 +24,26 @@
canvas->drawTextBlob(SkTextBlob::MakeFromText(text, size, font, encoding), x, y, paint);
}
+void SkTextUtils::GetPath(const void* text, size_t length, SkTextEncoding encoding,
+ SkScalar x, SkScalar y, const SkFont& font, SkPath* path) {
+ SkAutoToGlyphs ag(font, text, length, encoding);
+ SkAutoTArray<SkPoint> pos(ag.count());
+ font.getPos(ag.glyphs(), ag.count(), &pos[0], {x, y});
+
+ struct Rec {
+ SkPath* fDst;
+ const SkPoint* fPos;
+ } rec = { path, &pos[0] };
+
+ path->reset();
+ font.getPaths(ag.glyphs(), ag.count(), [](const SkPath* src, const SkMatrix& mx, void* ctx) {
+ Rec* rec = (Rec*)ctx;
+ if (src) {
+ SkMatrix m(mx);
+ m.postTranslate(rec->fPos->fX, rec->fPos->fY);
+ rec->fDst->addPath(*src, m);
+ }
+ rec->fPos += 1;
+ }, &rec);
+}
+