Start of cross process SkScalerContext.

Change-Id: I16d9293cbc0bef1bdce1260d1bd9b43d8853d070
Reviewed-on: https://skia-review.googlesource.com/93641
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
diff --git a/src/core/SkTypeface_remote.cpp b/src/core/SkTypeface_remote.cpp
new file mode 100644
index 0000000..9d8a9af
--- /dev/null
+++ b/src/core/SkTypeface_remote.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkPaint.h"
+
+#include "SkSemaphore.h"
+#include "SkTypeface_remote.h"
+#include <iostream>
+
+SkScalerContextProxy::SkScalerContextProxy(
+        sk_sp<SkTypeface> tf,
+        const SkScalerContextEffects& effects,
+        const SkDescriptor* desc,
+        SkRemoteScalerContext* rsc)
+    : SkScalerContext{std::move(tf), effects, desc}
+    , fRemote{rsc} {}
+
+void SkScalerContextProxy::generateMetrics(SkGlyph* glyph) {
+    fRemote->generateMetrics(*this->typefaceProxy(), this->getRec(), glyph);
+}
+
+void SkScalerContextProxy::generateImage(const SkGlyph& glyph) {
+    fRemote->generateImage(*this->typefaceProxy(), this->getRec(), glyph);
+}
+
+void SkScalerContextProxy::generatePath(SkGlyphID glyphID, SkPath* path) {
+    fRemote->generatePath(*this->typefaceProxy(), this->getRec(), glyphID, path);
+}
+
+void SkScalerContextProxy::generateFontMetrics(SkPaint::FontMetrics* metrics) {
+    fRemote->generateFontMetrics(*this->typefaceProxy(), this->getRec(), metrics);
+}
+
+SkTypefaceProxy* SkScalerContextProxy::typefaceProxy() {
+    auto up = this->getTypeface();
+    return (SkTypefaceProxy *)up;
+}