diff options
author | Herb Derby <herb@google.com> | 2018-05-09 16:36:11 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-05 20:11:39 +0000 |
commit | 4225b3220ef4bf50f0d9403f812ea94d50c4ee59 (patch) | |
tree | a03d6ff5708e6c41fdc4b1edb8f5200d08d7dc63 /src/xps | |
parent | f105dc71e4200db5a57a1e28b8bca2b3689debdb (diff) |
Have draw(Text|PosText|PosTextH) use a single entry on the device
Handle the positioning of drawText at the canvas layer. Simplify
the code by removing similar implementations.
Change-Id: I8b711783435072f560e29fca1dd934fa2e345ed2
Reviewed-on: https://skia-review.googlesource.com/127131
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/xps')
-rw-r--r-- | src/xps/SkXPSDevice.cpp | 57 | ||||
-rw-r--r-- | src/xps/SkXPSDevice.h | 2 |
2 files changed, 0 insertions, 59 deletions
diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp index 29ee8f3eca..ef5f48881d 100644 --- a/src/xps/SkXPSDevice.cpp +++ b/src/xps/SkXPSDevice.cpp @@ -2047,63 +2047,6 @@ private: GlyphRun* const fXpsGlyphs; }; -void SkXPSDevice::drawText(const void* text, size_t byteLen, - SkScalar x, SkScalar y, - const SkPaint& paint) { - if (byteLen < 1) return; - - if (text_must_be_pathed(paint, this->ctm())) { - SkPath path; - paint.getTextPath(text, byteLen, x, y, &path); - this->drawPath(path, paint, nullptr, true); - //TODO: add automation "text" - return; - } - - TypefaceUse* typeface; - HRV(CreateTypefaceUse(paint, &typeface)); - - auto cache = - SkStrikeCache::FindOrCreateStrikeExclusive( - paint, &this->surfaceProps(), - SkScalerContextFlags::kNone, nullptr); - - // Advance width and offsets for glyphs measured in hundredths of the font em size - // (XPS Spec 5.1.3). - FLOAT centemPerUnit = 100.0f / SkScalarToFLOAT(paint.getTextSize()); - GlyphRun xpsGlyphs; - xpsGlyphs.setReserve(num_glyph_guess(paint.getTextEncoding(), - static_cast<const char*>(text), byteLen)); - - ProcessOneGlyph processOneGlyph(centemPerUnit, typeface->glyphsUsed, &xpsGlyphs); - - SkFindAndPlaceGlyph::ProcessText( - paint.getTextEncoding(), static_cast<const char*>(text), byteLen, - SkPoint{ x, y }, SkMatrix::I(), paint.getTextAlign(), cache.get(), processOneGlyph); - - if (xpsGlyphs.count() == 0) { - return; - } - - XPS_POINT origin = { - xpsGlyphs[0].horizontalOffset / centemPerUnit, - xpsGlyphs[0].verticalOffset / -centemPerUnit, - }; - xpsGlyphs[0].horizontalOffset = 0.0f; - xpsGlyphs[0].verticalOffset = 0.0f; - - HRV(AddGlyphs(this->fXpsFactory.get(), - this->fCurrentXpsCanvas.get(), - typeface, - nullptr, - xpsGlyphs.begin(), xpsGlyphs.count(), - &origin, - SkScalarToFLOAT(paint.getTextSize()), - XPS_STYLE_SIMULATION_NONE, - this->ctm(), - paint)); -} - void SkXPSDevice::drawPosText(const void* text, size_t byteLen, const SkScalar pos[], int scalarsPerPos, const SkPoint& offset, const SkPaint& paint) { diff --git a/src/xps/SkXPSDevice.h b/src/xps/SkXPSDevice.h index a5ee07634c..81e881ea82 100644 --- a/src/xps/SkXPSDevice.h +++ b/src/xps/SkXPSDevice.h @@ -97,8 +97,6 @@ protected: const SkRect* srcOrNull, const SkRect& dst, const SkPaint& paint, SkCanvas::SrcRectConstraint) override; - void drawText(const void* text, size_t len, - SkScalar x, SkScalar y, const SkPaint& paint) override; void drawPosText(const void* text, size_t len, const SkScalar pos[], int scalarsPerPos, const SkPoint& offset, const SkPaint& paint) override; |