Reviewed by Eric Siedel
authorbeidson <beidson@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 Sep 2006 09:38:34 +0000 (09:38 +0000)
committerbeidson <beidson@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 Sep 2006 09:38:34 +0000 (09:38 +0000)
        Dumped the use of CGColorRef and directly use the floating point data from
        WebCore::Color

        This fixes the performance regression found between 16285 and 16286

        * platform/mac/FontMac.mm:
        (WebCore::Font::drawComplexText):
        (WebCore::Font::drawGlyphs):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16369 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/mac/FontMac.mm

index 4fd23cb3fc9b1bd08843e7e017fc015f11c59f17..06523d67623f60691f6088fa446d4dbb7fa3c2d2 100644 (file)
@@ -1,3 +1,16 @@
+2006-09-15  Brady Eidson  <beidson@apple.com>
+
+        Reviewed by Eric Siedel
+
+        Dumped the use of CGColorRef and directly use the floating point data from
+        WebCore::Color
+
+        This fixes the performance regression found between 16285 and 16286
+
+        * platform/mac/FontMac.mm:
+        (WebCore::Font::drawComplexText):
+        (WebCore::Font::drawGlyphs):
+
 2006-09-14  Mark Rowe  <opendarwin.org@bdash.net.nz>
 
         Reviewed by Adam.
index 884c63ee32ec3d004b8b22b24983023761106151..814562346c22a17ca2357d8ef6992b5d0bfe871e 100644 (file)
@@ -482,9 +482,14 @@ void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run,
     
     // ATSUI can't draw beyond -32768 to +32767 so we translate the CTM and tell ATSUI to draw at (0, 0).
     CGContextRef context = graphicsContext->platformContext();
-    CGColorRef penColor = cgColor(graphicsContext->pen().color());
-    CGContextSetFillColorWithColor(context, penColor); // WebCore expects text to respect the pen color, CG expects text to use fill
-    CGColorRelease(penColor);
+
+    float colors[4];
+    graphicsContext->pen().color().getRGBA(colors[0], colors[1], colors[2], colors[3]);
+    static CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
+    
+    CGContextSetFillColorSpace(context, rgbColorSpace);
+    CGContextSetFillColor(context, colors); // WebCore expects text to respect the pen color, CG expects text to use fill
+    
     CGContextTranslateCTM(context, point.x(), point.y());
     status = ATSUDrawText(params.m_layout, adjustedRun.from(), runLength, 0, 0);
     if (status == noErr && params.m_hasSyntheticBold) {
@@ -593,9 +598,12 @@ void Font::drawGlyphs(GraphicsContext* context, const FontData* font, const Glyp
     wkSetCGFontRenderingMode(cgContext, drawFont);
     CGContextSetFontSize(cgContext, 1.0f);
 
-    CGColorRef penColor = cgColor(context->pen().color());
-    CGContextSetFillColorWithColor(cgContext, penColor); // WebCore expects text to respect the pen color, CG expects text to use fill
-    CGColorRelease(penColor);
+    float colors[4];
+    context->pen().color().getRGBA(colors[0], colors[1], colors[2], colors[3]);
+    static CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
+    
+    CGContextSetFillColorSpace(cgContext, rgbColorSpace);
+    CGContextSetFillColor(cgContext, colors); // WebCore expects text to respect the pen color, CG expects text to use fill
 
     CGContextSetTextPosition(cgContext, point.x(), point.y());
     CGContextShowGlyphsWithAdvances(cgContext, glyphBuffer.glyphs(from), glyphBuffer.advances(from), numGlyphs);