2011-04-11 Justin Novosad <junov@chromium.org>
[WebKit-https.git] / Source / WebCore / platform / graphics / skia / SkiaFontWin.cpp
index c40c4a9..8ab823e 100644 (file)
@@ -230,11 +230,23 @@ bool windowsCanHandleDrawTextShadow(GraphicsContext *context)
     ColorSpace shadowColorSpace;
 
     bool hasShadow = context->getShadow(shadowOffset, shadowBlur, shadowColor, shadowColorSpace);
-    return (hasShadow && (shadowBlur == 0) && (shadowColor.alpha() == 255) && (context->fillColor().alpha() == 255));
+    return !hasShadow || (!shadowBlur && (shadowColor.alpha() == 255) && (context->fillColor().alpha() == 255));
 }
 
 bool windowsCanHandleTextDrawing(GraphicsContext* context)
 {
+    if (!windowsCanHandleTextDrawingWithoutShadow(context))
+        return false;
+
+    // Check for shadow effects.
+    if (!windowsCanHandleDrawTextShadow(context))
+        return false;
+
+    return true;
+}
+
+bool windowsCanHandleTextDrawingWithoutShadow(GraphicsContext* context)
+{
     // Check for non-translation transforms. Sometimes zooms will look better in
     // Skia, and sometimes better in Windows. The main problem is that zooming
     // in using Skia will show you the hinted outlines for the smaller size,
@@ -256,10 +268,6 @@ bool windowsCanHandleTextDrawing(GraphicsContext* context)
     if (context->fillPattern() || context->strokePattern())
         return false;
 
-    // Check for shadow effects.
-    if (context->platformContext()->getDrawLooper() && (!windowsCanHandleDrawTextShadow(context)))
-        return false;
-
     if (!context->platformContext()->isNativeFontRenderingAllowed())
         return false;
 
@@ -362,7 +370,7 @@ bool paintSkiaText(GraphicsContext* context,
     }
     bool didFill = false;
 
-    if ((textMode & TextModeFill) && SkColorGetA(paint.getColor())) {
+    if ((textMode & TextModeFill) && (SkColorGetA(paint.getColor()) || paint.getLooper())) {
         if (!skiaDrawText(hfont, dc, platformContext, *origin, &paint,
                           &glyphs[0], &advances[0], &offsets[0], numGlyphs))
             return false;