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

Side by Side Diff: Source/core/rendering/RenderThemeChromiumMac.mm

Issue 205743004: Expand system font values during font property parsing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase and fix up unittest use of systemFont() Created 6 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 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008, 2009 Google, Inc. 3 * Copyright (C) 2008, 2009 Google, Inc.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 FontWeight700, 248 FontWeight700,
249 FontWeight800, 249 FontWeight800,
250 FontWeight800, 250 FontWeight800,
251 FontWeight900, 251 FontWeight900,
252 FontWeight900, 252 FontWeight900,
253 FontWeight900 253 FontWeight900
254 }; 254 };
255 return fontWeights[appKitFontWeight - 1]; 255 return fontWeights[appKitFontWeight - 1];
256 } 256 }
257 257
258 void RenderThemeChromiumMac::systemFont(CSSValueID cssValueId, FontDescription& fontDescription) const 258 static inline NSFont* systemNSFont(CSSValueID systemFontID)
259 { 259 {
260 DEFINE_STATIC_LOCAL(FontDescription, systemFont, ()); 260 switch (systemFontID) {
261 DEFINE_STATIC_LOCAL(FontDescription, smallSystemFont, ()); 261 case CSSValueSmallCaption:
262 DEFINE_STATIC_LOCAL(FontDescription, menuFont, ()); 262 return [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
263 DEFINE_STATIC_LOCAL(FontDescription, labelFont, ()); 263 case CSSValueMenu:
264 DEFINE_STATIC_LOCAL(FontDescription, miniControlFont, ()); 264 return [NSFont menuFontOfSize:[NSFont systemFontSize]];
265 DEFINE_STATIC_LOCAL(FontDescription, smallControlFont, ()); 265 case CSSValueStatusBar:
266 DEFINE_STATIC_LOCAL(FontDescription, controlFont, ()); 266 return [NSFont labelFontOfSize:[NSFont labelFontSize]];
267 case CSSValueWebkitMiniControl:
268 return [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSM iniControlSize]];
269 case CSSValueWebkitSmallControl:
270 return [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSS mallControlSize]];
271 case CSSValueWebkitControl:
272 return [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSR egularControlSize]];
273 default:
274 return [NSFont systemFontOfSize:[NSFont systemFontSize]];
275 }
276 }
267 277
268 FontDescription* cachedDesc; 278 void RenderThemeChromiumMac::systemFont(CSSValueID systemFontID, FontStyle& font Style, FontWeight& fontWeight, float& fontSize, AtomicString& fontFamily) const
269 NSFont* font = nil; 279 {
270 switch (cssValueId) { 280 NSFont* font = systemNSFont(systemFontID);
271 case CSSValueSmallCaption: 281 if (!font)
272 cachedDesc = &smallSystemFont; 282 return;
273 if (!smallSystemFont.isAbsoluteSize())
274 font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
275 break;
276 case CSSValueMenu:
277 cachedDesc = &menuFont;
278 if (!menuFont.isAbsoluteSize())
279 font = [NSFont menuFontOfSize:[NSFont systemFontSize]];
280 break;
281 case CSSValueStatusBar:
282 cachedDesc = &labelFont;
283 if (!labelFont.isAbsoluteSize())
284 font = [NSFont labelFontOfSize:[NSFont labelFontSize]];
285 break;
286 case CSSValueWebkitMiniControl:
287 cachedDesc = &miniControlFont;
288 if (!miniControlFont.isAbsoluteSize())
289 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSMiniControlSize]];
290 break;
291 case CSSValueWebkitSmallControl:
292 cachedDesc = &smallControlFont;
293 if (!smallControlFont.isAbsoluteSize())
294 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSSmallControlSize]];
295 break;
296 case CSSValueWebkitControl:
297 cachedDesc = &controlFont;
298 if (!controlFont.isAbsoluteSize())
299 font = [NSFont systemFontOfSize:[NSFont systemFontSizeForControl Size:NSRegularControlSize]];
300 break;
301 default:
302 cachedDesc = &systemFont;
303 if (!systemFont.isAbsoluteSize())
304 font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
305 }
306 283
307 if (font) { 284 NSFontManager *fontManager = [NSFontManager sharedFontManager];
308 NSFontManager *fontManager = [NSFontManager sharedFontManager]; 285 fontStyle = ([fontManager traitsOfFont:font] & NSItalicFontMask) ? FontStyle Italic : FontStyleNormal;
309 cachedDesc->setIsAbsoluteSize(true); 286 fontWeight = toFontWeight([fontManager weightOfFont:font]);
310 cachedDesc->setGenericFamily(FontDescription::NoFamily); 287 fontSize = [font pointSize];
311 cachedDesc->firstFamily().setFamily([font webCoreFamilyName]); 288 fontFamily = [font webCoreFamilyName];
312 cachedDesc->setSpecifiedSize([font pointSize]);
313 cachedDesc->setWeight(toFontWeight([fontManager weightOfFont:font]));
314 cachedDesc->setStyle([fontManager traitsOfFont:font] & NSItalicFontMask) ;
315 }
316 fontDescription = *cachedDesc;
317 } 289 }
318 290
319 static RGBA32 convertNSColorToColor(NSColor *color) 291 static RGBA32 convertNSColorToColor(NSColor *color)
320 { 292 {
321 NSColor *colorInColorSpace = [color colorUsingColorSpaceName:NSDeviceRGBColo rSpace]; 293 NSColor *colorInColorSpace = [color colorUsingColorSpaceName:NSDeviceRGBColo rSpace];
322 if (colorInColorSpace) { 294 if (colorInColorSpace) {
323 static const double scaleFactor = nextafter(256.0, 0.0); 295 static const double scaleFactor = nextafter(256.0, 0.0);
324 return makeRGB(static_cast<int>(scaleFactor * [colorInColorSpace redComp onent]), 296 return makeRGB(static_cast<int>(scaleFactor * [colorInColorSpace redComp onent]),
325 static_cast<int>(scaleFactor * [colorInColorSpace greenComponent]), 297 static_cast<int>(scaleFactor * [colorInColorSpace greenComponent]),
326 static_cast<int>(scaleFactor * [colorInColorSpace blueComponent])); 298 static_cast<int>(scaleFactor * [colorInColorSpace blueComponent]));
(...skipping 1571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 1870
1899 bool RenderThemeChromiumMac::shouldUseFallbackTheme(RenderStyle* style) const 1871 bool RenderThemeChromiumMac::shouldUseFallbackTheme(RenderStyle* style) const
1900 { 1872 {
1901 ControlPart part = style->appearance(); 1873 ControlPart part = style->appearance();
1902 if (part == CheckboxPart || part == RadioPart) 1874 if (part == CheckboxPart || part == RadioPart)
1903 return style->effectiveZoom() != 1; 1875 return style->effectiveZoom() != 1;
1904 return false; 1876 return false;
1905 } 1877 }
1906 1878
1907 } // namespace WebCore 1879 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderThemeChromiumMac.h ('k') | Source/core/rendering/RenderThemeChromiumSkia.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698