X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2FWebKit%2FSource%2Fcore%2Frendering%2Fsvg%2FRenderSVGContainer.cpp;h=81bb57f405330106181a5ac3d82827b1fdb1c631;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=5767807922e5ffc7f5e96fec0f4a65450951eae1;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/WebKit/Source/core/rendering/svg/RenderSVGContainer.cpp b/src/third_party/WebKit/Source/core/rendering/svg/RenderSVGContainer.cpp index 5767807..81bb57f 100644 --- a/src/third_party/WebKit/Source/core/rendering/svg/RenderSVGContainer.cpp +++ b/src/third_party/WebKit/Source/core/rendering/svg/RenderSVGContainer.cpp @@ -27,7 +27,6 @@ #include "core/frame/Settings.h" #include "core/rendering/GraphicsContextAnnotator.h" -#include "core/rendering/LayoutRepainter.h" #include "core/rendering/RenderView.h" #include "core/rendering/svg/SVGRenderSupport.h" #include "core/rendering/svg/SVGRenderingContext.h" @@ -36,7 +35,7 @@ #include "platform/graphics/GraphicsContextCullSaver.h" #include "platform/graphics/GraphicsContextStateSaver.h" -namespace WebCore { +namespace blink { RenderSVGContainer::RenderSVGContainer(SVGElement* node) : RenderSVGModelObject(node) @@ -49,15 +48,16 @@ RenderSVGContainer::~RenderSVGContainer() { } +void RenderSVGContainer::trace(Visitor* visitor) +{ + visitor->trace(m_children); + RenderSVGModelObject::trace(visitor); +} + void RenderSVGContainer::layout() { ASSERT(needsLayout()); - // RenderSVGRoot disables layoutState for the SVG rendering tree. - ASSERT(!view()->layoutStateCachedOffsetsEnabled()); - - LayoutRepainter repainter(*this, SVGRenderSupport::checkForSVGRepaintDuringLayout(this) || selfWillPaint()); - // Allow RenderSVGViewportContainer to update its viewport. calcViewport(); @@ -73,8 +73,6 @@ void RenderSVGContainer::layout() if (everHadLayout() && needsLayout()) SVGResourcesCache::clientLayoutChanged(this); - // At this point LayoutRepainter already grabbed the old bounds, - // recalculate them now so repaintAfterLayout() uses the new bounds. if (m_needsBoundariesUpdate || updatedTransform) { updateCachedBoundaries(); m_needsBoundariesUpdate = false; @@ -83,7 +81,6 @@ void RenderSVGContainer::layout() RenderSVGModelObject::setNeedsBoundariesUpdate(); } - repainter.repaintAfterLayout(); clearNeedsLayout(); } @@ -110,15 +107,12 @@ void RenderSVGContainer::paint(PaintInfo& paintInfo, const LayoutPoint&) { ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this); - if (paintInfo.context->paintingDisabled()) - return; - // Spec: groups w/o children still may render filter content. if (!firstChild() && !selfWillPaint()) return; - FloatRect repaintRect = paintInvalidationRectInLocalCoordinates(); - if (!SVGRenderSupport::paintInfoIntersectsRepaintRect(repaintRect, localToParentTransform(), paintInfo)) + FloatRect paintInvalidationRect = paintInvalidationRectInLocalCoordinates(); + if (!SVGRenderSupport::paintInfoIntersectsPaintInvalidationRect(paintInvalidationRect, localToParentTransform(), paintInfo)) return; PaintInfo childPaintInfo(paintInfo); @@ -154,13 +148,13 @@ void RenderSVGContainer::paint(PaintInfo& paintInfo, const LayoutPoint&) // FIXME: This means our focus ring won't share our rotation like it should. // We should instead disable our clip during PaintPhaseOutline if (paintInfo.phase == PaintPhaseForeground && style()->outlineWidth() && style()->visibility() == VISIBLE) { - IntRect paintRectInParent = enclosingIntRect(localToParentTransform().mapRect(repaintRect)); + IntRect paintRectInParent = enclosingIntRect(localToParentTransform().mapRect(paintInvalidationRect)); paintOutline(paintInfo, paintRectInParent); } } // addFocusRingRects is called from paintOutline and needs to be in the same coordinates as the paintOuline call -void RenderSVGContainer::addFocusRingRects(Vector& rects, const LayoutPoint&, const RenderLayerModelObject*) +void RenderSVGContainer::addFocusRingRects(Vector& rects, const LayoutPoint&, const RenderLayerModelObject*) const { IntRect paintRectInParent = enclosingIntRect(localToParentTransform().mapRect(paintInvalidationRectInLocalCoordinates())); if (!paintRectInParent.isEmpty()) @@ -169,8 +163,8 @@ void RenderSVGContainer::addFocusRingRects(Vector& rects, const LayoutP void RenderSVGContainer::updateCachedBoundaries() { - SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_repaintBoundingBox); - SVGRenderSupport::intersectRepaintRectWithResources(this, m_repaintBoundingBox); + SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_paintInvalidationBoundingBox); + SVGRenderSupport::intersectPaintInvalidationRectWithResources(this, m_paintInvalidationBoundingBox); } bool RenderSVGContainer::nodeAtFloatPoint(const HitTestRequest& request, HitTestResult& result, const FloatPoint& pointInParent, HitTestAction hitTestAction) @@ -179,9 +173,8 @@ bool RenderSVGContainer::nodeAtFloatPoint(const HitTestRequest& request, HitTest if (!pointIsInsideViewportClip(pointInParent)) return false; - FloatPoint localPoint = localToParentTransform().inverse().mapPoint(pointInParent); - - if (!SVGRenderSupport::pointInClippingArea(this, localPoint)) + FloatPoint localPoint; + if (!SVGRenderSupport::transformToUserSpaceAndCheckClipping(this, localToParentTransform(), pointInParent, localPoint)) return false; for (RenderObject* child = lastChild(); child; child = child->previousSibling()) {