Title: [95097] trunk/Source/WebCore
- Revision
- 95097
- Author
- r...@google.com
- Date
- 2011-09-14 10:04:12 -0700 (Wed, 14 Sep 2011)
Log Message
query SystemParametersInfo for GDI font smoothing settings
https://bugs.webkit.org/show_bug.cgi?id=68080
Reviewed by Stephen White.
No new tests. fixes antialiasing issues based on User settings
* platform/graphics/skia/SkiaFontWin.cpp:
(WebCore::getDefaultGDITextFlags):
(WebCore::setupPaintForFont):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (95096 => 95097)
--- trunk/Source/WebCore/ChangeLog 2011-09-14 16:45:23 UTC (rev 95096)
+++ trunk/Source/WebCore/ChangeLog 2011-09-14 17:04:12 UTC (rev 95097)
@@ -1,3 +1,16 @@
+2011-09-14 Mike Reed <r...@google.com>
+
+ query SystemParametersInfo for GDI font smoothing settings
+ https://bugs.webkit.org/show_bug.cgi?id=68080
+
+ Reviewed by Stephen White.
+
+ No new tests. fixes antialiasing issues based on User settings
+
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::getDefaultGDITextFlags):
+ (WebCore::setupPaintForFont):
+
2011-09-13 David Hyatt <hy...@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=68050
Modified: trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp (95096 => 95097)
--- trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp 2011-09-14 16:45:23 UTC (rev 95096)
+++ trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp 2011-09-14 17:04:12 UTC (rev 95097)
@@ -99,6 +99,29 @@
|| skiaContext->isDrawingToImageBuffer();
}
+// Lookup the current system settings for font smoothing.
+// We cache these values for performance, but if the browser has away to be
+// notified when these change, we could re-query them at that time.
+static uint32_t getDefaultGDITextFlags()
+{
+ static bool gInited;
+ static uint32_t gFlags;
+ if (!gInited) {
+ BOOL enabled;
+ if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &enabled, 0) && enabled) {
+ gFlags |= SkPaint::kAntiAlias_Flag;
+
+ UINT smoothType;
+ if (SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE, 0, &smoothType, 0)) {
+ if (FE_FONTSMOOTHINGCLEARTYPE == smoothType)
+ gFlags |= SkPaint::kLCDRenderText_Flag;
+ }
+ }
+ gInited = true;
+ }
+ return gFlags;
+}
+
static void setupPaintForFont(HFONT hfont, SkPaint* paint, PlatformContextSkia* pcs)
{
// FIXME:
@@ -118,24 +141,30 @@
SkSafeUnref(face);
uint32_t flags = paint->getFlags();
- // our defaults
- flags |= SkPaint::kAntiAlias_Flag;
- if (disableTextLCD(pcs))
- flags &= ~SkPaint::kLCDRenderText_Flag;
- else
- flags |= SkPaint::kLCDRenderText_Flag;
+ // clear our flags initially, and then selectively set them
+ // based on the LOGFONT quality
+ flags &= SkPaint::kAntiAlias_Flag;
+ flags &= SkPaint::kLCDRenderText_Flag;
switch (info.lfQuality) {
case NONANTIALIASED_QUALITY:
- flags &= ~SkPaint::kAntiAlias_Flag;
- flags &= ~SkPaint::kLCDRenderText_Flag;
break;
case ANTIALIASED_QUALITY:
- flags &= ~SkPaint::kLCDRenderText_Flag;
+ flags |= SkPaint::kAntiAlias_Flag;
break;
+ case CLEARTYPE_QUALITY:
+ flags |= SkPaint::kAntiAlias_Flag;
+ flags |= SkPaint::kLCDRenderText_Flag;
+ break;
default:
+ flags |= getDefaultGDITextFlags();
break;
}
+
+ // do this check after our switch on lfQuality
+ if (disableTextLCD(pcs))
+ flags &= ~SkPaint::kLCDRenderText_Flag;
+
paint->setFlags(flags);
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes