Title: [163276] trunk/Source/WebCore
Revision
163276
Author
akl...@apple.com
Date
2014-02-02 17:03:48 -0800 (Sun, 02 Feb 2014)

Log Message

RenderSVGInlineText::computeNewScaledFontForStyle() should take references.
<https://webkit.org/b/128086>

Make computeNewScaledFontForStyle() take renderer and style by reference
instead of taking a pointer and asserting that it's non-null.

Reviewed by Darin Adler.

* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::updateScaledFont):
(WebCore::RenderSVGInlineText::computeNewScaledFontForStyle):
* rendering/svg/RenderSVGInlineText.h:
* rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::applyClippingToContext):
* rendering/svg/RenderSVGResourceContainer.cpp:
(WebCore::RenderSVGResourceContainer::shouldTransformOnTextPainting):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::createMaskAndSwapContextForTextGradient):
(WebCore::clipToTextMask):
* rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::applyResource):
* rendering/svg/RenderSVGResourcePattern.cpp:
(WebCore::RenderSVGResourcePattern::buildPattern):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::paintDecorationWithStyle):
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::calculateScreenFontSizeScalingFactor):
(WebCore::SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem):
* rendering/svg/SVGRenderingContext.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (163275 => 163276)


--- trunk/Source/WebCore/ChangeLog	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/ChangeLog	2014-02-03 01:03:48 UTC (rev 163276)
@@ -1,3 +1,37 @@
+2014-02-02  Andreas Kling  <akl...@apple.com>
+
+        RenderSVGInlineText::computeNewScaledFontForStyle() should take references.
+        <https://webkit.org/b/128086>
+
+        Make computeNewScaledFontForStyle() take renderer and style by reference
+        instead of taking a pointer and asserting that it's non-null.
+
+        Reviewed by Darin Adler.
+
+        * rendering/svg/RenderSVGInlineText.cpp:
+        (WebCore::RenderSVGInlineText::updateScaledFont):
+        (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle):
+        * rendering/svg/RenderSVGInlineText.h:
+        * rendering/svg/RenderSVGResourceClipper.cpp:
+        (WebCore::RenderSVGResourceClipper::applyClippingToContext):
+        * rendering/svg/RenderSVGResourceContainer.cpp:
+        (WebCore::RenderSVGResourceContainer::shouldTransformOnTextPainting):
+        * rendering/svg/RenderSVGResourceFilter.cpp:
+        (WebCore::RenderSVGResourceFilter::applyResource):
+        * rendering/svg/RenderSVGResourceGradient.cpp:
+        (WebCore::createMaskAndSwapContextForTextGradient):
+        (WebCore::clipToTextMask):
+        * rendering/svg/RenderSVGResourceMasker.cpp:
+        (WebCore::RenderSVGResourceMasker::applyResource):
+        * rendering/svg/RenderSVGResourcePattern.cpp:
+        (WebCore::RenderSVGResourcePattern::buildPattern):
+        * rendering/svg/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::paintDecorationWithStyle):
+        * rendering/svg/SVGRenderingContext.cpp:
+        (WebCore::SVGRenderingContext::calculateScreenFontSizeScalingFactor):
+        (WebCore::SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem):
+        * rendering/svg/SVGRenderingContext.h:
+
 2014-02-02  Darin Adler  <da...@apple.com>
 
         Still more characters -> deprecatedCharacters (EWS keeps finding more)

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -224,29 +224,26 @@
 
 void RenderSVGInlineText::updateScaledFont()
 {
-    computeNewScaledFontForStyle(this, &style(), m_scalingFactor, m_scaledFont);
+    computeNewScaledFontForStyle(*this, style(), m_scalingFactor, m_scaledFont);
 }
 
-void RenderSVGInlineText::computeNewScaledFontForStyle(RenderObject* renderer, const RenderStyle* style, float& scalingFactor, Font& scaledFont)
+void RenderSVGInlineText::computeNewScaledFontForStyle(const RenderObject& renderer, const RenderStyle& style, float& scalingFactor, Font& scaledFont)
 {
-    ASSERT(style);
-    ASSERT(renderer);
-
     // Alter font-size to the right on-screen value to avoid scaling the glyphs themselves, except when GeometricPrecision is specified
     scalingFactor = SVGRenderingContext::calculateScreenFontSizeScalingFactor(renderer);
-    if (scalingFactor == 1 || !scalingFactor || style->fontDescription().textRenderingMode() == GeometricPrecision) {
+    if (scalingFactor == 1 || !scalingFactor || style.fontDescription().textRenderingMode() == GeometricPrecision) {
         scalingFactor = 1;
-        scaledFont = style->font();
+        scaledFont = style.font();
         return;
     }
 
-    FontDescription fontDescription(style->fontDescription());
+    FontDescription fontDescription(style.fontDescription());
 
     // FIXME: We need to better handle the case when we compute very small fonts below (below 1pt).
-    fontDescription.setComputedSize(Style::computedFontSizeFromSpecifiedSizeForSVGInlineText(fontDescription.computedSize(), fontDescription.isAbsoluteSize(), scalingFactor, renderer->document()));
+    fontDescription.setComputedSize(Style::computedFontSizeFromSpecifiedSizeForSVGInlineText(fontDescription.computedSize(), fontDescription.isAbsoluteSize(), scalingFactor, renderer.document()));
 
     scaledFont = Font(fontDescription, 0, 0);
-    scaledFont.update(renderer->document().ensureStyleResolver().fontSelector());
+    scaledFont.update(renderer.document().ensureStyleResolver().fontSelector());
 }
 
 }

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h	2014-02-03 01:03:48 UTC (rev 163276)
@@ -44,7 +44,7 @@
     float scalingFactor() const { return m_scalingFactor; }
     const Font& scaledFont() const { return m_scaledFont; }
     void updateScaledFont();
-    static void computeNewScaledFontForStyle(RenderObject*, const RenderStyle*, float& scalingFactor, Font& scaledFont);
+    static void computeNewScaledFontForStyle(const RenderObject&, const RenderStyle&, float& scalingFactor, Font& scaledFont);
 
     // Preserves floating point precision for the use in DRT. It knows how to round and does a better job than enclosingIntRect.
     FloatRect floatLinesBoundingBox() const;

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -148,7 +148,7 @@
     }
 
     AffineTransform absoluteTransform;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(&renderer, absoluteTransform);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(renderer, absoluteTransform);
 
     if (shouldCreateClipData && !repaintRect.isEmpty()) {
         if (!SVGRenderingContext::createImageBuffer(repaintRect, absoluteTransform, clipperData->clipMaskImage, ColorSpaceDeviceRGB, Unaccelerated))

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -205,7 +205,7 @@
     // In text drawing, the scaling part of the graphics context CTM is removed, compare SVGInlineTextBox::paintTextWithShadows.
     // So, we use that scaling factor here, too, and then push it down to pattern or gradient space
     // in order to keep the pattern or gradient correctly scaled.
-    float scalingFactor = SVGRenderingContext::calculateScreenFontSizeScalingFactor(object);
+    float scalingFactor = SVGRenderingContext::calculateScreenFontSizeScalingFactor(*object);
     if (scalingFactor == 1)
         return false;
     resourceTransform.scale(scalingFactor);

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -133,7 +133,7 @@
 
     // Determine absolute transformation matrix for filter. 
     AffineTransform absoluteTransform;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(&renderer, absoluteTransform);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(renderer, absoluteTransform);
     if (!absoluteTransform.isInvertible())
         return false;
 

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -61,7 +61,7 @@
     ASSERT(textRootBlock);
 
     AffineTransform absoluteTransform;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(textRootBlock, absoluteTransform);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(*textRootBlock, absoluteTransform);
 
     FloatRect repaintRect = textRootBlock->repaintRectInLocalCoordinates();
     std::unique_ptr<ImageBuffer> maskImage;
@@ -83,7 +83,7 @@
     ASSERT(textRootBlock);
 
     AffineTransform absoluteTransform;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(textRootBlock, absoluteTransform);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(*textRootBlock, absoluteTransform);
 
     targetRect = textRootBlock->repaintRectInLocalCoordinates();
     SVGRenderingContext::clipToImageBuffer(context, absoluteTransform, targetRect, imageBuffer, false);

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -69,7 +69,7 @@
     MaskerData* maskerData = m_masker.get(&renderer);
 
     AffineTransform absoluteTransform;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(&renderer, absoluteTransform);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(renderer, absoluteTransform);
 
     FloatRect repaintRect = renderer.repaintRectInLocalCoordinates();
 

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -87,7 +87,7 @@
         return 0;
 
     AffineTransform absoluteTransformIgnoringRotation;
-    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(object, absoluteTransformIgnoringRotation);
+    SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(*object, absoluteTransformIgnoringRotation);
 
     // Ignore 2D rotation, as it doesn't affect the size of the tile.
     SVGRenderingContext::clear2DRotation(absoluteTransformIgnoringRotation);

Modified: trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -519,7 +519,7 @@
 
     float scalingFactor = 1;
     Font scaledFont;
-    RenderSVGInlineText::computeNewScaledFontForStyle(&decorationRenderer, &decorationStyle, scalingFactor, scaledFont);
+    RenderSVGInlineText::computeNewScaledFontForStyle(decorationRenderer, decorationStyle, scalingFactor, scaledFont);
     ASSERT(scalingFactor);
 
     // The initial y value refers to overline position.

Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp	2014-02-03 01:03:48 UTC (rev 163276)
@@ -180,34 +180,32 @@
     return s_currentContentTransformation;
 }
 
-float SVGRenderingContext::calculateScreenFontSizeScalingFactor(const RenderObject* renderer)
+float SVGRenderingContext::calculateScreenFontSizeScalingFactor(const RenderObject& renderer)
 {
-    ASSERT(renderer);
-
     AffineTransform ctm;
     calculateTransformationToOutermostCoordinateSystem(renderer, ctm);
     return narrowPrecisionToFloat(sqrt((pow(ctm.xScale(), 2) + pow(ctm.yScale(), 2)) / 2));
 }
 
-void SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(const RenderObject* renderer, AffineTransform& absoluteTransform)
+void SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(const RenderObject& renderer, AffineTransform& absoluteTransform)
 {
-    ASSERT(renderer);
     absoluteTransform = currentContentTransformation();
 
     float deviceScaleFactor = 1;
-    if (Page* page = renderer->document().page())
+    if (Page* page = renderer.document().page())
         deviceScaleFactor = page->deviceScaleFactor();
 
     // Walk up the render tree, accumulating SVG transforms.
-    while (renderer) {
-        absoluteTransform = renderer->localToParentTransform() * absoluteTransform;
-        if (renderer->isSVGRoot())
+    const RenderObject* ancestor = &renderer;
+    while (ancestor) {
+        absoluteTransform = ancestor->localToParentTransform() * absoluteTransform;
+        if (ancestor->isSVGRoot())
             break;
-        renderer = renderer->parent();
+        ancestor = ancestor->parent();
     }
 
     // Continue walking up the layer tree, accumulating CSS transforms.
-    RenderLayer* layer = renderer ? renderer->enclosingLayer() : 0;
+    RenderLayer* layer = ancestor ? ancestor->enclosingLayer() : nullptr;
     while (layer) {
         if (TransformationMatrix* layerTransform = layer->transform())
             absoluteTransform = layerTransform->toAffineTransform() * absoluteTransform;

Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h (163275 => 163276)


--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h	2014-02-03 00:38:36 UTC (rev 163275)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h	2014-02-03 01:03:48 UTC (rev 163276)
@@ -83,8 +83,8 @@
     static void renderSubtreeToImageBuffer(ImageBuffer*, RenderElement&, const AffineTransform&);
     static void clipToImageBuffer(GraphicsContext*, const AffineTransform& absoluteTransform, const FloatRect& targetRect, std::unique_ptr<ImageBuffer>&, bool safeToClear);
 
-    static float calculateScreenFontSizeScalingFactor(const RenderObject*);
-    static void calculateTransformationToOutermostCoordinateSystem(const RenderObject*, AffineTransform& absoluteTransform);
+    static float calculateScreenFontSizeScalingFactor(const RenderObject&);
+    static void calculateTransformationToOutermostCoordinateSystem(const RenderObject&, AffineTransform& absoluteTransform);
     static IntSize clampedAbsoluteSize(const IntSize&);
     static FloatRect clampedAbsoluteTargetRect(const FloatRect& absoluteTargetRect);
     static void clear2DRotation(AffineTransform&);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to