OLD | NEW |
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 <vector> | 9 #include <vector> |
10 #ifdef SK_BUILD_FOR_MAC | 10 #ifdef SK_BUILD_FOR_MAC |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 | 603 |
604 struct GlyphRect { | 604 struct GlyphRect { |
605 int16_t fMinX; | 605 int16_t fMinX; |
606 int16_t fMinY; | 606 int16_t fMinY; |
607 int16_t fMaxX; | 607 int16_t fMaxX; |
608 int16_t fMaxY; | 608 int16_t fMaxY; |
609 }; | 609 }; |
610 | 610 |
611 class SkScalerContext_Mac : public SkScalerContext { | 611 class SkScalerContext_Mac : public SkScalerContext { |
612 public: | 612 public: |
613 SkScalerContext_Mac(const SkDescriptor* desc); | 613 SkScalerContext_Mac(SkTypeface_Mac*, const SkDescriptor*); |
614 virtual ~SkScalerContext_Mac(void); | 614 virtual ~SkScalerContext_Mac(); |
615 | 615 |
616 | 616 |
617 protected: | 617 protected: |
618 unsigned generateGlyphCount(void) SK_OVERRIDE; | 618 unsigned generateGlyphCount(void) SK_OVERRIDE; |
619 uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE; | 619 uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE; |
620 void generateAdvance(SkGlyph* glyph) SK_OVERRIDE; | 620 void generateAdvance(SkGlyph* glyph) SK_OVERRIDE; |
621 void generateMetrics(SkGlyph* glyph) SK_OVERRIDE; | 621 void generateMetrics(SkGlyph* glyph) SK_OVERRIDE; |
622 void generateImage(const SkGlyph& glyph) SK_OVERRIDE; | 622 void generateImage(const SkGlyph& glyph) SK_OVERRIDE; |
623 void generatePath(const SkGlyph& glyph, SkPath* path) SK_OVERRIDE; | 623 void generatePath(const SkGlyph& glyph, SkPath* path) SK_OVERRIDE; |
624 void generateFontMetrics(SkPaint::FontMetrics* mX, SkPaint::FontMetrics* mY)
SK_OVERRIDE; | 624 void generateFontMetrics(SkPaint::FontMetrics* mX, SkPaint::FontMetrics* mY)
SK_OVERRIDE; |
(...skipping 14 matching lines...) Expand all Loading... |
639 AutoCFRelease<CTFontRef> fCTVerticalFont; // for vertical advance | 639 AutoCFRelease<CTFontRef> fCTVerticalFont; // for vertical advance |
640 AutoCFRelease<CGFontRef> fCGFont; | 640 AutoCFRelease<CGFontRef> fCGFont; |
641 GlyphRect* fFBoundingBoxes; | 641 GlyphRect* fFBoundingBoxes; |
642 uint16_t fFBoundingBoxesGlyphOffset; | 642 uint16_t fFBoundingBoxesGlyphOffset; |
643 uint16_t fGlyphCount; | 643 uint16_t fGlyphCount; |
644 bool fGeneratedFBoundingBoxes; | 644 bool fGeneratedFBoundingBoxes; |
645 bool fDoSubPosition; | 645 bool fDoSubPosition; |
646 bool fVertical; | 646 bool fVertical; |
647 | 647 |
648 friend class Offscreen; | 648 friend class Offscreen; |
| 649 |
| 650 typedef SkScalerContext INHERITED; |
649 }; | 651 }; |
650 | 652 |
651 SkScalerContext_Mac::SkScalerContext_Mac(const SkDescriptor* desc) | 653 SkScalerContext_Mac::SkScalerContext_Mac(SkTypeface_Mac* typeface, |
652 : SkScalerContext(desc) | 654 const SkDescriptor* desc) |
| 655 : INHERITED(typeface, desc) |
653 , fFBoundingBoxes(NULL) | 656 , fFBoundingBoxes(NULL) |
654 , fFBoundingBoxesGlyphOffset(0) | 657 , fFBoundingBoxesGlyphOffset(0) |
655 , fGeneratedFBoundingBoxes(false) | 658 , fGeneratedFBoundingBoxes(false) |
656 { | 659 { |
657 CTFontRef ctFont = GetFontRefFromFontID(fRec.fFontID); | 660 CTFontRef ctFont = GetFontRefFromFontID(fRec.fFontID); |
658 CFIndex numGlyphs = CTFontGetGlyphCount(ctFont); | 661 CFIndex numGlyphs = CTFontGetGlyphCount(ctFont); |
659 | 662 |
660 // Get the state we need | 663 // Get the state we need |
661 fRec.getSingleMatrix(&fMatrix); | 664 fRec.getSingleMatrix(&fMatrix); |
662 fUnitMatrix = fMatrix; | 665 fUnitMatrix = fMatrix; |
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 // for now, we just want to skip it. | 1709 // for now, we just want to skip it. |
1707 size_t size = stream->readPackedUInt(); | 1710 size_t size = stream->readPackedUInt(); |
1708 stream->skip(size); | 1711 stream->skip(size); |
1709 | 1712 |
1710 return SkFontHost::CreateTypeface(NULL, desc.getFamilyName(), desc.getStyle(
)); | 1713 return SkFontHost::CreateTypeface(NULL, desc.getFamilyName(), desc.getStyle(
)); |
1711 } | 1714 } |
1712 | 1715 |
1713 /////////////////////////////////////////////////////////////////////////////// | 1716 /////////////////////////////////////////////////////////////////////////////// |
1714 | 1717 |
1715 // DEPRECATED | 1718 // DEPRECATED |
1716 SkScalerContext* SkFontHost::CreateScalerContext(const SkDescriptor* desc) { | 1719 SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFo
ntID) { |
1717 return new SkScalerContext_Mac(desc); | |
1718 } | |
1719 | |
1720 // DEPRECATED | |
1721 SkFontID SkFontHost::NextLogicalFont(SkFontID currFontID, SkFontID origFontID) { | |
1722 SkFontID nextFontID = 0; | |
1723 SkTypeface* face = GetDefaultFace(); | 1720 SkTypeface* face = GetDefaultFace(); |
1724 if (face->uniqueID() != currFontID) { | 1721 if (face->uniqueID() == currFontID) { |
1725 nextFontID = face->uniqueID(); | 1722 face = NULL; |
1726 } | 1723 } |
1727 return nextFontID; | 1724 return SkSafeRef(face); |
1728 } | |
1729 | |
1730 // DEPRECATED | |
1731 void SkFontHost::FilterRec(SkScalerContext::Rec* rec, SkTypeface* face) { | |
1732 face->onFilterRec(rec); | |
1733 } | 1725 } |
1734 | 1726 |
1735 // DEPRECATED | 1727 // DEPRECATED |
1736 int SkFontHost::CountTables(SkFontID fontID) { | 1728 int SkFontHost::CountTables(SkFontID fontID) { |
1737 SkTypeface* face = SkTypefaceCache::FindByID(fontID); | 1729 SkTypeface* face = SkTypefaceCache::FindByID(fontID); |
1738 return face ? face->onGetTableTags(NULL) : 0; | 1730 return face ? face->onGetTableTags(NULL) : 0; |
1739 } | 1731 } |
1740 | 1732 |
1741 // DEPRECATED | 1733 // DEPRECATED |
1742 int SkFontHost::GetTableTags(SkFontID fontID, SkFontTableTag tags[]) { | 1734 int SkFontHost::GetTableTags(SkFontID fontID, SkFontTableTag tags[]) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1808 if (length > srcSize - offset) { | 1800 if (length > srcSize - offset) { |
1809 length = srcSize - offset; | 1801 length = srcSize - offset; |
1810 } | 1802 } |
1811 if (dstData) { | 1803 if (dstData) { |
1812 memcpy(dstData, CFDataGetBytePtr(srcData) + offset, length); | 1804 memcpy(dstData, CFDataGetBytePtr(srcData) + offset, length); |
1813 } | 1805 } |
1814 return length; | 1806 return length; |
1815 } | 1807 } |
1816 | 1808 |
1817 SkScalerContext* SkTypeface_Mac::onCreateScalerContext(const SkDescriptor* desc)
const { | 1809 SkScalerContext* SkTypeface_Mac::onCreateScalerContext(const SkDescriptor* desc)
const { |
1818 return new SkScalerContext_Mac(desc); | 1810 return new SkScalerContext_Mac(const_cast<SkTypeface_Mac*>(this), desc); |
1819 } | 1811 } |
1820 | 1812 |
1821 void SkTypeface_Mac::onFilterRec(SkScalerContextRec* rec) const { | 1813 void SkTypeface_Mac::onFilterRec(SkScalerContextRec* rec) const { |
1822 unsigned flagsWeDontSupport = SkScalerContext::kDevKernText_Flag | | 1814 unsigned flagsWeDontSupport = SkScalerContext::kDevKernText_Flag | |
1823 SkScalerContext::kAutohinting_Flag; | 1815 SkScalerContext::kAutohinting_Flag; |
1824 | 1816 |
1825 rec->fFlags &= ~flagsWeDontSupport; | 1817 rec->fFlags &= ~flagsWeDontSupport; |
1826 | 1818 |
1827 bool lcdSupport = supports_LCD(); | 1819 bool lcdSupport = supports_LCD(); |
1828 | 1820 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1887 } | 1879 } |
1888 | 1880 |
1889 void SkTypeface_Mac::onGetFontDescriptor(SkFontDescriptor* desc) const { | 1881 void SkTypeface_Mac::onGetFontDescriptor(SkFontDescriptor* desc) const { |
1890 this->INHERITED::onGetFontDescriptor(desc); | 1882 this->INHERITED::onGetFontDescriptor(desc); |
1891 SkString tmpStr; | 1883 SkString tmpStr; |
1892 | 1884 |
1893 desc->setFamilyName(get_str(CTFontCopyFamilyName(fFontRef), &tmpStr)); | 1885 desc->setFamilyName(get_str(CTFontCopyFamilyName(fFontRef), &tmpStr)); |
1894 desc->setFullName(get_str(CTFontCopyFullName(fFontRef), &tmpStr)); | 1886 desc->setFullName(get_str(CTFontCopyFullName(fFontRef), &tmpStr)); |
1895 desc->setPostscriptName(get_str(CTFontCopyPostScriptName(fFontRef), &tmpStr)
); | 1887 desc->setPostscriptName(get_str(CTFontCopyPostScriptName(fFontRef), &tmpStr)
); |
1896 } | 1888 } |
OLD | NEW |