SkRemote: simple impl of onDraw*Text*
Review URL: https://codereview.chromium.org/1409273004
diff --git a/src/core/SkRemote.cpp b/src/core/SkRemote.cpp
index 4f2714f..23f3741 100644
--- a/src/core/SkRemote.cpp
+++ b/src/core/SkRemote.cpp
@@ -233,6 +233,35 @@
this->onDrawRect(SkRect::MakeLargest(), paint);
}
+ void Client::onDrawText(const void* text, size_t byteLength, SkScalar x,
+ SkScalar y, const SkPaint& paint) {
+ // Text-as-paths is a temporary hack.
+ // TODO: send SkTextBlobs and SkTypefaces
+ SkPath path;
+ paint.getTextPath(text, byteLength, x, y, &path);
+ this->onDrawPath(path, paint);
+ }
+
+ void Client::onDrawPosText(const void* text, size_t byteLength,
+ const SkPoint pos[], const SkPaint& paint) {
+ // Text-as-paths is a temporary hack.
+ // TODO: send SkTextBlobs and SkTypefaces
+ SkPath path;
+ paint.getPosTextPath(text, byteLength, pos, &path);
+ this->onDrawPath(path, paint);
+ }
+
+ void Client::onDrawPosTextH(const void* text, size_t byteLength,
+ const SkScalar xpos[], SkScalar constY,
+ const SkPaint& paint) {
+ size_t length = paint.countText(text, byteLength);
+ SkAutoTArray<SkPoint> pos(length);
+ for(size_t i = 0; i < length; ++i) {
+ pos[i].set(xpos[i], constY);
+ }
+ this->onDrawPosText(text, byteLength, &pos[0], paint);
+ }
+
void Client::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) {
SkPath path;
path.addRect(rect);
diff --git a/src/core/SkRemote.h b/src/core/SkRemote.h
index 5324644..fa62dad 100644
--- a/src/core/SkRemote.h
+++ b/src/core/SkRemote.h
@@ -98,6 +98,13 @@
void onDrawRect(const SkRect&, const SkPaint&) override;
void onDrawPaint(const SkPaint&) override;
+ void onDrawText(const void*, size_t, SkScalar,
+ SkScalar, const SkPaint&) override;
+ void onDrawPosText(const void*, size_t, const SkPoint[],
+ const SkPaint&) override;
+ void onDrawPosTextH(const void*, size_t, const SkScalar[], SkScalar,
+ const SkPaint&) override;
+
Cache* fCache;
Encoder* fEncoder;
};