aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkFontMgr.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-09-26 09:46:08 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-26 14:05:18 +0000
commit592273965a7fc7fc403252e420d15f6555b8f25d (patch)
tree9d5f6fa74228b81278bc97af1dc78d9587d63c08 /src/core/SkFontMgr.cpp
parentf6f7cf60985d8e109cc136f25e2a3c3383ca05ea (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.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;