• 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 #include "swiper_helper.h"
17 
18 #include "base/log/dump_log.h"
19 #include "core/components_ng/pattern/swiper_indicator/indicator_common/swiper_indicator_layout_property.h"
20 
21 namespace OHOS::Ace::NG {
InitSwiperController(const RefPtr<SwiperController> & controller,const WeakPtr<SwiperPattern> & weak)22 void SwiperHelper::InitSwiperController(const RefPtr<SwiperController>& controller, const WeakPtr<SwiperPattern>& weak)
23 {
24     controller->SetSwipeToImpl([weak](int32_t index, bool reverse) {
25         auto swiper = weak.Upgrade();
26         CHECK_NULL_VOID(swiper);
27         swiper->SwipeTo(index);
28     });
29 
30     controller->SetSwipeToWithoutAnimationImpl([weak](int32_t index) {
31         auto swiper = weak.Upgrade();
32         CHECK_NULL_VOID(swiper);
33         swiper->SwipeToWithoutAnimation(index);
34     });
35 
36     controller->SetShowNextImpl([weak]() {
37         auto swiper = weak.Upgrade();
38         CHECK_NULL_VOID(swiper);
39         auto swiperNode = swiper->GetHost();
40         CHECK_NULL_VOID(swiperNode);
41         TAG_LOGI(AceLogTag::ACE_SWIPER, "Swiper ShowNext, id:%{public}d", swiperNode->GetId());
42         swiper->ShowNext();
43     });
44 
45     controller->SetShowPrevImpl([weak]() {
46         auto swiper = weak.Upgrade();
47         CHECK_NULL_VOID(swiper);
48         auto swiperNode = swiper->GetHost();
49         CHECK_NULL_VOID(swiperNode);
50         TAG_LOGI(AceLogTag::ACE_SWIPER, "Swiper ShowPrevious, id:%{public}d", swiperNode->GetId());
51         swiper->ShowPrevious();
52     });
53 
54     controller->SetChangeIndexImpl([weak](int32_t index, bool useAnimation) {
55         auto swiper = weak.Upgrade();
56         CHECK_NULL_VOID(swiper);
57         TAG_LOGI(AceLogTag::ACE_SWIPER, "Swiper ChangeIndex %{public}d, useAnimation:%{public}d", index, useAnimation);
58         swiper->ChangeIndex(index, useAnimation);
59     });
60 
61     SetChangeIndexWithModeImpl(controller, weak);
62 
63     controller->SetFinishImpl([weak]() {
64         auto swiper = weak.Upgrade();
65         CHECK_NULL_VOID(swiper);
66         swiper->FinishAnimation();
67     });
68 
69     controller->SetPreloadItemsImpl([weak](const std::set<int32_t>& indexSet) {
70         auto swiper = weak.Upgrade();
71         CHECK_NULL_VOID(swiper);
72         swiper->PreloadItems(indexSet);
73     });
74 }
75 
SetChangeIndexWithModeImpl(const RefPtr<SwiperController> & controller,const WeakPtr<SwiperPattern> & weak)76 void SwiperHelper::SetChangeIndexWithModeImpl(const RefPtr<SwiperController>& controller,
77     const WeakPtr<SwiperPattern>& weak)
78 {
79     CHECK_NULL_VOID(controller);
80     controller->SetChangeIndexWithModeImpl([weak](int32_t index, SwiperAnimationMode animationMode) {
81         auto swiper = weak.Upgrade();
82         CHECK_NULL_VOID(swiper);
83         TAG_LOGI(AceLogTag::ACE_SWIPER, "Swiper ChangeIndex %{public}d, animationMode:%{public}d",
84             index, animationMode);
85         swiper->ChangeIndex(index, animationMode);
86     });
87 }
88 
SaveDigitIndicatorProperty(const RefPtr<FrameNode> & indicatorNode,SwiperPattern & swiper)89 void SwiperHelper::SaveDigitIndicatorProperty(const RefPtr<FrameNode>& indicatorNode, SwiperPattern& swiper)
90 {
91     CHECK_NULL_VOID(indicatorNode);
92     auto indicatorProps = indicatorNode->GetLayoutProperty<SwiperIndicatorLayoutProperty>();
93     CHECK_NULL_VOID(indicatorProps);
94     auto pipeline = PipelineBase::GetCurrentContext();
95     CHECK_NULL_VOID(pipeline);
96     const auto theme = pipeline->GetTheme<SwiperIndicatorTheme>();
97     const auto digitalParams = swiper.GetSwiperDigitalParameters();
98     CHECK_NULL_VOID(digitalParams);
99     indicatorProps->ResetIndicatorLayoutStyle();
100     if (digitalParams->dimLeft.has_value()) {
101         indicatorProps->UpdateLeft(digitalParams->dimLeft.value());
102     }
103     if (digitalParams->dimTop.has_value()) {
104         indicatorProps->UpdateTop(digitalParams->dimTop.value());
105     }
106     if (digitalParams->dimRight.has_value()) {
107         indicatorProps->UpdateRight(digitalParams->dimRight.value());
108     }
109     if (digitalParams->dimBottom.has_value()) {
110         indicatorProps->UpdateBottom(digitalParams->dimBottom.value());
111     }
112     indicatorProps->UpdateFontColor(
113         digitalParams->fontColor.value_or(theme->GetDigitalIndicatorTextStyle().GetTextColor()));
114     indicatorProps->UpdateSelectedFontColor(
115         digitalParams->selectedFontColor.value_or(theme->GetDigitalIndicatorTextStyle().GetTextColor()));
116     indicatorProps->UpdateFontSize(
117         digitalParams->fontSize.value_or(theme->GetDigitalIndicatorTextStyle().GetFontSize()));
118     indicatorProps->UpdateSelectedFontSize(
119         digitalParams->selectedFontSize.value_or(theme->GetDigitalIndicatorTextStyle().GetFontSize()));
120     indicatorProps->UpdateFontWeight(
121         digitalParams->fontWeight.value_or(theme->GetDigitalIndicatorTextStyle().GetFontWeight()));
122     indicatorProps->UpdateSelectedFontWeight(
123         digitalParams->selectedFontWeight.value_or(theme->GetDigitalIndicatorTextStyle().GetFontWeight()));
124     auto props = swiper.GetLayoutProperty<SwiperLayoutProperty>();
125     CHECK_NULL_VOID(props);
126     props->UpdateLeft(digitalParams->dimLeft.value_or(0.0_vp));
127     props->UpdateTop(digitalParams->dimTop.value_or(0.0_vp));
128     props->UpdateRight(digitalParams->dimRight.value_or(0.0_vp));
129     props->UpdateBottom(digitalParams->dimBottom.value_or(0.0_vp));
130     swiper.SetDigitStartAndEndProperty(indicatorNode);
131 }
132 
SaveDotIndicatorProperty(const RefPtr<FrameNode> & indicatorNode,SwiperPattern & swiper)133 void SwiperHelper::SaveDotIndicatorProperty(const RefPtr<FrameNode>& indicatorNode, SwiperPattern& swiper)
134 {
135     CHECK_NULL_VOID(indicatorNode);
136     auto indicatorProps = indicatorNode->GetLayoutProperty<SwiperIndicatorLayoutProperty>();
137     CHECK_NULL_VOID(indicatorProps);
138     const auto params = swiper.GetSwiperParameters();
139     CHECK_NULL_VOID(params);
140     indicatorProps->ResetIndicatorLayoutStyle();
141     if (params->dimLeft.has_value()) {
142         indicatorProps->UpdateLeft(params->dimLeft.value());
143     }
144     if (params->dimTop.has_value()) {
145         indicatorProps->UpdateTop(params->dimTop.value());
146     }
147     if (params->dimRight.has_value()) {
148         indicatorProps->UpdateRight(params->dimRight.value());
149     }
150     if (params->dimBottom.has_value()) {
151         indicatorProps->UpdateBottom(params->dimBottom.value());
152     }
153     const bool isRtl = swiper.GetNonAutoLayoutDirection() == TextDirection::RTL;
154     if (params->dimStart.has_value()) {
155         auto dimValue = params->dimStart.value();
156         isRtl ? indicatorProps->UpdateRight(dimValue) : indicatorProps->UpdateLeft(dimValue);
157     } else if (params->dimEnd.has_value()) {
158         auto dimValue = params->dimEnd.value();
159         isRtl ? indicatorProps->UpdateLeft(dimValue) : indicatorProps->UpdateRight(dimValue);
160     }
161 
162     swiper.UpdatePaintProperty(indicatorNode);
163 }
164 
165 namespace {
DumpPanDirection(const PanDirection & pan)166 void DumpPanDirection(const PanDirection& pan)
167 {
168     switch (pan.type) {
169         case PanDirection::NONE: {
170             DumpLog::GetInstance().AddDesc("PanDirection:NONE");
171             break;
172         }
173         case PanDirection::LEFT: {
174             DumpLog::GetInstance().AddDesc("PanDirection:LEFT");
175             break;
176         }
177         case PanDirection::RIGHT: {
178             DumpLog::GetInstance().AddDesc("PanDirection:RIGHT");
179             break;
180         }
181         case PanDirection::HORIZONTAL: {
182             DumpLog::GetInstance().AddDesc("PanDirection:HORIZONTAL");
183             break;
184         }
185         case PanDirection::UP: {
186             DumpLog::GetInstance().AddDesc("PanDirection:UP");
187             break;
188         }
189         case PanDirection::DOWN: {
190             DumpLog::GetInstance().AddDesc("PanDirection:DOWN");
191             break;
192         }
193         case PanDirection::VERTICAL: {
194             DumpLog::GetInstance().AddDesc("PanDirection:VERTICAL");
195             break;
196         }
197         case PanDirection::ALL: {
198             DumpLog::GetInstance().AddDesc("PanDirection:ALL");
199             break;
200         }
201         default: {
202             break;
203         }
204     }
205 }
206 
DumpDirection(Axis direction)207 void DumpDirection(Axis direction)
208 {
209     switch (direction) {
210         case Axis::NONE: {
211             DumpLog::GetInstance().AddDesc("Axis:NONE");
212             break;
213         }
214         case Axis::HORIZONTAL: {
215             DumpLog::GetInstance().AddDesc("Axis:HORIZONTAL");
216             break;
217         }
218         case Axis::FREE: {
219             DumpLog::GetInstance().AddDesc("Axis:FREE");
220             break;
221         }
222         case Axis::VERTICAL: {
223             DumpLog::GetInstance().AddDesc("Axis:VERTICAL");
224             break;
225         }
226         default: {
227             break;
228         }
229     }
230 }
231 
DumpIndicatorType(const std::optional<SwiperIndicatorType> & type)232 void DumpIndicatorType(const std::optional<SwiperIndicatorType>& type)
233 {
234     if (type.has_value()) {
235         switch (type.value()) {
236             case SwiperIndicatorType::DOT: {
237                 DumpLog::GetInstance().AddDesc("SwiperIndicatorType:DOT");
238                 break;
239             }
240             case SwiperIndicatorType::DIGIT: {
241                 DumpLog::GetInstance().AddDesc("SwiperIndicatorType:DIGIT");
242                 break;
243             }
244             default: {
245                 break;
246             }
247         }
248     } else {
249         DumpLog::GetInstance().AddDesc("lastSwiperIndicatorType:null");
250     }
251 }
252 
DumpItemPosition(const SwiperLayoutAlgorithm::PositionMap & positions)253 void DumpItemPosition(const SwiperLayoutAlgorithm::PositionMap& positions)
254 {
255     for (const auto& item : positions) {
256         DumpLog::GetInstance().AddDesc(std::string("id:")
257                                            .append(std::to_string(item.first))
258                                            .append(",startPos:")
259                                            .append(std::to_string(item.second.startPos))
260                                            .append(",endPos:" + std::to_string(item.second.endPos)));
261     }
262 }
263 } // namespace
264 
DumpAdvanceInfo(SwiperPattern & swiper)265 void SwiperHelper::DumpAdvanceInfo(SwiperPattern& swiper)
266 {
267     DumpInfoAddPositionDesc(swiper);
268     DumpInfoAddGestureDesc(swiper);
269     DumpIndicatorType(swiper.lastSwiperIndicatorType_);
270     DumpInfoAddAnimationDesc(swiper);
271     if (!swiper.itemPosition_.empty()) {
272         DumpLog::GetInstance().AddDesc("-----------start print itemPosition------------");
273         DumpItemPosition(swiper.itemPosition_);
274         DumpLog::GetInstance().AddDesc("-----------end print itemPosition------------");
275     }
276     if (!swiper.itemPositionInAnimation_.empty()) {
277         DumpLog::GetInstance().AddDesc("-----------start print itemPositionInAnimation------------");
278         DumpItemPosition(swiper.itemPositionInAnimation_);
279         DumpLog::GetInstance().AddDesc("-----------end print itemPositionInAnimation------------");
280     }
281     DumpPanDirection(swiper.panDirection_);
282     DumpDirection(swiper.direction_);
283 }
284 
DumpInfoAddPositionDesc(SwiperPattern & swiper)285 void SwiperHelper::DumpInfoAddPositionDesc(SwiperPattern& swiper)
286 {
287     swiper.crossMatchChild_ ? DumpLog::GetInstance().AddDesc("crossMatchChild:true")
288                             : DumpLog::GetInstance().AddDesc("crossMatchChild:false");
289     swiper.uiCastJumpIndex_.has_value()
290         ? DumpLog::GetInstance().AddDesc("uiCastJumpIndex:" + std::to_string(swiper.uiCastJumpIndex_.value()))
291         : DumpLog::GetInstance().AddDesc("uiCastJumpIndex:null");
292     swiper.jumpIndex_.has_value()
293         ? DumpLog::GetInstance().AddDesc("jumpIndex:" + std::to_string(swiper.jumpIndex_.value()))
294         : DumpLog::GetInstance().AddDesc("jumpIndex:null");
295     swiper.targetIndex_.has_value()
296         ? DumpLog::GetInstance().AddDesc("targetIndex:" + std::to_string(swiper.targetIndex_.value()))
297         : DumpLog::GetInstance().AddDesc("targetIndex:null");
298     swiper.preTargetIndex_.has_value()
299         ? DumpLog::GetInstance().AddDesc("preTargetIndex:" + std::to_string(swiper.preTargetIndex_.value()))
300         : DumpLog::GetInstance().AddDesc("preTargetIndex:null");
301     swiper.pauseTargetIndex_.has_value()
302         ? DumpLog::GetInstance().AddDesc("pauseTargetIndex:" + std::to_string(swiper.pauseTargetIndex_.value()))
303         : DumpLog::GetInstance().AddDesc("pauseTargetIndex:null");
304     DumpLog::GetInstance().AddDesc("currentIndex:" + std::to_string(swiper.currentIndex_));
305     DumpLog::GetInstance().AddDesc("oldIndex:" + std::to_string(swiper.oldIndex_));
306     DumpLog::GetInstance().AddDesc("currentOffset:" + std::to_string(swiper.currentOffset_));
307     DumpLog::GetInstance().AddDesc("fadeOffset:" + std::to_string(swiper.fadeOffset_));
308     DumpLog::GetInstance().AddDesc("touchBottomRate:" + std::to_string(swiper.touchBottomRate_));
309     DumpLog::GetInstance().AddDesc("currentIndexOffset:" + std::to_string(swiper.currentIndexOffset_));
310     DumpLog::GetInstance().AddDesc("gestureSwipeIndex:" + std::to_string(swiper.gestureSwipeIndex_));
311     DumpLog::GetInstance().AddDesc("currentFirstIndex:" + std::to_string(swiper.currentFirstIndex_));
312     DumpLog::GetInstance().AddDesc("startMainPos:" + std::to_string(swiper.startMainPos_));
313     DumpLog::GetInstance().AddDesc("endMainPos:" + std::to_string(swiper.endMainPos_));
314     DumpLog::GetInstance().AddDesc("contentMainSize:" + std::to_string(swiper.contentMainSize_));
315     DumpLog::GetInstance().AddDesc("contentCrossSize:" + std::to_string(swiper.contentCrossSize_));
316 }
317 
DumpInfoAddGestureDesc(SwiperPattern & swiper)318 void SwiperHelper::DumpInfoAddGestureDesc(SwiperPattern& swiper)
319 {
320     swiper.isLastIndicatorFocused_ ? DumpLog::GetInstance().AddDesc("isLastIndicatorFocused:true")
321                                    : DumpLog::GetInstance().AddDesc("isLastIndicatorFocused:false");
322     swiper.moveDirection_ ? DumpLog::GetInstance().AddDesc("moveDirection:true")
323                           : DumpLog::GetInstance().AddDesc("moveDirection:false");
324     swiper.indicatorDoingAnimation_ ? DumpLog::GetInstance().AddDesc("indicatorDoingAnimation:true")
325                                     : DumpLog::GetInstance().AddDesc("indicatorDoingAnimation:false");
326     swiper.hasVisibleChangeRegistered_ ? DumpLog::GetInstance().AddDesc("hasVisibleChangeRegistered:true")
327                                        : DumpLog::GetInstance().AddDesc("hasVisibleChangeRegistered:false");
328     swiper.isVisible_ ? DumpLog::GetInstance().AddDesc("isVisible:true")
329                       : DumpLog::GetInstance().AddDesc("isVisible:false");
330     swiper.isVisibleArea_ ? DumpLog::GetInstance().AddDesc("isVisibleArea:true")
331                           : DumpLog::GetInstance().AddDesc("isVisibleArea:false");
332     swiper.isWindowShow_ ? DumpLog::GetInstance().AddDesc("isWindowShow:true")
333                          : DumpLog::GetInstance().AddDesc("isWindowShow:false");
334     swiper.isCustomSize_ ? DumpLog::GetInstance().AddDesc("IsCustomSize:true")
335                          : DumpLog::GetInstance().AddDesc("IsCustomSize:false");
336     swiper.indicatorIsBoolean_ ? DumpLog::GetInstance().AddDesc("indicatorIsBoolean:true")
337                                : DumpLog::GetInstance().AddDesc("indicatorIsBoolean:false");
338     swiper.isAtHotRegion_ ? DumpLog::GetInstance().AddDesc("isAtHotRegion:true")
339                           : DumpLog::GetInstance().AddDesc("isAtHotRegion:false");
340     swiper.isDragging_ ? DumpLog::GetInstance().AddDesc("isDragging:true")
341                        : DumpLog::GetInstance().AddDesc("isDragging:false");
342     swiper.isTouchDown_ ? DumpLog::GetInstance().AddDesc("isTouchDown:true")
343                         : DumpLog::GetInstance().AddDesc("isTouchDown:false");
344     swiper.isIndicatorLongPress_ ? DumpLog::GetInstance().AddDesc("isIndicatorLongPress:true")
345                                  : DumpLog::GetInstance().AddDesc("isIndicatorLongPress:false");
346     swiper.preLoop_.has_value() ? DumpLog::GetInstance().AddDesc("preLoop:" + std::to_string(swiper.preLoop_.value()))
347                                 : DumpLog::GetInstance().AddDesc("preLoop:null");
348     swiper.indicatorId_.has_value()
349         ? DumpLog::GetInstance().AddDesc("indicatorId:" + std::to_string(swiper.indicatorId_.value()))
350         : DumpLog::GetInstance().AddDesc("indicatorId:null");
351     swiper.leftButtonId_.has_value()
352         ? DumpLog::GetInstance().AddDesc("leftButtonId:" + std::to_string(swiper.leftButtonId_.value()))
353         : DumpLog::GetInstance().AddDesc("leftButtonId:null");
354     swiper.rightButtonId_.has_value()
355         ? DumpLog::GetInstance().AddDesc("rightButtonId:" + std::to_string(swiper.rightButtonId_.value()))
356         : DumpLog::GetInstance().AddDesc("rightButtonId:null");
357 }
358 
DumpInfoAddAnimationDesc(SwiperPattern & swiper)359 void SwiperHelper::DumpInfoAddAnimationDesc(SwiperPattern& swiper)
360 {
361     swiper.isFinishAnimation_ ? DumpLog::GetInstance().AddDesc("isFinishAnimation:true")
362                               : DumpLog::GetInstance().AddDesc("isFinishAnimation:false");
363     swiper.mainSizeIsMeasured_ ? DumpLog::GetInstance().AddDesc("mainSizeIsMeasured:true")
364                                : DumpLog::GetInstance().AddDesc("mainSizeIsMeasured:false");
365     swiper.usePropertyAnimation_ ? DumpLog::GetInstance().AddDesc("usePropertyAnimation:true")
366                                  : DumpLog::GetInstance().AddDesc("usePropertyAnimation:false");
367     swiper.isUserFinish_ ? DumpLog::GetInstance().AddDesc("isUserFinish:true")
368                          : DumpLog::GetInstance().AddDesc("isUserFinish:false");
369     swiper.isVoluntarilyClear_ ? DumpLog::GetInstance().AddDesc("isVoluntarilyClear:true")
370                                : DumpLog::GetInstance().AddDesc("isVoluntarilyClear:false");
371     swiper.stopIndicatorAnimation_ ? DumpLog::GetInstance().AddDesc("stopIndicatorAnimation:true")
372                                    : DumpLog::GetInstance().AddDesc("stopIndicatorAnimation:false");
373     swiper.isTouchPad_ ? DumpLog::GetInstance().AddDesc("isTouchPad:true")
374                        : DumpLog::GetInstance().AddDesc("isTouchPad:false");
375     swiper.surfaceChangedCallbackId_.has_value()
376         ? DumpLog::GetInstance().AddDesc("surfaceChangedCallbackId:"
377         + std::to_string(swiper.surfaceChangedCallbackId_.value()))
378         : DumpLog::GetInstance().AddDesc("surfaceChangedCallbackId:null");
379     swiper.velocity_.has_value()
380         ? DumpLog::GetInstance().AddDesc("velocity:" + std::to_string(swiper.velocity_.value()))
381         : DumpLog::GetInstance().AddDesc("velocity:null");
382     swiper.GetCurveIncludeMotion()
383         ? DumpLog::GetInstance().AddDesc("curve:" + swiper.GetCurveIncludeMotion()->ToString())
384         : DumpLog::GetInstance().AddDesc("curve:null");
385     DumpLog::GetInstance().AddDesc("currentDelta:" + std::to_string(swiper.currentDelta_));
386     DumpLog::GetInstance().AddDesc("propertyAnimationIndex:" + std::to_string(swiper.propertyAnimationIndex_));
387     DumpLog::GetInstance().AddDesc("mainDeltaSum:" + std::to_string(swiper.mainDeltaSum_));
388 }
389 
GetDotIndicatorStyle(const std::shared_ptr<SwiperParameters> & params)390 std::string SwiperHelper::GetDotIndicatorStyle(const std::shared_ptr<SwiperParameters>& params)
391 {
392     CHECK_NULL_RETURN(params, "");
393     auto jsonValue = JsonUtil::Create(true);
394     jsonValue->Put("left", params->dimLeft.value_or(0.0_vp).ToString().c_str());
395     jsonValue->Put("top", params->dimTop.value_or(0.0_vp).ToString().c_str());
396     jsonValue->Put("right", params->dimRight.value_or(0.0_vp).ToString().c_str());
397     jsonValue->Put("bottom", params->dimBottom.value_or(0.0_vp).ToString().c_str());
398     jsonValue->Put("itemWidth", params->itemWidth.value_or(6.0_vp).ToString().c_str());
399     jsonValue->Put("itemHeight", params->itemHeight.value_or(6.0_vp).ToString().c_str());
400     jsonValue->Put("selectedItemWidth", params->selectedItemWidth.value_or(6.0_vp).ToString().c_str());
401     jsonValue->Put("selectedItemHeight", params->selectedItemHeight.value_or(6.0_vp).ToString().c_str());
402     jsonValue->Put(
403         "selectedColor", params->selectedColorVal.value_or(Color::FromString("#ff007dff")).ColorToString().c_str());
404     jsonValue->Put("color", params->colorVal.value_or(Color::FromString("#19182431")).ColorToString().c_str());
405     jsonValue->Put("mask", params->maskValue.value_or(false) ? "true" : "false");
406     jsonValue->Put(
407         "maxDisplayCount", (params->maxDisplayCountVal.has_value()) ? params->maxDisplayCountVal.value() : 0);
408     return jsonValue->ToString();
409 }
410 
GetDigitIndicatorStyle(const std::shared_ptr<SwiperDigitalParameters> & params)411 std::string SwiperHelper::GetDigitIndicatorStyle(const std::shared_ptr<SwiperDigitalParameters>& params)
412 {
413     CHECK_NULL_RETURN(params, "");
414     auto jsonValue = JsonUtil::Create(true);
415     auto pipeline = PipelineBase::GetCurrentContext();
416     CHECK_NULL_RETURN(pipeline, "");
417     auto theme = pipeline->GetTheme<SwiperIndicatorTheme>();
418     CHECK_NULL_RETURN(theme, "");
419     jsonValue->Put("left", params->dimLeft.value_or(0.0_vp).ToString().c_str());
420     jsonValue->Put("top", params->dimTop.value_or(0.0_vp).ToString().c_str());
421     jsonValue->Put("right", params->dimRight.value_or(0.0_vp).ToString().c_str());
422     jsonValue->Put("bottom", params->dimBottom.value_or(0.0_vp).ToString().c_str());
423     jsonValue->Put(
424         "fontSize", params->fontSize.value_or(theme->GetDigitalIndicatorTextStyle().GetFontSize()).ToString().c_str());
425     jsonValue->Put("fontColor",
426         params->fontColor.value_or(theme->GetDigitalIndicatorTextStyle().GetTextColor()).ColorToString().c_str());
427     jsonValue->Put(
428         "fontWeight", V2::ConvertWrapFontWeightToStirng(params->fontWeight.value_or(FontWeight::NORMAL)).c_str());
429     jsonValue->Put("selectedFontSize",
430         params->selectedFontSize.value_or(theme->GetDigitalIndicatorTextStyle().GetFontSize()).ToString().c_str());
431     jsonValue->Put(
432         "selectedFontColor", params->selectedFontColor.value_or(theme->GetDigitalIndicatorTextStyle().GetTextColor())
433                                  .ColorToString()
434                                  .c_str());
435     jsonValue->Put("selectedFontWeight",
436         V2::ConvertWrapFontWeightToStirng(params->selectedFontWeight.value_or(FontWeight::NORMAL)).c_str());
437     return jsonValue->ToString();
438 }
439 } // namespace OHOS::Ace::NG
440