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

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

Issue 927583002: Moving RenderSVG* files from rendering/ to layout/ (Closed) Base URL: svn://svn.chromium.org/blink/trunk
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 | « Source/core/rendering/svg/RenderSVGEllipse.h ('k') | Source/core/rendering/svg/RenderSVGForeignObject.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/svg/RenderSVGEllipse.cpp
diff --git a/Source/core/rendering/svg/RenderSVGEllipse.cpp b/Source/core/rendering/svg/RenderSVGEllipse.cpp
deleted file mode 100644
index d3bfbfcb8b1830c0a1111c4f54fd3c12b1379a23..0000000000000000000000000000000000000000
--- a/Source/core/rendering/svg/RenderSVGEllipse.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2012 Google, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#include "core/rendering/svg/RenderSVGEllipse.h"
-
-#include "core/svg/SVGCircleElement.h"
-#include "core/svg/SVGEllipseElement.h"
-
-#include <cmath>
-
-namespace blink {
-
-RenderSVGEllipse::RenderSVGEllipse(SVGGraphicsElement* node)
- : RenderSVGShape(node)
- , m_usePathFallback(false)
-{
-}
-
-RenderSVGEllipse::~RenderSVGEllipse()
-{
-}
-
-void RenderSVGEllipse::updateShapeFromElement()
-{
- // Before creating a new object we need to clear the cached bounding box
- // to avoid using garbage.
- m_fillBoundingBox = FloatRect();
- m_strokeBoundingBox = FloatRect();
- m_center = FloatPoint();
- m_radii = FloatSize();
- m_usePathFallback = false;
-
- calculateRadiiAndCenter();
-
- // Spec: "A negative value is an error. A value of zero disables rendering of the element."
- if (m_radii.width() < 0 || m_radii.height() < 0)
- return;
-
- if (!m_radii.isEmpty()) {
- // Fall back to RenderSVGShape and path-based hit detection if the ellipse
- // has a non-scaling or discontinuous stroke.
- if (hasNonScalingStroke() || !hasContinuousStroke()) {
- RenderSVGShape::updateShapeFromElement();
- m_usePathFallback = true;
- return;
- }
- }
-
- clearPath();
-
- m_fillBoundingBox = FloatRect(m_center.x() - m_radii.width(), m_center.y() - m_radii.height(), 2 * m_radii.width(), 2 * m_radii.height());
- m_strokeBoundingBox = m_fillBoundingBox;
- if (style()->svgStyle().hasStroke())
- m_strokeBoundingBox.inflate(strokeWidth() / 2);
-}
-
-void RenderSVGEllipse::calculateRadiiAndCenter()
-{
- ASSERT(element());
- if (isSVGCircleElement(*element())) {
- SVGCircleElement& circle = toSVGCircleElement(*element());
-
- SVGLengthContext lengthContext(&circle);
- float radius = circle.r()->currentValue()->value(lengthContext);
- m_radii = FloatSize(radius, radius);
- m_center = FloatPoint(circle.cx()->currentValue()->value(lengthContext), circle.cy()->currentValue()->value(lengthContext));
- return;
- }
-
- SVGEllipseElement& ellipse = toSVGEllipseElement(*element());
-
- SVGLengthContext lengthContext(&ellipse);
- m_radii = FloatSize(ellipse.rx()->currentValue()->value(lengthContext), ellipse.ry()->currentValue()->value(lengthContext));
- m_center = FloatPoint(ellipse.cx()->currentValue()->value(lengthContext), ellipse.cy()->currentValue()->value(lengthContext));
-}
-
-bool RenderSVGEllipse::shapeDependentStrokeContains(const FloatPoint& point)
-{
- // The optimized check below for circles does not support non-scaling or
- // discontinuous strokes.
- if (m_usePathFallback
- || !hasContinuousStroke()
- || m_radii.width() != m_radii.height()) {
- if (!hasPath())
- createPath();
- return RenderSVGShape::shapeDependentStrokeContains(point);
- }
-
- const FloatPoint center = FloatPoint(m_center.x() - point.x(), m_center.y() - point.y());
- const float halfStrokeWidth = strokeWidth() / 2;
- const float r = m_radii.width();
- return std::abs(center.length() - r) <= halfStrokeWidth;
-}
-
-bool RenderSVGEllipse::shapeDependentFillContains(const FloatPoint& point, const WindRule fillRule) const
-{
- const FloatPoint center = FloatPoint(m_center.x() - point.x(), m_center.y() - point.y());
-
- // This works by checking if the point satisfies the ellipse equation.
- // (x/rX)^2 + (y/rY)^2 <= 1
- const float xrX = center.x() / m_radii.width();
- const float yrY = center.y() / m_radii.height();
- return xrX * xrX + yrY * yrY <= 1.0;
-}
-
-bool RenderSVGEllipse::hasContinuousStroke() const
-{
- const SVGLayoutStyle& svgStyle = style()->svgStyle();
- return svgStyle.strokeDashArray()->isEmpty();
-}
-
-}
« no previous file with comments | « Source/core/rendering/svg/RenderSVGEllipse.h ('k') | Source/core/rendering/svg/RenderSVGForeignObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698