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

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

Issue 1129283003: Make SkAdvancedTypefaceMetrics private. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 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_FreeType_common.h ('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 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkTypes.h" // Keep this before any #ifdef ... 9 #include "SkTypes.h" // Keep this before any #ifdef ...
10 10
11 #ifdef SK_BUILD_FOR_MAC 11 #ifdef SK_BUILD_FOR_MAC
12 #import <ApplicationServices/ApplicationServices.h> 12 #import <ApplicationServices/ApplicationServices.h>
13 #endif 13 #endif
14 14
15 #ifdef SK_BUILD_FOR_IOS 15 #ifdef SK_BUILD_FOR_IOS
16 #include <CoreText/CoreText.h> 16 #include <CoreText/CoreText.h>
17 #include <CoreText/CTFontManager.h> 17 #include <CoreText/CTFontManager.h>
18 #include <CoreGraphics/CoreGraphics.h> 18 #include <CoreGraphics/CoreGraphics.h>
19 #include <CoreFoundation/CoreFoundation.h> 19 #include <CoreFoundation/CoreFoundation.h>
20 #endif 20 #endif
21 21
22 #include "SkAdvancedTypefaceMetrics.h"
22 #include "SkCGUtils.h" 23 #include "SkCGUtils.h"
23 #include "SkColorPriv.h" 24 #include "SkColorPriv.h"
24 #include "SkDescriptor.h" 25 #include "SkDescriptor.h"
25 #include "SkEndian.h" 26 #include "SkEndian.h"
26 #include "SkFontDescriptor.h" 27 #include "SkFontDescriptor.h"
27 #include "SkFloatingPoint.h" 28 #include "SkFloatingPoint.h"
28 #include "SkGlyph.h" 29 #include "SkGlyph.h"
29 #include "SkLazyFnPtr.h" 30 #include "SkLazyFnPtr.h"
30 #include "SkMaskGamma.h" 31 #include "SkMaskGamma.h"
31 #include "SkSFNTHeader.h" 32 #include "SkSFNTHeader.h"
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 SkStreamAsset* onOpenStream(int* ttcIndex) const override; 447 SkStreamAsset* onOpenStream(int* ttcIndex) const override;
447 void onGetFamilyName(SkString* familyName) const override; 448 void onGetFamilyName(SkString* familyName) const override;
448 SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override; 449 SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override;
449 int onGetTableTags(SkFontTableTag tags[]) const override; 450 int onGetTableTags(SkFontTableTag tags[]) const override;
450 virtual size_t onGetTableData(SkFontTableTag, size_t offset, 451 virtual size_t onGetTableData(SkFontTableTag, size_t offset,
451 size_t length, void* data) const override; 452 size_t length, void* data) const override;
452 SkScalerContext* onCreateScalerContext(const SkDescriptor*) const override; 453 SkScalerContext* onCreateScalerContext(const SkDescriptor*) const override;
453 void onFilterRec(SkScalerContextRec*) const override; 454 void onFilterRec(SkScalerContextRec*) const override;
454 void onGetFontDescriptor(SkFontDescriptor*, bool*) const override; 455 void onGetFontDescriptor(SkFontDescriptor*, bool*) const override;
455 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( 456 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics(
456 SkAdvancedTypefaceMetrics::PerGlyphInfo, 457 PerGlyphInfo,
457 const uint32_t*, uint32_t) const override; 458 const uint32_t*, uint32_t) const override;
458 virtual int onCharsToGlyphs(const void* chars, Encoding, uint16_t glyphs[], 459 virtual int onCharsToGlyphs(const void* chars, Encoding, uint16_t glyphs[],
459 int glyphCount) const override; 460 int glyphCount) const override;
460 int onCountGlyphs() const override; 461 int onCountGlyphs() const override;
461 462
462 private: 463 private:
463 bool fIsLocalStream; 464 bool fIsLocalStream;
464 465
465 typedef SkTypeface INHERITED; 466 typedef SkTypeface INHERITED;
466 }; 467 };
(...skipping 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 // plus 1 byte for the trailing null. 1537 // plus 1 byte for the trailing null.
1537 CFIndex length = CFStringGetMaximumSizeForEncoding(CFStringGetLength(src), 1538 CFIndex length = CFStringGetMaximumSizeForEncoding(CFStringGetLength(src),
1538 kCFStringEncodingUTF8) + 1; 1539 kCFStringEncodingUTF8) + 1;
1539 dst->resize(length); 1540 dst->resize(length);
1540 CFStringGetCString(src, dst->writable_str(), length, kCFStringEncodingUTF8); 1541 CFStringGetCString(src, dst->writable_str(), length, kCFStringEncodingUTF8);
1541 // Resize to the actual UTF-8 length used, stripping the null character. 1542 // Resize to the actual UTF-8 length used, stripping the null character.
1542 dst->resize(strlen(dst->c_str())); 1543 dst->resize(strlen(dst->c_str()));
1543 } 1544 }
1544 1545
1545 SkAdvancedTypefaceMetrics* SkTypeface_Mac::onGetAdvancedTypefaceMetrics( 1546 SkAdvancedTypefaceMetrics* SkTypeface_Mac::onGetAdvancedTypefaceMetrics(
1546 SkAdvancedTypefaceMetrics::PerGlyphInfo perGlyphInfo, 1547 PerGlyphInfo perGlyphInfo,
1547 const uint32_t* glyphIDs, 1548 const uint32_t* glyphIDs,
1548 uint32_t glyphIDsCount) const { 1549 uint32_t glyphIDsCount) const {
1549 1550
1550 CTFontRef originalCTFont = fFontRef.get(); 1551 CTFontRef originalCTFont = fFontRef.get();
1551 AutoCFRelease<CTFontRef> ctFont(CTFontCreateCopyWithAttributes( 1552 AutoCFRelease<CTFontRef> ctFont(CTFontCreateCopyWithAttributes(
1552 originalCTFont, CTFontGetUnitsPerEm(originalCTFont), NULL, NULL)); 1553 originalCTFont, CTFontGetUnitsPerEm(originalCTFont), NULL, NULL));
1553 SkAdvancedTypefaceMetrics* info = new SkAdvancedTypefaceMetrics; 1554 SkAdvancedTypefaceMetrics* info = new SkAdvancedTypefaceMetrics;
1554 1555
1555 { 1556 {
1556 AutoCFRelease<CFStringRef> fontName(CTFontCopyPostScriptName(ctFont)); 1557 AutoCFRelease<CFStringRef> fontName(CTFontCopyPostScriptName(ctFont));
1557 if (fontName.get()) { 1558 if (fontName.get()) {
1558 CFStringToSkString(fontName, &info->fFontName); 1559 CFStringToSkString(fontName, &info->fFontName);
1559 } 1560 }
1560 } 1561 }
1561 1562
1562 CFIndex glyphCount = CTFontGetGlyphCount(ctFont); 1563 CFIndex glyphCount = CTFontGetGlyphCount(ctFont);
1563 info->fLastGlyphID = SkToU16(glyphCount - 1); 1564 info->fLastGlyphID = SkToU16(glyphCount - 1);
1564 info->fEmSize = CTFontGetUnitsPerEm(ctFont); 1565 info->fEmSize = CTFontGetUnitsPerEm(ctFont);
1565 info->fFlags = SkAdvancedTypefaceMetrics::kEmpty_FontFlag; 1566 info->fFlags = SkAdvancedTypefaceMetrics::kEmpty_FontFlag;
1566 info->fStyle = 0; 1567 info->fStyle = 0;
1567 1568
1568 if (perGlyphInfo & SkAdvancedTypefaceMetrics::kToUnicode_PerGlyphInfo) { 1569 if (perGlyphInfo & kToUnicode_PerGlyphInfo) {
1569 populate_glyph_to_unicode(ctFont, glyphCount, &info->fGlyphToUnicode); 1570 populate_glyph_to_unicode(ctFont, glyphCount, &info->fGlyphToUnicode);
1570 } 1571 }
1571 1572
1572 // If it's not a truetype font, mark it as 'other'. Assume that TrueType 1573 // If it's not a truetype font, mark it as 'other'. Assume that TrueType
1573 // fonts always have both glyf and loca tables. At the least, this is what 1574 // fonts always have both glyf and loca tables. At the least, this is what
1574 // sfntly needs to subset the font. CTFontCopyAttribute() does not always 1575 // sfntly needs to subset the font. CTFontCopyAttribute() does not always
1575 // succeed in determining this directly. 1576 // succeed in determining this directly.
1576 if (!this->getTableSize('glyf') || !this->getTableSize('loca')) { 1577 if (!this->getTableSize('glyf') || !this->getTableSize('loca')) {
1577 info->fType = SkAdvancedTypefaceMetrics::kOther_Font; 1578 info->fType = SkAdvancedTypefaceMetrics::kOther_Font;
1578 info->fItalicAngle = 0; 1579 info->fItalicAngle = 0;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 glyphs, boundingRects, count); 1626 glyphs, boundingRects, count);
1626 for (size_t i = 0; i < count; i++) { 1627 for (size_t i = 0; i < count; i++) {
1627 int16_t width = (int16_t) boundingRects[i].size.width; 1628 int16_t width = (int16_t) boundingRects[i].size.width;
1628 if (width > 0 && width < min_width) { 1629 if (width > 0 && width < min_width) {
1629 min_width = width; 1630 min_width = width;
1630 info->fStemV = min_width; 1631 info->fStemV = min_width;
1631 } 1632 }
1632 } 1633 }
1633 } 1634 }
1634 1635
1635 if (perGlyphInfo & SkAdvancedTypefaceMetrics::kHAdvance_PerGlyphInfo) { 1636 if (perGlyphInfo & kHAdvance_PerGlyphInfo) {
1636 if (info->fStyle & SkAdvancedTypefaceMetrics::kFixedPitch_Style) { 1637 if (info->fStyle & SkAdvancedTypefaceMetrics::kFixedPitch_Style) {
1637 skia_advanced_typeface_metrics_utils::appendRange(&info->fGlyphWidth s, 0); 1638 skia_advanced_typeface_metrics_utils::appendRange(&info->fGlyphWidth s, 0);
1638 info->fGlyphWidths->fAdvance.append(1, &min_width); 1639 info->fGlyphWidths->fAdvance.append(1, &min_width);
1639 skia_advanced_typeface_metrics_utils::finishRange(info->fGlyphWidths .get(), 0, 1640 skia_advanced_typeface_metrics_utils::finishRange(info->fGlyphWidths .get(), 0,
1640 SkAdvancedTypefaceMetrics::WidthRange::kDefault); 1641 SkAdvancedTypefaceMetrics::WidthRange::kDefault);
1641 } else { 1642 } else {
1642 info->fGlyphWidths.reset( 1643 info->fGlyphWidths.reset(
1643 skia_advanced_typeface_metrics_utils::getAdvanceData(ctFont.get( ), 1644 skia_advanced_typeface_metrics_utils::getAdvanceData(ctFont.get( ),
1644 SkToInt(glyphCount), 1645 SkToInt(glyphCount),
1645 glyphIDs, 1646 glyphIDs,
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
2280 } 2281 }
2281 return face; 2282 return face;
2282 } 2283 }
2283 }; 2284 };
2284 2285
2285 /////////////////////////////////////////////////////////////////////////////// 2286 ///////////////////////////////////////////////////////////////////////////////
2286 2287
2287 SkFontMgr* SkFontMgr::Factory() { 2288 SkFontMgr* SkFontMgr::Factory() {
2288 return SkNEW(SkFontMgr_Mac); 2289 return SkNEW(SkFontMgr_Mac);
2289 } 2290 }
OLDNEW
« no previous file with comments | « src/ports/SkFontHost_FreeType_common.h ('k') | src/ports/SkFontHost_win.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698