Convert PDF device to use glyph runs lists
Change-Id: I3d98aadead463a42dd8338c63593be22acb6dd68 Reviewed-on: https://skia-review.googlesource.com/142502 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Herb Derby <herb@google.com>
This commit is contained in:
parent
f1ba3ae6f7
commit
736db1081b
@ -18,6 +18,7 @@
|
||||
#include "SkColorFilter.h"
|
||||
#include "SkDraw.h"
|
||||
#include "SkGlyphCache.h"
|
||||
#include "SkGlyphRun.h"
|
||||
#include "SkImageFilterCache.h"
|
||||
#include "SkJpegEncoder.h"
|
||||
#include "SkMakeUnique.h"
|
||||
@ -1458,25 +1459,11 @@ void SkPDFDevice::drawPosText(const void* text, size_t len,
|
||||
}
|
||||
|
||||
void SkPDFDevice::drawGlyphRunList(SkGlyphRunList* glyphRunList) {
|
||||
auto blob = glyphRunList->blob();
|
||||
|
||||
if (blob == nullptr) {
|
||||
glyphRunList->temporaryShuntToDrawPosText(this, SkPoint::Make(0, 0));
|
||||
} else {
|
||||
auto origin = glyphRunList->origin();
|
||||
auto paint = glyphRunList->paint();
|
||||
this->drawTextBlob(blob, origin.x(), origin.y(), paint);
|
||||
}
|
||||
}
|
||||
|
||||
void SkPDFDevice::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
|
||||
const SkPaint &paint) {
|
||||
for (SkTextBlobRunIterator it(blob); !it.done(); it.next()) {
|
||||
SkPaint runPaint(paint);
|
||||
for (SkGlyphRunListIterator it(glyphRunList); !it.done(); it.next()) {
|
||||
SkPaint runPaint;
|
||||
it.applyFontToPaint(&runPaint);
|
||||
SkPoint offset = it.offset() + SkPoint{x, y};
|
||||
this->internalDrawText(it.glyphs(), sizeof(SkGlyphID) * it.glyphCount(),
|
||||
it.pos(), it.positioning(), offset, runPaint,
|
||||
it.pos(), it.positioning(), glyphRunList->origin(), runPaint,
|
||||
it.clusters(), it.textSize(), it.text());
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "SkTextBlob.h"
|
||||
#include "SkKeyedImage.h"
|
||||
|
||||
class SkGlyphRunList;
|
||||
class SkKeyedImage;
|
||||
class SkPath;
|
||||
class SkPDFArray;
|
||||
@ -97,7 +98,6 @@ public:
|
||||
void drawPosText(const void* text, size_t len,
|
||||
const SkScalar pos[], int scalarsPerPos,
|
||||
const SkPoint& offset, const SkPaint&) override;
|
||||
void drawTextBlob(const SkTextBlob*, SkScalar x, SkScalar y, const SkPaint &) override;
|
||||
void drawGlyphRunList(SkGlyphRunList* glyphRunList) override;
|
||||
void drawVertices(const SkVertices*, const SkMatrix* bones, int boneCount, SkBlendMode,
|
||||
const SkPaint&) override;
|
||||
|
Loading…
Reference in New Issue
Block a user