Chromium Code Reviews| Index: Source/core/rendering/style/BasicShapes.cpp |
| diff --git a/Source/core/rendering/style/BasicShapes.cpp b/Source/core/rendering/style/BasicShapes.cpp |
| index ecff010c7263533d657eb695356ba86ac5b7e929..ca2d645a5dc2cf3a352e88ec85484e64406a4fd3 100644 |
| --- a/Source/core/rendering/style/BasicShapes.cpp |
| +++ b/Source/core/rendering/style/BasicShapes.cpp |
| @@ -31,12 +31,30 @@ |
| #include "core/rendering/style/BasicShapes.h" |
| #include "core/css/BasicShapeFunctions.h" |
| +#include "platform/CalculationValue.h" |
| #include "platform/LengthFunctions.h" |
| #include "platform/geometry/FloatRect.h" |
| #include "platform/graphics/Path.h" |
| namespace WebCore { |
| +void BasicShapeCenterCoordinate::updateComputedLength() |
| +{ |
| + if (m_direction == TopLeft) { |
| + m_computedLength = m_length.isUndefined() ? Length(0, Fixed) : m_length; |
| + return; |
| + } |
| + if (m_length.isUndefined()) { |
| + m_computedLength = Length(100, Percent); |
| + return; |
| + } |
| + |
| + OwnPtr<CalcExpressionLength> lhs = adoptPtr(new CalcExpressionLength(Length(100, Percent))); |
| + OwnPtr<CalcExpressionLength> rhs = adoptPtr(new CalcExpressionLength(m_length)); |
| + OwnPtr<CalcExpressionBinaryOperation> op = adoptPtr(new CalcExpressionBinaryOperation(lhs.release(), rhs.release(), CalcSubtract)); |
| + m_computedLength = Length(CalculationValue::create(op.release(), ValueRangeAll)); |
| +} |
| + |
| bool BasicShape::canBlend(const BasicShape* other) const |
| { |
| // FIXME: Support animations between different shapes in the future. |
| @@ -53,9 +71,7 @@ bool BasicShape::canBlend(const BasicShape* other) const |
| if (type() == BasicShape::BasicShapeCircleType) { |
| const BasicShapeCircle* thisCircle = static_cast<const BasicShapeCircle*>(this); |
| const BasicShapeCircle* otherCircle = static_cast<const BasicShapeCircle*>(other); |
| - if (!thisCircle->radius().canBlend(otherCircle->radius()) |
| - || !thisCircle->centerX().canBlend(otherCircle->centerX()) |
| - || !thisCircle->centerY().canBlend(otherCircle->centerY())) |
| + if (!thisCircle->radius().canBlend(otherCircle->radius())) |
| return false; |
| } |
| @@ -66,9 +82,7 @@ bool BasicShape::canBlend(const BasicShape* other) const |
| const BasicShapeEllipse* thisEllipse = static_cast<const BasicShapeEllipse*>(this); |
| const BasicShapeEllipse* otherEllipse = static_cast<const BasicShapeEllipse*>(other); |
| return (thisEllipse->radiusX().canBlend(otherEllipse->radiusX()) |
| - && thisEllipse->radiusY().canBlend(otherEllipse->radiusY()) |
| - && thisEllipse->centerX().canBlend(otherEllipse->centerX()) |
| - && thisEllipse->centerY().canBlend(otherEllipse->centerY())); |
| + && thisEllipse->radiusY().canBlend(otherEllipse->radiusY())); |
| } |
| void BasicShapeRectangle::path(Path& path, const FloatRect& boundingBox) |
| @@ -375,4 +389,5 @@ bool BasicShapeInsetRectangle::operator==(const BasicShape& o) const |
| const BasicShapeInsetRectangle& other = toBasicShapeInsetRectangle(o); |
| return m_right == other.m_right && m_top == other.m_top && m_bottom == other.m_bottom && m_left == other.m_left && m_cornerRadiusX == other.m_cornerRadiusX && m_cornerRadiusY == other.m_cornerRadiusY; |
| } |
| + |
|
Bear Travis
2014/01/23 22:04:42
Extra newline.
|
| } |