aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkFontMgr.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-09-25 13:21:45 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-25 19:45:09 +0000
commit4bf296be2821d2bdd0afabae9fdfe18e7e9b59cb (patch)
treeada1341d6943d4e8b91b5d9da331ac82873c3677 /src/core/SkFontMgr.cpp
parentd6c04d9a05c1b4066c09083a673d7d3cf61a3aa6 (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.cpp124
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;