Title: [96515] trunk/Source/WebCore
Revision
96515
Author
r...@google.com
Date
2011-10-03 10:20:36 -0700 (Mon, 03 Oct 2011)

Log Message

respect other paint flags when setting flags for the font. No need to fiddle with DC(0) in paintSkiaText.
https://bugs.webkit.org/show_bug.cgi?id=69172

Reviewed by Stephen White.

No new tests. This is a cleanup/optimization, existing tests apply

* platform/graphics/skia/SkiaFontWin.cpp:
(WebCore::getDefaultGDITextFlags):
(WebCore::setupPaintForFont):
(WebCore::paintSkiaText):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (96514 => 96515)


--- trunk/Source/WebCore/ChangeLog	2011-10-03 16:57:43 UTC (rev 96514)
+++ trunk/Source/WebCore/ChangeLog	2011-10-03 17:20:36 UTC (rev 96515)
@@ -1,3 +1,17 @@
+2011-10-03  Mike Reed  <r...@google.com>
+
+        respect other paint flags when setting flags for the font. No need to fiddle with DC(0) in paintSkiaText.
+        https://bugs.webkit.org/show_bug.cgi?id=69172
+
+        Reviewed by Stephen White.
+
+        No new tests. This is a cleanup/optimization, existing tests apply
+
+        * platform/graphics/skia/SkiaFontWin.cpp:
+        (WebCore::getDefaultGDITextFlags):
+        (WebCore::setupPaintForFont):
+        (WebCore::paintSkiaText):
+
 2011-10-03  Andreas Kling  <kl...@webkit.org>
 
         FontFallbackList: Glyph pages waste a lot of memory.

Modified: trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp (96514 => 96515)


--- trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp	2011-10-03 16:57:43 UTC (rev 96514)
+++ trunk/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp	2011-10-03 17:20:36 UTC (rev 96515)
@@ -108,6 +108,7 @@
     static uint32_t gFlags;
     if (!gInited) {
         BOOL enabled;
+        gFlags = 0;
         if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &enabled, 0) && enabled) {
             gFlags |= SkPaint::kAntiAlias_Flag;
 
@@ -140,31 +141,33 @@
     paint->setTypeface(face);
     SkSafeUnref(face);
 
-    uint32_t flags = paint->getFlags();
-    // clear our flags initially, and then selectively set them
-    // based on the LOGFONT quality
-    flags &= SkPaint::kAntiAlias_Flag;
-    flags &= SkPaint::kLCDRenderText_Flag;
-
+    // turn lfQuality into text flags
+    uint32_t textFlags;
     switch (info.lfQuality) {
     case NONANTIALIASED_QUALITY:
+        textFlags = 0;
         break;
     case ANTIALIASED_QUALITY:
-        flags |= SkPaint::kAntiAlias_Flag;
+        textFlags = SkPaint::kAntiAlias_Flag;
         break;
     case CLEARTYPE_QUALITY:
-        flags |= SkPaint::kAntiAlias_Flag;
-        flags |= SkPaint::kLCDRenderText_Flag;
+        textFlags = (SkPaint::kAntiAlias_Flag | SkPaint::kLCDRenderText_Flag);
         break;
     default:
-        flags |= getDefaultGDITextFlags();
+        textFlags = getDefaultGDITextFlags();
         break;
     }
+    // only allow features that SystemParametersInfo allows
+    textFlags &= getDefaultGDITextFlags();
 
     // do this check after our switch on lfQuality
     if (disableTextLCD(pcs))
-        flags &= ~SkPaint::kLCDRenderText_Flag;
+        textFlags &= ~SkPaint::kLCDRenderText_Flag;
 
+    // now copy in just the text flags
+    uint32_t flags = paint->getFlags();
+    flags &= ~(SkPaint::kAntiAlias_Flag | SkPaint::kLCDRenderText_Flag);
+    flags |= textFlags;
     paint->setFlags(flags);
 }
 
@@ -176,9 +179,6 @@
                    const GOFFSET* offsets,
                    const SkPoint* origin)
 {
-    HDC dc = GetDC(0);
-    HGDIOBJ oldFont = SelectObject(dc, hfont);
-
     PlatformContextSkia* platformContext = context->platformContext();
     SkCanvas* canvas = platformContext->canvas();
     TextDrawingModeFlags textMode = platformContext->getTextDrawingMode();
@@ -221,9 +221,6 @@
 
         skiaDrawText(canvas, *origin, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
     }
-
-    SelectObject(dc, oldFont);
-    ReleaseDC(0, dc);
 }
 
 }  // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to