diff options
author | Mike Reed <reed@google.com> | 2017-09-25 13:21:45 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-09-25 19:45:09 +0000 |
commit | 4bf296be2821d2bdd0afabae9fdfe18e7e9b59cb (patch) | |
tree | ada1341d6943d4e8b91b5d9da331ac82873c3677 /src/core/SkFontMgr.cpp | |
parent | d6c04d9a05c1b4066c09083a673d7d3cf61a3aa6 (diff) |
migrate to sk_sp for SkFontMgr API
Bug: skia:
Change-Id: I1bf2a13537f67938cdc9956080065d10ea0bd1d8
Reviewed-on: https://skia-review.googlesource.com/48740
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@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; |