File indexing completed on 2024-04-28 15:24:42

0001 /*
0002  Copyright (C) 2007 Eric Seidel <eric@webkit.org>
0003 
0004  This file is part of the WebKit project
0005 
0006  This library is free software; you can redistribute it and/or
0007  modify it under the terms of the GNU Library General Public
0008  License as published by the Free Software Foundation; either
0009  version 2 of the License, or (at your option) any later version.
0010 
0011  This library is distributed in the hope that it will be useful,
0012  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014  Library General Public License for more details.
0015 
0016  You should have received a copy of the GNU Library General Public License
0017  along with this library; see the file COPYING.LIB.  If not, write to
0018  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0019  Boston, MA 02110-1301, USA.
0020  */
0021 
0022 #ifndef SVGTransformDistance_h
0023 #define SVGTransformDistance_h
0024 #if ENABLE(SVG)
0025 
0026 #include "SVGTransform.h"
0027 
0028 namespace WebCore
0029 {
0030 
0031 class AffineTransform;
0032 
0033 class SVGTransformDistance
0034 {
0035 public:
0036     SVGTransformDistance();
0037     SVGTransformDistance(const SVGTransform &fromTransform, const SVGTransform &toTransform);
0038 
0039     SVGTransformDistance scaledDistance(float scaleFactor) const;
0040     SVGTransform addToSVGTransform(const SVGTransform &) const;
0041     void addSVGTransform(const SVGTransform &, bool absoluteValue = false);
0042 
0043     static SVGTransform addSVGTransforms(const SVGTransform &, const SVGTransform &);
0044 
0045     bool isZero() const;
0046 
0047     float distance() const;
0048 private:
0049     SVGTransformDistance(SVGTransform::SVGTransformType, float angle, float cx, float cy, const AffineTransform &);
0050 
0051     SVGTransform::SVGTransformType m_type;
0052     float m_angle;
0053     float m_cx;
0054     float m_cy;
0055     AffineTransform m_transform; // for storing scale, translation or matrix transforms
0056 };
0057 }
0058 
0059 #endif // ENABLE(SVG)
0060 #endif // SVGTransformDistance_h