• 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 
16 
17 #include "node/node_transition.h"
18 
19 #include "base/utils/utils.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
OH_ArkUI_CreateOpacityTransitionEffect(float opacity)25 ArkUI_TransitionEffect* OH_ArkUI_CreateOpacityTransitionEffect(float opacity)
26 {
27     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_OPACITY };
28     option->translate = nullptr;
29     option->scale = nullptr;
30     option->rotate = nullptr;
31     option->appear = nullptr;
32     option->disappear = nullptr;
33     option->combine = nullptr;
34     option->animation = nullptr;
35     option->opacity = std::clamp(opacity, 0.0f, 1.0f);
36     return option;
37 }
38 
OH_ArkUI_CreateTranslationTransitionEffect(ArkUI_TranslationOptions * translate)39 ArkUI_TransitionEffect* OH_ArkUI_CreateTranslationTransitionEffect(ArkUI_TranslationOptions* translate)
40 {
41     CHECK_NULL_RETURN(translate, nullptr);
42     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_TRANSLATE };
43     option->scale = nullptr;
44     option->rotate = nullptr;
45     option->appear = nullptr;
46     option->disappear = nullptr;
47     option->combine = nullptr;
48     option->animation = nullptr;
49     option->translate = translate;
50     return option;
51 }
52 
OH_ArkUI_CreateScaleTransitionEffect(ArkUI_ScaleOptions * scale)53 ArkUI_TransitionEffect* OH_ArkUI_CreateScaleTransitionEffect(ArkUI_ScaleOptions* scale)
54 {
55     CHECK_NULL_RETURN(scale, nullptr);
56     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_SCALE };
57     option->translate = nullptr;
58     option->rotate = nullptr;
59     option->appear = nullptr;
60     option->disappear = nullptr;
61     option->combine = nullptr;
62     option->animation = nullptr;
63     option->scale = scale;
64     return option;
65 }
66 
OH_ArkUI_CreateRotationTransitionEffect(ArkUI_RotationOptions * rotate)67 ArkUI_TransitionEffect* OH_ArkUI_CreateRotationTransitionEffect(ArkUI_RotationOptions* rotate)
68 {
69     CHECK_NULL_RETURN(rotate, nullptr);
70     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_ROTATE };
71     option->translate = nullptr;
72     option->scale = nullptr;
73     option->appear = nullptr;
74     option->disappear = nullptr;
75     option->combine = nullptr;
76     option->animation = nullptr;
77     option->rotate = rotate;
78     return option;
79 }
80 
OH_ArkUI_CreateMovementTransitionEffect(ArkUI_TransitionEdge move)81 ArkUI_TransitionEffect* OH_ArkUI_CreateMovementTransitionEffect(ArkUI_TransitionEdge move)
82 {
83     if (move < ARKUI_TRANSITION_EDGE_TOP || move > ARKUI_TRANSITION_EDGE_END) {
84         move = ARKUI_TRANSITION_EDGE_START;
85     }
86     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_MOVE };
87     option->translate = nullptr;
88     option->scale = nullptr;
89     option->rotate = nullptr;
90     option->appear = nullptr;
91     option->disappear = nullptr;
92     option->combine = nullptr;
93     option->animation = nullptr;
94     option->move = move;
95     return option;
96 }
97 
OH_ArkUI_CreateAsymmetricTransitionEffect(ArkUI_TransitionEffect * appear,ArkUI_TransitionEffect * disappear)98 ArkUI_TransitionEffect* OH_ArkUI_CreateAsymmetricTransitionEffect(
99     ArkUI_TransitionEffect* appear, ArkUI_TransitionEffect* disappear)
100 {
101     if (!appear && !disappear) {
102         return nullptr;
103     }
104     ArkUI_TransitionEffect* option = new ArkUI_TransitionEffect { ARKUI_TRANSITION_EFFECT_ASYMMETRIC };
105     option->translate = nullptr;
106     option->scale = nullptr;
107     option->rotate = nullptr;
108     option->combine = nullptr;
109     option->animation = nullptr;
110     option->appear = appear;
111     option->disappear = disappear;
112     return option;
113 }
114 
OH_ArkUI_TransitionEffect_Dispose(ArkUI_TransitionEffect * option)115 void OH_ArkUI_TransitionEffect_Dispose(ArkUI_TransitionEffect* option)
116 {
117     CHECK_NULL_VOID(option);
118     if (option->toEffectOption) {
119         delete option->toEffectOption;
120         option->toEffectOption = nullptr;
121     }
122     delete option;
123 }
124 
OH_ArkUI_TransitionEffect_Combine(ArkUI_TransitionEffect * option,ArkUI_TransitionEffect * combine)125 int32_t OH_ArkUI_TransitionEffect_Combine(ArkUI_TransitionEffect* option, ArkUI_TransitionEffect* combine)
126 {
127     CHECK_NULL_RETURN(option, ARKUI_ERROR_CODE_PARAM_INVALID);
128     auto* currentOption = option;
129     while (currentOption->combine) {
130         currentOption = currentOption->combine;
131     }
132     currentOption->combine = combine;
133     return ARKUI_ERROR_CODE_NO_ERROR;
134 }
135 
OH_ArkUI_TransitionEffect_SetAnimation(ArkUI_TransitionEffect * option,ArkUI_AnimateOption * animation)136 int32_t OH_ArkUI_TransitionEffect_SetAnimation(ArkUI_TransitionEffect* option, ArkUI_AnimateOption* animation)
137 {
138     CHECK_NULL_RETURN(option, ARKUI_ERROR_CODE_PARAM_INVALID);
139     option->animation = animation;
140     return ARKUI_ERROR_CODE_NO_ERROR;
141 }
142 #ifdef __cplusplus
143 };
144 #endif