| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkDWrite.h" | 8 #include "SkDWrite.h" |
| 9 #include "SkDWriteFontFileStream.h" | 9 #include "SkDWriteFontFileStream.h" |
| 10 #include "SkFontMgr.h" | 10 #include "SkFontMgr.h" |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 SkFontMgr_DirectWrite(IDWriteFactory* factory, IDWriteFontCollection* fontCo
llection, | 257 SkFontMgr_DirectWrite(IDWriteFactory* factory, IDWriteFontCollection* fontCo
llection, |
| 258 WCHAR* localeName, int localeNameLength) | 258 WCHAR* localeName, int localeNameLength) |
| 259 : fFactory(SkRefComPtr(factory)) | 259 : fFactory(SkRefComPtr(factory)) |
| 260 , fFontCollection(SkRefComPtr(fontCollection)) | 260 , fFontCollection(SkRefComPtr(fontCollection)) |
| 261 , fLocaleName(localeNameLength) | 261 , fLocaleName(localeNameLength) |
| 262 { | 262 { |
| 263 memcpy(fLocaleName.get(), localeName, localeNameLength * sizeof(WCHAR)); | 263 memcpy(fLocaleName.get(), localeName, localeNameLength * sizeof(WCHAR)); |
| 264 } | 264 } |
| 265 | 265 |
| 266 protected: | 266 protected: |
| 267 virtual int onCountFamilies() const SK_OVERRIDE; | 267 int onCountFamilies() const SK_OVERRIDE; |
| 268 virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERR
IDE; | 268 void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE; |
| 269 virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE; | 269 SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE; |
| 270 virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVER
RIDE; | 270 SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVERRIDE; |
| 271 virtual SkTypeface* onMatchFamilyStyle(const char familyName[], | 271 virtual SkTypeface* onMatchFamilyStyle(const char familyName[], |
| 272 const SkFontStyle& fontstyle) const S
K_OVERRIDE; | 272 const SkFontStyle& fontstyle) const S
K_OVERRIDE; |
| 273 virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], con
st SkFontStyle&, | 273 virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], con
st SkFontStyle&, |
| 274 const char* bcp47[], int bcp
47Count, | 274 const char* bcp47[], int bcp
47Count, |
| 275 SkUnichar character) const S
K_OVERRIDE; | 275 SkUnichar character) const S
K_OVERRIDE; |
| 276 virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember, | 276 virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember, |
| 277 const SkFontStyle& fontstyle) const SK_
OVERRIDE; | 277 const SkFontStyle& fontstyle) const SK_
OVERRIDE; |
| 278 virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const
SK_OVERRIDE; | 278 SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVER
RIDE; |
| 279 virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OV
ERRIDE; | 279 SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE; |
| 280 virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const
SK_OVERRIDE; | 280 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERR
IDE; |
| 281 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], | 281 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], |
| 282 unsigned styleBits) const SK_OVER
RIDE; | 282 unsigned styleBits) const SK_OVER
RIDE; |
| 283 | 283 |
| 284 private: | 284 private: |
| 285 HRESULT getByFamilyName(const WCHAR familyName[], IDWriteFontFamily** fontFa
mily) const; | 285 HRESULT getByFamilyName(const WCHAR familyName[], IDWriteFontFamily** fontFa
mily) const; |
| 286 HRESULT getDefaultFontFamily(IDWriteFontFamily** fontFamily) const; | 286 HRESULT getDefaultFontFamily(IDWriteFontFamily** fontFamily) const; |
| 287 | 287 |
| 288 /** Creates a typeface using a typeface cache. */ | 288 /** Creates a typeface using a typeface cache. */ |
| 289 SkTypeface* createTypefaceFromDWriteFont(IDWriteFontFace* fontFace, | 289 SkTypeface* createTypefaceFromDWriteFont(IDWriteFontFace* fontFace, |
| 290 IDWriteFont* font, | 290 IDWriteFont* font, |
| 291 IDWriteFontFamily* fontFamily) cons
t; | 291 IDWriteFontFamily* fontFamily) cons
t; |
| 292 | 292 |
| 293 SkTScopedComPtr<IDWriteFactory> fFactory; | 293 SkTScopedComPtr<IDWriteFactory> fFactory; |
| 294 SkTScopedComPtr<IDWriteFontCollection> fFontCollection; | 294 SkTScopedComPtr<IDWriteFontCollection> fFontCollection; |
| 295 SkSMallocWCHAR fLocaleName; | 295 SkSMallocWCHAR fLocaleName; |
| 296 mutable SkMutex fTFCacheMutex; | 296 mutable SkMutex fTFCacheMutex; |
| 297 mutable SkTypefaceCache fTFCache; | 297 mutable SkTypefaceCache fTFCache; |
| 298 | 298 |
| 299 friend class SkFontStyleSet_DirectWrite; | 299 friend class SkFontStyleSet_DirectWrite; |
| 300 }; | 300 }; |
| 301 | 301 |
| 302 class SkFontStyleSet_DirectWrite : public SkFontStyleSet { | 302 class SkFontStyleSet_DirectWrite : public SkFontStyleSet { |
| 303 public: | 303 public: |
| 304 SkFontStyleSet_DirectWrite(const SkFontMgr_DirectWrite* fontMgr, | 304 SkFontStyleSet_DirectWrite(const SkFontMgr_DirectWrite* fontMgr, |
| 305 IDWriteFontFamily* fontFamily) | 305 IDWriteFontFamily* fontFamily) |
| 306 : fFontMgr(SkRef(fontMgr)) | 306 : fFontMgr(SkRef(fontMgr)) |
| 307 , fFontFamily(SkRefComPtr(fontFamily)) | 307 , fFontFamily(SkRefComPtr(fontFamily)) |
| 308 { } | 308 { } |
| 309 | 309 |
| 310 virtual int count() SK_OVERRIDE; | 310 int count() SK_OVERRIDE; |
| 311 virtual void getStyle(int index, SkFontStyle* fs, SkString* styleName) SK_OV
ERRIDE; | 311 void getStyle(int index, SkFontStyle* fs, SkString* styleName) SK_OVERRIDE; |
| 312 virtual SkTypeface* createTypeface(int index) SK_OVERRIDE; | 312 SkTypeface* createTypeface(int index) SK_OVERRIDE; |
| 313 virtual SkTypeface* matchStyle(const SkFontStyle& pattern) SK_OVERRIDE; | 313 SkTypeface* matchStyle(const SkFontStyle& pattern) SK_OVERRIDE; |
| 314 | 314 |
| 315 private: | 315 private: |
| 316 SkAutoTUnref<const SkFontMgr_DirectWrite> fFontMgr; | 316 SkAutoTUnref<const SkFontMgr_DirectWrite> fFontMgr; |
| 317 SkTScopedComPtr<IDWriteFontFamily> fFontFamily; | 317 SkTScopedComPtr<IDWriteFontFamily> fFontFamily; |
| 318 }; | 318 }; |
| 319 | 319 |
| 320 static HRESULT are_same(IUnknown* a, IUnknown* b, bool& same) { | 320 static HRESULT are_same(IUnknown* a, IUnknown* b, bool& same) { |
| 321 SkTScopedComPtr<IUnknown> iunkA; | 321 SkTScopedComPtr<IUnknown> iunkA; |
| 322 HRM(a->QueryInterface(&iunkA), "Failed to QI<IUnknown> for a."); | 322 HRM(a->QueryInterface(&iunkA), "Failed to QI<IUnknown> for a."); |
| 323 | 323 |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 765 } | 765 } |
| 766 | 766 |
| 767 #include "SkFontMgr_indirect.h" | 767 #include "SkFontMgr_indirect.h" |
| 768 SK_API SkFontMgr* SkFontMgr_New_DirectWriteRenderer(SkRemotableFontMgr* proxy) { | 768 SK_API SkFontMgr* SkFontMgr_New_DirectWriteRenderer(SkRemotableFontMgr* proxy) { |
| 769 SkAutoTUnref<SkFontMgr> impl(SkFontMgr_New_DirectWrite()); | 769 SkAutoTUnref<SkFontMgr> impl(SkFontMgr_New_DirectWrite()); |
| 770 if (impl.get() == NULL) { | 770 if (impl.get() == NULL) { |
| 771 return NULL; | 771 return NULL; |
| 772 } | 772 } |
| 773 return SkNEW_ARGS(SkFontMgr_Indirect, (impl.get(), proxy)); | 773 return SkNEW_ARGS(SkFontMgr_Indirect, (impl.get(), proxy)); |
| 774 } | 774 } |
| OLD | NEW |