Use #pragma once in WebCore
[WebKit-https.git] / Source / WebCore / svg / SVGZoomAndPan.h
1 /*
2  * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3  * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20
21 #pragma once
22
23 #include "QualifiedName.h"
24 #include "SVGNames.h"
25
26 namespace WebCore {
27
28 enum SVGZoomAndPanType { SVGZoomAndPanUnknown, SVGZoomAndPanDisable, SVGZoomAndPanMagnify };
29
30 class SVGZoomAndPan {
31 public:
32     // Forward declare enumerations in the W3C naming scheme, for IDL generation.
33     enum {
34         SVG_ZOOMANDPAN_UNKNOWN = SVGZoomAndPanUnknown,
35         SVG_ZOOMANDPAN_DISABLE = SVGZoomAndPanDisable,
36         SVG_ZOOMANDPAN_MAGNIFY = SVGZoomAndPanMagnify
37     };
38
39     static bool isKnownAttribute(const QualifiedName&);
40
41     static SVGZoomAndPanType parseFromNumber(unsigned short);
42
43     static bool parse(const UChar*& start, const UChar* end, SVGZoomAndPanType&);
44     template<class DerivedClass> static void parseAttribute(DerivedClass&, const QualifiedName&, const AtomicString& value);
45
46 private:
47     static SVGZoomAndPanType parseAttributeValue(const AtomicString&);
48 };
49
50 inline bool SVGZoomAndPan::isKnownAttribute(const QualifiedName& name)
51 {
52     return name == SVGNames::zoomAndPanAttr;
53 }
54
55 inline SVGZoomAndPanType SVGZoomAndPan::parseFromNumber(unsigned short number)
56 {
57     if (number > SVGZoomAndPanMagnify)
58         return SVGZoomAndPanUnknown;
59     return static_cast<SVGZoomAndPanType>(number);
60 }
61
62 template<class DerivedClass> void SVGZoomAndPan::parseAttribute(DerivedClass& element, const QualifiedName& name, const AtomicString& value)
63 {
64     if (name == SVGNames::zoomAndPanAttr)
65         element.setZoomAndPan(parseAttributeValue(value));
66 }
67
68 } // namespace WebCore