• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 #include "imageanimator_component.h"
16 
17 namespace ArkUICapiTest {
SetState(int32_t state)18 void ImageAnimatorComponent::SetState(int32_t state)
19 {
20     ArkUI_NumberValue value[] = { { .i32 = state } };
21     ArkUI_AttributeItem item = { value, 1 };
22     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_STATE, &item);
23 }
24 
SetIteration(int32_t iteration)25 void ImageAnimatorComponent::SetIteration(int32_t iteration)
26 {
27     ArkUI_NumberValue value[] = { { .i32 = iteration } };
28     ArkUI_AttributeItem item = { value, 1 };
29     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_ITERATION, &item);
30 }
31 
SetImage(std::vector<ArkUI_ImageAnimatorFrameInfo * > & vector)32 void ImageAnimatorComponent::SetImage(std::vector<ArkUI_ImageAnimatorFrameInfo*>& vector)
33 {
34     ArkUI_AttributeItem item = { .object = vector.data(), .size = static_cast<int>(vector.size()) };
35     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_IMAGES, &item);
36 }
37 
SetFixedSize(int32_t fixedSize)38 void ImageAnimatorComponent::SetFixedSize(int32_t fixedSize)
39 {
40     ArkUI_NumberValue value[] = { { .i32 = fixedSize } };
41     ArkUI_AttributeItem item = { value, 1 };
42     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_FIXED_SIZE, &item);
43 }
44 
SetReverse(int32_t reverse)45 void ImageAnimatorComponent::SetReverse(int32_t reverse)
46 {
47     ArkUI_NumberValue value[] = { { .i32 = reverse } };
48     ArkUI_AttributeItem item = { value, 1 };
49     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_REVERSE, &item);
50 }
51 
SetFillMode(int32_t mode)52 void ImageAnimatorComponent::SetFillMode(int32_t mode)
53 {
54     ArkUI_NumberValue value[] = { { .i32 = mode } };
55     ArkUI_AttributeItem item = { value, 1 };
56     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_FILL_MODE, &item);
57 }
58 
SetDuration(int32_t duration)59 void ImageAnimatorComponent::SetDuration(int32_t duration)
60 {
61     ArkUI_NumberValue value[] = { { .i32 = duration } };
62     ArkUI_AttributeItem item = { value, 1 };
63     _nodeAPI->setAttribute(_component, NODE_IMAGE_ANIMATOR_DURATION, &item);
64 }
65 
RegisterOnStart(const std::function<void (ArkUI_NodeEvent * event)> & onStart)66 void ImageAnimatorComponent::RegisterOnStart(const std::function<void(ArkUI_NodeEvent *event)> &onStart)
67 {
68     onStart_ = onStart;
69     _nodeAPI->registerNodeEvent(_component, NODE_IMAGE_ANIMATOR_EVENT_ON_START, 0, nullptr);
70 }
71 
RegisterOnCancel(const std::function<void (ArkUI_NodeEvent * event)> & onCancel)72 void ImageAnimatorComponent::RegisterOnCancel(const std::function<void(ArkUI_NodeEvent *event)> &onCancel)
73 {
74     onCancel_ = onCancel;
75     _nodeAPI->registerNodeEvent(_component, NODE_IMAGE_ANIMATOR_EVENT_ON_CANCEL, 0, nullptr);
76 }
77 
RegisterOnPause(const std::function<void (ArkUI_NodeEvent * event)> & onPause)78 void ImageAnimatorComponent::RegisterOnPause(const std::function<void(ArkUI_NodeEvent *event)> &onPause)
79 {
80     onPause_ = onPause;
81     _nodeAPI->registerNodeEvent(_component, NODE_IMAGE_ANIMATOR_EVENT_ON_PAUSE, 0, nullptr);
82 }
83 
RegisterOnRepeat(const std::function<void (ArkUI_NodeEvent * event)> & onRepeat)84 void ImageAnimatorComponent::RegisterOnRepeat(const std::function<void(ArkUI_NodeEvent *event)> &onRepeat)
85 {
86     onRepeat_ = onRepeat;
87     _nodeAPI->registerNodeEvent(_component, NODE_IMAGE_ANIMATOR_EVENT_ON_REPEAT, 0, nullptr);
88 }
89 
RegisterOnFinish(const std::function<void (ArkUI_NodeEvent * event)> & onFinish)90 void ImageAnimatorComponent::RegisterOnFinish(const std::function<void(ArkUI_NodeEvent *event)> &onFinish)
91 {
92     onFinish_ = onFinish;
93     _nodeAPI->registerNodeEvent(_component, NODE_IMAGE_ANIMATOR_EVENT_ON_FINISH, 0, nullptr);
94 }
95 
OnNodeEvent(ArkUI_NodeEvent * event)96 void ImageAnimatorComponent::OnNodeEvent(ArkUI_NodeEvent* event)
97 {
98     auto eventType = OH_ArkUI_NodeEvent_GetEventType(event);
99     switch (eventType) {
100         case NODE_IMAGE_ANIMATOR_EVENT_ON_START:
101             if (onStart_) {
102                 onStart_(event);
103             }
104             break;
105         case NODE_IMAGE_ANIMATOR_EVENT_ON_CANCEL:
106             if (onCancel_) {
107                 onCancel_(event);
108             }
109             break;
110         case NODE_IMAGE_ANIMATOR_EVENT_ON_PAUSE:
111             if (onPause_) {
112                 onPause_(event);
113             }
114             break;
115         case NODE_IMAGE_ANIMATOR_EVENT_ON_REPEAT:
116             if (onRepeat_) {
117                 onRepeat_(event);
118             }
119             break;
120         case NODE_IMAGE_ANIMATOR_EVENT_ON_FINISH:
121             if (onFinish_) {
122                 onFinish_(event);
123             }
124             break;
125         default:
126             break;
127     }
128 }
129 } // namespace ArkUICapiTest
130