Index: Source/core/rendering/svg/RenderSVGBlock.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGBlock.cpp b/Source/core/rendering/svg/RenderSVGBlock.cpp |
deleted file mode 100644 |
index 9905f0a9a4f8860696c457b5f1cbd50cebdd5a5a..0000000000000000000000000000000000000000 |
--- a/Source/core/rendering/svg/RenderSVGBlock.cpp |
+++ /dev/null |
@@ -1,154 +0,0 @@ |
-/* |
- * Copyright (C) 2006 Apple Computer, Inc. |
- * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> |
- * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
- * |
- * This library is free software; you can redistribute it and/or |
- * modify it under the terms of the GNU Library General Public |
- * License as published by the Free Software Foundation; either |
- * version 2 of the License, or (at your option) any later version. |
- * |
- * This library is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
- * Library General Public License for more details. |
- * |
- * You should have received a copy of the GNU Library General Public License |
- * along with this library; see the file COPYING.LIB. If not, write to |
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
- * Boston, MA 02110-1301, USA. |
- */ |
- |
-#include "config.h" |
-#include "core/rendering/svg/RenderSVGBlock.h" |
- |
-#include "core/layout/style/ShadowList.h" |
-#include "core/layout/svg/SVGLayoutSupport.h" |
-#include "core/layout/svg/SVGResourcesCache.h" |
-#include "core/rendering/RenderView.h" |
-#include "core/rendering/svg/RenderSVGRoot.h" |
-#include "core/svg/SVGElement.h" |
- |
-namespace blink { |
- |
-RenderSVGBlock::RenderSVGBlock(SVGElement* element) |
- : RenderBlockFlow(element) |
-{ |
-} |
- |
-LayoutRect RenderSVGBlock::visualOverflowRect() const |
-{ |
- LayoutRect borderRect = borderBoxRect(); |
- |
- if (const ShadowList* textShadow = style()->textShadow()) |
- textShadow->adjustRectForShadow(borderRect); |
- |
- return borderRect; |
-} |
- |
-void RenderSVGBlock::updateFromStyle() |
-{ |
- RenderBlock::updateFromStyle(); |
- |
- // RenderSVGlock, used by Render(SVGText|ForeignObject), is not allowed to call setHasOverflowClip(true). |
- // RenderBlock assumes a layer to be present when the overflow clip functionality is requested. Both |
- // Render(SVGText|ForeignObject) return 'NoLayer' on 'layerTypeRequired'. Fine for LayoutSVGText. |
- // |
- // If we want to support overflow rules for <foreignObject> we can choose between two solutions: |
- // a) make LayoutSVGForeignObject require layers and SVG layer aware |
- // b) reactor overflow logic out of Layer (as suggested by dhyatt), which is a large task |
- // |
- // Until this is resolved, disable overflow support. Opera/FF don't support it as well at the moment (Feb 2010). |
- // |
- // Note: This does NOT affect overflow handling on outer/inner <svg> elements - this is handled |
- // manually by RenderSVGRoot - which owns the documents enclosing root layer and thus works fine. |
- setHasOverflowClip(false); |
-} |
- |
-void RenderSVGBlock::absoluteRects(Vector<IntRect>&, const LayoutPoint&) const |
-{ |
- // This code path should never be taken for SVG, as we're assuming useTransforms=true everywhere, absoluteQuads should be used. |
- ASSERT_NOT_REACHED(); |
-} |
- |
-void RenderSVGBlock::willBeDestroyed() |
-{ |
- SVGResourcesCache::clientDestroyed(this); |
- RenderBlockFlow::willBeDestroyed(); |
-} |
- |
-void RenderSVGBlock::styleDidChange(StyleDifference diff, const LayoutStyle* oldStyle) |
-{ |
- if (diff.needsFullLayout()) |
- setNeedsBoundariesUpdate(); |
- |
- if (isBlendingAllowed()) { |
- bool hasBlendModeChanged = (oldStyle && oldStyle->hasBlendMode()) == !style()->hasBlendMode(); |
- if (parent() && hasBlendModeChanged) |
- parent()->descendantIsolationRequirementsChanged(style()->hasBlendMode() ? DescendantIsolationRequired : DescendantIsolationNeedsUpdate); |
- } |
- |
- RenderBlock::styleDidChange(diff, oldStyle); |
- SVGResourcesCache::clientStyleChanged(this, diff, styleRef()); |
-} |
- |
-void RenderSVGBlock::mapLocalToContainer(const LayoutLayerModelObject* paintInvalidationContainer, TransformState& transformState, MapCoordinatesFlags, bool* wasFixed, const PaintInvalidationState* paintInvalidationState) const |
-{ |
- SVGLayoutSupport::mapLocalToContainer(this, paintInvalidationContainer, transformState, wasFixed, paintInvalidationState); |
-} |
- |
-const LayoutObject* RenderSVGBlock::pushMappingToContainer(const LayoutLayerModelObject* ancestorToStopAt, LayoutGeometryMap& geometryMap) const |
-{ |
- return SVGLayoutSupport::pushMappingToContainer(this, ancestorToStopAt, geometryMap); |
-} |
- |
-LayoutRect RenderSVGBlock::clippedOverflowRectForPaintInvalidation(const LayoutLayerModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const |
-{ |
- return SVGLayoutSupport::clippedOverflowRectForPaintInvalidation(this, paintInvalidationContainer, paintInvalidationState); |
-} |
- |
-void RenderSVGBlock::mapRectToPaintInvalidationBacking(const LayoutLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const |
-{ |
- FloatRect paintInvalidationRect = rect; |
- paintInvalidationRect.inflate(style()->outlineWidth()); |
- const RenderSVGRoot& svgRoot = SVGLayoutSupport::mapRectToSVGRootForPaintInvalidation(this, paintInvalidationRect, rect); |
- svgRoot.mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, paintInvalidationState); |
-} |
- |
-bool RenderSVGBlock::nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation&, const LayoutPoint&, HitTestAction) |
-{ |
- ASSERT_NOT_REACHED(); |
- return false; |
-} |
- |
-void RenderSVGBlock::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState) |
-{ |
- if (!shouldCheckForPaintInvalidation(paintInvalidationState)) |
- return; |
- |
- if (paintInvalidationState.cachedOffsetsEnabled()) { |
- m_cachedPaintInvalidationTransform = paintInvalidationState.svgTransform(); |
- } else { |
- m_cachedPaintInvalidationTransform.makeIdentity(); |
- LayoutObject* next = parent(); |
- while (!next->isSVGRoot()) { |
- m_cachedPaintInvalidationTransform = next->localToParentTransform() * m_cachedPaintInvalidationTransform; |
- next = next->parent(); |
- ASSERT(next); |
- } |
- m_cachedPaintInvalidationTransform = toRenderSVGRoot(next)->localToBorderBoxTransform() * m_cachedPaintInvalidationTransform; |
- } |
- |
- ForceHorriblySlowRectMapping slowRectMapping(&paintInvalidationState); |
- RenderBlockFlow::invalidateTreeIfNeeded(paintInvalidationState); |
-} |
- |
-void RenderSVGBlock::updatePaintInfoRect(IntRect& rect) |
-{ |
- if (rect != LayoutRect::infiniteIntRect()) { |
- AffineTransform transformToRoot = m_cachedPaintInvalidationTransform * localTransform(); |
- rect = enclosingIntRect(transformToRoot.inverse().mapRect(FloatRect(rect))); |
- } |
-} |
- |
-} |