summaryrefslogtreecommitdiff
path: root/libs/hwui/SkiaCanvas.cpp
diff options
context:
space:
mode:
author Mike Reed <reed@google.com> 2019-01-01 15:43:06 -0500
committer Mike Reed <reed@google.com> 2019-01-01 15:43:13 -0500
commit4a4b1be866f5405e41145c29f64492bd7c45157f (patch)
treedb0d822567daa828e8785ab9eae4a11c545876b8 /libs/hwui/SkiaCanvas.cpp
parent474dffd225aeb629c4dc511792dec8413a46540f (diff)
drawTextRSXform is deprecated
Test: make Change-Id: I9c041497688b2657e153eeda4c895cd810fd7f94
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r--libs/hwui/SkiaCanvas.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 83b9e7f6a3b8..ab95e69c4e26 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -710,6 +710,7 @@ void SkiaCanvas::drawGlyphs(ReadGlyphFunc glyphFunc, int count, const SkPaint& p
void SkiaCanvas::drawLayoutOnPath(const minikin::Layout& layout, float hOffset, float vOffset,
const SkPaint& paint, const SkPath& path, size_t start,
size_t end) {
+ SkFont font = SkFont::LEGACY_ExtractFromPaint(paint);
SkPaint paintCopy(paint);
if (mPaintFilter) {
mPaintFilter->filter(&paintCopy);
@@ -717,9 +718,10 @@ void SkiaCanvas::drawLayoutOnPath(const minikin::Layout& layout, float hOffset,
SkASSERT(paintCopy.getTextEncoding() == kGlyphID_SkTextEncoding);
const int N = end - start;
- SkAutoSTMalloc<1024, uint8_t> storage(N * (sizeof(uint16_t) + sizeof(SkRSXform)));
- SkRSXform* xform = (SkRSXform*)storage.get();
- uint16_t* glyphs = (uint16_t*)(xform + N);
+ SkTextBlobBuilder builder;
+ auto rec = builder.allocRunRSXform(font, N);
+ SkRSXform* xform = (SkRSXform*)rec.pos;
+ uint16_t* glyphs = rec.glyphs;
SkPathMeasure meas(path, false);
for (size_t i = start; i < end; i++) {
@@ -740,7 +742,7 @@ void SkiaCanvas::drawLayoutOnPath(const minikin::Layout& layout, float hOffset,
xform[i - start].fTy = pos.y() + tan.x() * y - halfWidth * tan.y();
}
- this->asSkCanvas()->drawTextRSXform(glyphs, sizeof(uint16_t) * N, xform, nullptr, paintCopy);
+ this->asSkCanvas()->drawTextBlob(builder.make(), 0, 0, paintCopy);
}
// ----------------------------------------------------------------------------