Index: src/core/SkCanvas.cpp |
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
index f501468a330de7659adc9a6b1233722bf88cb413..d8399717fe353908a5e364047b64a4cd08362b62 100644 |
--- a/src/core/SkCanvas.cpp |
+++ b/src/core/SkCanvas.cpp |
@@ -2356,8 +2356,8 @@ void SkCanvas::DrawTextDecorations(const SkDraw& draw, const SkPaint& paint, |
} |
} |
-void SkCanvas::drawText(const void* text, size_t byteLength, |
- SkScalar x, SkScalar y, const SkPaint& paint) { |
+void SkCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, |
+ const SkPaint& paint) { |
CHECK_SHADER_NOSETCONTEXT(paint); |
LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) |
@@ -2372,52 +2372,68 @@ void SkCanvas::drawText(const void* text, size_t byteLength, |
LOOPER_END |
} |
-void SkCanvas::drawPosText(const void* text, size_t byteLength, |
- const SkPoint pos[], const SkPaint& paint) { |
+void SkCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], |
+ const SkPaint& paint) { |
CHECK_SHADER_NOSETCONTEXT(paint); |
- |
+ |
LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) |
- |
+ |
while (iter.next()) { |
SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint()); |
iter.fDevice->drawPosText(iter, text, byteLength, &pos->fX, 0, 2, |
dfp.paint()); |
} |
- |
+ |
LOOPER_END |
} |
-void SkCanvas::drawPosTextH(const void* text, size_t byteLength, |
- const SkScalar xpos[], SkScalar constY, |
- const SkPaint& paint) { |
+void SkCanvas::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], |
+ SkScalar constY, const SkPaint& paint) { |
CHECK_SHADER_NOSETCONTEXT(paint); |
- |
+ |
LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) |
- |
+ |
while (iter.next()) { |
SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint()); |
iter.fDevice->drawPosText(iter, text, byteLength, xpos, constY, 1, |
dfp.paint()); |
} |
- |
+ |
LOOPER_END |
} |
-void SkCanvas::drawTextOnPath(const void* text, size_t byteLength, |
- const SkPath& path, const SkMatrix* matrix, |
- const SkPaint& paint) { |
+void SkCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, |
+ const SkMatrix* matrix, const SkPaint& paint) { |
CHECK_SHADER_NOSETCONTEXT(paint); |
- |
+ |
LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) |
- |
+ |
while (iter.next()) { |
iter.fDevice->drawTextOnPath(iter, text, byteLength, path, |
matrix, looper.paint()); |
} |
- |
+ |
LOOPER_END |
} |
+// These will become non-virtual, so they always call the (virtual) onDraw... method |
+void SkCanvas::drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, |
+ const SkPaint& paint) { |
+ this->onDrawText(text, byteLength, x, y, paint); |
+} |
+void SkCanvas::drawPosText(const void* text, size_t byteLength, const SkPoint pos[], |
+ const SkPaint& paint) { |
+ this->onDrawPosText(text, byteLength, pos, paint); |
+} |
+void SkCanvas::drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], |
+ SkScalar constY, const SkPaint& paint) { |
+ this->onDrawPosTextH(text, byteLength, xpos, constY, paint); |
+} |
+void SkCanvas::drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, |
+ const SkMatrix* matrix, const SkPaint& paint) { |
+ this->onDrawTextOnPath(text, byteLength, path, matrix, paint); |
+} |
+ |
void SkCanvas::drawVertices(VertexMode vmode, int vertexCount, |
const SkPoint verts[], const SkPoint texs[], |
const SkColor colors[], SkXfermode* xmode, |