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

Side by Side Diff: src/ports/SkFontHost_mac.cpp

Issue 1873923002: Begin switch to SkFontStyle for legacy calls. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Dont update bzl file now. Created 4 years, 8 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
« no previous file with comments | « src/ports/SkFontHost_fontconfig.cpp ('k') | src/ports/SkFontHost_win.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 "SkTypes.h" // Keep this before any #ifdef ... 8 #include "SkTypes.h" // Keep this before any #ifdef ...
9 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) 9 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
10 10
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 if (!find_dict_float(dict, kCTFontSlantTrait, &slant)) { 413 if (!find_dict_float(dict, kCTFontSlantTrait, &slant)) {
414 slant = 0; 414 slant = 0;
415 } 415 }
416 416
417 return SkFontStyle(unit_weight_to_fontstyle(weight), 417 return SkFontStyle(unit_weight_to_fontstyle(weight),
418 unit_width_to_fontstyle(width), 418 unit_width_to_fontstyle(width),
419 slant ? SkFontStyle::kItalic_Slant 419 slant ? SkFontStyle::kItalic_Slant
420 : SkFontStyle::kUpright_Slant); 420 : SkFontStyle::kUpright_Slant);
421 } 421 }
422 422
423 static SkTypeface::Style computeStyleBits(CTFontRef font, bool* isFixedPitch) {
424 unsigned style = SkTypeface::kNormal;
425 CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(font);
426
427 if (traits & kCTFontBoldTrait) {
428 style |= SkTypeface::kBold;
429 }
430 if (traits & kCTFontItalicTrait) {
431 style |= SkTypeface::kItalic;
432 }
433 if (isFixedPitch) {
434 *isFixedPitch = (traits & kCTFontMonoSpaceTrait) != 0;
435 }
436 return (SkTypeface::Style)style;
437 }
438
439 #define WEIGHT_THRESHOLD ((SkFontStyle::kNormal_Weight + SkFontStyle::kBold_W eight)/2) 423 #define WEIGHT_THRESHOLD ((SkFontStyle::kNormal_Weight + SkFontStyle::kBold_W eight)/2)
440 424
441 // kCTFontColorGlyphsTrait was added in the Mac 10.7 and iPhone 4.3 SDKs. 425 // kCTFontColorGlyphsTrait was added in the Mac 10.7 and iPhone 4.3 SDKs.
442 // Being an enum value it is not guarded by version macros, but old SDKs must st ill be supported. 426 // Being an enum value it is not guarded by version macros, but old SDKs must st ill be supported.
443 #if defined(__MAC_10_7) || defined(__IPHONE_4_3) 427 #if defined(__MAC_10_7) || defined(__IPHONE_4_3)
444 static const uint32_t SkCTFontColorGlyphsTrait = kCTFontColorGlyphsTrait; 428 static const uint32_t SkCTFontColorGlyphsTrait = kCTFontColorGlyphsTrait;
445 #else 429 #else
446 static const uint32_t SkCTFontColorGlyphsTrait = (1 << 13); 430 static const uint32_t SkCTFontColorGlyphsTrait = (1 << 13);
447 #endif 431 #endif
448 432
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 470
487 private: 471 private:
488 bool fIsLocalStream; 472 bool fIsLocalStream;
489 473
490 typedef SkTypeface INHERITED; 474 typedef SkTypeface INHERITED;
491 }; 475 };
492 476
493 /** Creates a typeface without searching the cache. Takes ownership of the CTFon tRef. */ 477 /** Creates a typeface without searching the cache. Takes ownership of the CTFon tRef. */
494 static SkTypeface* NewFromFontRef(CTFontRef fontRef, CFTypeRef resourceRef, bool isLocalStream) { 478 static SkTypeface* NewFromFontRef(CTFontRef fontRef, CFTypeRef resourceRef, bool isLocalStream) {
495 SkASSERT(fontRef); 479 SkASSERT(fontRef);
496 bool isFixedPitch;
497 SkFontStyle style = SkFontStyle(computeStyleBits(fontRef, &isFixedPitch));
498 480
481 AutoCFRelease<CTFontDescriptorRef> desc(CTFontCopyFontDescriptor(fontRef));
482 SkFontStyle style = fontstyle_from_descriptor(desc);
483
484 CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(fontRef);
485 bool isFixedPitch = SkToBool(traits & kCTFontMonoSpaceTrait);
499 return new SkTypeface_Mac(fontRef, resourceRef, style, isFixedPitch, isLocal Stream); 486 return new SkTypeface_Mac(fontRef, resourceRef, style, isFixedPitch, isLocal Stream);
500 } 487 }
501 488
502 static bool find_by_CTFontRef(SkTypeface* cached, const SkFontStyle&, void* cont ext) { 489 static bool find_by_CTFontRef(SkTypeface* cached, const SkFontStyle&, void* cont ext) {
503 CTFontRef self = (CTFontRef)context; 490 CTFontRef self = (CTFontRef)context;
504 CTFontRef other = ((SkTypeface_Mac*)cached)->fFontRef; 491 CTFontRef other = ((SkTypeface_Mac*)cached)->fFontRef;
505 492
506 return CFEqual(self, other); 493 return CFEqual(self, other);
507 } 494 }
508 495
(...skipping 2056 matching lines...) Expand 10 before | Expand all | Expand 10 after
2565 } 2552 }
2566 2553
2567 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override { 2554 SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override {
2568 AutoCFRelease<CGDataProviderRef> pr(CGDataProviderCreateWithFilename(pat h)); 2555 AutoCFRelease<CGDataProviderRef> pr(CGDataProviderCreateWithFilename(pat h));
2569 if (nullptr == pr) { 2556 if (nullptr == pr) {
2570 return nullptr; 2557 return nullptr;
2571 } 2558 }
2572 return create_from_dataProvider(pr); 2559 return create_from_dataProvider(pr);
2573 } 2560 }
2574 2561
2575 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], 2562 #ifdef SK_VERY_LEGACY_CREATE_TYPEFACE
2576 unsigned styleBits) const overrid e { 2563 SkTypeface* onLegacyCreateTypeface(const char familyName[], unsigned styleBi ts) const override {
2577 2564 SkFontStyle style = SkFontStyle::FromOldStyle(styleBits);
2578 SkFontStyle style = SkFontStyle((SkTypeface::Style)styleBits); 2565 #else
2566 SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle styl e) const override {
2567 #endif
2579 if (familyName) { 2568 if (familyName) {
2580 familyName = map_css_names(familyName); 2569 familyName = map_css_names(familyName);
2581 } 2570 }
2582 2571
2583 if (!familyName || !*familyName) { 2572 if (!familyName || !*familyName) {
2584 familyName = FONT_DEFAULT_NAME; 2573 familyName = FONT_DEFAULT_NAME;
2585 } 2574 }
2586 2575
2587 SkTypeface* face = NewFromName(familyName, style); 2576 SkTypeface* face = NewFromName(familyName, style);
2588 if (face) { 2577 if (face) {
2589 return face; 2578 return face;
2590 } 2579 }
2591 2580
2592 return SkSafeRef(GetDefaultFace()); 2581 return SkSafeRef(GetDefaultFace());
2593 } 2582 }
2594 }; 2583 };
2595 2584
2596 /////////////////////////////////////////////////////////////////////////////// 2585 ///////////////////////////////////////////////////////////////////////////////
2597 2586
2598 SkFontMgr* SkFontMgr::Factory() { return new SkFontMgr_Mac; } 2587 SkFontMgr* SkFontMgr::Factory() { return new SkFontMgr_Mac; }
2599 2588
2600 #endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) 2589 #endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
OLDNEW
« no previous file with comments | « src/ports/SkFontHost_fontconfig.cpp ('k') | src/ports/SkFontHost_win.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698