• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_IMAGE_ANIMATOR_IMAGE_ANIMATOR_DECLARATION_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_IMAGE_ANIMATOR_IMAGE_ANIMATOR_DECLARATION_H
18 
19 #include <string>
20 #include "core/components/common/properties/border.h"
21 #include "core/components/declaration/common/declaration.h"
22 #include "core/components_ng/pattern/image/image_properties.h"
23 #include "frameworks/bridge/common/dom/dom_type.h"
24 #include "frameworks/core/animation/animator.h"
25 
26 namespace OHOS::Ace {
27 
28 struct ImageAnimatorAttribute : Attribute {
29     FillMode fillMode = FillMode::FORWARDS;
30     Animator::Status status = Animator::Status::IDLE;
31     int32_t iteration = -1;
32     int32_t duration = 0;
33     int32_t preDecode = 0;
34     bool isReverse = false;
35     bool isFixedSize = true;
36     std::vector<ImageProperties> images;
37 };
38 
39 class ImageAnimatorDeclaration : public Declaration {
40     DECLARE_ACE_TYPE(ImageAnimatorDeclaration, Declaration);
41 
42 public:
43     ImageAnimatorDeclaration() = default;
44     ~ImageAnimatorDeclaration() override = default;
45 
SetFillMode(FillMode fillMode)46     void SetFillMode(FillMode fillMode)
47     {
48         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
49         attribute.fillMode = fillMode;
50     }
51 
SetStatus(Animator::Status status)52     void SetStatus(Animator::Status status)
53     {
54         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
55         attribute.status = status;
56     }
57 
SetIteration(int32_t iteration)58     void SetIteration(int32_t iteration)
59     {
60         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
61         attribute.iteration = iteration;
62     }
63 
SetDuration(int32_t duration)64     void SetDuration(int32_t duration)
65     {
66         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
67         attribute.duration = duration;
68     }
69 
SetIsReverse(bool isReverse)70     void SetIsReverse(bool isReverse)
71     {
72         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
73         attribute.isReverse = isReverse;
74     }
75 
SetIsFixedSize(bool isFixedSize)76     void SetIsFixedSize(bool isFixedSize)
77     {
78         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
79         attribute.isFixedSize = isFixedSize;
80     }
81 
SetBorder(const Border & border)82     void SetBorder(const Border& border)
83     {
84         border_ = border;
85     }
86 
SetImageProperties(const std::vector<ImageProperties> & images)87     void SetImageProperties(const std::vector<ImageProperties>& images)
88     {
89         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
90         attribute.images = images;
91     }
92 
SetPreDecode(int32_t preDecode)93     void SetPreDecode(int32_t preDecode)
94     {
95         auto& attribute = MaybeResetAttribute<ImageAnimatorAttribute>(AttributeTag::SPECIALIZED_ATTR);
96         attribute.preDecode = preDecode;
97     }
98 
GetFillMode()99     FillMode GetFillMode() const
100     {
101         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
102         return attribute.fillMode;
103     }
104 
GetStatus()105     Animator::Status GetStatus() const
106     {
107         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
108         return attribute.status;
109     }
110 
GetIteration()111     int32_t GetIteration() const
112     {
113         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
114         return attribute.iteration;
115     }
116 
GetDuration()117     int32_t GetDuration() const
118     {
119         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
120         return attribute.duration;
121     }
122 
GetPreDecode()123     int32_t GetPreDecode() const
124     {
125         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
126         return attribute.preDecode;
127     }
128 
GetIsReverse()129     bool GetIsReverse() const
130     {
131         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
132         return attribute.isReverse;
133     }
134 
GetIsFixedSize()135     bool GetIsFixedSize() const
136     {
137         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
138         return attribute.isFixedSize;
139     }
140 
GetBorder()141     const Border& GetBorder() const
142     {
143         return border_;
144     }
145 
GetImageProperties()146     const std::vector<ImageProperties>& GetImageProperties() const
147     {
148         auto& attribute = static_cast<ImageAnimatorAttribute&>(GetAttribute(AttributeTag::SPECIALIZED_ATTR));
149         return attribute.images;
150     }
151 
152 protected:
153     void InitSpecialized() override;
154 
155 private:
156     Border border_;
157 };
158 
159 } // namespace OHOS::Ace
160 
161 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_IMAGE_ANIMATOR_IMAGE_ANIMATOR_DECLARATION_H
162