Loading libs/hwui/SkiaCanvas.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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++) { Loading @@ -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); } // ---------------------------------------------------------------------------- Loading Loading
libs/hwui/SkiaCanvas.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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++) { Loading @@ -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); } // ---------------------------------------------------------------------------- Loading