RenderSVGResourceLinearGradient.cpp [plain text]
#include "config.h"
#include "RenderSVGResourceLinearGradient.h"
namespace WebCore {
RenderSVGResourceType RenderSVGResourceLinearGradient::s_resourceType = LinearGradientResourceType;
RenderSVGResourceLinearGradient::RenderSVGResourceLinearGradient(SVGLinearGradientElement& element, PassRef<RenderStyle> style)
: RenderSVGResourceGradient(element, WTF::move(style))
{
}
RenderSVGResourceLinearGradient::~RenderSVGResourceLinearGradient()
{
}
bool RenderSVGResourceLinearGradient::collectGradientAttributes()
{
m_attributes = LinearGradientAttributes();
return linearGradientElement().collectGradientAttributes(m_attributes);
}
FloatPoint RenderSVGResourceLinearGradient::startPoint(const LinearGradientAttributes& attributes) const
{
return SVGLengthContext::resolvePoint(&linearGradientElement(), attributes.gradientUnits(), attributes.x1(), attributes.y1());
}
FloatPoint RenderSVGResourceLinearGradient::endPoint(const LinearGradientAttributes& attributes) const
{
return SVGLengthContext::resolvePoint(&linearGradientElement(), attributes.gradientUnits(), attributes.x2(), attributes.y2());
}
void RenderSVGResourceLinearGradient::buildGradient(GradientData* gradientData) const
{
gradientData->gradient = Gradient::create(startPoint(m_attributes), endPoint(m_attributes));
gradientData->gradient->setSpreadMethod(platformSpreadMethodFromSVGType(m_attributes.spreadMethod()));
addStops(gradientData, m_attributes.stops());
}
}