diff options
author | Bruce Wang <brucewang@google.com> | 2018-06-25 11:37:25 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-25 20:42:25 +0000 |
commit | 536ad2c146b72eb61f7df47fd88e296f879e6611 (patch) | |
tree | abdbc926d4875de8b345164399338302f1cce589 | |
parent | ff168d9258e0101826a8072b4ee077c3d2aa7258 (diff) |
Implement onMakeClone function on all subclasses of SkTypeface except
on mac.
Change-Id: I2b8777a5b54e190c37623ab798a89b4f1833ceac
Reviewed-on: https://skia-review.googlesource.com/137382
Commit-Queue: Bruce Wang <brucewang@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
-rw-r--r-- | src/core/SkTypeface.cpp | 3 | ||||
-rw-r--r-- | src/core/SkTypeface_remote.h | 4 | ||||
-rw-r--r-- | src/ports/SkFontHost_win.cpp | 5 | ||||
-rw-r--r-- | tests/FontMgrTest.cpp | 3 | ||||
-rw-r--r-- | tests/TypefaceTest.cpp | 3 | ||||
-rw-r--r-- | tools/fonts/SkRandomScalerContext.cpp | 8 | ||||
-rw-r--r-- | tools/fonts/SkRandomScalerContext.h | 1 | ||||
-rw-r--r-- | tools/fonts/SkTestSVGTypeface.h | 4 | ||||
-rw-r--r-- | tools/fonts/SkTestTypeface.h | 4 |
9 files changed, 35 insertions, 0 deletions
diff --git a/src/core/SkTypeface.cpp b/src/core/SkTypeface.cpp index a59075b908..6b1e3618c6 100644 --- a/src/core/SkTypeface.cpp +++ b/src/core/SkTypeface.cpp @@ -45,6 +45,9 @@ protected: SkEmptyTypeface() : SkTypeface(SkFontStyle(), true) { } SkStreamAsset* onOpenStream(int* ttcIndex) const override { return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + return sk_ref_sp(this); + } SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&, const SkDescriptor*) const override { return nullptr; diff --git a/src/core/SkTypeface_remote.h b/src/core/SkTypeface_remote.h index f4d3f73e2b..47a68fd08d 100644 --- a/src/core/SkTypeface_remote.h +++ b/src/core/SkTypeface_remote.h @@ -73,6 +73,10 @@ protected: SK_ABORT("Should never be called."); return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + SK_ABORT("Should never be called."); + return nullptr; + } int onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate coordinates[], int coordinateCount) const override { SK_ABORT("Should never be called."); diff --git a/src/ports/SkFontHost_win.cpp b/src/ports/SkFontHost_win.cpp index a9c0afcf28..264ae9226d 100644 --- a/src/ports/SkFontHost_win.cpp +++ b/src/ports/SkFontHost_win.cpp @@ -259,6 +259,7 @@ public: protected: SkStreamAsset* onOpenStream(int* ttcIndex) const override; + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override; SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&, const SkDescriptor*) const override; void onFilterRec(SkScalerContextRec*) const override; @@ -1966,6 +1967,10 @@ SkStreamAsset* LogFontTypeface::onOpenStream(int* ttcIndex) const { return stream; } +sk_sp<SkTypeface> LogFontTypeface::onMakeClone(const SkFontArguments& args) const { + return sk_ref_sp(this); +} + static void bmpCharsToGlyphs(HDC hdc, const WCHAR* bmpChars, int count, uint16_t* glyphs, bool Ox1FHack) { diff --git a/tests/FontMgrTest.cpp b/tests/FontMgrTest.cpp index 17a60bbd79..4abbd19fb9 100644 --- a/tests/FontMgrTest.cpp +++ b/tests/FontMgrTest.cpp @@ -128,6 +128,9 @@ static void test_matchStyleCSS3(skiatest::Reporter* reporter) { TestTypeface(const SkFontStyle& fontStyle) : SkTypeface(fontStyle, false){} protected: SkStreamAsset* onOpenStream(int* ttcIndex) const override { return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + return sk_ref_sp(this); + } SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&, const SkDescriptor*) const override { return nullptr; diff --git a/tests/TypefaceTest.cpp b/tests/TypefaceTest.cpp index f0253ef08f..757f3a5e44 100644 --- a/tests/TypefaceTest.cpp +++ b/tests/TypefaceTest.cpp @@ -235,6 +235,9 @@ protected: EmptyTypeface() : SkTypeface(SkFontStyle(), true) { } SkStreamAsset* onOpenStream(int* ttcIndex) const override { return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + return sk_ref_sp(this); + } SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&, const SkDescriptor*) const override { return nullptr; diff --git a/tools/fonts/SkRandomScalerContext.cpp b/tools/fonts/SkRandomScalerContext.cpp index 9379759ff0..c7cfbff9c3 100644 --- a/tools/fonts/SkRandomScalerContext.cpp +++ b/tools/fonts/SkRandomScalerContext.cpp @@ -176,6 +176,14 @@ SkStreamAsset* SkRandomTypeface::onOpenStream(int* ttcIndex) const { return fProxy->openStream(ttcIndex); } +sk_sp<SkTypeface> SkRandomTypeface::onMakeClone(const SkFontArguments& args) const { + sk_sp<SkTypeface> proxy = fProxy->makeClone(args); + if (!proxy) { + return nullptr; + } + return sk_make_sp<SkRandomTypeface>(proxy, fPaint, fFakeIt); +} + void SkRandomTypeface::onGetFontDescriptor(SkFontDescriptor* desc, bool* isLocal) const { // TODO: anything that uses this typeface isn't correctly serializable, since this typeface // cannot be deserialized. diff --git a/tools/fonts/SkRandomScalerContext.h b/tools/fonts/SkRandomScalerContext.h index 5dbdac68b8..8eb8b99f52 100644 --- a/tools/fonts/SkRandomScalerContext.h +++ b/tools/fonts/SkRandomScalerContext.h @@ -30,6 +30,7 @@ protected: void getGlyphToUnicodeMap(SkUnichar*) const override; std::unique_ptr<SkAdvancedTypefaceMetrics> onGetAdvancedMetrics() const override; SkStreamAsset* onOpenStream(int* ttcIndex) const override; + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override; void onGetFontDescriptor(SkFontDescriptor*, bool* isLocal) const override; int onCharsToGlyphs(const void* chars, Encoding encoding, diff --git a/tools/fonts/SkTestSVGTypeface.h b/tools/fonts/SkTestSVGTypeface.h index 249cd8bfc1..2275c678a5 100644 --- a/tools/fonts/SkTestSVGTypeface.h +++ b/tools/fonts/SkTestSVGTypeface.h @@ -84,6 +84,10 @@ protected: return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + return sk_ref_sp(this); + } + void onGetFontDescriptor(SkFontDescriptor* desc, bool* isLocal) const override; int onCharsToGlyphs(const void* chars, Encoding encoding, diff --git a/tools/fonts/SkTestTypeface.h b/tools/fonts/SkTestTypeface.h index 205d82c30f..e5ca64ff9a 100644 --- a/tools/fonts/SkTestTypeface.h +++ b/tools/fonts/SkTestTypeface.h @@ -78,6 +78,10 @@ protected: return nullptr; } + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override { + return sk_ref_sp(this); + } + void onGetFontDescriptor(SkFontDescriptor* desc, bool* isLocal) const override; int onCharsToGlyphs(const void* chars, Encoding encoding, |