diff options
Diffstat (limited to 'WebCore/svg/SVGLinearGradientElement.cpp')
-rw-r--r-- | WebCore/svg/SVGLinearGradientElement.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/WebCore/svg/SVGLinearGradientElement.cpp b/WebCore/svg/SVGLinearGradientElement.cpp index 9927a50..f5c8cee 100644 --- a/WebCore/svg/SVGLinearGradientElement.cpp +++ b/WebCore/svg/SVGLinearGradientElement.cpp @@ -84,8 +84,15 @@ void SVGLinearGradientElement::buildGradient() const RefPtr<SVGPaintServerLinearGradient> linearGradient = WTF::static_pointer_cast<SVGPaintServerLinearGradient>(m_resource); - FloatPoint startPoint = FloatPoint::narrowPrecision(attributes.x1(), attributes.y1()); - FloatPoint endPoint = FloatPoint::narrowPrecision(attributes.x2(), attributes.y2()); + FloatPoint startPoint; + FloatPoint endPoint; + if (attributes.boundingBoxMode()) { + startPoint = FloatPoint(attributes.x1().valueAsPercentage(), attributes.y1().valueAsPercentage()); + endPoint = FloatPoint(attributes.x2().valueAsPercentage(), attributes.y2().valueAsPercentage()); + } else { + startPoint = FloatPoint(attributes.x1().value(this), attributes.y1().value(this)); + endPoint = FloatPoint(attributes.x2().value(this), attributes.y2().value(this)); + } RefPtr<Gradient> gradient = Gradient::create(startPoint, endPoint); gradient->setSpreadMethod(attributes.spreadMethod()); @@ -142,16 +149,16 @@ LinearGradientAttributes SVGLinearGradientElement::collectGradientProperties() c const SVGLinearGradientElement* linear = static_cast<const SVGLinearGradientElement*>(current); if (!attributes.hasX1() && current->hasAttribute(SVGNames::x1Attr)) - attributes.setX1(linear->x1().valueAsPercentage()); + attributes.setX1(linear->x1()); if (!attributes.hasY1() && current->hasAttribute(SVGNames::y1Attr)) - attributes.setY1(linear->y1().valueAsPercentage()); + attributes.setY1(linear->y1()); if (!attributes.hasX2() && current->hasAttribute(SVGNames::x2Attr)) - attributes.setX2(linear->x2().valueAsPercentage()); + attributes.setX2(linear->x2()); if (!attributes.hasY2() && current->hasAttribute(SVGNames::y2Attr)) - attributes.setY2(linear->y2().valueAsPercentage()); + attributes.setY2(linear->y2()); } processedGradients.add(current); |