diff options
author | Mike Reed <reed@google.com> | 2017-09-26 09:46:08 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-09-26 14:05:18 +0000 |
commit | 592273965a7fc7fc403252e420d15f6555b8f25d (patch) | |
tree | 9d5f6fa74228b81278bc97af1dc78d9587d63c08 /src/core/SkFontMgr.cpp | |
parent | f6f7cf60985d8e109cc136f25e2a3c3383ca05ea (diff) |
Revert "Revert "migrate to sk_sp for SkFontMgr API""
This reverts commit f40ae1a4b5365620463bd63b5140bd3fc78894a1.
Bug: skia:
Change-Id: I752606de92ea405d6e50219c98030409b00a2841
Reviewed-on: https://skia-review.googlesource.com/51160
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core/SkFontMgr.cpp')
-rw-r--r-- | src/core/SkFontMgr.cpp | 124 |
1 files changed, 90 insertions, 34 deletions
diff --git a/src/core/SkFontMgr.cpp b/src/core/SkFontMgr.cpp index 8ce0b39682..4f18dd25f4 100644 --- a/src/core/SkFontMgr.cpp +++ b/src/core/SkFontMgr.cpp @@ -49,32 +49,37 @@ protected: return SkFontStyleSet::CreateEmpty(); } - virtual SkTypeface* onMatchFamilyStyle(const char[], - const SkFontStyle&) const override { + SkTypeface* onMatchFamilyStyle(const char[], const SkFontStyle&) const override { return nullptr; } - virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], - const SkFontStyle& style, - const char* bcp47[], - int bcp47Count, - SkUnichar character) const override { + SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], + const SkFontStyle& style, + const char* bcp47[], + int bcp47Count, + SkUnichar character) const override { return nullptr; } - virtual SkTypeface* onMatchFaceStyle(const SkTypeface*, - const SkFontStyle&) const override { + SkTypeface* onMatchFaceStyle(const SkTypeface*, const SkFontStyle&) const override { return nullptr; } - SkTypeface* onCreateFromData(SkData*, int) const override { + + sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int) const override { + return nullptr; + } + sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>, int) const override { + return nullptr; + } + sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>, + const SkFontArguments&) const override { return nullptr; } - SkTypeface* onCreateFromStream(SkStreamAsset* stream, int) const override { - delete stream; + sk_sp<SkTypeface> onMakeFromFontData(std::unique_ptr<SkFontData>) const override { return nullptr; } - SkTypeface* onCreateFromFile(const char[], int) const override { + sk_sp<SkTypeface> onMakeFromFile(const char[], int) const override { return nullptr; } - SkTypeface* onLegacyCreateTypeface(const char [], SkFontStyle) const override { + sk_sp<SkTypeface> onLegacyMakeTypeface(const char [], SkFontStyle) const override { return nullptr; } }; @@ -118,54 +123,105 @@ SkTypeface* SkFontMgr::matchFaceStyle(const SkTypeface* face, return this->onMatchFaceStyle(face, fs); } -SkTypeface* SkFontMgr::createFromData(SkData* data, int ttcIndex) const { +sk_sp<SkTypeface> SkFontMgr::makeFromData(sk_sp<SkData> data, int ttcIndex) const { if (nullptr == data) { return nullptr; } - return this->onCreateFromData(data, ttcIndex); + return this->onMakeFromData(std::move(data), ttcIndex); } -SkTypeface* SkFontMgr::createFromStream(SkStreamAsset* stream, int ttcIndex) const { +sk_sp<SkTypeface> SkFontMgr::makeFromStream(std::unique_ptr<SkStreamAsset> stream, + int ttcIndex) const { if (nullptr == stream) { return nullptr; } - return this->onCreateFromStream(stream, ttcIndex); + return this->onMakeFromStreamIndex(std::move(stream), ttcIndex); } -SkTypeface* SkFontMgr::createFromStream(SkStreamAsset* stream, const SkFontArguments& args) const { +sk_sp<SkTypeface> SkFontMgr::makeFromStream(std::unique_ptr<SkStreamAsset> stream, + const SkFontArguments& args) const { if (nullptr == stream) { return nullptr; } - return this->onCreateFromStream(stream, args); + return this->onMakeFromStreamArgs(std::move(stream), args); } -SkTypeface* SkFontMgr::createFromFontData(std::unique_ptr<SkFontData> data) const { +sk_sp<SkTypeface> SkFontMgr::makeFromFontData(std::unique_ptr<SkFontData> data) const { if (nullptr == data) { return nullptr; } - return this->onCreateFromFontData(std::move(data)); + return this->onMakeFromFontData(std::move(data)); } -// This implementation is temporary until it can be made pure virtual. -SkTypeface* SkFontMgr::onCreateFromStream(SkStreamAsset* stream, const SkFontArguments& args) const{ - return this->createFromStream(stream, args.getCollectionIndex()); +sk_sp<SkTypeface> SkFontMgr::makeFromFile(const char path[], int ttcIndex) const { + if (nullptr == path) { + return nullptr; + } + return this->onMakeFromFile(path, ttcIndex); } -// This implementation is temporary until it can be made pure virtual. -SkTypeface* SkFontMgr::onCreateFromFontData(std::unique_ptr<SkFontData> data) const { - return this->createFromStream(data->detachStream().release(), data->getIndex()); +sk_sp<SkTypeface> SkFontMgr::legacyMakeTypeface(const char familyName[], SkFontStyle style) const { + return this->onLegacyMakeTypeface(familyName, style); } +#ifdef SK_SUPPORT_LEGACY_FONTMGR_API +SkTypeface* SkFontMgr::createFromData(SkData* data, int ttcIndex) const { + return this->makeFromData(sk_ref_sp(data), ttcIndex).release(); +} +SkTypeface* SkFontMgr::createFromStream(SkStreamAsset* strm, int ttcIndex) const { + return this->makeFromStream(std::unique_ptr<SkStreamAsset>(strm), ttcIndex).release(); +} +SkTypeface* SkFontMgr::createFromStream(SkStreamAsset* strm, const SkFontArguments& args) const { + return this->makeFromStream(std::unique_ptr<SkStreamAsset>(strm), args).release(); +} +SkTypeface* SkFontMgr::createFromFontData(std::unique_ptr<SkFontData> fd) const { + return this->makeFromFontData(std::move(fd)).release(); +} SkTypeface* SkFontMgr::createFromFile(const char path[], int ttcIndex) const { - if (nullptr == path) { - return nullptr; - } - return this->onCreateFromFile(path, ttcIndex); + return this->makeFromFile(path, ttcIndex).release(); } - SkTypeface* SkFontMgr::legacyCreateTypeface(const char familyName[], SkFontStyle style) const { - return this->onLegacyCreateTypeface(familyName, style); + return this->legacyMakeTypeface(familyName, style).release(); +} + +// These implementations are temporary until they can be made pure virtual. +SkTypeface* SkFontMgr::onCreateFromStream(SkStreamAsset* stream, const SkFontArguments& args) const { + return this->makeFromStream(std::unique_ptr<SkStreamAsset>(stream), + args.getCollectionIndex()).release(); +} +SkTypeface* SkFontMgr::onCreateFromFontData(std::unique_ptr<SkFontData> data) const { + return this->makeFromStream(data->detachStream(), data->getIndex()).release(); +} + +sk_sp<SkTypeface> SkFontMgr::onMakeFromData(sk_sp<SkData> data, int ttcIndex) const { + return sk_sp<SkTypeface>(this->onCreateFromData(data.get(), ttcIndex)); +} +sk_sp<SkTypeface> SkFontMgr::onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset> strm, + int ttcIndex) const { + return sk_sp<SkTypeface>(this->onCreateFromStream(strm.release(), ttcIndex)); +} +sk_sp<SkTypeface> SkFontMgr::onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset> strm, + const SkFontArguments& args) const { + return sk_sp<SkTypeface>(onCreateFromStream(strm.release(), args)); +} +sk_sp<SkTypeface> SkFontMgr::onMakeFromFontData(std::unique_ptr<SkFontData> fd) const { + return sk_sp<SkTypeface>(this->onCreateFromFontData(std::move(fd))); +} +sk_sp<SkTypeface> SkFontMgr::onMakeFromFile(const char path[], int ttcIndex) const { + return sk_sp<SkTypeface>(this->onCreateFromFile(path, ttcIndex)); +} +sk_sp<SkTypeface> SkFontMgr::onLegacyMakeTypeface(const char familyName[], SkFontStyle style) const { + return sk_sp<SkTypeface>(this->onLegacyCreateTypeface(familyName, style)); +} +#else +sk_sp<SkTypeface> SkFontMgr::onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset> stream, + const SkFontArguments& args) const { + return this->makeFromStream(std::move(stream), args.getCollectionIndex()); +} +sk_sp<SkTypeface> SkFontMgr::onMakeFromFontData(std::unique_ptr<SkFontData> data) const { + return this->makeFromStream(data->detachStream(), data->getIndex()); } +#endif sk_sp<SkFontMgr> SkFontMgr::RefDefault() { static SkOnce once; |