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/SkFontMgr_fontconfig.cpp

Issue 1873923002: Begin switch to SkFontStyle for legacy calls. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Dont update bzl file now. Created 4 years, 8 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/SkFontMgr_custom.cpp ('k') | src/ports/SkFontMgr_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 2014 Google Inc. 2 * Copyright 2014 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 "SkDataTable.h" 8 #include "SkDataTable.h"
9 #include "SkFixed.h" 9 #include "SkFixed.h"
10 #include "SkFontDescriptor.h" 10 #include "SkFontDescriptor.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 257
258 static int map_range(SkFixed value, 258 static int map_range(SkFixed value,
259 SkFixed old_min, SkFixed old_max, 259 SkFixed old_min, SkFixed old_max,
260 SkFixed new_min, SkFixed new_max) 260 SkFixed new_min, SkFixed new_max)
261 { 261 {
262 SkASSERT(old_min < old_max); 262 SkASSERT(old_min < old_max);
263 SkASSERT(new_min <= new_max); 263 SkASSERT(new_min <= new_max);
264 return new_min + SkMulDiv(value - old_min, new_max - new_min, old_max - old_ min); 264 return new_min + SkMulDiv(value - old_min, new_max - new_min, old_max - old_ min);
265 } 265 }
266 266
267 static int ave(SkFixed a, SkFixed b) {
268 return SkFixedAve(a, b);
269 }
270
271 struct MapRanges { 267 struct MapRanges {
272 SkFixed old_val; 268 SkFixed old_val;
273 SkFixed new_val; 269 SkFixed new_val;
274 }; 270 };
275 271
276 static SkFixed map_ranges_fixed(SkFixed val, MapRanges const ranges[], int range sCount) { 272 static SkFixed map_ranges_fixed(SkFixed val, MapRanges const ranges[], int range sCount) {
277 // -Inf to [0] 273 // -Inf to [0]
278 if (val < ranges[0].old_val) { 274 if (val < ranges[0].old_val) {
279 return ranges[0].new_val; 275 return ranges[0].new_val;
280 } 276 }
281 277
282 // Linear from [i] to ave([i], [i+1]), then from ave([i], [i+1]) to [i+1] 278 // Linear from [i] to [i+1]
283 for (int i = 0; i < rangesCount - 1; ++i) { 279 for (int i = 0; i < rangesCount - 1; ++i) {
284 if (val < ave(ranges[i].old_val, ranges[i+1].old_val)) {
285 return map_range(val, ranges[i].old_val, ave(ranges[i].old_val, rang es[i+1].old_val),
286 ranges[i].new_val, ave(ranges[i].new_val, rang es[i+1].new_val));
287 }
288 if (val < ranges[i+1].old_val) { 280 if (val < ranges[i+1].old_val) {
289 return map_range(val, ave(ranges[i].old_val, ranges[i+1].old_val), r anges[i+1].old_val, 281 return map_range(val, ranges[i].old_val, ranges[i+1].old_val,
290 ave(ranges[i].new_val, ranges[i+1].new_val), r anges[i+1].new_val); 282 ranges[i].new_val, ranges[i+1].new_val);
291 } 283 }
292 } 284 }
293 285
294 // From [n] to +Inf 286 // From [n] to +Inf
295 // if (fcweight < Inf) 287 // if (fcweight < Inf)
296 return ranges[rangesCount-1].new_val; 288 return ranges[rangesCount-1].new_val;
297 } 289 }
298 290
299 static int map_ranges(int val, MapRanges const ranges[], int rangesCount) { 291 static int map_ranges(int val, MapRanges const ranges[], int rangesCount) {
300 return SkFixedRoundToInt(map_ranges_fixed(SkIntToFixed(val), ranges, rangesC ount)); 292 return SkFixedRoundToInt(map_ranges_fixed(SkIntToFixed(val), ranges, rangesC ount));
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 const int ttcIndex = fontData->getIndex(); 867 const int ttcIndex = fontData->getIndex();
876 SkFontStyle style; 868 SkFontStyle style;
877 bool isFixedWidth = false; 869 bool isFixedWidth = false;
878 if (!fScanner.scanFont(stream, ttcIndex, nullptr, &style, &isFixedWidth, nullptr)) { 870 if (!fScanner.scanFont(stream, ttcIndex, nullptr, &style, &isFixedWidth, nullptr)) {
879 return nullptr; 871 return nullptr;
880 } 872 }
881 873
882 return new SkTypeface_stream(fontData, style, isFixedWidth); 874 return new SkTypeface_stream(fontData, style, isFixedWidth);
883 } 875 }
884 876
885 virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], 877 #ifdef SK_VERY_LEGACY_CREATE_TYPEFACE
886 unsigned styleBits) const overrid e { 878 SkTypeface* onLegacyCreateTypeface(const char familyName[], unsigned styleBi ts) const override {
887 bool bold = styleBits & SkTypeface::kBold; 879 SkFontStyle style = SkFontStyle::FromOldStyle(styleBits);
888 bool italic = styleBits & SkTypeface::kItalic; 880 #else
889 SkFontStyle style = SkFontStyle(bold ? SkFontStyle::kBold_Weight 881 SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle styl e) const override {
890 : SkFontStyle::kNormal_Weight, 882 #endif
891 SkFontStyle::kNormal_Width,
892 italic ? SkFontStyle::kItalic_Slant
893 : SkFontStyle::kUpright_Slant);
894 SkAutoTUnref<SkTypeface> typeface(this->matchFamilyStyle(familyName, sty le)); 883 SkAutoTUnref<SkTypeface> typeface(this->matchFamilyStyle(familyName, sty le));
895 if (typeface.get()) { 884 if (typeface.get()) {
896 return typeface.release(); 885 return typeface.release();
897 } 886 }
898 887
899 return this->matchFamilyStyle(nullptr, style); 888 return this->matchFamilyStyle(nullptr, style);
900 } 889 }
901 }; 890 };
902 891
903 SK_API SkFontMgr* SkFontMgr_New_FontConfig(FcConfig* fc) { 892 SK_API SkFontMgr* SkFontMgr_New_FontConfig(FcConfig* fc) {
904 return new SkFontMgr_fontconfig(fc); 893 return new SkFontMgr_fontconfig(fc);
905 } 894 }
OLDNEW
« no previous file with comments | « src/ports/SkFontMgr_custom.cpp ('k') | src/ports/SkFontMgr_win_dw.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698