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&);