1/*
2    Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
3
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public
6    License as published by the Free Software Foundation; either
7    version 2 of the License, or (at your option) any later version.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18*/
19
20#ifndef LinearGradientAttributes_h
21#define LinearGradientAttributes_h
22
23#include "GradientAttributes.h"
24
25#if ENABLE(SVG)
26
27namespace WebCore {
28    struct LinearGradientAttributes : GradientAttributes {
29        LinearGradientAttributes()
30            : m_x1()
31            , m_y1()
32            , m_x2(LengthModeWidth, "100%")
33            , m_y2()
34            , m_x1Set(false)
35            , m_y1Set(false)
36            , m_x2Set(false)
37            , m_y2Set(false)
38        {
39        }
40
41        SVGLength x1() const { return m_x1; }
42        SVGLength y1() const { return m_y1; }
43        SVGLength x2() const { return m_x2; }
44        SVGLength y2() const { return m_y2; }
45
46        void setX1(const SVGLength& value) { m_x1 = value; m_x1Set = true; }
47        void setY1(const SVGLength& value) { m_y1 = value; m_y1Set = true; }
48        void setX2(const SVGLength& value) { m_x2 = value; m_x2Set = true; }
49        void setY2(const SVGLength& value) { m_y2 = value; m_y2Set = true; }
50
51        bool hasX1() const { return m_x1Set; }
52        bool hasY1() const { return m_y1Set; }
53        bool hasX2() const { return m_x2Set; }
54        bool hasY2() const { return m_y2Set; }
55
56    private:
57        // Properties
58        SVGLength m_x1;
59        SVGLength m_y1;
60        SVGLength m_x2;
61        SVGLength m_y2;
62
63        // Property states
64        bool m_x1Set : 1;
65        bool m_y1Set : 1;
66        bool m_x2Set : 1;
67        bool m_y2Set : 1;
68    };
69
70} // namespace WebCore
71
72#endif // ENABLE(SVG)
73#endif
74
75// vim:ts=4:noet
76