• 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 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_swiper_bridge.h"
16 
17 #include <string>
18 
19 #include "base/geometry/calc_dimension.h"
20 #include "base/geometry/dimension.h"
21 #include "base/log/log_wrapper.h"
22 #include "base/utils/utils.h"
23 #include "core/interfaces/native/node/api.h"
24 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
25 #include "bridge/declarative_frontend/jsview/models/swiper_model_impl.h"
26 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.h"
27 
28 namespace OHOS::Ace::NG {
29 namespace {
30 constexpr int32_t CALL_ARG_NODE_INDEX = 0;
31 constexpr int32_t CALL_ARG_VALUE_INDEX = 1;
32 constexpr int32_t CALL_ARG_TYPE_INDEX = 2;
33 constexpr int32_t DISPLAY_ARROW_VALUE = 1;
34 constexpr int32_t ARROW_IS_SHOW_BACKGROUND = 2;
35 constexpr int32_t ARROW_IS_SIDE_BAR_MIDDLE = 3;
36 constexpr int32_t ARROW_BACKGROUND_SIZE = 4;
37 constexpr int32_t ARROW_BACKGROUND_COLOR = 5;
38 constexpr int32_t ARROW_SIZE = 6;
39 constexpr int32_t ARROW_COLOR = 7;
40 constexpr int32_t DISPLAY_ARROW_IS_HOVER_SHOW_INDEX = 8;
41 constexpr int32_t INDICATOR_VALUE_INDEX = 2;
42 constexpr int32_t DIGIT_INDICATOR_FONT_COLOR = 2;
43 constexpr int32_t DIGIT_INDICATOR_SELECTED_FONT_COLOR = 3;
44 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_SIZE = 4;
45 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_WEIGHT = 5;
46 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE = 6;
47 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT = 7;
48 constexpr int32_t DIGIT_INDICATOR_LEFT = 8;
49 constexpr int32_t DIGIT_INDICATOR_TOP = 9;
50 constexpr int32_t DIGIT_INDICATOR_RIGHT = 10;
51 constexpr int32_t DIGIT_INDICATOR_BOTTOM = 11;
52 constexpr int32_t DOT_INDICATOR_ITEM_WIDTH = 2;
53 constexpr int32_t DOT_INDICATOR_ITEM_HEIGHT = 3;
54 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_WIDTH = 4;
55 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_HEIGHT = 5;
56 constexpr int32_t DOT_INDICATOR_MASK = 6;
57 constexpr int32_t DOT_INDICATOR_COLOR = 7;
58 constexpr int32_t DOT_INDICATOR_SELECTED_COLOR = 8;
59 constexpr int32_t DOT_INDICATOR_LEFT = 9;
60 constexpr int32_t DOT_INDICATOR_TOP = 10;
61 constexpr int32_t DOT_INDICATOR_RIGHT = 11;
62 constexpr int32_t DOT_INDICATOR_BOTTOM = 12;
63 constexpr double DEFAULT_PERCENT_VALUE = 100.0;
64 } // namespace
65 
SetSwiperNextMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)66 ArkUINativeModuleValue SwiperBridge::SetSwiperNextMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
67 {
68     EcmaVM* vm = runtimeCallInfo->GetVM();
69     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
70     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
71     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
72     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
73     Ace::CalcDimension nextMargin;
74     if (valueArg->IsUndefined() || valueArg->IsNull() ||
75         !ArkTSUtils::ParseJsDimension(vm, valueArg, nextMargin, DimensionUnit::VP) ||
76         LessNotEqual(nextMargin.Value(), 0.0)) {
77         nextMargin.SetValue(0.0);
78     }
79     int32_t nextMarginUnit = static_cast<int32_t>(nextMargin.Unit());
80     GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperNextMargin(nativeNode, nextMargin.Value(), nextMarginUnit);
81     return panda::JSValueRef::Undefined(vm);
82 }
ResetSwiperNextMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)83 ArkUINativeModuleValue SwiperBridge::ResetSwiperNextMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
84 {
85     EcmaVM* vm = runtimeCallInfo->GetVM();
86     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
87     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
88     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
89     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperNextMargin(nativeNode);
90     return panda::JSValueRef::Undefined(vm);
91 }
SetSwiperPrevMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)92 ArkUINativeModuleValue SwiperBridge::SetSwiperPrevMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
93 {
94     EcmaVM* vm = runtimeCallInfo->GetVM();
95     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
96     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
97     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
98     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
99     Ace::CalcDimension prevMargin;
100     if (valueArg->IsUndefined() || valueArg->IsNull() ||
101         !ArkTSUtils::ParseJsDimension(vm, valueArg, prevMargin, DimensionUnit::VP) ||
102         LessNotEqual(prevMargin.Value(), 0.0)) {
103         prevMargin.SetValue(0.0);
104     }
105     int32_t prevMarginUnit = static_cast<int32_t>(prevMargin.Unit());
106     GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperPrevMargin(nativeNode, prevMargin.Value(), prevMarginUnit);
107     return panda::JSValueRef::Undefined(vm);
108 }
ResetSwiperPrevMargin(ArkUIRuntimeCallInfo * runtimeCallInfo)109 ArkUINativeModuleValue SwiperBridge::ResetSwiperPrevMargin(ArkUIRuntimeCallInfo* runtimeCallInfo)
110 {
111     EcmaVM* vm = runtimeCallInfo->GetVM();
112     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
113     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
114     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
115     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperPrevMargin(nativeNode);
116     return panda::JSValueRef::Undefined(vm);
117 }
SetSwiperDisplayCount(ArkUIRuntimeCallInfo * runtimeCallInfo)118 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
119 {
120     EcmaVM* vm = runtimeCallInfo->GetVM();
121     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
122     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
123     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
124     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
125     if (valueArg->IsNumber() || valueArg->IsString()) {
126         Local<JSValueRef> typeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_TYPE_INDEX);
127         std::string displayCountValue;
128         std::string type = typeArg->ToString(vm)->ToString();
129         if (type == "number") {
130             displayCountValue = std::to_string(valueArg->Int32Value(vm));
131         } else {
132             displayCountValue = valueArg->ToString(vm)->ToString();
133         }
134         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayCount(
135             nativeNode, displayCountValue.c_str(), type.c_str());
136     } else {
137         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayCount(nativeNode);
138     }
139     return panda::JSValueRef::Undefined(vm);
140 }
ResetSwiperDisplayCount(ArkUIRuntimeCallInfo * runtimeCallInfo)141 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
142 {
143     EcmaVM* vm = runtimeCallInfo->GetVM();
144     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
145     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
146     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
147     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayCount(nativeNode);
148     return panda::JSValueRef::Undefined(vm);
149 }
SetSwiperDisplayArrow(ArkUIRuntimeCallInfo * runtimeCallInfo)150 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayArrow(ArkUIRuntimeCallInfo* runtimeCallInfo)
151 {
152     EcmaVM* vm = runtimeCallInfo->GetVM();
153     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
154     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
155     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
156     Local<JSValueRef> displayArrowValue = runtimeCallInfo->GetCallArgRef(DISPLAY_ARROW_VALUE);
157     Local<JSValueRef> showBackground = runtimeCallInfo->GetCallArgRef(ARROW_IS_SHOW_BACKGROUND);
158     Local<JSValueRef> isSidebarMiddle = runtimeCallInfo->GetCallArgRef(ARROW_IS_SIDE_BAR_MIDDLE);
159     Local<JSValueRef> backgroundSize = runtimeCallInfo->GetCallArgRef(ARROW_BACKGROUND_SIZE);
160     Local<JSValueRef> backgroundColor = runtimeCallInfo->GetCallArgRef(ARROW_BACKGROUND_COLOR);
161     Local<JSValueRef> arrowSize = runtimeCallInfo->GetCallArgRef(ARROW_SIZE);
162     Local<JSValueRef> arrowColor = runtimeCallInfo->GetCallArgRef(ARROW_COLOR);
163     Local<JSValueRef> isHoverShow = runtimeCallInfo->GetCallArgRef(DISPLAY_ARROW_IS_HOVER_SHOW_INDEX);
164     std::string displayArrowValueStr = std::to_string(displayArrowValue->Int32Value(vm));
165     std::string showBackgroundStr = "2";
166     if (!showBackground->IsUndefined()) {
167         showBackgroundStr = showBackground->ToBoolean(vm)->Value() ? "1" : "0";
168     }
169     std::string isSidebarMiddleStr = "2";
170     if (!isSidebarMiddle->IsUndefined()) {
171         isSidebarMiddleStr = isSidebarMiddle->ToBoolean(vm)->Value() ? "1" : "0";
172     }
173     CalcDimension lengthValue;
174     Color color;
175     std::string backgroundSizeStr =
176         ArkTSUtils::ParseJsDimension(vm, backgroundSize, lengthValue, DimensionUnit::VP, false)
177             ? std::to_string(lengthValue.Value()) + "vp" : "-";
178     std::string backgroundColorStr =
179         ArkTSUtils::ParseJsColorAlpha(vm, backgroundColor, color) ? std::to_string(color.GetValue()) : "-";
180     std::string arrowSizeStr = ArkTSUtils::ParseJsDimension(vm, arrowSize, lengthValue, DimensionUnit::VP, false)
181                                    ? std::to_string(lengthValue.Value()) + "vp" : "-";
182     std::string arrowColorStr =
183         ArkTSUtils::ParseJsColorAlpha(vm, arrowColor, color) ? std::to_string(color.GetValue()) : "-";
184     std::string isHoverShowStr = "2";
185     if (!isHoverShow->IsUndefined()) {
186         isHoverShowStr = isHoverShow->ToBoolean(vm)->Value() ? "1" : "0";
187     }
188     std::string displayArrowStr = displayArrowValueStr + "|" + showBackgroundStr + "|" + isSidebarMiddleStr + "|" +
189                                   backgroundSizeStr + "|" + backgroundColorStr + "|" + arrowSizeStr + "|" +
190                                   arrowColorStr + "|" + isHoverShowStr + "|";
191     GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayArrow(nativeNode, displayArrowStr.c_str());
192     return panda::JSValueRef::Undefined(vm);
193 }
ResetSwiperDisplayArrow(ArkUIRuntimeCallInfo * runtimeCallInfo)194 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayArrow(ArkUIRuntimeCallInfo* runtimeCallInfo)
195 {
196     EcmaVM* vm = runtimeCallInfo->GetVM();
197     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
198     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
199     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
200     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayArrow(nativeNode);
201     return panda::JSValueRef::Undefined(vm);
202 }
SetSwiperCurve(ArkUIRuntimeCallInfo * runtimeCallInfo)203 ArkUINativeModuleValue SwiperBridge::SetSwiperCurve(ArkUIRuntimeCallInfo* runtimeCallInfo)
204 {
205     EcmaVM* vm = runtimeCallInfo->GetVM();
206     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
207     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
208     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
209     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
210     if (valueArg->IsString()) {
211         std::string curve = valueArg->ToString(vm)->ToString();
212         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperCurve(nativeNode, curve.c_str());
213     } else {
214         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCurve(nativeNode);
215     }
216     return panda::JSValueRef::Undefined(vm);
217 }
ResetSwiperCurve(ArkUIRuntimeCallInfo * runtimeCallInfo)218 ArkUINativeModuleValue SwiperBridge::ResetSwiperCurve(ArkUIRuntimeCallInfo* runtimeCallInfo)
219 {
220     EcmaVM* vm = runtimeCallInfo->GetVM();
221     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
222     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
223     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
224     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCurve(nativeNode);
225     return panda::JSValueRef::Undefined(vm);
226 }
SetSwiperDisableSwipe(ArkUIRuntimeCallInfo * runtimeCallInfo)227 ArkUINativeModuleValue SwiperBridge::SetSwiperDisableSwipe(ArkUIRuntimeCallInfo* runtimeCallInfo)
228 {
229     EcmaVM* vm = runtimeCallInfo->GetVM();
230     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
231     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
232     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
233     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
234     if (valueArg->IsBoolean()) {
235         bool disableswipe = valueArg->ToBoolean(vm)->Value();
236         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisableSwipe(nativeNode, disableswipe);
237     } else {
238         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisableSwipe(nativeNode);
239     }
240     return panda::JSValueRef::Undefined(vm);
241 }
ResetSwiperDisableSwipe(ArkUIRuntimeCallInfo * runtimeCallInfo)242 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisableSwipe(ArkUIRuntimeCallInfo* runtimeCallInfo)
243 {
244     EcmaVM* vm = runtimeCallInfo->GetVM();
245     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
246     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
247     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
248     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisableSwipe(nativeNode);
249     return panda::JSValueRef::Undefined(vm);
250 }
SetSwiperEffectMode(ArkUIRuntimeCallInfo * runtimeCallInfo)251 ArkUINativeModuleValue SwiperBridge::SetSwiperEffectMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
252 {
253     EcmaVM* vm = runtimeCallInfo->GetVM();
254     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
255     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
256     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
257     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
258     if (valueArg->IsNumber()) {
259         auto edgeEffect = valueArg->Int32Value(vm);
260         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperEffectMode(nativeNode, edgeEffect);
261     } else {
262         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEffectMode(nativeNode);
263     }
264     return panda::JSValueRef::Undefined(vm);
265 }
ResetSwiperEffectMode(ArkUIRuntimeCallInfo * runtimeCallInfo)266 ArkUINativeModuleValue SwiperBridge::ResetSwiperEffectMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
267 {
268     EcmaVM* vm = runtimeCallInfo->GetVM();
269     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
270     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
271     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
272     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEffectMode(nativeNode);
273     return panda::JSValueRef::Undefined(vm);
274 }
SetSwiperCachedCount(ArkUIRuntimeCallInfo * runtimeCallInfo)275 ArkUINativeModuleValue SwiperBridge::SetSwiperCachedCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
276 {
277     EcmaVM* vm = runtimeCallInfo->GetVM();
278     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
279     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
280     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
281     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
282     if (valueArg->IsNumber()) {
283         int32_t cachedCount = valueArg->Int32Value(vm);
284         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperCachedCount(nativeNode, cachedCount);
285     } else {
286         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCachedCount(nativeNode);
287     }
288     return panda::JSValueRef::Undefined(vm);
289 }
ResetSwiperCachedCount(ArkUIRuntimeCallInfo * runtimeCallInfo)290 ArkUINativeModuleValue SwiperBridge::ResetSwiperCachedCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
291 {
292     EcmaVM* vm = runtimeCallInfo->GetVM();
293     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
294     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
295     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
296     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperCachedCount(nativeNode);
297     return panda::JSValueRef::Undefined(vm);
298 }
SetSwiperDisplayMode(ArkUIRuntimeCallInfo * runtimeCallInfo)299 ArkUINativeModuleValue SwiperBridge::SetSwiperDisplayMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
300 {
301     EcmaVM* vm = runtimeCallInfo->GetVM();
302     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
303     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
304     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
305     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
306     if (valueArg->IsNumber()) {
307         int32_t index = valueArg->Int32Value(vm);
308         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDisplayMode(nativeNode, index);
309     } else {
310         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayMode(nativeNode);
311     }
312     return panda::JSValueRef::Undefined(vm);
313 }
ResetSwiperDisplayMode(ArkUIRuntimeCallInfo * runtimeCallInfo)314 ArkUINativeModuleValue SwiperBridge::ResetSwiperDisplayMode(ArkUIRuntimeCallInfo* runtimeCallInfo)
315 {
316     EcmaVM* vm = runtimeCallInfo->GetVM();
317     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
318     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
319     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
320     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDisplayMode(nativeNode);
321     return panda::JSValueRef::Undefined(vm);
322 }
SetSwiperItemSpace(ArkUIRuntimeCallInfo * runtimeCallInfo)323 ArkUINativeModuleValue SwiperBridge::SetSwiperItemSpace(ArkUIRuntimeCallInfo* runtimeCallInfo)
324 {
325     EcmaVM* vm = runtimeCallInfo->GetVM();
326     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
327     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
328     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
329     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
330     Ace::CalcDimension itemSpace;
331     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, valueArg, itemSpace) || LessNotEqual(itemSpace.Value(), 0.0)) {
332         itemSpace.SetValue(0.0);
333     }
334     int32_t itemSpaceUnit = static_cast<int32_t>(itemSpace.Unit());
335     GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperItemSpace(nativeNode, itemSpace.Value(), itemSpaceUnit);
336     return panda::JSValueRef::Undefined(vm);
337 }
ResetSwiperItemSpace(ArkUIRuntimeCallInfo * runtimeCallInfo)338 ArkUINativeModuleValue SwiperBridge::ResetSwiperItemSpace(ArkUIRuntimeCallInfo* runtimeCallInfo)
339 {
340     EcmaVM* vm = runtimeCallInfo->GetVM();
341     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
342     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
343     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
344     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperItemSpace(nativeNode);
345     return panda::JSValueRef::Undefined(vm);
346 }
SetSwiperVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)347 ArkUINativeModuleValue SwiperBridge::SetSwiperVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
348 {
349     EcmaVM* vm = runtimeCallInfo->GetVM();
350     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
351     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
352     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
353     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
354     if (valueArg->IsBoolean()) {
355         bool isVertical = valueArg->ToBoolean(vm)->Value();
356         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperVertical(nativeNode, isVertical);
357     } else {
358         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperVertical(nativeNode);
359     }
360     return panda::JSValueRef::Undefined(vm);
361 }
ResetSwiperVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)362 ArkUINativeModuleValue SwiperBridge::ResetSwiperVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
363 {
364     EcmaVM* vm = runtimeCallInfo->GetVM();
365     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
366     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
367     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
368     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperVertical(nativeNode);
369     return panda::JSValueRef::Undefined(vm);
370 }
SetSwiperLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)371 ArkUINativeModuleValue SwiperBridge::SetSwiperLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
372 {
373     EcmaVM* vm = runtimeCallInfo->GetVM();
374     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
375     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
376     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
377     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
378     if (valueArg->IsBoolean()) {
379         bool loop = valueArg->ToBoolean(vm)->Value();
380         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperLoop(nativeNode, loop);
381     } else {
382         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperLoop(nativeNode);
383     }
384     return panda::JSValueRef::Undefined(vm);
385 }
ResetSwiperLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)386 ArkUINativeModuleValue SwiperBridge::ResetSwiperLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
387 {
388     EcmaVM* vm = runtimeCallInfo->GetVM();
389     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
390     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
391     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
392     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperLoop(nativeNode);
393     return panda::JSValueRef::Undefined(vm);
394 }
SetSwiperInterval(ArkUIRuntimeCallInfo * runtimeCallInfo)395 ArkUINativeModuleValue SwiperBridge::SetSwiperInterval(ArkUIRuntimeCallInfo* runtimeCallInfo)
396 {
397     EcmaVM* vm = runtimeCallInfo->GetVM();
398     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
399     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
400     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
401     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
402     if (valueArg->IsNumber()) {
403         int32_t interval = valueArg->Int32Value(vm);
404         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperInterval(nativeNode, interval);
405     } else {
406         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperInterval(nativeNode);
407     }
408     return panda::JSValueRef::Undefined(vm);
409 }
ResetSwiperInterval(ArkUIRuntimeCallInfo * runtimeCallInfo)410 ArkUINativeModuleValue SwiperBridge::ResetSwiperInterval(ArkUIRuntimeCallInfo* runtimeCallInfo)
411 {
412     EcmaVM* vm = runtimeCallInfo->GetVM();
413     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
414     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
415     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
416     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperInterval(nativeNode);
417     return panda::JSValueRef::Undefined(vm);
418 }
SetSwiperAutoPlay(ArkUIRuntimeCallInfo * runtimeCallInfo)419 ArkUINativeModuleValue SwiperBridge::SetSwiperAutoPlay(ArkUIRuntimeCallInfo* runtimeCallInfo)
420 {
421     EcmaVM* vm = runtimeCallInfo->GetVM();
422     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
423     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
424     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
425     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
426     if (valueArg->IsBoolean()) {
427         bool autoPlay = valueArg->ToBoolean(vm)->Value();
428         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperAutoPlay(nativeNode, autoPlay);
429     } else {
430         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperAutoPlay(nativeNode);
431     }
432     return panda::JSValueRef::Undefined(vm);
433 }
ResetSwiperAutoPlay(ArkUIRuntimeCallInfo * runtimeCallInfo)434 ArkUINativeModuleValue SwiperBridge::ResetSwiperAutoPlay(ArkUIRuntimeCallInfo* runtimeCallInfo)
435 {
436     EcmaVM* vm = runtimeCallInfo->GetVM();
437     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
438     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
439     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
440     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperAutoPlay(nativeNode);
441     return panda::JSValueRef::Undefined(vm);
442 }
SetSwiperIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)443 ArkUINativeModuleValue SwiperBridge::SetSwiperIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
444 {
445     EcmaVM* vm = runtimeCallInfo->GetVM();
446     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
447     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
448     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
449     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
450     if (valueArg->IsNumber()) {
451         int32_t index = valueArg->Int32Value(vm);
452         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperIndex(nativeNode, index);
453     } else {
454         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndex(nativeNode);
455     }
456     return panda::JSValueRef::Undefined(vm);
457 }
ResetSwiperIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)458 ArkUINativeModuleValue SwiperBridge::ResetSwiperIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
459 {
460     EcmaVM* vm = runtimeCallInfo->GetVM();
461     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
462     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
463     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
464     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndex(nativeNode);
465     return panda::JSValueRef::Undefined(vm);
466 }
GetStringByValueRef(const EcmaVM * vm,const Local<JSValueRef> & jsValue)467 std::string GetStringByValueRef(const EcmaVM* vm, const Local<JSValueRef>& jsValue)
468 {
469     std::string result = "-";
470     if (jsValue->IsUndefined()) {
471         return result;
472     }
473     CalcDimension calc;
474     result = ArkTSUtils::ParseJsDimension(vm, jsValue, calc, DimensionUnit::VP, true)
475         ? (calc.Unit() == DimensionUnit::PERCENT ? (std::to_string(calc.Value() * DEFAULT_PERCENT_VALUE) + "%")
476                                                  : (std::to_string(calc.Value()) + "vp")) : "0.0_vp";
477     return result;
478 }
GetSwiperDotIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)479 std::string GetSwiperDotIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
480 {
481     Local<JSValueRef> itemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_WIDTH);
482     Local<JSValueRef> itemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_HEIGHT);
483     Local<JSValueRef> selectedItemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_WIDTH);
484     Local<JSValueRef> selectedItemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_HEIGHT);
485     Local<JSValueRef> maskArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_MASK);
486     Local<JSValueRef> colorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_COLOR);
487     Local<JSValueRef> selectedColorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_COLOR);
488     Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_LEFT);
489     Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_TOP);
490     Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_RIGHT);
491     Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_BOTTOM);
492     CalcDimension calc;
493     std::string itemWidth = ArkTSUtils::ParseJsDimension(vm, itemWidthArg, calc, DimensionUnit::VP, false)
494                                 ? std::to_string(calc.Value()) + "vp" : "-";
495     std::string itemHeight = ArkTSUtils::ParseJsDimension(vm, itemHeightArg, calc, DimensionUnit::VP, false)
496                                  ? std::to_string(calc.Value()) + "vp" : "-";
497     std::string selectedItemWidth =
498         ArkTSUtils::ParseJsDimension(vm, selectedItemWidthArg, calc, DimensionUnit::VP, false)
499             ? std::to_string(calc.Value()) + "vp" : "-";
500     std::string selectedItemHeight =
501         ArkTSUtils::ParseJsDimension(vm, selectedItemHeightArg, calc, DimensionUnit::VP, false)
502             ? std::to_string(calc.Value()) + "vp" : "-";
503     std::string mask = "2";
504     if (!maskArg->IsUndefined()) {
505         mask = maskArg->ToBoolean(vm)->Value() ? "1" : "0";
506     }
507     Color color;
508     std::string colorStr = ArkTSUtils::ParseJsColorAlpha(vm, colorArg, color) ? std::to_string(color.GetValue()) : "-";
509     std::string selectedColor =
510         ArkTSUtils::ParseJsColorAlpha(vm, selectedColorArg, color) ? std::to_string(color.GetValue()) : "-";
511     std::string left = GetStringByValueRef(vm, leftArg);
512     std::string top = GetStringByValueRef(vm, topArg);
513     std::string right = GetStringByValueRef(vm, rightArg);
514     std::string bottom = GetStringByValueRef(vm, bottomArg);
515     std::string indicatorStr = itemWidth + "|" + itemHeight + "|" + selectedItemWidth + "|" +
516                                selectedItemHeight + "|" + mask + "|" + colorStr + "|" + selectedColor + "|" + left +
517                                "|" + top + "|" + right + "|" + bottom;
518     return indicatorStr;
519 }
GetSwiperDigitIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)520 std::string GetSwiperDigitIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
521 {
522     Local<JSValueRef> fontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_FONT_COLOR);
523     Local<JSValueRef> selectedFontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_FONT_COLOR);
524     Local<JSValueRef> digitFontSizeArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_SIZE);
525     Local<JSValueRef> digitFontWeightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_WEIGHT);
526     Local<JSValueRef> selectedDigitFontSizeArg =
527         runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE);
528     Local<JSValueRef> selectedDigitFontWeightArg =
529         runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT);
530     Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_LEFT);
531     Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_TOP);
532     Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_RIGHT);
533     Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_BOTTOM);
534     Color color;
535     CalcDimension calc;
536     std::string fontColor =
537         ArkTSUtils::ParseJsColorAlpha(vm, fontColorArg, color) ? std::to_string(color.GetValue()) : "-";
538     std::string selectedFontColor =
539         ArkTSUtils::ParseJsColorAlpha(vm, selectedFontColorArg, color) ? std::to_string(color.GetValue()) : "-";
540     std::string digitFontSize = ArkTSUtils::ParseJsDimension(vm, digitFontSizeArg, calc, DimensionUnit::VP, false)
541                                     ? std::to_string(calc.Value()) + "vp" : "-";
542     std::string digitFontWeight = digitFontWeightArg->ToString(vm)->ToString();
543     std::string selectedDigitFontSize =
544         ArkTSUtils::ParseJsDimension(vm, selectedDigitFontSizeArg, calc, DimensionUnit::VP, false)
545             ? std::to_string(calc.Value()) + "vp" : "-";
546     std::string selectedDigitFontWeight = selectedDigitFontWeightArg->ToString(vm)->ToString();
547     std::string left = GetStringByValueRef(vm, leftArg);
548     std::string top = GetStringByValueRef(vm, topArg);
549     std::string right = GetStringByValueRef(vm, rightArg);
550     std::string bottom = GetStringByValueRef(vm, bottomArg);
551     std::string indicatorStr = fontColor + "|" + selectedFontColor + "|" + digitFontSize + "|" + digitFontWeight +
552                    "|" + selectedDigitFontSize + "|" + selectedDigitFontWeight + "|" + left + "|" + top + "|" + right +
553                    "|" + bottom;
554     return indicatorStr;
555 }
SetSwiperIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo)556 ArkUINativeModuleValue SwiperBridge::SetSwiperIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo)
557 {
558     EcmaVM* vm = runtimeCallInfo->GetVM();
559     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
560     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
561     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
562     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
563 
564     std::string type = valueArg->ToString(vm)->ToString();
565     std::string indicatorStr = "";
566     if (type == "boolean") {
567         Local<JSValueRef> indicatorArg = runtimeCallInfo->GetCallArgRef(INDICATOR_VALUE_INDEX);
568         std::string indicator = indicatorArg->ToBoolean(vm)->Value() ? "1" : "0";
569         indicatorStr = type + "|" + indicator;
570     } else if (type == "ArkDotIndicator") {
571         indicatorStr = type + "|" + GetSwiperDotIndicator(runtimeCallInfo, vm);
572     } else {
573         indicatorStr = type + "|" + GetSwiperDigitIndicator(runtimeCallInfo, vm);
574     }
575     GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperIndicator(nativeNode, indicatorStr.c_str());
576     return panda::JSValueRef::Undefined(vm);
577 }
ResetSwiperIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo)578 ArkUINativeModuleValue SwiperBridge::ResetSwiperIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo)
579 {
580     EcmaVM* vm = runtimeCallInfo->GetVM();
581     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
582     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
583     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
584     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperIndicator(nativeNode);
585     return panda::JSValueRef::Undefined(vm);
586 }
SetSwiperDuration(ArkUIRuntimeCallInfo * runtimeCallInfo)587 ArkUINativeModuleValue SwiperBridge::SetSwiperDuration(ArkUIRuntimeCallInfo* runtimeCallInfo)
588 {
589     EcmaVM* vm = runtimeCallInfo->GetVM();
590     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
591     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
592     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
593     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
594     if (valueArg->IsNumber()) {
595         int32_t duration = valueArg->Int32Value(vm);
596         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperDuration(nativeNode, duration);
597     } else {
598         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDuration(nativeNode);
599     }
600     return panda::JSValueRef::Undefined(vm);
601 }
602 
ResetSwiperDuration(ArkUIRuntimeCallInfo * runtimeCallInfo)603 ArkUINativeModuleValue SwiperBridge::ResetSwiperDuration(ArkUIRuntimeCallInfo* runtimeCallInfo)
604 {
605     EcmaVM* vm = runtimeCallInfo->GetVM();
606     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
607     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
608     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
609     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperDuration(nativeNode);
610     return panda::JSValueRef::Undefined(vm);
611 }
612 
SetSwiperEnabled(ArkUIRuntimeCallInfo * runtimeCallInfo)613 ArkUINativeModuleValue SwiperBridge::SetSwiperEnabled(ArkUIRuntimeCallInfo* runtimeCallInfo)
614 {
615     EcmaVM* vm = runtimeCallInfo->GetVM();
616     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
617     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
618     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
619     Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
620     if (valueArg->IsBoolean()) {
621         bool enabled = valueArg->ToBoolean(vm)->Value();
622         GetArkUIInternalNodeAPI()->GetCommonModifier().SetEnabled(nativeNode, enabled);
623         GetArkUIInternalNodeAPI()->GetSwiperModifier().SetSwiperEnabled(nativeNode, enabled);
624     } else {
625         GetArkUIInternalNodeAPI()->GetCommonModifier().ResetEnabled(nativeNode);
626         GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEnabled(nativeNode);
627     }
628     return panda::JSValueRef::Undefined(vm);
629 }
630 
ResetSwiperEnabled(ArkUIRuntimeCallInfo * runtimeCallInfo)631 ArkUINativeModuleValue SwiperBridge::ResetSwiperEnabled(ArkUIRuntimeCallInfo* runtimeCallInfo)
632 {
633     EcmaVM* vm = runtimeCallInfo->GetVM();
634     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
635     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
636     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
637     GetArkUIInternalNodeAPI()->GetCommonModifier().ResetEnabled(nativeNode);
638     GetArkUIInternalNodeAPI()->GetSwiperModifier().ResetSwiperEnabled(nativeNode);
639     return panda::JSValueRef::Undefined(vm);
640 }
641 } // namespace OHOS::Ace::NG