diff options
author | 2018-06-22 15:44:47 -0400 | |
---|---|---|
committer | 2018-06-25 14:40:45 +0000 | |
commit | 0ea256c4db3fa8a86839041b17aef59775b3b314 (patch) | |
tree | 53b09b2cfc10b26eb72adf644ca1fdf21b436d40 /src | |
parent | 6d36370c06fac5da22e6d7ea68b47ffee0d672aa (diff) |
Implement onMakeClone(const SkFontArguments& args) in classes: SkTypeface_Empty, SkTypeface_Stream, SkTypeface_File
Change-Id: I534cfc3439601f682d6b5a2fa023aef6b04d1653
Reviewed-on: https://skia-review.googlesource.com/137192
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/ports/SkFontMgr_custom.cpp | 34 | ||||
-rw-r--r-- | src/ports/SkFontMgr_custom.h | 3 | ||||
-rw-r--r-- | src/ports/SkFontMgr_fontconfig.cpp | 6 |
3 files changed, 40 insertions, 3 deletions
diff --git a/src/ports/SkFontMgr_custom.cpp b/src/ports/SkFontMgr_custom.cpp index 5b782abaef..708f4a6e67 100644 --- a/src/ports/SkFontMgr_custom.cpp +++ b/src/ports/SkFontMgr_custom.cpp @@ -50,6 +50,9 @@ SkTypeface_Empty::SkTypeface_Empty() : INHERITED(SkFontStyle(), false, true, SkS SkStreamAsset* SkTypeface_Empty::onOpenStream(int*) const { return nullptr; } +sk_sp<SkTypeface> SkTypeface_Empty::onMakeClone(const SkFontArguments& args) const { + return sk_ref_sp(this); +} SkTypeface_Stream::SkTypeface_Stream(std::unique_ptr<SkFontData> fontData, const SkFontStyle& style, bool isFixedPitch, bool sysFont, @@ -67,6 +70,21 @@ std::unique_ptr<SkFontData> SkTypeface_Stream::onMakeFontData() const { return skstd::make_unique<SkFontData>(*fData); } +sk_sp<SkTypeface> SkTypeface_Stream::onMakeClone(const SkFontArguments& args) const { + std::unique_ptr<SkFontData> data = this->cloneFontData(args); + if (!data) { + return nullptr; + } + + SkString familyName; + this->getFamilyName(&familyName); + + return sk_make_sp<SkTypeface_Stream>(std::move(data), + this->fontStyle(), + this->isFixedPitch(), + this->isSysFont(), + familyName); +} SkTypeface_File::SkTypeface_File(const SkFontStyle& style, bool isFixedPitch, bool sysFont, const SkString familyName, const char path[], int index) @@ -79,6 +97,22 @@ SkStreamAsset* SkTypeface_File::onOpenStream(int* ttcIndex) const { return SkStream::MakeFromFile(fPath.c_str()).release(); } +sk_sp<SkTypeface> SkTypeface_File::onMakeClone(const SkFontArguments& args) const { + std::unique_ptr<SkFontData> data = this->cloneFontData(args); + if (!data) { + return nullptr; + } + + SkString familyName; + this->getFamilyName(&familyName); + + return sk_make_sp<SkTypeface_Stream>(std::move(data), + this->fontStyle(), + this->isFixedPitch(), + this->isSysFont(), + familyName); +} + /////////////////////////////////////////////////////////////////////////////// SkFontStyleSet_Custom::SkFontStyleSet_Custom(const SkString familyName) : fFamilyName(familyName) {} diff --git a/src/ports/SkFontMgr_custom.h b/src/ports/SkFontMgr_custom.h index e204c0aba0..02bbf45c5a 100644 --- a/src/ports/SkFontMgr_custom.h +++ b/src/ports/SkFontMgr_custom.h @@ -50,6 +50,7 @@ public: protected: SkStreamAsset* onOpenStream(int*) const override; + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override; private: typedef SkTypeface_Custom INHERITED; @@ -65,6 +66,7 @@ public: protected: SkStreamAsset* onOpenStream(int* ttcIndex) const override; std::unique_ptr<SkFontData> onMakeFontData() const override; + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override; private: const std::unique_ptr<const SkFontData> fData; @@ -80,6 +82,7 @@ public: protected: SkStreamAsset* onOpenStream(int* ttcIndex) const override; + sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override; private: SkString fPath; diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp index e5aed18c60..79e8e0f175 100644 --- a/src/ports/SkFontMgr_fontconfig.cpp +++ b/src/ports/SkFontMgr_fontconfig.cpp @@ -531,11 +531,11 @@ public: return nullptr; } - SkString fFamilyName; - this->getFamilyName(&fFamilyName); + SkString familyName; + this->getFamilyName(&familyName); return sk_make_sp<SkTypeface_stream>(std::move(data), - fFamilyName, + familyName, this->fontStyle(), this->isFixedPitch()); } |