1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_PATTERN_DECLARATION_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_PATTERN_DECLARATION_H 18 19 #include "core/components/declaration/svg/svg_base_declaration.h" 20 21 namespace OHOS::Ace { 22 23 struct SvgPatternAttribute : SvgBaseAttribute { 24 Dimension x; // x-axis default value 25 Dimension y; // y-axis default value 26 Dimension width; // pattern area width default value 27 Dimension height; // pattern area height default value 28 std::string patternUnits = "objectBoundingBox"; 29 std::string patternContentUnits = "userSpaceOnUse"; 30 std::string patternTransform; 31 Rect viewBox; 32 }; 33 34 class SvgPatternDeclaration : public SvgBaseDeclaration { 35 DECLARE_ACE_TYPE(SvgPatternDeclaration, SvgBaseDeclaration); 36 37 public: 38 SvgPatternDeclaration() = default; 39 ~SvgPatternDeclaration() override = default; 40 void InitializeStyle() override; 41 bool SetSpecializedAttr(const std::pair<std::string, std::string>& attr) override; 42 SetX(const Dimension & x)43 void SetX(const Dimension& x) 44 { 45 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 46 attribute.x = x; 47 } 48 GetX()49 Dimension& GetX() const 50 { 51 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 52 return attribute.x; 53 } 54 SetY(const Dimension & y)55 void SetY(const Dimension& y) 56 { 57 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 58 attribute.y = y; 59 } 60 GetY()61 Dimension& GetY() const 62 { 63 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 64 return attribute.y; 65 } 66 SetHeight(const Dimension & height)67 void SetHeight(const Dimension& height) 68 { 69 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 70 attribute.height = height; 71 } 72 GetHeight()73 Dimension& GetHeight() const 74 { 75 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 76 return attribute.height; 77 } 78 SetWidth(const Dimension & width)79 void SetWidth(const Dimension& width) 80 { 81 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 82 attribute.width = width; 83 } 84 GetWidth()85 Dimension& GetWidth() const 86 { 87 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 88 return attribute.width; 89 } 90 GetPatternUnits()91 const std::string& GetPatternUnits() const 92 { 93 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 94 return attribute.patternUnits; 95 } 96 SetPatternUnits(const std::string & patternUnits)97 void SetPatternUnits(const std::string& patternUnits) 98 { 99 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 100 attribute.patternUnits = patternUnits; 101 } 102 GetPatternContentUnits()103 const std::string& GetPatternContentUnits() const 104 { 105 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 106 return attribute.patternContentUnits; 107 } 108 SetPatternContentUnits(const std::string & patternContentUnits)109 void SetPatternContentUnits(const std::string& patternContentUnits) 110 { 111 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 112 attribute.patternContentUnits = patternContentUnits; 113 } 114 GetPatternTransform()115 const std::string& GetPatternTransform() const 116 { 117 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 118 return attribute.patternTransform; 119 } 120 SetPatternTransform(const std::string & patternTransform)121 void SetPatternTransform(const std::string& patternTransform) 122 { 123 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 124 attribute.patternTransform = patternTransform; 125 } 126 GetViewBox()127 const Rect& GetViewBox() const 128 { 129 auto& attribute = static_cast<SvgPatternAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 130 return attribute.viewBox; 131 } 132 SetViewBox(const Rect & viewBox)133 void SetViewBox(const Rect& viewBox) 134 { 135 auto& attribute = MaybeResetAttribute<SvgPatternAttribute>(AttributeTag::SPECIALIZED_ATTR); 136 attribute.viewBox = viewBox; 137 } 138 GetId()139 const std::string& GetId() 140 { 141 auto& commonAttr = MaybeResetAttribute<CommonAttribute>(AttributeTag::COMMON_ATTR); 142 return commonAttr.id; 143 } 144 145 protected: 146 void InitSpecialized() override; 147 }; 148 149 } // namespace OHOS::Ace 150 151 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_PATTERN_DECLARATION_H 152