• 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_slider_bridge.h"
16 
17 #include "core/interfaces/native/node/api.h"
18 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
19 #include "bridge/declarative_frontend/jsview/js_shape_abstract.h"
20 #include "core/components_ng/pattern/slider/slider_model_ng.h"
21 #include "frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
22 
23 namespace OHOS::Ace::NG {
24 constexpr int NUM_0 = 0;
25 constexpr int NUM_1 = 1;
26 constexpr int NUM_2 = 2;
SetShowTips(ArkUIRuntimeCallInfo * runtimeCallInfo)27 ArkUINativeModuleValue SliderBridge::SetShowTips(ArkUIRuntimeCallInfo* runtimeCallInfo)
28 {
29     EcmaVM* vm = runtimeCallInfo->GetVM();
30     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
31     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
32     Local<JSValueRef> showTipArg = runtimeCallInfo->GetCallArgRef(NUM_1);
33     Local<JSValueRef> contentArg = runtimeCallInfo->GetCallArgRef(NUM_2);
34     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
35 
36     bool showTips = false;
37     if (showTipArg->IsBoolean()) {
38         showTips = showTipArg->ToBoolean(vm)->Value();
39     }
40 
41     std::string content;
42     if (ArkTSUtils::ParseJsString(vm, contentArg, content)) {
43         GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowTips(nativeNode, showTips, content.c_str());
44     } else {
45         GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowTips(nativeNode, showTips, nullptr);
46     }
47     return panda::JSValueRef::Undefined(vm);
48 }
49 
ResetShowTips(ArkUIRuntimeCallInfo * runtimeCallInfo)50 ArkUINativeModuleValue SliderBridge::ResetShowTips(ArkUIRuntimeCallInfo* runtimeCallInfo)
51 {
52     EcmaVM* vm = runtimeCallInfo->GetVM();
53     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
54     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
55     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
56     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetShowTips(nativeNode);
57     return panda::JSValueRef::Undefined(vm);
58 }
59 
SetSliderStepSize(ArkUIRuntimeCallInfo * runtimeCallInfo)60 ArkUINativeModuleValue SliderBridge::SetSliderStepSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
61 {
62     EcmaVM* vm = runtimeCallInfo->GetVM();
63     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
64     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
65     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
66     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
67     CalcDimension stepSize;
68     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, stepSize, false)) {
69         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
70         return panda::JSValueRef::Undefined(vm);
71     } else {
72         if (LessNotEqual(stepSize.Value(), 0.0)) {
73             GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
74             return panda::JSValueRef::Undefined(vm);
75         }
76 
77         GetArkUIInternalNodeAPI()->GetSliderModifier().SetSliderStepSize(
78             nativeNode, stepSize.Value(), static_cast<int>(stepSize.Unit()));
79     }
80 
81     return panda::JSValueRef::Undefined(vm);
82 }
83 
ResetSliderStepSize(ArkUIRuntimeCallInfo * runtimeCallInfo)84 ArkUINativeModuleValue SliderBridge::ResetSliderStepSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
85 {
86     EcmaVM* vm = runtimeCallInfo->GetVM();
87     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
88     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
89     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
90     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSliderStepSize(nativeNode);
91     return panda::JSValueRef::Undefined(vm);
92 }
93 
SetBlockSize(ArkUIRuntimeCallInfo * runtimeCallInfo)94 ArkUINativeModuleValue SliderBridge::SetBlockSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
95 {
96     EcmaVM* vm = runtimeCallInfo->GetVM();
97     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
98     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
99     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
100     Local<JSValueRef> thirdArg = runtimeCallInfo->GetCallArgRef(NUM_2);
101     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
102 
103     CalcDimension blockWidth;
104     CalcDimension blockHeight;
105     bool hasBlockWidth = ArkTSUtils::ParseJsDimensionVp(vm, secondArg, blockWidth);
106     bool hasBlockHeight = ArkTSUtils::ParseJsDimensionVp(vm, thirdArg, blockHeight);
107     if (!hasBlockWidth && !hasBlockHeight) {
108         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockSize(nativeNode);
109     }
110 
111     GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockSize(nativeNode,
112         blockWidth.Value(), static_cast<int>(blockWidth.Unit()),
113         blockHeight.Value(), static_cast<int>(blockHeight.Unit()));
114     return panda::JSValueRef::Undefined(vm);
115 }
116 
ResetBlockSize(ArkUIRuntimeCallInfo * runtimeCallInfo)117 ArkUINativeModuleValue SliderBridge::ResetBlockSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
118 {
119     EcmaVM* vm = runtimeCallInfo->GetVM();
120     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
121     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
122     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
123     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockSize(nativeNode);
124     return panda::JSValueRef::Undefined(vm);
125 }
126 
SetTrackBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)127 ArkUINativeModuleValue SliderBridge::SetTrackBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
128 {
129     EcmaVM* vm = runtimeCallInfo->GetVM();
130     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
131     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
132     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
133     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
134 
135     CalcDimension trackBorderRadius;
136     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, trackBorderRadius, true)) {
137         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
138         return panda::JSValueRef::Undefined(vm);
139     }
140 
141     if (LessNotEqual(trackBorderRadius.Value(), 0.0)) {
142         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
143         return panda::JSValueRef::Undefined(vm);
144     }
145 
146     GetArkUIInternalNodeAPI()->GetSliderModifier().SetTrackBorderRadius(nativeNode,
147         trackBorderRadius.Value(), static_cast<int>(trackBorderRadius.Unit()));
148     return panda::JSValueRef::Undefined(vm);
149 }
150 
ResetTrackBorderRadius(ArkUIRuntimeCallInfo * runtimeCallInfo)151 ArkUINativeModuleValue SliderBridge::ResetTrackBorderRadius(ArkUIRuntimeCallInfo* runtimeCallInfo)
152 {
153     EcmaVM* vm = runtimeCallInfo->GetVM();
154     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
155     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
156     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
157     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBorderRadius(nativeNode);
158     return panda::JSValueRef::Undefined(vm);
159 }
160 
SetStepColor(ArkUIRuntimeCallInfo * runtimeCallInfo)161 ArkUINativeModuleValue SliderBridge::SetStepColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
162 {
163     EcmaVM* vm = runtimeCallInfo->GetVM();
164     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
165     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
166     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
167     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
168     Color color;
169     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
170         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetStepColor(nativeNode);
171     } else {
172         GetArkUIInternalNodeAPI()->GetSliderModifier().SetStepColor(nativeNode, color.GetValue());
173     }
174 
175     return panda::JSValueRef::Undefined(vm);
176 }
177 
ResetStepColor(ArkUIRuntimeCallInfo * runtimeCallInfo)178 ArkUINativeModuleValue SliderBridge::ResetStepColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
179 {
180     EcmaVM* vm = runtimeCallInfo->GetVM();
181     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
182     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
183     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
184     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetStepColor(nativeNode);
185     return panda::JSValueRef::Undefined(vm);
186 }
187 
SetBlockBorderColor(ArkUIRuntimeCallInfo * runtimeCallInfo)188 ArkUINativeModuleValue SliderBridge::SetBlockBorderColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
189 {
190     EcmaVM* vm = runtimeCallInfo->GetVM();
191     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
192     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
193     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
194     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
195     Color color;
196     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
197         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderColor(nativeNode);
198     } else {
199         GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockBorderColor(nativeNode, color.GetValue());
200     }
201     return panda::JSValueRef::Undefined(vm);
202 }
203 
ResetBlockBorderColor(ArkUIRuntimeCallInfo * runtimeCallInfo)204 ArkUINativeModuleValue SliderBridge::ResetBlockBorderColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
205 {
206     EcmaVM* vm = runtimeCallInfo->GetVM();
207     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
208     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
209     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
210     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderColor(nativeNode);
211     return panda::JSValueRef::Undefined(vm);
212 }
213 
SetBlockBorderWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)214 ArkUINativeModuleValue SliderBridge::SetBlockBorderWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
215 {
216     EcmaVM* vm = runtimeCallInfo->GetVM();
217     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
218     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
219     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
220     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
221 
222     CalcDimension blockBorderWidth;
223     if (!ArkTSUtils::ParseJsDimensionVp(vm, secondArg, blockBorderWidth)) {
224         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
225         return panda::JSValueRef::Undefined(vm);
226     }
227 
228     if (LessNotEqual(blockBorderWidth.Value(), 0.0)) {
229         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
230         return panda::JSValueRef::Undefined(vm);
231     }
232 
233     GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockBorderWidth(nativeNode,
234         blockBorderWidth.Value(), static_cast<int>(blockBorderWidth.Unit()));
235     return panda::JSValueRef::Undefined(vm);
236 }
237 
ResetBlockBorderWidth(ArkUIRuntimeCallInfo * runtimeCallInfo)238 ArkUINativeModuleValue SliderBridge::ResetBlockBorderWidth(ArkUIRuntimeCallInfo* runtimeCallInfo)
239 {
240     EcmaVM* vm = runtimeCallInfo->GetVM();
241     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
242     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
243     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
244     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockBorderWidth(nativeNode);
245     return panda::JSValueRef::Undefined(vm);
246 }
247 
SetBlockColor(ArkUIRuntimeCallInfo * runtimeCallInfo)248 ArkUINativeModuleValue SliderBridge::SetBlockColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
249 {
250     EcmaVM* vm = runtimeCallInfo->GetVM();
251     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
252     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
253     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
254     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
255     Color color;
256     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
257         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockColor(nativeNode);
258     } else {
259         GetArkUIInternalNodeAPI()->GetSliderModifier().SetBlockColor(nativeNode, color.GetValue());
260     }
261     return panda::JSValueRef::Undefined(vm);
262 }
263 
ResetBlockColor(ArkUIRuntimeCallInfo * runtimeCallInfo)264 ArkUINativeModuleValue SliderBridge::ResetBlockColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
265 {
266     EcmaVM* vm = runtimeCallInfo->GetVM();
267     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
268     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
269     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
270     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetBlockColor(nativeNode);
271     return panda::JSValueRef::Undefined(vm);
272 }
273 
SetTrackBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)274 ArkUINativeModuleValue SliderBridge::SetTrackBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
275 {
276     EcmaVM* vm = runtimeCallInfo->GetVM();
277     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
278     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
279     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
280     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
281     Color color;
282     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
283         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBackgroundColor(nativeNode);
284     } else {
285         GetArkUIInternalNodeAPI()->GetSliderModifier().SetTrackBackgroundColor(nativeNode, color.GetValue());
286     }
287     return panda::JSValueRef::Undefined(vm);
288 }
289 
ResetTrackBackgroundColor(ArkUIRuntimeCallInfo * runtimeCallInfo)290 ArkUINativeModuleValue SliderBridge::ResetTrackBackgroundColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
291 {
292     EcmaVM* vm = runtimeCallInfo->GetVM();
293     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
294     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
295     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
296     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetTrackBackgroundColor(nativeNode);
297     return panda::JSValueRef::Undefined(vm);
298 }
299 
SetSelectColor(ArkUIRuntimeCallInfo * runtimeCallInfo)300 ArkUINativeModuleValue SliderBridge::SetSelectColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
301 {
302     EcmaVM* vm = runtimeCallInfo->GetVM();
303     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
304     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
305     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
306     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
307         Color color;
308     if (!ArkTSUtils::ParseJsColorAlpha(vm, secondArg, color)) {
309         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSelectColor(nativeNode);
310     } else {
311         GetArkUIInternalNodeAPI()->GetSliderModifier().SetSelectColor(nativeNode, color.GetValue());
312     }
313     return panda::JSValueRef::Undefined(vm);
314 }
315 
ResetSelectColor(ArkUIRuntimeCallInfo * runtimeCallInfo)316 ArkUINativeModuleValue SliderBridge::ResetSelectColor(ArkUIRuntimeCallInfo* runtimeCallInfo)
317 {
318     EcmaVM* vm = runtimeCallInfo->GetVM();
319     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
320     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
321     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
322     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetSelectColor(nativeNode);
323     return panda::JSValueRef::Undefined(vm);
324 }
325 
SetShowSteps(ArkUIRuntimeCallInfo * runtimeCallInfo)326 ArkUINativeModuleValue SliderBridge::SetShowSteps(ArkUIRuntimeCallInfo* runtimeCallInfo)
327 {
328     EcmaVM* vm = runtimeCallInfo->GetVM();
329     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
330     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
331     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
332     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
333     bool flag = secondArg->ToBoolean(vm)->Value();
334     GetArkUIInternalNodeAPI()->GetSliderModifier().SetShowSteps(nativeNode, flag);
335     return panda::JSValueRef::Undefined(vm);
336 }
337 
ResetShowSteps(ArkUIRuntimeCallInfo * runtimeCallInfo)338 ArkUINativeModuleValue SliderBridge::ResetShowSteps(ArkUIRuntimeCallInfo* runtimeCallInfo)
339 {
340     EcmaVM* vm = runtimeCallInfo->GetVM();
341     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
342     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
343     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
344     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetShowSteps(nativeNode);
345     return panda::JSValueRef::Undefined(vm);
346 }
347 
SetThickness(ArkUIRuntimeCallInfo * runtimeCallInfo)348 ArkUINativeModuleValue SliderBridge::SetThickness(ArkUIRuntimeCallInfo* runtimeCallInfo)
349 {
350     EcmaVM* vm = runtimeCallInfo->GetVM();
351     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
352     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
353     Local<JSValueRef> secondArg = runtimeCallInfo->GetCallArgRef(NUM_1);
354     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
355 
356     CalcDimension thickness;
357     if (!ArkTSUtils::ParseJsDimensionVpNG(vm, secondArg, thickness, true)) {
358         GetArkUIInternalNodeAPI()->GetSliderModifier().ResetThickness(nativeNode);
359         return panda::JSValueRef::Undefined(vm);
360     }
361 
362     GetArkUIInternalNodeAPI()->GetSliderModifier().SetThickness(nativeNode,
363         thickness.Value(), static_cast<int>(thickness.Unit()));
364     return panda::JSValueRef::Undefined(vm);
365 }
366 
ResetThickness(ArkUIRuntimeCallInfo * runtimeCallInfo)367 ArkUINativeModuleValue SliderBridge::ResetThickness(ArkUIRuntimeCallInfo* runtimeCallInfo)
368 {
369     EcmaVM* vm = runtimeCallInfo->GetVM();
370     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
371     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
372     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
373     GetArkUIInternalNodeAPI()->GetSliderModifier().ResetThickness(nativeNode);
374     return panda::JSValueRef::Undefined(vm);
375 }
376 
SetBlockStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)377 ArkUINativeModuleValue SliderBridge::SetBlockStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
378 {
379     EcmaVM* vm = runtimeCallInfo->GetVM();
380     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
381     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
382     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
383     auto* frameNode = reinterpret_cast<FrameNode*>(nativeNode);
384     Framework::JsiCallbackInfo info = Framework::JsiCallbackInfo(runtimeCallInfo);
385     if (!info[1]->IsObject()) {
386         SliderBridge::ResetBlockStyle(runtimeCallInfo);
387         return panda::JSValueRef::Undefined(vm);
388     }
389     auto jsObj = Framework::JSRef<Framework::JSObject>::Cast(info[1]);
390     auto getType = jsObj->GetProperty("type");
391     if (getType->IsNull() || !getType->IsNumber()) {
392         SliderBridge::ResetBlockStyle(runtimeCallInfo);
393         return panda::JSValueRef::Undefined(vm);
394     }
395     auto type = static_cast<SliderModel::BlockStyleType>(getType->ToNumber<int32_t>());
396     if (type == SliderModel::BlockStyleType::IMAGE) {
397         std::string src;
398         auto image = jsObj->GetProperty("image");
399         if (!Framework::JSShapeAbstract::ParseJsMedia(image, src)) {
400             SliderBridge::ResetBlockStyle(runtimeCallInfo);
401             return panda::JSValueRef::Undefined(vm);
402         }
403         std::string bundleName;
404         std::string moduleName;
405         Framework::JSViewAbstract::GetJsMediaBundleInfo(image, bundleName, moduleName);
406         SliderModelNG::SetBlockImage(frameNode, src, bundleName, moduleName);
407     } else if (type == SliderModel::BlockStyleType::SHAPE) {
408         auto shape = jsObj->GetProperty("shape");
409         if (!shape->IsObject()) {
410             SliderBridge::ResetBlockStyle(runtimeCallInfo);
411             return panda::JSValueRef::Undefined(vm);
412         }
413         Framework::JSShapeAbstract* shapeAbstract =
414             Framework::JSRef<Framework::JSObject>::Cast(shape)->Unwrap<Framework::JSShapeAbstract>();
415         if (shapeAbstract == nullptr) {
416             SliderBridge::ResetBlockStyle(runtimeCallInfo);
417             return panda::JSValueRef::Undefined(vm);
418         }
419         SliderModelNG::SetBlockShape(frameNode, shapeAbstract->GetBasicShape());
420     }
421     SliderModelNG::SetBlockType(frameNode, type);
422     return panda::JSValueRef::Undefined(vm);
423 }
424 
ResetBlockStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)425 ArkUINativeModuleValue SliderBridge::ResetBlockStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
426 {
427     EcmaVM* vm = runtimeCallInfo->GetVM();
428     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
429     Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
430     void* nativeNode = firstArg->ToNativePointer(vm)->Value();
431     auto* frameNode = reinterpret_cast<FrameNode*>(nativeNode);
432     SliderModelNG::ResetBlockType(frameNode);
433     SliderModelNG::ResetBlockImage(frameNode);
434     SliderModelNG::ResetBlockShape(frameNode);
435     return panda::JSValueRef::Undefined(vm);
436 }
437 } // namespace OHOS::Ace::NG
438