Commit 61dd6a53 authored by fmalita@chromium.org's avatar fmalita@chromium.org

[SVG] Remove calculateDeviceSpaceTransformation()

With most of the SVG record time rasterization out of the way, the only
client left for calculateDeviceSpaceTransformation() is
calculateScreenFontSizeScalingFactor(). Let's hide the ugly there.

R=fs@opera.com,schenney@chromium.org,pdr@chromium.org

Review URL: https://codereview.chromium.org/677443003

git-svn-id: svn://svn.chromium.org/blink/trunk@184305 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 52da6cbc
......@@ -194,17 +194,6 @@ SubtreeContentTransformScope::~SubtreeContentTransformScope()
}
float SVGRenderingContext::calculateScreenFontSizeScalingFactor(const RenderObject* renderer)
{
ASSERT(renderer);
AffineTransform ctm;
// FIXME: calculateDeviceSpaceTransformation() queries layer compositing state - which is not
// supported during layout. Hence, the result may not include all CSS transforms.
calculateDeviceSpaceTransformation(renderer, ctm);
return narrowPrecisionToFloat(sqrt((pow(ctm.xScale(), 2) + pow(ctm.yScale(), 2)) / 2));
}
void SVGRenderingContext::calculateDeviceSpaceTransformation(const RenderObject* renderer, AffineTransform& absoluteTransform)
{
// FIXME: trying to compute a device space transform at record time is wrong. All clients
// should be updated to avoid relying on this information, and the method should be removed.
......@@ -214,15 +203,17 @@ void SVGRenderingContext::calculateDeviceSpaceTransformation(const RenderObject*
float deviceScaleFactor = renderer->document().frameHost()->deviceScaleFactor();
// Walk up the render tree, accumulating SVG transforms.
absoluteTransform = currentContentTransformation();
AffineTransform ctm = currentContentTransformation();
while (renderer) {
absoluteTransform = renderer->localToParentTransform() * absoluteTransform;
ctm = renderer->localToParentTransform() * ctm;
if (renderer->isSVGRoot())
break;
renderer = renderer->parent();
}
// Continue walking up the layer tree, accumulating CSS transforms.
// FIXME: this queries layer compositing state - which is not
// supported during layout. Hence, the result may not include all CSS transforms.
RenderLayer* layer = renderer ? renderer->enclosingLayer() : 0;
while (layer && layer->isAllowedToQueryCompositingState()) {
// We can stop at compositing layers, to match the backing resolution.
......@@ -234,12 +225,14 @@ void SVGRenderingContext::calculateDeviceSpaceTransformation(const RenderObject*
break;
if (TransformationMatrix* layerTransform = layer->transform())
absoluteTransform = layerTransform->toAffineTransform() * absoluteTransform;
ctm = layerTransform->toAffineTransform() * ctm;
layer = layer->parent();
}
absoluteTransform.scale(deviceScaleFactor);
ctm.scale(deviceScaleFactor);
return narrowPrecisionToFloat(sqrt((pow(ctm.xScale(), 2) + pow(ctm.yScale(), 2)) / 2));
}
void SVGRenderingContext::renderSubtree(GraphicsContext* context, RenderObject* item)
......
......@@ -85,7 +85,6 @@ public:
static void renderSubtree(GraphicsContext*, RenderObject*);
static float calculateScreenFontSizeScalingFactor(const RenderObject*);
static void calculateDeviceSpaceTransformation(const RenderObject*, AffineTransform& absoluteTransform);
// Support for the buffered-rendering hint.
bool bufferForeground(OwnPtr<ImageBuffer>&);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment