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

Unified Diff: Source/core/rendering/svg/RenderSVGShape.cpp

Issue 701433002: Lazily allocate svg shape transforms, shrink RenderSVGShape by 44B (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address reviewer comments Created 6 years, 1 month 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
Index: Source/core/rendering/svg/RenderSVGShape.cpp
diff --git a/Source/core/rendering/svg/RenderSVGShape.cpp b/Source/core/rendering/svg/RenderSVGShape.cpp
index ba966d95be3449e7eb0e36b9f6a72cebb94d4431..6af63577485c656c2504daa1ee167af4b123096a 100644
--- a/Source/core/rendering/svg/RenderSVGShape.cpp
+++ b/Source/core/rendering/svg/RenderSVGShape.cpp
@@ -123,7 +123,16 @@ void RenderSVGShape::layout()
}
if (m_needsTransformUpdate) {
- m_localTransform = toSVGGraphicsElement(element())->calculateAnimatedLocalTransform();
+ SVGGraphicsElement* graphicsElement = toSVGGraphicsElement(element());
+ if (graphicsElement->hasAnimatedLocalTransform()) {
pdr. 2014/11/07 04:21:33 I'm not a huge fan of how this looks... do either
f(malita) 2014/11/07 18:23:12 Not necessarily better, but if you want to optimiz
fs 2014/11/10 11:36:43 No greater suggestions here either. You could get
+ if (m_localTransform)
+ *m_localTransform = graphicsElement->calculateAnimatedLocalTransform();
+ else
+ m_localTransform = adoptPtr(new AffineTransform(graphicsElement->calculateAnimatedLocalTransform()));
+ } else {
+ m_localTransform = 0;
+ }
+
m_needsTransformUpdate = false;
updateCachedBoundariesInParents = true;
}
@@ -175,7 +184,7 @@ bool RenderSVGShape::nodeAtFloatPoint(const HitTestRequest& request, HitTestResu
return false;
FloatPoint localPoint;
- if (!SVGRenderSupport::transformToUserSpaceAndCheckClipping(this, m_localTransform, pointInParent, localPoint))
+ if (!SVGRenderSupport::transformToUserSpaceAndCheckClipping(this, localToParentTransform(), pointInParent, localPoint))
return false;
PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTING, request, style()->pointerEvents());

Powered by Google App Engine
This is Rietveld 408576698