| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index af25b46f3f808f386a04387a14eb78a36fe418bd..16459b0a0378c965dd39d6ec43e6bac245b4c048 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -22,7 +22,6 @@
|
| #include "SkSmallAllocator.h"
|
| #include "SkSurface_Base.h"
|
| #include "SkTemplates.h"
|
| -#include "SkTextBlob.h"
|
| #include "SkTextFormatParams.h"
|
| #include "SkTLazy.h"
|
| #include "SkUtils.h"
|
| @@ -2218,43 +2217,14 @@ void SkCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPat
|
|
|
| void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
|
| const SkPaint& paint) {
|
| - SkASSERT(blob);
|
| -
|
| - // FIXME: dispatch to the device instead
|
| -
|
| - if (x || y) {
|
| - this->translate(x, y);
|
| - }
|
| -
|
| - SkPaint runPaint = paint;
|
| - SkTextBlob::RunIterator it(blob);
|
| - while (!it.done()) {
|
| - size_t textLen = it.glyphCount() * sizeof(uint16_t);
|
| - const SkPoint& offset = it.offset();
|
| - // applyFontToPaint() always overwrites the exact same attributes,
|
| - // so it is safe to not re-seed the paint.
|
| - it.applyFontToPaint(&runPaint);
|
| -
|
| - switch (it.positioning()) {
|
| - case SkTextBlob::kDefault_Positioning:
|
| - this->drawText(it.glyphs(), textLen, offset.x(), offset.y(), runPaint);
|
| - break;
|
| - case SkTextBlob::kHorizontal_Positioning:
|
| - this->drawPosTextH(it.glyphs(), textLen, it.pos(), offset.y(), runPaint);
|
| - break;
|
| - case SkTextBlob::kFull_Positioning:
|
| - this->drawPosText(it.glyphs(), textLen, (const SkPoint*)it.pos(), runPaint);
|
| - break;
|
| - default:
|
| - SkFAIL("unhandled positioning mode");
|
| - }
|
| + LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL)
|
|
|
| - it.next();
|
| + while (iter.next()) {
|
| + SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint());
|
| + iter.fDevice->drawTextBlob(iter, blob, x, y, dfp.paint());
|
| }
|
|
|
| - if (x || y) {
|
| - this->translate(-x, -y);
|
| - }
|
| + LOOPER_END
|
| }
|
|
|
| // These will become non-virtual, so they always call the (virtual) onDraw... method
|
|
|