RenderSVGResourceLinearGradient.cpp [plain text]
#include "config.h"
#include "RenderSVGResourceLinearGradient.h"
#include <wtf/IsoMallocInlines.h>
namespace WebCore {
WTF_MAKE_ISO_ALLOCATED_IMPL(RenderSVGResourceLinearGradient);
RenderSVGResourceLinearGradient::RenderSVGResourceLinearGradient(SVGLinearGradientElement& element, RenderStyle&& style)
: RenderSVGResourceGradient(element, WTFMove(style))
{
}
RenderSVGResourceLinearGradient::~RenderSVGResourceLinearGradient() = default;
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 RenderStyle& style) const
{
gradientData->gradient = Gradient::create(Gradient::LinearData { startPoint(m_attributes), endPoint(m_attributes) });
gradientData->gradient->setSpreadMethod(platformSpreadMethodFromSVGType(m_attributes.spreadMethod()));
addStops(gradientData, m_attributes.stops(), style);
}
}