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