Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp

Issue 2290903002: Change (Pass)RefPtr<SkXxx> into sk_sp<SkXxx>. (Closed)
Patch Set: Rebasing... Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. 2 * Copyright (c) 2006, 2007, 2008, 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "wtf/Assertions.h" 43 #include "wtf/Assertions.h"
44 #include "wtf/PtrUtil.h" 44 #include "wtf/PtrUtil.h"
45 #include "wtf/text/AtomicString.h" 45 #include "wtf/text/AtomicString.h"
46 #include "wtf/text/CString.h" 46 #include "wtf/text/CString.h"
47 #include <memory> 47 #include <memory>
48 #include <unicode/locid.h> 48 #include <unicode/locid.h>
49 49
50 #if !OS(WIN) && !OS(ANDROID) 50 #if !OS(WIN) && !OS(ANDROID)
51 #include "SkFontConfigInterface.h" 51 #include "SkFontConfigInterface.h"
52 52
53 static PassRefPtr<SkTypeface> typefaceForFontconfigInterfaceIdAndTtcIndex(int fo ntconfigInterfaceId, int ttcIndex) 53 static sk_sp<SkTypeface> typefaceForFontconfigInterfaceIdAndTtcIndex(int fontcon figInterfaceId, int ttcIndex)
54 { 54 {
55 SkAutoTUnref<SkFontConfigInterface> fci(SkFontConfigInterface::RefGlobal()); 55 SkAutoTUnref<SkFontConfigInterface> fci(SkFontConfigInterface::RefGlobal());
56 SkFontConfigInterface::FontIdentity fontIdentity; 56 SkFontConfigInterface::FontIdentity fontIdentity;
57 fontIdentity.fID = fontconfigInterfaceId; 57 fontIdentity.fID = fontconfigInterfaceId;
58 fontIdentity.fTTCIndex = ttcIndex; 58 fontIdentity.fTTCIndex = ttcIndex;
59 return blink::fromSkSp(fci->makeTypeface(fontIdentity)); 59 return fci->makeTypeface(fontIdentity);
60 } 60 }
61 #endif 61 #endif
62 62
63 namespace blink { 63 namespace blink {
64 64
65 #if OS(ANDROID) || OS(LINUX) 65 #if OS(ANDROID) || OS(LINUX)
66 // Android special locale for retrieving the color emoji font 66 // Android special locale for retrieving the color emoji font
67 // based on the proposed changes in UTR #51 for introducing 67 // based on the proposed changes in UTR #51 for introducing
68 // an Emoji script code: 68 // an Emoji script code:
69 // http://www.unicode.org/reports/tr51/proposed.html#Emoji_Script 69 // http://www.unicode.org/reports/tr51/proposed.html#Emoji_Script
(...skipping 14 matching lines...) Expand all
84 // Skia expects the highest array index to be the first priority. 84 // Skia expects the highest array index to be the first priority.
85 const LayoutLocale* contentLocale = fontDescription.locale(); 85 const LayoutLocale* contentLocale = fontDescription.locale();
86 if (const LayoutLocale* hanLocale = LayoutLocale::localeForHan(contentLocale )) 86 if (const LayoutLocale* hanLocale = LayoutLocale::localeForHan(contentLocale ))
87 bcp47Locales[localeCount++] = hanLocale->localeForHanForSkFontMgr(); 87 bcp47Locales[localeCount++] = hanLocale->localeForHanForSkFontMgr();
88 bcp47Locales[localeCount++] = LayoutLocale::getDefault().localeForSkFontMgr( ); 88 bcp47Locales[localeCount++] = LayoutLocale::getDefault().localeForSkFontMgr( );
89 if (contentLocale) 89 if (contentLocale)
90 bcp47Locales[localeCount++] = contentLocale->localeForSkFontMgr(); 90 bcp47Locales[localeCount++] = contentLocale->localeForSkFontMgr();
91 if (fallbackPriority == FontFallbackPriority::EmojiEmoji) 91 if (fallbackPriority == FontFallbackPriority::EmojiEmoji)
92 bcp47Locales[localeCount++] = kAndroidColorEmojiLocale; 92 bcp47Locales[localeCount++] = kAndroidColorEmojiLocale;
93 SECURITY_DCHECK(localeCount <= kMaxLocales); 93 SECURITY_DCHECK(localeCount <= kMaxLocales);
94 RefPtr<SkTypeface> typeface = adoptRef(fm->matchFamilyStyleCharacter(0, SkFo ntStyle(), bcp47Locales, localeCount, c)); 94 sk_sp<SkTypeface> typeface(fm->matchFamilyStyleCharacter(0, SkFontStyle(), b cp47Locales, localeCount, c));
95 if (!typeface) 95 if (!typeface)
96 return emptyAtom; 96 return emptyAtom;
97 97
98 SkString skiaFamilyName; 98 SkString skiaFamilyName;
99 typeface->getFamilyName(&skiaFamilyName); 99 typeface->getFamilyName(&skiaFamilyName);
100 return skiaFamilyName.c_str(); 100 return skiaFamilyName.c_str();
101 } 101 }
102 #endif 102 #endif
103 103
104 void FontCache::platformInit() 104 void FontCache::platformInit()
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 if (!fontPlatformData) { 147 if (!fontPlatformData) {
148 DEFINE_STATIC_LOCAL(const FontFaceCreationParams, mssansserifCreationPar ams, (AtomicString("Microsoft Sans Serif"))); 148 DEFINE_STATIC_LOCAL(const FontFaceCreationParams, mssansserifCreationPar ams, (AtomicString("Microsoft Sans Serif")));
149 fontPlatformData = getFontPlatformData(description, mssansserifCreationP arams); 149 fontPlatformData = getFontPlatformData(description, mssansserifCreationP arams);
150 } 150 }
151 #endif 151 #endif
152 152
153 ASSERT(fontPlatformData); 153 ASSERT(fontPlatformData);
154 return fontDataFromFontPlatformData(fontPlatformData, shouldRetain); 154 return fontDataFromFontPlatformData(fontPlatformData, shouldRetain);
155 } 155 }
156 156
157 PassRefPtr<SkTypeface> FontCache::createTypeface(const FontDescription& fontDesc ription, const FontFaceCreationParams& creationParams, CString& name) 157 sk_sp<SkTypeface> FontCache::createTypeface(const FontDescription& fontDescripti on, const FontFaceCreationParams& creationParams, CString& name)
158 { 158 {
159 #if !OS(WIN) && !OS(ANDROID) 159 #if !OS(WIN) && !OS(ANDROID)
160 if (creationParams.creationType() == CreateFontByFciIdAndTtcIndex) { 160 if (creationParams.creationType() == CreateFontByFciIdAndTtcIndex) {
161 if (Platform::current()->sandboxSupport()) 161 if (Platform::current()->sandboxSupport())
162 return typefaceForFontconfigInterfaceIdAndTtcIndex(creationParams.fo ntconfigInterfaceId(), creationParams.ttcIndex()); 162 return typefaceForFontconfigInterfaceIdAndTtcIndex(creationParams.fo ntconfigInterfaceId(), creationParams.ttcIndex());
163 return fromSkSp(SkTypeface::MakeFromFile(creationParams.filename().data( ), creationParams.ttcIndex())); 163 return SkTypeface::MakeFromFile(creationParams.filename().data(), creati onParams.ttcIndex());
164 } 164 }
165 #endif 165 #endif
166 166
167 AtomicString family = creationParams.family(); 167 AtomicString family = creationParams.family();
168 // If we're creating a fallback font (e.g. "-webkit-monospace"), convert the name into 168 // If we're creating a fallback font (e.g. "-webkit-monospace"), convert the name into
169 // the fallback name (like "monospace") that fontconfig understands. 169 // the fallback name (like "monospace") that fontconfig understands.
170 if (!family.length() || family.startsWith("-webkit-")) { 170 if (!family.length() || family.startsWith("-webkit-")) {
171 name = getFallbackFontFamily(fontDescription).getString().utf8(); 171 name = getFallbackFontFamily(fontDescription).getString().utf8();
172 } else { 172 } else {
173 // convert the name to utf8 173 // convert the name to utf8
174 name = family.utf8(); 174 name = family.utf8();
175 } 175 }
176 176
177 #if OS(WIN) 177 #if OS(WIN)
178 if (s_sideloadedFonts) { 178 if (s_sideloadedFonts) {
179 HashMap<String, RefPtr<SkTypeface>>::iterator sideloadedFont = 179 HashMap<String, sk_sp<SkTypeface>>::iterator sideloadedFont =
180 s_sideloadedFonts->find(name.data()); 180 s_sideloadedFonts->find(name.data());
181 if (sideloadedFont != s_sideloadedFonts->end()) 181 if (sideloadedFont != s_sideloadedFonts->end())
182 return sideloadedFont->value; 182 return sideloadedFont->value;
183 } 183 }
184 #endif 184 #endif
185 185
186 #if OS(LINUX) || OS(WIN) 186 #if OS(LINUX) || OS(WIN)
187 // On linux if the fontManager has been overridden then we should be calling the embedder 187 // On linux if the fontManager has been overridden then we should be calling the embedder
188 // provided font Manager rather than calling SkTypeface::CreateFromName whic h may redirect the 188 // provided font Manager rather than calling SkTypeface::CreateFromName whic h may redirect the
189 // call to the default font Manager. 189 // call to the default font Manager.
190 // On Windows the font manager is always present. 190 // On Windows the font manager is always present.
191 if (m_fontManager) 191 if (m_fontManager)
192 return adoptRef(m_fontManager->matchFamilyStyle(name.data(), fontDescrip tion.skiaFontStyle())); 192 return sk_sp<SkTypeface>(m_fontManager->matchFamilyStyle(name.data(), fo ntDescription.skiaFontStyle()));
193 #endif 193 #endif
194 194
195 // FIXME: Use m_fontManager, matchFamilyStyle instead of 195 // FIXME: Use m_fontManager, matchFamilyStyle instead of
196 // legacyCreateTypeface on all platforms. 196 // legacyCreateTypeface on all platforms.
197 RefPtr<SkFontMgr> fm = adoptRef(SkFontMgr::RefDefault()); 197 sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
198 return adoptRef(fm->legacyCreateTypeface(name.data(), 198 return sk_sp<SkTypeface>(fm->legacyCreateTypeface(name.data(),
199 fontDescription.skiaFontStyle())); 199 fontDescription.skiaFontStyle()));
200 } 200 }
201 201
202 #if !OS(WIN) 202 #if !OS(WIN)
203 std::unique_ptr<FontPlatformData> FontCache::createFontPlatformData(const FontDe scription& fontDescription, 203 std::unique_ptr<FontPlatformData> FontCache::createFontPlatformData(const FontDe scription& fontDescription,
204 const FontFaceCreationParams& creationParams, float fontSize) 204 const FontFaceCreationParams& creationParams, float fontSize)
205 { 205 {
206 CString name; 206 CString name;
207 RefPtr<SkTypeface> tf(createTypeface(fontDescription, creationParams, name)) ; 207 sk_sp<SkTypeface> tf = createTypeface(fontDescription, creationParams, name) ;
208 if (!tf) 208 if (!tf)
209 return nullptr; 209 return nullptr;
210 210
211 return wrapUnique(new FontPlatformData(tf, 211 return wrapUnique(new FontPlatformData(tf,
212 name.data(), 212 name.data(),
213 fontSize, 213 fontSize,
214 (numericFontWeight(fontDescription.weight()) > 200 + tf->fontStyle().wei ght()) || fontDescription.isSyntheticBold(), 214 (numericFontWeight(fontDescription.weight()) > 200 + tf->fontStyle().wei ght()) || fontDescription.isSyntheticBold(),
215 ((fontDescription.style() == FontStyleItalic || fontDescription.style() == FontStyleOblique) && !tf->isItalic()) || fontDescription.isSyntheticItalic(), 215 ((fontDescription.style() == FontStyleItalic || fontDescription.style() == FontStyleOblique) && !tf->isItalic()) || fontDescription.isSyntheticItalic(),
216 fontDescription.orientation())); 216 fontDescription.orientation()));
217 } 217 }
218 #endif // !OS(WIN) 218 #endif // !OS(WIN)
219 219
220 } // namespace blink 220 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698