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

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

Issue 1953153004: SkAdvancedTypefaceMetrics: abstract out linked list (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2016-05-06 (Friday) 17:00:24 EDT Created 4 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_mac.cpp ('k') | src/ports/SkTypeface_win_dw.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" 8 #include "SkTypes.h"
9 #if defined(SK_BUILD_FOR_WIN32) 9 #if defined(SK_BUILD_FOR_WIN32)
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // an approximation. We shouldn't need to do this for larger sizes, but at t hose 79 // an approximation. We shouldn't need to do this for larger sizes, but at t hose
80 // sizes, the quality difference gets less and less between our general 80 // sizes, the quality difference gets less and less between our general
81 // scanconverter and GDI's. 81 // scanconverter and GDI's.
82 if (SkMask::kA8_Format == rec.fMaskFormat && !isAxisAligned(rec)) { 82 if (SkMask::kA8_Format == rec.fMaskFormat && !isAxisAligned(rec)) {
83 return true; 83 return true;
84 } 84 }
85 #endif 85 #endif
86 return rec.getHinting() == SkPaint::kNo_Hinting || rec.getHinting() == SkPai nt::kSlight_Hinting; 86 return rec.getHinting() == SkPaint::kNo_Hinting || rec.getHinting() == SkPai nt::kSlight_Hinting;
87 } 87 }
88 88
89 using namespace skia_advanced_typeface_metrics_utils;
90
91 static void tchar_to_skstring(const TCHAR t[], SkString* s) { 89 static void tchar_to_skstring(const TCHAR t[], SkString* s) {
92 #ifdef UNICODE 90 #ifdef UNICODE
93 size_t sSize = WideCharToMultiByte(CP_UTF8, 0, t, -1, nullptr, 0, nullptr, n ullptr); 91 size_t sSize = WideCharToMultiByte(CP_UTF8, 0, t, -1, nullptr, 0, nullptr, n ullptr);
94 s->resize(sSize); 92 s->resize(sSize);
95 WideCharToMultiByte(CP_UTF8, 0, t, -1, s->writable_str(), sSize, nullptr, nu llptr); 93 WideCharToMultiByte(CP_UTF8, 0, t, -1, s->writable_str(), sSize, nullptr, nu llptr);
96 #else 94 #else
97 s->set(t); 95 s->set(t);
98 #endif 96 #endif
99 } 97 }
100 98
(...skipping 1727 matching lines...) Expand 10 before | Expand all | Expand 10 after
1828 int16_t width = abcWidths.abcB; 1826 int16_t width = abcWidths.abcB;
1829 if (width > 0 && width < min_width) { 1827 if (width > 0 && width < min_width) {
1830 min_width = width; 1828 min_width = width;
1831 info->fStemV = min_width; 1829 info->fStemV = min_width;
1832 } 1830 }
1833 } 1831 }
1834 } 1832 }
1835 1833
1836 if (perGlyphInfo & kHAdvance_PerGlyphInfo) { 1834 if (perGlyphInfo & kHAdvance_PerGlyphInfo) {
1837 if (info->fStyle & SkAdvancedTypefaceMetrics::kFixedPitch_Style) { 1835 if (info->fStyle & SkAdvancedTypefaceMetrics::kFixedPitch_Style) {
1838 appendRange(&info->fGlyphWidths, 0); 1836 SkAdvancedTypefaceMetrics::WidthRange range(0);
1839 info->fGlyphWidths->fAdvance.append(1, &min_width); 1837 range.fAdvance.append(1, &min_width);
1840 finishRange(info->fGlyphWidths.get(), 0, 1838 SkAdvancedTypefaceMetrics::FinishRange(
1841 SkAdvancedTypefaceMetrics::WidthRange::kDefault); 1839 &range, 0, SkAdvancedTypefaceMetrics::WidthRange::kDefault);
1840 info->fGlyphWidths.emplace_back(std::move(range));
1842 } else { 1841 } else {
1843 info->fGlyphWidths.reset( 1842 info->setGlyphWidths(hdc, glyphCount, glyphIDs,
1844 getAdvanceData(hdc, 1843 glyphIDsCount, &getWidthAdvance);
1845 glyphCount,
1846 glyphIDs,
1847 glyphIDsCount,
1848 &getWidthAdvance));
1849 } 1844 }
1850 } 1845 }
1851 1846
1852 Error: 1847 Error:
1853 ReturnInfo: 1848 ReturnInfo:
1854 SelectObject(hdc, savefont); 1849 SelectObject(hdc, savefont);
1855 DeleteObject(designFont); 1850 DeleteObject(designFont);
1856 DeleteObject(font); 1851 DeleteObject(font);
1857 DeleteDC(hdc); 1852 DeleteDC(hdc);
1858 1853
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
2514 2509
2515 private: 2510 private:
2516 SkTDArray<ENUMLOGFONTEX> fLogFontArray; 2511 SkTDArray<ENUMLOGFONTEX> fLogFontArray;
2517 }; 2512 };
2518 2513
2519 /////////////////////////////////////////////////////////////////////////////// 2514 ///////////////////////////////////////////////////////////////////////////////
2520 2515
2521 SkFontMgr* SkFontMgr_New_GDI() { return new SkFontMgrGDI; } 2516 SkFontMgr* SkFontMgr_New_GDI() { return new SkFontMgrGDI; }
2522 2517
2523 #endif//defined(SK_BUILD_FOR_WIN32) 2518 #endif//defined(SK_BUILD_FOR_WIN32)
OLDNEW
« no previous file with comments | « src/ports/SkFontHost_mac.cpp ('k') | src/ports/SkTypeface_win_dw.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698