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

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

Issue 19231003: Implement onCountGlyphs and onGetUPEM on Windows. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 5 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 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 "SkTypes.h" 8 #include "SkTypes.h"
9 #undef GetGlyphIndices 9 #undef GetGlyphIndices
10 10
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 } 485 }
486 486
487 protected: 487 protected:
488 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE; 488 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE;
489 virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK _OVERRIDE; 489 virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK _OVERRIDE;
490 virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE; 490 virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE;
491 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics( 491 virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics(
492 SkAdvancedTypefaceMetrics::PerGlyphInfo, 492 SkAdvancedTypefaceMetrics::PerGlyphInfo,
493 const uint32_t*, uint32_t) const SK_OVERRIDE; 493 const uint32_t*, uint32_t) const SK_OVERRIDE;
494 virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE ; 494 virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE ;
495 virtual int onCountGlyphs() const SK_OVERRIDE;
496 virtual int onGetUPEM() const SK_OVERRIDE;
495 }; 497 };
496 498
497 class SkScalerContext_Windows : public SkScalerContext { 499 class SkScalerContext_Windows : public SkScalerContext {
498 public: 500 public:
499 SkScalerContext_Windows(DWriteFontTypeface*, const SkDescriptor* desc); 501 SkScalerContext_Windows(DWriteFontTypeface*, const SkDescriptor* desc);
500 virtual ~SkScalerContext_Windows(); 502 virtual ~SkScalerContext_Windows();
501 503
502 protected: 504 protected:
503 virtual unsigned generateGlyphCount() SK_OVERRIDE; 505 virtual unsigned generateGlyphCount() SK_OVERRIDE;
504 virtual uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE; 506 virtual uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE;
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 SkSMallocWCHAR dwFamilyNameChar(dwFamilyNamesLength+1); 1066 SkSMallocWCHAR dwFamilyNameChar(dwFamilyNamesLength+1);
1065 HRV(dwFamilyNames->GetString(0, dwFamilyNameChar.get(), dwFamilyNamesLength+ 1)); 1067 HRV(dwFamilyNames->GetString(0, dwFamilyNameChar.get(), dwFamilyNamesLength+ 1));
1066 1068
1067 SkString utf8FamilyName; 1069 SkString utf8FamilyName;
1068 HRV(wchar_to_skstring(dwFamilyNameChar.get(), &utf8FamilyName)); 1070 HRV(wchar_to_skstring(dwFamilyNameChar.get(), &utf8FamilyName));
1069 1071
1070 desc->setFamilyName(utf8FamilyName.c_str()); 1072 desc->setFamilyName(utf8FamilyName.c_str());
1071 *isLocalStream = SkToBool(fDWriteFontFileLoader.get()); 1073 *isLocalStream = SkToBool(fDWriteFontFileLoader.get());
1072 } 1074 }
1073 1075
1076 int DWriteFontTypeface::onCountGlyphs() const {
1077 return fDWriteFontFace->GetGlyphCount();
1078 }
1079
1080 int DWriteFontTypeface::onGetUPEM() const {
1081 DWRITE_FONT_METRICS metrics;
1082 fDWriteFontFace->GetMetrics(&metrics);
1083 return metrics.designUnitsPerEm;
1084 }
1085
1074 template <typename T> class SkAutoIDWriteUnregister { 1086 template <typename T> class SkAutoIDWriteUnregister {
1075 public: 1087 public:
1076 SkAutoIDWriteUnregister(IDWriteFactory* factory, T* unregister) 1088 SkAutoIDWriteUnregister(IDWriteFactory* factory, T* unregister)
1077 : fFactory(factory), fUnregister(unregister) 1089 : fFactory(factory), fUnregister(unregister)
1078 { } 1090 { }
1079 1091
1080 ~SkAutoIDWriteUnregister() { 1092 ~SkAutoIDWriteUnregister() {
1081 if (fUnregister) { 1093 if (fUnregister) {
1082 unregister(fFactory, fUnregister); 1094 unregister(fFactory, fUnregister);
1083 } 1095 }
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after
1748 1760
1749 WCHAR localeNameStorage[LOCALE_NAME_MAX_LENGTH]; 1761 WCHAR localeNameStorage[LOCALE_NAME_MAX_LENGTH];
1750 WCHAR* localeName = NULL; 1762 WCHAR* localeName = NULL;
1751 int localeNameLen = GetUserDefaultLocaleName(localeNameStorage, LOCALE_NAME_ MAX_LENGTH); 1763 int localeNameLen = GetUserDefaultLocaleName(localeNameStorage, LOCALE_NAME_ MAX_LENGTH);
1752 if (localeNameLen) { 1764 if (localeNameLen) {
1753 localeName = localeNameStorage; 1765 localeName = localeNameStorage;
1754 }; 1766 };
1755 1767
1756 return SkNEW_ARGS(SkFontMgr_DirectWrite, (sysFontCollection.get(), localeNam e, localeNameLen)); 1768 return SkNEW_ARGS(SkFontMgr_DirectWrite, (sysFontCollection.get(), localeNam e, localeNameLen));
1757 } 1769 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698