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 "node/node_model.h"
17
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
OH_ArkUI_GuidelineOption_Create(int32_t size)23 ArkUI_GuidelineOption* OH_ArkUI_GuidelineOption_Create(int32_t size)
24 {
25 ArkUI_GuidelineOption* guidelinePtr = new ArkUI_GuidelineOption;
26 guidelinePtr->styles.resize(size);
27 return guidelinePtr;
28 }
29
OH_ArkUI_GuidelineOption_Dispose(ArkUI_GuidelineOption* guideline)30 void OH_ArkUI_GuidelineOption_Dispose(ArkUI_GuidelineOption* guideline)
31 {
32 if (guideline == nullptr) {
33 return;
34 }
35 delete guideline;
36 }
37
OH_ArkUI_GuidelineOption_SetId(ArkUI_GuidelineOption* guideline, const char* value, int32_t index)38 void OH_ArkUI_GuidelineOption_SetId(ArkUI_GuidelineOption* guideline, const char* value, int32_t index)
39 {
40 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
41 return;
42 }
43 guideline->styles[index].id = value;
44 }
45
OH_ArkUI_GuidelineOption_SetDirection(ArkUI_GuidelineOption* guideline, ArkUI_Axis value, int32_t index)46 void OH_ArkUI_GuidelineOption_SetDirection(ArkUI_GuidelineOption* guideline, ArkUI_Axis value, int32_t index)
47 {
48 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
49 return;
50 }
51 guideline->styles[index].direction = value;
52 }
53
OH_ArkUI_GuidelineOption_SetPositionStart(ArkUI_GuidelineOption* guideline, float value, int32_t index)54 void OH_ArkUI_GuidelineOption_SetPositionStart(ArkUI_GuidelineOption* guideline, float value, int32_t index)
55 {
56 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
57 return;
58 }
59 guideline->styles[index].hasStart = true;
60 guideline->styles[index].start = value;
61 }
62
OH_ArkUI_GuidelineOption_SetPositionEnd(ArkUI_GuidelineOption* guideline, float value, int32_t index)63 void OH_ArkUI_GuidelineOption_SetPositionEnd(ArkUI_GuidelineOption* guideline, float value, int32_t index)
64 {
65 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
66 return;
67 }
68 guideline->styles[index].hasEnd = true;
69 guideline->styles[index].end = value;
70 }
71
OH_ArkUI_GuidelineOption_GetId(ArkUI_GuidelineOption* guideline, int32_t index)72 const char* OH_ArkUI_GuidelineOption_GetId(ArkUI_GuidelineOption* guideline, int32_t index)
73 {
74 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
75 return nullptr;
76 }
77 return guideline->styles[index].id.c_str();
78 }
79
OH_ArkUI_GuidelineOption_GetDirection(ArkUI_GuidelineOption* guideline, int32_t index)80 ArkUI_Axis OH_ArkUI_GuidelineOption_GetDirection(ArkUI_GuidelineOption* guideline, int32_t index)
81 {
82 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
83 return static_cast<ArkUI_Axis>(-1);
84 }
85 return guideline->styles[index].direction;
86 }
87
OH_ArkUI_GuidelineOption_GetPositionStart(ArkUI_GuidelineOption* guideline, int32_t index)88 float OH_ArkUI_GuidelineOption_GetPositionStart(ArkUI_GuidelineOption* guideline, int32_t index)
89 {
90 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
91 return 0.0f;
92 }
93 return guideline->styles[index].start;
94 }
95
OH_ArkUI_GuidelineOption_GetPositionEnd(ArkUI_GuidelineOption* guideline, int32_t index)96 float OH_ArkUI_GuidelineOption_GetPositionEnd(ArkUI_GuidelineOption* guideline, int32_t index)
97 {
98 if (guideline == nullptr || index < 0 || index >= static_cast<int32_t>(guideline->styles.size())) {
99 return 0.0f;
100 }
101 return guideline->styles[index].end;
102 }
103
OH_ArkUI_BarrierOption_Create(int32_t size)104 ArkUI_BarrierOption* OH_ArkUI_BarrierOption_Create(int32_t size)
105 {
106 ArkUI_BarrierOption* barrierStylePtr = new ArkUI_BarrierOption;
107 if (size < 0) {
108 return barrierStylePtr;
109 }
110 barrierStylePtr->styles.resize(static_cast<uint32_t>(size));
111 return barrierStylePtr;
112 }
113
OH_ArkUI_BarrierOption_Dispose(ArkUI_BarrierOption* barrierStyle)114 void OH_ArkUI_BarrierOption_Dispose(ArkUI_BarrierOption* barrierStyle)
115 {
116 if (barrierStyle == nullptr) {
117 return;
118 }
119 delete barrierStyle;
120 }
121
OH_ArkUI_BarrierOption_SetId(ArkUI_BarrierOption* barrierStyle, const char* value, int32_t index)122 void OH_ArkUI_BarrierOption_SetId(ArkUI_BarrierOption* barrierStyle, const char* value, int32_t index)
123 {
124 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
125 return;
126 }
127 barrierStyle->styles[index].id = value;
128 }
129
OH_ArkUI_BarrierOption_SetDirection(ArkUI_BarrierOption* barrierStyle, ArkUI_BarrierDirection value, int32_t index)130 void OH_ArkUI_BarrierOption_SetDirection(ArkUI_BarrierOption* barrierStyle, ArkUI_BarrierDirection value, int32_t index)
131 {
132 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
133 return;
134 }
135 barrierStyle->styles[index].direction = value;
136 }
137
OH_ArkUI_BarrierOption_SetReferencedId(ArkUI_BarrierOption* barrierStyle, const char* value, int32_t index)138 void OH_ArkUI_BarrierOption_SetReferencedId(ArkUI_BarrierOption* barrierStyle, const char* value, int32_t index)
139 {
140 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
141 return;
142 }
143 barrierStyle->styles[index].referencedId.push_back(value);
144 }
145
OH_ArkUI_BarrierOption_GetId(ArkUI_BarrierOption* barrierStyle, int32_t index)146 const char* OH_ArkUI_BarrierOption_GetId(ArkUI_BarrierOption* barrierStyle, int32_t index)
147 {
148 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
149 return nullptr;
150 }
151 return barrierStyle->styles[index].id.c_str();
152 }
153
OH_ArkUI_BarrierOption_GetDirection(ArkUI_BarrierOption* barrierStyle, int32_t index)154 ArkUI_BarrierDirection OH_ArkUI_BarrierOption_GetDirection(ArkUI_BarrierOption* barrierStyle, int32_t index)
155 {
156 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
157 return ARKUI_BARRIER_DIRECTION_TOP; // or any default value
158 }
159 return barrierStyle->styles[index].direction;
160 }
161
OH_ArkUI_BarrierOption_GetReferencedId( ArkUI_BarrierOption* barrierStyle, int32_t index, int32_t referencedIndex)162 const char* OH_ArkUI_BarrierOption_GetReferencedId(
163 ArkUI_BarrierOption* barrierStyle, int32_t index, int32_t referencedIndex)
164 {
165 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size()) ||
166 referencedIndex < 0 ||
167 referencedIndex >= static_cast<int32_t>(barrierStyle->styles[index].referencedId.size())) {
168 return nullptr;
169 }
170 return barrierStyle->styles[index].referencedId[referencedIndex].c_str();
171 }
172
OH_ArkUI_BarrierOption_GetReferencedIdSize(ArkUI_BarrierOption* barrierStyle, int32_t index)173 int32_t OH_ArkUI_BarrierOption_GetReferencedIdSize(ArkUI_BarrierOption* barrierStyle, int32_t index)
174 {
175 if (barrierStyle == nullptr || index < 0 || index >= static_cast<int32_t>(barrierStyle->styles.size())) {
176 return 0;
177 }
178 return static_cast<int32_t>(barrierStyle->styles[index].referencedId.size());
179 }
180
OH_ArkUI_AlignmentRuleOption_Create()181 ArkUI_AlignmentRuleOption* OH_ArkUI_AlignmentRuleOption_Create()
182 {
183 ArkUI_AlignmentRuleOption* option = new ArkUI_AlignmentRuleOption { .biasHorizontal = 0.5, .biasVertical = 0.5 };
184 return option;
185 }
186
OH_ArkUI_AlignmentRuleOption_Dispose(ArkUI_AlignmentRuleOption* option)187 void OH_ArkUI_AlignmentRuleOption_Dispose(ArkUI_AlignmentRuleOption* option)
188 {
189 if (option == nullptr) {
190 return;
191 }
192 delete option;
193 }
OH_ArkUI_AlignmentRuleOption_SetStart( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)194 void OH_ArkUI_AlignmentRuleOption_SetStart(
195 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)
196 {
197 if (option == nullptr) {
198 return;
199 }
200 if (!id) {
201 option->left.hasValue = false;
202 return;
203 }
204 option->left.hasValue = true;
205 option->left.anchor = id;
206 option->left.align = alignment;
207 }
208
OH_ArkUI_AlignmentRuleOption_SetEnd( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)209 void OH_ArkUI_AlignmentRuleOption_SetEnd(
210 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)
211 {
212 if (option == nullptr) {
213 return;
214 }
215 if (!id) {
216 option->right.hasValue = false;
217 return;
218 }
219 option->right.hasValue = true;
220 option->right.anchor = id;
221 option->right.align = alignment;
222 }
223
OH_ArkUI_AlignmentRuleOption_SetCenterHorizontal( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)224 void OH_ArkUI_AlignmentRuleOption_SetCenterHorizontal(
225 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_HorizontalAlignment alignment)
226 {
227 if (option == nullptr) {
228 return;
229 }
230 if (!id) {
231 option->middle.hasValue = false;
232 return;
233 }
234 option->middle.hasValue = true;
235 option->middle.anchor = id;
236 option->middle.align = alignment;
237 }
238
OH_ArkUI_AlignmentRuleOption_SetTop( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)239 void OH_ArkUI_AlignmentRuleOption_SetTop(
240 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)
241 {
242 if (option == nullptr) {
243 return;
244 }
245 if (!id) {
246 option->top.hasValue = false;
247 return;
248 }
249 option->top.hasValue = true;
250 option->top.anchor = id;
251 option->top.align = alignment;
252 }
253
OH_ArkUI_AlignmentRuleOption_SetBottom( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)254 void OH_ArkUI_AlignmentRuleOption_SetBottom(
255 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)
256 {
257 if (option == nullptr) {
258 return;
259 }
260 if (!id) {
261 option->bottom.hasValue = false;
262 return;
263 }
264 option->bottom.hasValue = true;
265 option->bottom.anchor = id;
266 option->bottom.align = alignment;
267 }
268
OH_ArkUI_AlignmentRuleOption_SetCenterVertical( ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)269 void OH_ArkUI_AlignmentRuleOption_SetCenterVertical(
270 ArkUI_AlignmentRuleOption* option, const char* id, ArkUI_VerticalAlignment alignment)
271 {
272 if (option == nullptr) {
273 return;
274 }
275 if (!id) {
276 option->center.hasValue = false;
277 return;
278 }
279 option->center.hasValue = true;
280 option->center.anchor = id;
281 option->center.align = alignment;
282 }
283
OH_ArkUI_AlignmentRuleOption_SetBiasHorizontal(ArkUI_AlignmentRuleOption* option, float horizontal)284 void OH_ArkUI_AlignmentRuleOption_SetBiasHorizontal(ArkUI_AlignmentRuleOption* option, float horizontal)
285 {
286 if (option == nullptr) {
287 return;
288 }
289 option->biasHorizontal = horizontal;
290 }
291
OH_ArkUI_AlignmentRuleOption_SetBiasVertical(ArkUI_AlignmentRuleOption* option, float vertical)292 void OH_ArkUI_AlignmentRuleOption_SetBiasVertical(ArkUI_AlignmentRuleOption* option, float vertical)
293 {
294 if (option == nullptr) {
295 return;
296 }
297 option->biasVertical = vertical;
298 }
299
OH_ArkUI_AlignmentRuleOption_GetStartId(ArkUI_AlignmentRuleOption* option)300 const char* OH_ArkUI_AlignmentRuleOption_GetStartId(ArkUI_AlignmentRuleOption* option)
301 {
302 if (option == nullptr || !option->left.hasValue) {
303 return nullptr;
304 }
305 return option->left.anchor.c_str();
306 }
307
OH_ArkUI_AlignmentRuleOption_GetStartAlignment(ArkUI_AlignmentRuleOption* option)308 ArkUI_HorizontalAlignment OH_ArkUI_AlignmentRuleOption_GetStartAlignment(ArkUI_AlignmentRuleOption* option)
309 {
310 if (option == nullptr || !option->left.hasValue) {
311 return static_cast<ArkUI_HorizontalAlignment>(-1);
312 }
313 return option->left.align;
314 }
315
OH_ArkUI_AlignmentRuleOption_GetEndId(ArkUI_AlignmentRuleOption* option)316 const char* OH_ArkUI_AlignmentRuleOption_GetEndId(ArkUI_AlignmentRuleOption* option)
317 {
318 if (option == nullptr || !option->right.hasValue) {
319 return nullptr;
320 }
321 return option->right.anchor.c_str();
322 }
323
OH_ArkUI_AlignmentRuleOption_GetEndAlignment(ArkUI_AlignmentRuleOption* option)324 ArkUI_HorizontalAlignment OH_ArkUI_AlignmentRuleOption_GetEndAlignment(ArkUI_AlignmentRuleOption* option)
325 {
326 if (option == nullptr || !option->right.hasValue) {
327 return static_cast<ArkUI_HorizontalAlignment>(-1);
328 }
329 return option->right.align;
330 }
331
OH_ArkUI_AlignmentRuleOption_GetCenterIdHorizontal(ArkUI_AlignmentRuleOption* option)332 const char* OH_ArkUI_AlignmentRuleOption_GetCenterIdHorizontal(ArkUI_AlignmentRuleOption* option)
333 {
334 if (option == nullptr || !option->middle.hasValue) {
335 return nullptr;
336 }
337 return option->middle.anchor.c_str();
338 }
339
OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentHorizontal(ArkUI_AlignmentRuleOption* option)340 ArkUI_HorizontalAlignment OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentHorizontal(ArkUI_AlignmentRuleOption* option)
341 {
342 if (option == nullptr || !option->middle.hasValue) {
343 return static_cast<ArkUI_HorizontalAlignment>(-1);
344 }
345 return option->middle.align;
346 }
347
OH_ArkUI_AlignmentRuleOption_GetTopId(ArkUI_AlignmentRuleOption* option)348 const char* OH_ArkUI_AlignmentRuleOption_GetTopId(ArkUI_AlignmentRuleOption* option)
349 {
350 if (option == nullptr || !option->top.hasValue) {
351 return nullptr;
352 }
353 return option->top.anchor.c_str();
354 }
355
OH_ArkUI_AlignmentRuleOption_GetTopAlignment(ArkUI_AlignmentRuleOption* option)356 ArkUI_VerticalAlignment OH_ArkUI_AlignmentRuleOption_GetTopAlignment(ArkUI_AlignmentRuleOption* option)
357 {
358 if (option == nullptr || !option->top.hasValue) {
359 return static_cast<ArkUI_VerticalAlignment>(-1);
360 }
361 return option->top.align;
362 }
OH_ArkUI_AlignmentRuleOption_GetBottomId(ArkUI_AlignmentRuleOption* option)363 const char* OH_ArkUI_AlignmentRuleOption_GetBottomId(ArkUI_AlignmentRuleOption* option)
364 {
365 if (option == nullptr || !option->bottom.hasValue) {
366 return nullptr;
367 }
368 return option->bottom.anchor.c_str();
369 }
370
OH_ArkUI_AlignmentRuleOption_GetBottomAlignment(ArkUI_AlignmentRuleOption* option)371 ArkUI_VerticalAlignment OH_ArkUI_AlignmentRuleOption_GetBottomAlignment(ArkUI_AlignmentRuleOption* option)
372 {
373 if (option == nullptr || !option->bottom.hasValue) {
374 return static_cast<ArkUI_VerticalAlignment>(-1);
375 }
376 return option->bottom.align;
377 }
378
OH_ArkUI_AlignmentRuleOption_GetCenterIdVertical(ArkUI_AlignmentRuleOption* option)379 const char* OH_ArkUI_AlignmentRuleOption_GetCenterIdVertical(ArkUI_AlignmentRuleOption* option)
380 {
381 if (option == nullptr || !option->center.hasValue) {
382 return nullptr;
383 }
384 return option->center.anchor.c_str();
385 }
386
OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentVertical(ArkUI_AlignmentRuleOption* option)387 ArkUI_VerticalAlignment OH_ArkUI_AlignmentRuleOption_GetCenterAlignmentVertical(ArkUI_AlignmentRuleOption* option)
388 {
389 if (option == nullptr || !option->center.hasValue) {
390 return static_cast<ArkUI_VerticalAlignment>(-1);
391 }
392 return option->center.align;
393 }
394
OH_ArkUI_AlignmentRuleOption_GetBiasHorizontal(ArkUI_AlignmentRuleOption* option)395 float OH_ArkUI_AlignmentRuleOption_GetBiasHorizontal(ArkUI_AlignmentRuleOption* option)
396 {
397 if (option == nullptr) {
398 return -1.0f;
399 }
400 return option->biasHorizontal;
401 }
402
OH_ArkUI_AlignmentRuleOption_GetBiasVertical(ArkUI_AlignmentRuleOption* option)403 float OH_ArkUI_AlignmentRuleOption_GetBiasVertical(ArkUI_AlignmentRuleOption* option)
404 {
405 if (option == nullptr) {
406 return -1.0f;
407 }
408 return option->biasVertical;
409 }
410 #ifdef __cplusplus
411 };
412 #endif