18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or
5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public
6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either
7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version.
8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful,
10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of
11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details.
13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License
15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB.  If not, write to
16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA.
18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PatternAttributes_h
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PatternAttributes_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
2421939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SVGLength.h"
25ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "SVGPreserveAspectRatio.h"
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore {
2821939df44de1705786c545cd1bf519d47250322dBen Murdoch
2921939df44de1705786c545cd1bf519d47250322dBen Murdochclass SVGPatternElement;
3021939df44de1705786c545cd1bf519d47250322dBen Murdoch
3121939df44de1705786c545cd1bf519d47250322dBen Murdochstruct PatternAttributes {
3221939df44de1705786c545cd1bf519d47250322dBen Murdoch    PatternAttributes()
3321939df44de1705786c545cd1bf519d47250322dBen Murdoch        : m_x()
3421939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_y()
3521939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_width()
3621939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_height()
37ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        , m_viewBox()
38ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        , m_preserveAspectRatio()
3921939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_boundingBoxMode(true)
4021939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_boundingBoxModeContent(false)
4121939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_patternContentElement(0)
4221939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_xSet(false)
4321939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_ySet(false)
4421939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_widthSet(false)
4521939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_heightSet(false)
46ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        , m_viewBoxSet(false)
47ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        , m_preserveAspectRatioSet(false)
4821939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_boundingBoxModeSet(false)
4921939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_boundingBoxModeContentSet(false)
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_patternTransformSet(false)
5121939df44de1705786c545cd1bf519d47250322dBen Murdoch        , m_patternContentElementSet(false)
5221939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
5321939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
5421939df44de1705786c545cd1bf519d47250322dBen Murdoch
5521939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength x() const { return m_x; }
5621939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength y() const { return m_y; }
5721939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength width() const { return m_width; }
5821939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength height() const { return m_height; }
59ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    FloatRect viewBox() const { return m_viewBox; }
60ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    SVGPreserveAspectRatio preserveAspectRatio() const { return m_preserveAspectRatio; }
6121939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool boundingBoxMode() const { return m_boundingBoxMode; }
6221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool boundingBoxModeContent() const { return m_boundingBoxModeContent; }
6321939df44de1705786c545cd1bf519d47250322dBen Murdoch    AffineTransform patternTransform() const { return m_patternTransform; }
6421939df44de1705786c545cd1bf519d47250322dBen Murdoch    const SVGPatternElement* patternContentElement() const { return m_patternContentElement; }
6521939df44de1705786c545cd1bf519d47250322dBen Murdoch
6621939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setX(const SVGLength& value)
6721939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
6821939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_x = value;
6921939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_xSet = true;
7021939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
7121939df44de1705786c545cd1bf519d47250322dBen Murdoch
7221939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setY(const SVGLength& value)
7321939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
7421939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_y = value;
7521939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_ySet = true;
7621939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
7721939df44de1705786c545cd1bf519d47250322dBen Murdoch
7821939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setWidth(const SVGLength& value)
7921939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
8021939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_width = value;
8121939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_widthSet = true;
8221939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
8321939df44de1705786c545cd1bf519d47250322dBen Murdoch
8421939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setHeight(const SVGLength& value)
8521939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
8621939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_height = value;
8721939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_heightSet = true;
8821939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
89ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
90ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void setViewBox(const FloatRect& value)
91ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    {
92ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        m_viewBox = value;
93ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        m_viewBoxSet = true;
94ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    }
95ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
96ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    void setPreserveAspectRatio(const SVGPreserveAspectRatio& value)
97ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    {
98ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        m_preserveAspectRatio = value;
99ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        m_preserveAspectRatioSet = true;
100ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    }
10121939df44de1705786c545cd1bf519d47250322dBen Murdoch
10221939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setBoundingBoxMode(bool value)
10321939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
10421939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_boundingBoxMode = value;
10521939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_boundingBoxModeSet = true;
10621939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
10721939df44de1705786c545cd1bf519d47250322dBen Murdoch
10821939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setBoundingBoxModeContent(bool value)
10921939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
11021939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_boundingBoxModeContent = value;
11121939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_boundingBoxModeContentSet = true;
11221939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
11321939df44de1705786c545cd1bf519d47250322dBen Murdoch
11421939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setPatternTransform(const AffineTransform& value)
11521939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
11621939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_patternTransform = value;
11721939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_patternTransformSet = true;
11821939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
11921939df44de1705786c545cd1bf519d47250322dBen Murdoch
12021939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setPatternContentElement(const SVGPatternElement* value)
12121939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
12221939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_patternContentElement = value;
12321939df44de1705786c545cd1bf519d47250322dBen Murdoch        m_patternContentElementSet = true;
12421939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
12521939df44de1705786c545cd1bf519d47250322dBen Murdoch
12621939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasX() const { return m_xSet; }
12721939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasY() const { return m_ySet; }
12821939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasWidth() const { return m_widthSet; }
12921939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasHeight() const { return m_heightSet; }
130ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool hasViewBox() const { return m_viewBoxSet; }
131ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool hasPreserveAspectRatio() const { return m_preserveAspectRatioSet; }
13221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasBoundingBoxMode() const { return m_boundingBoxModeSet; }
13321939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasBoundingBoxModeContent() const { return m_boundingBoxModeContentSet; }
13421939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasPatternTransform() const { return m_patternTransformSet; }
13521939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool hasPatternContentElement() const { return m_patternContentElementSet; }
13621939df44de1705786c545cd1bf519d47250322dBen Murdoch
13721939df44de1705786c545cd1bf519d47250322dBen Murdochprivate:
13821939df44de1705786c545cd1bf519d47250322dBen Murdoch    // Properties
13921939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength m_x;
14021939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength m_y;
14121939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength m_width;
14221939df44de1705786c545cd1bf519d47250322dBen Murdoch    SVGLength m_height;
143ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    FloatRect m_viewBox;
144ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    SVGPreserveAspectRatio m_preserveAspectRatio;
14521939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_boundingBoxMode;
14621939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_boundingBoxModeContent;
14721939df44de1705786c545cd1bf519d47250322dBen Murdoch    AffineTransform m_patternTransform;
14821939df44de1705786c545cd1bf519d47250322dBen Murdoch    const SVGPatternElement* m_patternContentElement;
14921939df44de1705786c545cd1bf519d47250322dBen Murdoch
15021939df44de1705786c545cd1bf519d47250322dBen Murdoch    // Property states
15121939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_xSet : 1;
15221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_ySet : 1;
15321939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_widthSet : 1;
15421939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_heightSet : 1;
155ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool m_viewBoxSet : 1;
156ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool m_preserveAspectRatioSet : 1;
15721939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_boundingBoxModeSet : 1;
15821939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_boundingBoxModeContentSet : 1;
15921939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_patternTransformSet : 1;
16021939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_patternContentElementSet : 1;
16121939df44de1705786c545cd1bf519d47250322dBen Murdoch};
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG)
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
167