aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/SkFontHost_mac.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/ports/SkFontHost_mac.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/ports/SkFontHost_mac.cpp')
-rw-r--r--src/ports/SkFontHost_mac.cpp51
1 files changed, 26 insertions, 25 deletions
diff --git a/src/ports/SkFontHost_mac.cpp b/src/ports/SkFontHost_mac.cpp
index d8bac13cdd..d19ac5b6b4 100644
--- a/src/ports/SkFontHost_mac.cpp
+++ b/src/ports/SkFontHost_mac.cpp
@@ -545,15 +545,15 @@ static bool find_by_CTFontRef(SkTypeface* cached, void* context) {
}
/** Creates a typeface, searching the cache if isLocalStream is false. */
-static SkTypeface* create_from_CTFontRef(UniqueCFRef<CTFontRef> font,
- UniqueCFRef<CFTypeRef> resource,
- bool isLocalStream) {
+static sk_sp<SkTypeface> create_from_CTFontRef(UniqueCFRef<CTFontRef> font,
+ UniqueCFRef<CFTypeRef> resource,
+ bool isLocalStream) {
SkASSERT(font);
if (!isLocalStream) {
SkTypeface* face = SkTypefaceCache::FindByProcAndRef(find_by_CTFontRef, (void*)font.get());
if (face) {
- return face;
+ return sk_sp<SkTypeface>(face);
}
}
@@ -567,11 +567,11 @@ static SkTypeface* create_from_CTFontRef(UniqueCFRef<CTFontRef> font,
if (!isLocalStream) {
SkTypefaceCache::Add(face);
}
- return face;
+ return sk_sp<SkTypeface>(face);
}
/** Creates a typeface from a descriptor, searching the cache. */
-static SkTypeface* create_from_desc(CTFontDescriptorRef desc) {
+static sk_sp<SkTypeface> create_from_desc(CTFontDescriptorRef desc) {
UniqueCFRef<CTFontRef> ctFont(CTFontCreateWithFontDescriptor(desc, 0, nullptr));
if (!ctFont) {
return nullptr;
@@ -646,7 +646,7 @@ static UniqueCFRef<CTFontDescriptorRef> create_descriptor(const char familyName[
}
/** Creates a typeface from a name, searching the cache. */
-static SkTypeface* create_from_name(const char familyName[], const SkFontStyle& style) {
+static sk_sp<SkTypeface> create_from_name(const char familyName[], const SkFontStyle& style) {
UniqueCFRef<CTFontDescriptorRef> desc = create_descriptor(familyName, style);
if (!desc) {
return nullptr;
@@ -666,7 +666,7 @@ SkTypeface* SkCreateTypefaceFromCTFont(CTFontRef font, CFTypeRef resource) {
}
return create_from_CTFontRef(UniqueCFRef<CTFontRef>(font),
UniqueCFRef<CFTypeRef>(resource),
- false);
+ false).release();
}
static const char* map_css_names(const char* name) {
@@ -1394,7 +1394,8 @@ void SkScalerContext_Mac::CTPathElement(void *info, const CGPathElement *element
// Returns nullptr on failure
// Call must still manage its ownership of provider
-static SkTypeface* create_from_dataProvider(UniqueCFRef<CGDataProviderRef> provider, int ttcIndex) {
+static sk_sp<SkTypeface> create_from_dataProvider(UniqueCFRef<CGDataProviderRef> provider,
+ int ttcIndex) {
if (ttcIndex != 0) {
return nullptr;
}
@@ -2262,14 +2263,14 @@ public:
SkASSERT((unsigned)index < (unsigned)CFArrayGetCount(fArray.get()));
CTFontDescriptorRef desc = (CTFontDescriptorRef)CFArrayGetValueAtIndex(fArray.get(), index);
- return create_from_desc(desc);
+ return create_from_desc(desc).release();
}
SkTypeface* matchStyle(const SkFontStyle& pattern) override {
if (0 == fCount) {
return nullptr;
}
- return create_from_desc(findMatchingDesc(pattern));
+ return create_from_desc(findMatchingDesc(pattern)).release();
}
private:
@@ -2365,7 +2366,7 @@ protected:
SkTypeface* onMatchFamilyStyle(const char familyName[],
const SkFontStyle& style) const override {
UniqueCFRef<CTFontDescriptorRef> desc = create_descriptor(familyName, style);
- return create_from_desc(desc.get());
+ return create_from_desc(desc.get()).release();
}
SkTypeface* onMatchFamilyStyleCharacter(const char familyName[],
@@ -2388,7 +2389,7 @@ protected:
CFRange range = CFRangeMake(0, CFStringGetLength(string.get())); // in UniChar units.
UniqueCFRef<CTFontRef> fallbackFont(
CTFontCreateForString(currentFont.get(), string.get(), range));
- return create_from_CTFontRef(std::move(fallbackFont), nullptr, false);
+ return create_from_CTFontRef(std::move(fallbackFont), nullptr, false).release();
}
SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
@@ -2396,16 +2397,16 @@ protected:
return nullptr;
}
- SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override {
- UniqueCFRef<CGDataProviderRef> pr(SkCreateDataProviderFromData(sk_ref_sp(data)));
+ sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData> data, int ttcIndex) const override {
+ UniqueCFRef<CGDataProviderRef> pr(SkCreateDataProviderFromData(std::move(data)));
if (!pr) {
return nullptr;
}
return create_from_dataProvider(std::move(pr), ttcIndex);
}
- SkTypeface* onCreateFromStream(SkStreamAsset* bareStream, int ttcIndex) const override {
- std::unique_ptr<SkStreamAsset> stream(bareStream);
+ sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset> stream,
+ int ttcIndex) const override {
UniqueCFRef<CGDataProviderRef> pr(SkCreateDataProviderFromStream(std::move(stream)));
if (!pr) {
return nullptr;
@@ -2501,8 +2502,8 @@ protected:
}
return std::move(dict);
}
- SkTypeface* onCreateFromStream(SkStreamAsset* bs, const SkFontArguments& args) const override {
- std::unique_ptr<SkStreamAsset> s(bs);
+ sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset> s,
+ const SkFontArguments& args) const override {
if (args.getCollectionIndex() != 0) {
return nullptr;
}
@@ -2588,7 +2589,7 @@ protected:
}
return std::move(dict);
}
- SkTypeface* onCreateFromFontData(std::unique_ptr<SkFontData> fontData) const override {
+ sk_sp<SkTypeface> onMakeFromFontData(std::unique_ptr<SkFontData> fontData) const override {
if (fontData->getIndex() != 0) {
return nullptr;
}
@@ -2621,7 +2622,7 @@ protected:
return create_from_CTFontRef(std::move(ct), std::move(cg), true);
}
- SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override {
+ sk_sp<SkTypeface> onMakeFromFile(const char path[], int ttcIndex) const override {
UniqueCFRef<CGDataProviderRef> pr(CGDataProviderCreateWithFilename(path));
if (!pr) {
return nullptr;
@@ -2629,12 +2630,12 @@ protected:
return create_from_dataProvider(std::move(pr), ttcIndex);
}
- SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle style) const override {
+ sk_sp<SkTypeface> onLegacyMakeTypeface(const char familyName[], SkFontStyle style) const override {
if (familyName) {
familyName = map_css_names(familyName);
}
- SkTypeface* face = create_from_name(familyName, style);
+ sk_sp<SkTypeface> face = create_from_name(familyName, style);
if (face) {
return face;
}
@@ -2643,9 +2644,9 @@ protected:
static SkOnce lookupDefault;
static const char FONT_DEFAULT_NAME[] = "Lucida Sans";
lookupDefault([]{
- gDefaultFace = create_from_name(FONT_DEFAULT_NAME, SkFontStyle());
+ gDefaultFace = create_from_name(FONT_DEFAULT_NAME, SkFontStyle()).release();
});
- return SkSafeRef(gDefaultFace);
+ return sk_ref_sp(gDefaultFace);
}
};