Changeset 95097 in webkit
- Timestamp:
- Sep 14, 2011 10:04:12 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r95096 r95097 1 2011-09-14 Mike Reed <reed@google.com> 2 3 query SystemParametersInfo for GDI font smoothing settings 4 https://bugs.webkit.org/show_bug.cgi?id=68080 5 6 Reviewed by Stephen White. 7 8 No new tests. fixes antialiasing issues based on User settings 9 10 * platform/graphics/skia/SkiaFontWin.cpp: 11 (WebCore::getDefaultGDITextFlags): 12 (WebCore::setupPaintForFont): 13 1 14 2011-09-13 David Hyatt <hyatt@apple.com> 2 15 -
trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp
r94589 r95097 100 100 } 101 101 102 // Lookup the current system settings for font smoothing. 103 // We cache these values for performance, but if the browser has away to be 104 // notified when these change, we could re-query them at that time. 105 static uint32_t getDefaultGDITextFlags() 106 { 107 static bool gInited; 108 static uint32_t gFlags; 109 if (!gInited) { 110 BOOL enabled; 111 if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &enabled, 0) && enabled) { 112 gFlags |= SkPaint::kAntiAlias_Flag; 113 114 UINT smoothType; 115 if (SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE, 0, &smoothType, 0)) { 116 if (FE_FONTSMOOTHINGCLEARTYPE == smoothType) 117 gFlags |= SkPaint::kLCDRenderText_Flag; 118 } 119 } 120 gInited = true; 121 } 122 return gFlags; 123 } 124 102 125 static void setupPaintForFont(HFONT hfont, SkPaint* paint, PlatformContextSkia* pcs) 103 126 { … … 119 142 120 143 uint32_t flags = paint->getFlags(); 121 // our defaults 122 flags |= SkPaint::kAntiAlias_Flag; 144 // clear our flags initially, and then selectively set them 145 // based on the LOGFONT quality 146 flags &= SkPaint::kAntiAlias_Flag; 147 flags &= SkPaint::kLCDRenderText_Flag; 148 149 switch (info.lfQuality) { 150 case NONANTIALIASED_QUALITY: 151 break; 152 case ANTIALIASED_QUALITY: 153 flags |= SkPaint::kAntiAlias_Flag; 154 break; 155 case CLEARTYPE_QUALITY: 156 flags |= SkPaint::kAntiAlias_Flag; 157 flags |= SkPaint::kLCDRenderText_Flag; 158 break; 159 default: 160 flags |= getDefaultGDITextFlags(); 161 break; 162 } 163 164 // do this check after our switch on lfQuality 123 165 if (disableTextLCD(pcs)) 124 166 flags &= ~SkPaint::kLCDRenderText_Flag; 125 else 126 flags |= SkPaint::kLCDRenderText_Flag; 127 128 switch (info.lfQuality) { 129 case NONANTIALIASED_QUALITY: 130 flags &= ~SkPaint::kAntiAlias_Flag; 131 flags &= ~SkPaint::kLCDRenderText_Flag; 132 break; 133 case ANTIALIASED_QUALITY: 134 flags &= ~SkPaint::kLCDRenderText_Flag; 135 break; 136 default: 137 break; 138 } 167 139 168 paint->setFlags(flags); 140 169 }
Note: See TracChangeset
for help on using the changeset viewer.