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