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