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_MASK_DECLARATION_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_MASK_DECLARATION_H 18 19 #include "core/components/declaration/svg/svg_base_declaration.h" 20 21 namespace OHOS::Ace { 22 23 struct SvgMaskAttribute : SvgBaseAttribute { 24 Dimension x = Dimension(-0.1, DimensionUnit::PERCENT); // x-axis default value 25 Dimension y = Dimension(-0.1, DimensionUnit::PERCENT); // y-axis default value 26 Dimension width = Dimension(1.2, DimensionUnit::PERCENT); // masking area width default value 27 Dimension height = Dimension(1.2, DimensionUnit::PERCENT); // masking area height default value 28 std::string maskContentUnits = "userSpaceOnUse"; 29 std::string maskUnits = "objectBoundingBox"; 30 }; 31 32 class SvgMaskDeclaration : public SvgBaseDeclaration { 33 DECLARE_ACE_TYPE(SvgMaskDeclaration, SvgBaseDeclaration); 34 35 public: 36 SvgMaskDeclaration() = default; 37 ~SvgMaskDeclaration() override = default; 38 void InitializeStyle() override; 39 bool SetSpecializedAttr(const std::pair<std::string, std::string>& attr) override; 40 SetX(const Dimension & x)41 void SetX(const Dimension& x) 42 { 43 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 44 attribute.x = x; 45 } 46 GetX()47 const Dimension& GetX() const 48 { 49 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 50 return attribute.x; 51 } 52 SetY(const Dimension & y)53 void SetY(const Dimension& y) 54 { 55 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 56 attribute.y = y; 57 } 58 GetY()59 const Dimension& GetY() const 60 { 61 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 62 return attribute.y; 63 } 64 SetHeight(const Dimension & height)65 void SetHeight(const Dimension& height) 66 { 67 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 68 attribute.height = height; 69 } 70 GetHeight()71 const Dimension& GetHeight() const 72 { 73 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 74 return attribute.height; 75 } 76 SetWidth(const Dimension & width)77 void SetWidth(const Dimension& width) 78 { 79 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 80 attribute.width = width; 81 } 82 GetWidth()83 const Dimension& GetWidth() const 84 { 85 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 86 return attribute.width; 87 } 88 GetMaskUnits()89 const std::string& GetMaskUnits() const 90 { 91 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 92 return attribute.maskUnits; 93 } 94 SetMaskUnits(const std::string & maskUnits)95 void SetMaskUnits(const std::string& maskUnits) 96 { 97 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 98 attribute.maskUnits = maskUnits; 99 } 100 GetMaskContentUnits()101 const std::string& GetMaskContentUnits() const 102 { 103 auto& attribute = static_cast<SvgMaskAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 104 return attribute.maskContentUnits; 105 } 106 SetMaskContentUnits(const std::string & maskContentUnits)107 void SetMaskContentUnits(const std::string& maskContentUnits) 108 { 109 auto& attribute = MaybeResetAttribute<SvgMaskAttribute>(AttributeTag::SPECIALIZED_ATTR); 110 attribute.maskContentUnits = maskContentUnits; 111 } 112 113 protected: 114 void InitSpecialized() override; 115 }; 116 117 } // namespace OHOS::Ace 118 119 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_MASK_DECLARATION_H 120