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 "native_styled_string.h"
17 #include "node_extened.h"
18 #include "styled_string.h"
19
20 #include "base/utils/utils.h"
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 constexpr int NUM_0 = 0;
27 constexpr int NUM_1 = 1;
28 constexpr int NUM_2 = 2;
29 constexpr int NUM_3 = 3;
30 constexpr int NUM_4 = 4;
31 constexpr int NUM_5 = 5;
32 constexpr int32_t MAX_DISPLAY_COUNT_MIN = 6;
33 constexpr int32_t MAX_DISPLAY_COUNT_MAX = 9;
34
OH_ArkUI_LayoutConstraint_Create()35 ArkUI_LayoutConstraint* OH_ArkUI_LayoutConstraint_Create()
36 {
37 ArkUI_LayoutConstraint* layoutConstraint = new ArkUI_LayoutConstraint { 0, 0, 0, 0, 0, 0 };
38 return layoutConstraint;
39 }
40
OH_ArkUI_LayoutConstraint_Copy(const ArkUI_LayoutConstraint* constraint)41 ArkUI_LayoutConstraint* OH_ArkUI_LayoutConstraint_Copy(const ArkUI_LayoutConstraint* constraint)
42 {
43 CHECK_NULL_RETURN(constraint, nullptr);
44 ArkUI_LayoutConstraint* layoutConstraint = new ArkUI_LayoutConstraint { 0, 0, 0, 0, 0, 0 };
45 layoutConstraint->minWidth = constraint->minWidth;
46 layoutConstraint->maxWidth = constraint->maxWidth;
47 layoutConstraint->minHeight = constraint->minHeight;
48 layoutConstraint->maxHeight = constraint->maxHeight;
49 layoutConstraint->percentReferWidth = constraint->percentReferWidth;
50 layoutConstraint->percentReferHeight = constraint->percentReferHeight;
51 return layoutConstraint;
52 }
53
OH_ArkUI_LayoutConstraint_Dispose(ArkUI_LayoutConstraint* constraint)54 void* OH_ArkUI_LayoutConstraint_Dispose(ArkUI_LayoutConstraint* constraint)
55 {
56 delete constraint;
57 return nullptr;
58 }
59
OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInMeasure(ArkUI_NodeCustomEvent* event)60 ArkUI_LayoutConstraint* OH_ArkUI_NodeCustomEvent_GetLayoutConstraintInMeasure(ArkUI_NodeCustomEvent* event)
61 {
62 CHECK_NULL_RETURN(event, nullptr);
63 ArkUI_LayoutConstraint* layoutConstraint = new ArkUI_LayoutConstraint;
64 layoutConstraint->minWidth = event->event->data[NUM_0];
65 layoutConstraint->minHeight = event->event->data[NUM_1];
66 layoutConstraint->maxWidth = event->event->data[NUM_2];
67 layoutConstraint->maxHeight = event->event->data[NUM_3];
68 layoutConstraint->percentReferWidth = event->event->data[NUM_4];
69 layoutConstraint->percentReferHeight = event->event->data[NUM_5];
70 return layoutConstraint;
71 }
72
OH_ArkUI_NodeCustomEvent_GetPositionInLayout(ArkUI_NodeCustomEvent* event)73 ArkUI_IntOffset OH_ArkUI_NodeCustomEvent_GetPositionInLayout(ArkUI_NodeCustomEvent* event)
74 {
75 ArkUI_IntOffset intOffset;
76 CHECK_NULL_RETURN(event, intOffset);
77 intOffset.x = event->event->data[NUM_0];
78 intOffset.y = event->event->data[NUM_1];
79 return intOffset;
80 }
81
OH_ArkUI_NodeCustomEvent_GetDrawContextInDraw(ArkUI_NodeCustomEvent* event)82 ArkUI_DrawContext* OH_ArkUI_NodeCustomEvent_GetDrawContextInDraw(ArkUI_NodeCustomEvent* event)
83 {
84 CHECK_NULL_RETURN(event, nullptr);
85 ArkUI_DrawContext* drawContext = new ArkUI_DrawContext();
86 drawContext->width = event->event->data[NUM_2];
87 drawContext->height = event->event->data[NUM_3];
88 drawContext->canvas = reinterpret_cast<void*>(event->event->canvas);
89 return drawContext;
90 }
91
OH_ArkUI_NodeCustomEvent_GetEventTargetId(ArkUI_NodeCustomEvent* event)92 int32_t OH_ArkUI_NodeCustomEvent_GetEventTargetId(ArkUI_NodeCustomEvent* event)
93 {
94 CHECK_NULL_RETURN(event, -1);
95 return event->targetId;
96 }
97
OH_ArkUI_NodeCustomEvent_GetUserData(ArkUI_NodeCustomEvent* event)98 void* OH_ArkUI_NodeCustomEvent_GetUserData(ArkUI_NodeCustomEvent* event)
99 {
100 CHECK_NULL_RETURN(event, nullptr);
101 return event->userData;
102 }
103
OH_ArkUI_NodeCustomEvent_GetNodeHandle(ArkUI_NodeCustomEvent* event)104 ArkUI_NodeHandle OH_ArkUI_NodeCustomEvent_GetNodeHandle(ArkUI_NodeCustomEvent* event)
105 {
106 CHECK_NULL_RETURN(event, nullptr);
107 return event->node;
108 }
109
OH_ArkUI_NodeCustomEvent_GetEventType(ArkUI_NodeCustomEvent* event)110 ArkUI_NodeCustomEventType OH_ArkUI_NodeCustomEvent_GetEventType(ArkUI_NodeCustomEvent* event)
111 {
112 CHECK_NULL_RETURN(event, static_cast<ArkUI_NodeCustomEventType>(-1));
113 return static_cast<ArkUI_NodeCustomEventType>(event->event->kind);
114 }
115
OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo( ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanMeasureInfo* info)116 int32_t OH_ArkUI_NodeCustomEvent_GetCustomSpanMeasureInfo(
117 ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanMeasureInfo* info)
118 {
119 if (!event || !info || !event->event) {
120 return ARKUI_ERROR_CODE_PARAM_INVALID;
121 }
122 info->fontSize = event->event->numberData[0].f32;
123 return ARKUI_ERROR_CODE_NO_ERROR;
124 }
125
OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics( ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanMetrics* metrics)126 int32_t OH_ArkUI_NodeCustomEvent_SetCustomSpanMetrics(
127 ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanMetrics* metrics)
128 {
129 if (!event || !metrics || !event->event) {
130 return ARKUI_ERROR_CODE_PARAM_INVALID;
131 }
132 event->event->numberReturnData[0].f32 = metrics->width;
133 event->event->numberReturnData[1].f32 = metrics->height;
134 return ARKUI_ERROR_CODE_NO_ERROR;
135 }
136
OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo( ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanDrawInfo* info)137 int32_t OH_ArkUI_NodeCustomEvent_GetCustomSpanDrawInfo(
138 ArkUI_NodeCustomEvent* event, ArkUI_CustomSpanDrawInfo* info)
139 {
140 if (!event || !info || !event->event) {
141 return ARKUI_ERROR_CODE_PARAM_INVALID;
142 }
143 info->optionsX = event->event->numberData[0].f32;
144 info->optionsLineTop = event->event->numberData[1].f32;
145 info->optionsLineBottom = event->event->numberData[2].f32;
146 info->optionsBaseLine = event->event->numberData[3].f32;
147 return ARKUI_ERROR_CODE_NO_ERROR;
148 }
149
OH_ArkUI_CustomSpanMeasureInfo_Create(void)150 ArkUI_CustomSpanMeasureInfo* OH_ArkUI_CustomSpanMeasureInfo_Create(void)
151 {
152 ArkUI_CustomSpanMeasureInfo* info = new ArkUI_CustomSpanMeasureInfo { 0 };
153 return info;
154 }
155
OH_ArkUI_CustomSpanMeasureInfo_Dispose(ArkUI_CustomSpanMeasureInfo* info)156 void OH_ArkUI_CustomSpanMeasureInfo_Dispose(ArkUI_CustomSpanMeasureInfo* info)
157 {
158 if (!info) {
159 return;
160 }
161 delete info;
162 info = nullptr;
163 }
164
OH_ArkUI_CustomSpanMeasureInfo_GetFontSize(ArkUI_CustomSpanMeasureInfo* info)165 float OH_ArkUI_CustomSpanMeasureInfo_GetFontSize(ArkUI_CustomSpanMeasureInfo* info)
166 {
167 if (!info) {
168 return 0.0f;
169 }
170 return info->fontSize;
171 }
172
OH_ArkUI_CustomSpanMetrics_Create(void)173 ArkUI_CustomSpanMetrics* OH_ArkUI_CustomSpanMetrics_Create(void)
174 {
175 ArkUI_CustomSpanMetrics* metrics = new ArkUI_CustomSpanMetrics { 0, 0 };
176 return metrics;
177 }
178
OH_ArkUI_CustomSpanMetrics_Dispose(ArkUI_CustomSpanMetrics* metrics)179 void OH_ArkUI_CustomSpanMetrics_Dispose(ArkUI_CustomSpanMetrics* metrics)
180 {
181 if (!metrics) {
182 return;
183 }
184 delete metrics;
185 metrics = nullptr;
186 }
187
OH_ArkUI_CustomSpanMetrics_SetWidth(ArkUI_CustomSpanMetrics* metrics, float width)188 int32_t OH_ArkUI_CustomSpanMetrics_SetWidth(ArkUI_CustomSpanMetrics* metrics, float width)
189 {
190 if (!metrics) {
191 return ARKUI_ERROR_CODE_PARAM_INVALID;
192 }
193 metrics->width = width;
194 return ARKUI_ERROR_CODE_NO_ERROR;
195 }
196
OH_ArkUI_CustomSpanMetrics_SetHeight(ArkUI_CustomSpanMetrics* metrics, float height)197 int32_t OH_ArkUI_CustomSpanMetrics_SetHeight(ArkUI_CustomSpanMetrics* metrics, float height)
198 {
199 if (!metrics) {
200 return ARKUI_ERROR_CODE_PARAM_INVALID;
201 }
202 metrics->height = height;
203 return ARKUI_ERROR_CODE_NO_ERROR;
204 }
205
OH_ArkUI_CustomSpanDrawInfo_Create(void)206 ArkUI_CustomSpanDrawInfo* OH_ArkUI_CustomSpanDrawInfo_Create(void)
207 {
208 ArkUI_CustomSpanDrawInfo* info = new ArkUI_CustomSpanDrawInfo { 0, 0, 0, 0 };
209 return info;
210 }
211
OH_ArkUI_CustomSpanDrawInfo_Dispose(ArkUI_CustomSpanDrawInfo* info)212 void OH_ArkUI_CustomSpanDrawInfo_Dispose(ArkUI_CustomSpanDrawInfo* info)
213 {
214 if (!info) {
215 return;
216 }
217 delete info;
218 info = nullptr;
219 }
220
OH_ArkUI_CustomSpanDrawInfo_GetXOffset(ArkUI_CustomSpanDrawInfo* info)221 float OH_ArkUI_CustomSpanDrawInfo_GetXOffset(ArkUI_CustomSpanDrawInfo* info)
222 {
223 if (!info) {
224 return 0.0f;
225 }
226 return info->optionsX;
227 }
228
OH_ArkUI_CustomSpanDrawInfo_GetLineTop(ArkUI_CustomSpanDrawInfo* info)229 float OH_ArkUI_CustomSpanDrawInfo_GetLineTop(ArkUI_CustomSpanDrawInfo* info)
230 {
231 if (!info) {
232 return 0.0f;
233 }
234 return info->optionsLineTop;
235 }
236
OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(ArkUI_CustomSpanDrawInfo* info)237 float OH_ArkUI_CustomSpanDrawInfo_GetLineBottom(ArkUI_CustomSpanDrawInfo* info)
238 {
239 if (!info) {
240 return 0.0f;
241 }
242 return info->optionsLineBottom;
243 }
244
OH_ArkUI_CustomSpanDrawInfo_GetBaseline(ArkUI_CustomSpanDrawInfo* info)245 float OH_ArkUI_CustomSpanDrawInfo_GetBaseline(ArkUI_CustomSpanDrawInfo* info)
246 {
247 if (!info) {
248 return 0.0f;
249 }
250 return info->optionsBaseLine;
251 }
252
OH_ArkUI_LayoutConstraint_GetMaxWidth(const ArkUI_LayoutConstraint* constraint)253 int32_t OH_ArkUI_LayoutConstraint_GetMaxWidth(const ArkUI_LayoutConstraint* constraint)
254 {
255 CHECK_NULL_RETURN(constraint, -1);
256 return constraint->maxWidth;
257 }
OH_ArkUI_LayoutConstraint_GetMinWidth(const ArkUI_LayoutConstraint* constraint)258 int32_t OH_ArkUI_LayoutConstraint_GetMinWidth(const ArkUI_LayoutConstraint* constraint)
259 {
260 CHECK_NULL_RETURN(constraint, -1);
261 return constraint->minWidth;
262 }
OH_ArkUI_LayoutConstraint_GetMaxHeight(const ArkUI_LayoutConstraint* constraint)263 int32_t OH_ArkUI_LayoutConstraint_GetMaxHeight(const ArkUI_LayoutConstraint* constraint)
264 {
265 CHECK_NULL_RETURN(constraint, -1);
266 return constraint->maxHeight;
267 }
OH_ArkUI_LayoutConstraint_GetMinHeight(const ArkUI_LayoutConstraint* constraint)268 int32_t OH_ArkUI_LayoutConstraint_GetMinHeight(const ArkUI_LayoutConstraint* constraint)
269 {
270 CHECK_NULL_RETURN(constraint, -1);
271 return constraint->minHeight;
272 }
OH_ArkUI_LayoutConstraint_GetPercentReferenceWidth(const ArkUI_LayoutConstraint* constraint)273 int32_t OH_ArkUI_LayoutConstraint_GetPercentReferenceWidth(const ArkUI_LayoutConstraint* constraint)
274 {
275 CHECK_NULL_RETURN(constraint, -1);
276 return constraint->percentReferWidth;
277 }
OH_ArkUI_LayoutConstraint_GetPercentReferenceHeight(const ArkUI_LayoutConstraint* constraint)278 int32_t OH_ArkUI_LayoutConstraint_GetPercentReferenceHeight(const ArkUI_LayoutConstraint* constraint)
279 {
280 CHECK_NULL_RETURN(constraint, -1);
281 return constraint->percentReferHeight;
282 }
283
OH_ArkUI_LayoutConstraint_SetMinWidth(ArkUI_LayoutConstraint* constraint, int32_t value)284 void OH_ArkUI_LayoutConstraint_SetMinWidth(ArkUI_LayoutConstraint* constraint, int32_t value)
285 {
286 CHECK_NULL_VOID(constraint);
287 constraint->minWidth = value;
288 }
OH_ArkUI_LayoutConstraint_SetMaxWidth(ArkUI_LayoutConstraint* constraint, int32_t value)289 void OH_ArkUI_LayoutConstraint_SetMaxWidth(ArkUI_LayoutConstraint* constraint, int32_t value)
290 {
291 CHECK_NULL_VOID(constraint);
292 constraint->maxWidth = value;
293 }
294
OH_ArkUI_LayoutConstraint_SetMaxHeight(ArkUI_LayoutConstraint* constraint, int32_t value)295 void OH_ArkUI_LayoutConstraint_SetMaxHeight(ArkUI_LayoutConstraint* constraint, int32_t value)
296 {
297 CHECK_NULL_VOID(constraint);
298 constraint->maxHeight = value;
299 }
OH_ArkUI_LayoutConstraint_SetMinHeight(ArkUI_LayoutConstraint* constraint, int32_t value)300 void OH_ArkUI_LayoutConstraint_SetMinHeight(ArkUI_LayoutConstraint* constraint, int32_t value)
301 {
302 CHECK_NULL_VOID(constraint);
303 constraint->minHeight = value;
304 }
OH_ArkUI_LayoutConstraint_SetPercentReferenceWidth(ArkUI_LayoutConstraint* constraint, int32_t value)305 void OH_ArkUI_LayoutConstraint_SetPercentReferenceWidth(ArkUI_LayoutConstraint* constraint, int32_t value)
306 {
307 CHECK_NULL_VOID(constraint);
308 constraint->percentReferWidth = value;
309 }
OH_ArkUI_LayoutConstraint_SetPercentReferenceHeight(ArkUI_LayoutConstraint* constraint, int32_t value)310 void OH_ArkUI_LayoutConstraint_SetPercentReferenceHeight(ArkUI_LayoutConstraint* constraint, int32_t value)
311 {
312 CHECK_NULL_VOID(constraint);
313 constraint->percentReferHeight = value;
314 }
315
OH_ArkUI_DrawContext_GetCanvas(ArkUI_DrawContext* context)316 void* OH_ArkUI_DrawContext_GetCanvas(ArkUI_DrawContext* context)
317 {
318 return context ? context->canvas : nullptr;
319 }
OH_ArkUI_DrawContext_GetSize(ArkUI_DrawContext* context)320 ArkUI_IntSize OH_ArkUI_DrawContext_GetSize(ArkUI_DrawContext* context)
321 {
322 ArkUI_IntSize intSize;
323 if (context == nullptr) {
324 return intSize;
325 }
326 intSize.width = context->width;
327 intSize.height = context->height;
328 return intSize;
329 }
330
OH_ArkUI_SwiperIndicator_Create(ArkUI_SwiperIndicatorType indicatorType)331 ArkUI_SwiperIndicator* OH_ArkUI_SwiperIndicator_Create(ArkUI_SwiperIndicatorType indicatorType)
332 {
333 if (indicatorType != ARKUI_SWIPER_INDICATOR_TYPE_DOT) {
334 return nullptr;
335 }
336 ArkUI_SwiperIndicator* indicator = new ArkUI_SwiperIndicator;
337 indicator->type = indicatorType;
338 indicator->dimLeft = ArkUI_OptionalFloat { 0, 0.0f };
339 indicator->dimRight = ArkUI_OptionalFloat { 0, 0.0f };
340 indicator->dimTop = ArkUI_OptionalFloat { 0, 0.0f };
341 indicator->dimBottom = ArkUI_OptionalFloat { 0, 0.0f };
342 if (indicatorType == ARKUI_SWIPER_INDICATOR_TYPE_DOT) {
343 indicator->itemWidth = ArkUI_OptionalFloat { 0, 0.0f };
344 indicator->itemHeight = ArkUI_OptionalFloat { 0, 0.0f };
345 indicator->selectedItemWidth = ArkUI_OptionalFloat { 0, 0.0f };
346 indicator->selectedItemHeight = ArkUI_OptionalFloat { 0, 0.0f };
347 indicator->maskValue = ArkUI_OptionalInt { 0, 0 };
348 indicator->colorValue = ArkUI_OptionalUint { 0, 0xFF000000 };
349 indicator->selectedColorValue = ArkUI_OptionalUint { 0, 0xFF000000 };
350 indicator->maxDisplayCount = ArkUI_OptionalInt { 0, 0 };
351 } else {
352 return nullptr;
353 }
354 return indicator;
355 }
356
OH_ArkUI_SwiperIndicator_Dispose(ArkUI_SwiperIndicator* indicator)357 void OH_ArkUI_SwiperIndicator_Dispose(ArkUI_SwiperIndicator* indicator)
358 {
359 delete indicator;
360 }
361
OH_ArkUI_SwiperIndicator_SetStartPosition(ArkUI_SwiperIndicator* indicator, float value)362 void OH_ArkUI_SwiperIndicator_SetStartPosition(ArkUI_SwiperIndicator* indicator, float value)
363 {
364 CHECK_NULL_VOID(indicator);
365 indicator->dimLeft.isSet = 1;
366 indicator->dimLeft.value = value;
367 }
368
OH_ArkUI_SwiperIndicator_GetStartPosition(ArkUI_SwiperIndicator* indicator)369 float OH_ArkUI_SwiperIndicator_GetStartPosition(ArkUI_SwiperIndicator* indicator)
370 {
371 CHECK_NULL_RETURN(indicator, 0.0f);
372 return indicator->dimLeft.value;
373 }
374
OH_ArkUI_SwiperIndicator_SetTopPosition(ArkUI_SwiperIndicator* indicator, float value)375 void OH_ArkUI_SwiperIndicator_SetTopPosition(ArkUI_SwiperIndicator* indicator, float value)
376 {
377 CHECK_NULL_VOID(indicator);
378 indicator->dimTop.isSet = 1;
379 indicator->dimTop.value = value;
380 }
381
OH_ArkUI_SwiperIndicator_GetTopPosition(ArkUI_SwiperIndicator* indicator)382 float OH_ArkUI_SwiperIndicator_GetTopPosition(ArkUI_SwiperIndicator* indicator)
383 {
384 CHECK_NULL_RETURN(indicator, 0.0f);
385 return indicator->dimTop.value;
386 }
387
OH_ArkUI_SwiperIndicator_SetEndPosition(ArkUI_SwiperIndicator* indicator, float value)388 void OH_ArkUI_SwiperIndicator_SetEndPosition(ArkUI_SwiperIndicator* indicator, float value)
389 {
390 CHECK_NULL_VOID(indicator);
391 indicator->dimRight.isSet = 1;
392 indicator->dimRight.value = value;
393 }
394
OH_ArkUI_SwiperIndicator_GetEndPosition(ArkUI_SwiperIndicator* indicator)395 float OH_ArkUI_SwiperIndicator_GetEndPosition(ArkUI_SwiperIndicator* indicator)
396 {
397 CHECK_NULL_RETURN(indicator, 0.0f);
398 return indicator->dimRight.value;
399 }
400
OH_ArkUI_SwiperIndicator_SetBottomPosition(ArkUI_SwiperIndicator* indicator, float value)401 void OH_ArkUI_SwiperIndicator_SetBottomPosition(ArkUI_SwiperIndicator* indicator, float value)
402 {
403 CHECK_NULL_VOID(indicator);
404 indicator->dimBottom.isSet = 1;
405 indicator->dimBottom.value = value;
406 }
407
OH_ArkUI_SwiperIndicator_GetBottomPosition(ArkUI_SwiperIndicator* indicator)408 float OH_ArkUI_SwiperIndicator_GetBottomPosition(ArkUI_SwiperIndicator* indicator)
409 {
410 CHECK_NULL_RETURN(indicator, 0.0f);
411 return indicator->dimBottom.value;
412 }
413
OH_ArkUI_SwiperIndicator_SetItemWidth(ArkUI_SwiperIndicator* indicator, float value)414 void OH_ArkUI_SwiperIndicator_SetItemWidth(ArkUI_SwiperIndicator* indicator, float value)
415 {
416 CHECK_NULL_VOID(indicator);
417 indicator->itemWidth.isSet = 1;
418 indicator->itemWidth.value = value;
419 }
420
OH_ArkUI_SwiperIndicator_GetItemWidth(ArkUI_SwiperIndicator* indicator)421 float OH_ArkUI_SwiperIndicator_GetItemWidth(ArkUI_SwiperIndicator* indicator)
422 {
423 CHECK_NULL_RETURN(indicator, 0.0f);
424 return indicator->itemWidth.value;
425 }
426
OH_ArkUI_SwiperIndicator_SetItemHeight(ArkUI_SwiperIndicator* indicator, float value)427 void OH_ArkUI_SwiperIndicator_SetItemHeight(ArkUI_SwiperIndicator* indicator, float value)
428 {
429 CHECK_NULL_VOID(indicator);
430 indicator->itemHeight.isSet = 1;
431 indicator->itemHeight.value = value;
432 }
433
OH_ArkUI_SwiperIndicator_GetItemHeight(ArkUI_SwiperIndicator* indicator)434 float OH_ArkUI_SwiperIndicator_GetItemHeight(ArkUI_SwiperIndicator* indicator)
435 {
436 CHECK_NULL_RETURN(indicator, 0.0f);
437 return indicator->itemHeight.value;
438 }
439
OH_ArkUI_SwiperIndicator_SetSelectedItemWidth(ArkUI_SwiperIndicator* indicator, float value)440 void OH_ArkUI_SwiperIndicator_SetSelectedItemWidth(ArkUI_SwiperIndicator* indicator, float value)
441 {
442 CHECK_NULL_VOID(indicator);
443 indicator->selectedItemWidth.isSet = 1;
444 indicator->selectedItemWidth.value = value;
445 }
446
OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(ArkUI_SwiperIndicator* indicator)447 float OH_ArkUI_SwiperIndicator_GetSelectedItemWidth(ArkUI_SwiperIndicator* indicator)
448 {
449 CHECK_NULL_RETURN(indicator, 0.0f);
450 return indicator->selectedItemWidth.value;
451 }
452
OH_ArkUI_SwiperIndicator_SetSelectedItemHeight(ArkUI_SwiperIndicator* indicator, float value)453 void OH_ArkUI_SwiperIndicator_SetSelectedItemHeight(ArkUI_SwiperIndicator* indicator, float value)
454 {
455 CHECK_NULL_VOID(indicator);
456 indicator->selectedItemHeight.isSet = 1;
457 indicator->selectedItemHeight.value = value;
458 }
459
OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(ArkUI_SwiperIndicator* indicator)460 float OH_ArkUI_SwiperIndicator_GetSelectedItemHeight(ArkUI_SwiperIndicator* indicator)
461 {
462 CHECK_NULL_RETURN(indicator, 0.0f);
463 return indicator->selectedItemHeight.value;
464 }
465
OH_ArkUI_SwiperIndicator_SetMask(ArkUI_SwiperIndicator* indicator, int32_t mask)466 void OH_ArkUI_SwiperIndicator_SetMask(ArkUI_SwiperIndicator* indicator, int32_t mask)
467 {
468 CHECK_NULL_VOID(indicator);
469 indicator->maskValue.isSet = 1;
470 indicator->maskValue.value = mask;
471 }
472
OH_ArkUI_SwiperIndicator_GetMask(ArkUI_SwiperIndicator* indicator)473 int32_t OH_ArkUI_SwiperIndicator_GetMask(ArkUI_SwiperIndicator* indicator)
474 {
475 CHECK_NULL_RETURN(indicator, 0);
476 return indicator->maskValue.value;
477 }
478
OH_ArkUI_SwiperIndicator_SetColor(ArkUI_SwiperIndicator* indicator, uint32_t color)479 void OH_ArkUI_SwiperIndicator_SetColor(ArkUI_SwiperIndicator* indicator, uint32_t color)
480 {
481 CHECK_NULL_VOID(indicator);
482 indicator->colorValue.isSet = 1;
483 indicator->colorValue.value = color;
484 }
485
OH_ArkUI_SwiperIndicator_GetColor(ArkUI_SwiperIndicator* indicator)486 uint32_t OH_ArkUI_SwiperIndicator_GetColor(ArkUI_SwiperIndicator* indicator)
487 {
488 CHECK_NULL_RETURN(indicator, 0);
489 return indicator->colorValue.value;
490 }
491
OH_ArkUI_SwiperIndicator_SetSelectedColor(ArkUI_SwiperIndicator* indicator, uint32_t selectedColor)492 void OH_ArkUI_SwiperIndicator_SetSelectedColor(ArkUI_SwiperIndicator* indicator, uint32_t selectedColor)
493 {
494 CHECK_NULL_VOID(indicator);
495 indicator->selectedColorValue.isSet = 1;
496 indicator->selectedColorValue.value = selectedColor;
497 }
498
OH_ArkUI_SwiperIndicator_GetSelectedColor(ArkUI_SwiperIndicator* indicator)499 uint32_t OH_ArkUI_SwiperIndicator_GetSelectedColor(ArkUI_SwiperIndicator* indicator)
500 {
501 CHECK_NULL_RETURN(indicator, 0);
502 return indicator->selectedColorValue.value;
503 }
504
505
OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(ArkUI_SwiperIndicator* indicator, int32_t maxDisplayCount)506 int32_t OH_ArkUI_SwiperIndicator_SetMaxDisplayCount(ArkUI_SwiperIndicator* indicator, int32_t maxDisplayCount)
507 {
508 CHECK_NULL_RETURN(indicator, ARKUI_ERROR_CODE_PARAM_INVALID);
509 if (maxDisplayCount < MAX_DISPLAY_COUNT_MIN || maxDisplayCount > MAX_DISPLAY_COUNT_MAX) {
510 return ARKUI_ERROR_CODE_PARAM_INVALID;
511 }
512 indicator->maxDisplayCount.isSet = 1;
513 indicator->maxDisplayCount.value = maxDisplayCount;
514 return ARKUI_ERROR_CODE_NO_ERROR;
515 }
516
OH_ArkUI_SwiperIndicator_GetMaxDisplayCount(ArkUI_SwiperIndicator* indicator)517 int32_t OH_ArkUI_SwiperIndicator_GetMaxDisplayCount(ArkUI_SwiperIndicator* indicator)
518 {
519 CHECK_NULL_RETURN(indicator, 0);
520 return indicator->maxDisplayCount.value;
521 }
522
OH_ArkUI_StyledString_Create( OH_Drawing_TypographyStyle* typoStyle, OH_Drawing_FontCollection* collection)523 ArkUI_StyledString* OH_ArkUI_StyledString_Create(
524 OH_Drawing_TypographyStyle* typoStyle, OH_Drawing_FontCollection* collection)
525 {
526 ArkUI_StyledString* storage = new ArkUI_StyledString;
527 storage->builder = OH_Drawing_CreateTypographyHandler(typoStyle, collection);
528 OH_Drawing_TypographyStyle* typographyStyle = OH_Drawing_CreateTypographyStyle();
529 storage->paragraphStyle = typographyStyle;
530 return storage;
531 }
532
OH_ArkUI_StyledString_Destroy(ArkUI_StyledString* storage)533 void OH_ArkUI_StyledString_Destroy(ArkUI_StyledString* storage)
534 {
535 OH_Drawing_DestroyTypographyHandler(reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder));
536 for (auto item : storage->items) {
537 if (item->placeholder) {
538 delete reinterpret_cast<OH_Drawing_PlaceholderSpan*>(item->placeholder);
539 item->placeholder = nullptr;
540 }
541 delete item;
542 }
543 while (!storage->styles.empty()) {
544 auto style = reinterpret_cast<OH_Drawing_TextStyle*>(storage->styles.top());
545 OH_Drawing_DestroyTextStyle(style);
546 storage->styles.pop();
547 }
548 storage->styles = std::stack<void*>();
549 storage->items.clear();
550 OH_Drawing_TypographyStyle* paragraphStyle =
551 reinterpret_cast<OH_Drawing_TypographyStyle*>(storage->paragraphStyle);
552 OH_Drawing_DestroyTypographyStyle(paragraphStyle);
553 delete storage;
554 }
555
OH_ArkUI_StyledString_PushTextStyle(ArkUI_StyledString* storage, OH_Drawing_TextStyle* style)556 void OH_ArkUI_StyledString_PushTextStyle(ArkUI_StyledString* storage, OH_Drawing_TextStyle* style)
557 {
558 OH_Drawing_TypographyHandlerPushTextStyle(reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder), style);
559 OH_Drawing_TextStyle* textStyle = OH_Drawing_CreateTextStyle();
560 // copy text style
561 if (style) {
562 OH_Drawing_SetTextStyleColor(textStyle, OH_Drawing_TextStyleGetColor(style));
563 OH_Drawing_SetTextStyleFontSize(textStyle, OH_Drawing_TextStyleGetFontSize(style));
564 OH_Drawing_SetTextStyleFontWeight(textStyle, OH_Drawing_TextStyleGetFontWeight(style));
565 OH_Drawing_SetTextStyleBaseLine(textStyle, OH_Drawing_TextStyleGetBaseline(style));
566 OH_Drawing_SetTextStyleFontHeight(textStyle, OH_Drawing_TextStyleGetFontHeight(style));
567 OH_Drawing_SetTextStyleFontStyle(textStyle, OH_Drawing_TextStyleGetFontStyle(style));
568 }
569 storage->styles.push(textStyle);
570 }
571
OH_ArkUI_StyledString_AddText(ArkUI_StyledString* storage, const char* content)572 void OH_ArkUI_StyledString_AddText(ArkUI_StyledString* storage, const char* content)
573 {
574 OH_Drawing_TypographyHandlerAddText(reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder), content);
575
576 ArkUI_SpanItem* spanItem = new ArkUI_SpanItem;
577 spanItem->content = content;
578 if (storage->styles.empty()) {
579 spanItem->textStyle = nullptr;
580 } else {
581 spanItem->textStyle = storage->styles.top();
582 }
583 storage->items.emplace_back(spanItem);
584 }
585
OH_ArkUI_StyledString_PopTextStyle(ArkUI_StyledString* storage)586 void OH_ArkUI_StyledString_PopTextStyle(ArkUI_StyledString* storage)
587 {
588 OH_Drawing_TypographyHandlerPopTextStyle(reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder));
589 if (storage->styles.empty()) {
590 return;
591 }
592 storage->styles.pop();
593 }
594
OH_ArkUI_StyledString_CreateTypography(ArkUI_StyledString* storage)595 OH_Drawing_Typography* OH_ArkUI_StyledString_CreateTypography(ArkUI_StyledString* storage)
596 {
597 OH_Drawing_Typography* paragraph =
598 OH_Drawing_CreateTypography(reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder));
599 storage->paragraph = paragraph;
600 return reinterpret_cast<OH_Drawing_Typography*>(paragraph);
601 }
602
OH_ArkUI_StyledString_AddPlaceholder(ArkUI_StyledString* storage, OH_Drawing_PlaceholderSpan* placeholder)603 void OH_ArkUI_StyledString_AddPlaceholder(ArkUI_StyledString* storage, OH_Drawing_PlaceholderSpan* placeholder)
604 {
605 OH_Drawing_TypographyHandlerAddPlaceholder(
606 reinterpret_cast<OH_Drawing_TypographyCreate*>(storage->builder), placeholder);
607 ArkUI_SpanItem* spanItem = new ArkUI_SpanItem;
608 if (placeholder) {
609 spanItem->placeholder = new OH_Drawing_PlaceholderSpan {
610 placeholder->width, placeholder->height,
611 placeholder->alignment, placeholder->baseline,
612 placeholder->baselineOffset };
613 } else {
614 spanItem->placeholder = new OH_Drawing_PlaceholderSpan();
615 }
616 storage->items.emplace_back(spanItem);
617 }
618
OH_ArkUI_AccessibilityState_Create()619 ArkUI_AccessibilityState* OH_ArkUI_AccessibilityState_Create()
620 {
621 ArkUI_AccessibilityState* state = new ArkUI_AccessibilityState;
622 state->isDisabled = ArkUI_OptionalInt { 0, 0 };
623 state->isSelected = ArkUI_OptionalInt { 0, 0 };
624 state->checkedType = ArkUI_OptionalInt { 0, 0 };
625 return state;
626 }
627
OH_ArkUI_AccessibilityState_Dispose(ArkUI_AccessibilityState* state)628 void OH_ArkUI_AccessibilityState_Dispose(ArkUI_AccessibilityState* state)
629 {
630 delete state;
631 }
632
OH_ArkUI_AccessibilityState_SetDisabled(ArkUI_AccessibilityState* state, int32_t isDisabled)633 void OH_ArkUI_AccessibilityState_SetDisabled(ArkUI_AccessibilityState* state, int32_t isDisabled)
634 {
635 CHECK_NULL_VOID(state);
636 state->isDisabled.isSet = 1;
637 state->isDisabled.value = isDisabled;
638 }
639
OH_ArkUI_AccessibilityState_IsDisabled(ArkUI_AccessibilityState* state)640 int32_t OH_ArkUI_AccessibilityState_IsDisabled(ArkUI_AccessibilityState* state)
641 {
642 CHECK_NULL_RETURN(state, 0);
643 return state->isDisabled.value;
644 }
645
OH_ArkUI_AccessibilityState_SetSelected(ArkUI_AccessibilityState* state, int32_t isSelected)646 void OH_ArkUI_AccessibilityState_SetSelected(ArkUI_AccessibilityState* state, int32_t isSelected)
647 {
648 CHECK_NULL_VOID(state);
649 state->isSelected.isSet = 1;
650 state->isSelected.value = isSelected;
651 }
652
OH_ArkUI_AccessibilityState_IsSelected(ArkUI_AccessibilityState* state)653 int32_t OH_ArkUI_AccessibilityState_IsSelected(ArkUI_AccessibilityState* state)
654 {
655 CHECK_NULL_RETURN(state, 0);
656 return state->isSelected.value;
657 }
658
OH_ArkUI_AccessibilityState_SetCheckedState(ArkUI_AccessibilityState* state, int32_t checkedState)659 void OH_ArkUI_AccessibilityState_SetCheckedState(ArkUI_AccessibilityState* state, int32_t checkedState)
660 {
661 CHECK_NULL_VOID(state);
662 state->checkedType.isSet = 1;
663 state->checkedType.value = checkedState;
664 }
665
OH_ArkUI_AccessibilityState_GetCheckedState(ArkUI_AccessibilityState* state)666 int32_t OH_ArkUI_AccessibilityState_GetCheckedState(ArkUI_AccessibilityState* state)
667 {
668 CHECK_NULL_RETURN(state, 0);
669 return state->checkedType.value;
670 }
671
OH_ArkUI_AccessibilityValue_Create()672 ArkUI_AccessibilityValue* OH_ArkUI_AccessibilityValue_Create()
673 {
674 ArkUI_AccessibilityValue* value = new ArkUI_AccessibilityValue;
675 value->min = ArkUI_OptionalInt { 0, -1 };
676 value->max = ArkUI_OptionalInt { 0, -1 };
677 value->current = ArkUI_OptionalInt { 0, -1 };
678 value->text = ArkUI_OptionalCharPtr { 0, "" };
679 return value;
680 }
681
OH_ArkUI_AccessibilityValue_Dispose(ArkUI_AccessibilityValue* value)682 void OH_ArkUI_AccessibilityValue_Dispose(ArkUI_AccessibilityValue* value)
683 {
684 delete value;
685 }
686
OH_ArkUI_AccessibilityValue_SetMin(ArkUI_AccessibilityValue* value, int32_t min)687 void OH_ArkUI_AccessibilityValue_SetMin(ArkUI_AccessibilityValue* value, int32_t min)
688 {
689 CHECK_NULL_VOID(value);
690 value->min.isSet = 1;
691 value->min.value = min;
692 }
693
OH_ArkUI_AccessibilityValue_GetMin(ArkUI_AccessibilityValue* value)694 int32_t OH_ArkUI_AccessibilityValue_GetMin(ArkUI_AccessibilityValue* value)
695 {
696 CHECK_NULL_RETURN(value, -1);
697 return value->min.value;
698 }
699
OH_ArkUI_AccessibilityValue_SetMax(ArkUI_AccessibilityValue* value, int32_t max)700 void OH_ArkUI_AccessibilityValue_SetMax(ArkUI_AccessibilityValue* value, int32_t max)
701 {
702 CHECK_NULL_VOID(value);
703 value->max.isSet = 1;
704 value->max.value = max;
705 }
706
OH_ArkUI_AccessibilityValue_GetMax(ArkUI_AccessibilityValue* value)707 int32_t OH_ArkUI_AccessibilityValue_GetMax(ArkUI_AccessibilityValue* value)
708 {
709 CHECK_NULL_RETURN(value, -1);
710 return value->max.value;
711 }
712
OH_ArkUI_AccessibilityValue_SetCurrent(ArkUI_AccessibilityValue* value, int32_t current)713 void OH_ArkUI_AccessibilityValue_SetCurrent(ArkUI_AccessibilityValue* value, int32_t current)
714 {
715 CHECK_NULL_VOID(value);
716 value->current.isSet = 1;
717 value->current.value = current;
718 }
719
OH_ArkUI_AccessibilityValue_GetCurrent(ArkUI_AccessibilityValue* value)720 int32_t OH_ArkUI_AccessibilityValue_GetCurrent(ArkUI_AccessibilityValue* value)
721 {
722 CHECK_NULL_RETURN(value, -1);
723 return value->current.value;
724 }
725
OH_ArkUI_AccessibilityValue_SetText(ArkUI_AccessibilityValue* value, const char* text)726 void OH_ArkUI_AccessibilityValue_SetText(ArkUI_AccessibilityValue* value, const char* text)
727 {
728 CHECK_NULL_VOID(value);
729 value->text.isSet = 1;
730 value->text.value = text;
731 }
732
OH_ArkUI_AccessibilityValue_GetText(ArkUI_AccessibilityValue* value)733 const char* OH_ArkUI_AccessibilityValue_GetText(ArkUI_AccessibilityValue* value)
734 {
735 CHECK_NULL_RETURN(value, "");
736 return value->text.value;
737 }
738 #ifdef __cplusplus
739 };
740 #endif
741