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

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

Issue 12676024: Force all font backends to override onGetFontDescriptor, so we can (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
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 <vector> 9 #include <vector>
10 #ifdef SK_BUILD_FOR_MAC 10 #ifdef SK_BUILD_FOR_MAC
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 protected: 411 protected:
412 friend class SkFontHost; // to access our protected members for deprecate d methods 412 friend class SkFontHost; // to access our protected members for deprecate d methods
413 413
414 virtual int onGetUPEM() const SK_OVERRIDE; 414 virtual int onGetUPEM() const SK_OVERRIDE;
415 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE; 415 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE;
416 virtual int onGetTableTags(SkFontTableTag tags[]) const SK_OVERRIDE; 416 virtual int onGetTableTags(SkFontTableTag tags[]) const SK_OVERRIDE;
417 virtual size_t onGetTableData(SkFontTableTag, size_t offset, 417 virtual size_t onGetTableData(SkFontTableTag, size_t offset,
418 size_t length, void* data) const SK_OVERRIDE; 418 size_t length, void* data) const SK_OVERRIDE;
419 virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK _OVERRIDE; 419 virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK _OVERRIDE;
420 virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE; 420 virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE;
421 virtual void onGetFontDescriptor(SkFontDescriptor*) const SK_OVERRIDE; 421 virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE ;
422 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( 422 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics(
423 SkAdvancedTypefaceMetrics::PerGlyphInfo, 423 SkAdvancedTypefaceMetrics::PerGlyphInfo,
424 const uint32_t*, uint32_t) const SK_OVERRIDE; 424 const uint32_t*, uint32_t) const SK_OVERRIDE;
425 425
426 private: 426 private:
427 typedef SkTypeface INHERITED; 427 typedef SkTypeface INHERITED;
428 }; 428 };
429 429
430 static SkTypeface* NewFromFontRef(CTFontRef fontRef, const char name[]) { 430 static SkTypeface* NewFromFontRef(CTFontRef fontRef, const char name[]) {
431 SkASSERT(fontRef); 431 SkASSERT(fontRef);
(...skipping 1244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1676 1676
1677 dataPtr += (tableSize + 3) & ~3; 1677 dataPtr += (tableSize + 3) & ~3;
1678 ++entry; 1678 ++entry;
1679 } 1679 }
1680 1680
1681 return stream; 1681 return stream;
1682 } 1682 }
1683 1683
1684 /////////////////////////////////////////////////////////////////////////////// 1684 ///////////////////////////////////////////////////////////////////////////////
1685 1685
1686 #include "SkStream.h"
1687
1688 void SkFontHost::Serialize(const SkTypeface* face, SkWStream* stream) {
1689 SkFontDescriptor desc;
1690 face->onGetFontDescriptor(&desc);
1691
1692 desc.serialize(stream);
1693
1694 // by convention, we also write out the actual sfnt data, preceeded by
1695 // a packed-length. For now we skip that, so we just write the zero.
1696 stream->writePackedUInt(0);
1697 }
1698
1699 SkTypeface* SkFontHost::Deserialize(SkStream* stream) {
1700 SkFontDescriptor desc(stream);
1701
1702 // by convention, Serialize will have also written the actual sfnt data.
1703 // for now, we just want to skip it.
1704 size_t size = stream->readPackedUInt();
1705 stream->skip(size);
1706
1707 return SkFontHost::CreateTypeface(NULL, desc.getFamilyName(), desc.getStyle( ));
1708 }
1709
1710 ///////////////////////////////////////////////////////////////////////////////
1711
1712 // DEPRECATED 1686 // DEPRECATED
1713 SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFo ntID) { 1687 SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFo ntID) {
1714 SkTypeface* face = GetDefaultFace(); 1688 SkTypeface* face = GetDefaultFace();
1715 if (face->uniqueID() == currFontID) { 1689 if (face->uniqueID() == currFontID) {
1716 face = NULL; 1690 face = NULL;
1717 } 1691 }
1718 return SkSafeRef(face); 1692 return SkSafeRef(face);
1719 } 1693 }
1720 1694
1721 /////////////////////////////////////////////////////////////////////////////// 1695 ///////////////////////////////////////////////////////////////////////////////
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1840 } 1814 }
1841 } 1815 }
1842 1816
1843 // we take ownership of the ref 1817 // we take ownership of the ref
1844 static const char* get_str(CFStringRef ref, SkString* str) { 1818 static const char* get_str(CFStringRef ref, SkString* str) {
1845 CFStringToSkString(ref, str); 1819 CFStringToSkString(ref, str);
1846 CFSafeRelease(ref); 1820 CFSafeRelease(ref);
1847 return str->c_str(); 1821 return str->c_str();
1848 } 1822 }
1849 1823
1850 void SkTypeface_Mac::onGetFontDescriptor(SkFontDescriptor* desc) const { 1824 void SkTypeface_Mac::onGetFontDescriptor(SkFontDescriptor* desc,
1851 this->INHERITED::onGetFontDescriptor(desc); 1825 bool* isLocalStream) const {
1852 SkString tmpStr; 1826 SkString tmpStr;
1853 1827
1854 desc->setFamilyName(get_str(CTFontCopyFamilyName(fFontRef), &tmpStr)); 1828 desc->setFamilyName(get_str(CTFontCopyFamilyName(fFontRef), &tmpStr));
1855 desc->setFullName(get_str(CTFontCopyFullName(fFontRef), &tmpStr)); 1829 desc->setFullName(get_str(CTFontCopyFullName(fFontRef), &tmpStr));
1856 desc->setPostscriptName(get_str(CTFontCopyPostScriptName(fFontRef), &tmpStr) ); 1830 desc->setPostscriptName(get_str(CTFontCopyPostScriptName(fFontRef), &tmpStr) );
1831 // TODO: need to add support for local-streams (here and openStream)
1832 *isLocalStream = false;
1857 } 1833 }
1834
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698