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 "RenderSVGResourceLinearGradient.h" 2521939df44de1705786c545cd1bf519d47250322dBen Murdoch 2621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "LinearGradientAttributes.h" 2721939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SVGLinearGradientElement.h" 2821939df44de1705786c545cd1bf519d47250322dBen Murdoch 2921939df44de1705786c545cd1bf519d47250322dBen Murdochnamespace WebCore { 3021939df44de1705786c545cd1bf519d47250322dBen Murdoch 3121939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceType RenderSVGResourceLinearGradient::s_resourceType = LinearGradientResourceType; 3221939df44de1705786c545cd1bf519d47250322dBen Murdoch 3321939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceLinearGradient::RenderSVGResourceLinearGradient(SVGLinearGradientElement* node) 3421939df44de1705786c545cd1bf519d47250322dBen Murdoch : RenderSVGResourceGradient(node) 3521939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 3621939df44de1705786c545cd1bf519d47250322dBen Murdoch} 3721939df44de1705786c545cd1bf519d47250322dBen Murdoch 3821939df44de1705786c545cd1bf519d47250322dBen MurdochRenderSVGResourceLinearGradient::~RenderSVGResourceLinearGradient() 3921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 4021939df44de1705786c545cd1bf519d47250322dBen Murdoch} 4121939df44de1705786c545cd1bf519d47250322dBen Murdoch 42a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid RenderSVGResourceLinearGradient::collectGradientAttributes(SVGGradientElement* gradientElement) 43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_attributes = LinearGradientAttributes(); 45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch static_cast<SVGLinearGradientElement*>(gradientElement)->collectGradientAttributes(m_attributes); 46a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 4821939df44de1705786c545cd1bf519d47250322dBen Murdochvoid RenderSVGResourceLinearGradient::buildGradient(GradientData* gradientData, SVGGradientElement* gradientElement) const 4921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 5021939df44de1705786c545cd1bf519d47250322dBen Murdoch SVGLinearGradientElement* linearGradientElement = static_cast<SVGLinearGradientElement*>(gradientElement); 5121939df44de1705786c545cd1bf519d47250322dBen Murdoch 5221939df44de1705786c545cd1bf519d47250322dBen Murdoch // Determine gradient start/end points 5321939df44de1705786c545cd1bf519d47250322dBen Murdoch FloatPoint startPoint; 5421939df44de1705786c545cd1bf519d47250322dBen Murdoch FloatPoint endPoint; 55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch linearGradientElement->calculateStartEndPoints(m_attributes, startPoint, endPoint); 5621939df44de1705786c545cd1bf519d47250322dBen Murdoch 5721939df44de1705786c545cd1bf519d47250322dBen Murdoch gradientData->gradient = Gradient::create(startPoint, endPoint); 58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch gradientData->gradient->setSpreadMethod(m_attributes.spreadMethod()); 5921939df44de1705786c545cd1bf519d47250322dBen Murdoch 6021939df44de1705786c545cd1bf519d47250322dBen Murdoch // Add stops 61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch addStops(gradientData, m_attributes.stops()); 6221939df44de1705786c545cd1bf519d47250322dBen Murdoch} 6321939df44de1705786c545cd1bf519d47250322dBen Murdoch 6421939df44de1705786c545cd1bf519d47250322dBen Murdoch} 6521939df44de1705786c545cd1bf519d47250322dBen Murdoch 6621939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 67