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_FE_OFFSET_DECLARATION_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_FE_OFFSET_DECLARATION_H 18 19 #include "core/components/declaration/svg/svg_fe_declaration.h" 20 21 namespace OHOS::Ace { 22 23 struct SvgFeOffsetAttribute : SvgFeAttribute { 24 Dimension dx; 25 Dimension dy; 26 }; 27 28 class SvgFeOffsetDeclaration : public SvgFeDeclaration { 29 DECLARE_ACE_TYPE(SvgFeOffsetDeclaration, SvgFeDeclaration); 30 31 public: 32 SvgFeOffsetDeclaration() = default; 33 ~SvgFeOffsetDeclaration() override = default; 34 void InitializeStyle() override; 35 SetDx(const Dimension & dx)36 void SetDx(const Dimension& dx) 37 { 38 auto& attribute = MaybeResetAttribute<SvgFeOffsetAttribute>(AttributeTag::SPECIALIZED_ATTR); 39 attribute.dx = dx; 40 } 41 SetDy(const Dimension & dy)42 void SetDy(const Dimension& dy) 43 { 44 auto& attribute = MaybeResetAttribute<SvgFeOffsetAttribute>(AttributeTag::SPECIALIZED_ATTR); 45 attribute.dy = dy; 46 } 47 GetDx()48 double GetDx() const 49 { 50 auto& attribute = static_cast<SvgFeOffsetAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 51 if (attribute.dx.Unit() == DimensionUnit::PERCENT) { 52 return 0.0; 53 } 54 return attribute.dx.Value(); 55 } 56 GetDy()57 double GetDy() const 58 { 59 auto& attribute = static_cast<SvgFeOffsetAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR)); 60 if (attribute.dy.Unit() == DimensionUnit::PERCENT) { 61 return 0.0; 62 } 63 return attribute.dy.Value(); 64 } 65 66 protected: 67 void InitSpecialized() override; 68 bool SetSpecializedValue(const std::pair<std::string, std::string>& attr) override; 69 }; 70 71 } // namespace OHOS::Ace 72 73 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_SVG_SVG_FE_OFFSET_DECLARATION_H 74