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