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