| /* |
| * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public License |
| * along with this library; see the file COPYING.LIB. If not, write to |
| * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| #pragma once |
| |
| #include "SVGLengthValue.h" |
| #include "SVGPreserveAspectRatioValue.h" |
| #include "SVGUnitTypes.h" |
| |
| namespace WebCore { |
| |
| class SVGPatternElement; |
| |
| struct PatternAttributes { |
| PatternAttributes() |
| : m_x() |
| , m_y() |
| , m_width() |
| , m_height() |
| , m_viewBox() |
| , m_preserveAspectRatio() |
| , m_patternUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) |
| , m_patternContentUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE) |
| , m_patternContentElement(nullptr) |
| , m_xSet(false) |
| , m_ySet(false) |
| , m_widthSet(false) |
| , m_heightSet(false) |
| , m_viewBoxSet(false) |
| , m_preserveAspectRatioSet(false) |
| , m_patternUnitsSet(false) |
| , m_patternContentUnitsSet(false) |
| , m_patternTransformSet(false) |
| , m_patternContentElementSet(false) |
| { |
| } |
| |
| SVGLengthValue x() const { return m_x; } |
| SVGLengthValue y() const { return m_y; } |
| SVGLengthValue width() const { return m_width; } |
| SVGLengthValue height() const { return m_height; } |
| FloatRect viewBox() const { return m_viewBox; } |
| SVGPreserveAspectRatioValue preserveAspectRatio() const { return m_preserveAspectRatio; } |
| SVGUnitTypes::SVGUnitType patternUnits() const { return m_patternUnits; } |
| SVGUnitTypes::SVGUnitType patternContentUnits() const { return m_patternContentUnits; } |
| AffineTransform patternTransform() const { return m_patternTransform; } |
| const SVGPatternElement* patternContentElement() const { return m_patternContentElement; } |
| |
| void setX(SVGLengthValue value) |
| { |
| m_x = value; |
| m_xSet = true; |
| } |
| |
| void setY(SVGLengthValue value) |
| { |
| m_y = value; |
| m_ySet = true; |
| } |
| |
| void setWidth(SVGLengthValue value) |
| { |
| m_width = value; |
| m_widthSet = true; |
| } |
| |
| void setHeight(SVGLengthValue value) |
| { |
| m_height = value; |
| m_heightSet = true; |
| } |
| |
| void setViewBox(const FloatRect& value) |
| { |
| m_viewBox = value; |
| m_viewBoxSet = true; |
| } |
| |
| void setPreserveAspectRatio(SVGPreserveAspectRatioValue value) |
| { |
| m_preserveAspectRatio = value; |
| m_preserveAspectRatioSet = true; |
| } |
| |
| void setPatternUnits(SVGUnitTypes::SVGUnitType value) |
| { |
| m_patternUnits = value; |
| m_patternUnitsSet = true; |
| } |
| |
| void setPatternContentUnits(SVGUnitTypes::SVGUnitType value) |
| { |
| m_patternContentUnits = value; |
| m_patternContentUnitsSet = true; |
| } |
| |
| void setPatternTransform(const AffineTransform& value) |
| { |
| m_patternTransform = value; |
| m_patternTransformSet = true; |
| } |
| |
| void setPatternContentElement(const SVGPatternElement* value) |
| { |
| m_patternContentElement = value; |
| m_patternContentElementSet = true; |
| } |
| |
| bool hasX() const { return m_xSet; } |
| bool hasY() const { return m_ySet; } |
| bool hasWidth() const { return m_widthSet; } |
| bool hasHeight() const { return m_heightSet; } |
| bool hasViewBox() const { return m_viewBoxSet; } |
| bool hasPreserveAspectRatio() const { return m_preserveAspectRatioSet; } |
| bool hasPatternUnits() const { return m_patternUnitsSet; } |
| bool hasPatternContentUnits() const { return m_patternContentUnitsSet; } |
| bool hasPatternTransform() const { return m_patternTransformSet; } |
| bool hasPatternContentElement() const { return m_patternContentElementSet; } |
| |
| private: |
| // Properties |
| SVGLengthValue m_x; |
| SVGLengthValue m_y; |
| SVGLengthValue m_width; |
| SVGLengthValue m_height; |
| FloatRect m_viewBox; |
| SVGPreserveAspectRatioValue m_preserveAspectRatio; |
| SVGUnitTypes::SVGUnitType m_patternUnits; |
| SVGUnitTypes::SVGUnitType m_patternContentUnits; |
| AffineTransform m_patternTransform; |
| const SVGPatternElement* m_patternContentElement; |
| |
| // Property states |
| bool m_xSet : 1; |
| bool m_ySet : 1; |
| bool m_widthSet : 1; |
| bool m_heightSet : 1; |
| bool m_viewBoxSet : 1; |
| bool m_preserveAspectRatioSet : 1; |
| bool m_patternUnitsSet : 1; |
| bool m_patternContentUnitsSet : 1; |
| bool m_patternTransformSet : 1; |
| bool m_patternContentElementSet : 1; |
| }; |
| |
| } // namespace WebCore |