KHTML
SVGTransformList.cpp
Go to the documentation of this file.
00001 /* 00002 Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> 00003 2004, 2005 Rob Buis <buis@kde.org> 00004 00005 This file is part of the KDE project 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Library General Public License for more details. 00016 00017 You should have received a copy of the GNU Library General Public License 00018 along with this library; see the file COPYING.LIB. If not, write to 00019 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00020 Boston, MA 02110-1301, USA. 00021 */ 00022 00023 #include "config.h" 00024 #include "wtf/Platform.h" 00025 00026 #if ENABLE(SVG) 00027 #include "AffineTransform.h" 00028 #include "SVGTransform.h" 00029 #include "SVGSVGElement.h" 00030 #include "SVGTransformDistance.h" 00031 #include "SVGTransformList.h" 00032 00033 using namespace WebCore; 00034 00035 SVGTransformList::SVGTransformList(const QualifiedName& attributeName) 00036 : SVGPODList<SVGTransform>(attributeName) 00037 { 00038 } 00039 00040 SVGTransformList::~SVGTransformList() 00041 { 00042 } 00043 00044 SVGTransform SVGTransformList::createSVGTransformFromMatrix(const AffineTransform& matrix) const 00045 { 00046 return SVGSVGElement::createSVGTransformFromMatrix(matrix); 00047 } 00048 00049 SVGTransform SVGTransformList::consolidate() 00050 { 00051 ExceptionCode ec = 0; 00052 return initialize(concatenate(), ec); 00053 } 00054 00055 SVGTransform SVGTransformList::concatenate() const 00056 { 00057 unsigned int length = numberOfItems(); 00058 if (!length) 00059 return SVGTransform(); 00060 00061 AffineTransform matrix; 00062 ExceptionCode ec = 0; 00063 for (unsigned int i = 0; i < length; i++) 00064 matrix = getItem(i, ec).matrix() * matrix; 00065 00066 return SVGTransform(matrix); 00067 } 00068 00069 SVGTransform SVGTransformList::concatenateForType(SVGTransform::SVGTransformType type) const 00070 { 00071 unsigned int length = numberOfItems(); 00072 if (!length) 00073 return SVGTransform(); 00074 00075 ExceptionCode ec = 0; 00076 SVGTransformDistance totalTransform; 00077 for (unsigned int i = 0; i < length; i++) { 00078 const SVGTransform& transform = getItem(i, ec); 00079 if (transform.type() == type) 00080 totalTransform.addSVGTransform(transform); 00081 } 00082 00083 return totalTransform.addToSVGTransform(SVGTransform()); 00084 } 00085 00086 #endif // ENABLE(SVG)
KDE 4.6 API Reference