aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/atlastext/SkAtlasTextTarget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/atlastext/SkAtlasTextTarget.cpp')
-rw-r--r--src/atlastext/SkAtlasTextTarget.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/atlastext/SkAtlasTextTarget.cpp b/src/atlastext/SkAtlasTextTarget.cpp
index c70e47995a..4d7d65d746 100644
--- a/src/atlastext/SkAtlasTextTarget.cpp
+++ b/src/atlastext/SkAtlasTextTarget.cpp
@@ -14,6 +14,7 @@
#include "SkAtlasTextContext.h"
#include "SkAtlasTextFont.h"
#include "SkAtlasTextRenderer.h"
+#include "SkGlyphRun.h"
#include "SkGr.h"
#include "SkInternalAtlasTextContext.h"
#include "ops/GrAtlasTextOp.h"
@@ -152,10 +153,13 @@ void SkInternalAtlasTextTarget::drawText(const SkGlyphID glyphs[], const SkPoint
auto* grContext = this->context()->internal().grContext();
auto bounds = SkIRect::MakeWH(fWidth, fHeight);
auto atlasTextContext = grContext->contextPriv().drawingManager()->getTextContext();
- size_t byteLength = sizeof(SkGlyphID) * glyphCnt;
- const SkScalar* pos = &positions->fX;
- atlasTextContext->drawPosText(grContext, this, GrNoClip(), paint, this->ctm(), props,
- (const char*)glyphs, byteLength, pos, 2, {0, 0}, bounds);
+ SkGlyphRunBuilder builder;
+ builder.drawGlyphPos(paint, SkSpan<const SkGlyphID>{glyphs, SkTo<size_t>(glyphCnt)}, positions);
+ auto glyphRunList = builder.useGlyphRunList();
+ if (!glyphRunList.empty()) {
+ atlasTextContext->drawGlyphRunList(grContext, this, GrNoClip(), this->ctm(), props,
+ glyphRunList, bounds);
+ }
}
void SkInternalAtlasTextTarget::addDrawOp(const GrClip& clip, std::unique_ptr<GrAtlasTextOp> op) {