• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 #include "bridge/declarative_frontend/jsview/models/image_animator_model_impl.h"
17 
18 #include "bridge/declarative_frontend/view_stack_processor.h"
19 
20 constexpr uint32_t DEFAULT_DURATION = 1000; // ms
21 constexpr uint32_t DEFAULT_ITERATIONS = 1;
22 
23 namespace OHOS::Ace::Framework {
Create()24 void ImageAnimatorModelImpl::Create()
25 {
26     RefPtr<ImageAnimatorComponent> imageAnimator = AceType::MakeRefPtr<ImageAnimatorComponent>("ImageAnimator");
27     imageAnimator->SetIteration(DEFAULT_ITERATIONS);
28     imageAnimator->SetDuration(DEFAULT_DURATION);
29     ViewStackProcessor::GetInstance()->Push(imageAnimator);
30     // Init Common Styles for ImageAnimator
31     ViewStackProcessor::GetInstance()->GetBoxComponent();
32 }
33 
SetImages(const std::vector<ImageProperties> & images)34 void ImageAnimatorModelImpl::SetImages(const std::vector<ImageProperties>& images)
35 {
36     auto imageAnimator =
37         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
38     if (imageAnimator) {
39         imageAnimator->SetImageProperties(images);
40     }
41 }
42 
SetState(int32_t state)43 void ImageAnimatorModelImpl::SetState(int32_t state)
44 {
45     auto imageAnimator =
46         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
47     if (imageAnimator) {
48         imageAnimator->SetStatus(static_cast<Animator::Status>(state));
49     }
50 }
51 
SetDuration(int32_t duration)52 void ImageAnimatorModelImpl::SetDuration(int32_t duration)
53 {
54     auto imageAnimator =
55         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
56     if (imageAnimator) {
57         imageAnimator->SetDuration(duration);
58     }
59 }
60 
SetIteration(int32_t iteration)61 void ImageAnimatorModelImpl::SetIteration(int32_t iteration)
62 {
63     auto imageAnimator =
64         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
65     if (imageAnimator) {
66         imageAnimator->SetIteration(iteration);
67     }
68 }
69 
SetFillMode(int32_t fillMode)70 void ImageAnimatorModelImpl::SetFillMode(int32_t fillMode)
71 {
72     auto imageAnimator =
73         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
74     if (imageAnimator) {
75         imageAnimator->SetFillMode(static_cast<FillMode>(fillMode));
76     }
77 }
78 
SetPreDecode(int32_t preDecode)79 void ImageAnimatorModelImpl::SetPreDecode(int32_t preDecode)
80 {
81     auto imageAnimator =
82         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
83     if (imageAnimator) {
84         imageAnimator->SetPreDecode(preDecode);
85     }
86 }
87 
SetIsReverse(bool isReverse)88 void ImageAnimatorModelImpl::SetIsReverse(bool isReverse)
89 {
90     auto imageAnimator =
91         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
92     if (imageAnimator) {
93         imageAnimator->SetIsReverse(isReverse);
94     }
95 }
96 
SetFixedSize(bool fixedSize)97 void ImageAnimatorModelImpl::SetFixedSize(bool fixedSize)
98 {
99     auto imageAnimator =
100         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
101     if (imageAnimator) {
102         imageAnimator->SetIsFixedSize(fixedSize);
103     }
104 }
105 
SetOnStart(std::function<void ()> && OnStart)106 void ImageAnimatorModelImpl::SetOnStart(std::function<void()>&& OnStart)
107 {
108     auto imageAnimator =
109         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
110     if (!imageAnimator) {
111         return;
112     }
113     const auto& controller = imageAnimator->GetImageAnimatorController();
114     if (controller) {
115         auto startEvent = EventMarker(std::move(OnStart));
116         controller->SetStartEvent(startEvent);
117     }
118 }
119 
SetOnPause(std::function<void ()> && OnPause)120 void ImageAnimatorModelImpl::SetOnPause(std::function<void()>&& OnPause)
121 {
122     auto imageAnimator =
123         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
124     if (!imageAnimator) {
125         return;
126     }
127     const auto& controller = imageAnimator->GetImageAnimatorController();
128     if (controller) {
129         auto startEvent = EventMarker(std::move(OnPause));
130         controller->SetPauseEvent(startEvent);
131     }
132 }
133 
SetOnRepeat(std::function<void ()> && OnRepeat)134 void ImageAnimatorModelImpl::SetOnRepeat(std::function<void()>&& OnRepeat)
135 {
136     auto imageAnimator =
137         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
138     if (!imageAnimator) {
139         return;
140     }
141     const auto& controller = imageAnimator->GetImageAnimatorController();
142     if (controller) {
143         auto startEvent = EventMarker(std::move(OnRepeat));
144         controller->SetRepeatEvent(startEvent);
145     }
146 }
147 
SetOnCancel(std::function<void ()> && OnCancel)148 void ImageAnimatorModelImpl::SetOnCancel(std::function<void()>&& OnCancel)
149 {
150     auto imageAnimator =
151         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
152     if (!imageAnimator) {
153         return;
154     }
155     const auto& controller = imageAnimator->GetImageAnimatorController();
156     if (controller) {
157         auto startEvent = EventMarker(std::move(OnCancel));
158         controller->SetCancelEvent(startEvent);
159     }
160 }
161 
SetOnFinish(std::function<void ()> && OnFinish)162 void ImageAnimatorModelImpl::SetOnFinish(std::function<void()>&& OnFinish)
163 {
164     auto imageAnimator =
165         AceType::DynamicCast<ImageAnimatorComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
166     if (!imageAnimator) {
167         return;
168     }
169     const auto& controller = imageAnimator->GetImageAnimatorController();
170     if (controller) {
171         auto startEvent = EventMarker(std::move(OnFinish));
172         controller->SetStopEvent(startEvent);
173     }
174 }
175 } // namespace OHOS::Ace::Framework
176