Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(537)

Unified Diff: sky/engine/core/rendering/RenderLayer.cpp

Issue 965013003: Move transforms from RenderLayer to RenderBox. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderLayerClipper.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/rendering/RenderLayer.cpp
diff --git a/sky/engine/core/rendering/RenderLayer.cpp b/sky/engine/core/rendering/RenderLayer.cpp
index c94a575d3557108c8f38eda8365befbb6dd19c43..db2feecc9dd17312cc7f4b057e5a2f51ab1cab78 100644
--- a/sky/engine/core/rendering/RenderLayer.cpp
+++ b/sky/engine/core/rendering/RenderLayer.cpp
@@ -102,46 +102,6 @@ void RenderLayer::updateLayerPositionsAfterLayout()
m_clipper.clearClipRectsIncludingDescendants();
}
-void RenderLayer::updateTransformationMatrix()
-{
- if (m_transform) {
- RenderBox* box = renderer();
- m_transform->makeIdentity();
- box->style()->applyTransform(*m_transform, box->pixelSnappedBorderBoxRect().size(), RenderStyle::IncludeTransformOrigin);
- // FIXME(sky): We shouldn't need to do this once Skia has 4x4 matrix support.
- // Until then, 3d transforms don't work right.
- m_transform->makeAffine();
- }
-}
-
-void RenderLayer::updateTransform(const RenderStyle* oldStyle, RenderStyle* newStyle)
-{
- if (oldStyle && newStyle->transformDataEquivalent(*oldStyle))
- return;
-
- // hasTransform() on the renderer is also true when there is transform-style: preserve-3d or perspective set,
- // so check style too.
- bool hasTransform = renderer()->hasTransform() && newStyle->hasTransform();
- bool had3DTransform = has3DTransform();
-
- bool hadTransform = m_transform;
- if (hasTransform != hadTransform) {
- if (hasTransform)
- m_transform = adoptPtr(new TransformationMatrix);
- else
- m_transform.clear();
-
- // Layers with transforms act as clip rects roots, so clear the cached clip rects here.
- m_clipper.clearClipRectsIncludingDescendants();
- } else if (hasTransform) {
- m_clipper.clearClipRectsIncludingDescendants(AbsoluteClipRects);
- }
-
- updateTransformationMatrix();
-
- if (had3DTransform != has3DTransform())
- dirty3DTransformedDescendantStatus();
-}
void RenderLayer::dirty3DTransformedDescendantStatus()
{
@@ -153,7 +113,7 @@ void RenderLayer::dirty3DTransformedDescendantStatus()
// This propagates up through preserve-3d hierarchies to the enclosing flattening layer.
// Note that preserves3D() creates stacking context, so we can just run up the stacking containers.
- while (stackingNode && stackingNode->layer()->preserves3D()) {
+ while (stackingNode && stackingNode->layer()->renderer()->style()->preserves3D()) {
stackingNode->layer()->m_3DTransformedDescendantStatusDirty = true;
stackingNode = stackingNode->ancestorStackingContextNode();
}
@@ -178,10 +138,10 @@ bool RenderLayer::update3DTransformedDescendantStatus()
// If we live in a 3d hierarchy, then the layer at the root of that hierarchy needs
// the m_has3DTransformedDescendant set.
- if (preserves3D())
- return has3DTransform() || m_has3DTransformedDescendant;
+ if (renderer()->style()->preserves3D())
+ return renderer()->has3DTransform() || m_has3DTransformedDescendant;
- return has3DTransform();
+ return renderer()->has3DTransform();
}
IntSize RenderLayer::size() const
@@ -571,8 +531,8 @@ LayoutRect RenderLayer::boundingBoxForCompositing(const RenderLayer* ancestorLay
LayoutRect localClipRect = clipper().localClipRect();
if (localClipRect != PaintInfo::infiniteRect()) {
- if (transform())
- localClipRect = transform()->mapRect(localClipRect);
+ if (renderer()->transform())
+ localClipRect = renderer()->transform()->mapRect(localClipRect);
LayoutPoint delta;
convertToLayerCoords(ancestorLayer, delta);
@@ -592,8 +552,8 @@ LayoutRect RenderLayer::boundingBoxForCompositing(const RenderLayer* ancestorLay
// https://bugs.webkit.org/show_bug.cgi?id=81239
m_renderer->style()->filterOutsets().expandRect(result);
- if (transform())
- result = transform()->mapRect(result);
+ if (renderer()->transform())
+ result = renderer()->transform()->mapRect(result);
LayoutPoint delta;
convertToLayerCoords(ancestorLayer, delta);
@@ -614,8 +574,6 @@ void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle
// Overlay scrollbars can make this layer self-painting so we need
// to recompute the bit once scrollbars have been updated.
m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
-
- updateTransform(oldStyle, renderer()->style());
}
} // namespace blink
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderLayerClipper.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698