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 <cstdint>
18 #include <string>
19 #include "cj_transitioneffect_ffi.h"
20 
21 using namespace OHOS::FFI;
22 
23 namespace OHOS::Ace::Framework {
24 extern "C" {
FfiOHOSAceFrameworkTransitionEffectOpacity(double number)25     int64_t FfiOHOSAceFrameworkTransitionEffectOpacity(double number)
26     {
27         auto chainedTransitionEffect = NativeTransitionEffect::Opacity(number);
28         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
29         if (nativeTransitionEffect == nullptr) {
30             return FFI_ERROR_CODE;
31         }
32         return nativeTransitionEffect->GetID();
33     }
34 
FfiOHOSAceFrameworkTransitionEffectTranslate(CTranslateOptions options)35     int64_t FfiOHOSAceFrameworkTransitionEffectTranslate(CTranslateOptions options)
36     {
37         auto chainedTransitionEffect = NativeTransitionEffect::Translate(options);
38         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
39         if (nativeTransitionEffect == nullptr) {
40             return FFI_ERROR_CODE;
41         }
42         return nativeTransitionEffect->GetID();
43     }
44 
FfiOHOSAceFrameworkTransitionEffectScale(CScaleOptions options)45     int64_t FfiOHOSAceFrameworkTransitionEffectScale(CScaleOptions options)
46     {
47         auto chainedTransitionEffect = NativeTransitionEffect::Scale(options);
48         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
49         if (nativeTransitionEffect == nullptr) {
50             return FFI_ERROR_CODE;
51         }
52         return nativeTransitionEffect->GetID();
53     }
54 
FfiOHOSAceFrameworkTransitionEffectRotate(CRotateOptions options)55     int64_t FfiOHOSAceFrameworkTransitionEffectRotate(CRotateOptions options)
56     {
57         auto chainedTransitionEffect = NativeTransitionEffect::Rotate(options);
58         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
59         if (nativeTransitionEffect == nullptr) {
60             return FFI_ERROR_CODE;
61         }
62         return nativeTransitionEffect->GetID();
63     }
64 
FfiOHOSAceFrameworkTransitionEffectMove(int32_t edge)65     int64_t FfiOHOSAceFrameworkTransitionEffectMove(int32_t edge)
66     {
67         auto chainedTransitionEffect = NativeTransitionEffect::Move(edge);
68         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
69         if (nativeTransitionEffect == nullptr) {
70             return FFI_ERROR_CODE;
71         }
72         return nativeTransitionEffect->GetID();
73     }
74 
FfiOHOSAceFrameworkTransitionEffectAsymmetric(int64_t appearId,int64_t disappearId)75     int64_t FfiOHOSAceFrameworkTransitionEffectAsymmetric(int64_t appearId, int64_t disappearId)
76     {
77         auto chainedTransitionEffect = NativeTransitionEffect::Asymmetric(appearId, disappearId);
78         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
79         if (nativeTransitionEffect == nullptr) {
80             return FFI_ERROR_CODE;
81         }
82         return nativeTransitionEffect->GetID();
83     }
84 
FfiOHOSAceFrameworkTransitionEffectCombine(int64_t id,int64_t effectId)85     void FfiOHOSAceFrameworkTransitionEffectCombine(int64_t id, int64_t effectId)
86     {
87         auto nativeTransitionEffect = FFIData::GetData<NativeTransitionEffect>(id);
88         if (nativeTransitionEffect == nullptr) {
89             return;
90         }
91         auto tagEffect = FFIData::GetData<NativeTransitionEffect>(effectId);
92         if (tagEffect == nullptr) {
93             return;
94         }
95         nativeTransitionEffect->Combine(tagEffect);
96     }
97 
FfiOHOSAceFrameworkTransitionEffectAnimation(int64_t id,NativeAnimateParam param)98     void FfiOHOSAceFrameworkTransitionEffectAnimation(int64_t id, NativeAnimateParam param)
99     {
100         auto nativeTransitionEffect = FFIData::GetData<NativeTransitionEffect>(id);
101         if (nativeTransitionEffect == nullptr) {
102             return;
103         }
104         auto animationOptionResult = std::make_shared<AnimationOption>();
105         ParseCjAnimation(param, *animationOptionResult);
106         nativeTransitionEffect->Animation(animationOptionResult);
107     }
108 
FfiOHOSAceFrameworkTransitionEffectIdentity()109     int64_t FfiOHOSAceFrameworkTransitionEffectIdentity()
110     {
111         auto chainedTransitionEffect = NativeTransitionEffect::Identity();
112         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
113         if (nativeTransitionEffect == nullptr) {
114             return FFI_ERROR_CODE;
115         }
116         return nativeTransitionEffect->GetID();
117     }
118 
FfiOHOSAceFrameworkTransitionEffectSlideSwitch()119     int64_t FfiOHOSAceFrameworkTransitionEffectSlideSwitch()
120     {
121         auto chainedTransitionEffect = NativeTransitionEffect::SlideSwitch();
122         auto nativeTransitionEffect = FFIData::Create<NativeTransitionEffect>(chainedTransitionEffect);
123         if (nativeTransitionEffect == nullptr) {
124             return FFI_ERROR_CODE;
125         }
126         return nativeTransitionEffect->GetID();
127     }
128 };
129 }