fix logic
[personal-kdelibs.git] / khtml / svg / SVGTransform.h
bloba8bcb8e26f302a27bf6c10c27b40539087d5648d
1 /*
2 Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3 2004, 2005 Rob Buis <buis@kde.org>
5 This file is part of the KDE project
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA.
23 #ifndef SVGTransform_h
24 #define SVGTransform_h
25 #if ENABLE(SVG)
27 #include "AffineTransform.h"
28 #include "FloatPoint.h"
29 #include <wtf/RefCounted.h>
30 #include <wtf/RefPtr.h>
32 namespace WebCore {
34 class FloatSize;
36 class SVGTransform {
37 public:
38 enum SVGTransformType {
39 SVG_TRANSFORM_UNKNOWN = 0,
40 SVG_TRANSFORM_MATRIX = 1,
41 SVG_TRANSFORM_TRANSLATE = 2,
42 SVG_TRANSFORM_SCALE = 3,
43 SVG_TRANSFORM_ROTATE = 4,
44 SVG_TRANSFORM_SKEWX = 5,
45 SVG_TRANSFORM_SKEWY = 6
48 SVGTransform();
49 SVGTransform(SVGTransformType);
50 explicit SVGTransform(const AffineTransform&);
51 virtual ~SVGTransform();
53 SVGTransformType type() const;
55 AffineTransform matrix() const;
57 float angle() const;
58 FloatPoint rotationCenter() const;
60 void setMatrix(const AffineTransform&);
61 void setTranslate(float tx, float ty);
62 void setScale(float sx, float sy);
63 void setRotate(float angle, float cx, float cy);
64 void setSkewX(float angle);
65 void setSkewY(float angle);
67 // Internal use only (animation system)
68 FloatPoint translate() const;
69 FloatSize scale() const;
71 bool isValid();
73 private:
74 SVGTransformType m_type;
75 float m_angle;
76 FloatPoint m_center;
77 AffineTransform m_matrix;
80 inline bool operator==(const SVGTransform& a, const SVGTransform& b)
82 return a.type() == b.type() && a.angle() == b.angle() && a.matrix() == b.matrix();
85 inline bool operator!=(const SVGTransform& a, const SVGTransform& b)
87 return !(a == b);
90 } // namespace WebCore
92 #endif // ENABLE(SVG)
93 #endif
95 // vim:ts=4:noet