121939df44de1705786c545cd1bf519d47250322dBen Murdoch/*
221939df44de1705786c545cd1bf519d47250322dBen Murdoch * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
321939df44de1705786c545cd1bf519d47250322dBen Murdoch * Copyright (C) Research In Motion Limited 2010. All rights reserved.
421939df44de1705786c545cd1bf519d47250322dBen Murdoch *
521939df44de1705786c545cd1bf519d47250322dBen Murdoch * This library is free software; you can redistribute it and/or
621939df44de1705786c545cd1bf519d47250322dBen Murdoch * modify it under the terms of the GNU Library General Public
721939df44de1705786c545cd1bf519d47250322dBen Murdoch * License as published by the Free Software Foundation; either
821939df44de1705786c545cd1bf519d47250322dBen Murdoch * version 2 of the License, or (at your option) any later version.
921939df44de1705786c545cd1bf519d47250322dBen Murdoch *
1021939df44de1705786c545cd1bf519d47250322dBen Murdoch * This library is distributed in the hope that it will be useful,
1121939df44de1705786c545cd1bf519d47250322dBen Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of
1221939df44de1705786c545cd1bf519d47250322dBen Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1321939df44de1705786c545cd1bf519d47250322dBen Murdoch * Library General Public License for more details.
1421939df44de1705786c545cd1bf519d47250322dBen Murdoch *
1521939df44de1705786c545cd1bf519d47250322dBen Murdoch * You should have received a copy of the GNU Library General Public License
1621939df44de1705786c545cd1bf519d47250322dBen Murdoch * along with this library; see the file COPYING.LIB.  If not, write to
1721939df44de1705786c545cd1bf519d47250322dBen Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
1821939df44de1705786c545cd1bf519d47250322dBen Murdoch * Boston, MA 02110-1301, USA.
1921939df44de1705786c545cd1bf519d47250322dBen Murdoch */
2021939df44de1705786c545cd1bf519d47250322dBen Murdoch
2121939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "config.h"
2221939df44de1705786c545cd1bf519d47250322dBen Murdoch
2321939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(SVG)
2421939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "RenderSVGResourceRadialGradient.h"
2521939df44de1705786c545cd1bf519d47250322dBen Murdoch
2621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "RadialGradientAttributes.h"
2721939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SVGRadialGradientElement.h"
2821939df44de1705786c545cd1bf519d47250322dBen Murdoch
2921939df44de1705786c545cd1bf519d47250322dBen Murdochnamespace WebCore {
3021939df44de1705786c545cd1bf519d47250322dBen Murdoch
3121939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceType RenderSVGResourceRadialGradient::s_resourceType = RadialGradientResourceType;
3221939df44de1705786c545cd1bf519d47250322dBen Murdoch
3321939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceRadialGradient::RenderSVGResourceRadialGradient(SVGRadialGradientElement* node)
3421939df44de1705786c545cd1bf519d47250322dBen Murdoch    : RenderSVGResourceGradient(node)
3521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
3621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
3721939df44de1705786c545cd1bf519d47250322dBen Murdoch
3821939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceRadialGradient::~RenderSVGResourceRadialGradient()
3921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
4021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
4121939df44de1705786c545cd1bf519d47250322dBen Murdoch
42a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid RenderSVGResourceRadialGradient::collectGradientAttributes(SVGGradientElement* gradientElement)
43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    m_attributes = RadialGradientAttributes();
45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    static_cast<SVGRadialGradientElement*>(gradientElement)->collectGradientAttributes(m_attributes);
46a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
4821939df44de1705786c545cd1bf519d47250322dBen Murdochvoid RenderSVGResourceRadialGradient::buildGradient(GradientData* gradientData, SVGGradientElement* gradientElement) const
4921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGRadialGradientElement* radialGradientElement = static_cast<SVGRadialGradientElement*>(gradientElement);
5121939df44de1705786c545cd1bf519d47250322dBen Murdoch
5221939df44de1705786c545cd1bf519d47250322dBen Murdoch    // Determine gradient focal/center points and radius
5321939df44de1705786c545cd1bf519d47250322dBen Murdoch    FloatPoint focalPoint;
5421939df44de1705786c545cd1bf519d47250322dBen Murdoch    FloatPoint centerPoint;
5521939df44de1705786c545cd1bf519d47250322dBen Murdoch    float radius;
56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    radialGradientElement->calculateFocalCenterPointsAndRadius(m_attributes, focalPoint, centerPoint, radius);
5721939df44de1705786c545cd1bf519d47250322dBen Murdoch
5821939df44de1705786c545cd1bf519d47250322dBen Murdoch    gradientData->gradient = Gradient::create(focalPoint,
59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch                                              0, // SVG does not support a "focus radius"
6021939df44de1705786c545cd1bf519d47250322dBen Murdoch                                              centerPoint,
6121939df44de1705786c545cd1bf519d47250322dBen Murdoch                                              radius);
6221939df44de1705786c545cd1bf519d47250322dBen Murdoch
63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    gradientData->gradient->setSpreadMethod(m_attributes.spreadMethod());
6421939df44de1705786c545cd1bf519d47250322dBen Murdoch
6521939df44de1705786c545cd1bf519d47250322dBen Murdoch    // Add stops
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    addStops(gradientData, m_attributes.stops());
6721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
6821939df44de1705786c545cd1bf519d47250322dBen Murdoch
6921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
7021939df44de1705786c545cd1bf519d47250322dBen Murdoch
7121939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
72