2 Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 2004, 2005, 2006, 2007 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 SVGPreserveAspectRatio_h
24 #define SVGPreserveAspectRatio_h
27 #include "PlatformString.h"
31 #include <wtf/RefCounted.h>
34 #include <wtf/PassRefPtr.h>
39 class AffineTransform
;
40 class SVGStyledElement
;
42 class SVGPreserveAspectRatio
: public RefCounted
<SVGPreserveAspectRatio
> {
44 static PassRefPtr
<SVGPreserveAspectRatio
> create() { return adoptRef(new SVGPreserveAspectRatio
); }
46 enum SVGPreserveAspectRatioType
{
47 SVG_PRESERVEASPECTRATIO_UNKNOWN
= 0,
48 SVG_PRESERVEASPECTRATIO_NONE
= 1,
49 SVG_PRESERVEASPECTRATIO_XMINYMIN
= 2,
50 SVG_PRESERVEASPECTRATIO_XMIDYMIN
= 3,
51 SVG_PRESERVEASPECTRATIO_XMAXYMIN
= 4,
52 SVG_PRESERVEASPECTRATIO_XMINYMID
= 5,
53 SVG_PRESERVEASPECTRATIO_XMIDYMID
= 6,
54 SVG_PRESERVEASPECTRATIO_XMAXYMID
= 7,
55 SVG_PRESERVEASPECTRATIO_XMINYMAX
= 8,
56 SVG_PRESERVEASPECTRATIO_XMIDYMAX
= 9,
57 SVG_PRESERVEASPECTRATIO_XMAXYMAX
= 10
60 enum SVGMeetOrSliceType
{
61 SVG_MEETORSLICE_UNKNOWN
= 0,
62 SVG_MEETORSLICE_MEET
= 1,
63 SVG_MEETORSLICE_SLICE
= 2
66 virtual ~SVGPreserveAspectRatio();
68 void setAlign(unsigned short);
69 unsigned short align() const;
71 void setMeetOrSlice(unsigned short);
72 unsigned short meetOrSlice() const;
74 AffineTransform
getCTM(double logicX
, double logicY
,
75 double logicWidth
, double logicHeight
,
76 double physX
, double physY
,
77 double physWidth
, double physHeight
);
80 bool parsePreserveAspectRatio(const UChar
*& currParam
, const UChar
* end
, bool validate
= true);
82 const QualifiedName
& associatedAttributeName() const { return SVGNames::preserveAspectRatioAttr
; }
85 SVGPreserveAspectRatio();
87 unsigned short m_align
;
88 unsigned short m_meetOrSlice
;
91 } // namespace WebCore
94 #endif // SVGPreserveAspectRatio_h