1 /*
2 * Copyright (c) 2023-2025 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 #include "style_modifier.h"
16
17 #include <cstddef>
18 #include <cstdint>
19 #include <map>
20 #include <unordered_map>
21 #include <regex>
22 #include <string>
23 #include "securec.h"
24 #include "drawable_descriptor.h"
25 #include <cstdlib>
26
27 #include "frame_information.h"
28 #include "native_node.h"
29 #include "native_type.h"
30 #include "node_extened.h"
31 #include "node_model.h"
32 #include "node_transition.h"
33 #include "progress_option.h"
34 #include "styled_string.h"
35 #include "waterflow_section_option.h"
36
37 #include "base/error/error_code.h"
38 #include "base/log/log_wrapper.h"
39 #include "base/utils/string_utils.h"
40 #include "base/utils/utils.h"
41 #include "bridge/common/utils/utils.h"
42 #include "core/components/common/properties/color.h"
43 #include "core/components_ng/base/frame_node.h"
44 #include "core/interfaces/arkoala/arkoala_api.h"
45 #include "core/interfaces/native/node/node_api.h"
46
47 namespace OHOS::Ace::NodeModel {
48 namespace {
49 const std::regex COLOR_WITH_MAGIC("#[0-9A-Fa-f]{8}");
50 const std::regex BRACKETS("\\(.*?\\)");
51 const std::regex FLOAT_MAGIC("^[0-9]+(\\.[0-9]+)?$");
52 const std::regex SIZE_TYPE_MAGIC("([0-9]+)([a-z]+)");
53 constexpr char PARAMS_SEPARATOR_LEVEL1 = ';';
54 constexpr int UNIT_PX = 0;
55 constexpr int UNIT_VP = 1;
56 constexpr int UNIT_FP = 2;
57 constexpr int UNIT_PERCENT = 3;
58 constexpr int NUM_0 = 0;
59 constexpr int NUM_1 = 1;
60 constexpr int NUM_2 = 2;
61 constexpr int NUM_3 = 3;
62 constexpr int NUM_4 = 4;
63 constexpr int NUM_5 = 5;
64 constexpr int NUM_6 = 6;
65 constexpr int NUM_7 = 7;
66 constexpr int NUM_8 = 8;
67 constexpr int NUM_9 = 9;
68 constexpr int NUM_10 = 10;
69 constexpr int NUM_11 = 11;
70 constexpr int NUM_12 = 12;
71 constexpr int NUM_13 = 13;
72 constexpr int NUM_15 = 15;
73 constexpr int NUM_16 = 16;
74 constexpr int NUM_23 = 23;
75 constexpr int NUM_29 = 29;
76 constexpr int NUM_31 = 31;
77 constexpr int NUM_59 = 59;
78 constexpr int NUM_100 = 100;
79 constexpr int NUM_400 = 400;
80 const int ALLOW_SIZE_1(1);
81 const int ALLOW_SIZE_2(2);
82 const int ALLOW_SIZE_3(3);
83 const int ALLOW_SIZE_4(4);
84 const int ALLOW_SIZE_5(5);
85 const int ALLOW_SIZE_7(7);
86 const int ALLOW_SIZE_8(8);
87 const int ALLOW_SIZE_16(16);
88 const int ALLOW_SIZE_10(10);
89
90 constexpr int DEFAULT_SIZE_18 = 18;
91 constexpr int DEFAULT_SIZE_24 = 24;
92 constexpr int DEFAULT_SIZE_50 = 50;
93 constexpr int COLOR_STRATEGY_STYLE = 1;
94 constexpr int COLOR_STYLE = 2;
95 constexpr int DISPLAY_ARROW_FALSE = 0;
96 constexpr int DISPLAY_ARROW_TRUE = 1;
97 constexpr int32_t X_INDEX = 0;
98 constexpr int32_t Y_INDEX = 1;
99 constexpr int32_t Z_INDEX = 2;
100 constexpr int32_t CENTER_X_INDEX = 0;
101 constexpr int32_t CENTER_Y_INDEX = 1;
102 constexpr int32_t CENTER_Z_INDEX = 2;
103 constexpr int32_t CENTER_X_PERCENT_INDEX = 3;
104 constexpr int32_t CENTER_Y_PERCENT_INDEX = 4;
105 constexpr int32_t CENTER_Z_PERCENT_INDEX = 5;
106 constexpr int32_t ROTATE_PERSPECTIVE_INDEX = 4;
107 constexpr int32_t ROTATE_ANGLE_INDEX = 3;
108 constexpr uint32_t ARRAY_SIZE = 3;
109 constexpr int32_t BACKGROUND_IMAGE_WIDTH_INDEX = 0;
110 constexpr int32_t BACKGROUND_IMAGE_HEIGHT_INDEX = 1;
111 constexpr float DEFAULT_OPACITY = 1.0f;
112
113 constexpr int32_t BLUR_STYLE_INDEX = 0;
114 constexpr int32_t COLOR_MODE_INDEX = 1;
115 constexpr int32_t ADAPTIVE_COLOR_INDEX = 2;
116 constexpr int32_t SCALE_INDEX = 3;
117 constexpr int32_t GRAY_SCALE_START = 4;
118 constexpr int32_t GRAY_SCALE_END = 5;
119 constexpr float MAX_GRAYSCALE = 127.0f;
120 constexpr int32_t DECORATION_COLOR_INDEX = 1;
121 constexpr int32_t DECORATION_STYLE_INDEX = 2;
122 constexpr int32_t PROGRESS_TYPE_LINEAR = 1;
123 constexpr int32_t PROGRESS_TYPE_RING = 2;
124 constexpr int32_t PROGRESS_TYPE_SCALE = 3;
125 constexpr int32_t PROGRESS_TYPE_MOON = 7;
126 constexpr int32_t PROGRESS_TYPE_CAPSULE = 9;
127 const std::vector<int32_t> PROGRESS_TYPE_ARRAY = { PROGRESS_TYPE_LINEAR, PROGRESS_TYPE_RING, PROGRESS_TYPE_MOON,
128 PROGRESS_TYPE_SCALE, PROGRESS_TYPE_CAPSULE};
129 constexpr int32_t OBJECT_FIT_FILL = 0;
130 constexpr int32_t OBJECT_FIT_CONTAIN = 1;
131 constexpr int32_t OBJECT_FIT_COVER = 2;
132 constexpr int32_t OBJECT_FIT_AUTO = 3;
133 constexpr int32_t OBJECT_FIT_NONE = 5;
134 constexpr int32_t OBJECT_FIT_SCALE_DOWN = 6;
135 constexpr int32_t OBJECT_FIT_NONE_ALIGN_TOP_START = 7;
136 constexpr int32_t OBJECT_FIT_NONE_ALIGN_TOP = 8;
137 constexpr int32_t OBJECT_FIT_NONE_ALIGN_TOP_END = 9;
138 constexpr int32_t OBJECT_FIT_NONE_ALIGN_START = 10;
139 constexpr int32_t OBJECT_FIT_NONE_ALIGN_CENTER = 11;
140 constexpr int32_t OBJECT_FIT_NONE_ALIGN_END = 12;
141 constexpr int32_t OBJECT_FIT_NONE_ALIGN_BOTTOM_START = 13;
142 constexpr int32_t OBJECT_FIT_NONE_ALIGN_BOTTOM = 14;
143 constexpr int32_t OBJECT_FIT_NONE_ALIGN_BOTTOM_END = 15;
144 const std::vector<int32_t> OBJECT_FIT_ARRAY = { OBJECT_FIT_CONTAIN, OBJECT_FIT_COVER, OBJECT_FIT_AUTO,
145 OBJECT_FIT_FILL, OBJECT_FIT_SCALE_DOWN, OBJECT_FIT_NONE,
146 OBJECT_FIT_NONE_ALIGN_TOP_START, OBJECT_FIT_NONE_ALIGN_TOP, OBJECT_FIT_NONE_ALIGN_TOP_END,
147 OBJECT_FIT_NONE_ALIGN_START, OBJECT_FIT_NONE_ALIGN_CENTER, OBJECT_FIT_NONE_ALIGN_END,
148 OBJECT_FIT_NONE_ALIGN_BOTTOM_START, OBJECT_FIT_NONE_ALIGN_BOTTOM, OBJECT_FIT_NONE_ALIGN_BOTTOM_END };
149 constexpr int32_t IMAGE_SPAN_ALIGNMENT_BASELINE = 4;
150 constexpr int32_t IMAGE_SPAN_ALIGNMENT_BOTTOM = 3;
151 constexpr int32_t IMAGE_SPAN_ALIGNMENT_CENTER = 2;
152 constexpr int32_t IMAGE_SPAN_ALIGNMENT_TOP = 1;
153 const std::vector<int32_t> IMAGE_SPAN_ALIGNMENT_ARRAY = { IMAGE_SPAN_ALIGNMENT_BASELINE, IMAGE_SPAN_ALIGNMENT_BOTTOM,
154 IMAGE_SPAN_ALIGNMENT_CENTER, IMAGE_SPAN_ALIGNMENT_TOP };
155 const std::vector<std::string> CURVE_ARRAY = { "linear", "ease", "ease-in", "ease-out", "ease-in-out",
156 "fast-out-slow-in", "linear-out-slow-in", "fast-out-linear-in", "extreme-deceleration", "sharp", "rhythm", "smooth",
157 "friction" };
158 const std::vector<std::string> FONT_STYLES = { "normal", "italic" };
159 const std::vector<std::string> LENGTH_METRIC_UNIT = { "px", "vp", "fp" };
160 std::unordered_map<int32_t, bool> SPAN_ATTRIBUTES_MAP = {
161 { static_cast<int32_t>(NODE_SPAN_CONTENT), true },
162 { static_cast<int32_t>(NODE_TEXT_DECORATION), true },
163 { static_cast<int32_t>(NODE_FONT_COLOR), true },
164 { static_cast<int32_t>(NODE_FONT_SIZE), true },
165 { static_cast<int32_t>(NODE_FONT_STYLE), true },
166 { static_cast<int32_t>(NODE_FONT_WEIGHT), true },
167 { static_cast<int32_t>(NODE_TEXT_LINE_HEIGHT), true },
168 { static_cast<int32_t>(NODE_TEXT_CASE), true },
169 { static_cast<int32_t>(NODE_TEXT_LETTER_SPACING), true },
170 { static_cast<int32_t>(NODE_FONT_FAMILY), true },
171 { static_cast<int32_t>(NODE_TEXT_TEXT_SHADOW), true },
172 { static_cast<int32_t>(NODE_SPAN_TEXT_BACKGROUND_STYLE), true },
173 { static_cast<int32_t>(NODE_SPAN_BASELINE_OFFSET), true },
174 };
175 constexpr int32_t ANIMATION_DURATION_INDEX = 0;
176 constexpr int32_t ANIMATION_CURVE_INDEX = 1;
177 constexpr int32_t ANIMATION_DELAY_INDEX = 2;
178 constexpr int32_t ANIMATION_INTERATION_INDEX = 3;
179 constexpr int32_t ANIMATION_PLAY_MODE_INDEX = 4;
180 constexpr int32_t ANIMATION_TEMPO_INDEX = 5;
181 constexpr int32_t ANIMATION_PLAY_MODE_REVERSE_VALUE = 2;
182 constexpr int32_t ANIMATION_PLAY_MODE_ALTERNATE_VALUE = 1;
183 constexpr int32_t OPACITY_ANIMATION_BASE = 1;
184 constexpr int32_t MOVE_ANIMATION_BASE = 1;
185 constexpr int32_t ROTATE_ANIMATION_BASE = 5;
186 constexpr int32_t SCALE_ANIMATION_BASE = 3;
187 constexpr int32_t TRANSLATE_ANIMATION_BASE = 3;
188 constexpr int32_t DEFAULT_DURATION = 1000;
189 const std::vector<std::string> ALIGN_RULES_HORIZONTAL_ARRAY = { "start", "center", "end" };
190 const std::vector<std::string> ALIGN_RULES_VERTICAL_ARRAY = { "top", "center", "bottom" };
191 constexpr int32_t TWO = 2;
192 constexpr float ZERO_F = 0.0f;
193 constexpr float HUNDRED = 100.0f;
194 constexpr float SLIDER_STEP_MIN_F = 0.01f;
195 constexpr float HALF = 0.5f;
196 constexpr float DEFAULT_HINT_RADIUS = 16.0f;
197 constexpr float DEFAULT_SCROLL_FADING_EDGE_LENGTH = 32.0f;
198 constexpr int32_t REQUIRED_ONE_PARAM = 1;
199 constexpr int32_t REQUIRED_TWO_PARAM = 2;
200 constexpr int32_t REQUIRED_THREE_PARAM = 3;
201 constexpr int32_t REQUIRED_FOUR_PARAM = 4;
202 constexpr int32_t REQUIRED_FIVE_PARAM = 5;
203 constexpr int32_t REQUIRED_SEVEN_PARAM = 7;
204 constexpr int32_t REQUIRED_TWENTY_PARAM = 20;
205 constexpr int32_t MAX_ATTRIBUTE_ITEM_LEN = 20;
206 std::string g_stringValue;
207 ArkUI_NumberValue g_numberValues[MAX_ATTRIBUTE_ITEM_LEN] = { 0 };
208 ArkUI_AttributeItem g_attributeItem = { g_numberValues, MAX_ATTRIBUTE_ITEM_LEN, nullptr, nullptr };
209
210 constexpr uint32_t DEFAULT_COLOR = 0xFF000000; // Black
211 constexpr uint32_t DEFAULT_FIll_COLOR = 0x00000000;
212 constexpr int32_t DEFAULT_X = 0;
213 constexpr int32_t DEFAULT_Y = 0;
214
215 constexpr int32_t DEFAULT_TRUE = 1;
216 constexpr int32_t DEFAULT_FALSE = 0;
217
218 constexpr int32_t RETURN_SIZE_ONE = 1;
219 constexpr int32_t EDGE_TYPE_INDEX = 0;
220 constexpr int32_t EDGE_OFFSET_X_INDEX = 1;
221 constexpr int32_t EDGE_OFFSET_Y_INDEX = 2;
222 constexpr int32_t SELECTED_YEAR_INDEX = 0;
223 constexpr int32_t SELECTED_MONTH_INDEX = 1;
224 constexpr int32_t SELECTED_DAY_INDEX = 2;
225 constexpr int32_t DATEPICKER_START_TIME = 1970;
226 constexpr int32_t DATEPICKER_END_TIME = 2100;
227 constexpr int32_t CALENDAR_PICKER_FONT_COLOR_INDEX = 0;
228 constexpr int32_t CALENDAR_PICKER_FONT_SIZE_INDEX = 1;
229 constexpr int32_t CALENDAR_PICKER_FONT_WEIGHT_INDEX = 2;
230 constexpr int32_t IMAGE_SIZE_TYPE_CONTAIN_INDEX = 0;
231 constexpr int32_t IMAGE_SIZE_TYPE_COVER_INDEX = 1;
232 constexpr int32_t IMAGE_SIZE_TYPE_AUTO_INDEX = 2;
233 constexpr int32_t ERROR_CODE = -1;
234 constexpr int32_t OUTLINE_LEFT_WIDTH_INDEX = 0;
235 constexpr int32_t OUTLINE_TOP_WIDTH_INDEX = 1;
236 constexpr int32_t OUTLINE_RIGHT_WIDTH_INDEX = 2;
237 constexpr int32_t OUTLINE_BOTTOM_WIDTH_INDEX = 3;
238 constexpr uint32_t DEFAULT_ANIMATION_MODE = 0;
239 constexpr uint32_t CONVERT_CONTENT_TYPE = 5;
240 constexpr uint32_t DEFAULT_PICKER_STYLE_COLOR = 0xFF182431;
241 constexpr uint32_t DEFAULT_PICKER_SELECTED_COLOR = 0xFF007DFF;
242 const std::string EMPTY_STR = "";
243 const std::vector<std::string> ACCESSIBILITY_LEVEL_VECTOR = { "auto", "yes", "no", "no-hide-descendants" };
244 std::map<std::string, int32_t> ACCESSIBILITY_LEVEL_MAP = { { "auto", 0 }, { "yes", 1 }, { "no", 2 },
245 { "no-hide-descendants", 3 } };
246
247 std::unordered_map<uint32_t, std::string> ACCESSIBILITY_ROLE_CONVERT_PROPERTY_MAP = {
248 { static_cast<uint32_t>(ARKUI_NODE_CUSTOM), "Custom" },
249 { static_cast<uint32_t>(ARKUI_NODE_TEXT), "Text" },
250 { static_cast<uint32_t>(ARKUI_NODE_SPAN), "Span" },
251 { static_cast<uint32_t>(ARKUI_NODE_IMAGE_SPAN), "ImageSpan" },
252 { static_cast<uint32_t>(ARKUI_NODE_IMAGE), "Image" },
253 { static_cast<uint32_t>(ARKUI_NODE_TOGGLE), "Toggle" },
254 { static_cast<uint32_t>(ARKUI_NODE_LOADING_PROGRESS), "LoadingProgress" },
255 { static_cast<uint32_t>(ARKUI_NODE_TEXT_INPUT), "TextInput" },
256 { static_cast<uint32_t>(ARKUI_NODE_TEXT_AREA), "TextArea" },
257 { static_cast<uint32_t>(ARKUI_NODE_BUTTON), "Button" },
258 { static_cast<uint32_t>(ARKUI_NODE_PROGRESS), "Progress" },
259 { static_cast<uint32_t>(ARKUI_NODE_CHECKBOX), "Checkbox" },
260 { static_cast<uint32_t>(ARKUI_NODE_XCOMPONENT), "Xcomponent" },
261 { static_cast<uint32_t>(ARKUI_NODE_DATE_PICKER), "DatePicker" },
262 { static_cast<uint32_t>(ARKUI_NODE_TIME_PICKER), "TimePicker" },
263 { static_cast<uint32_t>(ARKUI_NODE_TEXT_PICKER), "TextPicker" },
264 { static_cast<uint32_t>(ARKUI_NODE_CALENDAR_PICKER), "CalendarPicker" },
265 { static_cast<uint32_t>(ARKUI_NODE_SLIDER), "Slider" },
266 { static_cast<uint32_t>(ARKUI_NODE_RADIO), "Radio" },
267 { static_cast<uint32_t>(ARKUI_NODE_STACK), "Stack" },
268 { static_cast<uint32_t>(ARKUI_NODE_CHECKBOX_GROUP), "CheckboxGroup" },
269 { static_cast<uint32_t>(ARKUI_NODE_SWIPER), "Swiper" },
270 { static_cast<uint32_t>(ARKUI_NODE_SCROLL), "Scroll" },
271 { static_cast<uint32_t>(ARKUI_NODE_LIST), "List" },
272 { static_cast<uint32_t>(ARKUI_NODE_LIST_ITEM), "ListItem" },
273 { static_cast<uint32_t>(ARKUI_NODE_LIST_ITEM_GROUP), "ListItemGroup" },
274 { static_cast<uint32_t>(ARKUI_NODE_COLUMN), "Column" },
275 { static_cast<uint32_t>(ARKUI_NODE_ROW), "Row" },
276 { static_cast<uint32_t>(ARKUI_NODE_FLEX), "Flex" },
277 { static_cast<uint32_t>(ARKUI_NODE_REFRESH), "Refresh" },
278 { static_cast<uint32_t>(ARKUI_NODE_WATER_FLOW), "WaterFlow" },
279 { static_cast<uint32_t>(ARKUI_NODE_FLOW_ITEM), "FlowItem" },
280 { static_cast<uint32_t>(ARKUI_NODE_RELATIVE_CONTAINER), "RelativeContainer" },
281 { static_cast<uint32_t>(ARKUI_NODE_GRID), "Grid" },
282 { static_cast<uint32_t>(ARKUI_NODE_GRID_ITEM), "GridItem" },
283 { static_cast<uint32_t>(ARKUI_NODE_CUSTOM_SPAN), "CustomSpan" },
284 };
285
286 std::unordered_map<std::string, uint32_t> ACCESSIBILITY_ROLE_CONVERT_NATIVE_MAP = {
287 { "Custom", static_cast<uint32_t>(ARKUI_NODE_CUSTOM) },
288 { "Text", static_cast<uint32_t>(ARKUI_NODE_TEXT) },
289 { "Span", static_cast<uint32_t>(ARKUI_NODE_SPAN) },
290 { "ImageSpan", static_cast<uint32_t>(ARKUI_NODE_IMAGE_SPAN) },
291 { "Image", static_cast<uint32_t>(ARKUI_NODE_IMAGE) },
292 { "Toggle", static_cast<uint32_t>(ARKUI_NODE_TOGGLE) },
293 { "LoadingProgress", static_cast<uint32_t>(ARKUI_NODE_LOADING_PROGRESS) },
294 { "TextInput", static_cast<uint32_t>(ARKUI_NODE_TEXT_INPUT) },
295 { "TextArea", static_cast<uint32_t>(ARKUI_NODE_TEXT_AREA) },
296 { "Button", static_cast<uint32_t>(ARKUI_NODE_BUTTON) },
297 { "Progress", static_cast<uint32_t>(ARKUI_NODE_PROGRESS) },
298 { "Checkbox", static_cast<uint32_t>(ARKUI_NODE_CHECKBOX) },
299 { "Xcomponent", static_cast<uint32_t>(ARKUI_NODE_XCOMPONENT) },
300 { "DatePicker", static_cast<uint32_t>(ARKUI_NODE_DATE_PICKER) },
301 { "TimePicker", static_cast<uint32_t>(ARKUI_NODE_TIME_PICKER) },
302 { "TextPicker", static_cast<uint32_t>(ARKUI_NODE_TEXT_PICKER) },
303 { "CalendarPicker", static_cast<uint32_t>(ARKUI_NODE_CALENDAR_PICKER) },
304 { "Slider", static_cast<uint32_t>(ARKUI_NODE_SLIDER) },
305 { "Radio", static_cast<uint32_t>(ARKUI_NODE_RADIO) },
306 { "Stack", static_cast<uint32_t>(ARKUI_NODE_STACK) },
307 { "CheckboxGroup", static_cast<uint32_t>(ARKUI_NODE_CHECKBOX_GROUP) },
308 { "Swiper", static_cast<uint32_t>(ARKUI_NODE_SWIPER) },
309 { "Scroll", static_cast<uint32_t>(ARKUI_NODE_SCROLL) },
310 { "List", static_cast<uint32_t>(ARKUI_NODE_LIST) },
311 { "ListItem", static_cast<uint32_t>(ARKUI_NODE_LIST_ITEM) },
312 { "ListItemGroup", static_cast<uint32_t>(ARKUI_NODE_LIST_ITEM_GROUP) },
313 { "Column", static_cast<uint32_t>(ARKUI_NODE_COLUMN) },
314 { "Row", static_cast<uint32_t>(ARKUI_NODE_ROW) },
315 { "Flex", static_cast<uint32_t>(ARKUI_NODE_FLEX) },
316 { "Refresh", static_cast<uint32_t>(ARKUI_NODE_REFRESH) },
317 { "WaterFlow", static_cast<uint32_t>(ARKUI_NODE_WATER_FLOW) },
318 { "FlowItem", static_cast<uint32_t>(ARKUI_NODE_FLOW_ITEM) },
319 { "RelativeContainer", static_cast<uint32_t>(ARKUI_NODE_RELATIVE_CONTAINER) },
320 { "Grid", static_cast<uint32_t>(ARKUI_NODE_GRID) },
321 { "GridItem", static_cast<uint32_t>(ARKUI_NODE_GRID_ITEM) },
322 { "CustomSpan", static_cast<uint32_t>(ARKUI_NODE_CUSTOM_SPAN) },
323 };
324
ResetAttributeItem()325 void ResetAttributeItem()
326 {
327 for (int i = 0; i < MAX_ATTRIBUTE_ITEM_LEN; ++i) {
328 g_numberValues[i].i32 = 0;
329 }
330 g_attributeItem.size = 0;
331 g_attributeItem.string = nullptr;
332 g_attributeItem.object = nullptr;
333 }
StringToColorInt(const char * string,uint32_t defaultValue=0)334 uint32_t StringToColorInt(const char* string, uint32_t defaultValue = 0)
335 {
336 std::smatch matches;
337 std::string colorStr(string);
338 if (std::regex_match(colorStr, matches, COLOR_WITH_MAGIC)) {
339 colorStr.erase(0, 1);
340 constexpr int colorNumFormat = 16;
341 errno = 0;
342 char* end = nullptr;
343 unsigned long int value = strtoul(colorStr.c_str(), &end, colorNumFormat);
344 if (errno == ERANGE) {
345 LOGE("%{public}s is out of range.", colorStr.c_str());
346 }
347 if (value == 0 && end == colorStr.c_str()) {
348 LOGW("input %{public}s can not covert to number, use default color:0x00000000" , colorStr.c_str());
349 }
350
351 return value;
352 }
353 return defaultValue;
354 }
355
GetDefaultUnit(ArkUI_NodeHandle nodePtr,int32_t defaultUnit)356 int32_t GetDefaultUnit(ArkUI_NodeHandle nodePtr, int32_t defaultUnit)
357 {
358 if (nodePtr->lengthMetricUnit == ARKUI_LENGTH_METRIC_UNIT_DEFAULT) {
359 return defaultUnit;
360 }
361 return static_cast<int32_t>(nodePtr->lengthMetricUnit);
362 }
363
StringToInt(const char * string,int defaultValue=0)364 int StringToInt(const char* string, int defaultValue = 0)
365 {
366 char* end;
367 auto value = std::strtol(string, &end, 10);
368 if (end == string || errno == ERANGE || (value < INT_MIN || value > INT_MAX)) {
369 return defaultValue;
370 }
371 return value;
372 }
373
StringToEnumInt(const char * value,const std::vector<std::string> & vec,int defaultValue)374 int StringToEnumInt(const char* value, const std::vector<std::string>& vec, int defaultValue)
375 {
376 std::string input(value);
377 auto it = std::find_if(vec.begin(), vec.end(), [&input](const std::string& str) { return str == input; });
378 if (it != vec.end()) {
379 return std::distance(vec.begin(), it);
380 }
381 return defaultValue;
382 }
383
CurveToString(int curve)384 std::string CurveToString(int curve)
385 {
386 std::string curveStr = "linear";
387 switch (curve) {
388 case ArkUI_AnimationCurve::ARKUI_CURVE_LINEAR:
389 curveStr = "linear";
390 break;
391 case ArkUI_AnimationCurve::ARKUI_CURVE_EASE:
392 curveStr = "ease";
393 break;
394 case ArkUI_AnimationCurve::ARKUI_CURVE_EASE_IN:
395 curveStr = "ease-in";
396 break;
397 case ArkUI_AnimationCurve::ARKUI_CURVE_EASE_OUT:
398 curveStr = "ease-out";
399 break;
400 case ArkUI_AnimationCurve::ARKUI_CURVE_EASE_IN_OUT:
401 curveStr = "ease-in-out";
402 break;
403 case ArkUI_AnimationCurve::ARKUI_CURVE_FAST_OUT_SLOW_IN:
404 curveStr = "fast-out-slow-in";
405 break;
406 case ArkUI_AnimationCurve::ARKUI_CURVE_LINEAR_OUT_SLOW_IN:
407 curveStr = "linear-out-slow-in";
408 break;
409 case ArkUI_AnimationCurve::ARKUI_CURVE_FAST_OUT_LINEAR_IN:
410 curveStr = "fast-out-linear-in";
411 break;
412 case ArkUI_AnimationCurve::ARKUI_CURVE_EXTREME_DECELERATION:
413 curveStr = "extreme-deceleration";
414 break;
415 case ArkUI_AnimationCurve::ARKUI_CURVE_SHARP:
416 curveStr = "sharp";
417 break;
418 case ArkUI_AnimationCurve::ARKUI_CURVE_RHYTHM:
419 curveStr = "rhythm";
420 break;
421 case ArkUI_AnimationCurve::ARKUI_CURVE_SMOOTH:
422 curveStr = "smooth";
423 break;
424 case ArkUI_AnimationCurve::ARKUI_CURVE_FRICTION:
425 curveStr = "friction";
426 break;
427 default:
428 break;
429 }
430 return curveStr;
431 }
432
ShapeToString(int shape)433 std::string ShapeToString(int shape)
434 {
435 std::string shapeStr = "rect";
436 switch (shape) {
437 case NUM_0:
438 shapeStr = "rect";
439 break;
440 case NUM_1:
441 shapeStr = "circle";
442 break;
443 case NUM_2:
444 shapeStr = "ellipse";
445 break;
446 case NUM_3:
447 shapeStr = "path";
448 break;
449 case NUM_4:
450 shapeStr = "progress";
451 break;
452 default:
453 break;
454 }
455 return shapeStr;
456 }
457
ConvertBlurStyle(int32_t originBlurStyle)458 int32_t ConvertBlurStyle(int32_t originBlurStyle)
459 {
460 if (originBlurStyle < static_cast<int32_t>(ARKUI_BLUR_STYLE_NONE)) {
461 return originBlurStyle + 1;
462 } else if (originBlurStyle == static_cast<int32_t>(ARKUI_BLUR_STYLE_NONE)) {
463 return 0;
464 }
465 return originBlurStyle;
466 }
467
UnConvertBlurStyle(int32_t blurStyle)468 int32_t UnConvertBlurStyle(int32_t blurStyle)
469 {
470 if (blurStyle == 0) {
471 return static_cast<int32_t>(ARKUI_BLUR_STYLE_NONE);
472 } else if (blurStyle <= static_cast<int32_t>(ARKUI_BLUR_STYLE_NONE)) {
473 return blurStyle - 1;
474 }
475 return blurStyle;
476 }
477
ConvertAnimationDirection(int32_t animationPlayMode)478 int32_t ConvertAnimationDirection(int32_t animationPlayMode)
479 {
480 if (animationPlayMode == static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_REVERSE)) {
481 return ANIMATION_PLAY_MODE_REVERSE_VALUE;
482 } else if (animationPlayMode == static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_ALTERNATE)) {
483 return ANIMATION_PLAY_MODE_ALTERNATE_VALUE;
484 }
485 return animationPlayMode;
486 }
487
UnConvertAnimationDirection(int32_t animationPlayMode)488 int32_t UnConvertAnimationDirection(int32_t animationPlayMode)
489 {
490 if (animationPlayMode == static_cast<int32_t>(ANIMATION_PLAY_MODE_REVERSE_VALUE)) {
491 return static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_REVERSE);
492 } else if (animationPlayMode == static_cast<int32_t>(ANIMATION_PLAY_MODE_ALTERNATE_VALUE)) {
493 return static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_ALTERNATE);
494 }
495 return animationPlayMode;
496 }
497
ConvertAccessibilityRole(uint32_t nodeTypeInt)498 std::string ConvertAccessibilityRole(uint32_t nodeTypeInt)
499 {
500 std::string nodeTypeString = EMPTY_STR;
501 auto it = ACCESSIBILITY_ROLE_CONVERT_PROPERTY_MAP.find(nodeTypeInt);
502 if (it != ACCESSIBILITY_ROLE_CONVERT_PROPERTY_MAP.end()) {
503 return ACCESSIBILITY_ROLE_CONVERT_PROPERTY_MAP[nodeTypeInt];
504 }
505 return nodeTypeString;
506 }
507
UnConvertAccessibilityRole(const std::string & nodeTypeString)508 int32_t UnConvertAccessibilityRole(const std::string& nodeTypeString)
509 {
510 int32_t nodeTypeInt = ERROR_CODE;
511 auto it = ACCESSIBILITY_ROLE_CONVERT_NATIVE_MAP.find(nodeTypeString);
512 if (it != ACCESSIBILITY_ROLE_CONVERT_NATIVE_MAP.end()) {
513 return static_cast<int32_t>(ACCESSIBILITY_ROLE_CONVERT_NATIVE_MAP[nodeTypeString]);
514 }
515 return nodeTypeInt;
516 }
517
IsLeapYear(uint32_t year)518 bool IsLeapYear(uint32_t year)
519 {
520 return (year % NUM_4 == 0 && year % NUM_100 != 0) || (year % NUM_400 == 0);
521 }
522
IsValidDate(uint32_t year,uint32_t month,uint32_t day)523 bool IsValidDate(uint32_t year, uint32_t month, uint32_t day)
524 {
525 if (year <= 0) {
526 return false;
527 }
528 if (month < NUM_1 || month > NUM_12) {
529 return false;
530 }
531 uint32_t daysInMonth[] = { 31, IsLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
532 if (day < 1 || day > daysInMonth[month - 1]) {
533 return false;
534 }
535 return true;
536 }
537
CheckAttributeItemArray(const ArkUI_AttributeItem * item,int32_t requiredAtLeastSize)538 int32_t CheckAttributeItemArray(const ArkUI_AttributeItem* item, int32_t requiredAtLeastSize)
539 {
540 CHECK_NULL_RETURN(item, -1);
541 if (item->size < requiredAtLeastSize) {
542 return -1;
543 }
544 return item->size;
545 }
546
CheckAttributeIsBool(int32_t value)547 bool CheckAttributeIsBool(int32_t value)
548 {
549 if (value == DEFAULT_FALSE || value == DEFAULT_TRUE) {
550 return true;
551 }
552 return false;
553 }
554
CheckAttributeIsAlignment(int32_t value)555 bool CheckAttributeIsAlignment(int32_t value)
556 {
557 int32_t minEnumValue = static_cast<int32_t>(ArkUI_Alignment::ARKUI_ALIGNMENT_TOP_START);
558 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_Alignment::ARKUI_ALIGNMENT_BOTTOM_END);
559 return value >= minEnumValue && value <= maxEnumValue;
560 }
561
CheckAttributeIsFontWeight(int32_t value)562 bool CheckAttributeIsFontWeight(int32_t value)
563 {
564 int32_t minEnumValue = static_cast<int32_t>(ArkUI_FontWeight::ARKUI_FONT_WEIGHT_W100);
565 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_FontWeight::ARKUI_FONT_WEIGHT_REGULAR);
566 return value >= minEnumValue && value <= maxEnumValue;
567 }
568
CheckAttributeIsFontStyle(int32_t value)569 bool CheckAttributeIsFontStyle(int32_t value)
570 {
571 int32_t minEnumValue = static_cast<int32_t>(ArkUI_FontStyle::ARKUI_FONT_STYLE_NORMAL);
572 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_FontStyle::ARKUI_FONT_STYLE_ITALIC);
573 return value >= minEnumValue && value <= maxEnumValue;
574 }
575
CheckAttributeIsTextHeightAdaptivePolicy(int32_t value)576 bool CheckAttributeIsTextHeightAdaptivePolicy(int32_t value)
577 {
578 int32_t minEnumValue =
579 static_cast<int32_t>(ArkUI_TextHeightAdaptivePolicy::ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_MAX_LINES_FIRST);
580 int32_t maxEnumValue =
581 static_cast<int32_t>(ArkUI_TextHeightAdaptivePolicy::ARKUI_TEXT_HEIGHT_ADAPTIVE_POLICY_LAYOUT_CONSTRAINT_FIRST);
582 return value >= minEnumValue && value <= maxEnumValue;
583 }
584
CheckAttributeIsCopyOptions(int32_t value)585 bool CheckAttributeIsCopyOptions(int32_t value)
586 {
587 int32_t minEnumValue = static_cast<int32_t>(ArkUI_CopyOptions::ARKUI_COPY_OPTIONS_NONE);
588 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_CopyOptions::ARKUI_COPY_OPTIONS_CROSS_DEVICE);
589 return value >= minEnumValue && value <= maxEnumValue;
590 }
591
CheckAttributeIsAnimationCurve(int32_t value)592 bool CheckAttributeIsAnimationCurve(int32_t value)
593 {
594 int32_t minEnumValue = static_cast<int32_t>(ArkUI_AnimationCurve::ARKUI_CURVE_LINEAR);
595 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_AnimationCurve::ARKUI_CURVE_FRICTION);
596 return value >= minEnumValue && value <= maxEnumValue;
597 }
598
CheckAttributeIsScrollNestedMode(int32_t value)599 bool CheckAttributeIsScrollNestedMode(int32_t value)
600 {
601 int32_t minEnumValue = static_cast<int32_t>(ArkUI_ScrollNestedMode::ARKUI_SCROLL_NESTED_MODE_SELF_ONLY);
602 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_ScrollNestedMode::ARKUI_SCROLL_NESTED_MODE_PARALLEL);
603 return value >= minEnumValue && value <= maxEnumValue;
604 }
605
CheckAttributeIsSliderStyle(int32_t value)606 bool CheckAttributeIsSliderStyle(int32_t value)
607 {
608 int32_t minEnumValue = static_cast<int32_t>(ArkUI_SliderStyle::ARKUI_SLIDER_STYLE_OUT_SET);
609 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_SliderStyle::ARKUI_SLIDER_STYLE_NONE);
610 return value >= minEnumValue && value <= maxEnumValue;
611 }
612
CheckAttributeIsSliderBlockStyle(int32_t value)613 bool CheckAttributeIsSliderBlockStyle(int32_t value)
614 {
615 int32_t minEnumValue = static_cast<int32_t>(ArkUI_SliderBlockStyle::ARKUI_SLIDER_BLOCK_STYLE_DEFAULT);
616 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_SliderBlockStyle::ARKUI_SLIDER_BLOCK_STYLE_SHAPE);
617 return value >= minEnumValue && value <= maxEnumValue;
618 }
619
CheckAttributeIsSliderDirection(int32_t value)620 bool CheckAttributeIsSliderDirection(int32_t value)
621 {
622 int32_t minEnumValue = static_cast<int32_t>(ArkUI_SliderDirection::ARKUI_SLIDER_DIRECTION_VERTICAL);
623 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_SliderDirection::ARKUI_SLIDER_DIRECTION_HORIZONTAL);
624 return value >= minEnumValue && value <= maxEnumValue;
625 }
626
CheckAttributeIsCheckboxShape(int32_t value)627 bool CheckAttributeIsCheckboxShape(int32_t value)
628 {
629 int32_t minEnumValue = static_cast<int32_t>(ArkUI_CheckboxShape::ArkUI_CHECKBOX_SHAPE_CIRCLE);
630 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_CheckboxShape::ArkUI_CHECKBOX_SHAPE_ROUNDED_SQUARE);
631 return value >= minEnumValue && value <= maxEnumValue;
632 }
633
CheckAttributeIsListItemAlign(int32_t value)634 bool CheckAttributeIsListItemAlign(int32_t value)
635 {
636 int32_t minEnumValue = static_cast<int32_t>(ArkUI_ListItemAlignment::ARKUI_LIST_ITEM_ALIGNMENT_START);
637 int32_t maxEnumValue =
638 static_cast<int32_t>(ArkUI_ListItemAlignment::ARKUI_LIST_ITEM_ALIGNMENT_END);
639 return value >= minEnumValue && value <= maxEnumValue;
640 }
641
CheckAttributeIsAccessibilityLevel(int32_t value)642 bool CheckAttributeIsAccessibilityLevel(int32_t value)
643 {
644 int32_t minEnumValue = static_cast<int32_t>(ArkUI_AccessibilityMode::ARKUI_ACCESSIBILITY_MODE_AUTO);
645 int32_t maxEnumValue =
646 static_cast<int32_t>(ArkUI_AccessibilityMode::ARKUI_ACCESSIBILITY_MODE_DISABLED_FOR_DESCENDANTS);
647 return value >= minEnumValue && value <= maxEnumValue;
648 }
649
CheckAttributeIsChainStyle(int32_t value)650 bool CheckAttributeIsChainStyle(int32_t value)
651 {
652 int32_t minEnumValue =
653 static_cast<int32_t>(ArkUI_RelativeLayoutChainStyle::ARKUI_RELATIVE_LAYOUT_CHAIN_STYLE_SPREAD);
654 int32_t maxEnumValue =
655 static_cast<int32_t>(ArkUI_RelativeLayoutChainStyle::ARKUI_RELATIVE_LAYOUT_CHAIN_STYLE_PACKED);
656 return value >= minEnumValue && value <= maxEnumValue;
657 }
658
CheckAttributeIsAxis(int32_t value)659 bool CheckAttributeIsAxis(int32_t value)
660 {
661 int32_t minEnumValue = static_cast<int32_t>(ArkUI_Axis::ARKUI_AXIS_VERTICAL);
662 int32_t maxEnumValue =
663 static_cast<int32_t>(ArkUI_Axis::ARKUI_AXIS_HORIZONTAL);
664 return value >= minEnumValue && value <= maxEnumValue;
665 }
666
CheckAttributeIsKeyboardAppearance(int32_t value)667 bool CheckAttributeIsKeyboardAppearance(int32_t value)
668 {
669 int32_t minEnumValue = static_cast<int32_t>(ArkUI_KeyboardAppearance::ARKUI_KEYBOARD_APPEARANCE_NONE_IMMERSIVE);
670 int32_t maxEnumValue = static_cast<int32_t>(ArkUI_KeyboardAppearance::ARKUI_KEYBOARD_APPEARANCE_DARK_IMMERSIVE);
671 return value >= minEnumValue && value <= maxEnumValue;
672 }
673
CheckAttributeString(const ArkUI_AttributeItem * item)674 bool CheckAttributeString(const ArkUI_AttributeItem* item)
675 {
676 CHECK_NULL_RETURN(item, false);
677 if (!item->string) {
678 return false;
679 }
680 return true;
681 }
682
CheckAttributeObject(const ArkUI_AttributeItem * item)683 bool CheckAttributeObject(const ArkUI_AttributeItem* item)
684 {
685 CHECK_NULL_RETURN(item, false);
686 if (!item->object) {
687 return false;
688 }
689 return true;
690 }
691
CheckAttributeObjectAndSize(const ArkUI_AttributeItem * item)692 bool CheckAttributeObjectAndSize(const ArkUI_AttributeItem* item)
693 {
694 CHECK_NULL_RETURN(item, false);
695 if (!item->object || item->size == 0) {
696 return false;
697 }
698 return true;
699 }
700
ParseImages(const ArkUI_AttributeItem * item,ArkUIImageFrameInfo * imageInfos,ArkUI_NodeHandle node)701 bool ParseImages(const ArkUI_AttributeItem* item, ArkUIImageFrameInfo* imageInfos, ArkUI_NodeHandle node)
702 {
703 auto images = reinterpret_cast<ArkUI_ImageAnimatorFrameInfo**>(item->object);
704 if (!images) {
705 return false;
706 }
707 for (int32_t i = 0; i < item->size; i++) {
708 CHECK_NULL_RETURN(images[i], false);
709 if (images[i]->drawableDescriptor) {
710 if (images[i]->drawableDescriptor->drawableDescriptor) {
711 imageInfos[i].drawable = images[i]->drawableDescriptor->drawableDescriptor.get();
712 } else if (images[i]->drawableDescriptor->resource) {
713 imageInfos[i].src = images[i]->drawableDescriptor->resource->src.c_str();
714 }
715 } else {
716 imageInfos[i].src = images[i]->src.c_str();
717 }
718 imageInfos[i].width = images[i]->width.value_or(0);
719 imageInfos[i].height = images[i]->height.value_or(0);
720 imageInfos[i].top = images[i]->top.value_or(0);
721 imageInfos[i].left = images[i]->left.value_or(0);
722 imageInfos[i].unit = GetDefaultUnit(node, UNIT_PX);
723 imageInfos[i].duration = images[i]->duration.value_or(0);
724 }
725 node->imageFrameInfos = images;
726 return true;
727 }
728
CheckAttributeIndicator(const ArkUI_AttributeItem * item)729 bool CheckAttributeIndicator(const ArkUI_AttributeItem* item)
730 {
731 CHECK_NULL_RETURN(item, false);
732 if (item->value[0].i32 != ARKUI_SWIPER_INDICATOR_TYPE_DOT &&
733 item->value[0].i32 != ARKUI_SWIPER_INDICATOR_TYPE_DIGIT) {
734 return false;
735 }
736 if (!item->object) {
737 return false;
738 }
739 return true;
740 }
741
CheckAnimation(const ArkUI_AttributeItem * item,int32_t size,int32_t animationIndexBase)742 bool CheckAnimation(const ArkUI_AttributeItem* item, int32_t size, int32_t animationIndexBase)
743 {
744 CHECK_NULL_RETURN(item, false);
745 const int32_t animationCurveIndex = animationIndexBase + ANIMATION_CURVE_INDEX;
746 if (animationCurveIndex < size &&
747 (item->value[animationCurveIndex].i32 < 0 ||
748 item->value[animationCurveIndex].i32 > static_cast<int32_t>(ARKUI_CURVE_FRICTION))) {
749 return false;
750 }
751 const int32_t playModeIndex = animationIndexBase + ANIMATION_PLAY_MODE_INDEX;
752 if (playModeIndex < size &&
753 (item->value[playModeIndex].i32 < 0 ||
754 item->value[playModeIndex].i32 > static_cast<int32_t>(ARKUI_ANIMATION_PLAY_MODE_ALTERNATE_REVERSE))) {
755 return false;
756 }
757 const int32_t animationTempoIndex = animationIndexBase + ANIMATION_TEMPO_INDEX;
758 if (animationTempoIndex < size && LessNotEqual(item->value[animationTempoIndex].f32, 0.0f)) {
759 return false;
760 }
761 return true;
762 }
763
ParseAnimation(const ArkUI_AttributeItem * item,int32_t actualSize,ArkUIAnimationOptionType & animationOption,const int animationIndexBase)764 void ParseAnimation(const ArkUI_AttributeItem* item, int32_t actualSize, ArkUIAnimationOptionType& animationOption,
765 const int animationIndexBase)
766 {
767 const int32_t animationDurationIndex = animationIndexBase + ANIMATION_DURATION_INDEX;
768 int32_t duration = DEFAULT_DURATION;
769 if (animationDurationIndex < actualSize) {
770 duration = item->value[animationDurationIndex].i32;
771 }
772 const int32_t animationCurveIndex = animationIndexBase + ANIMATION_CURVE_INDEX;
773 int32_t curve = 0;
774 if (animationCurveIndex < actualSize &&
775 item->value[animationCurveIndex].i32 < static_cast<int32_t>(CURVE_ARRAY.size())) {
776 curve = item->value[animationCurveIndex].i32;
777 }
778 const int32_t animationDelayIndex = animationIndexBase + ANIMATION_DELAY_INDEX;
779 int32_t delay = 0;
780 if (animationDelayIndex < actualSize) {
781 delay = item->value[animationDelayIndex].i32;
782 }
783 const int32_t animationIterationsIndex = animationIndexBase + ANIMATION_INTERATION_INDEX;
784 int32_t iterations = 1;
785 if (animationIterationsIndex < actualSize) {
786 iterations = item->value[animationIterationsIndex].i32;
787 }
788 const int32_t animationPlayModeIndex = animationIndexBase + ANIMATION_PLAY_MODE_INDEX;
789 int32_t direction = 0;
790 if (animationPlayModeIndex < actualSize) {
791 direction = ConvertAnimationDirection(item->value[animationPlayModeIndex].i32);
792 }
793 const int32_t animationTempoIndex = animationIndexBase + ANIMATION_TEMPO_INDEX;
794 float tempo = 1.0f;
795 if (animationTempoIndex < actualSize) {
796 tempo = item->value[animationTempoIndex].f32;
797 }
798 animationOption.duration = duration;
799 animationOption.curve = curve;
800 animationOption.delay = delay;
801 animationOption.iteration = iterations;
802 animationOption.playMode = direction;
803 animationOption.tempo = tempo;
804 }
805
ResetAnimation(ArkUIAnimationOptionType & animationOption)806 void ResetAnimation(ArkUIAnimationOptionType& animationOption)
807 {
808 animationOption.duration = DEFAULT_DURATION;
809 animationOption.curve = 0;
810 animationOption.delay = 0;
811 animationOption.iteration = 1;
812 animationOption.playMode = 0;
813 animationOption.tempo = 1.0f;
814 }
815
816 // Common Attributes functions
SetWidth(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)817 int32_t SetWidth(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
818 {
819 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
820 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
821 return ERROR_CODE_PARAM_INVALID;
822 }
823 // already check in entry point.
824 auto* fullImpl = GetFullImpl();
825 // 1 for vp. check in DimensionUnit.
826 fullImpl->getNodeModifiers()->getCommonModifier()->setWidth(
827 node->uiNodeHandle, item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr);
828 return ERROR_CODE_NO_ERROR;
829 }
830
ResetWidth(ArkUI_NodeHandle node)831 void ResetWidth(ArkUI_NodeHandle node)
832 {
833 auto* fullImpl = GetFullImpl();
834 fullImpl->getNodeModifiers()->getCommonModifier()->resetWidth(node->uiNodeHandle);
835 }
836
GetWidth(ArkUI_NodeHandle node)837 const ArkUI_AttributeItem* GetWidth(ArkUI_NodeHandle node)
838 {
839 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
840 g_numberValues[0].f32 = modifier->getWidth(node->uiNodeHandle, GetDefaultUnit(node, UNIT_VP));
841 if (LessNotEqual(g_numberValues[0].f32, 0.0f)) {
842 return nullptr;
843 }
844 return &g_attributeItem;
845 }
846
SetHeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)847 int32_t SetHeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
848 {
849 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
850 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
851 return ERROR_CODE_PARAM_INVALID;
852 }
853 // already check in entry point.
854 auto* fullImpl = GetFullImpl();
855 // 1 for vp. check in DimensionUnit.
856 fullImpl->getNodeModifiers()->getCommonModifier()->setHeight(
857 node->uiNodeHandle, item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr);
858 return ERROR_CODE_NO_ERROR;
859 }
860
ResetHeight(ArkUI_NodeHandle node)861 void ResetHeight(ArkUI_NodeHandle node)
862 {
863 auto* fullImpl = GetFullImpl();
864 fullImpl->getNodeModifiers()->getCommonModifier()->resetHeight(node->uiNodeHandle);
865 }
866
GetHeight(ArkUI_NodeHandle node)867 const ArkUI_AttributeItem* GetHeight(ArkUI_NodeHandle node)
868 {
869 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
870 g_numberValues[0].f32 = modifier->getHeight(node->uiNodeHandle, GetDefaultUnit(node, UNIT_VP));
871 if (LessNotEqual(g_numberValues[0].f32, 0.0f)) {
872 return nullptr;
873 }
874 return &g_attributeItem;
875 }
876
SetBackgroundColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)877 int32_t SetBackgroundColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
878 {
879 if (item->size == 0) {
880 return ERROR_CODE_PARAM_INVALID;
881 }
882 // already check in entry point.
883 auto* fullImpl = GetFullImpl();
884 if (node->type == ARKUI_NODE_BUTTON) {
885 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonBackgroundColor(
886 node->uiNodeHandle, item->value[NUM_0].u32);
887 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
888 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputBackgroundColor(
889 node->uiNodeHandle, item->value[NUM_0].u32);
890 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
891 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBackgroundColor(
892 node->uiNodeHandle, item->value[NUM_0].u32);
893 } else {
894 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundColor(
895 node->uiNodeHandle, item->value[NUM_0].u32);
896 }
897 return ERROR_CODE_NO_ERROR;
898 }
899
ResetBackgroundColor(ArkUI_NodeHandle node)900 void ResetBackgroundColor(ArkUI_NodeHandle node)
901 {
902 auto* fullImpl = GetFullImpl();
903 if (node->type == ARKUI_NODE_BUTTON) {
904 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonBackgroundColor(node->uiNodeHandle);
905 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
906 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputBackgroundColor(node->uiNodeHandle);
907 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
908 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaBackgroundColor(node->uiNodeHandle);
909 } else {
910 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackgroundColor(node->uiNodeHandle);
911 }
912 }
913
GetBackgroundColor(ArkUI_NodeHandle node)914 const ArkUI_AttributeItem* GetBackgroundColor(ArkUI_NodeHandle node)
915 {
916 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
917 g_numberValues[0].u32 = modifier->getBackgroundColor(node->uiNodeHandle);
918 return &g_attributeItem;
919 }
920
SetBackdropBlur(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)921 int32_t SetBackdropBlur(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
922 {
923 bool sizeIllegal = item->size < NUM_1 || item->size > NUM_3;
924 if (sizeIllegal) {
925 return ERROR_CODE_PARAM_INVALID;
926 }
927 float grayScaleStart = item->size > NUM_1 ? item->value[NUM_1].f32 : 0.0f;
928 float grayScaleEnd = item->size > NUM_2 ? item->value[NUM_2].f32 : 0.0f;
929 bool valueIllegal = LessNotEqual(item->value[NUM_0].f32, 0.0f)
930 || LessNotEqual(grayScaleStart, 0.0f) || GreatNotEqual(grayScaleStart, MAX_GRAYSCALE)
931 || LessNotEqual(grayScaleEnd, 0.0f) || GreatNotEqual(grayScaleEnd, MAX_GRAYSCALE);
932 if (valueIllegal) {
933 return ERROR_CODE_PARAM_INVALID;
934 }
935 auto* fullImpl = GetFullImpl();
936 BlurOption blurOption = {{grayScaleStart, grayScaleEnd}};
937 fullImpl->getNodeModifiers()->getCommonModifier()->setNodeBackdropBlur(
938 node->uiNodeHandle, item->value[NUM_0].f32, blurOption.grayscale.data(), blurOption.grayscale.size());
939 return ERROR_CODE_NO_ERROR;
940 }
941
ResetBackdropBlur(ArkUI_NodeHandle node)942 void ResetBackdropBlur(ArkUI_NodeHandle node)
943 {
944 auto* fullImpl = GetFullImpl();
945 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackdropBlur(node->uiNodeHandle);
946 }
947
GetBackdropBlur(ArkUI_NodeHandle node)948 const ArkUI_AttributeItem* GetBackdropBlur(ArkUI_NodeHandle node)
949 {
950 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getNodeBackdropBlur(node->uiNodeHandle);
951 g_numberValues[NUM_0].f32 = resultValue.dimensionRadius;
952 g_numberValues[NUM_1].f32 = resultValue.brighteningBlur;
953 g_numberValues[NUM_2].f32 = resultValue.darkeningBlur;
954 g_attributeItem.size = NUM_3;
955 return &g_attributeItem;
956 }
957
SetBackgroundImage(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)958 int32_t SetBackgroundImage(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
959 {
960 if ((!item->string && !item->object) || (item->string && item->object)) {
961 return ERROR_CODE_PARAM_INVALID;
962 }
963 if (item->size == NUM_1 &&
964 (item->value[NUM_0].i32 < 0 || item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_IMAGE_REPEAT_XY))) {
965 return ERROR_CODE_PARAM_INVALID;
966 }
967 // already check in entry point.
968 auto* fullImpl = GetFullImpl();
969 std::string bundle;
970 std::string module;
971 int repeat = item->size == NUM_1 ? item->value[NUM_0].i32 : ARKUI_IMAGE_REPEAT_NONE;
972 if (item->string) {
973 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImage(
974 node->uiNodeHandle, item->string, bundle.c_str(), module.c_str(), repeat);
975 } else {
976 auto drawableDescriptor = reinterpret_cast<ArkUI_DrawableDescriptor*>(item->object);
977 if (!drawableDescriptor->drawableDescriptor) {
978 return ERROR_CODE_PARAM_INVALID;
979 }
980 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImagePixelMap(
981 node->uiNodeHandle, drawableDescriptor->drawableDescriptor.get(), repeat);
982 }
983 return ERROR_CODE_NO_ERROR;
984 }
985
ResetBackgroundImage(ArkUI_NodeHandle node)986 void ResetBackgroundImage(ArkUI_NodeHandle node)
987 {
988 auto* fullImpl = GetFullImpl();
989 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackgroundImage(node->uiNodeHandle);
990 }
991
GetBackgroundImage(ArkUI_NodeHandle node)992 const ArkUI_AttributeItem* GetBackgroundImage(ArkUI_NodeHandle node)
993 {
994 auto* fullImpl = GetFullImpl();
995 ArkUIBackgroundImage options;
996 fullImpl->getNodeModifiers()->getCommonModifier()->getBackgroundImage(node->uiNodeHandle, &options);
997 g_numberValues[NUM_0].i32 = options.repeat;
998 g_attributeItem.string = options.src;
999 return &g_attributeItem;
1000 }
1001
SetPadding(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1002 int32_t SetPadding(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1003 {
1004 if (item->size != NUM_1 && item->size != NUM_4) {
1005 return ERROR_CODE_PARAM_INVALID;
1006 }
1007 // already check in entry point.
1008 auto* fullImpl = GetFullImpl();
1009 int topIndex = NUM_0;
1010 int rightIndex = item->size == NUM_1 ? NUM_0 : NUM_1;
1011 int bottomIndex = item->size == NUM_1 ? NUM_0 : NUM_2;
1012 int leftIndex = item->size == NUM_1 ? NUM_0 : NUM_3;
1013 int32_t unit = GetDefaultUnit(node, UNIT_VP);
1014 struct ArkUISizeType top = { item->value[topIndex].f32, unit };
1015 struct ArkUISizeType right = { item->value[rightIndex].f32, unit };
1016 struct ArkUISizeType bottom = { item->value[bottomIndex].f32, unit };
1017 struct ArkUISizeType left = { item->value[leftIndex].f32, unit };
1018 if (node->type == ARKUI_NODE_TEXT_INPUT) {
1019 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPadding(
1020 node->uiNodeHandle, &top, &right, &bottom, &left);
1021 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
1022 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaPadding(
1023 node->uiNodeHandle, &top, &right, &bottom, &left);
1024 } else {
1025 fullImpl->getNodeModifiers()->getCommonModifier()->setPadding(
1026 node->uiNodeHandle, &top, &right, &bottom, &left);
1027 }
1028 return ERROR_CODE_NO_ERROR;
1029 }
1030
ResetPadding(ArkUI_NodeHandle node)1031 void ResetPadding(ArkUI_NodeHandle node)
1032 {
1033 auto* fullImpl = GetFullImpl();
1034 if (node->type == ARKUI_NODE_TEXT_INPUT) {
1035 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputPadding(node->uiNodeHandle);
1036 } else {
1037 fullImpl->getNodeModifiers()->getCommonModifier()->resetPadding(node->uiNodeHandle);
1038 }
1039 }
1040
GetPadding(ArkUI_NodeHandle node)1041 const ArkUI_AttributeItem* GetPadding(ArkUI_NodeHandle node)
1042 {
1043 auto* fullImpl = GetFullImpl();
1044 ArkUI_Float32 paddings[NUM_4];
1045 ArkUI_Int32 length = 0;
1046 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
1047 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1048 fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaPadding(
1049 node->uiNodeHandle, &paddings, length, unit);
1050 } else {
1051 fullImpl->getNodeModifiers()->getCommonModifier()->getPadding(node->uiNodeHandle, &paddings, length, unit);
1052 }
1053 g_numberValues[NUM_0].f32 = paddings[NUM_0];
1054 g_numberValues[NUM_1].f32 = paddings[NUM_1];
1055 g_numberValues[NUM_2].f32 = paddings[NUM_2];
1056 g_numberValues[NUM_3].f32 = paddings[NUM_3];
1057 return &g_attributeItem;
1058 }
1059
SetKey(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1060 int32_t SetKey(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1061 {
1062 if (!item->string) {
1063 return ERROR_CODE_PARAM_INVALID;
1064 }
1065 // already check in entry point.
1066 auto* fullImpl = GetFullImpl();
1067 fullImpl->getNodeModifiers()->getCommonModifier()->setKey(node->uiNodeHandle, item->string);
1068 return ERROR_CODE_NO_ERROR;
1069 }
1070
ResetKey(ArkUI_NodeHandle node)1071 void ResetKey(ArkUI_NodeHandle node)
1072 {
1073 auto* fullImpl = GetFullImpl();
1074 fullImpl->getNodeModifiers()->getCommonModifier()->resetKey(node->uiNodeHandle);
1075 }
1076
GetKey(ArkUI_NodeHandle node)1077 const ArkUI_AttributeItem* GetKey(ArkUI_NodeHandle node)
1078 {
1079 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1080 g_attributeItem.string = modifier->getKey(node->uiNodeHandle);
1081 return &g_attributeItem;
1082 }
1083
SetEnabled(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1084 int32_t SetEnabled(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1085 {
1086 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
1087 if (actualSize < 0 || item->value[NUM_0].i32 < 0) {
1088 return ERROR_CODE_PARAM_INVALID;
1089 }
1090 // already check in entry point.
1091 auto* fullImpl = GetFullImpl();
1092 fullImpl->getNodeModifiers()->getCommonModifier()->setEnabled(node->uiNodeHandle, item->value[0].i32);
1093 return ERROR_CODE_NO_ERROR;
1094 }
1095
ResetEnabled(ArkUI_NodeHandle node)1096 void ResetEnabled(ArkUI_NodeHandle node)
1097 {
1098 auto* fullImpl = GetFullImpl();
1099 fullImpl->getNodeModifiers()->getCommonModifier()->resetEnabled(node->uiNodeHandle);
1100 }
1101
GetEnabled(ArkUI_NodeHandle node)1102 const ArkUI_AttributeItem* GetEnabled(ArkUI_NodeHandle node)
1103 {
1104 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1105 g_numberValues[0].i32 = modifier->getEnabled(node->uiNodeHandle);
1106 return &g_attributeItem;
1107 }
1108
SetMargin(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1109 int32_t SetMargin(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1110 {
1111 if (!item || (item->size != NUM_4 && item->size != NUM_1)) {
1112 return ERROR_CODE_PARAM_INVALID;
1113 }
1114 auto* fullImpl = GetFullImpl();
1115 ArkUISizeType top, right, bottom, left;
1116 top.value = right.value = bottom.value = left.value = NUM_0;
1117 top.unit = right.unit = bottom.unit = left.unit = GetDefaultUnit(node, UNIT_VP);
1118 if (item->size == NUM_1) {
1119 top.value = right.value = bottom.value = left.value = item->value[NUM_0].f32;
1120 } else if (item->size == NUM_4) {
1121 top.value = item->value[NUM_0].f32;
1122 right.value = item->value[NUM_1].f32;
1123 bottom.value = item->value[NUM_2].f32;
1124 left.value = item->value[NUM_3].f32;
1125 }
1126 if (node->type == ARKUI_NODE_TEXT_INPUT) {
1127 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputMargin(
1128 node->uiNodeHandle, &top, &right, &bottom, &left);
1129 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
1130 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaMargin(
1131 node->uiNodeHandle, &top, &right, &bottom, &left);
1132 } else {
1133 fullImpl->getNodeModifiers()->getCommonModifier()->setMargin(node->uiNodeHandle, &top, &right, &bottom, &left);
1134 }
1135 return ERROR_CODE_NO_ERROR;
1136 }
1137
ResetMargin(ArkUI_NodeHandle node)1138 void ResetMargin(ArkUI_NodeHandle node)
1139 {
1140 // already check in entry point.
1141 auto* fullImpl = GetFullImpl();
1142 if (node->type == ARKUI_NODE_TEXT_INPUT) {
1143 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputMargin(node->uiNodeHandle);
1144 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
1145 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaMargin(node->uiNodeHandle);
1146 } else {
1147 fullImpl->getNodeModifiers()->getCommonModifier()->resetMargin(node->uiNodeHandle);
1148 }
1149 }
1150
GetMargin(ArkUI_NodeHandle node)1151 const ArkUI_AttributeItem* GetMargin(ArkUI_NodeHandle node)
1152 {
1153 auto* fullImpl = GetFullImpl();
1154 ArkUI_Float32 margins[NUM_4];
1155 ArkUI_Int32 length = 0;
1156 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
1157 if (node->type == ARKUI_NODE_TEXT_INPUT) {
1158 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputMargin(
1159 node->uiNodeHandle, &margins, length, unit);
1160 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
1161 fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaMargin(
1162 node->uiNodeHandle, &margins, length, unit);
1163 } else {
1164 fullImpl->getNodeModifiers()->getCommonModifier()->getMargin(node->uiNodeHandle, &margins, length, unit);
1165 }
1166 g_numberValues[NUM_0].f32 = margins[NUM_0];
1167 g_numberValues[NUM_1].f32 = margins[NUM_1];
1168 g_numberValues[NUM_2].f32 = margins[NUM_2];
1169 g_numberValues[NUM_3].f32 = margins[NUM_3];
1170 return &g_attributeItem;
1171 }
1172
SetTranslate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1173 int32_t SetTranslate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1174 {
1175 auto actualSize = CheckAttributeItemArray(item, REQUIRED_THREE_PARAM);
1176 if (actualSize < 0) {
1177 return ERROR_CODE_PARAM_INVALID;
1178 }
1179 auto fullImpl = GetFullImpl();
1180 ArkUI_Float32 values[item->size];
1181 ArkUI_Int32 units[item->size];
1182 int32_t unit = GetDefaultUnit(node, UNIT_VP);
1183 for (int i = 0; i < item->size; ++i) {
1184 values[i] = item->value[i].f32;
1185 units[i] = unit;
1186 }
1187
1188 fullImpl->getNodeModifiers()->getCommonModifier()->setTranslate(node->uiNodeHandle, values, units, item->size);
1189 return ERROR_CODE_NO_ERROR;
1190 }
1191
ResetTranslate(ArkUI_NodeHandle node)1192 void ResetTranslate(ArkUI_NodeHandle node)
1193 {
1194 // already check in entry point.
1195 auto* fullImpl = GetFullImpl();
1196
1197 fullImpl->getNodeModifiers()->getCommonModifier()->resetTranslate(node->uiNodeHandle);
1198 }
1199
GetTranslate(ArkUI_NodeHandle node)1200 const ArkUI_AttributeItem* GetTranslate(ArkUI_NodeHandle node)
1201 {
1202 auto* fullImpl = GetFullImpl();
1203 ArkUI_Float32 translate[NUM_3];
1204 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
1205 fullImpl->getNodeModifiers()->getCommonModifier()->getTranslate(node->uiNodeHandle, &translate, unit);
1206 g_numberValues[NUM_0].f32 = translate[NUM_0];
1207 g_numberValues[NUM_1].f32 = translate[NUM_1];
1208 g_numberValues[NUM_2].f32 = translate[NUM_2];
1209 return &g_attributeItem;
1210 }
1211
SetScale(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1212 int32_t SetScale(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1213 {
1214 auto fullImpl = GetFullImpl();
1215
1216 if (item->size != NUM_5 && item->size != NUM_2) {
1217 return ERROR_CODE_PARAM_INVALID;
1218 }
1219 ArkUI_Float32 values[item->size];
1220 for (int i = 0; i < item->size; i++) {
1221 values[i] = item->value[i].f32;
1222 }
1223 int32_t unit = GetDefaultUnit(node, UNIT_VP);
1224 ArkUI_Int32 units[NUM_2] = { unit, unit };
1225 fullImpl->getNodeModifiers()->getCommonModifier()->setScale(node->uiNodeHandle, values, item->size, units, NUM_2);
1226 return ERROR_CODE_NO_ERROR;
1227 }
1228
ResetScale(ArkUI_NodeHandle node)1229 void ResetScale(ArkUI_NodeHandle node)
1230 {
1231 // already check in entry point.
1232 auto* fullImpl = GetFullImpl();
1233
1234 fullImpl->getNodeModifiers()->getCommonModifier()->resetScale(node->uiNodeHandle);
1235 }
1236
GetScale(ArkUI_NodeHandle node)1237 const ArkUI_AttributeItem* GetScale(ArkUI_NodeHandle node)
1238 {
1239 auto* fullImpl = GetFullImpl();
1240 ArkUIScaleType scaleType = { 0.0f, 0.0f };
1241 fullImpl->getNodeModifiers()->getCommonModifier()->getScale(node->uiNodeHandle, &scaleType);
1242 g_numberValues[NUM_0].f32 = scaleType.xValue;
1243 g_numberValues[NUM_1].f32 = scaleType.yValue;
1244 g_attributeItem.size = NUM_2;
1245 return &g_attributeItem;
1246 }
1247
SetRotate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1248 int32_t SetRotate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1249 {
1250 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FIVE_PARAM);
1251 if (actualSize < 0) {
1252 return ERROR_CODE_PARAM_INVALID;
1253 }
1254 auto fullImpl = GetFullImpl();
1255 ArkUI_Float32 values[item->size];
1256 for (int i = 0; i < item->size; ++i) {
1257 values[i] = item->value[i].f32;
1258 }
1259
1260 fullImpl->getNodeModifiers()->getCommonModifier()->setRotateWithoutTransformCenter(
1261 node->uiNodeHandle, values, item->size);
1262 return ERROR_CODE_NO_ERROR;
1263 }
1264
ResetRotate(ArkUI_NodeHandle node)1265 void ResetRotate(ArkUI_NodeHandle node)
1266 {
1267 // already check in entry point.
1268 auto* fullImpl = GetFullImpl();
1269
1270 fullImpl->getNodeModifiers()->getCommonModifier()->resetRotate(node->uiNodeHandle);
1271 }
1272
GetRotate(ArkUI_NodeHandle node)1273 const ArkUI_AttributeItem* GetRotate(ArkUI_NodeHandle node)
1274 {
1275 auto* fullImpl = GetFullImpl();
1276 ArkUIRotateType rotateType = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
1277 fullImpl->getNodeModifiers()->getCommonModifier()->getRotate(node->uiNodeHandle, &rotateType);
1278 g_numberValues[NUM_0].f32 = rotateType.xCoordinate;
1279 g_numberValues[NUM_1].f32 = rotateType.yCoordinate;
1280 g_numberValues[NUM_2].f32 = rotateType.zCoordinate;
1281 g_numberValues[NUM_3].f32 = rotateType.angle;
1282 g_numberValues[NUM_4].f32 = rotateType.sightDistance;
1283 g_attributeItem.size = NUM_5;
1284 return &g_attributeItem;
1285 }
1286
SetBrightness(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1287 int32_t SetBrightness(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1288 {
1289 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
1290 if (actualSize < 0) {
1291 return ERROR_CODE_PARAM_INVALID;
1292 }
1293 if (LessNotEqual(item->value[0].f32, 0.0f)) {
1294 return ERROR_CODE_PARAM_INVALID;
1295 }
1296 auto fullImpl = GetFullImpl();
1297 auto brightness = item->value[NUM_0].f32;
1298 fullImpl->getNodeModifiers()->getCommonModifier()->setBrightness(node->uiNodeHandle, brightness);
1299 return ERROR_CODE_NO_ERROR;
1300 }
1301
ResetBrightness(ArkUI_NodeHandle node)1302 void ResetBrightness(ArkUI_NodeHandle node)
1303 {
1304 // already check in entry point.
1305 auto* fullImpl = GetFullImpl();
1306
1307 fullImpl->getNodeModifiers()->getCommonModifier()->resetBrightness(node->uiNodeHandle);
1308 }
1309
GetBrightness(ArkUI_NodeHandle node)1310 const ArkUI_AttributeItem* GetBrightness(ArkUI_NodeHandle node)
1311 {
1312 auto* fullImpl = GetFullImpl();
1313 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getCommonModifier()->getBrightness(node->uiNodeHandle);
1314 g_attributeItem.size = NUM_1;
1315 return &g_attributeItem;
1316 }
1317
SetSaturate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1318 int32_t SetSaturate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1319 {
1320 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
1321 if (actualSize < 0 || !InRegion(NUM_0, DEFAULT_SIZE_50, item->value[NUM_0].f32)) {
1322 return ERROR_CODE_PARAM_INVALID;
1323 }
1324 auto fullImpl = GetFullImpl();
1325 auto saturate = item->value[NUM_0].f32;
1326 fullImpl->getNodeModifiers()->getCommonModifier()->setSaturate(node->uiNodeHandle, saturate);
1327 return ERROR_CODE_NO_ERROR;
1328 }
1329
ResetSaturate(ArkUI_NodeHandle node)1330 void ResetSaturate(ArkUI_NodeHandle node)
1331 {
1332 // already check in entry point.
1333 auto* fullImpl = GetFullImpl();
1334
1335 fullImpl->getNodeModifiers()->getCommonModifier()->resetSaturate(node->uiNodeHandle);
1336 }
1337
GetSaturate(ArkUI_NodeHandle node)1338 const ArkUI_AttributeItem* GetSaturate(ArkUI_NodeHandle node)
1339 {
1340 auto* fullImpl = GetFullImpl();
1341 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getCommonModifier()->getSaturate(node->uiNodeHandle);
1342 g_attributeItem.size = NUM_1;
1343 return &g_attributeItem;
1344 }
1345
SetBlur(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1346 int32_t SetBlur(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1347 {
1348 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
1349 if (actualSize < 0) {
1350 return ERROR_CODE_PARAM_INVALID;
1351 }
1352 auto fullImpl = GetFullImpl();
1353 ArkUI_Float64 blur = item->value[NUM_0].f32;
1354 BlurOption blurOption;
1355 fullImpl->getNodeModifiers()->getCommonModifier()->setBlur(
1356 node->uiNodeHandle, blur, blurOption.grayscale.data(), blurOption.grayscale.size());
1357 return ERROR_CODE_NO_ERROR;
1358 }
1359
GetBlur(ArkUI_NodeHandle node)1360 const ArkUI_AttributeItem* GetBlur(ArkUI_NodeHandle node)
1361 {
1362 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getBlur(node->uiNodeHandle);
1363 g_numberValues[0].f32 = resultValue;
1364 return &g_attributeItem;
1365 }
1366
ResetBlur(ArkUI_NodeHandle node)1367 void ResetBlur(ArkUI_NodeHandle node)
1368 {
1369 // already check in entry point.
1370 auto* fullImpl = GetFullImpl();
1371
1372 fullImpl->getNodeModifiers()->getCommonModifier()->resetBlur(node->uiNodeHandle);
1373 }
1374
SetLinearGradient(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1375 int32_t SetLinearGradient(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1376 {
1377 if (item->size < NUM_3) {
1378 return ERROR_CODE_PARAM_INVALID;
1379 }
1380 if (item->object == nullptr) {
1381 return ERROR_CODE_PARAM_INVALID;
1382 }
1383 //save direction value in node;
1384 node->linearGradientDirection = item->value[NUM_1].i32;
1385 auto* fullImpl = GetFullImpl();
1386 const ArkUI_ColorStop* colorStop = reinterpret_cast<ArkUI_ColorStop*>(item->object);
1387 int size = colorStop->size;
1388 ArkUIInt32orFloat32 colors[size * NUM_3];
1389 for (int i = 0; i < size; i++) {
1390 colors[i * NUM_3 + NUM_0].u32 = colorStop->colors[i];
1391 colors[i * NUM_3 + NUM_1].i32 = true;
1392 colors[i * NUM_3 + NUM_2].f32 = colorStop->stops[i] < 0 ? 0 : colorStop->stops[i];
1393 }
1394
1395 auto isCustomDirection = item->value[NUM_1].i32 == static_cast<ArkUI_Int32>(ARKUI_LINEAR_GRADIENT_DIRECTION_CUSTOM);
1396 ArkUIInt32orFloat32 values[NUM_4] = {
1397 {.i32 = static_cast<ArkUI_Int32>(isCustomDirection)}, //angleHasValue
1398 {.f32 = item->value[NUM_0].f32}, //angleValue
1399 {.i32 = item->value[NUM_1].i32}, //directionValue
1400 {.i32 = item->value[NUM_2].i32} //repeating
1401 };
1402
1403 fullImpl->getNodeModifiers()->getCommonModifier()->setLinearGradient(
1404 node->uiNodeHandle, values, NUM_4, colors, size * NUM_3);
1405 return ERROR_CODE_NO_ERROR;
1406 }
1407
GetLinearGradient(ArkUI_NodeHandle node)1408 const ArkUI_AttributeItem* GetLinearGradient(ArkUI_NodeHandle node)
1409 {
1410 //default size 3
1411 ArkUI_Float32 values[NUM_3];
1412 //default size 10
1413 ArkUI_Uint32 colors[NUM_10];
1414 //default size 10
1415 ArkUI_Float32 stops[NUM_10];
1416 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getLinearGradient(
1417 node->uiNodeHandle, &values, &colors, &stops);
1418 //angle
1419 g_numberValues[0].f32 = values[0];
1420 //direction
1421 g_numberValues[1].i32 = node->linearGradientDirection > -1 ? node->linearGradientDirection : values[1];
1422 //repeated
1423 g_numberValues[2].i32 = values[2];
1424 //size
1425 g_attributeItem.size = NUM_3;
1426 if (resultValue < NUM_1) {
1427 return &g_attributeItem;
1428 }
1429
1430 static ArkUI_ColorStop colorStop;
1431 static uint32_t gradientColors[NUM_10];
1432 static float gradientStops[NUM_10];
1433 for (int i = 0; i < resultValue; i++) {
1434 gradientColors[i] = colors[i];
1435 gradientStops[i] = stops[i] / 100.0f; //百分比转换为小数
1436 }
1437 colorStop.colors = gradientColors;
1438 colorStop.stops = gradientStops;
1439 colorStop.size = resultValue;
1440 g_attributeItem.object = &colorStop;
1441 return &g_attributeItem;
1442 }
1443
ResetLinearGradient(ArkUI_NodeHandle node)1444 void ResetLinearGradient(ArkUI_NodeHandle node)
1445 {
1446 // already check in entry point.
1447 auto* fullImpl = GetFullImpl();
1448
1449 fullImpl->getNodeModifiers()->getCommonModifier()->resetLinearGradient(node->uiNodeHandle);
1450 }
1451
SetAlign(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1452 int32_t SetAlign(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1453 {
1454 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
1455 if (actualSize < 0 || !InRegion(NUM_0, NUM_8, item->value[0].i32)) {
1456 return ERROR_CODE_PARAM_INVALID;
1457 }
1458 auto fullImpl = GetFullImpl();
1459 auto attrVal = item->value[NUM_0].i32;
1460 fullImpl->getNodeModifiers()->getCommonModifier()->setAlign(node->uiNodeHandle, attrVal);
1461 return ERROR_CODE_NO_ERROR;
1462 }
1463
GetAlign(ArkUI_NodeHandle node)1464 const ArkUI_AttributeItem* GetAlign(ArkUI_NodeHandle node)
1465 {
1466 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getAlign(node->uiNodeHandle);
1467 g_numberValues[0].i32 = resultValue;
1468 return &g_attributeItem;
1469 }
1470
ResetAlign(ArkUI_NodeHandle node)1471 void ResetAlign(ArkUI_NodeHandle node)
1472 {
1473 // already check in entry point.
1474 auto* fullImpl = GetFullImpl();
1475
1476 fullImpl->getNodeModifiers()->getCommonModifier()->resetAlign(node->uiNodeHandle);
1477 }
1478
SetOpacity(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1479 int32_t SetOpacity(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1480 {
1481 if (item->size == 0) {
1482 return ERROR_CODE_PARAM_INVALID;
1483 }
1484 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatNotEqual(item->value[0].f32, 1.0f)) {
1485 return ERROR_CODE_PARAM_INVALID;
1486 }
1487 // already check in entry point.
1488 auto* fullImpl = GetFullImpl();
1489 fullImpl->getNodeModifiers()->getCommonModifier()->setOpacity(node->uiNodeHandle, item->value[0].f32);
1490 return ERROR_CODE_NO_ERROR;
1491 }
1492
ResetOpacity(ArkUI_NodeHandle node)1493 void ResetOpacity(ArkUI_NodeHandle node)
1494 {
1495 auto* fullImpl = GetFullImpl();
1496 fullImpl->getNodeModifiers()->getCommonModifier()->resetOpacity(node->uiNodeHandle);
1497 }
1498
GetOpacity(ArkUI_NodeHandle node)1499 const ArkUI_AttributeItem* GetOpacity(ArkUI_NodeHandle node)
1500 {
1501 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1502 g_numberValues[0].f32 = modifier->getOpacity(node->uiNodeHandle);
1503 return &g_attributeItem;
1504 }
1505
SetBorderWidth(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1506 int32_t SetBorderWidth(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1507 {
1508 if (item->size == 0) {
1509 return ERROR_CODE_PARAM_INVALID;
1510 }
1511 // already check in entry point.
1512 auto* fullImpl = GetFullImpl();
1513 int32_t unit = GetDefaultUnit(node, UNIT_VP);
1514 float widthVals[ALLOW_SIZE_4] = { 0, 0, 0, 0 };
1515 int widthUnits[ALLOW_SIZE_4] = { unit, unit, unit, unit };
1516
1517 if (item->size == 1) {
1518 if (LessNotEqual(item->value[0].f32, 0.0f)) {
1519 return ERROR_CODE_PARAM_INVALID;
1520 }
1521 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1522 widthVals[i] = item->value[0].f32;
1523 }
1524 } else if (item->size == ALLOW_SIZE_4) {
1525 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1526 if (LessNotEqual(item->value[i].f32, 0.0f)) {
1527 return ERROR_CODE_PARAM_INVALID;
1528 } else {
1529 widthVals[i] = item->value[i].f32;
1530 }
1531 }
1532 } else {
1533 return ERROR_CODE_PARAM_INVALID;
1534 }
1535 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1536 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderWidth(
1537 node->uiNodeHandle, widthVals, widthUnits, ALLOW_SIZE_4);
1538 } else {
1539 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderWidth(
1540 node->uiNodeHandle, widthVals, widthUnits, ALLOW_SIZE_4);
1541 }
1542 return ERROR_CODE_NO_ERROR;
1543 }
1544
ResetBorderWidth(ArkUI_NodeHandle node)1545 void ResetBorderWidth(ArkUI_NodeHandle node)
1546 {
1547 auto* fullImpl = GetFullImpl();
1548 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1549 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaBorderWidth(node->uiNodeHandle);
1550 } else {
1551 fullImpl->getNodeModifiers()->getCommonModifier()->resetBorderWidth(node->uiNodeHandle);
1552 }
1553 }
1554
GetBorderWidth(ArkUI_NodeHandle node)1555 const ArkUI_AttributeItem* GetBorderWidth(ArkUI_NodeHandle node)
1556 {
1557 auto* fullImpl = GetFullImpl();
1558 ArkUI_Float32 borderWidth[NUM_4];
1559 auto unit = GetDefaultUnit(node, UNIT_VP);
1560 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderWidth(node->uiNodeHandle, &borderWidth, unit);
1561 g_numberValues[NUM_0].f32 = borderWidth[NUM_0];
1562 g_numberValues[NUM_1].f32 = borderWidth[NUM_1];
1563 g_numberValues[NUM_2].f32 = borderWidth[NUM_2];
1564 g_numberValues[NUM_3].f32 = borderWidth[NUM_3];
1565 return &g_attributeItem;
1566 }
1567
SetBorderRadius(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1568 int32_t SetBorderRadius(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1569 {
1570 if (item->size == 0) {
1571 return ERROR_CODE_PARAM_INVALID;
1572 }
1573 // already check in entry point.
1574 auto* fullImpl = GetFullImpl();
1575 float radiusVals[ALLOW_SIZE_4] = { NUM_1, NUM_1, NUM_1, NUM_1 };
1576 int32_t unit = GetDefaultUnit(node, UNIT_VP);
1577 int radiusUnits[ALLOW_SIZE_4] = { unit, unit, unit, unit };
1578
1579 if (item->size == 1) {
1580 if (LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
1581 return ERROR_CODE_PARAM_INVALID;
1582 }
1583 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1584 radiusVals[i] = item->value[NUM_0].f32;
1585 }
1586 } else if (item->size == ALLOW_SIZE_4) {
1587 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1588 if (LessNotEqual(item->value[i].f32, 0.0f)) {
1589 return ERROR_CODE_PARAM_INVALID;
1590 } else {
1591 radiusVals[i] = item->value[i].f32;
1592 }
1593 }
1594 } else {
1595 return ERROR_CODE_PARAM_INVALID;
1596 }
1597 if (node->type == ARKUI_NODE_IMAGE) {
1598 fullImpl->getNodeModifiers()->getImageModifier()->setImageBorderRadius(
1599 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1600 } else if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1601 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderRadius(
1602 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1603 } else if (node->type == ARKUI_NODE_IMAGE_SPAN) {
1604 fullImpl->getNodeModifiers()->getImageSpanModifier()->setImageSpanBorderRadius(
1605 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1606 } else {
1607 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderRadius(
1608 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1609 }
1610 return ERROR_CODE_NO_ERROR;
1611 }
1612
ResetBorderRadius(ArkUI_NodeHandle node)1613 void ResetBorderRadius(ArkUI_NodeHandle node)
1614 {
1615 auto* fullImpl = GetFullImpl();
1616 if (node->type == ARKUI_NODE_IMAGE) {
1617 fullImpl->getNodeModifiers()->getImageModifier()->resetImageBorderRadius(node->uiNodeHandle);
1618 } else if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1619 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaBorderRadius(node->uiNodeHandle);
1620 } else if (node->type == ARKUI_NODE_IMAGE_SPAN) {
1621 fullImpl->getNodeModifiers()->getImageSpanModifier()->resetImageSpanBorderRadius(node->uiNodeHandle);
1622 } else {
1623 fullImpl->getNodeModifiers()->getCommonModifier()->resetBorderRadius(node->uiNodeHandle);
1624 }
1625 }
1626
GetBorderRadius(ArkUI_NodeHandle node)1627 const ArkUI_AttributeItem* GetBorderRadius(ArkUI_NodeHandle node)
1628 {
1629 auto* fullImpl = GetFullImpl();
1630 ArkUI_Float32 borderRadius[NUM_4];
1631 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
1632 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderRadius(node->uiNodeHandle, &borderRadius, unit);
1633 g_numberValues[NUM_0].f32 = borderRadius[NUM_0];
1634 g_numberValues[NUM_1].f32 = borderRadius[NUM_1];
1635 g_numberValues[NUM_2].f32 = borderRadius[NUM_2];
1636 g_numberValues[NUM_3].f32 = borderRadius[NUM_3];
1637 return &g_attributeItem;
1638 }
1639
SetBorderWidthPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1640 int32_t SetBorderWidthPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1641 {
1642 if (item->size == 0) {
1643 return ERROR_CODE_PARAM_INVALID;
1644 }
1645 // already check in entry point.
1646 auto* fullImpl = GetFullImpl();
1647 float widthVals[ALLOW_SIZE_4] = { 0, 0, 0, 0 };
1648 int widthUnits[ALLOW_SIZE_4] = { UNIT_PERCENT, UNIT_PERCENT, UNIT_PERCENT, UNIT_PERCENT };
1649
1650 if (item->size == 1) {
1651 if (LessNotEqual(item->value[0].f32, 0.0f)) {
1652 return ERROR_CODE_PARAM_INVALID;
1653 }
1654 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1655 widthVals[i] = item->value[0].f32;
1656 }
1657 } else if (item->size == ALLOW_SIZE_4) {
1658 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1659 if (LessNotEqual(item->value[i].f32, 0.0f)) {
1660 return ERROR_CODE_PARAM_INVALID;
1661 } else {
1662 widthVals[i] = item->value[i].f32;
1663 }
1664 }
1665 } else {
1666 return ERROR_CODE_PARAM_INVALID;
1667 }
1668 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1669 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderWidth(
1670 node->uiNodeHandle, widthVals, widthUnits, ALLOW_SIZE_4);
1671 } else {
1672 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderWidth(
1673 node->uiNodeHandle, widthVals, widthUnits, ALLOW_SIZE_4);
1674 }
1675 return ERROR_CODE_NO_ERROR;
1676 }
1677
ResetBorderWidthPercent(ArkUI_NodeHandle node)1678 void ResetBorderWidthPercent(ArkUI_NodeHandle node)
1679 {
1680 ResetBorderWidth(node);
1681 }
1682
GetBorderWidthPercent(ArkUI_NodeHandle node)1683 const ArkUI_AttributeItem* GetBorderWidthPercent(ArkUI_NodeHandle node)
1684 {
1685 auto* fullImpl = GetFullImpl();
1686 ArkUI_Float32 borderWidth[NUM_4];
1687 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderWidth(node->uiNodeHandle, &borderWidth, UNIT_PERCENT);
1688 g_numberValues[NUM_0].f32 = borderWidth[NUM_0];
1689 g_numberValues[NUM_1].f32 = borderWidth[NUM_1];
1690 g_numberValues[NUM_2].f32 = borderWidth[NUM_2];
1691 g_numberValues[NUM_3].f32 = borderWidth[NUM_3];
1692 return &g_attributeItem;
1693 }
1694
SetBorderRadiusPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1695 int32_t SetBorderRadiusPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1696 {
1697 if (item->size == 0) {
1698 return ERROR_CODE_PARAM_INVALID;
1699 }
1700 // already check in entry point.
1701 auto* fullImpl = GetFullImpl();
1702 float radiusVals[ALLOW_SIZE_4] = { NUM_1, NUM_1, NUM_1, NUM_1 };
1703 int radiusUnits[ALLOW_SIZE_4] = { UNIT_PERCENT, UNIT_PERCENT, UNIT_PERCENT, UNIT_PERCENT };
1704
1705 if (item->size == 1) {
1706 if (LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
1707 return ERROR_CODE_PARAM_INVALID;
1708 }
1709 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1710 radiusVals[i] = item->value[NUM_0].f32;
1711 }
1712 } else if (item->size == ALLOW_SIZE_4) {
1713 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1714 if (LessNotEqual(item->value[i].f32, 0.0f)) {
1715 return ERROR_CODE_PARAM_INVALID;
1716 } else {
1717 radiusVals[i] = item->value[i].f32;
1718 }
1719 }
1720 } else {
1721 return ERROR_CODE_PARAM_INVALID;
1722 }
1723 if (node->type == ARKUI_NODE_IMAGE) {
1724 fullImpl->getNodeModifiers()->getImageModifier()->setImageBorderRadius(
1725 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1726 } else if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1727 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderRadius(
1728 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1729 } else {
1730 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderRadius(
1731 node->uiNodeHandle, radiusVals, radiusUnits, ALLOW_SIZE_4);
1732 }
1733 return ERROR_CODE_NO_ERROR;
1734 }
1735
ResetBorderRadiusPercent(ArkUI_NodeHandle node)1736 void ResetBorderRadiusPercent(ArkUI_NodeHandle node)
1737 {
1738 ResetBorderRadius(node);
1739 }
1740
GetBorderRadiusPercent(ArkUI_NodeHandle node)1741 const ArkUI_AttributeItem* GetBorderRadiusPercent(ArkUI_NodeHandle node)
1742 {
1743 auto* fullImpl = GetFullImpl();
1744 ArkUI_Float32 borderRadius[NUM_4];
1745 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderRadius(node->uiNodeHandle, &borderRadius, UNIT_PERCENT);
1746 g_numberValues[NUM_0].f32 = borderRadius[NUM_0];
1747 g_numberValues[NUM_1].f32 = borderRadius[NUM_1];
1748 g_numberValues[NUM_2].f32 = borderRadius[NUM_2];
1749 g_numberValues[NUM_3].f32 = borderRadius[NUM_3];
1750 return &g_attributeItem;
1751 }
1752
SetBorderColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1753 int32_t SetBorderColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1754 {
1755 if (item->size == 0) {
1756 return ERROR_CODE_PARAM_INVALID;
1757 }
1758 // already check in entry point.
1759 auto* fullImpl = GetFullImpl();
1760 uint32_t colors[ALLOW_SIZE_4] = { DEFAULT_COLOR, DEFAULT_COLOR, DEFAULT_COLOR, DEFAULT_COLOR };
1761 if (item->size == 1) {
1762 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1763 colors[i] = item->value[0].u32;
1764 }
1765 } else if (item->size == ALLOW_SIZE_4) {
1766 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1767 colors[i] = item->value[i].u32;
1768 }
1769 } else {
1770 return ERROR_CODE_PARAM_INVALID;
1771 }
1772 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1773 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderColor(
1774 node->uiNodeHandle, colors[NUM_0], colors[NUM_1], colors[NUM_2], colors[NUM_3]);
1775 } else {
1776 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderColor(
1777 node->uiNodeHandle, colors[NUM_0], colors[NUM_1], colors[NUM_2], colors[NUM_3]);
1778 }
1779 return ERROR_CODE_NO_ERROR;
1780 }
1781
ResetBorderColor(ArkUI_NodeHandle node)1782 void ResetBorderColor(ArkUI_NodeHandle node)
1783 {
1784 auto* fullImpl = GetFullImpl();
1785 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1786 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaBorderColor(node->uiNodeHandle);
1787 } else {
1788 fullImpl->getNodeModifiers()->getCommonModifier()->resetBorderColor(node->uiNodeHandle);
1789 }
1790 }
1791
GetBorderColor(ArkUI_NodeHandle node)1792 const ArkUI_AttributeItem* GetBorderColor(ArkUI_NodeHandle node)
1793 {
1794 auto* fullImpl = GetFullImpl();
1795 ArkUI_Uint32 colors[NUM_4];
1796 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderColor(node->uiNodeHandle, &colors);
1797 g_numberValues[NUM_0].u32 = colors[NUM_0];
1798 g_numberValues[NUM_1].u32 = colors[NUM_1];
1799 g_numberValues[NUM_2].u32 = colors[NUM_2];
1800 g_numberValues[NUM_3].u32 = colors[NUM_3];
1801 return &g_attributeItem;
1802 }
1803
SetBorderStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1804 int32_t SetBorderStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1805 {
1806 if (item->size == 0) {
1807 return ERROR_CODE_PARAM_INVALID;
1808 }
1809 // already check in entry point.
1810 auto* fullImpl = GetFullImpl();
1811 int styles[ALLOW_SIZE_4] = { 0, 0, 0, 0 };
1812 if (item->size == 1) {
1813 if (item->value[0].i32 < ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID ||
1814 item->value[0].i32 > ArkUI_BorderStyle::ARKUI_BORDER_STYLE_DOTTED) {
1815 return ERROR_CODE_PARAM_INVALID;
1816 }
1817 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1818 styles[i] = item->value[0].i32;
1819 }
1820 } else if (item->size == ALLOW_SIZE_4) {
1821 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
1822 if (item->value[i].i32 < ArkUI_BorderStyle::ARKUI_BORDER_STYLE_SOLID ||
1823 item->value[i].i32 > ArkUI_BorderStyle::ARKUI_BORDER_STYLE_DOTTED) {
1824 return ERROR_CODE_PARAM_INVALID;
1825 } else {
1826 styles[i] = item->value[i].i32;
1827 }
1828 }
1829 } else {
1830 return ERROR_CODE_PARAM_INVALID;
1831 }
1832 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1833 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaBorderStyle(
1834 node->uiNodeHandle, styles, ALLOW_SIZE_4);
1835 } else {
1836 fullImpl->getNodeModifiers()->getCommonModifier()->setBorderStyle(node->uiNodeHandle, styles, ALLOW_SIZE_4);
1837 }
1838 return ERROR_CODE_NO_ERROR;
1839 }
1840
ResetBorderStyle(ArkUI_NodeHandle node)1841 void ResetBorderStyle(ArkUI_NodeHandle node)
1842 {
1843 auto* fullImpl = GetFullImpl();
1844 if (node->type == ARKUI_NODE_TEXT_INPUT || node->type == ARKUI_NODE_TEXT_AREA) {
1845 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaBorderStyle(node->uiNodeHandle);
1846 } else {
1847 fullImpl->getNodeModifiers()->getCommonModifier()->resetBorderStyle(node->uiNodeHandle);
1848 }
1849 }
1850
GetBorderStyle(ArkUI_NodeHandle node)1851 const ArkUI_AttributeItem* GetBorderStyle(ArkUI_NodeHandle node)
1852 {
1853 auto* fullImpl = GetFullImpl();
1854 ArkUI_Int32 styles[NUM_4];
1855 fullImpl->getNodeModifiers()->getCommonModifier()->getBorderStyle(node->uiNodeHandle, &styles);
1856 g_numberValues[NUM_0].i32 = styles[NUM_0];
1857 g_numberValues[NUM_1].i32 = styles[NUM_1];
1858 g_numberValues[NUM_2].i32 = styles[NUM_2];
1859 g_numberValues[NUM_3].i32 = styles[NUM_3];
1860 return &g_attributeItem;
1861 }
1862
SetZIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1863 int32_t SetZIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1864 {
1865 if (item->size == 0) {
1866 return ERROR_CODE_PARAM_INVALID;
1867 }
1868 // already check in entry point.
1869 auto* fullImpl = GetFullImpl();
1870 fullImpl->getNodeModifiers()->getCommonModifier()->setZIndex(node->uiNodeHandle, item->value[0].i32);
1871 return ERROR_CODE_NO_ERROR;
1872 }
1873
ResetZIndex(ArkUI_NodeHandle node)1874 void ResetZIndex(ArkUI_NodeHandle node)
1875 {
1876 auto* fullImpl = GetFullImpl();
1877 fullImpl->getNodeModifiers()->getCommonModifier()->resetZIndex(node->uiNodeHandle);
1878 }
1879
GetZIndex(ArkUI_NodeHandle node)1880 const ArkUI_AttributeItem* GetZIndex(ArkUI_NodeHandle node)
1881 {
1882 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1883 g_numberValues[0].i32 = modifier->getZIndex(node->uiNodeHandle);
1884 return &g_attributeItem;
1885 }
1886
SetVisibility(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1887 int32_t SetVisibility(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1888 {
1889 if (item->size == 0) {
1890 return ERROR_CODE_PARAM_INVALID;
1891 }
1892 if (item->value[0].i32 < ArkUI_Visibility::ARKUI_VISIBILITY_VISIBLE ||
1893 item->value[0].i32 > ArkUI_Visibility::ARKUI_VISIBILITY_NONE) {
1894 return ERROR_CODE_PARAM_INVALID;
1895 }
1896 // already check in entry point.
1897 auto* fullImpl = GetFullImpl();
1898 fullImpl->getNodeModifiers()->getCommonModifier()->setVisibility(node->uiNodeHandle, item->value[0].i32);
1899 return ERROR_CODE_NO_ERROR;
1900 }
1901
ResetVisibility(ArkUI_NodeHandle node)1902 void ResetVisibility(ArkUI_NodeHandle node)
1903 {
1904 auto* fullImpl = GetFullImpl();
1905 fullImpl->getNodeModifiers()->getCommonModifier()->resetVisibility(node->uiNodeHandle);
1906 }
1907
GetVisibility(ArkUI_NodeHandle node)1908 const ArkUI_AttributeItem* GetVisibility(ArkUI_NodeHandle node)
1909 {
1910 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1911 g_numberValues[0].i32 = modifier->getVisibility(node->uiNodeHandle);
1912 return &g_attributeItem;
1913 }
1914
SetClip(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1915 int32_t SetClip(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1916 {
1917 if (item->size == 0) {
1918 return ERROR_CODE_PARAM_INVALID;
1919 }
1920 if (item->value[0].i32 < NUM_0 || item->value[0].i32 > NUM_1) {
1921 return ERROR_CODE_PARAM_INVALID;
1922 }
1923 auto* fullImpl = GetFullImpl();
1924 fullImpl->getNodeModifiers()->getCommonModifier()->setClip(node->uiNodeHandle, item->value[0].i32);
1925 return ERROR_CODE_NO_ERROR;
1926 }
1927
ResetClip(ArkUI_NodeHandle node)1928 void ResetClip(ArkUI_NodeHandle node)
1929 {
1930 auto* fullImpl = GetFullImpl();
1931 fullImpl->getNodeModifiers()->getCommonModifier()->resetClip(node->uiNodeHandle);
1932 }
1933
GetClip(ArkUI_NodeHandle node)1934 const ArkUI_AttributeItem* GetClip(ArkUI_NodeHandle node)
1935 {
1936 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
1937 g_numberValues[0].i32 = modifier->getClip(node->uiNodeHandle);
1938 return &g_attributeItem;
1939 }
1940
SetClipShape(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)1941 int32_t SetClipShape(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
1942 {
1943 if (item->size == 0) {
1944 return ERROR_CODE_PARAM_INVALID;
1945 }
1946 if (!InRegion(NUM_0, NUM_3, item->value[NUM_0].i32)) {
1947 return ERROR_CODE_PARAM_INVALID;
1948 }
1949 auto* fullImpl = GetFullImpl();
1950 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
1951 if (item->value[0].i32 == ArkUI_ClipType::ARKUI_CLIP_TYPE_PATH) {
1952 if (item->string == nullptr) {
1953 return ERROR_CODE_PARAM_INVALID;
1954 }
1955 ArkUI_Float32 pathAttributes[NUM_2];
1956 if (LessNotEqual(item->value[NUM_1].f32, 0.0f) || LessNotEqual(item->value[NUM_2].f32, 0.0f)) {
1957 return ERROR_CODE_PARAM_INVALID;
1958 } else {
1959 pathAttributes[NUM_0] = item->value[NUM_1].f32;
1960 pathAttributes[NUM_1] = item->value[NUM_2].f32;
1961 }
1962 fullImpl->getNodeModifiers()->getCommonModifier()->setClipPath(
1963 node->uiNodeHandle, "path", &pathAttributes, item->string, unit);
1964 } else {
1965 ArkUI_Float32 attributes[item->size - NUM_1];
1966 for (int i = NUM_1; i < item->size; i++) {
1967 if (LessNotEqual(item->value[i].f32, 0.0f)) {
1968 return ERROR_CODE_PARAM_INVALID;
1969 } else {
1970 attributes[i - NUM_1] = item->value[i].f32;
1971 }
1972 }
1973 fullImpl->getNodeModifiers()->getCommonModifier()->setClipShape(
1974 node->uiNodeHandle, ShapeToString(item->value[0].i32).c_str(), attributes, item->size - NUM_1, unit);
1975 }
1976 return ERROR_CODE_NO_ERROR;
1977 }
1978
ResetClipShape(ArkUI_NodeHandle node)1979 void ResetClipShape(ArkUI_NodeHandle node)
1980 {
1981 auto* fullImpl = GetFullImpl();
1982 fullImpl->getNodeModifiers()->getCommonModifier()->resetClip(node->uiNodeHandle);
1983 }
1984
GetClipShape(ArkUI_NodeHandle node)1985 const ArkUI_AttributeItem* GetClipShape(ArkUI_NodeHandle node)
1986 {
1987 ArkUIClipShapeOptions options;
1988 auto unit = GetDefaultUnit(node, UNIT_VP);
1989 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getClipShape(node->uiNodeHandle, &options, unit);
1990 int type = options.type;
1991 if (type == static_cast<ArkUI_Int32>(BasicShapeType::RECT)) {
1992 g_numberValues[NUM_0].i32 = static_cast<ArkUI_Int32>(ArkUI_ClipType::ARKUI_CLIP_TYPE_RECTANGLE);
1993 g_numberValues[NUM_1].f32 = options.width;
1994 g_numberValues[NUM_2].f32 = options.height;
1995 g_numberValues[NUM_3].f32 = options.radiusWidth;
1996 g_numberValues[NUM_4].f32 = options.radiusHeight;
1997 g_numberValues[NUM_5].f32 = options.topLeftRadius;
1998 g_numberValues[NUM_6].f32 = options.bottomLeftRadius;
1999 g_numberValues[NUM_7].f32 = options.topRightRadius;
2000 g_numberValues[NUM_8].f32 = options.bottomRightRadius;
2001 } else if (type == static_cast<ArkUI_Int32>(BasicShapeType::CIRCLE)) {
2002 g_numberValues[NUM_0].i32 = static_cast<ArkUI_Int32>(ArkUI_ClipType::ARKUI_CLIP_TYPE_CIRCLE);
2003 g_numberValues[NUM_1].f32 = options.width;
2004 g_numberValues[NUM_2].f32 = options.height;
2005 } else if (type == static_cast<ArkUI_Int32>(BasicShapeType::ELLIPSE)) {
2006 g_numberValues[NUM_0].i32 = static_cast<ArkUI_Int32>(ArkUI_ClipType::ARKUI_CLIP_TYPE_ELLIPSE);
2007 g_numberValues[NUM_1].f32 = options.width;
2008 g_numberValues[NUM_2].f32 = options.height;
2009 } else if (type == static_cast<ArkUI_Int32>(BasicShapeType::PATH)) {
2010 g_numberValues[NUM_0].i32 = static_cast<ArkUI_Int32>(ArkUI_ClipType::ARKUI_CLIP_TYPE_PATH);
2011 g_numberValues[NUM_1].f32 = options.width;
2012 g_numberValues[NUM_2].f32 = options.height;
2013 g_attributeItem.string = options.commands;
2014 } else {
2015 return nullptr;
2016 }
2017 return &g_attributeItem;
2018 }
2019
SetTransform(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2020 int32_t SetTransform(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2021 {
2022 if (item->size == 0) {
2023 return ERROR_CODE_PARAM_INVALID;
2024 }
2025 // already check in entry point.
2026 auto* fullImpl = GetFullImpl();
2027 float transforms[ALLOW_SIZE_16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
2028 for (int i = 0; i < item->size; ++i) {
2029 transforms[i] = item->value[i].f32;
2030 }
2031 fullImpl->getNodeModifiers()->getCommonModifier()->setTransform(node->uiNodeHandle, transforms, ALLOW_SIZE_16);
2032 return ERROR_CODE_NO_ERROR;
2033 }
2034
ResetTransform(ArkUI_NodeHandle node)2035 void ResetTransform(ArkUI_NodeHandle node)
2036 {
2037 auto* fullImpl = GetFullImpl();
2038 fullImpl->getNodeModifiers()->getCommonModifier()->resetTransform(node->uiNodeHandle);
2039 }
2040
GetTransform(ArkUI_NodeHandle node)2041 const ArkUI_AttributeItem* GetTransform(ArkUI_NodeHandle node)
2042 {
2043 ArkUI_Float32 values[NUM_16];
2044 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getTransform(node->uiNodeHandle, &values);
2045 for (int i = 0; i < NUM_16; i++) {
2046 g_numberValues[i].f32 = values[i];
2047 }
2048 return &g_attributeItem;
2049 }
2050
SetHitTestBehavior(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2051 int32_t SetHitTestBehavior(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2052 {
2053 if (item->size == 0) {
2054 return ERROR_CODE_PARAM_INVALID;
2055 }
2056 if (item->value[0].i32 < ArkUI_HitTestMode::ARKUI_HIT_TEST_MODE_DEFAULT ||
2057 item->value[0].i32 > ArkUI_HitTestMode::ARKUI_HIT_TEST_MODE_NONE) {
2058 return ERROR_CODE_PARAM_INVALID;
2059 }
2060 // already check in entry point.
2061 auto* fullImpl = GetFullImpl();
2062 fullImpl->getNodeModifiers()->getCommonModifier()->setHitTestBehavior(node->uiNodeHandle, item->value[0].i32);
2063 return ERROR_CODE_NO_ERROR;
2064 }
2065
ResetHitTestBehavior(ArkUI_NodeHandle node)2066 void ResetHitTestBehavior(ArkUI_NodeHandle node)
2067 {
2068 auto* fullImpl = GetFullImpl();
2069 fullImpl->getNodeModifiers()->getCommonModifier()->resetHitTestBehavior(node->uiNodeHandle);
2070 }
2071
GetHitTestBehavior(ArkUI_NodeHandle node)2072 const ArkUI_AttributeItem* GetHitTestBehavior(ArkUI_NodeHandle node)
2073 {
2074 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
2075 g_numberValues[0].i32 = modifier->getHitTestBehavior(node->uiNodeHandle);
2076 return &g_attributeItem;
2077 }
2078
SetPosition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2079 int32_t SetPosition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2080 {
2081 if (item->size == 0 && item->size != ALLOW_SIZE_2) {
2082 return ERROR_CODE_PARAM_INVALID;
2083 }
2084 // already check in entry point.
2085 auto* fullImpl = GetFullImpl();
2086 int32_t unit = GetDefaultUnit(node, UNIT_VP);
2087 fullImpl->getNodeModifiers()->getCommonModifier()->setPosition(
2088 node->uiNodeHandle, item->value[0].f32, unit, item->value[1].f32, unit);
2089 return ERROR_CODE_NO_ERROR;
2090 }
2091
ResetPosition(ArkUI_NodeHandle node)2092 void ResetPosition(ArkUI_NodeHandle node)
2093 {
2094 auto* fullImpl = GetFullImpl();
2095 fullImpl->getNodeModifiers()->getCommonModifier()->resetPosition(node->uiNodeHandle);
2096 }
2097
GetPosition(ArkUI_NodeHandle node)2098 const ArkUI_AttributeItem* GetPosition(ArkUI_NodeHandle node)
2099 {
2100 ArkUIPositionOptions options;
2101 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
2102 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getPosition(node->uiNodeHandle, &options, unit);
2103 g_numberValues[NUM_0].f32 = options.x;
2104 g_numberValues[NUM_1].f32 = options.y;
2105 return &g_attributeItem;
2106 }
2107
SetShadow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2108 int32_t SetShadow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2109 {
2110 if (item->size == 0) {
2111 return ERROR_CODE_PARAM_INVALID;
2112 }
2113 if (item->value[0].i32 < ArkUI_ShadowStyle::ARKUI_SHADOW_STYLE_OUTER_DEFAULT_XS ||
2114 item->value[0].i32 > ArkUI_ShadowStyle::ARKUI_SHADOW_STYLE_OUTER_FLOATING_MD) {
2115 return ERROR_CODE_PARAM_INVALID;
2116 }
2117 auto* fullImpl = GetFullImpl();
2118 ArkUIInt32orFloat32 shadows[NUM_1] = { {.i32 = ArkUI_ShadowStyle::ARKUI_SHADOW_STYLE_OUTER_DEFAULT_XS} };
2119 shadows[NUM_0].i32 = item->value[0].i32;
2120 fullImpl->getNodeModifiers()->getCommonModifier()->setBackShadow(node->uiNodeHandle, shadows, ALLOW_SIZE_1);
2121 return ERROR_CODE_NO_ERROR;
2122 }
2123
ResetShadow(ArkUI_NodeHandle node)2124 void ResetShadow(ArkUI_NodeHandle node)
2125 {
2126 auto* fullImpl = GetFullImpl();
2127 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackShadow(node->uiNodeHandle);
2128 }
2129
GetShadow(ArkUI_NodeHandle node)2130 const ArkUI_AttributeItem* GetShadow(ArkUI_NodeHandle node)
2131 {
2132 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
2133 g_numberValues[0].i32 = modifier->getShadow(node->uiNodeHandle);
2134 return &g_attributeItem;
2135 }
2136
SetCustomShadow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2137 int32_t SetCustomShadow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2138 {
2139 if (item->size == 0) {
2140 return ERROR_CODE_PARAM_INVALID;
2141 }
2142 auto* fullImpl = GetFullImpl();
2143 ArkUIInt32orFloat32 shadows[ALLOW_SIZE_7] = { 0, { .i32 = NUM_2 }, 0, 0, { .i32 = 0 }, { .u32 = 0 }, { .i32 = 0 } };
2144 int length = item->size;
2145 if (length > NUM_0) {
2146 if (LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
2147 return ERROR_CODE_PARAM_INVALID;
2148 }
2149 shadows[NUM_0].f32 = item->value[NUM_0].f32; // radius
2150 }
2151 if (length > NUM_2) {
2152 shadows[NUM_2].f32 = item->value[NUM_2].f32; // OffsetX
2153 }
2154 if (length > NUM_3) {
2155 shadows[NUM_3].f32 = item->value[NUM_3].f32; // OffsetY
2156 }
2157 if (length > NUM_4) {
2158 if (!InRegion(NUM_0, NUM_1, item->value[NUM_4].i32)) {
2159 return ERROR_CODE_PARAM_INVALID;
2160 }
2161 shadows[NUM_4].i32 = item->value[NUM_4].i32;
2162 }
2163 if (length > NUM_5) {
2164 if (item->value[NUM_1].i32) {
2165 if (!InRegion(NUM_0, NUM_2, item->value[NUM_5].i32)) {
2166 return ERROR_CODE_PARAM_INVALID;
2167 }
2168 shadows[NUM_1].i32 = COLOR_STRATEGY_STYLE;
2169 shadows[NUM_5].i32 = item->value[NUM_5].i32;
2170 } else {
2171 shadows[NUM_1].i32 = COLOR_STYLE;
2172 shadows[NUM_5].u32 = item->value[NUM_5].u32;
2173 }
2174 }
2175 if (length > NUM_6) {
2176 shadows[NUM_6].i32 = item->value[NUM_6].i32;
2177 }
2178 fullImpl->getNodeModifiers()->getCommonModifier()->setBackShadow(node->uiNodeHandle, shadows, ALLOW_SIZE_7);
2179 return ERROR_CODE_NO_ERROR;
2180 }
2181
ResetCustomShadow(ArkUI_NodeHandle node)2182 void ResetCustomShadow(ArkUI_NodeHandle node)
2183 {
2184 auto* fullImpl = GetFullImpl();
2185 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackShadow(node->uiNodeHandle);
2186 }
2187
GetCustomShadow(ArkUI_NodeHandle node)2188 const ArkUI_AttributeItem* GetCustomShadow(ArkUI_NodeHandle node)
2189 {
2190 ArkUICustomShadowOptions options;
2191 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getCustomShadow(node->uiNodeHandle, &options);
2192 g_numberValues[NUM_0].f32 = options.radius;
2193 g_numberValues[NUM_1].i32 = options.colorStrategy;
2194 g_numberValues[NUM_2].f32 = options.offsetX;
2195 g_numberValues[NUM_3].f32 = options.offsetY;
2196 g_numberValues[NUM_4].i32 = options.shadowType;
2197 g_numberValues[NUM_5].u32 = options.color;
2198 g_numberValues[NUM_6].i32 = options.fill;
2199 return &g_attributeItem;
2200 }
2201
SetFocusable(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2202 int32_t SetFocusable(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2203 {
2204 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
2205 return ERROR_CODE_PARAM_INVALID;
2206 }
2207 auto* fullImpl = GetFullImpl();
2208 fullImpl->getNodeModifiers()->getCommonModifier()->setFocusable(node->uiNodeHandle, item->value[0].i32);
2209 return ERROR_CODE_NO_ERROR;
2210 }
2211
GetFocusable(ArkUI_NodeHandle node)2212 const ArkUI_AttributeItem* GetFocusable(ArkUI_NodeHandle node)
2213 {
2214 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getFocusable(node->uiNodeHandle);
2215 g_numberValues[0].i32 = resultValue;
2216 return &g_attributeItem;
2217 }
2218
ResetFocusable(ArkUI_NodeHandle node)2219 void ResetFocusable(ArkUI_NodeHandle node)
2220 {
2221 auto* fullImpl = GetFullImpl();
2222 fullImpl->getNodeModifiers()->getCommonModifier()->resetFocusable(node->uiNodeHandle);
2223 }
2224
SetAccessibilityGroup(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2225 int32_t SetAccessibilityGroup(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2226 {
2227 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
2228 return ERROR_CODE_PARAM_INVALID;
2229 }
2230 auto* fullImpl = GetFullImpl();
2231 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityGroup(node->uiNodeHandle, item->value[0].i32);
2232 return ERROR_CODE_NO_ERROR;
2233 }
2234
GetAccessibilityGroup(ArkUI_NodeHandle node)2235 const ArkUI_AttributeItem* GetAccessibilityGroup(ArkUI_NodeHandle node)
2236 {
2237 auto resultValue =
2238 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getAccessibilityGroup(node->uiNodeHandle);
2239 g_numberValues[0].i32 = resultValue;
2240 return &g_attributeItem;
2241 }
2242
ResetAccessibilityGroup(ArkUI_NodeHandle node)2243 void ResetAccessibilityGroup(ArkUI_NodeHandle node)
2244 {
2245 auto* fullImpl = GetFullImpl();
2246 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityGroup(node->uiNodeHandle);
2247 }
2248
SetAccessibilityText(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2249 int32_t SetAccessibilityText(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2250 {
2251 if (item->string == nullptr) {
2252 return ERROR_CODE_PARAM_INVALID;
2253 }
2254 auto* fullImpl = GetFullImpl();
2255 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityText(node->uiNodeHandle, item->string);
2256 return ERROR_CODE_NO_ERROR;
2257 }
2258
GetAccessibilityText(ArkUI_NodeHandle node)2259 const ArkUI_AttributeItem* GetAccessibilityText(ArkUI_NodeHandle node)
2260 {
2261 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getAccessibilityText(node->uiNodeHandle);
2262 g_attributeItem.string = resultValue;
2263 g_attributeItem.size = 0;
2264 return &g_attributeItem;
2265 }
2266
ResetAccessibilityText(ArkUI_NodeHandle node)2267 void ResetAccessibilityText(ArkUI_NodeHandle node)
2268 {
2269 auto* fullImpl = GetFullImpl();
2270 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityText(node->uiNodeHandle);
2271 }
2272
SetAccessibilityLevel(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2273 int32_t SetAccessibilityLevel(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2274 {
2275 if (item->size == 0 || !CheckAttributeIsAccessibilityLevel(item->value[0].i32)) {
2276 return ERROR_CODE_PARAM_INVALID;
2277 }
2278 auto* fullImpl = GetFullImpl();
2279 auto levelString = ACCESSIBILITY_LEVEL_VECTOR[item->value[0].i32];
2280 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityLevel(node->uiNodeHandle, levelString.c_str());
2281 return ERROR_CODE_NO_ERROR;
2282 }
2283
GetAccessibilityLevel(ArkUI_NodeHandle node)2284 const ArkUI_AttributeItem* GetAccessibilityLevel(ArkUI_NodeHandle node)
2285 {
2286 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getAccessibilityLevel(
2287 node->uiNodeHandle);
2288 std::string levelString(resultValue);
2289 g_numberValues[0].i32 = ACCESSIBILITY_LEVEL_MAP[levelString];
2290 return &g_attributeItem;
2291 }
2292
ResetAccessibilityLevel(ArkUI_NodeHandle node)2293 void ResetAccessibilityLevel(ArkUI_NodeHandle node)
2294 {
2295 auto* fullImpl = GetFullImpl();
2296 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityLevel(node->uiNodeHandle);
2297 }
2298
SetAccessibilityDescription(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2299 int32_t SetAccessibilityDescription(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2300 {
2301 if (item->string == nullptr) {
2302 return ERROR_CODE_PARAM_INVALID;
2303 }
2304 auto* fullImpl = GetFullImpl();
2305 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityDescription(node->uiNodeHandle, item->string);
2306 return ERROR_CODE_NO_ERROR;
2307 }
2308
GetAccessibilityDescription(ArkUI_NodeHandle node)2309 const ArkUI_AttributeItem* GetAccessibilityDescription(ArkUI_NodeHandle node)
2310 {
2311 auto resultValue =
2312 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getAccessibilityDescription(node->uiNodeHandle);
2313 g_attributeItem.string = resultValue;
2314 g_attributeItem.size = 0;
2315 return &g_attributeItem;
2316 }
2317
ResetAccessibilityDescription(ArkUI_NodeHandle node)2318 void ResetAccessibilityDescription(ArkUI_NodeHandle node)
2319 {
2320 auto* fullImpl = GetFullImpl();
2321 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityDescription(node->uiNodeHandle);
2322 }
2323
SetAccessibilityActions(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2324 int32_t SetAccessibilityActions(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2325 {
2326 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
2327 if (actualSize < 0) {
2328 return ERROR_CODE_PARAM_INVALID;
2329 }
2330 if (item->value[0].u32 > 0b11111) {
2331 return ERROR_CODE_PARAM_INVALID;
2332 }
2333 auto* fullImpl = GetFullImpl();
2334 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityActions(
2335 node->uiNodeHandle, item->value[0].u32);
2336 return ERROR_CODE_NO_ERROR;
2337 }
2338
ResetAccessibilityActions(ArkUI_NodeHandle node)2339 void ResetAccessibilityActions(ArkUI_NodeHandle node)
2340 {
2341 auto* fullImpl = GetFullImpl();
2342 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityActions(node->uiNodeHandle);
2343 }
2344
GetAccessibilityActions(ArkUI_NodeHandle node)2345 const ArkUI_AttributeItem* GetAccessibilityActions(ArkUI_NodeHandle node)
2346 {
2347 auto* fullImpl = GetFullImpl();
2348 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getCommonModifier()->getAccessibilityActions(
2349 node->uiNodeHandle);
2350 g_attributeItem.size = REQUIRED_ONE_PARAM;
2351 return &g_attributeItem;
2352 }
2353
SetAccessibilityRole(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2354 int32_t SetAccessibilityRole(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2355 {
2356 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
2357 if (actualSize < 0) {
2358 return ERROR_CODE_PARAM_INVALID;
2359 }
2360 std::string nodeTypeString = ConvertAccessibilityRole(item->value[0].u32);
2361 if (nodeTypeString == EMPTY_STR) {
2362 return ERROR_CODE_PARAM_INVALID;
2363 }
2364 auto* fullImpl = GetFullImpl();
2365 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityRole(
2366 node->uiNodeHandle, nodeTypeString.c_str());
2367 return ERROR_CODE_NO_ERROR;
2368 }
2369
ResetAccessibilityRole(ArkUI_NodeHandle node)2370 void ResetAccessibilityRole(ArkUI_NodeHandle node)
2371 {
2372 auto* fullImpl = GetFullImpl();
2373 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityRole(node->uiNodeHandle);
2374 }
2375
GetAccessibilityRole(ArkUI_NodeHandle node)2376 const ArkUI_AttributeItem* GetAccessibilityRole(ArkUI_NodeHandle node)
2377 {
2378 auto* fullImpl = GetFullImpl();
2379 std::string nodeTypeString = fullImpl->getNodeModifiers()->getCommonModifier()->getAccessibilityRole(
2380 node->uiNodeHandle);
2381 g_numberValues[0].u32 = static_cast<uint32_t>(UnConvertAccessibilityRole(nodeTypeString));
2382 g_attributeItem.size = REQUIRED_ONE_PARAM;
2383 return &g_attributeItem;
2384 }
2385
SetDefaultFocus(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2386 int32_t SetDefaultFocus(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2387 {
2388 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
2389 return ERROR_CODE_PARAM_INVALID;
2390 }
2391 auto* fullImpl = GetFullImpl();
2392 fullImpl->getNodeModifiers()->getCommonModifier()->setDefaultFocus(node->uiNodeHandle, item->value[0].i32);
2393 return ERROR_CODE_NO_ERROR;
2394 }
2395
GetDefaultFocus(ArkUI_NodeHandle node)2396 const ArkUI_AttributeItem* GetDefaultFocus(ArkUI_NodeHandle node)
2397 {
2398 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getDefaultFocus(node->uiNodeHandle);
2399 g_numberValues[0].i32 = resultValue;
2400 return &g_attributeItem;
2401 }
2402
ResetDefaultFocus(ArkUI_NodeHandle node)2403 void ResetDefaultFocus(ArkUI_NodeHandle node)
2404 {
2405 auto* fullImpl = GetFullImpl();
2406 fullImpl->getNodeModifiers()->getCommonModifier()->resetDefaultFocus(node->uiNodeHandle);
2407 }
2408
SetResponseRegion(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2409 int32_t SetResponseRegion(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2410 {
2411 if (item->size == 0 || item->size % NUM_4 > 0) {
2412 return ERROR_CODE_PARAM_INVALID;
2413 }
2414 auto* fullImpl = GetFullImpl();
2415
2416 std::vector<float> valuesArray;
2417 std::vector<int> unitsArray;
2418
2419 for (int i = 0; i < item->size; i++) {
2420 int remainder = i % NUM_4;
2421 valuesArray.push_back(remainder > 1 ? (item->value[i].f32) / HUNDRED : item->value[i].f32);
2422 // unit 1 3
2423 unitsArray.push_back(remainder > 1 ? NUM_3 : NUM_1);
2424 }
2425 fullImpl->getNodeModifiers()->getCommonModifier()->setResponseRegion(
2426 node->uiNodeHandle, valuesArray.data(), unitsArray.data(), valuesArray.size());
2427 return ERROR_CODE_NO_ERROR;
2428 }
2429
GetResponseRegion(ArkUI_NodeHandle node)2430 const ArkUI_AttributeItem* GetResponseRegion(ArkUI_NodeHandle node)
2431 {
2432 ArkUI_Float32 values[32];
2433 auto valueSize =
2434 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getResponseRegion(node->uiNodeHandle, &values);
2435 for (int i = 0; i < valueSize; i++) {
2436 g_numberValues[i].f32 = values[i];
2437 }
2438
2439 g_attributeItem.size = valueSize;
2440 return &g_attributeItem;
2441 }
2442
ResetResponseRegion(ArkUI_NodeHandle node)2443 void ResetResponseRegion(ArkUI_NodeHandle node)
2444 {
2445 auto* fullImpl = GetFullImpl();
2446 fullImpl->getNodeModifiers()->getCommonModifier()->resetResponseRegion(node->uiNodeHandle);
2447 }
2448
SetOverlay(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2449 int32_t SetOverlay(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2450 {
2451 if (item->string == nullptr) {
2452 return ERROR_CODE_PARAM_INVALID;
2453 }
2454 auto* fullImpl = GetFullImpl();
2455
2456 ArkUI_Float32 values[ALLOW_SIZE_10] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
2457
2458 if (item->size > 0) {
2459 values[0] = 1;
2460 if (!CheckAttributeIsAlignment(item->value[0].i32)) {
2461 return ERROR_CODE_PARAM_INVALID;
2462 }
2463 values[1] = item->value[0].i32;
2464 }
2465
2466 if (item->size > 1) {
2467 values[2] = 1;
2468 values[3] = item->value[1].f32;
2469 values[NUM_4] = GetDefaultUnit(node, UNIT_VP);
2470 }
2471
2472 if (item->size > 2) {
2473 values[5] = 1;
2474 values[6] = item->value[2].f32;
2475 values[NUM_7] = GetDefaultUnit(node, UNIT_VP);
2476 }
2477 values[8] = item->size > 0 ? 1 : 0;
2478 values[9] = item->size > 1 ? 1 : 0;
2479 fullImpl->getNodeModifiers()->getCommonModifier()->setOverlay(
2480 node->uiNodeHandle, item->string, values, ALLOW_SIZE_10);
2481 return ERROR_CODE_NO_ERROR;
2482 }
2483
GetOverlay(ArkUI_NodeHandle node)2484 const ArkUI_AttributeItem* GetOverlay(ArkUI_NodeHandle node)
2485 {
2486 ArkUIOverlayOptions options;
2487 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
2488 auto contentStr = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getOverlay(
2489 node->uiNodeHandle, &options, unit);
2490 g_attributeItem.string = contentStr;
2491 int index = 0;
2492 //index 0 : align
2493 g_numberValues[index++].i32 = options.align;
2494 //index 1 : offset x
2495 g_numberValues[index++].f32 = options.x;
2496 //index 2 : offset y
2497 g_numberValues[index++].f32 = options.y;
2498 g_attributeItem.size = index;
2499 return &g_attributeItem;
2500 }
2501
ResetOverlay(ArkUI_NodeHandle node)2502 void ResetOverlay(ArkUI_NodeHandle node)
2503 {
2504 auto* fullImpl = GetFullImpl();
2505 fullImpl->getNodeModifiers()->getCommonModifier()->resetOverlay(node->uiNodeHandle);
2506 }
2507
SetBackgroundImagePosition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2508 int32_t SetBackgroundImagePosition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2509 {
2510 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
2511 if (actualSize < 0) {
2512 return ERROR_CODE_PARAM_INVALID;
2513 }
2514 auto fullImpl = GetFullImpl();
2515 ArkUI_Float32 values[] = { item->value[NUM_0].f32, item->value[NUM_1].f32 };
2516 int32_t unit = GetDefaultUnit(node, UNIT_PX);
2517 ArkUI_Int32 units[] = { unit, unit };
2518
2519 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImagePosition(
2520 node->uiNodeHandle, values, units, false, NUM_2);
2521 return ERROR_CODE_NO_ERROR;
2522 }
2523
ResetBackgroundImagePosition(ArkUI_NodeHandle node)2524 void ResetBackgroundImagePosition(ArkUI_NodeHandle node)
2525 {
2526 auto* fullImpl = GetFullImpl();
2527
2528 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackgroundImagePosition(node->uiNodeHandle);
2529 }
2530
GetBackgroundImagePosition(ArkUI_NodeHandle node)2531 const ArkUI_AttributeItem* GetBackgroundImagePosition(ArkUI_NodeHandle node)
2532 {
2533 auto fullImpl = GetFullImpl();
2534 ArkUIPositionOptions positionOption = { 0.0f, 0.0f };
2535 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_PX);
2536 fullImpl->getNodeModifiers()->getCommonModifier()->getBackgroundImagePosition(node->uiNodeHandle,
2537 &positionOption, unit);
2538 g_numberValues[NUM_0].f32 = positionOption.x;
2539 g_numberValues[NUM_1].f32 = positionOption.y;
2540 g_attributeItem.size = NUM_2;
2541 return &g_attributeItem;
2542 }
2543
SetSweepGradient(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2544 int32_t SetSweepGradient(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2545 {
2546 if (item->size == 0) {
2547 return ERROR_CODE_PARAM_INVALID;
2548 }
2549 if (item->object == nullptr) {
2550 return ERROR_CODE_PARAM_INVALID;
2551 }
2552 auto* fullImpl = GetFullImpl();
2553 const ArkUI_ColorStop* colorStop = reinterpret_cast<ArkUI_ColorStop*>(item->object);
2554 int size = colorStop->size;
2555 ArkUIInt32orFloat32 colors[size * NUM_3];
2556 for (int i = 0; i < size; i++) {
2557 colors[i * NUM_3 + NUM_0].u32 = colorStop->colors[i];
2558 colors[i * NUM_3 + NUM_1].i32 = true;
2559 colors[i * NUM_3 + NUM_2].f32 = colorStop->stops[i];
2560 }
2561 int32_t unit = GetDefaultUnit(node, UNIT_VP);
2562 ArkUIInt32orFloat32 values[NUM_13] = {
2563 {.i32 = static_cast<ArkUI_Int32>(false)},
2564 {.f32 = static_cast<ArkUI_Float32>(DEFAULT_X)},
2565 {.i32 = static_cast<ArkUI_Int32>(unit)},
2566 {.i32 = static_cast<ArkUI_Int32>(false)},
2567 {.f32 = static_cast<ArkUI_Float32>(DEFAULT_Y)},
2568 {.i32 = static_cast<ArkUI_Int32>(unit)},
2569 {.i32 = static_cast<ArkUI_Int32>(false)},
2570 {.f32 = static_cast<ArkUI_Float32>(NUM_0)},
2571 {.i32 = static_cast<ArkUI_Int32>(false)},
2572 {.f32 = static_cast<ArkUI_Float32>(NUM_0)},
2573 {.i32 = static_cast<ArkUI_Int32>(false)},
2574 {.f32 = static_cast<ArkUI_Float32>(NUM_0)},
2575 {.i32 = static_cast<ArkUI_Int32>(false)}};
2576
2577 if (item->size > NUM_0) {
2578 values[NUM_0].i32 = static_cast<ArkUI_Int32>(true);
2579 values[NUM_1].f32 = item->value[NUM_0].f32;
2580 }
2581
2582 if (item->size > NUM_1) {
2583 values[NUM_3].i32 = static_cast<ArkUI_Int32>(true);
2584 values[NUM_4].f32 = item->value[NUM_1].f32;
2585 }
2586
2587 if (item->size > NUM_2) {
2588 values[NUM_6].i32 = static_cast<ArkUI_Int32>(true);
2589 values[NUM_7].f32 = item->value[NUM_2].f32;
2590 }
2591
2592 if (item->size > NUM_3) {
2593 values[NUM_8].i32 = static_cast<ArkUI_Int32>(true);
2594 values[NUM_9].f32 = item->value[NUM_3].f32;
2595 }
2596
2597 if (item->size > NUM_4) {
2598 values[NUM_10].i32 = static_cast<ArkUI_Int32>(true);
2599 values[NUM_11].f32 = item->value[NUM_4].f32;
2600 }
2601
2602 values[NUM_12].i32 = item->size > NUM_5 ? item->value[NUM_5].i32 : static_cast<ArkUI_Int32>(true);
2603
2604 fullImpl->getNodeModifiers()->getCommonModifier()->setSweepGradient(
2605 node->uiNodeHandle, values, NUM_13, colors, size * NUM_3);
2606 return ERROR_CODE_NO_ERROR;
2607 }
2608
ResetSweepGradient(ArkUI_NodeHandle node)2609 void ResetSweepGradient(ArkUI_NodeHandle node)
2610 {
2611 auto* fullImpl = GetFullImpl();
2612 fullImpl->getNodeModifiers()->getCommonModifier()->resetSweepGradient(node->uiNodeHandle);
2613 }
2614
GetSweepGradient(ArkUI_NodeHandle node)2615 const ArkUI_AttributeItem* GetSweepGradient(ArkUI_NodeHandle node)
2616 {
2617 //default size 6
2618 ArkUI_Float32 values[NUM_6];
2619 //default size 10
2620 ArkUI_Uint32 colors[NUM_10];
2621 //default size 10
2622 ArkUI_Float32 stops[NUM_10];
2623 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
2624 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getSweepGradient(
2625 node->uiNodeHandle, &values, &colors, &stops, unit);
2626 //centerX
2627 g_numberValues[NUM_0].f32 = values[NUM_0];
2628 //centerY
2629 g_numberValues[NUM_1].f32 = values[NUM_1];
2630 //startAngle
2631 g_numberValues[NUM_2].f32 = values[NUM_2];
2632 //endAngle
2633 g_numberValues[NUM_3].f32 = values[NUM_3];
2634 //rotation
2635 g_numberValues[NUM_4].f32 = values[NUM_4];
2636 //repeating
2637 g_numberValues[NUM_5].i32 = values[NUM_5];
2638 //size
2639 g_attributeItem.size = NUM_6;
2640 if (resultValue < NUM_1) {
2641 return &g_attributeItem;
2642 }
2643
2644 static ArkUI_ColorStop colorStop;
2645 static uint32_t gradientColors[NUM_10];
2646 static float gradientStops[NUM_10];
2647 for (int i = 0; i < resultValue; i++) {
2648 gradientColors[i] = colors[i];
2649 gradientStops[i] = stops[i] / 100.0f; //百分比转换为小数
2650 }
2651 colorStop.colors = gradientColors;
2652 colorStop.stops = gradientStops;
2653 colorStop.size = resultValue;
2654 g_attributeItem.object = &colorStop;
2655 return &g_attributeItem;
2656 }
2657
SetRadialGradient(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2658 int32_t SetRadialGradient(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2659 {
2660 if (item->size == 0) {
2661 return ERROR_CODE_PARAM_INVALID;
2662 }
2663 if (item->object == nullptr) {
2664 return ERROR_CODE_PARAM_INVALID;
2665 }
2666 auto* fullImpl = GetFullImpl();
2667 const ArkUI_ColorStop* colorStop = reinterpret_cast<ArkUI_ColorStop*>(item->object);
2668 int size = colorStop->size;
2669 ArkUIInt32orFloat32 colors[size * NUM_3];
2670 for (int i = 0; i < size; i++) {
2671 colors[i * NUM_3 + NUM_0].u32 = colorStop->colors[i];
2672 colors[i * NUM_3 + NUM_1].i32 = true;
2673 colors[i * NUM_3 + NUM_2].f32 = colorStop->stops[i];
2674 }
2675 int32_t unit = GetDefaultUnit(node, UNIT_VP);
2676 ArkUIInt32orFloat32 values[NUM_10] = {
2677 {.i32 = static_cast<ArkUI_Int32>(false) },
2678 {.f32 = static_cast<ArkUI_Float32>(DEFAULT_X) },
2679 {.i32 = static_cast<ArkUI_Float32>(unit) },
2680 {.i32 = static_cast<ArkUI_Int32>(false) },
2681 {.f32 = static_cast<ArkUI_Float32>(DEFAULT_Y) },
2682 {.i32 = static_cast<ArkUI_Float32>(unit) },
2683 {.i32 = static_cast<ArkUI_Int32>(false) },
2684 {.f32 = static_cast<ArkUI_Float32>(NUM_0) },
2685 {.i32 = static_cast<ArkUI_Float32>(unit) },
2686 {.i32 = static_cast<ArkUI_Int32>(false) }
2687 };
2688
2689 if (item->size > NUM_0) {
2690 values[NUM_0].i32 = static_cast<ArkUI_Int32>(true);
2691 values[NUM_1].f32 = item->value[NUM_0].f32;
2692 }
2693
2694 if (item->size > NUM_1) {
2695 values[NUM_3].i32 = static_cast<ArkUI_Int32>(true);
2696 values[NUM_4].f32 = item->value[NUM_1].f32;
2697 }
2698
2699 if (item->size > NUM_2) {
2700 values[NUM_6].i32 = static_cast<ArkUI_Int32>(true);
2701 values[NUM_7].f32 = item->value[NUM_2].f32;
2702 }
2703
2704 values[NUM_9].i32 = item->size > NUM_3 ? item->value[NUM_3].i32 : static_cast<ArkUI_Int32>(false);
2705 fullImpl->getNodeModifiers()->getCommonModifier()->setRadialGradient(
2706 node->uiNodeHandle, values, NUM_10, colors, size * NUM_3);
2707 return ERROR_CODE_NO_ERROR;
2708 }
2709
ResetRadialGradient(ArkUI_NodeHandle node)2710 void ResetRadialGradient(ArkUI_NodeHandle node)
2711 {
2712 auto* fullImpl = GetFullImpl();
2713 fullImpl->getNodeModifiers()->getCommonModifier()->resetRadialGradient(node->uiNodeHandle);
2714 }
2715
GetRadialGradient(ArkUI_NodeHandle node)2716 const ArkUI_AttributeItem* GetRadialGradient(ArkUI_NodeHandle node)
2717 {
2718 //default size 4
2719 ArkUI_Float32 values[NUM_4];
2720 //default size 10
2721 ArkUI_Uint32 colors[NUM_10];
2722 //default size 10
2723 ArkUI_Float32 stops[NUM_10];
2724
2725 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
2726 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getRadialGradient(
2727 node->uiNodeHandle, &values, &colors, &stops, unit);
2728 //centerX
2729 g_numberValues[NUM_0].f32 = values[NUM_0];
2730 //centerY
2731 g_numberValues[NUM_1].f32 = values[NUM_1];
2732 //radius
2733 g_numberValues[NUM_2].f32 = values[NUM_2];
2734 //repeating
2735 g_numberValues[NUM_3].i32 = values[NUM_3];
2736 //size
2737 g_attributeItem.size = NUM_3;
2738 if (resultValue < NUM_1) {
2739 return &g_attributeItem;
2740 }
2741
2742 static ArkUI_ColorStop colorStop;
2743 static uint32_t gradientColors[NUM_10];
2744 static float gradientStops[NUM_10];
2745 for (int i = 0; i < resultValue; i++) {
2746 gradientColors[i] = colors[i];
2747 gradientStops[i] = stops[i] / 100.0f; //百分比转换为小数
2748 }
2749 colorStop.colors = gradientColors;
2750 colorStop.stops = gradientStops;
2751 colorStop.size = resultValue;
2752 g_attributeItem.object = &colorStop;
2753 return &g_attributeItem;
2754 }
2755
SetMask(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2756 int32_t SetMask(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2757 {
2758 if (item->size < NUM_4) {
2759 return ERROR_CODE_PARAM_INVALID;
2760 }
2761 auto* fullImpl = GetFullImpl();
2762 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
2763 if (item->value[NUM_3].i32 == ArkUI_MaskType::ARKUI_MASK_TYPE_PATH) {
2764 if (item->string == nullptr) {
2765 return ERROR_CODE_PARAM_INVALID;
2766 }
2767 auto fill = item->size > NUM_0 ? item->value[0].u32 : DEFAULT_FIll_COLOR;
2768 auto stroke = item->size > NUM_1 ? item->value[NUM_1].u32 : DEFAULT_FIll_COLOR;
2769 float strokeWidth = item->size > NUM_2 ? item->value[NUM_2].f32 : NUM_0;
2770 ArkUI_Float32 pathAttributes[NUM_2];
2771 if (item->size < NUM_5 || LessNotEqual(item->value[NUM_4].f32, 0.0f)) {
2772 return ERROR_CODE_PARAM_INVALID;
2773 }
2774 pathAttributes[NUM_0] = item->value[NUM_4].f32; // path width
2775 if (item->size < NUM_6 || LessNotEqual(item->value[NUM_5].f32, 0.0f)) {
2776 return ERROR_CODE_PARAM_INVALID;
2777 }
2778 pathAttributes[NUM_1] = item->value[NUM_5].f32; // path height
2779 fullImpl->getNodeModifiers()->getCommonModifier()->setMaskPath(
2780 node->uiNodeHandle, "path", fill, stroke, strokeWidth, &pathAttributes, item->string, unit);
2781 } else if (item->value[0].i32 == ArkUI_MaskType::ARKUI_MASK_TYPE_PROGRESS) {
2782 ArkUI_Float32 progressAttributes[NUM_2];
2783 if (LessNotEqual(item->value[NUM_1].f32, 0.0f) || LessNotEqual(item->value[NUM_2].f32, 0.0f)) {
2784 return ERROR_CODE_PARAM_INVALID;
2785 }
2786 progressAttributes[NUM_0] = item->value[NUM_1].f32; // value
2787 progressAttributes[NUM_1] = item->value[NUM_2].f32; // total
2788 uint32_t color = item->value[NUM_3].u32;
2789 fullImpl->getNodeModifiers()->getCommonModifier()->setProgressMask(
2790 node->uiNodeHandle, progressAttributes, color);
2791 } else {
2792 if (item->size < NUM_6) {
2793 return ERROR_CODE_PARAM_INVALID;
2794 }
2795 auto fill = item->size > NUM_0 ? item->value[0].u32 : DEFAULT_FIll_COLOR;
2796 auto stroke = item->size > NUM_1 ? item->value[NUM_1].u32 : DEFAULT_FIll_COLOR;
2797 float strokeWidth = item->size > NUM_2 ? item->value[NUM_2].f32 : NUM_0;
2798 auto index = item->size - NUM_4 < 0 ? 0 : item->size - NUM_4;
2799 ArkUI_Float32 attributes[index];
2800 for (int i = 0; i < index; i++) {
2801 if (LessNotEqual(item->value[i + NUM_4].f32, 0.0f)) {
2802 return ERROR_CODE_PARAM_INVALID;
2803 } else {
2804 attributes[i] = item->value[i + NUM_4].f32;
2805 }
2806 }
2807 fullImpl->getNodeModifiers()->getCommonModifier()->setMaskShape(node->uiNodeHandle,
2808 ShapeToString(item->value[NUM_3].i32).c_str(), fill, stroke, strokeWidth, attributes, item->size - NUM_4,
2809 unit);
2810 }
2811 return ERROR_CODE_NO_ERROR;
2812 }
2813
ResetMask(ArkUI_NodeHandle node)2814 void ResetMask(ArkUI_NodeHandle node)
2815 {
2816 auto* fullImpl = GetFullImpl();
2817 fullImpl->getNodeModifiers()->getCommonModifier()->resetMask(node->uiNodeHandle);
2818 }
2819
GetMask(ArkUI_NodeHandle node)2820 const ArkUI_AttributeItem* GetMask(ArkUI_NodeHandle node)
2821 {
2822 ArkUIMaskOptions options;
2823 auto unit = GetDefaultUnit(node, UNIT_VP);
2824 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getMask(node->uiNodeHandle, &options, unit);
2825 CHECK_NULL_RETURN(&options, nullptr);
2826 if (options.type == static_cast<ArkUI_Int32>(ArkUI_MaskType::ARKUI_MASK_TYPE_PROGRESS)) {
2827 g_numberValues[NUM_0].i32 = options.type;
2828 g_numberValues[NUM_1].f32 = options.value;
2829 g_numberValues[NUM_2].f32 = options.maxValue;
2830 g_numberValues[NUM_3].u32 = options.color;
2831 return &g_attributeItem;
2832 }
2833 switch (static_cast<BasicShapeType>(options.type)) {
2834 case BasicShapeType::RECT:
2835 g_numberValues[NUM_0].u32 = options.fill;
2836 g_numberValues[NUM_1].u32 = options.strokeColor;
2837 g_numberValues[NUM_2].f32 = options.strokeWidth;
2838 g_numberValues[NUM_3].i32 = static_cast<ArkUI_Int32>(ArkUI_MaskType::ARKUI_MASK_TYPE_RECTANGLE);
2839 g_numberValues[NUM_4].f32 = options.width;
2840 g_numberValues[NUM_5].f32 = options.height;
2841 g_numberValues[NUM_6].f32 = options.radiusWidth;
2842 g_numberValues[NUM_7].f32 = options.radiusHeight;
2843 g_numberValues[NUM_8].f32 = options.topLeftRadius;
2844 g_numberValues[NUM_9].f32 = options.bottomLeftRadius;
2845 g_numberValues[NUM_10].f32 = options.topRightRadius;
2846 g_numberValues[NUM_11].f32 = options.bottomRightRadius;
2847 break;
2848 case BasicShapeType::CIRCLE:
2849 g_numberValues[NUM_0].u32 = options.fill;
2850 g_numberValues[NUM_1].u32 = options.strokeColor;
2851 g_numberValues[NUM_2].f32 = options.strokeWidth;
2852 g_numberValues[NUM_3].i32 = static_cast<ArkUI_Int32>(ArkUI_MaskType::ARKUI_MASK_TYPE_CIRCLE);
2853 g_numberValues[NUM_4].f32 = options.width;
2854 g_numberValues[NUM_5].f32 = options.height;
2855 break;
2856 case BasicShapeType::ELLIPSE:
2857 g_numberValues[NUM_0].u32 = options.fill;
2858 g_numberValues[NUM_1].u32 = options.strokeColor;
2859 g_numberValues[NUM_2].f32 = options.strokeWidth;
2860 g_numberValues[NUM_3].i32 = static_cast<ArkUI_Int32>(ArkUI_MaskType::ARKUI_MASK_TYPE_ELLIPSE);
2861 g_numberValues[NUM_4].f32 = options.width;
2862 g_numberValues[NUM_5].f32 = options.height;
2863 break;
2864
2865 case BasicShapeType::PATH:
2866 g_numberValues[NUM_0].u32 = options.fill;
2867 g_numberValues[NUM_1].u32 = options.strokeColor;
2868 g_numberValues[NUM_2].f32 = options.strokeWidth;
2869 g_numberValues[NUM_3].i32 = static_cast<ArkUI_Int32>(ArkUI_MaskType::ARKUI_MASK_TYPE_PATH);
2870 g_numberValues[NUM_4].f32 = options.width;
2871 g_numberValues[NUM_5].f32 = options.height;
2872 g_attributeItem.string = options.commands;
2873 break;
2874 default:
2875 return nullptr;
2876 }
2877 return &g_attributeItem;
2878 }
2879
SetBlendMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2880 int32_t SetBlendMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2881 {
2882 if (item->size == 0) {
2883 return ERROR_CODE_PARAM_INVALID;
2884 }
2885 if (!InRegion(NUM_0, NUM_29, item->value[NUM_0].i32) || !InRegion(NUM_0, NUM_1, item->value[NUM_1].i32)) {
2886 return ERROR_CODE_PARAM_INVALID;
2887 }
2888
2889 auto* fullImpl = GetFullImpl();
2890 int blendMode = item->value[0].i32;
2891 int blendApplyType = NUM_0;
2892 if (item->size > NUM_1) {
2893 blendApplyType = item->value[1].i32;
2894 }
2895 fullImpl->getNodeModifiers()->getCommonModifier()->setBlendMode(node->uiNodeHandle, blendMode, blendApplyType);
2896 return ERROR_CODE_NO_ERROR;
2897 }
2898
ResetBlendMode(ArkUI_NodeHandle node)2899 void ResetBlendMode(ArkUI_NodeHandle node)
2900 {
2901 auto* fullImpl = GetFullImpl();
2902 fullImpl->getNodeModifiers()->getCommonModifier()->resetBlendMode(node->uiNodeHandle);
2903 }
2904
GetBlendMode(ArkUI_NodeHandle node)2905 const ArkUI_AttributeItem* GetBlendMode(ArkUI_NodeHandle node)
2906 {
2907 ArkUIBlendModeOptions options;
2908 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getBlendMode(node->uiNodeHandle, &options);
2909 g_numberValues[NUM_0].i32 = options.blendMode;
2910 g_numberValues[NUM_1].i32 = options.blendApplyType;
2911 return &g_attributeItem;
2912 }
2913
SetDirection(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2914 int32_t SetDirection(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2915 {
2916 if (item->size == 0) {
2917 return ERROR_CODE_PARAM_INVALID;
2918 }
2919 if (item->value[0].i32 < ArkUI_Direction::ARKUI_DIRECTION_LTR ||
2920 item->value[0].i32 > ArkUI_Direction::ARKUI_DIRECTION_AUTO) {
2921 return ERROR_CODE_PARAM_INVALID;
2922 }
2923 auto* fullImpl = GetFullImpl();
2924 fullImpl->getNodeModifiers()->getCommonModifier()->setDirection(node->uiNodeHandle, item->value[0].i32);
2925 return ERROR_CODE_NO_ERROR;
2926 }
2927
ResetDirection(ArkUI_NodeHandle node)2928 void ResetDirection(ArkUI_NodeHandle node)
2929 {
2930 auto* fullImpl = GetFullImpl();
2931 fullImpl->getNodeModifiers()->getCommonModifier()->resetDirection(node->uiNodeHandle);
2932 }
2933
GetDirection(ArkUI_NodeHandle node)2934 const ArkUI_AttributeItem* GetDirection(ArkUI_NodeHandle node)
2935 {
2936 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
2937 g_numberValues[0].i32 = modifier->getDirection(node->uiNodeHandle);
2938 return &g_attributeItem;
2939 }
2940
SetAlignSelf(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2941 int32_t SetAlignSelf(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2942 {
2943 if (item->size == 0) {
2944 return ERROR_CODE_PARAM_INVALID;
2945 }
2946 if (item->value[0].i32 < ArkUI_ItemAlignment::ARKUI_ITEM_ALIGNMENT_AUTO ||
2947 item->value[0].i32 > ArkUI_ItemAlignment::ARKUI_ITEM_ALIGNMENT_BASELINE) {
2948 return ERROR_CODE_PARAM_INVALID;
2949 }
2950 auto* fullImpl = GetFullImpl();
2951 fullImpl->getNodeModifiers()->getCommonModifier()->setAlignSelf(node->uiNodeHandle, item->value[0].i32);
2952 return ERROR_CODE_NO_ERROR;
2953 }
2954
ResetAlignSelf(ArkUI_NodeHandle node)2955 void ResetAlignSelf(ArkUI_NodeHandle node)
2956 {
2957 auto* fullImpl = GetFullImpl();
2958 fullImpl->getNodeModifiers()->getCommonModifier()->resetAlignSelf(node->uiNodeHandle);
2959 }
2960
GetAlignSelf(ArkUI_NodeHandle node)2961 const ArkUI_AttributeItem* GetAlignSelf(ArkUI_NodeHandle node)
2962 {
2963 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
2964 g_numberValues[0].i32 = modifier->getAlignSelf(node->uiNodeHandle);
2965 return &g_attributeItem;
2966 }
2967
SetFlexGrow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2968 int32_t SetFlexGrow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2969 {
2970 if (item->size == 0) {
2971 return ERROR_CODE_PARAM_INVALID;
2972 }
2973 if (LessNotEqual(item->value[0].f32, 0.0f)) {
2974 return ERROR_CODE_PARAM_INVALID;
2975 }
2976 auto fullImpl = GetFullImpl();
2977 fullImpl->getNodeModifiers()->getCommonModifier()->setFlexGrow(node->uiNodeHandle, item->value[0].f32);
2978 return ERROR_CODE_NO_ERROR;
2979 }
2980
ResetFlexGrow(ArkUI_NodeHandle node)2981 void ResetFlexGrow(ArkUI_NodeHandle node)
2982 {
2983 auto* fullImpl = GetFullImpl();
2984 fullImpl->getNodeModifiers()->getCommonModifier()->resetFlexGrow(node->uiNodeHandle);
2985 }
2986
GetFlexGrow(ArkUI_NodeHandle node)2987 const ArkUI_AttributeItem* GetFlexGrow(ArkUI_NodeHandle node)
2988 {
2989 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
2990 g_numberValues[0].f32 = modifier->getFlexGrow(node->uiNodeHandle);
2991 return &g_attributeItem;
2992 }
2993
SetFlexShrink(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)2994 int32_t SetFlexShrink(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
2995 {
2996 if (item->size == 0) {
2997 return ERROR_CODE_PARAM_INVALID;
2998 }
2999 if (LessNotEqual(item->value[0].f32, 0.0f)) {
3000 return ERROR_CODE_PARAM_INVALID;
3001 }
3002 auto fullImpl = GetFullImpl();
3003 fullImpl->getNodeModifiers()->getCommonModifier()->setFlexShrink(node->uiNodeHandle, item->value[0].f32);
3004 return ERROR_CODE_NO_ERROR;
3005 }
3006
ResetFlexShrink(ArkUI_NodeHandle node)3007 void ResetFlexShrink(ArkUI_NodeHandle node)
3008 {
3009 auto* fullImpl = GetFullImpl();
3010 fullImpl->getNodeModifiers()->getCommonModifier()->resetFlexShrink(node->uiNodeHandle);
3011 }
3012
GetFlexShrink(ArkUI_NodeHandle node)3013 const ArkUI_AttributeItem* GetFlexShrink(ArkUI_NodeHandle node)
3014 {
3015 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3016 g_numberValues[0].f32 = modifier->getFlexShrink(node->uiNodeHandle);
3017 return &g_attributeItem;
3018 }
3019
SetFlexBasis(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3020 int32_t SetFlexBasis(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3021 {
3022 if (item->size == 0) {
3023 return ERROR_CODE_PARAM_INVALID;
3024 }
3025 if (LessNotEqual(item->value[0].f32, 0.0f)) {
3026 return ERROR_CODE_PARAM_INVALID;
3027 }
3028 auto fullImpl = GetFullImpl();
3029 struct ArkUIStringAndFloat basis = { item->value[0].f32, nullptr };
3030 fullImpl->getNodeModifiers()->getCommonModifier()->setFlexBasis(node->uiNodeHandle, &basis);
3031 return ERROR_CODE_NO_ERROR;
3032 }
3033
ResetFlexBasis(ArkUI_NodeHandle node)3034 void ResetFlexBasis(ArkUI_NodeHandle node)
3035 {
3036 auto* fullImpl = GetFullImpl();
3037 fullImpl->getNodeModifiers()->getCommonModifier()->resetFlexBasis(node->uiNodeHandle);
3038 }
3039
GetFlexBasis(ArkUI_NodeHandle node)3040 const ArkUI_AttributeItem* GetFlexBasis(ArkUI_NodeHandle node)
3041 {
3042 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3043 g_numberValues[0].f32 = modifier->getFlexBasis(node->uiNodeHandle);
3044 return &g_attributeItem;
3045 }
3046
SetConstraintSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3047 int32_t SetConstraintSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3048 {
3049 if (item->size == 0 || item->size != ALLOW_SIZE_4) {
3050 return ERROR_CODE_PARAM_INVALID;
3051 }
3052
3053 auto* fullImpl = GetFullImpl();
3054 ArkUI_Float32 constraintSize[ALLOW_SIZE_4] = { 0.0f, FLT_MAX, 0.0f, FLT_MAX };
3055 int32_t unit = GetDefaultUnit(node, UNIT_VP);
3056 ArkUI_Int32 units[ALLOW_SIZE_4] = { unit, unit, unit, unit };
3057
3058 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
3059 if (LessNotEqual(item->value[i].f32, 0.0f)) {
3060 return ERROR_CODE_PARAM_INVALID;
3061 } else {
3062 constraintSize[i] = item->value[i].f32;
3063 }
3064 }
3065
3066 fullImpl->getNodeModifiers()->getCommonModifier()->setConstraintSize(node->uiNodeHandle, constraintSize, units);
3067 return ERROR_CODE_NO_ERROR;
3068 }
3069
ResetConstraintSize(ArkUI_NodeHandle node)3070 void ResetConstraintSize(ArkUI_NodeHandle node)
3071 {
3072 auto* fullImpl = GetFullImpl();
3073 fullImpl->getNodeModifiers()->getCommonModifier()->resetConstraintSize(node->uiNodeHandle);
3074 }
3075
GetConstraintSize(ArkUI_NodeHandle node)3076 const ArkUI_AttributeItem* GetConstraintSize(ArkUI_NodeHandle node)
3077 {
3078 ArkUIConstraintSizeOptions options;
3079 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
3080 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getConstraintSize(node->uiNodeHandle, &options, unit);
3081 g_numberValues[NUM_0].f32 = options.minWidth;
3082 g_numberValues[NUM_1].f32 = options.maxWidth;
3083 g_numberValues[NUM_2].f32 = options.minHeight;
3084 g_numberValues[NUM_3].f32 = options.maxHeight;
3085 return &g_attributeItem;
3086 }
3087
SetGrayscale(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3088 int32_t SetGrayscale(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3089 {
3090 if (item->size == 0) {
3091 return ERROR_CODE_PARAM_INVALID;
3092 }
3093 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatNotEqual(item->value[0].f32, 1.0f)) {
3094 return ERROR_CODE_PARAM_INVALID;
3095 }
3096 auto* fullImpl = GetFullImpl();
3097 fullImpl->getNodeModifiers()->getCommonModifier()->setGrayscale(node->uiNodeHandle, item->value[0].f32);
3098 return ERROR_CODE_NO_ERROR;
3099 }
3100
ResetGrayscale(ArkUI_NodeHandle node)3101 void ResetGrayscale(ArkUI_NodeHandle node)
3102 {
3103 auto* fullImpl = GetFullImpl();
3104 fullImpl->getNodeModifiers()->getCommonModifier()->resetGrayscale(node->uiNodeHandle);
3105 }
3106
GetGrayscale(ArkUI_NodeHandle node)3107 const ArkUI_AttributeItem* GetGrayscale(ArkUI_NodeHandle node)
3108 {
3109 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3110 g_numberValues[0].f32 = modifier->getGrayScale(node->uiNodeHandle);
3111 return &g_attributeItem;
3112 }
3113
SetInvert(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3114 int32_t SetInvert(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3115 {
3116 if (item->size == 0) {
3117 return ERROR_CODE_PARAM_INVALID;
3118 }
3119 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatNotEqual(item->value[0].f32, 1.0f)) {
3120 return ERROR_CODE_PARAM_INVALID;
3121 }
3122 auto fullImpl = GetFullImpl();
3123 ArkUI_Float32 invert[] = { item->value[0].f32 };
3124 fullImpl->getNodeModifiers()->getCommonModifier()->setInvert(node->uiNodeHandle, invert, NUM_1);
3125 return ERROR_CODE_NO_ERROR;
3126 }
3127
ResetInvert(ArkUI_NodeHandle node)3128 void ResetInvert(ArkUI_NodeHandle node)
3129 {
3130 auto* fullImpl = GetFullImpl();
3131 fullImpl->getNodeModifiers()->getCommonModifier()->resetInvert(node->uiNodeHandle);
3132 }
3133
GetInvert(ArkUI_NodeHandle node)3134 const ArkUI_AttributeItem* GetInvert(ArkUI_NodeHandle node)
3135 {
3136 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3137 g_numberValues[0].f32 = modifier->getInvert(node->uiNodeHandle);
3138 return &g_attributeItem;
3139 }
3140
SetSepia(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3141 int32_t SetSepia(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3142 {
3143 if (item->size == 0) {
3144 return ERROR_CODE_PARAM_INVALID;
3145 }
3146 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatNotEqual(item->value[0].f32, 1.0f)) {
3147 return ERROR_CODE_PARAM_INVALID;
3148 }
3149 auto* fullImpl = GetFullImpl();
3150 fullImpl->getNodeModifiers()->getCommonModifier()->setSepia(node->uiNodeHandle, item->value[0].f32);
3151 return ERROR_CODE_NO_ERROR;
3152 }
3153
ResetSepia(ArkUI_NodeHandle node)3154 void ResetSepia(ArkUI_NodeHandle node)
3155 {
3156 auto* fullImpl = GetFullImpl();
3157 fullImpl->getNodeModifiers()->getCommonModifier()->resetSepia(node->uiNodeHandle);
3158 }
3159
GetSepia(ArkUI_NodeHandle node)3160 const ArkUI_AttributeItem* GetSepia(ArkUI_NodeHandle node)
3161 {
3162 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3163 g_numberValues[0].f32 = modifier->getSepia(node->uiNodeHandle);
3164 return &g_attributeItem;
3165 }
3166
SetContrast(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3167 int32_t SetContrast(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3168 {
3169 if (item->size == 0) {
3170 return ERROR_CODE_PARAM_INVALID;
3171 }
3172 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatOrEqual(item->value[0].f32, 10.0f)) {
3173 return ERROR_CODE_PARAM_INVALID;
3174 }
3175 auto* fullImpl = GetFullImpl();
3176 fullImpl->getNodeModifiers()->getCommonModifier()->setContrast(node->uiNodeHandle, item->value[0].f32);
3177 return ERROR_CODE_NO_ERROR;
3178 }
3179
ResetContrast(ArkUI_NodeHandle node)3180 void ResetContrast(ArkUI_NodeHandle node)
3181 {
3182 auto* fullImpl = GetFullImpl();
3183 fullImpl->getNodeModifiers()->getCommonModifier()->resetContrast(node->uiNodeHandle);
3184 }
3185
GetContrast(ArkUI_NodeHandle node)3186 const ArkUI_AttributeItem* GetContrast(ArkUI_NodeHandle node)
3187 {
3188 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3189 g_numberValues[0].f32 = modifier->getContrast(node->uiNodeHandle);
3190 return &g_attributeItem;
3191 }
3192
SetForegroundColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3193 int32_t SetForegroundColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3194 {
3195 if (item->size == 0) {
3196 return ERROR_CODE_PARAM_INVALID;
3197 }
3198 auto* fullImpl = GetFullImpl();
3199 bool isColor = true;
3200 if (item->value[0].i32 == ArkUI_ColorStrategy::ARKUI_COLOR_STRATEGY_INVERT ||
3201 item->value[0].i32 == ArkUI_ColorStrategy::ARKUI_COLOR_STRATEGY_AVERAGE ||
3202 item->value[0].i32 == ArkUI_ColorStrategy::ARKUI_COLOR_STRATEGY_PRIMARY) {
3203 isColor = false;
3204 fullImpl->getNodeModifiers()->getCommonModifier()->setForegroundColor(
3205 node->uiNodeHandle, isColor, item->value[0].i32);
3206 } else {
3207 isColor = true;
3208 fullImpl->getNodeModifiers()->getCommonModifier()->setForegroundColor(
3209 node->uiNodeHandle, isColor, item->value[0].u32);
3210 }
3211 return ERROR_CODE_NO_ERROR;
3212 }
3213
ResetForegroundColor(ArkUI_NodeHandle node)3214 void ResetForegroundColor(ArkUI_NodeHandle node)
3215 {
3216 auto* fullImpl = GetFullImpl();
3217 fullImpl->getNodeModifiers()->getCommonModifier()->resetForegroundColor(node->uiNodeHandle);
3218 }
3219
GetForegroundColor(ArkUI_NodeHandle node)3220 const ArkUI_AttributeItem* GetForegroundColor(ArkUI_NodeHandle node)
3221 {
3222 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3223 g_numberValues[0].u32 = modifier->getForegroundColor(node->uiNodeHandle);
3224 return &g_attributeItem;
3225 }
3226
SetNeedFocus(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3227 int32_t SetNeedFocus(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3228 {
3229 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
3230 return ERROR_CODE_PARAM_INVALID;
3231 }
3232 GetFullImpl()->getNodeModifiers()->getCommonModifier()->setNeedFocus(
3233 node->uiNodeHandle, item->value[0].i32);
3234 return ERROR_CODE_NO_ERROR;
3235 }
3236
GetNeedFocus(ArkUI_NodeHandle node)3237 const ArkUI_AttributeItem* GetNeedFocus(ArkUI_NodeHandle node)
3238 {
3239 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getNeedFocus(node->uiNodeHandle);
3240 g_numberValues[0].i32 = resultValue;
3241 return &g_attributeItem;
3242 }
3243
SetAspectRatio(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3244 int32_t SetAspectRatio(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3245 {
3246 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3247 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
3248 return ERROR_CODE_PARAM_INVALID;
3249 }
3250 auto* fullImpl = GetFullImpl();
3251 fullImpl->getNodeModifiers()->getCommonModifier()->setAspectRatio(node->uiNodeHandle, item->value[NUM_0].f32);
3252 return ERROR_CODE_NO_ERROR;
3253 }
3254
ResetAspectRatio(ArkUI_NodeHandle node)3255 void ResetAspectRatio(ArkUI_NodeHandle node)
3256 {
3257 auto* fullImpl = GetFullImpl();
3258 fullImpl->getNodeModifiers()->getCommonModifier()->resetAspectRatio(node->uiNodeHandle);
3259 }
3260
GetAspectRatio(ArkUI_NodeHandle node)3261 const ArkUI_AttributeItem* GetAspectRatio(ArkUI_NodeHandle node)
3262 {
3263 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3264 g_numberValues[0].f32 = modifier->getAspectRatio(node->uiNodeHandle);
3265 return &g_attributeItem;
3266 }
3267
SetLayoutWeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3268 int32_t SetLayoutWeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3269 {
3270 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3271 if (actualSize < 0) {
3272 return ERROR_CODE_PARAM_INVALID;
3273 }
3274 auto* fullImpl = GetFullImpl();
3275 fullImpl->getNodeModifiers()->getCommonModifier()->setLayoutWeight(node->uiNodeHandle, item->value[0].u32);
3276 return ERROR_CODE_NO_ERROR;
3277 }
3278
ResetLayoutWeight(ArkUI_NodeHandle node)3279 void ResetLayoutWeight(ArkUI_NodeHandle node)
3280 {
3281 auto* fullImpl = GetFullImpl();
3282 fullImpl->getNodeModifiers()->getCommonModifier()->resetLayoutWeight(node->uiNodeHandle);
3283 }
3284
GetLayoutWeight(ArkUI_NodeHandle node)3285 const ArkUI_AttributeItem* GetLayoutWeight(ArkUI_NodeHandle node)
3286 {
3287 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3288 g_numberValues[0].u32 = static_cast<uint32_t>(modifier->getLayoutWeight(node->uiNodeHandle));
3289 g_attributeItem.size = REQUIRED_ONE_PARAM;
3290 return &g_attributeItem;
3291 }
3292
SetDisplayPriority(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3293 int32_t SetDisplayPriority(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3294 {
3295 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3296 if (actualSize < 0) {
3297 return ERROR_CODE_PARAM_INVALID;
3298 }
3299 auto* fullImpl = GetFullImpl();
3300 fullImpl->getNodeModifiers()->getCommonModifier()->setDisplayPriority(node->uiNodeHandle, item->value[0].u32);
3301 return ERROR_CODE_NO_ERROR;
3302 }
3303
ResetDisplayPriority(ArkUI_NodeHandle node)3304 void ResetDisplayPriority(ArkUI_NodeHandle node)
3305 {
3306 auto* fullImpl = GetFullImpl();
3307 fullImpl->getNodeModifiers()->getCommonModifier()->setDisplayPriority(node->uiNodeHandle, 0);
3308 }
3309
GetDisplayPriority(ArkUI_NodeHandle node)3310 const ArkUI_AttributeItem* GetDisplayPriority(ArkUI_NodeHandle node)
3311 {
3312 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3313 if (!modifier) {
3314 return nullptr;
3315 }
3316 g_numberValues[0].u32 = static_cast<uint32_t>(modifier->getDisplayPriority(node->uiNodeHandle));
3317 g_attributeItem.size = REQUIRED_ONE_PARAM;
3318 return &g_attributeItem;
3319 }
3320
SetOutlineWidth(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3321 int32_t SetOutlineWidth(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3322 {
3323 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
3324 if (actualSize < 0) {
3325 return ERROR_CODE_PARAM_INVALID;
3326 }
3327 auto* fullImpl = GetFullImpl();
3328 fullImpl->getNodeModifiers()->getCommonModifier()->setOutlineWidthFloat(node->uiNodeHandle,
3329 item->value[OUTLINE_LEFT_WIDTH_INDEX].f32, item->value[OUTLINE_TOP_WIDTH_INDEX].f32,
3330 item->value[OUTLINE_RIGHT_WIDTH_INDEX].f32, item->value[OUTLINE_BOTTOM_WIDTH_INDEX].f32);
3331 return ERROR_CODE_NO_ERROR;
3332 }
3333
ResetOutlineWidth(ArkUI_NodeHandle node)3334 void ResetOutlineWidth(ArkUI_NodeHandle node)
3335 {
3336 auto* fullImpl = GetFullImpl();
3337 fullImpl->getNodeModifiers()->getCommonModifier()->setOutlineWidthFloat(node->uiNodeHandle,
3338 0.0f, 0.0f, 0.0f, 0.0f);
3339 }
3340
GetOutlineWidth(ArkUI_NodeHandle node)3341 const ArkUI_AttributeItem* GetOutlineWidth(ArkUI_NodeHandle node)
3342 {
3343 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3344 if (!modifier) {
3345 return nullptr;
3346 }
3347 std::array<float, REQUIRED_FOUR_PARAM> outlineWidthArray;
3348 modifier->getOutlineWidthFloat(node->uiNodeHandle, &outlineWidthArray[0], REQUIRED_FOUR_PARAM);
3349 g_numberValues[OUTLINE_LEFT_WIDTH_INDEX].f32 = outlineWidthArray[OUTLINE_LEFT_WIDTH_INDEX];
3350 g_numberValues[OUTLINE_TOP_WIDTH_INDEX].f32 = outlineWidthArray[OUTLINE_TOP_WIDTH_INDEX];
3351 g_numberValues[OUTLINE_RIGHT_WIDTH_INDEX].f32 = outlineWidthArray[OUTLINE_RIGHT_WIDTH_INDEX];
3352 g_numberValues[OUTLINE_BOTTOM_WIDTH_INDEX].f32 = outlineWidthArray[OUTLINE_BOTTOM_WIDTH_INDEX];
3353 g_attributeItem.size = REQUIRED_FOUR_PARAM;
3354 return &g_attributeItem;
3355 }
3356
SetGeometryTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3357 int32_t SetGeometryTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3358 {
3359 if (item->string == nullptr) {
3360 return ERROR_CODE_PARAM_INVALID;
3361 }
3362 ArkUIGeometryTransitionOptions options;
3363 ArkUI_Bool follow = false;
3364 if (item->size == 1) {
3365 follow = item->value[0].i32;
3366 }
3367 options.follow = follow;
3368 options.hierarchyStrategy = static_cast<int32_t>(TransitionHierarchyStrategy::ADAPTIVE);
3369
3370 auto* fullImpl = GetFullImpl();
3371 fullImpl->getNodeModifiers()->getCommonModifier()->setGeometryTransition(node->uiNodeHandle, item->string,
3372 &options);
3373 return ERROR_CODE_NO_ERROR;
3374 }
3375
ResetGeometryTransition(ArkUI_NodeHandle node)3376 void ResetGeometryTransition(ArkUI_NodeHandle node)
3377 {
3378 auto* fullImpl = GetFullImpl();
3379 fullImpl->getNodeModifiers()->getCommonModifier()->resetGeometryTransition(node->uiNodeHandle);
3380 }
3381
GetGeometryTransition(ArkUI_NodeHandle node)3382 const ArkUI_AttributeItem* GetGeometryTransition(ArkUI_NodeHandle node)
3383 {
3384 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3385 if (!modifier) {
3386 return nullptr;
3387 }
3388 ArkUIGeometryTransitionOptions options;
3389 g_attributeItem.string = modifier->getGeometryTransition(node->uiNodeHandle, &options);
3390 g_numberValues[NUM_0].i32 = options.follow;
3391 g_numberValues[NUM_1].i32 = options.hierarchyStrategy;
3392 return &g_attributeItem;
3393 }
3394
SetChainMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3395 int32_t SetChainMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3396 {
3397 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
3398 if (actualSize < 0 || !CheckAttributeIsAxis(item->value[0].i32) ||
3399 !CheckAttributeIsChainStyle(item->value[1].i32)) {
3400 return ERROR_CODE_PARAM_INVALID;
3401 }
3402 auto* fullImpl = GetFullImpl();
3403 //index 0 direction index 1 style
3404 fullImpl->getNodeModifiers()->getCommonModifier()->setChainStyle(
3405 node->uiNodeHandle, item->value[0].i32, item->value[1].i32);
3406 return ERROR_CODE_NO_ERROR;
3407 }
3408
ResetChainMode(ArkUI_NodeHandle node)3409 void ResetChainMode(ArkUI_NodeHandle node)
3410 {
3411 auto* fullImpl = GetFullImpl();
3412 fullImpl->getNodeModifiers()->getCommonModifier()->resetChainStyle(node->uiNodeHandle);
3413 }
3414
GetChainMode(ArkUI_NodeHandle node)3415 const ArkUI_AttributeItem* GetChainMode(ArkUI_NodeHandle node)
3416 {
3417 //size = 2; direction and style
3418 ArkUI_Int32 values[ALLOW_SIZE_2];
3419 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getChainStyle(node->uiNodeHandle, &values);
3420 //index 0 direction
3421 g_numberValues[0].i32 = values[0];
3422 //index 1 style
3423 g_numberValues[1].i32 = values[1];
3424 g_attributeItem.size = ALLOW_SIZE_2;
3425
3426 return &g_attributeItem;
3427 }
3428
SetWidthPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3429 int32_t SetWidthPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3430 {
3431 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3432 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
3433 return ERROR_CODE_PARAM_INVALID;
3434 }
3435 auto* fullImpl = GetFullImpl();
3436 fullImpl->getNodeModifiers()->getCommonModifier()->setWidth(
3437 node->uiNodeHandle, item->value[NUM_0].f32, UNIT_PERCENT, nullptr);
3438 return ERROR_CODE_NO_ERROR;
3439 }
3440
ResetWidthPercent(ArkUI_NodeHandle node)3441 void ResetWidthPercent(ArkUI_NodeHandle node)
3442 {
3443 ResetWidth(node);
3444 }
3445
GetWidthPercent(ArkUI_NodeHandle node)3446 const ArkUI_AttributeItem* GetWidthPercent(ArkUI_NodeHandle node)
3447 {
3448 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3449 g_numberValues[0].f32 = modifier->getWidth(node->uiNodeHandle, UNIT_PERCENT);
3450 if (LessNotEqual(g_numberValues[0].f32, 0.0f)) {
3451 return nullptr;
3452 }
3453 return &g_attributeItem;
3454 }
3455
SetHeightPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3456 int32_t SetHeightPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3457 {
3458 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3459 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
3460 return ERROR_CODE_PARAM_INVALID;
3461 }
3462 auto* fullImpl = GetFullImpl();
3463 fullImpl->getNodeModifiers()->getCommonModifier()->setHeight(
3464 node->uiNodeHandle, item->value[NUM_0].f32, UNIT_PERCENT, nullptr);
3465 return ERROR_CODE_NO_ERROR;
3466 }
3467
ResetHeightPercent(ArkUI_NodeHandle node)3468 void ResetHeightPercent(ArkUI_NodeHandle node)
3469 {
3470 ResetHeight(node);
3471 }
3472
GetHeightPercent(ArkUI_NodeHandle node)3473 const ArkUI_AttributeItem* GetHeightPercent(ArkUI_NodeHandle node)
3474 {
3475 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3476 g_numberValues[0].f32 = modifier->getHeight(node->uiNodeHandle, UNIT_PERCENT);
3477 if (LessNotEqual(g_numberValues[0].f32, 0.0f)) {
3478 return nullptr;
3479 }
3480 return &g_attributeItem;
3481 }
3482
SetPaddingPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3483 int32_t SetPaddingPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3484 {
3485 if (item->size != NUM_1 && item->size != NUM_4) {
3486 return ERROR_CODE_PARAM_INVALID;
3487 }
3488 auto* fullImpl = GetFullImpl();
3489 int topIndex = NUM_0;
3490 int rightIndex = item->size == NUM_1 ? NUM_0 : NUM_1;
3491 int bottomIndex = item->size == NUM_1 ? NUM_0 : NUM_2;
3492 int leftIndex = item->size == NUM_1 ? NUM_0 : NUM_3;
3493 struct ArkUISizeType top = { item->value[topIndex].f32, UNIT_PERCENT };
3494 struct ArkUISizeType right = { item->value[rightIndex].f32, UNIT_PERCENT };
3495 struct ArkUISizeType bottom = { item->value[bottomIndex].f32, UNIT_PERCENT };
3496 struct ArkUISizeType left = { item->value[leftIndex].f32, UNIT_PERCENT };
3497 fullImpl->getNodeModifiers()->getCommonModifier()->setPadding(node->uiNodeHandle, &top, &right, &bottom, &left);
3498 return ERROR_CODE_NO_ERROR;
3499 }
3500
ResetPaddingPercent(ArkUI_NodeHandle node)3501 void ResetPaddingPercent(ArkUI_NodeHandle node)
3502 {
3503 ResetPadding(node);
3504 }
3505
GetPaddingPercent(ArkUI_NodeHandle node)3506 const ArkUI_AttributeItem* GetPaddingPercent(ArkUI_NodeHandle node)
3507 {
3508 auto* fullImpl = GetFullImpl();
3509 ArkUI_Float32 paddings[NUM_4];
3510 ArkUI_Int32 length = 0;
3511 fullImpl->getNodeModifiers()->getCommonModifier()->getPadding(node->uiNodeHandle, &paddings, length, UNIT_PERCENT);
3512 g_numberValues[NUM_0].f32 = paddings[NUM_0];
3513 g_numberValues[NUM_1].f32 = paddings[NUM_1];
3514 g_numberValues[NUM_2].f32 = paddings[NUM_2];
3515 g_numberValues[NUM_3].f32 = paddings[NUM_3];
3516 return &g_attributeItem;
3517 }
3518
SetMarginPercent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3519 int32_t SetMarginPercent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3520 {
3521 if (!item || (item->size != NUM_4 && item->size != NUM_1)) {
3522 return ERROR_CODE_PARAM_INVALID;
3523 }
3524 auto* fullImpl = GetFullImpl();
3525 int topIndex = NUM_0;
3526 int rightIndex = item->size == NUM_1 ? NUM_0 : NUM_1;
3527 int bottomIndex = item->size == NUM_1 ? NUM_0 : NUM_2;
3528 int leftIndex = item->size == NUM_1 ? NUM_0 : NUM_3;
3529 struct ArkUISizeType top = { item->value[topIndex].f32, UNIT_PERCENT };
3530 struct ArkUISizeType right = { item->value[rightIndex].f32, UNIT_PERCENT };
3531 struct ArkUISizeType bottom = { item->value[bottomIndex].f32, UNIT_PERCENT };
3532 struct ArkUISizeType left = { item->value[leftIndex].f32, UNIT_PERCENT };
3533 if (node->type == ARKUI_NODE_TEXT_INPUT) {
3534 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputMargin(
3535 node->uiNodeHandle, &top, &right, &bottom, &left);
3536 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
3537 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaMargin(
3538 node->uiNodeHandle, &top, &right, &bottom, &left);
3539 } else {
3540 fullImpl->getNodeModifiers()->getCommonModifier()->setMargin(node->uiNodeHandle, &top, &right, &bottom, &left);
3541 }
3542 return ERROR_CODE_NO_ERROR;
3543 }
3544
ResetMarginPercent(ArkUI_NodeHandle node)3545 void ResetMarginPercent(ArkUI_NodeHandle node)
3546 {
3547 ResetMargin(node);
3548 }
3549
GetMarginPercent(ArkUI_NodeHandle node)3550 const ArkUI_AttributeItem* GetMarginPercent(ArkUI_NodeHandle node)
3551 {
3552 auto* fullImpl = GetFullImpl();
3553 ArkUI_Float32 margins[NUM_4];
3554 ArkUI_Int32 length = 0;
3555 fullImpl->getNodeModifiers()->getCommonModifier()->getMargin(node->uiNodeHandle, &margins, length, UNIT_PERCENT);
3556 g_numberValues[NUM_0].f32 = margins[NUM_0];
3557 g_numberValues[NUM_1].f32 = margins[NUM_1];
3558 g_numberValues[NUM_3].f32 = margins[NUM_3];
3559 return &g_attributeItem;
3560 }
3561
SetRenderFit(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3562 int32_t SetRenderFit(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3563 {
3564 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3565 if (actualSize < 0 ||
3566 item->value[NUM_0].i32 < ArkUI_RenderFit::ARKUI_RENDER_FIT_CENTER ||
3567 item->value[NUM_0].i32 > ArkUI_RenderFit::ARKUI_RENDER_FIT_RESIZE_COVER_BOTTOM_RIGHT) {
3568 return ERROR_CODE_PARAM_INVALID;
3569 }
3570 auto* fullImpl = GetFullImpl();
3571 if (node->type == ARKUI_NODE_XCOMPONENT) {
3572 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentRenderFit(node->uiNodeHandle, item->value[NUM_0].i32);
3573 } else {
3574 fullImpl->getNodeModifiers()->getCommonModifier()->setRenderFit(node->uiNodeHandle, item->value[NUM_0].i32);
3575 }
3576 return ERROR_CODE_NO_ERROR;
3577 }
3578
ResetRenderFit(ArkUI_NodeHandle node)3579 void ResetRenderFit(ArkUI_NodeHandle node)
3580 {
3581 auto* fullImpl = GetFullImpl();
3582 if (node->type == ARKUI_NODE_XCOMPONENT) {
3583 fullImpl->getNodeModifiers()->getXComponentModifier()->resetXComponentRenderFit(node->uiNodeHandle);
3584 } else {
3585 fullImpl->getNodeModifiers()->getCommonModifier()->resetRenderFit(node->uiNodeHandle);
3586 }
3587 }
3588
GetRenderFit(ArkUI_NodeHandle node)3589 const ArkUI_AttributeItem* GetRenderFit(ArkUI_NodeHandle node)
3590 {
3591 auto modifier = GetFullImpl()->getNodeModifiers()->getCommonModifier();
3592 g_numberValues[0].i32 = modifier->getRenderFit(node->uiNodeHandle);
3593 return &g_attributeItem;
3594 }
3595
SetOutlineColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3596 int32_t SetOutlineColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3597 {
3598 if (item->size == 0) {
3599 return ERROR_CODE_PARAM_INVALID;
3600 }
3601 // already check in entry point.
3602 auto* fullImpl = GetFullImpl();
3603 uint32_t colors[ALLOW_SIZE_8] = { DEFAULT_TRUE, DEFAULT_COLOR, DEFAULT_TRUE, DEFAULT_COLOR,
3604 DEFAULT_TRUE, DEFAULT_COLOR, DEFAULT_TRUE, DEFAULT_COLOR };
3605 if (item->size == 1) {
3606 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
3607 colors[NUM_2 * i + NUM_1] = item->value[0].u32;
3608 }
3609 } else if (item->size == ALLOW_SIZE_4) {
3610 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
3611 colors[NUM_2 * i + NUM_1] = item->value[i].u32;
3612 }
3613 } else {
3614 return ERROR_CODE_PARAM_INVALID;
3615 }
3616
3617 fullImpl->getNodeModifiers()->getCommonModifier()->setOutlineColor(
3618 node->uiNodeHandle, colors, ALLOW_SIZE_8);
3619 return ERROR_CODE_NO_ERROR;
3620 }
3621
ResetOutlineColor(ArkUI_NodeHandle node)3622 void ResetOutlineColor(ArkUI_NodeHandle node)
3623 {
3624 auto* fullImpl = GetFullImpl();
3625 fullImpl->getNodeModifiers()->getCommonModifier()->resetOutlineColor(node->uiNodeHandle);
3626 }
3627
GetOutlineColor(ArkUI_NodeHandle node)3628 const ArkUI_AttributeItem* GetOutlineColor(ArkUI_NodeHandle node)
3629 {
3630 auto* fullImpl = GetFullImpl();
3631 ArkUI_Uint32 colors[NUM_4];
3632 fullImpl->getNodeModifiers()->getCommonModifier()->getOutlineColor(node->uiNodeHandle, &colors);
3633 g_numberValues[NUM_0].u32 = colors[NUM_0];
3634 g_numberValues[NUM_1].u32 = colors[NUM_1];
3635 g_numberValues[NUM_2].u32 = colors[NUM_2];
3636 g_numberValues[NUM_3].u32 = colors[NUM_3];
3637 return &g_attributeItem;
3638 }
3639
SetSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3640 int32_t SetSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3641 {
3642 if (item->size <= NUM_0 || item->size > NUM_2) {
3643 return ERROR_CODE_PARAM_INVALID;
3644 }
3645 ArkUI_Float32 size[NUM_2] = { ZERO_F, ZERO_F };
3646 for (auto i = 0; i < item->size; ++i) {
3647 size[i] = item->value[i].f32;
3648 }
3649 ArkUI_Int32 unit[NUM_2];
3650 unit[NUM_0] = GetDefaultUnit(node, UNIT_VP);
3651 unit[NUM_1] = GetDefaultUnit(node, UNIT_VP);
3652 // already check in entry point.
3653 auto* fullImpl = GetFullImpl();
3654 // 1 for vp. check in DimensionUnit.
3655 fullImpl->getNodeModifiers()->getCommonModifier()->setSize(
3656 node->uiNodeHandle, size, unit, nullptr);
3657 return ERROR_CODE_NO_ERROR;
3658 }
3659
ResetSize(ArkUI_NodeHandle node)3660 void ResetSize(ArkUI_NodeHandle node)
3661 {
3662 auto* fullImpl = GetFullImpl();
3663 fullImpl->getNodeModifiers()->getCommonModifier()->resetSize(node->uiNodeHandle);
3664 }
3665
GetSize(ArkUI_NodeHandle node)3666 const ArkUI_AttributeItem* GetSize(ArkUI_NodeHandle node)
3667 {
3668 auto* fullImpl = GetFullImpl();
3669 ArkUI_Float32 size[NUM_2];
3670 fullImpl->getNodeModifiers()->getCommonModifier()->getSize(
3671 node->uiNodeHandle, &size, GetDefaultUnit(node, UNIT_VP));
3672 g_numberValues[NUM_0].f32 = size[NUM_0];
3673 g_numberValues[NUM_1].f32 = size[NUM_1];
3674 return &g_attributeItem;
3675 }
3676
SetRenderGroup(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3677 int32_t SetRenderGroup(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3678 {
3679 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
3680 return ERROR_CODE_PARAM_INVALID;
3681 }
3682 auto* fullImpl = GetFullImpl();
3683 fullImpl->getNodeModifiers()->getCommonModifier()->setRenderGroup(
3684 node->uiNodeHandle, item->value[NUM_0].i32);
3685 return ERROR_CODE_NO_ERROR;
3686 }
3687
ResetRenderGroup(ArkUI_NodeHandle node)3688 void ResetRenderGroup(ArkUI_NodeHandle node)
3689 {
3690 auto* fullImpl = GetFullImpl();
3691 fullImpl->getNodeModifiers()->getCommonModifier()->resetRenderGroup(node->uiNodeHandle);
3692 }
3693
GetRenderGroup(ArkUI_NodeHandle node)3694 const ArkUI_AttributeItem* GetRenderGroup(ArkUI_NodeHandle node)
3695 {
3696 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getRenderGroup(node->uiNodeHandle);
3697 g_numberValues[0].i32 = resultValue;
3698 return &g_attributeItem;
3699 }
3700
SetColorBlend(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3701 int32_t SetColorBlend(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3702 {
3703 if (item->size != NUM_1) {
3704 return ERROR_CODE_PARAM_INVALID;
3705 }
3706 auto* fullImpl = GetFullImpl();
3707 fullImpl->getNodeModifiers()->getCommonModifier()->setColorBlend(
3708 node->uiNodeHandle, item->value[NUM_0].u32);
3709 return ERROR_CODE_NO_ERROR;
3710 }
3711
ResetColorBlend(ArkUI_NodeHandle node)3712 void ResetColorBlend(ArkUI_NodeHandle node)
3713 {
3714 auto* fullImpl = GetFullImpl();
3715 fullImpl->getNodeModifiers()->getCommonModifier()->resetColorBlend(node->uiNodeHandle);
3716 }
3717
GetColorBlend(ArkUI_NodeHandle node)3718 const ArkUI_AttributeItem* GetColorBlend(ArkUI_NodeHandle node)
3719 {
3720 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getColorBlend(node->uiNodeHandle);
3721 g_numberValues[0].u32 = resultValue;
3722 return &g_attributeItem;
3723 }
3724
SetExpandSafeArea(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3725 int32_t SetExpandSafeArea(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3726 {
3727 if (item->size == 0) {
3728 return ERROR_CODE_PARAM_INVALID;
3729 }
3730 ArkUI_Uint32 safeAreaType = NG::SAFE_AREA_TYPE_NONE;
3731 ArkUI_Uint32 safeAreaEdge = NG::SAFE_AREA_EDGE_NONE;
3732 if (item->size > 0 && item->value[0].u32 > 0) {
3733 if (item->value[0].u32 > NUM_7) {
3734 return ERROR_CODE_PARAM_INVALID;
3735 } else {
3736 safeAreaType = item->value[0].u32;
3737 }
3738 } else {
3739 safeAreaType = NG::SAFE_AREA_TYPE_ALL;
3740 }
3741 if (item->size > NUM_1 && item->value[1].u32 > 0) {
3742 if (item->value[1].u32 > NUM_15) {
3743 return ERROR_CODE_PARAM_INVALID;
3744 } else {
3745 safeAreaEdge = item->value[1].u32;
3746 }
3747 } else {
3748 safeAreaEdge = NG::SAFE_AREA_EDGE_ALL;
3749 }
3750 GetFullImpl()->getNodeModifiers()->getCommonModifier()->setExpandSafeArea(
3751 node->uiNodeHandle, safeAreaType, safeAreaEdge);
3752 return ERROR_CODE_NO_ERROR;
3753 }
3754
ResetExpandSafeArea(ArkUI_NodeHandle node)3755 void ResetExpandSafeArea(ArkUI_NodeHandle node)
3756 {
3757 auto* fullImpl = GetFullImpl();
3758 fullImpl->getNodeModifiers()->getCommonModifier()->resetExpandSafeArea(node->uiNodeHandle);
3759 }
3760
GetExpandSafeArea(ArkUI_NodeHandle node)3761 const ArkUI_AttributeItem* GetExpandSafeArea(ArkUI_NodeHandle node)
3762 {
3763 ArkUI_Uint32 values[NUM_2];
3764 GetFullImpl()->getNodeModifiers()->getCommonModifier()->getExpandSafeArea(node->uiNodeHandle, &values);
3765 g_numberValues[NUM_0].u32 = values[NUM_0];
3766 g_numberValues[NUM_1].u32 = values[NUM_1];
3767 return &g_attributeItem;
3768 }
3769
SetTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3770 int32_t SetTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3771 {
3772 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
3773 auto fullImpl = GetFullImpl();
3774 node->transitionOption = item->object;
3775 auto effectOption = reinterpret_cast<ArkUI_TransitionEffect*>(item->object);
3776 auto toEffectOption = OHOS::Ace::TransitionModel::ConvertToEffectOption(effectOption);
3777 fullImpl->getNodeModifiers()->getCommonModifier()->setTransition(node->uiNodeHandle, toEffectOption);
3778 return ERROR_CODE_NO_ERROR;
3779 }
3780
SetFocusBox(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3781 int32_t SetFocusBox(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3782 {
3783 if (item->size != NUM_3) {
3784 return ERROR_CODE_PARAM_INVALID;
3785 }
3786 auto* fullImpl = GetFullImpl();
3787 int32_t unit = GetDefaultUnit(node, UNIT_FP);
3788 fullImpl->getNodeModifiers()->getCommonModifier()->setFocusBoxStyle(
3789 node->uiNodeHandle, item->value[0].f32, unit, item->value[1].f32, unit, item->value[2].u32, NUM_7);
3790 return ERROR_CODE_NO_ERROR;
3791 }
3792
ResetFocusBox(ArkUI_NodeHandle node)3793 void ResetFocusBox(ArkUI_NodeHandle node)
3794 {
3795 auto* fullImpl = GetFullImpl();
3796 fullImpl->getNodeModifiers()->getCommonModifier()->resetFocusBoxStyle(node->uiNodeHandle);
3797 }
3798
SetTabStop(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3799 int32_t SetTabStop(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3800 {
3801 auto* fullImpl = GetFullImpl();
3802 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
3803 fullImpl->getNodeModifiers()->getCommonModifier()->setTabStop(node->uiNodeHandle, false);
3804 return ERROR_CODE_PARAM_INVALID;
3805 }
3806 fullImpl->getNodeModifiers()->getCommonModifier()->setTabStop(node->uiNodeHandle, item->value[0].i32);
3807 return ERROR_CODE_NO_ERROR;
3808 }
3809
ResetTabStop(ArkUI_NodeHandle node)3810 void ResetTabStop(ArkUI_NodeHandle node)
3811 {
3812 auto* fullImpl = GetFullImpl();
3813 fullImpl->getNodeModifiers()->getCommonModifier()->resetTabStop(node->uiNodeHandle);
3814 }
3815
GetTabStop(ArkUI_NodeHandle node)3816 const ArkUI_AttributeItem* GetTabStop(ArkUI_NodeHandle node)
3817 {
3818 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getTabStop(node->uiNodeHandle);
3819 g_numberValues[0].i32 = resultValue;
3820 return &g_attributeItem;
3821 }
3822
GetTransition(ArkUI_NodeHandle node)3823 const ArkUI_AttributeItem* GetTransition(ArkUI_NodeHandle node)
3824 {
3825 g_attributeItem.object = node->transitionOption;
3826 return &g_attributeItem;
3827 }
3828
GetUniqueID(ArkUI_NodeHandle node)3829 const ArkUI_AttributeItem* GetUniqueID(ArkUI_NodeHandle node)
3830 {
3831 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getNodeUniqueId(node->uiNodeHandle);
3832 g_numberValues[0].i32 = resultValue;
3833 return &g_attributeItem;
3834 }
3835
3836 // Text
SetFontColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3837 int32_t SetFontColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3838 {
3839 if (item->size == NUM_0) {
3840 return ERROR_CODE_PARAM_INVALID;
3841 }
3842 // already check in entry point.
3843 auto* fullImpl = GetFullImpl();
3844 switch (node->type) {
3845 case ARKUI_NODE_TEXT_INPUT:
3846 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontColor(
3847 node->uiNodeHandle, item->value[0].u32);
3848 break;
3849 case ARKUI_NODE_TEXT:
3850 fullImpl->getNodeModifiers()->getTextModifier()->setFontColor(node->uiNodeHandle, item->value[0].u32);
3851 break;
3852 case ARKUI_NODE_SPAN:
3853 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanFontColor(node->uiNodeHandle, item->value[0].u32);
3854 break;
3855 case ARKUI_NODE_BUTTON:
3856 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonFontColor(
3857 node->uiNodeHandle, item->value[0].u32);
3858 break;
3859 case ARKUI_NODE_TEXT_AREA:
3860 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontColor(
3861 node->uiNodeHandle, item->value[0].u32);
3862 break;
3863 default:
3864 return ERROR_CODE_PARAM_INVALID;
3865 }
3866 return ERROR_CODE_NO_ERROR;
3867 }
3868
ResetFontColor(ArkUI_NodeHandle node)3869 void ResetFontColor(ArkUI_NodeHandle node)
3870 {
3871 auto* fullImpl = GetFullImpl();
3872 if (node->type == ARKUI_NODE_TEXT) {
3873 fullImpl->getNodeModifiers()->getTextModifier()->resetFontColor(node->uiNodeHandle);
3874 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
3875 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontColor(node->uiNodeHandle);
3876 } else if (node->type == ARKUI_NODE_SPAN) {
3877 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanFontColor(node->uiNodeHandle);
3878 } else if (node->type == ARKUI_NODE_BUTTON) {
3879 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonFontColor(node->uiNodeHandle);
3880 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
3881 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontColor(node->uiNodeHandle);
3882 }
3883 }
3884
SetFontWeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3885 int32_t SetFontWeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3886 {
3887 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3888 if (actualSize < 0 || item->value[NUM_0].i32 < 0 ||
3889 item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_FONT_WEIGHT_REGULAR)) {
3890 return ERROR_CODE_PARAM_INVALID;
3891 }
3892 // already check in entry point.
3893 auto* fullImpl = GetFullImpl();
3894 switch (node->type) {
3895 case ARKUI_NODE_TEXT_INPUT:
3896 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontWeight(
3897 node->uiNodeHandle, item->value[0].i32);
3898 break;
3899 case ARKUI_NODE_TEXT:
3900 fullImpl->getNodeModifiers()->getTextModifier()->setFontWeight(node->uiNodeHandle, item->value[0].i32);
3901 break;
3902 case ARKUI_NODE_SPAN:
3903 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanFontWeight(node->uiNodeHandle, item->value[0].i32);
3904 break;
3905 case ARKUI_NODE_BUTTON:
3906 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonFontWeightEnum(
3907 node->uiNodeHandle, item->value[0].i32);
3908 break;
3909 case ARKUI_NODE_TEXT_AREA:
3910 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontWeight(
3911 node->uiNodeHandle, item->value[0].i32);
3912 break;
3913 default:
3914 return ERROR_CODE_PARAM_INVALID;
3915 }
3916 return ERROR_CODE_NO_ERROR;
3917 }
3918
ResetFontWeight(ArkUI_NodeHandle node)3919 void ResetFontWeight(ArkUI_NodeHandle node)
3920 {
3921 auto* fullImpl = GetFullImpl();
3922 if (node->type == ARKUI_NODE_TEXT) {
3923 fullImpl->getNodeModifiers()->getTextModifier()->resetFontWeight(node->uiNodeHandle);
3924 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
3925 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontWeight(node->uiNodeHandle);
3926 } else if (node->type == ARKUI_NODE_SPAN) {
3927 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanFontWeight(node->uiNodeHandle);
3928 } else if (node->type == ARKUI_NODE_BUTTON) {
3929 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonFontWeight(node->uiNodeHandle);
3930 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
3931 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontWeight(node->uiNodeHandle);
3932 }
3933 }
3934
SetImmutableFontWeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3935 int32_t SetImmutableFontWeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3936 {
3937 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3938 if (actualSize < 0 || item->value[NUM_0].i32 < 0 ||
3939 item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_FONT_WEIGHT_REGULAR)) {
3940 return ERROR_CODE_PARAM_INVALID;
3941 }
3942 // already check in entry point.
3943 auto* fullImpl = GetFullImpl();
3944 if (node->type == ARKUI_NODE_TEXT) {
3945 fullImpl->getNodeModifiers()->getTextModifier()->setImmutableFontWeight(node->uiNodeHandle, item->value[0].i32);
3946 return ERROR_CODE_NO_ERROR;
3947 }
3948 return ERROR_CODE_PARAM_INVALID;
3949 }
3950
SetFontSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3951 int32_t SetFontSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3952 {
3953 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3954 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
3955 return ERROR_CODE_PARAM_INVALID;
3956 }
3957 auto* fullImpl = GetFullImpl();
3958 int32_t unit = GetDefaultUnit(node, UNIT_FP);
3959 if (node->type == ARKUI_NODE_TEXT_INPUT) {
3960 struct ArkUILengthType fontSize = { nullptr, item->value[0].f32, unit };
3961 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontSize(node->uiNodeHandle, &fontSize);
3962 } else if (node->type == ARKUI_NODE_TEXT) {
3963 fullImpl->getNodeModifiers()->getTextModifier()->setFontSize(node->uiNodeHandle, item->value[0].f32, unit);
3964 } else if (node->type == ARKUI_NODE_SPAN) {
3965 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanFontSize(
3966 node->uiNodeHandle, item->value[0].f32, unit);
3967 } else if (node->type == ARKUI_NODE_BUTTON) {
3968 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonFontSize(node->uiNodeHandle,
3969 item->value[0].f32, unit);
3970 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
3971 struct ArkUIResourceLength fontSize = { item->value[0].f32, unit, nullptr };
3972 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontSize(node->uiNodeHandle, &fontSize);
3973 } else {
3974 return ERROR_CODE_PARAM_INVALID;
3975 }
3976 return ERROR_CODE_NO_ERROR;
3977 }
3978
ResetFontSize(ArkUI_NodeHandle node)3979 void ResetFontSize(ArkUI_NodeHandle node)
3980 {
3981 auto* fullImpl = GetFullImpl();
3982 if (node->type == ARKUI_NODE_TEXT) {
3983 fullImpl->getNodeModifiers()->getTextModifier()->resetFontSize(node->uiNodeHandle);
3984 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
3985 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontSize(node->uiNodeHandle);
3986 } else if (node->type == ARKUI_NODE_SPAN) {
3987 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanFontSize(node->uiNodeHandle);
3988 } else if (node->type == ARKUI_NODE_BUTTON) {
3989 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonFontSize(node->uiNodeHandle);
3990 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
3991 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontSize(node->uiNodeHandle);
3992 }
3993 }
3994
SetFontStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)3995 int32_t SetFontStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
3996 {
3997 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
3998 if (actualSize < 0 || item->value[NUM_0].i32 < 0 ||
3999 item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_FONT_STYLE_ITALIC)) {
4000 return ERROR_CODE_PARAM_INVALID;
4001 }
4002 // already check in entry point.
4003 auto* fullImpl = GetFullImpl();
4004 switch (node->type) {
4005 case ARKUI_NODE_TEXT_INPUT:
4006 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontStyle(
4007 node->uiNodeHandle, item->value[0].i32);
4008 break;
4009 case ARKUI_NODE_TEXT:
4010 fullImpl->getNodeModifiers()->getTextModifier()->setFontStyle(node->uiNodeHandle, item->value[0].i32);
4011 break;
4012 case ARKUI_NODE_SPAN:
4013 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanFontStyle(node->uiNodeHandle, item->value[0].i32);
4014 break;
4015 case ARKUI_NODE_TEXT_AREA:
4016 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontStyle(
4017 node->uiNodeHandle, item->value[0].i32);
4018 break;
4019 default:
4020 return ERROR_CODE_PARAM_INVALID;
4021 }
4022 return ERROR_CODE_NO_ERROR;
4023 }
4024
ResetFontStyle(ArkUI_NodeHandle node)4025 void ResetFontStyle(ArkUI_NodeHandle node)
4026 {
4027 auto* fullImpl = GetFullImpl();
4028 if (node->type == ARKUI_NODE_TEXT) {
4029 fullImpl->getNodeModifiers()->getTextModifier()->resetFontStyle(node->uiNodeHandle);
4030 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
4031 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontStyle(node->uiNodeHandle);
4032 } else if (node->type == ARKUI_NODE_SPAN) {
4033 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanFontStyle(node->uiNodeHandle);
4034 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4035 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontStyle(node->uiNodeHandle);
4036 }
4037 }
4038
SetTextInputPlaceholder(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4039 int32_t SetTextInputPlaceholder(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4040 {
4041 // already check in entry point.
4042 auto* fullImpl = GetFullImpl();
4043 ArkUI_CharPtr itemString = item->string;
4044 if (!itemString) {
4045 itemString = "";
4046 }
4047 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPlaceholderString(
4048 node->uiNodeHandle, itemString);
4049 return ERROR_CODE_NO_ERROR;
4050 }
4051
GetTextInputPlaceholder(ArkUI_NodeHandle node)4052 const ArkUI_AttributeItem* GetTextInputPlaceholder(ArkUI_NodeHandle node)
4053 {
4054 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputPlaceholder(
4055 node->uiNodeHandle);
4056 g_attributeItem.string = resultValue;
4057 return &g_attributeItem;
4058 }
4059
ResetTextInputPlaceholder(ArkUI_NodeHandle node)4060 void ResetTextInputPlaceholder(ArkUI_NodeHandle node)
4061 {
4062 auto* fullImpl = GetFullImpl();
4063 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPlaceholderString(node->uiNodeHandle, "");
4064 }
4065
SetTextInputText(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4066 int32_t SetTextInputText(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4067 {
4068 // already check in entry point.
4069 auto* fullImpl = GetFullImpl();
4070 ArkUI_CharPtr itemString = item->string;
4071 if (!itemString) {
4072 itemString = "";
4073 }
4074 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputTextString(
4075 node->uiNodeHandle, itemString);
4076 return ERROR_CODE_NO_ERROR;
4077 }
4078
GetTextInputText(ArkUI_NodeHandle node)4079 const ArkUI_AttributeItem* GetTextInputText(ArkUI_NodeHandle node)
4080 {
4081 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputText(
4082 node->uiNodeHandle);
4083 g_attributeItem.string = resultValue;
4084 return &g_attributeItem;
4085 }
4086
ResetTextInputText(ArkUI_NodeHandle node)4087 void ResetTextInputText(ArkUI_NodeHandle node)
4088 {
4089 auto* fullImpl = GetFullImpl();
4090 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputTextString(node->uiNodeHandle, "");
4091 }
4092
SetCaretColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4093 int32_t SetCaretColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4094 {
4095 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4096 if (actualSize < 0) {
4097 return ERROR_CODE_PARAM_INVALID;
4098 }
4099 // already check in entry point.
4100 auto* fullImpl = GetFullImpl();
4101 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4102 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputCaretColor(
4103 node->uiNodeHandle, item->value[NUM_0].u32);
4104 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4105 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaCaretColor(
4106 node->uiNodeHandle, item->value[NUM_0].u32);
4107 } else {
4108 return ERROR_CODE_PARAM_INVALID;
4109 }
4110 return ERROR_CODE_NO_ERROR;
4111 }
4112
GetCaretColor(ArkUI_NodeHandle node)4113 const ArkUI_AttributeItem* GetCaretColor(ArkUI_NodeHandle node)
4114 {
4115 uint32_t resultValue = DEFAULT_COLOR;
4116 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4117 resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputCaretColor(
4118 node->uiNodeHandle);
4119 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4120 resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaCaretColor(
4121 node->uiNodeHandle);
4122 }
4123 g_numberValues[0].u32 = resultValue;
4124 return &g_attributeItem;
4125 }
4126
ResetCaretColor(ArkUI_NodeHandle node)4127 void ResetCaretColor(ArkUI_NodeHandle node)
4128 {
4129 auto* fullImpl = GetFullImpl();
4130 switch (node->type) {
4131 case ARKUI_NODE_TEXT_INPUT:
4132 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputCaretColor(node->uiNodeHandle);
4133 break;
4134 case ARKUI_NODE_TEXT_AREA:
4135 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaCaretColor(node->uiNodeHandle);
4136 break;
4137 default:
4138 break;
4139 }
4140 }
4141
SetCaretStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4142 int32_t SetCaretStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4143 {
4144 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4145 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
4146 return ERROR_CODE_PARAM_INVALID;
4147 }
4148 // already check in entry point.
4149 auto* fullImpl = GetFullImpl();
4150 int32_t unit = GetDefaultUnit(node, UNIT_VP);
4151 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputCaret(
4152 node->uiNodeHandle, item->value[NUM_0].f32, unit);
4153 return ERROR_CODE_NO_ERROR;
4154 }
4155
GetCaretStyle(ArkUI_NodeHandle node)4156 const ArkUI_AttributeItem* GetCaretStyle(ArkUI_NodeHandle node)
4157 {
4158 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
4159 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputCaretStyle(
4160 node->uiNodeHandle, unit);
4161 g_numberValues[0].f32 = resultValue;
4162 return &g_attributeItem;
4163 }
4164
ResetCaretStyle(ArkUI_NodeHandle node)4165 void ResetCaretStyle(ArkUI_NodeHandle node)
4166 {
4167 auto* fullImpl = GetFullImpl();
4168 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputCaretStyle(node->uiNodeHandle);
4169 }
4170
SetShowUnderline(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4171 int32_t SetShowUnderline(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4172 {
4173 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4174 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
4175 return ERROR_CODE_PARAM_INVALID;
4176 }
4177 auto* fullImpl = GetFullImpl();
4178 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputShowUnderline(
4179 node->uiNodeHandle, item->value[NUM_0].i32);
4180 return ERROR_CODE_NO_ERROR;
4181 }
4182
GetShowUnderline(ArkUI_NodeHandle node)4183 const ArkUI_AttributeItem* GetShowUnderline(ArkUI_NodeHandle node)
4184 {
4185 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputShowUnderline(
4186 node->uiNodeHandle);
4187 g_numberValues[0].i32 = resultValue;
4188 return &g_attributeItem;
4189 }
4190
ResetShowUnderline(ArkUI_NodeHandle node)4191 void ResetShowUnderline(ArkUI_NodeHandle node)
4192 {
4193 auto* fullImpl = GetFullImpl();
4194 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputShowUnderline(node->uiNodeHandle);
4195 }
4196
SetMaxLength(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4197 int32_t SetMaxLength(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4198 {
4199 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4200 if (actualSize < 0 || item->value[NUM_0].i32 < 0) {
4201 return ERROR_CODE_PARAM_INVALID;
4202 }
4203 // already check in entry point.
4204 auto* fullImpl = GetFullImpl();
4205 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4206 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputMaxLength(
4207 node->uiNodeHandle, item->value[NUM_0].i32);
4208 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4209 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaMaxLength(
4210 node->uiNodeHandle, item->value[NUM_0].i32);
4211 } else {
4212 return ERROR_CODE_PARAM_INVALID;
4213 }
4214 return ERROR_CODE_NO_ERROR;
4215 }
4216
GetMaxLength(ArkUI_NodeHandle node)4217 const ArkUI_AttributeItem* GetMaxLength(ArkUI_NodeHandle node)
4218 {
4219 float resultValue = NUM_0;
4220 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4221 resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputMaxLength(
4222 node->uiNodeHandle);
4223 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4224 resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaMaxLength(
4225 node->uiNodeHandle);
4226 }
4227 g_numberValues[0].i32 = resultValue;
4228 return &g_attributeItem;
4229 }
4230
ResetMaxLength(ArkUI_NodeHandle node)4231 void ResetMaxLength(ArkUI_NodeHandle node)
4232 {
4233 auto* fullImpl = GetFullImpl();
4234 switch (node->type) {
4235 case ARKUI_NODE_TEXT_INPUT:
4236 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputMaxLength(node->uiNodeHandle);
4237 break;
4238 case ARKUI_NODE_TEXT_AREA:
4239 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaMaxLength(node->uiNodeHandle);
4240 break;
4241 default:
4242 break;
4243 }
4244 }
4245
SetEnterKeyType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4246 int32_t SetEnterKeyType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4247 {
4248 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4249 if (actualSize < 0 || item->value[NUM_0].i32 < static_cast<int32_t>(ARKUI_ENTER_KEY_TYPE_GO) ||
4250 item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_ENTER_KEY_TYPE_NEW_LINE)) {
4251 return ERROR_CODE_PARAM_INVALID;
4252 }
4253 // already check in entry point.
4254 auto* fullImpl = GetFullImpl();
4255 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputEnterKeyType(
4256 node->uiNodeHandle, item->value[NUM_0].i32);
4257 return ERROR_CODE_NO_ERROR;
4258 }
4259
GetEnterKeyType(ArkUI_NodeHandle node)4260 const ArkUI_AttributeItem* GetEnterKeyType(ArkUI_NodeHandle node)
4261 {
4262 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputEnterKeyType(
4263 node->uiNodeHandle);
4264 g_numberValues[0].i32 = resultValue;
4265 return &g_attributeItem;
4266 }
4267
ResetEnterKeyType(ArkUI_NodeHandle node)4268 void ResetEnterKeyType(ArkUI_NodeHandle node)
4269 {
4270 auto* fullImpl = GetFullImpl();
4271 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputEnterKeyType(node->uiNodeHandle);
4272 }
4273
SetPlaceholderColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4274 int32_t SetPlaceholderColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4275 {
4276 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4277 if (actualSize < 0) {
4278 return ERROR_CODE_PARAM_INVALID;
4279 }
4280 // already check in entry point.
4281 auto* fullImpl = GetFullImpl();
4282 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4283 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPlaceholderColor(
4284 node->uiNodeHandle, item->value[NUM_0].u32);
4285 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4286 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaPlaceholderColor(
4287 node->uiNodeHandle, item->value[NUM_0].u32);
4288 } else {
4289 return ERROR_CODE_PARAM_INVALID;
4290 }
4291 return ERROR_CODE_NO_ERROR;
4292 }
4293
GetPlaceholderColor(ArkUI_NodeHandle node)4294 const ArkUI_AttributeItem* GetPlaceholderColor(ArkUI_NodeHandle node)
4295 {
4296 uint32_t resultValue = DEFAULT_COLOR;
4297 if (node->type == ARKUI_NODE_TEXT_INPUT) {
4298 resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputPlaceholderColor(
4299 node->uiNodeHandle);
4300 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
4301 resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaPlaceholderColor(
4302 node->uiNodeHandle);
4303 }
4304 g_numberValues[0].u32 = resultValue;
4305 return &g_attributeItem;
4306 }
4307
ResetPlaceholderColor(ArkUI_NodeHandle node)4308 void ResetPlaceholderColor(ArkUI_NodeHandle node)
4309 {
4310 auto* fullImpl = GetFullImpl();
4311 switch (node->type) {
4312 case ARKUI_NODE_TEXT_INPUT:
4313 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputPlaceholderColor(node->uiNodeHandle);
4314 break;
4315 case ARKUI_NODE_TEXT_AREA:
4316 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaPlaceholderColor(node->uiNodeHandle);
4317 break;
4318 default:
4319 break;
4320 }
4321 }
4322
SetTextInputPlaceholderFont(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4323 int32_t SetTextInputPlaceholderFont(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4324 {
4325 if (item == nullptr) {
4326 return ERROR_CODE_PARAM_INVALID;
4327 }
4328 auto* fullImpl = GetFullImpl();
4329 struct ArkUIResourceLength size = { 16.0, GetDefaultUnit(node, UNIT_FP) };
4330 int weight = ARKUI_FONT_WEIGHT_NORMAL;
4331 int style = ARKUI_FONT_STYLE_NORMAL;
4332 if (item->size > NUM_0) {
4333 if (LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
4334 return ERROR_CODE_PARAM_INVALID;
4335 }
4336 size.value = item->value[NUM_0].f32;
4337 }
4338 if (item->size > NUM_1) {
4339 if (item->value[NUM_1].i32 < 0 || item->value[NUM_1].i32 > static_cast<int32_t>(ARKUI_FONT_STYLE_ITALIC)) {
4340 return ERROR_CODE_PARAM_INVALID;
4341 }
4342 style = item->value[NUM_1].i32;
4343 }
4344 if (item->size > NUM_2) {
4345 if (item->value[NUM_2].i32 < 0 || item->value[NUM_2].i32 > static_cast<int32_t>(ARKUI_FONT_WEIGHT_REGULAR)) {
4346 return ERROR_CODE_PARAM_INVALID;
4347 }
4348 weight = item->value[NUM_2].i32;
4349 }
4350 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPlaceholderFontEnum(
4351 node->uiNodeHandle, &size, weight, item->string, style);
4352 return ERROR_CODE_NO_ERROR;
4353 }
4354
GetTextInputPlaceholderFont(ArkUI_NodeHandle node)4355 const ArkUI_AttributeItem* GetTextInputPlaceholderFont(ArkUI_NodeHandle node)
4356 {
4357 ArkUITextFont font;
4358 font.fontSizeUnit = GetDefaultUnit(node, UNIT_FP);
4359 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputPlaceholderFont(
4360 node->uiNodeHandle, &font);
4361 int index = 0;
4362 g_numberValues[index++].f32 = font.fontSize;
4363 g_numberValues[index++].i32 = font.fontStyle;
4364 g_numberValues[index++].i32 = font.fontWeight;
4365 g_attributeItem.size = index;
4366 g_attributeItem.string = font.fontFamilies;
4367 return &g_attributeItem;
4368 }
4369
ResetTextInputPlaceholderFont(ArkUI_NodeHandle node)4370 void ResetTextInputPlaceholderFont(ArkUI_NodeHandle node)
4371 {
4372 auto* fullImpl = GetFullImpl();
4373 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputPlaceholderFont(node->uiNodeHandle);
4374 }
4375
SetEnableKeyboardOnFocus(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4376 int32_t SetEnableKeyboardOnFocus(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4377 {
4378 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4379 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
4380 return ERROR_CODE_PARAM_INVALID;
4381 }
4382 // already check in entry point.
4383 auto* fullImpl = GetFullImpl();
4384 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputEnableKeyboardOnFocus(
4385 node->uiNodeHandle, item->value[NUM_0].i32);
4386 return ERROR_CODE_NO_ERROR;
4387 }
4388
GetEnableKeyboardOnFocus(ArkUI_NodeHandle node)4389 const ArkUI_AttributeItem* GetEnableKeyboardOnFocus(ArkUI_NodeHandle node)
4390 {
4391 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputRequestKeyboardOnFocus(
4392 node->uiNodeHandle);
4393 g_numberValues[0].i32 = resultValue;
4394 return &g_attributeItem;
4395 }
4396
ResetEnableKeyboardOnFocus(ArkUI_NodeHandle node)4397 void ResetEnableKeyboardOnFocus(ArkUI_NodeHandle node)
4398 {
4399 auto* fullImpl = GetFullImpl();
4400 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputEnableKeyboardOnFocus(node->uiNodeHandle);
4401 }
4402
SetTextInputType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4403 int32_t SetTextInputType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4404 {
4405 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4406 if (actualSize < 0 || item->value[NUM_0].i32 < static_cast<int32_t>(ARKUI_TEXTINPUT_TYPE_NORMAL) ||
4407 item->value[NUM_0].i32 > static_cast<int32_t>(ARKUI_TEXTINPUT_TYPE_NUMBER_DECIMAL)) {
4408 return ERROR_CODE_PARAM_INVALID;
4409 }
4410 // already check in entry point.
4411 auto* fullImpl = GetFullImpl();
4412 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputType(
4413 node->uiNodeHandle, item->value[NUM_0].i32);
4414 return ERROR_CODE_NO_ERROR;
4415 }
4416
GetTextInputType(ArkUI_NodeHandle node)4417 const ArkUI_AttributeItem* GetTextInputType(ArkUI_NodeHandle node)
4418 {
4419 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputType(
4420 node->uiNodeHandle);
4421 g_numberValues[0].i32 = resultValue;
4422 return &g_attributeItem;
4423 }
4424
ResetTextInputType(ArkUI_NodeHandle node)4425 void ResetTextInputType(ArkUI_NodeHandle node)
4426 {
4427 auto* fullImpl = GetFullImpl();
4428 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputType(node->uiNodeHandle);
4429 }
4430
SetSelectedBackgroundColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4431 int32_t SetSelectedBackgroundColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4432 {
4433 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4434 if (actualSize < 0) {
4435 return ERROR_CODE_PARAM_INVALID;
4436 }
4437 // already check in entry point.
4438 auto* fullImpl = GetFullImpl();
4439 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputSelectedBackgroundColor(
4440 node->uiNodeHandle, item->value[0].u32);
4441 return ERROR_CODE_NO_ERROR;
4442 }
4443
GetSelectedBackgroundColor(ArkUI_NodeHandle node)4444 const ArkUI_AttributeItem* GetSelectedBackgroundColor(ArkUI_NodeHandle node)
4445 {
4446 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputSelectedBackgroundColor(
4447 node->uiNodeHandle);
4448 g_numberValues[0].u32 = resultValue;
4449 return &g_attributeItem;
4450 }
4451
ResetSelectedBackgroundColor(ArkUI_NodeHandle node)4452 void ResetSelectedBackgroundColor(ArkUI_NodeHandle node)
4453 {
4454 auto* fullImpl = GetFullImpl();
4455 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputSelectedBackgroundColor(node->uiNodeHandle);
4456 }
4457
SetShowPasswordIcon(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4458 int32_t SetShowPasswordIcon(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4459 {
4460 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4461 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
4462 return ERROR_CODE_PARAM_INVALID;
4463 }
4464 // already check in entry point.
4465 auto* fullImpl = GetFullImpl();
4466 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputShowPasswordIcon(
4467 node->uiNodeHandle, item->value[NUM_0].i32);
4468 return ERROR_CODE_NO_ERROR;
4469 }
4470
GetShowPasswordIcon(ArkUI_NodeHandle node)4471 const ArkUI_AttributeItem* GetShowPasswordIcon(ArkUI_NodeHandle node)
4472 {
4473 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputShowPasswordIcon(
4474 node->uiNodeHandle);
4475 g_numberValues[0].i32 = resultValue;
4476 return &g_attributeItem;
4477 }
4478
ResetShowPasswordIcon(ArkUI_NodeHandle node)4479 void ResetShowPasswordIcon(ArkUI_NodeHandle node)
4480 {
4481 auto* fullImpl = GetFullImpl();
4482 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputShowPasswordIcon(node->uiNodeHandle);
4483 }
4484
StopTextInputEditing(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4485 int32_t StopTextInputEditing(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4486 {
4487 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4488 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
4489 return ERROR_CODE_PARAM_INVALID;
4490 }
4491 // already check in entry point.
4492 auto* fullImpl = GetFullImpl();
4493 if (item->value[NUM_0].i32 == 0) {
4494 fullImpl->getNodeModifiers()->getTextInputModifier()->stopTextInputTextEditing(node->uiNodeHandle);
4495 }
4496 return ERROR_CODE_NO_ERROR;
4497 }
4498
GetTextInputEditing(ArkUI_NodeHandle node)4499 const ArkUI_AttributeItem* GetTextInputEditing(ArkUI_NodeHandle node)
4500 {
4501 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputEditing(
4502 node->uiNodeHandle);
4503 g_numberValues[0].i32 = resultValue;
4504 return &g_attributeItem;
4505 }
4506
SetTextInputCancelButton(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4507 int32_t SetTextInputCancelButton(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4508 {
4509 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4510 if (actualSize < 0 || !InRegion(static_cast<int32_t>(ARKUI_CANCELBUTTON_STYLE_CONSTANT),
4511 static_cast<int32_t>(ARKUI_CANCELBUTTON_STYLE_INPUT), item->value[NUM_0].i32)) {
4512 return ERROR_CODE_PARAM_INVALID;
4513 }
4514 struct ArkUISizeType size = { -1.0f, GetDefaultUnit(node, UNIT_VP) };
4515 if (item->size > NUM_1) {
4516 size.value = item->value[NUM_1].f32;
4517 }
4518 uint32_t color = DEFAULT_COLOR;
4519 if (item->size > NUM_2) {
4520 color = item->value[NUM_2].u32;
4521 }
4522 std::string str = "";
4523 if (item->string) {
4524 str.assign(item->string);
4525 }
4526 auto* fullImpl = GetFullImpl();
4527 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputCancelButton(node->uiNodeHandle,
4528 item->value[NUM_0].i32, &size, color, str.c_str());
4529 return ERROR_CODE_NO_ERROR;
4530 }
4531
GetTextInputCancelButton(ArkUI_NodeHandle node)4532 const ArkUI_AttributeItem* GetTextInputCancelButton(ArkUI_NodeHandle node)
4533 {
4534 int index = 0;
4535 g_numberValues[index++].i32 =
4536 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputCancelButtonStyle(node->uiNodeHandle);
4537 g_numberValues[index++].f32 =
4538 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputCancelIconSize(
4539 node->uiNodeHandle, GetDefaultUnit(node, UNIT_VP));
4540 g_numberValues[index++].u32 =
4541 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputTextCancelIconColor(node->uiNodeHandle);
4542 g_attributeItem.size = index;
4543 g_attributeItem.string =
4544 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputTextCancelIconSrc(node->uiNodeHandle);
4545 return &g_attributeItem;
4546 }
4547
ResetTextInputCancelButton(ArkUI_NodeHandle node)4548 void ResetTextInputCancelButton(ArkUI_NodeHandle node)
4549 {
4550 auto* fullImpl = GetFullImpl();
4551 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputCancelButton(node->uiNodeHandle);
4552 }
4553
SetTextInputTextSelection(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4554 int32_t SetTextInputTextSelection(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4555 {
4556 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
4557 if (actualSize < 0) {
4558 return ERROR_CODE_PARAM_INVALID;
4559 }
4560 if (item->value[NUM_0].i32 > item->value[NUM_1].i32) {
4561 return ERROR_CODE_PARAM_INVALID;
4562 }
4563 // already check in entry point.
4564 auto* fullImpl = GetFullImpl();
4565 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputTextSelection(
4566 node->uiNodeHandle, item->value[NUM_0].i32, item->value[NUM_1].i32);
4567 return ERROR_CODE_NO_ERROR;
4568 }
4569
GetTextInputTextSelection(ArkUI_NodeHandle node)4570 const ArkUI_AttributeItem* GetTextInputTextSelection(ArkUI_NodeHandle node)
4571 {
4572 g_numberValues[0].i32 = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputTextSelectionIndex(
4573 node->uiNodeHandle, false);
4574 g_numberValues[1].i32 = GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputTextSelectionIndex(
4575 node->uiNodeHandle, true);
4576 g_attributeItem.size = REQUIRED_TWO_PARAM;
4577 return &g_attributeItem;
4578 }
4579
ResetTextInputTextSelection(ArkUI_NodeHandle node)4580 void ResetTextInputTextSelection(ArkUI_NodeHandle node)
4581 {
4582 auto* fullImpl = GetFullImpl();
4583 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputTextSelection(node->uiNodeHandle, NUM_0, NUM_0);
4584 }
4585
SetTextInputSelectionMenuHidden(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4586 int32_t SetTextInputSelectionMenuHidden(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4587 {
4588 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
4589 return ERROR_CODE_PARAM_INVALID;
4590 }
4591 auto* fullImpl = GetFullImpl();
4592 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputSelectionMenuHidden(
4593 node->uiNodeHandle, item->value[NUM_0].i32);
4594 return ERROR_CODE_NO_ERROR;
4595 }
4596
GetTextInputSelectionMenuHidden(ArkUI_NodeHandle node)4597 const ArkUI_AttributeItem* GetTextInputSelectionMenuHidden(ArkUI_NodeHandle node)
4598 {
4599 g_numberValues[0].i32 =
4600 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputSelectionMenuHidden(node->uiNodeHandle);
4601 return &g_attributeItem;
4602 }
4603
ResetTextInputSelectionMenuHidden(ArkUI_NodeHandle node)4604 void ResetTextInputSelectionMenuHidden(ArkUI_NodeHandle node)
4605 {
4606 auto* fullImpl = GetFullImpl();
4607 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputSelectionMenuHidden(node->uiNodeHandle);
4608 }
4609
SetTextInputUnderlineColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4610 int32_t SetTextInputUnderlineColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4611 {
4612 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
4613 if (actualSize < 0) {
4614 return ERROR_CODE_PARAM_INVALID;
4615 }
4616 ArkUI_Uint32 values[NUM_4];
4617 values[NUM_0] = item->value[NUM_0].u32;
4618 values[NUM_1] = item->value[NUM_1].u32;
4619 values[NUM_2] = item->value[NUM_2].u32;
4620 values[NUM_3] = item->value[NUM_3].u32;
4621 ArkUI_Bool hasValues[NUM_4] = { 1, 1, 1, 1 };
4622 auto* fullImpl = GetFullImpl();
4623 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputUserUnderlineColor(
4624 node->uiNodeHandle, values, hasValues, NUM_4);
4625 return ERROR_CODE_NO_ERROR;
4626 }
4627
GetTextInputUnderlineColor(ArkUI_NodeHandle node)4628 const ArkUI_AttributeItem* GetTextInputUnderlineColor(ArkUI_NodeHandle node)
4629 {
4630 ArkUI_Uint32 values[NUM_4];
4631 auto* fullImpl = GetFullImpl();
4632 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputUserUnderlineColor(node->uiNodeHandle, &values);
4633 g_numberValues[NUM_0].u32 = values[NUM_0];
4634 g_numberValues[NUM_1].u32 = values[NUM_1];
4635 g_numberValues[NUM_2].u32 = values[NUM_2];
4636 g_numberValues[NUM_3].u32 = values[NUM_3];
4637 g_attributeItem.size = NUM_4;
4638 return &g_attributeItem;
4639 }
4640
ResetTextInputUnderlineColor(ArkUI_NodeHandle node)4641 void ResetTextInputUnderlineColor(ArkUI_NodeHandle node)
4642 {
4643 auto* fullImpl = GetFullImpl();
4644 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputUserUnderlineColor(node->uiNodeHandle);
4645 }
4646
SetTextInputEnableAutoFill(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4647 int32_t SetTextInputEnableAutoFill(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4648 {
4649 auto* fullImpl = GetFullImpl();
4650 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4651 if (actualSize < 0) {
4652 return ERROR_CODE_PARAM_INVALID;
4653 }
4654 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputEnableAutoFill(
4655 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4656 return ERROR_CODE_NO_ERROR;
4657 }
4658
GetTextInputEnableAutoFill(ArkUI_NodeHandle node)4659 const ArkUI_AttributeItem* GetTextInputEnableAutoFill(ArkUI_NodeHandle node)
4660 {
4661 auto fullImpl = GetFullImpl();
4662 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputEnableAutoFill(
4663 node->uiNodeHandle);
4664 g_attributeItem.size = REQUIRED_ONE_PARAM;
4665 return &g_attributeItem;
4666 }
4667
ResetTextInputEnableAutoFill(ArkUI_NodeHandle node)4668 void ResetTextInputEnableAutoFill(ArkUI_NodeHandle node)
4669 {
4670 auto* fullImpl = GetFullImpl();
4671 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputEnableAutoFill(node->uiNodeHandle);
4672 }
4673
SetEnablePreviewText(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4674 int32_t SetEnablePreviewText(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4675 {
4676 auto* fullImpl = GetFullImpl();
4677 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4678 if (actualSize < 0) {
4679 return ERROR_CODE_PARAM_INVALID;
4680 }
4681 switch (node->type) {
4682 case ARKUI_NODE_TEXT_INPUT:
4683 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputEnablePreviewText(
4684 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4685 break;
4686 case ARKUI_NODE_TEXT_AREA:
4687 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaEnablePreviewText(
4688 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4689 break;
4690 default:
4691 break;
4692 }
4693 return ERROR_CODE_NO_ERROR;
4694 }
4695
GetEnablePreviewText(ArkUI_NodeHandle node)4696 const ArkUI_AttributeItem* GetEnablePreviewText(ArkUI_NodeHandle node)
4697 {
4698 auto fullImpl = GetFullImpl();
4699 switch (node->type) {
4700 case ARKUI_NODE_TEXT_INPUT:
4701 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
4702 getTextInputEnablePreviewText(node->uiNodeHandle);
4703 break;
4704 case ARKUI_NODE_TEXT_AREA:
4705 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextAreaModifier()->
4706 getTextAreaEnablePreviewText(node->uiNodeHandle);
4707 break;
4708 default:
4709 break;
4710 }
4711 g_attributeItem.size = REQUIRED_ONE_PARAM;
4712 return &g_attributeItem;
4713 }
4714
ResetEnablePreviewText(ArkUI_NodeHandle node)4715 void ResetEnablePreviewText(ArkUI_NodeHandle node)
4716 {
4717 auto* fullImpl = GetFullImpl();
4718 switch (node->type) {
4719 case ARKUI_NODE_TEXT_INPUT:
4720 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputEnablePreviewText(node->uiNodeHandle);
4721 break;
4722 case ARKUI_NODE_TEXT_AREA:
4723 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaEnablePreviewText(node->uiNodeHandle);
4724 break;
4725 default:
4726 break;
4727 }
4728 }
4729
SetTextInputContentType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4730 int32_t SetTextInputContentType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4731 {
4732 auto* fullImpl = GetFullImpl();
4733 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4734 if (actualSize < 0) {
4735 return ERROR_CODE_PARAM_INVALID;
4736 }
4737 // The enum values of native_type.h are different from those of text_content_type.h. Convert the enum values.
4738 auto value = static_cast<uint32_t>(item->value[0].i32);
4739 if (value >= static_cast<uint32_t>(ARKUI_TEXTINPUT_CONTENT_TYPE_NICKNAME)
4740 && value <= static_cast<uint32_t>(ARKUI_TEXTINPUT_CONTENT_TYPE_FORMAT_ADDRESS)) {
4741 value += CONVERT_CONTENT_TYPE;
4742 }
4743 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputContentType(
4744 node->uiNodeHandle, value);
4745 return ERROR_CODE_NO_ERROR;
4746 }
4747
GetTextInputContentType(ArkUI_NodeHandle node)4748 const ArkUI_AttributeItem* GetTextInputContentType(ArkUI_NodeHandle node)
4749 {
4750 auto fullImpl = GetFullImpl();
4751 auto value = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputContentType(
4752 node->uiNodeHandle);
4753 if (value >= static_cast<int32_t>(
4754 static_cast<uint32_t>(ARKUI_TEXTINPUT_CONTENT_TYPE_FORMAT_ADDRESS) + CONVERT_CONTENT_TYPE) &&
4755 value <= static_cast<int32_t>(
4756 static_cast<uint32_t>(ARKUI_TEXTINPUT_CONTENT_TYPE_FORMAT_ADDRESS) + CONVERT_CONTENT_TYPE)) {
4757 value -= CONVERT_CONTENT_TYPE;
4758 }
4759 g_numberValues[0].i32 = value;
4760 g_attributeItem.size = REQUIRED_ONE_PARAM;
4761 return &g_attributeItem;
4762 }
4763
ResetTextInputContentType(ArkUI_NodeHandle node)4764 void ResetTextInputContentType(ArkUI_NodeHandle node)
4765 {
4766 auto* fullImpl = GetFullImpl();
4767 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputContentType(node->uiNodeHandle);
4768 }
4769
SetTextInputPasswordRules(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4770 int32_t SetTextInputPasswordRules(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4771 {
4772 auto* fullImpl = GetFullImpl();
4773 ArkUI_CharPtr itemString = item->string;
4774 if(!itemString) {
4775 itemString = "";
4776 }
4777 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputPasswordRules(
4778 node->uiNodeHandle, itemString);
4779 return ERROR_CODE_NO_ERROR;
4780 }
4781
GetTextInputPasswordRules(ArkUI_NodeHandle node)4782 const ArkUI_AttributeItem* GetTextInputPasswordRules(ArkUI_NodeHandle node)
4783 {
4784 auto fullImpl = GetFullImpl();
4785 g_attributeItem.string = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputPasswordRules(
4786 node->uiNodeHandle);
4787 return &g_attributeItem;
4788 }
4789
ResetTextInputPasswordRules(ArkUI_NodeHandle node)4790 void ResetTextInputPasswordRules(ArkUI_NodeHandle node)
4791 {
4792 auto* fullImpl = GetFullImpl();
4793 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputPasswordRules(node->uiNodeHandle);
4794 }
4795
SetTextInputSelectAll(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4796 int32_t SetTextInputSelectAll(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4797 {
4798 auto* fullImpl = GetFullImpl();
4799 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4800 if (actualSize < 0) {
4801 return ERROR_CODE_PARAM_INVALID;
4802 }
4803 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputSelectAll(
4804 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4805 return ERROR_CODE_NO_ERROR;
4806 }
4807
GetTextInputSelectAll(ArkUI_NodeHandle node)4808 const ArkUI_AttributeItem* GetTextInputSelectAll(ArkUI_NodeHandle node)
4809 {
4810 auto fullImpl = GetFullImpl();
4811 g_numberValues[NUM_0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputSelectAll(
4812 node->uiNodeHandle);
4813 g_attributeItem.size = REQUIRED_ONE_PARAM;
4814 return &g_attributeItem;
4815 }
4816
ResetTextInputSelectAll(ArkUI_NodeHandle node)4817 void ResetTextInputSelectAll(ArkUI_NodeHandle node)
4818 {
4819 auto* fullImpl = GetFullImpl();
4820 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputSelectAll(node->uiNodeHandle);
4821 }
4822
SetTextInputCaretOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4823 int32_t SetTextInputCaretOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4824 {
4825 auto* fullImpl = GetFullImpl();
4826 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4827 if (actualSize < 0) {
4828 return ERROR_CODE_PARAM_INVALID;
4829 }
4830 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputCaretPosition(
4831 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4832 return ERROR_CODE_NO_ERROR;
4833 }
4834
4835
GetTextInputCaretOffset(ArkUI_NodeHandle node)4836 const ArkUI_AttributeItem* GetTextInputCaretOffset(ArkUI_NodeHandle node)
4837 {
4838 auto* fullImpl = GetFullImpl();
4839 g_numberValues[NUM_0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputCaretIndex(
4840 node->uiNodeHandle);
4841 ArkUI_Float32 values[NUM_2];
4842 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputCaretOffset(node->uiNodeHandle, &values);
4843 g_numberValues[NUM_1].f32 = values[NUM_0];
4844 g_numberValues[NUM_2].f32 = values[NUM_1];
4845 g_attributeItem.size = REQUIRED_TWO_PARAM;
4846 return &g_attributeItem;
4847 }
4848
ResetTextInputCaretOffset(ArkUI_NodeHandle node)4849 void ResetTextInputCaretOffset(ArkUI_NodeHandle node)
4850 {
4851 auto* fullImpl = GetFullImpl();
4852 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputCaretPosition(node->uiNodeHandle);
4853 }
4854
SetInputFilter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4855 int32_t SetInputFilter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4856 {
4857 auto* fullImpl = GetFullImpl();
4858 ArkUI_CharPtr itemString = item->string;
4859 if(!itemString) {
4860 itemString = "";
4861 }
4862 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputInputFilter(
4863 node->uiNodeHandle, itemString);
4864 return ERROR_CODE_NO_ERROR;
4865 }
4866
GetInputFilter(ArkUI_NodeHandle node)4867 const ArkUI_AttributeItem* GetInputFilter(ArkUI_NodeHandle node)
4868 {
4869 auto fullImpl = GetFullImpl();
4870 g_attributeItem.string = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputInputFilter(
4871 node->uiNodeHandle);
4872 return &g_attributeItem;
4873 }
4874
ResetInputFilter(ArkUI_NodeHandle node)4875 void ResetInputFilter(ArkUI_NodeHandle node)
4876 {
4877 auto* fullImpl = GetFullImpl();
4878 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputInputFilter(node->uiNodeHandle);
4879 }
4880
SetTextInputStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4881 int32_t SetTextInputStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4882 {
4883 auto* fullImpl = GetFullImpl();
4884 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4885 if (actualSize < 0) {
4886 return ERROR_CODE_PARAM_INVALID;
4887 }
4888 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputStyle(
4889 node->uiNodeHandle, static_cast<int32_t>(item->value[0].i32));
4890 return ERROR_CODE_NO_ERROR;
4891 }
4892
GetTextInputStyle(ArkUI_NodeHandle node)4893 const ArkUI_AttributeItem* GetTextInputStyle(ArkUI_NodeHandle node)
4894 {
4895 auto fullImpl = GetFullImpl();
4896 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputStyle(node->uiNodeHandle);
4897 g_attributeItem.size = REQUIRED_ONE_PARAM;
4898 return &g_attributeItem;
4899 }
4900
ResetTextInputStyle(ArkUI_NodeHandle node)4901 void ResetTextInputStyle(ArkUI_NodeHandle node)
4902 {
4903 auto* fullImpl = GetFullImpl();
4904 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputStyle(node->uiNodeHandle);
4905 }
4906
GetTextInputContentRect(ArkUI_NodeHandle node)4907 const ArkUI_AttributeItem* GetTextInputContentRect(ArkUI_NodeHandle node)
4908 {
4909 ArkUI_Float32 values[NUM_4];
4910 auto* fullImpl = GetFullImpl();
4911 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputContentRect(node->uiNodeHandle, &values);
4912 g_numberValues[NUM_0].f32 = values[NUM_0];
4913 g_numberValues[NUM_1].f32 = values[NUM_1];
4914 g_numberValues[NUM_2].f32 = values[NUM_2];
4915 g_numberValues[NUM_3].f32 = values[NUM_3];
4916 g_attributeItem.size = REQUIRED_FOUR_PARAM;
4917 return &g_attributeItem;
4918 }
4919
GetTextInputContentLineCount(ArkUI_NodeHandle node)4920 const ArkUI_AttributeItem* GetTextInputContentLineCount(ArkUI_NodeHandle node)
4921 {
4922 auto* fullImpl = GetFullImpl();
4923 g_numberValues[NUM_0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputContentLinesNum(
4924 node->uiNodeHandle);
4925 g_attributeItem.size = REQUIRED_ONE_PARAM;
4926 return &g_attributeItem;
4927 }
4928
SetInputCustomKeyboard(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4929 int32_t SetInputCustomKeyboard(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4930 {
4931 if (!item->object) {
4932 return ERROR_CODE_PARAM_INVALID;
4933 }
4934 auto fullImpl = GetFullImpl();
4935 auto customKeyboard = reinterpret_cast<ArkUI_NodeHandle>(item->object);
4936 auto supportAvoidance = false;
4937 if (item->size > 0) {
4938 supportAvoidance = static_cast<bool>(item->value[0].i32);
4939 }
4940 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputCustomKeyboard(
4941 node->uiNodeHandle, customKeyboard->uiNodeHandle, supportAvoidance);
4942 return ERROR_CODE_NO_ERROR;
4943 }
4944
GetInputCustomKeyboard(ArkUI_NodeHandle node)4945 const ArkUI_AttributeItem* GetInputCustomKeyboard(ArkUI_NodeHandle node)
4946 {
4947 auto fullImpl = GetFullImpl();
4948 auto* value = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputCustomKeyboard(
4949 node->uiNodeHandle);
4950 void* attachNode = fullImpl->getExtendedAPI()->getAttachNodePtr(value);
4951 if (attachNode) {
4952 g_attributeItem.object = reinterpret_cast<ArkUI_NodeHandle>(attachNode);
4953 }
4954 g_numberValues[NUM_0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
4955 getTextInputCustomKeyboardOption(node->uiNodeHandle);
4956 g_attributeItem.size = REQUIRED_ONE_PARAM;
4957 return &g_attributeItem;
4958 }
4959
ResetInputCustomKeyboard(ArkUI_NodeHandle node)4960 void ResetInputCustomKeyboard(ArkUI_NodeHandle node)
4961 {
4962 auto* fullImpl = GetFullImpl();
4963 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputCustomKeyboard(node->uiNodeHandle);
4964 }
4965
SetTextInputWordBreak(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4966 int32_t SetTextInputWordBreak(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4967 {
4968 auto* fullImpl = GetFullImpl();
4969 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4970 if (actualSize < 0) {
4971 return ERROR_CODE_PARAM_INVALID;
4972 }
4973 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputWordBreak(
4974 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
4975 return ERROR_CODE_NO_ERROR;
4976 }
4977
GetTextInputWordBreak(ArkUI_NodeHandle node)4978 const ArkUI_AttributeItem* GetTextInputWordBreak(ArkUI_NodeHandle node)
4979 {
4980 auto fullImpl = GetFullImpl();
4981 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputWordBreak(
4982 node->uiNodeHandle);
4983 g_attributeItem.size = REQUIRED_ONE_PARAM;
4984 return &g_attributeItem;
4985 }
4986
ResetTextInputWordBreak(ArkUI_NodeHandle node)4987 void ResetTextInputWordBreak(ArkUI_NodeHandle node)
4988 {
4989 auto* fullImpl = GetFullImpl();
4990 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputWordBreak(node->uiNodeHandle);
4991 }
4992
SetTextInputNumberOfLines(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)4993 int32_t SetTextInputNumberOfLines(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
4994 {
4995 auto* fullImpl = GetFullImpl();
4996 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
4997 if (actualSize < 0) {
4998 return ERROR_CODE_PARAM_INVALID;
4999 }
5000 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputNumberOfLines(
5001 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
5002 return ERROR_CODE_NO_ERROR;
5003 }
5004
SetTextInputKeyboardAppearance(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5005 int32_t SetTextInputKeyboardAppearance(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5006 {
5007 auto* fullImpl = GetFullImpl();
5008 if (item->size != 1 || !CheckAttributeIsKeyboardAppearance(item->value[0].i32)) {
5009 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputKeyboardAppearance(
5010 node->uiNodeHandle, ArkUI_KeyboardAppearance::ARKUI_KEYBOARD_APPEARANCE_NONE_IMMERSIVE);
5011 return ERROR_CODE_PARAM_INVALID;
5012 }
5013 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputKeyboardAppearance(
5014 node->uiNodeHandle, item->value[0].i32);
5015 return ERROR_CODE_NO_ERROR;
5016 }
5017
GetTextInputKeyboardAppearance(ArkUI_NodeHandle node)5018 const ArkUI_AttributeItem* GetTextInputKeyboardAppearance(ArkUI_NodeHandle node)
5019 {
5020 auto fullImpl = GetFullImpl();
5021 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
5022 getTextInputKeyboardAppearance(node->uiNodeHandle);
5023 g_attributeItem.size = REQUIRED_ONE_PARAM;
5024 return &g_attributeItem;
5025 }
5026
ResetTextInputKeyboardAppearance(ArkUI_NodeHandle node)5027 void ResetTextInputKeyboardAppearance(ArkUI_NodeHandle node)
5028 {
5029 auto* fullImpl = GetFullImpl();
5030 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputKeyboardAppearance(
5031 node->uiNodeHandle, ArkUI_KeyboardAppearance::ARKUI_KEYBOARD_APPEARANCE_NONE_IMMERSIVE);
5032 }
5033
GetTextInputNumberOfLines(ArkUI_NodeHandle node)5034 const ArkUI_AttributeItem* GetTextInputNumberOfLines(ArkUI_NodeHandle node)
5035 {
5036 auto fullImpl = GetFullImpl();
5037 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputNumberOfLines(
5038 node->uiNodeHandle);
5039 g_attributeItem.size = REQUIRED_ONE_PARAM;
5040 return &g_attributeItem;
5041 }
5042
ResetTextInputNumberOfLines(ArkUI_NodeHandle node)5043 void ResetTextInputNumberOfLines(ArkUI_NodeHandle node)
5044 {
5045 auto* fullImpl = GetFullImpl();
5046 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputNumberOfLines(node->uiNodeHandle);
5047 }
5048
SetBlurOnSubmit(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5049 int32_t SetBlurOnSubmit(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5050 {
5051 auto actualSize = CheckAttributeItemArray(item, NUM_1);
5052 if (actualSize < 0) {
5053 return ERROR_CODE_PARAM_INVALID;
5054 }
5055 auto* fullImpl = GetFullImpl();
5056 fullImpl->getNodeModifiers()->getTextInputModifier()->setBlurOnSubmit(node->uiNodeHandle, item->value[0].i32);
5057 return ERROR_CODE_NO_ERROR;
5058 }
5059
ResetBlurOnSubmit(ArkUI_NodeHandle node)5060 void ResetBlurOnSubmit(ArkUI_NodeHandle node)
5061 {
5062 auto* fullImpl = GetFullImpl();
5063 switch (node->type) {
5064 case ARKUI_NODE_TEXT_INPUT:
5065 fullImpl->getNodeModifiers()->getTextInputModifier()->setBlurOnSubmit(node->uiNodeHandle, true);
5066 break;
5067 case ARKUI_NODE_TEXT_AREA:
5068 fullImpl->getNodeModifiers()->getTextInputModifier()->setBlurOnSubmit(node->uiNodeHandle, false);
5069 break;
5070 default:
5071 break;
5072 }
5073 }
5074
SetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5075 int32_t SetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5076 {
5077 auto* fullImpl = GetFullImpl();
5078 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5079 if (actualSize < 0) {
5080 return ERROR_CODE_PARAM_INVALID;
5081 }
5082 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputShowKeyBoardOnFocus(
5083 node->uiNodeHandle, item->value[0].i32);
5084 return ERROR_CODE_NO_ERROR;
5085 }
5086
GetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node)5087 const ArkUI_AttributeItem* GetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node)
5088 {
5089 auto fullImpl = GetFullImpl();
5090 g_numberValues[0].i32 =
5091 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputShowKeyBoardOnFocus(node->uiNodeHandle);
5092 g_attributeItem.size = REQUIRED_ONE_PARAM;
5093 return &g_attributeItem;
5094 }
5095
ResetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node)5096 void ResetTextInputShowKeyBoardOnFocus(ArkUI_NodeHandle node)
5097 {
5098 auto* fullImpl = GetFullImpl();
5099 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputShowKeyBoardOnFocus(node->uiNodeHandle);
5100 }
5101
GetBlurOnSubmit(ArkUI_NodeHandle node)5102 const ArkUI_AttributeItem* GetBlurOnSubmit(ArkUI_NodeHandle node)
5103 {
5104 auto* fullImpl = GetFullImpl();
5105 g_numberValues[0].i32 =
5106 fullImpl->getNodeModifiers()->getTextInputModifier()->getBlurOnSubmit(node->uiNodeHandle);
5107 g_attributeItem.size = REQUIRED_ONE_PARAM;
5108 return &g_attributeItem;
5109 }
5110 // Stack Attribute functions
SetAlignContent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5111 int32_t SetAlignContent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5112 {
5113 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5114 if (actualSize < 0 || !InRegion(NUM_0, NUM_8, item->value[0].i32)) {
5115 return ERROR_CODE_PARAM_INVALID;
5116 }
5117 auto fullImpl = GetFullImpl();
5118 auto attrVal = item->value[NUM_0].i32;
5119 fullImpl->getNodeModifiers()->getStackModifier()->setAlignContent(node->uiNodeHandle, attrVal);
5120 return ERROR_CODE_NO_ERROR;
5121 }
5122
GetAlignContent(ArkUI_NodeHandle node)5123 const ArkUI_AttributeItem* GetAlignContent(ArkUI_NodeHandle node)
5124 {
5125 auto fullImpl = GetFullImpl();
5126 auto alignContent = fullImpl->getNodeModifiers()->getStackModifier()->getAlignContent(node->uiNodeHandle);
5127 g_numberValues[0].i32 = alignContent;
5128 g_attributeItem.size = REQUIRED_ONE_PARAM;
5129 return &g_attributeItem;
5130 }
5131
ResetAlignContent(ArkUI_NodeHandle node)5132 void ResetAlignContent(ArkUI_NodeHandle node)
5133 {
5134 // already check in entry point.
5135 auto* fullImpl = GetFullImpl();
5136
5137 fullImpl->getNodeModifiers()->getStackModifier()->resetAlignContent(node->uiNodeHandle);
5138 }
5139
GetScrollFriction(ArkUI_NodeHandle node)5140 const ArkUI_AttributeItem* GetScrollFriction(ArkUI_NodeHandle node)
5141 {
5142 if (node->type == ARKUI_NODE_LIST) {
5143 g_numberValues[0].f32 =
5144 GetFullImpl()->getNodeModifiers()->getListModifier()->getListFriction(node->uiNodeHandle);
5145 } else if (node->type == ARKUI_NODE_SCROLL) {
5146 g_numberValues[0].f32 =
5147 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollFriction(node->uiNodeHandle);
5148 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5149 g_numberValues[0].f32 =
5150 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowFriction(node->uiNodeHandle);
5151 }
5152 return &g_attributeItem;
5153 }
5154
SetScrollFriction(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5155 int32_t SetScrollFriction(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5156 {
5157 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5158 if (actualSize < 0 || LessOrEqual(item->value[NUM_0].f32, 0.0f)) {
5159 return ERROR_CODE_PARAM_INVALID;
5160 }
5161 auto fullImpl = GetFullImpl();
5162 auto friction = item->value[NUM_0].f32;
5163 if (node->type == ARKUI_NODE_LIST) {
5164 fullImpl->getNodeModifiers()->getListModifier()->setListFriction(node->uiNodeHandle, friction);
5165 } else if (node->type == ARKUI_NODE_SCROLL) {
5166 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollFriction(node->uiNodeHandle, friction);
5167 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5168 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowFriction(node->uiNodeHandle, friction);
5169 }
5170 return ERROR_CODE_NO_ERROR;
5171 }
5172
ResetScrollFriction(ArkUI_NodeHandle node)5173 void ResetScrollFriction(ArkUI_NodeHandle node)
5174 {
5175 // already check in entry point.
5176 auto* fullImpl = GetFullImpl();
5177
5178 if (node->type == ARKUI_NODE_LIST) {
5179 fullImpl->getNodeModifiers()->getListModifier()->resetListFriction(node->uiNodeHandle);
5180 } else if (node->type == ARKUI_NODE_SCROLL) {
5181 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollFriction(node->uiNodeHandle);
5182 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5183 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterFlowFriction(node->uiNodeHandle);
5184 }
5185 }
5186
GetScrollScrollSnap(ArkUI_NodeHandle node)5187 const ArkUI_AttributeItem* GetScrollScrollSnap(ArkUI_NodeHandle node)
5188 {
5189 ArkUI_Float32 values[32];
5190 auto size =
5191 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollScrollSnap(node->uiNodeHandle, &values);
5192
5193 //size index
5194 g_numberValues[NUM_0].i32 = values[NUM_0];
5195 g_numberValues[NUM_1].i32 = values[NUM_1];
5196 g_numberValues[NUM_2].i32 = values[NUM_2];
5197 for (auto i = NUM_3; i < size; i++) {
5198 g_numberValues[i].f32 = values[i];
5199 }
5200 g_attributeItem.size = size;
5201 return &g_attributeItem;
5202 }
5203
SetScrollScrollSnap(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5204 int32_t SetScrollScrollSnap(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5205 {
5206 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
5207 if (actualSize < 0 || !InRegion(NUM_0, NUM_3, item->value[NUM_0].i32) ||
5208 !InRegion(NUM_0, NUM_1, item->value[NUM_1].i32) || !InRegion(NUM_0, NUM_1, item->value[NUM_2].i32)) {
5209 return ERROR_CODE_PARAM_INVALID;
5210 }
5211 auto fullImpl = GetFullImpl();
5212 auto snapAlign = item->value[NUM_0].i32;
5213 auto enableSnapToStart = item->value[NUM_1].i32;
5214 auto enableSnapToEnd = item->value[NUM_2].i32;
5215
5216 ArkUI_Float32 paginations[item->size - NUM_3];
5217 ArkUI_Int32 paginationParams[item->size + NUM_1];
5218 int32_t unit = GetDefaultUnit(node, UNIT_VP);
5219 for (int i = 0; i < item->size - NUM_3; ++i) {
5220 if (LessNotEqual(item->value[i + NUM_3].f32, 0.0f)) {
5221 return ERROR_CODE_PARAM_INVALID;
5222 }
5223 paginations[i] = item->value[i + NUM_3].f32;
5224 paginationParams[i] = unit;
5225 }
5226
5227 paginationParams[item->size - NUM_3 + NUM_0] = snapAlign;
5228 paginationParams[item->size - NUM_3 + NUM_1] = enableSnapToStart;
5229 paginationParams[item->size - NUM_3 + NUM_2] = enableSnapToEnd;
5230 paginationParams[item->size] = (item->size - NUM_3 > 1) ? true : false;
5231
5232 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollScrollSnap(
5233 node->uiNodeHandle, paginations, item->size - NUM_3, paginationParams, item->size + NUM_1);
5234 return ERROR_CODE_NO_ERROR;
5235 }
5236
ResetScrollScrollSnap(ArkUI_NodeHandle node)5237 void ResetScrollScrollSnap(ArkUI_NodeHandle node)
5238 {
5239 // already check in entry point.
5240 auto* fullImpl = GetFullImpl();
5241
5242 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollScrollSnap(node->uiNodeHandle);
5243 }
5244
GetScrollScrollBar(ArkUI_NodeHandle node)5245 const ArkUI_AttributeItem* GetScrollScrollBar(ArkUI_NodeHandle node)
5246 {
5247 if (node->type == ARKUI_NODE_LIST) {
5248 g_numberValues[0].i32 =
5249 GetFullImpl()->getNodeModifiers()->getListModifier()->getListScrollBar(node->uiNodeHandle);
5250 } else if (node->type == ARKUI_NODE_SCROLL) {
5251 g_numberValues[0].i32 =
5252 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollScrollBar(node->uiNodeHandle);
5253 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5254 g_numberValues[0].i32 =
5255 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowScrollBar(node->uiNodeHandle);
5256 }
5257 return &g_attributeItem;
5258 }
5259
SetScrollScrollBar(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5260 int32_t SetScrollScrollBar(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5261 {
5262 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5263 if (actualSize < 0 || !InRegion(NUM_0, NUM_2, item->value[NUM_0].i32)) {
5264 return ERROR_CODE_PARAM_INVALID;
5265 }
5266 auto fullImpl = GetFullImpl();
5267 auto attrVal = item->value[NUM_0].i32;
5268 if (node->type == ARKUI_NODE_LIST) {
5269 fullImpl->getNodeModifiers()->getListModifier()->setListScrollBar(node->uiNodeHandle, attrVal);
5270 } else if (node->type == ARKUI_NODE_SCROLL) {
5271 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollScrollBar(node->uiNodeHandle, attrVal);
5272 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5273 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowScrollBar(node->uiNodeHandle, attrVal);
5274 }
5275 return ERROR_CODE_NO_ERROR;
5276 }
5277
ResetScrollScrollBar(ArkUI_NodeHandle node)5278 void ResetScrollScrollBar(ArkUI_NodeHandle node)
5279 {
5280 // already check in entry point.
5281 auto* fullImpl = GetFullImpl();
5282
5283 if (node->type == ARKUI_NODE_LIST) {
5284 fullImpl->getNodeModifiers()->getListModifier()->resetListScrollBar(node->uiNodeHandle);
5285 } else if (node->type == ARKUI_NODE_SCROLL) {
5286 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollScrollBar(node->uiNodeHandle);
5287 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5288 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterFlowScrollBar(node->uiNodeHandle);
5289 }
5290 }
5291
GetScrollScrollBarWidth(ArkUI_NodeHandle node)5292 const ArkUI_AttributeItem* GetScrollScrollBarWidth(ArkUI_NodeHandle node)
5293 {
5294 if (node->type == ARKUI_NODE_LIST) {
5295 g_numberValues[0].f32 =
5296 GetFullImpl()->getNodeModifiers()->getListModifier()->getListScrollBarWidth(node->uiNodeHandle);
5297 } else if (node->type == ARKUI_NODE_SCROLL) {
5298 g_numberValues[0].f32 =
5299 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollScrollBarWidth(node->uiNodeHandle);
5300 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5301 g_numberValues[0].f32 =
5302 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowScrollBarWidth(node->uiNodeHandle);
5303 }
5304 return &g_attributeItem;
5305 }
5306
SetScrollScrollBarWidth(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5307 int32_t SetScrollScrollBarWidth(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5308 {
5309 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5310 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, NUM_0)) {
5311 return ERROR_CODE_PARAM_INVALID;
5312 }
5313 auto fullImpl = GetFullImpl();
5314 auto attrVal = item->value[NUM_0].f32;
5315 int32_t unit = GetDefaultUnit(node, UNIT_VP);
5316 if (node->type == ARKUI_NODE_LIST) {
5317 auto width = std::to_string(attrVal) + LENGTH_METRIC_UNIT[unit];
5318 fullImpl->getNodeModifiers()->getListModifier()->setListScrollBarWidth(node->uiNodeHandle, width.c_str());
5319 } else if (node->type == ARKUI_NODE_SCROLL) {
5320 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollScrollBarWidth(node->uiNodeHandle, attrVal, unit);
5321 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5322 auto width = std::to_string(attrVal) + LENGTH_METRIC_UNIT[unit];
5323 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowScrollBarWidth(
5324 node->uiNodeHandle, width.c_str());
5325 }
5326 return ERROR_CODE_NO_ERROR;
5327 }
5328
ResetScrollScrollBarWidth(ArkUI_NodeHandle node)5329 void ResetScrollScrollBarWidth(ArkUI_NodeHandle node)
5330 {
5331 // already check in entry point.
5332 auto* fullImpl = GetFullImpl();
5333 if (node->type == ARKUI_NODE_LIST) {
5334 fullImpl->getNodeModifiers()->getListModifier()->resetListScrollBarWidth(node->uiNodeHandle);
5335 } else if (node->type == ARKUI_NODE_SCROLL) {
5336 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollScrollBarWidth(node->uiNodeHandle);
5337 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5338 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterFlowScrollBarWidth(node->uiNodeHandle);
5339 }
5340 }
5341
GetScrollScrollBarColor(ArkUI_NodeHandle node)5342 const ArkUI_AttributeItem* GetScrollScrollBarColor(ArkUI_NodeHandle node)
5343 {
5344 if (node->type == ARKUI_NODE_LIST) {
5345 g_numberValues[0].u32 =
5346 GetFullImpl()->getNodeModifiers()->getListModifier()->getListScrollBarColor(node->uiNodeHandle);
5347 } else if (node->type == ARKUI_NODE_SCROLL) {
5348 g_numberValues[0].u32 =
5349 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollScrollBarColor(node->uiNodeHandle);
5350 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5351 g_numberValues[0].u32 =
5352 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowScrollBarColor(node->uiNodeHandle);
5353 }
5354 return &g_attributeItem;
5355 }
5356
SetScrollScrollBarColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5357 int32_t SetScrollScrollBarColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5358 {
5359 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5360 if (actualSize < 0) {
5361 return ERROR_CODE_PARAM_INVALID;
5362 }
5363 auto fullImpl = GetFullImpl();
5364 auto color = item->value[NUM_0].u32;
5365 if (node->type == ARKUI_NODE_LIST) {
5366 auto value = Color(color).ColorToString();
5367 fullImpl->getNodeModifiers()->getListModifier()->setListScrollBarColor(node->uiNodeHandle, value.c_str());
5368 } else if (node->type == ARKUI_NODE_SCROLL) {
5369 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollScrollBarColor(node->uiNodeHandle, color);
5370 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5371 auto value = Color(color).ColorToString();
5372 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowScrollBarColor(
5373 node->uiNodeHandle, value.c_str());
5374 }
5375 return ERROR_CODE_NO_ERROR;
5376 }
5377
ResetScrollScrollBarColor(ArkUI_NodeHandle node)5378 void ResetScrollScrollBarColor(ArkUI_NodeHandle node)
5379 {
5380 // already check in entry point.
5381 auto* fullImpl = GetFullImpl();
5382
5383 if (node->type == ARKUI_NODE_LIST) {
5384 fullImpl->getNodeModifiers()->getListModifier()->resetListScrollBarColor(node->uiNodeHandle);
5385 } else if (node->type == ARKUI_NODE_SCROLL) {
5386 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollScrollBarColor(node->uiNodeHandle);
5387 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5388 fullImpl->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowScrollBarColor(node->uiNodeHandle);
5389 }
5390 }
5391
GetScrollScrollable(ArkUI_NodeHandle node)5392 const ArkUI_AttributeItem* GetScrollScrollable(ArkUI_NodeHandle node)
5393 {
5394 auto value = GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollScrollable(node->uiNodeHandle);
5395 g_numberValues[0].i32 = value;
5396 return &g_attributeItem;
5397 }
5398
SetScrollScrollable(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5399 int32_t SetScrollScrollable(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5400 {
5401 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5402 if (actualSize < 0 || !InRegion(NUM_0, NUM_3, item->value[0].i32)) {
5403 return ERROR_CODE_PARAM_INVALID;
5404 }
5405 auto fullImpl = GetFullImpl();
5406 auto attrVal = item->value[NUM_0].i32;
5407 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollScrollable(node->uiNodeHandle, attrVal);
5408 return ERROR_CODE_NO_ERROR;
5409 }
5410
ResetScrollScrollable(ArkUI_NodeHandle node)5411 void ResetScrollScrollable(ArkUI_NodeHandle node)
5412 {
5413 // already check in entry point.
5414 auto* fullImpl = GetFullImpl();
5415
5416 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollScrollable(node->uiNodeHandle);
5417 }
5418
GetScrollEdgeEffect(ArkUI_NodeHandle node)5419 const ArkUI_AttributeItem* GetScrollEdgeEffect(ArkUI_NodeHandle node)
5420 {
5421 ArkUI_Int32 values[2];
5422 if (node->type == ARKUI_NODE_LIST) {
5423 auto valueSize =
5424 GetFullImpl()->getNodeModifiers()->getListModifier()->getListEdgeEffect(node->uiNodeHandle, &values);
5425 for (int i = 0; i < valueSize; i++) {
5426 g_numberValues[i].i32 = values[i];
5427 }
5428 g_attributeItem.size = valueSize;
5429 } else if (node->type == ARKUI_NODE_SCROLL) {
5430 auto valueSize =
5431 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollEdgeEffect(node->uiNodeHandle, &values);
5432 for (int i = 0; i < valueSize; i++) {
5433 g_numberValues[i].i32 = values[i];
5434 }
5435 g_attributeItem.size = valueSize;
5436 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5437 auto valueSize =
5438 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getEdgeEffect(node->uiNodeHandle, &values);
5439 for (int i = 0; i < valueSize; i++) {
5440 g_numberValues[i].i32 = values[i];
5441 }
5442 g_attributeItem.size = valueSize;
5443 }
5444 return &g_attributeItem;
5445 }
5446
SetScrollEdgeEffect(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5447 int32_t SetScrollEdgeEffect(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5448 {
5449 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5450 if (actualSize < 0 || !InRegion(NUM_0, NUM_2, item->value[0].i32) ||
5451 (item->size > NUM_1 && !InRegion(NUM_0, NUM_1, item->value[1].i32))) {
5452 return ERROR_CODE_PARAM_INVALID;
5453 }
5454 auto fullImpl = GetFullImpl();
5455 auto attrVal = item->value[NUM_0].i32;
5456 bool alwaysEnabled = false;
5457 if (item->size > NUM_1) {
5458 alwaysEnabled = item->value[NUM_1].i32;
5459 } else if (node->type == ARKUI_NODE_SCROLL) {
5460 alwaysEnabled = true;
5461 }
5462 if (node->type == ARKUI_NODE_LIST) {
5463 fullImpl->getNodeModifiers()->getListModifier()->setListEdgeEffect(node->uiNodeHandle, attrVal, alwaysEnabled);
5464 } else if (node->type == ARKUI_NODE_SCROLL) {
5465 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollEdgeEffect(
5466 node->uiNodeHandle, attrVal, alwaysEnabled);
5467 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5468 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setEdgeEffect(
5469 node->uiNodeHandle, attrVal, alwaysEnabled);
5470 }
5471 return ERROR_CODE_NO_ERROR;
5472 }
5473
ResetScrollEdgeEffect(ArkUI_NodeHandle node)5474 void ResetScrollEdgeEffect(ArkUI_NodeHandle node)
5475 {
5476 // already check in entry point.
5477 auto* fullImpl = GetFullImpl();
5478
5479 if (node->type == ARKUI_NODE_LIST) {
5480 fullImpl->getNodeModifiers()->getListModifier()->resetListEdgeEffect(node->uiNodeHandle);
5481 } else if (node->type == ARKUI_NODE_SCROLL) {
5482 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollEdgeEffect(node->uiNodeHandle);
5483 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5484 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetEdgeEffect(node->uiNodeHandle);
5485 }
5486 }
5487
GetScrollEnableScrollInteraction(ArkUI_NodeHandle node)5488 const ArkUI_AttributeItem* GetScrollEnableScrollInteraction(ArkUI_NodeHandle node)
5489 {
5490 if (node->type == ARKUI_NODE_LIST) {
5491 g_numberValues[0].i32 =
5492 GetFullImpl()->getNodeModifiers()->getListModifier()->getEnableScrollInteraction(node->uiNodeHandle);
5493 } else if (node->type == ARKUI_NODE_SCROLL) {
5494 g_numberValues[0].i32 =
5495 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getEnableScrollInteraction(node->uiNodeHandle);
5496 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5497 g_numberValues[0].i32 =
5498 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowEnableScrollInteraction(
5499 node->uiNodeHandle);
5500 }
5501 return &g_attributeItem;
5502 }
5503
SetScrollEnableScrollInteraction(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5504 int32_t SetScrollEnableScrollInteraction(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5505 {
5506 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5507 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
5508 return ERROR_CODE_PARAM_INVALID;
5509 }
5510 auto fullImpl = GetFullImpl();
5511 bool enableScrollInteraction = item->value[NUM_0].i32;
5512 if (node->type == ARKUI_NODE_LIST) {
5513 fullImpl->getNodeModifiers()->getListModifier()->setEnableScrollInteraction(
5514 node->uiNodeHandle, enableScrollInteraction);
5515 } else if (node->type == ARKUI_NODE_SCROLL) {
5516 fullImpl->getNodeModifiers()->getScrollModifier()->setEnableScrollInteraction(
5517 node->uiNodeHandle, enableScrollInteraction);
5518 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5519 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowEnableScrollInteraction(
5520 node->uiNodeHandle, enableScrollInteraction);
5521 }
5522 return ERROR_CODE_NO_ERROR;
5523 }
5524
ResetScrollEnableScrollInteraction(ArkUI_NodeHandle node)5525 void ResetScrollEnableScrollInteraction(ArkUI_NodeHandle node)
5526 {
5527 // already check in entry point.
5528 auto* fullImpl = GetFullImpl();
5529
5530 if (node->type == ARKUI_NODE_LIST) {
5531 fullImpl->getNodeModifiers()->getListModifier()->resetEnableScrollInteraction(node->uiNodeHandle);
5532 } else if (node->type == ARKUI_NODE_SCROLL) {
5533 fullImpl->getNodeModifiers()->getScrollModifier()->resetEnableScrollInteraction(node->uiNodeHandle);
5534 } else if (node->type == ARKUI_NODE_WATER_FLOW) {
5535 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterFlowEnableScrollInteraction(node->uiNodeHandle);
5536 }
5537 }
5538
SetScrollNestedScroll(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5539 int32_t SetScrollNestedScroll(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5540 {
5541 // The size must be greater than 2 and check value is Nested Mode
5542 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
5543 if (actualSize < 0 || !CheckAttributeIsScrollNestedMode(item->value[0].i32) ||
5544 !CheckAttributeIsScrollNestedMode(item->value[1].i32)) {
5545 return ERROR_CODE_PARAM_INVALID;
5546 }
5547 auto* fullImpl = GetFullImpl();
5548 int first = item->value[NUM_0].i32;
5549 int second = item->value[NUM_1].i32;
5550 if (node->type == ARKUI_NODE_WATER_FLOW) {
5551 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterFlowNestedScroll(
5552 node->uiNodeHandle, first, second);
5553 } else if (node->type == ARKUI_NODE_LIST) {
5554 fullImpl->getNodeModifiers()->getListModifier()->setListNestedScroll(node->uiNodeHandle, first, second);
5555 } else {
5556 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollNestedScroll(node->uiNodeHandle, first, second);
5557 }
5558 return ERROR_CODE_NO_ERROR;
5559 }
5560
GetScrollNestedScroll(ArkUI_NodeHandle node)5561 const ArkUI_AttributeItem* GetScrollNestedScroll(ArkUI_NodeHandle node)
5562 {
5563 ArkUI_Int32 values[2];
5564 if (node->type == ARKUI_NODE_WATER_FLOW) {
5565 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getWaterFlowNestedScroll(
5566 node->uiNodeHandle, &values);
5567 } else if (node->type == ARKUI_NODE_LIST) {
5568 GetFullImpl()->getNodeModifiers()->getListModifier()->getListNestedScroll(node->uiNodeHandle, &values);
5569 } else {
5570 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollNestedScroll(node->uiNodeHandle, &values);
5571 }
5572 //size index
5573 g_numberValues[0].i32 = values[0];
5574 g_numberValues[1].i32 = values[1];
5575 g_attributeItem.size = ALLOW_SIZE_2;
5576 return &g_attributeItem;
5577 }
5578
ResetScrollNestedScroll(ArkUI_NodeHandle node)5579 void ResetScrollNestedScroll(ArkUI_NodeHandle node)
5580 {
5581 auto* fullImpl = GetFullImpl();
5582 if (node->type == ARKUI_NODE_WATER_FLOW) {
5583 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterFlowNestedScroll(node->uiNodeHandle);
5584 } else if (node->type == ARKUI_NODE_LIST) {
5585 GetFullImpl()->getNodeModifiers()->getListModifier()->resetListNestedScroll(node->uiNodeHandle);
5586 } else {
5587 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollNestedScroll(node->uiNodeHandle);
5588 }
5589 }
5590
SetScrollTo(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5591 int32_t SetScrollTo(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5592 {
5593 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
5594 if (actualSize < 0) {
5595 return ERROR_CODE_PARAM_INVALID;
5596 }
5597 auto* fullImpl = GetFullImpl();
5598 int32_t defaultUnit = GetDefaultUnit(node, UNIT_VP);
5599 ArkUI_Float32 values[ALLOW_SIZE_8] = { 0.0, defaultUnit, 0.0, defaultUnit, DEFAULT_DURATION, 1, 0.0, 0.0 };
5600 values[0] = item->value[0].f32;
5601 values[1] = defaultUnit;
5602 values[2] = item->value[1].f32;
5603 values[NUM_3] = defaultUnit;
5604 if (item->size > 2) {
5605 values[NUM_4] = static_cast<ArkUI_Float32>(item->value[NUM_2].i32);
5606 }
5607 // check size
5608 if (item->size > NUM_3 && CheckAttributeIsAnimationCurve(item->value[NUM_3].i32)) {
5609 values[NUM_5] = static_cast<ArkUI_Float32>(item->value[NUM_3].i32);
5610 }
5611 if (item->size > 4) {
5612 values[NUM_6] = static_cast<ArkUI_Float32>(item->value[NUM_4].i32);
5613 }
5614 if (item->size > NUM_5) {
5615 values[NUM_7] = static_cast<ArkUI_Float32>(item->value[NUM_5].i32);
5616 }
5617 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollTo(node->uiNodeHandle, &values);
5618 return ERROR_CODE_NO_ERROR;
5619 }
5620
GetScrollOffset(ArkUI_NodeHandle node)5621 const ArkUI_AttributeItem* GetScrollOffset(ArkUI_NodeHandle node)
5622 {
5623 ArkUI_Float32 values[2];
5624 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollOffset(node->uiNodeHandle, &values);
5625 //size index
5626 g_numberValues[0].f32 = values[0];
5627 g_numberValues[1].f32 = values[1];
5628 g_attributeItem.size = ALLOW_SIZE_2;
5629 return &g_attributeItem;
5630 }
5631
ResetScrollTo(ArkUI_NodeHandle node)5632 void ResetScrollTo(ArkUI_NodeHandle node)
5633 {
5634 auto* fullImpl = GetFullImpl();
5635 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollTo(node->uiNodeHandle);
5636 }
5637
SetScrollEdge(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5638 int32_t SetScrollEdge(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5639 {
5640 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5641 if (actualSize < 0) {
5642 return ERROR_CODE_PARAM_INVALID;
5643 }
5644 auto* fullImpl = GetFullImpl();
5645 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollEdge(node->uiNodeHandle, item->value[0].i32);
5646 return ERROR_CODE_NO_ERROR;
5647 }
5648
GetScrollEdge(ArkUI_NodeHandle node)5649 const ArkUI_AttributeItem* GetScrollEdge(ArkUI_NodeHandle node)
5650 {
5651 auto resultValue = GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollEdge(node->uiNodeHandle);
5652 //size index
5653 g_numberValues[0].i32 = resultValue;
5654 return &g_attributeItem;
5655 }
5656
ResetScrollEdge(ArkUI_NodeHandle node)5657 void ResetScrollEdge(ArkUI_NodeHandle node)
5658 {
5659 auto* fullImpl = GetFullImpl();
5660 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollEdge(node->uiNodeHandle);
5661 }
5662
GetScrollEnablePaging(ArkUI_NodeHandle node)5663 const ArkUI_AttributeItem* GetScrollEnablePaging(ArkUI_NodeHandle node)
5664 {
5665 auto value = GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollEnablePaging(node->uiNodeHandle);
5666 //ScrollPagingStatus::VALID is true and VALID value is 2, others is false
5667 g_numberValues[0].i32 = value == NUM_2 ? true : false;
5668 return &g_attributeItem;
5669 }
5670
SetScrollEnablePaging(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5671 int32_t SetScrollEnablePaging(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5672 {
5673 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5674 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
5675 return ERROR_CODE_PARAM_INVALID;
5676 }
5677 auto fullImpl = GetFullImpl();
5678 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollEnablePaging(
5679 node->uiNodeHandle, item->value[NUM_0].i32);
5680 return ERROR_CODE_NO_ERROR;
5681 }
5682
ResetScrollEnablePaging(ArkUI_NodeHandle node)5683 void ResetScrollEnablePaging(ArkUI_NodeHandle node)
5684 {
5685 // already check in entry point.
5686 auto* fullImpl = GetFullImpl();
5687
5688 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollEnablePaging(node->uiNodeHandle);
5689 }
5690
SetScrollPage(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5691 int32_t SetScrollPage(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5692 {
5693 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5694 if (actualSize < NUM_0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
5695 return ERROR_CODE_PARAM_INVALID;
5696 }
5697 ArkUI_Int32 values[ALLOW_SIZE_2] = { NUM_0, DEFAULT_FALSE };
5698 values[NUM_0] = item->value[NUM_0].i32;
5699 if (item->size > NUM_1 && InRegion(NUM_0, NUM_1, item->value[NUM_1].i32)) {
5700 values[NUM_1] = item->value[NUM_1].i32;
5701 }
5702 auto* fullImpl = GetFullImpl();
5703 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollPage(node->uiNodeHandle, values[NUM_0], values[NUM_1]);
5704 return ERROR_CODE_NO_ERROR;
5705 }
5706
SetScrollBy(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5707 int32_t SetScrollBy(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5708 {
5709 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
5710 if (actualSize < NUM_0) {
5711 return ERROR_CODE_PARAM_INVALID;
5712 }
5713 DimensionUnit unit = static_cast<DimensionUnit>(GetDefaultUnit(node, UNIT_VP));
5714 if (unit != DimensionUnit::VP && unit != DimensionUnit::PX) {
5715 return ERROR_CODE_PARAM_INVALID;
5716 }
5717 double x = item->value[NUM_0].f32;
5718 double y = item->value[NUM_1].f32;
5719 if (unit == DimensionUnit::VP) {
5720 x = OHOS::Ace::NodeModel::GetFullImpl()->getBasicAPI()->convertLengthMetricsUnit(
5721 x, static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_VP), static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_PX));
5722 y = OHOS::Ace::NodeModel::GetFullImpl()->getBasicAPI()->convertLengthMetricsUnit(
5723 y, static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_VP), static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_PX));
5724 }
5725 auto* fullImpl = GetFullImpl();
5726 if (node->type == ARKUI_NODE_SCROLL || node->type == ARKUI_NODE_WATER_FLOW) {
5727 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollBy(node->uiNodeHandle, x, y);
5728 } else if (node->type == ARKUI_NODE_LIST) {
5729 fullImpl->getNodeModifiers()->getListModifier()->setScrollBy(node->uiNodeHandle, x, y);
5730 } else {
5731 return ERROR_CODE_PARAM_INVALID;
5732 }
5733 return ERROR_CODE_NO_ERROR;
5734 }
5735
SetScrollFling(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5736 int32_t SetScrollFling(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5737 {
5738 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5739 if (actualSize < NUM_0) {
5740 return ERROR_CODE_PARAM_INVALID;
5741 }
5742 DimensionUnit unit = static_cast<DimensionUnit>(GetDefaultUnit(node, UNIT_VP));
5743 if (unit != DimensionUnit::VP && unit != DimensionUnit::PX) {
5744 return ERROR_CODE_PARAM_INVALID;
5745 }
5746 double value = item->value[NUM_0].f32;
5747 if (unit == DimensionUnit::VP) {
5748 value = OHOS::Ace::NodeModel::GetFullImpl()->getBasicAPI()->convertLengthMetricsUnit(value,
5749 static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_VP), static_cast<int32_t>(ARKUI_LENGTH_METRIC_UNIT_PX));
5750 }
5751 auto* fullImpl = GetFullImpl();
5752 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollFling(node->uiNodeHandle, value);
5753 return ERROR_CODE_NO_ERROR;
5754 }
5755
SetScrollFadingEdge(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5756 int32_t SetScrollFadingEdge(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5757 {
5758 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5759 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
5760 return ERROR_CODE_PARAM_INVALID;
5761 }
5762 bool fadingEdge = item->value[NUM_0].i32;
5763 float fadingEdgeLengthValue = DEFAULT_SCROLL_FADING_EDGE_LENGTH;
5764 int32_t unit = UNIT_VP;
5765 if (fadingEdge && item->size > NUM_1 && GreatNotEqual(item->value[NUM_1].f32, 0.f)) {
5766 fadingEdgeLengthValue = item->value[NUM_1].f32;
5767 unit = GetDefaultUnit(node, UNIT_VP);
5768 }
5769 auto* fullImpl = GetFullImpl();
5770 fullImpl->getNodeModifiers()->getScrollModifier()->setScrollFadingEdge(node->uiNodeHandle,
5771 fadingEdge, fadingEdgeLengthValue, unit);
5772 return ERROR_CODE_NO_ERROR;
5773 }
5774
GetScrollFadingEdge(ArkUI_NodeHandle node)5775 const ArkUI_AttributeItem* GetScrollFadingEdge(ArkUI_NodeHandle node)
5776 {
5777 ArkUIInt32orFloat32 values[NUM_2];
5778 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollFadingEdge(node->uiNodeHandle, &values);
5779 g_numberValues[NUM_0].i32 = values[NUM_0].i32;
5780 g_numberValues[NUM_1].f32 = values[NUM_1].f32;
5781 return &g_attributeItem;
5782 }
5783
ResetScrollFadingEdge(ArkUI_NodeHandle node)5784 void ResetScrollFadingEdge(ArkUI_NodeHandle node)
5785 {
5786 // already check in entry point.
5787 auto* fullImpl = GetFullImpl();
5788 fullImpl->getNodeModifiers()->getScrollModifier()->resetScrollFadingEdge(node->uiNodeHandle);
5789 }
5790
GetScrollContentSize(ArkUI_NodeHandle node)5791 const ArkUI_AttributeItem* GetScrollContentSize(ArkUI_NodeHandle node)
5792 {
5793 ArkUI_Float32 values[NUM_2];
5794 GetFullImpl()->getNodeModifiers()->getScrollModifier()->getScrollContentSize(node->uiNodeHandle, &values);
5795 g_numberValues[NUM_0].f32 = values[NUM_0];
5796 g_numberValues[NUM_1].f32 = values[NUM_1];
5797 return &g_attributeItem;
5798 }
5799
SetContentStartOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5800 int32_t SetContentStartOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5801 {
5802 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5803 if (actualSize < 0 || node->type != ARKUI_NODE_LIST) {
5804 return ERROR_CODE_PARAM_INVALID;
5805 }
5806 auto fullImpl = GetFullImpl();
5807 fullImpl->getNodeModifiers()->getListModifier()->setContentStartOffset(node->uiNodeHandle, item->value[0].f32);
5808 return ERROR_CODE_NO_ERROR;
5809 }
ResetContentStartOffset(ArkUI_NodeHandle node)5810 void ResetContentStartOffset(ArkUI_NodeHandle node)
5811 {
5812 auto* fullImpl = GetFullImpl();
5813
5814 fullImpl->getNodeModifiers()->getListModifier()->resetContentStartOffset(node->uiNodeHandle);
5815 }
5816
GetContentStartOffset(ArkUI_NodeHandle node)5817 const ArkUI_AttributeItem* GetContentStartOffset(ArkUI_NodeHandle node)
5818 {
5819 if (node->type == ARKUI_NODE_LIST) {
5820 auto value = GetFullImpl()->getNodeModifiers()->getListModifier()->getContentStartOffset(node->uiNodeHandle);
5821 g_numberValues[0].f32 = value;
5822 }
5823 return &g_attributeItem;
5824 }
5825
SetContentEndOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5826 int32_t SetContentEndOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5827 {
5828 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5829 if (actualSize < 0 || node->type != ARKUI_NODE_LIST) {
5830 return ERROR_CODE_PARAM_INVALID;
5831 }
5832 auto fullImpl = GetFullImpl();
5833 fullImpl->getNodeModifiers()->getListModifier()->setContentEndOffset(node->uiNodeHandle, item->value[0].f32);
5834 return ERROR_CODE_NO_ERROR;
5835 }
5836
ResetContentEndOffset(ArkUI_NodeHandle node)5837 void ResetContentEndOffset(ArkUI_NodeHandle node)
5838 {
5839 if (node->type == ARKUI_NODE_LIST) {
5840 auto* fullImpl = GetFullImpl();
5841 fullImpl->getNodeModifiers()->getListModifier()->resetContentEndOffset(node->uiNodeHandle);
5842 }
5843 }
5844
GetContentEndOffset(ArkUI_NodeHandle node)5845 const ArkUI_AttributeItem* GetContentEndOffset(ArkUI_NodeHandle node)
5846 {
5847 if (node->type == ARKUI_NODE_LIST) {
5848 auto value = GetFullImpl()->getNodeModifiers()->getListModifier()->getContentEndOffset(node->uiNodeHandle);
5849 g_numberValues[0].f32 = value;
5850 }
5851 return &g_attributeItem;
5852 }
5853
SetScrollBackToTop(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5854 int32_t SetScrollBackToTop(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5855 {
5856 auto* fullImpl = GetFullImpl();
5857 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5858 if (!node || actualSize < 0 || !fullImpl || !CheckAttributeIsBool(item->value[0].i32)) {
5859 return ERROR_CODE_PARAM_INVALID;
5860 }
5861 fullImpl->getNodeModifiers()->getScrollableModifier()->setBackToTop(
5862 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
5863 return ERROR_CODE_NO_ERROR;
5864 }
5865
ResetScrollBackToTop(ArkUI_NodeHandle node)5866 void ResetScrollBackToTop(ArkUI_NodeHandle node)
5867 {
5868 auto* fullImpl = GetFullImpl();
5869 if (!node || !fullImpl) {
5870 return;
5871 }
5872 fullImpl->getNodeModifiers()->getScrollableModifier()->resetBackToTop(node->uiNodeHandle);
5873 }
5874
GetScrollBackToTop(ArkUI_NodeHandle node)5875 const ArkUI_AttributeItem* GetScrollBackToTop(ArkUI_NodeHandle node)
5876 {
5877 auto value = GetFullImpl()->getNodeModifiers()->getScrollableModifier()->getBackToTop(node->uiNodeHandle);
5878 g_numberValues[0].i32 = value;
5879 return &g_attributeItem;
5880 }
5881
GetListDirection(ArkUI_NodeHandle node)5882 const ArkUI_AttributeItem* GetListDirection(ArkUI_NodeHandle node)
5883 {
5884 auto value = GetFullImpl()->getNodeModifiers()->getListModifier()->getListDirection(node->uiNodeHandle);
5885 g_numberValues[0].i32 = value;
5886 return &g_attributeItem;
5887 }
5888
SetListDirection(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5889 int32_t SetListDirection(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5890 {
5891 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5892 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
5893 return ERROR_CODE_PARAM_INVALID;
5894 }
5895 auto fullImpl = GetFullImpl();
5896 auto attrVal = item->value[0].i32;
5897 fullImpl->getNodeModifiers()->getListModifier()->setListDirection(node->uiNodeHandle, attrVal);
5898 return ERROR_CODE_NO_ERROR;
5899 }
5900
ResetListDirection(ArkUI_NodeHandle node)5901 void ResetListDirection(ArkUI_NodeHandle node)
5902 {
5903 // already check in entry point.
5904 auto* fullImpl = GetFullImpl();
5905
5906 fullImpl->getNodeModifiers()->getListModifier()->resetListDirection(node->uiNodeHandle);
5907 }
5908
GetListSticky(ArkUI_NodeHandle node)5909 const ArkUI_AttributeItem* GetListSticky(ArkUI_NodeHandle node)
5910 {
5911 auto value = GetFullImpl()->getNodeModifiers()->getListModifier()->getSticky(node->uiNodeHandle);
5912 g_numberValues[0].i32 = value;
5913 return &g_attributeItem;
5914 }
5915
SetListSticky(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5916 int32_t SetListSticky(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5917 {
5918 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5919 if (actualSize < 0 || !InRegion(NUM_0, NUM_3, item->value[0].i32)) {
5920 return ERROR_CODE_PARAM_INVALID;
5921 }
5922 auto fullImpl = GetFullImpl();
5923 auto attrVal = item->value[0].i32;
5924 fullImpl->getNodeModifiers()->getListModifier()->setSticky(node->uiNodeHandle, attrVal);
5925 return ERROR_CODE_NO_ERROR;
5926 }
5927
ResetListSticky(ArkUI_NodeHandle node)5928 void ResetListSticky(ArkUI_NodeHandle node)
5929 {
5930 // already check in entry point.
5931 auto* fullImpl = GetFullImpl();
5932
5933 fullImpl->getNodeModifiers()->getListModifier()->resetSticky(node->uiNodeHandle);
5934 }
5935
GetListSpace(ArkUI_NodeHandle node)5936 const ArkUI_AttributeItem* GetListSpace(ArkUI_NodeHandle node)
5937 {
5938 auto value = GetFullImpl()->getNodeModifiers()->getListModifier()->getListSpace(node->uiNodeHandle);
5939 g_numberValues[0].f32 = value;
5940 return &g_attributeItem;
5941 }
5942
SetListSpace(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5943 int32_t SetListSpace(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5944 {
5945 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
5946 if (actualSize < 0 || LessNotEqual(item->value[0].i32, NUM_0)) {
5947 return ERROR_CODE_PARAM_INVALID;
5948 }
5949 auto fullImpl = GetFullImpl();
5950
5951 fullImpl->getNodeModifiers()->getListModifier()->setListSpace(node->uiNodeHandle, item->value[NUM_0].f32);
5952 return ERROR_CODE_NO_ERROR;
5953 }
5954
ResetListSpace(ArkUI_NodeHandle node)5955 void ResetListSpace(ArkUI_NodeHandle node)
5956 {
5957 // already check in entry point.
5958 auto* fullImpl = GetFullImpl();
5959
5960 fullImpl->getNodeModifiers()->getListModifier()->resetListSpace(node->uiNodeHandle);
5961 }
5962
SetListNodeAdapter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5963 int32_t SetListNodeAdapter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5964 {
5965 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
5966 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
5967 auto* nodeAdapter = reinterpret_cast<ArkUINodeAdapterHandle>(item->object);
5968 return GetFullImpl()->getNodeModifiers()->getListModifier()->setNodeAdapter(node->uiNodeHandle, nodeAdapter);
5969 }
5970
ResetListNodeAdapter(ArkUI_NodeHandle node)5971 void ResetListNodeAdapter(ArkUI_NodeHandle node)
5972 {
5973 // already check in entry point.
5974 auto* fullImpl = GetFullImpl();
5975
5976 fullImpl->getNodeModifiers()->getListModifier()->resetNodeAdapter(node->uiNodeHandle);
5977 }
5978
GetListNodeAdapter(ArkUI_NodeHandle node)5979 const ArkUI_AttributeItem* GetListNodeAdapter(ArkUI_NodeHandle node)
5980 {
5981 ArkUINodeAdapterHandle adapter =
5982 GetFullImpl()->getNodeModifiers()->getListModifier()->getNodeAdapter(node->uiNodeHandle);
5983 g_attributeItem.object = reinterpret_cast<void*>(adapter);
5984 return &g_attributeItem;
5985 }
5986
SetListCachedCount(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)5987 int32_t SetListCachedCount(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
5988 {
5989 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
5990 if (item->size < NUM_1) {
5991 return ERROR_CODE_PARAM_INVALID;
5992 }
5993 if (LessNotEqual(item->value[0].i32, NUM_0)) {
5994 return ERROR_CODE_PARAM_INVALID;
5995 }
5996 GetFullImpl()->getNodeModifiers()->getListModifier()->setCachedCount(node->uiNodeHandle, item->value[0].i32);
5997 ArkUI_Bool isShown = DEFAULT_FALSE;
5998 if (item->size > NUM_1 && InRegion(DEFAULT_FALSE, DEFAULT_TRUE, item->value[1].i32)) {
5999 isShown = item->value[1].i32;
6000 }
6001 GetFullImpl()->getNodeModifiers()->getListModifier()->setCachedIsShown(node->uiNodeHandle, isShown);
6002 return ERROR_CODE_NO_ERROR;
6003 }
6004
ResetListCachedCount(ArkUI_NodeHandle node)6005 void ResetListCachedCount(ArkUI_NodeHandle node)
6006 {
6007 // already check in entry point.
6008 auto* fullImpl = GetFullImpl();
6009 fullImpl->getNodeModifiers()->getListModifier()->resetCachedCount(node->uiNodeHandle);
6010 fullImpl->getNodeModifiers()->getListModifier()->resetCachedIsShown(node->uiNodeHandle);
6011 }
6012
GetListCachedCount(ArkUI_NodeHandle node)6013 const ArkUI_AttributeItem* GetListCachedCount(ArkUI_NodeHandle node)
6014 {
6015 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getListModifier()->getCachedCount(node->uiNodeHandle);
6016 ArkUI_Int32 isShown = GetFullImpl()->getNodeModifiers()->getListModifier()->getCachedIsShown(node->uiNodeHandle);
6017 g_numberValues[0].i32 = value;
6018 g_numberValues[1].i32 = isShown;
6019 return &g_attributeItem;
6020 }
6021
SetListAlignListItem(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6022 int32_t SetListAlignListItem(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6023 {
6024 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
6025 if (item->size != 1 || !CheckAttributeIsListItemAlign(item->value[0].i32)) {
6026 return ERROR_CODE_PARAM_INVALID;
6027 }
6028 GetFullImpl()->getNodeModifiers()->getListModifier()->setAlignListItem(node->uiNodeHandle, item->value[0].i32);
6029 return ERROR_CODE_NO_ERROR;
6030 }
6031
ResetListAlignListItem(ArkUI_NodeHandle node)6032 void ResetListAlignListItem(ArkUI_NodeHandle node)
6033 {
6034 auto* fullImpl = GetFullImpl();
6035 fullImpl->getNodeModifiers()->getListModifier()->resetAlignListItem(node->uiNodeHandle);
6036 }
6037
GetListAlignListItem(ArkUI_NodeHandle node)6038 const ArkUI_AttributeItem* GetListAlignListItem(ArkUI_NodeHandle node)
6039 {
6040 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getListModifier()->getAlignListItem(node->uiNodeHandle);
6041 g_numberValues[0].i32 = value;
6042 return &g_attributeItem;
6043 }
6044
SetListChildrenMainSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6045 int32_t SetListChildrenMainSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6046 {
6047 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
6048 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
6049 auto* listChildrenMainSize = reinterpret_cast<ArkUIListChildrenMainSize>(item->object);
6050 int32_t unit = GetDefaultUnit(node, UNIT_VP);
6051 GetFullImpl()->getNodeModifiers()->getListModifier()->setListChildrenMainSize(
6052 node->uiNodeHandle, listChildrenMainSize, unit);
6053 return ERROR_CODE_NO_ERROR;
6054 }
6055
ResetListChildrenMainSize(ArkUI_NodeHandle node)6056 void ResetListChildrenMainSize(ArkUI_NodeHandle node)
6057 {
6058 auto* fullImpl = GetFullImpl();
6059 fullImpl->getNodeModifiers()->getListModifier()->resetListChildrenMainSize(node->uiNodeHandle);
6060 }
6061
SetListScrollToIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6062 int32_t SetListScrollToIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6063 {
6064 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6065 if (actualSize < NUM_0) {
6066 return ERROR_CODE_PARAM_INVALID;
6067 }
6068 ArkUI_Int32 values[ALLOW_SIZE_3] = { NUM_0, DEFAULT_FALSE, ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_NONE };
6069 values[NUM_0] = item->value[NUM_0].i32;
6070 if (item->size > NUM_1 && InRegion(NUM_0, NUM_1, item->value[NUM_1].i32)) {
6071 values[NUM_1] = item->value[NUM_1].i32;
6072 }
6073 if (item->size > NUM_2 && InRegion(NUM_0, NUM_3, item->value[NUM_2].i32)) {
6074 values[NUM_2] = item->value[NUM_2].i32;
6075 }
6076 if (values[NUM_2] == ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_NONE) {
6077 values[NUM_2] = ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_START;
6078 }
6079 ArkUI_Float32 options = 0.0f;
6080 if (item->size > NUM_3) {
6081 options = item->value[NUM_3].f32;
6082 }
6083 auto* fullImpl = GetFullImpl();
6084 fullImpl->getNodeModifiers()->getListModifier()->setScrollToIndex(
6085 node->uiNodeHandle, values[NUM_0], values[NUM_1], values[NUM_2], options);
6086 return ERROR_CODE_NO_ERROR;
6087 }
6088
SetListInitialIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6089 int32_t SetListInitialIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6090 {
6091 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
6092 if (item->size != 1) {
6093 return ERROR_CODE_PARAM_INVALID;
6094 }
6095 if (item->value[0].i32 < 0) {
6096 return ERROR_CODE_PARAM_INVALID;
6097 }
6098 GetFullImpl()->getNodeModifiers()->getListModifier()->setInitialIndex(node->uiNodeHandle, item->value[0].i32);
6099 return ERROR_CODE_NO_ERROR;
6100 }
6101
ResetListInitialIndex(ArkUI_NodeHandle node)6102 void ResetListInitialIndex(ArkUI_NodeHandle node)
6103 {
6104 // already check in entry point.
6105 auto* fullImpl = GetFullImpl();
6106
6107 fullImpl->getNodeModifiers()->getListModifier()->resetInitialIndex(node->uiNodeHandle);
6108 }
6109
GetListInitialIndex(ArkUI_NodeHandle node)6110 const ArkUI_AttributeItem* GetListInitialIndex(ArkUI_NodeHandle node)
6111 {
6112 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getListModifier()->getInitialIndex(node->uiNodeHandle);
6113 g_numberValues[0].i32 = value;
6114 return &g_attributeItem;
6115 }
6116
SetListDivider(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6117 int32_t SetListDivider(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6118 {
6119 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
6120 if (actualSize < 0 || LessNotEqual(item->value[NUM_1].f32, NUM_0) ||
6121 LessNotEqual(item->value[NUM_2].f32, NUM_0) || LessNotEqual(item->value[NUM_3].f32, NUM_0)) {
6122 return ERROR_CODE_PARAM_INVALID;
6123 }
6124 auto fullImpl = GetFullImpl();
6125 auto color = item->value[NUM_0].u32;
6126 int32_t unit = GetDefaultUnit(node, UNIT_VP);
6127 ArkUI_Float32 values[NUM_3] = { item->value[NUM_1].f32, item->value[NUM_2].f32, item->value[NUM_3].f32 };
6128 ArkUI_Int32 units[NUM_3] = { unit, unit, unit };
6129
6130 fullImpl->getNodeModifiers()->getListModifier()->listSetDivider(node->uiNodeHandle, color, values, units, NUM_3);
6131 return ERROR_CODE_NO_ERROR;
6132 }
6133
ResetListDivider(ArkUI_NodeHandle node)6134 void ResetListDivider(ArkUI_NodeHandle node)
6135 {
6136 // already check in entry point.
6137 auto* fullImpl = GetFullImpl();
6138 fullImpl->getNodeModifiers()->getListModifier()->listResetDivider(node->uiNodeHandle);
6139 }
6140
GetListDivider(ArkUI_NodeHandle node)6141 const ArkUI_AttributeItem* GetListDivider(ArkUI_NodeHandle node)
6142 {
6143 ArkUIdividerOptions option;
6144 GetFullImpl()->getNodeModifiers()->getListModifier()->getlistDivider(
6145 node->uiNodeHandle, &option, GetDefaultUnit(node, UNIT_VP));
6146 //size index
6147 g_numberValues[NUM_0].u32 = option.color;
6148 g_numberValues[NUM_1].f32 = option.strokeWidth;
6149 g_numberValues[NUM_2].f32 = option.startMargin;
6150 g_numberValues[NUM_3].f32 = option.endMargin;
6151 g_attributeItem.size = ALLOW_SIZE_4;
6152 return &g_attributeItem;
6153 }
6154
SetListScrollToItemInGroup(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6155 int32_t SetListScrollToItemInGroup(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6156 {
6157 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6158 if (actualSize < NUM_0) {
6159 return ERROR_CODE_PARAM_INVALID;
6160 }
6161 if ((item->size < NUM_1) || LessNotEqual(item->value[NUM_0].i32, NUM_0) ||
6162 LessNotEqual(item->value[NUM_1].i32, NUM_0)) {
6163 return ERROR_CODE_PARAM_INVALID;
6164 }
6165 ArkUI_Int32 index = item->value[NUM_0].i32;
6166 ArkUI_Int32 indexInGroup = item->value[NUM_1].i32;
6167 ArkUI_Bool smooth = false;
6168 ArkUI_Int32 align = 0;
6169 if (item->size > NUM_2) {
6170 if (InRegion(DEFAULT_FALSE, DEFAULT_TRUE, item->value[NUM_2].i32)) {
6171 smooth = item->value[NUM_2].i32;
6172 } else {
6173 return ERROR_CODE_PARAM_INVALID;
6174 }
6175 }
6176 if (item->size > NUM_3) {
6177 if (InRegion(NUM_0, NUM_4, item->value[NUM_3].i32)) {
6178 align = item->value[NUM_3].i32;
6179 } else {
6180 return ERROR_CODE_PARAM_INVALID;
6181 }
6182 }
6183 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6184 listModifier->setScrollToItemInGroup(node->uiNodeHandle, index, indexInGroup, smooth, align);
6185 return ERROR_CODE_NO_ERROR;
6186 }
6187
SetListLanes(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6188 int32_t SetListLanes(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6189 {
6190 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6191 if (actualSize < NUM_0) {
6192 return ERROR_CODE_PARAM_INVALID;
6193 }
6194 ArkUI_Int32 laneNum = 1;
6195 ArkUIDimensionType minLengthType;
6196 ArkUIDimensionType maxLengthType;
6197 ArkUIDimensionType gutterType;
6198 minLengthType.value = -1;
6199 minLengthType.units = UNIT_VP;
6200 maxLengthType.value = -1;
6201 maxLengthType.units = UNIT_VP;
6202 gutterType.value = 0.0f;
6203 gutterType.units = UNIT_VP;
6204 if ((item->size > 0) && GreatOrEqual(item->value[NUM_0].u32, NUM_1)) {
6205 laneNum = item->value[NUM_0].u32;
6206 }
6207 if ((item->size > NUM_2) && GreatOrEqual(item->value[NUM_1].f32, ZERO_F) &&
6208 GreatOrEqual(item->value[NUM_2].f32, ZERO_F)) {
6209 laneNum = -1;
6210 minLengthType.value = item->value[NUM_1].f32;
6211 maxLengthType.value = item->value[NUM_2].f32;
6212 }
6213 if ((item->size > NUM_3) && GreatOrEqual(item->value[NUM_3].f32, ZERO_F)) {
6214 gutterType.value = item->value[NUM_3].f32;
6215 }
6216 auto* fullImpl = GetFullImpl();
6217 fullImpl->getNodeModifiers()->getListModifier()->setListLanes(
6218 node->uiNodeHandle, laneNum, &minLengthType, &maxLengthType, &gutterType);
6219 return ERROR_CODE_NO_ERROR;
6220 }
6221
ResetListLanes(ArkUI_NodeHandle node)6222 void ResetListLanes(ArkUI_NodeHandle node)
6223 {
6224 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6225 listModifier->resetListLanes(node->uiNodeHandle);
6226 listModifier->resetlistLaneMinAndMaxLength(node->uiNodeHandle);
6227 }
6228
GetListLanes(ArkUI_NodeHandle node)6229 const ArkUI_AttributeItem* GetListLanes(ArkUI_NodeHandle node)
6230 {
6231 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6232 g_numberValues[NUM_0].u32 = static_cast<uint32_t>(listModifier->getListLanes(node->uiNodeHandle));
6233 g_numberValues[NUM_1].f32 = listModifier->getlistLaneMinLength(node->uiNodeHandle);
6234 g_numberValues[NUM_2].f32 = listModifier->getListLaneMaxLength(node->uiNodeHandle);
6235 g_numberValues[NUM_3].f32 = listModifier->getListLaneGutter(node->uiNodeHandle);
6236 return &g_attributeItem;
6237 }
6238
SetListScrollSnapAlign(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6239 int32_t SetListScrollSnapAlign(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6240 {
6241 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6242 ArkUI_Int32 param = 0;
6243 if (actualSize < 0) {
6244 return ERROR_CODE_PARAM_INVALID;
6245 }
6246 if (InRegion(NUM_0, NUM_3, item->value[NUM_0].i32)) {
6247 param = item->value[NUM_0].i32;
6248 }
6249 auto fullImpl = GetFullImpl();
6250 fullImpl->getNodeModifiers()->getListModifier()->setScrollSnapAlign(node->uiNodeHandle, param);
6251 return ERROR_CODE_NO_ERROR;
6252 }
6253
ResetListScrollSnapAlign(ArkUI_NodeHandle node)6254 void ResetListScrollSnapAlign(ArkUI_NodeHandle node)
6255 {
6256 auto* fullImpl = GetFullImpl();
6257 fullImpl->getNodeModifiers()->getListModifier()->resetScrollSnapAlign(node->uiNodeHandle);
6258 }
6259
GetListScrollSnapAlign(ArkUI_NodeHandle node)6260 const ArkUI_AttributeItem* GetListScrollSnapAlign(ArkUI_NodeHandle node)
6261 {
6262 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getListModifier()->getScrollSnapAlign(node->uiNodeHandle);
6263 g_numberValues[0].i32 = value;
6264 return &g_attributeItem;
6265 }
6266
SetListMaintainVisibleContentPosition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6267 int32_t SetListMaintainVisibleContentPosition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6268 {
6269 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6270 if (actualSize < 0) {
6271 return ERROR_CODE_PARAM_INVALID;
6272 }
6273 ArkUI_Bool enabled = false;
6274 if (InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
6275 enabled = item->value[NUM_0].i32;
6276 }
6277 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6278 listModifier->setListMaintainVisibleContentPosition(node->uiNodeHandle, enabled);
6279 return ERROR_CODE_NO_ERROR;
6280 }
6281
ResetListMaintainVisibleContentPosition(ArkUI_NodeHandle node)6282 void ResetListMaintainVisibleContentPosition(ArkUI_NodeHandle node)
6283 {
6284 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6285 listModifier->resetListMaintainVisibleContentPosition(node->uiNodeHandle);
6286 }
6287
GetListMaintainVisibleContentPosition(ArkUI_NodeHandle node)6288 const ArkUI_AttributeItem* GetListMaintainVisibleContentPosition(ArkUI_NodeHandle node)
6289 {
6290 auto listModifier = GetFullImpl()->getNodeModifiers()->getListModifier();
6291 ArkUI_Int32 value = listModifier->getListMaintainVisibleContentPosition(node->uiNodeHandle);
6292 g_numberValues[0].i32 = value;
6293 return &g_attributeItem;
6294 }
6295
6296 // TextArea
SetTextAreaPlaceholderFont(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6297 int32_t SetTextAreaPlaceholderFont(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6298 {
6299 if (item == nullptr) {
6300 return ERROR_CODE_PARAM_INVALID;
6301 }
6302 auto* fullImpl = GetFullImpl();
6303 struct ArkUIResourceLength size = { 16.0, GetDefaultUnit(node, UNIT_FP) };
6304 int weight = ARKUI_FONT_WEIGHT_NORMAL;
6305 int style = ARKUI_FONT_STYLE_NORMAL;
6306 if (item->size > NUM_0) {
6307 if (LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
6308 return ERROR_CODE_PARAM_INVALID;
6309 }
6310 size.value = item->value[NUM_0].f32;
6311 }
6312 if (item->size > NUM_1) {
6313 if (item->value[NUM_1].i32 < 0 || item->value[NUM_1].i32 > static_cast<int32_t>(ARKUI_FONT_STYLE_ITALIC)) {
6314 return ERROR_CODE_PARAM_INVALID;
6315 }
6316 style = item->value[NUM_1].i32;
6317 }
6318 if (item->size > NUM_2) {
6319 if (item->value[NUM_2].i32 < 0 || item->value[NUM_2].i32 > static_cast<int32_t>(ARKUI_FONT_WEIGHT_REGULAR)) {
6320 return ERROR_CODE_PARAM_INVALID;
6321 }
6322 weight = item->value[NUM_2].i32;
6323 }
6324 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaPlaceholderFontEnum(
6325 node->uiNodeHandle, &size, weight, item->string, style);
6326 return ERROR_CODE_NO_ERROR;
6327 }
6328
GetTextAreaPlaceholderFont(ArkUI_NodeHandle node)6329 const ArkUI_AttributeItem* GetTextAreaPlaceholderFont(ArkUI_NodeHandle node)
6330 {
6331 ArkUITextFont font;
6332 font.fontSizeUnit = GetDefaultUnit(node, UNIT_FP);
6333 GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaPlaceholderFont(
6334 node->uiNodeHandle, &font);
6335 int index = 0;
6336 g_numberValues[index++].f32 = font.fontSize;
6337 g_numberValues[index++].i32 = font.fontStyle;
6338 g_numberValues[index++].i32 = font.fontWeight;
6339 g_attributeItem.size = index;
6340 g_attributeItem.string = font.fontFamilies;
6341 return &g_attributeItem;
6342 }
6343
ResetTextAreaPlaceholderFont(ArkUI_NodeHandle node)6344 void ResetTextAreaPlaceholderFont(ArkUI_NodeHandle node)
6345 {
6346 auto* fullImpl = GetFullImpl();
6347 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaPlaceholderFont(node->uiNodeHandle);
6348 }
6349
SetTextAreaPlaceholder(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6350 int32_t SetTextAreaPlaceholder(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6351 {
6352 // already check in entry point.
6353 auto* fullImpl = GetFullImpl();
6354 ArkUI_CharPtr itemString = item->string;
6355 if (!itemString) {
6356 itemString = "";
6357 }
6358 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaPlaceholderString(
6359 node->uiNodeHandle, itemString);
6360 return ERROR_CODE_NO_ERROR;
6361 }
6362
GetTextAreaPlaceholder(ArkUI_NodeHandle node)6363 const ArkUI_AttributeItem* GetTextAreaPlaceholder(ArkUI_NodeHandle node)
6364 {
6365 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaPlaceholder(
6366 node->uiNodeHandle);
6367 g_attributeItem.string = resultValue;
6368 return &g_attributeItem;
6369 }
6370
ResetTextAreaPlaceholder(ArkUI_NodeHandle node)6371 void ResetTextAreaPlaceholder(ArkUI_NodeHandle node)
6372 {
6373 auto* fullImpl = GetFullImpl();
6374 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaPlaceholderString(node->uiNodeHandle, "");
6375 }
6376
SetTextAreaText(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6377 int32_t SetTextAreaText(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6378 {
6379 // already check in entry point.
6380 auto* fullImpl = GetFullImpl();
6381 ArkUI_CharPtr itemString = item->string;
6382 if (!itemString) {
6383 itemString = "";
6384 }
6385 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaTextString(
6386 node->uiNodeHandle, itemString);
6387 return ERROR_CODE_NO_ERROR;
6388 }
6389
GetTextAreaText(ArkUI_NodeHandle node)6390 const ArkUI_AttributeItem* GetTextAreaText(ArkUI_NodeHandle node)
6391 {
6392 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaText(
6393 node->uiNodeHandle);
6394 g_attributeItem.string = resultValue;
6395 return &g_attributeItem;
6396 }
6397
ResetTextAreaText(ArkUI_NodeHandle node)6398 void ResetTextAreaText(ArkUI_NodeHandle node)
6399 {
6400 auto* fullImpl = GetFullImpl();
6401 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaTextString(node->uiNodeHandle, "");
6402 }
6403
StopTextAreaEditing(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6404 int32_t StopTextAreaEditing(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6405 {
6406 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6407 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
6408 return ERROR_CODE_PARAM_INVALID;
6409 }
6410 // already check in entry point.
6411 auto* fullImpl = GetFullImpl();
6412 if (item->value[NUM_0].i32 == 0) {
6413 fullImpl->getNodeModifiers()->getTextAreaModifier()->stopTextAreaTextEditing(node->uiNodeHandle);
6414 }
6415 return ERROR_CODE_NO_ERROR;
6416 }
6417
GetTextAreaEditing(ArkUI_NodeHandle node)6418 const ArkUI_AttributeItem* GetTextAreaEditing(ArkUI_NodeHandle node)
6419 {
6420 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaEditing(
6421 node->uiNodeHandle);
6422 g_numberValues[0].i32 = resultValue;
6423 return &g_attributeItem;
6424 }
6425
SetTextAreaType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6426 int32_t SetTextAreaType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6427 {
6428 // already check in entry point.
6429 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6430 if (actualSize < 0 || !InRegion(NUM_0, NUM_5, item->value[0].i32)) {
6431 return ERROR_CODE_PARAM_INVALID;
6432 }
6433 auto* fullImpl = GetFullImpl();
6434 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaType(node->uiNodeHandle, item->value[0].i32);
6435 return ERROR_CODE_NO_ERROR;
6436 }
6437
GetTextAreaType(ArkUI_NodeHandle node)6438 const ArkUI_AttributeItem* GetTextAreaType(ArkUI_NodeHandle node)
6439 {
6440 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaType(
6441 node->uiNodeHandle);
6442 g_numberValues[0].i32 = resultValue;
6443 return &g_attributeItem;
6444 }
6445
ResetTextAreaType(ArkUI_NodeHandle node)6446 void ResetTextAreaType(ArkUI_NodeHandle node)
6447 {
6448 auto* fullImpl = GetFullImpl();
6449 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaType(node->uiNodeHandle);
6450 }
6451
SetTextAreaShowCounter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6452 int32_t SetTextAreaShowCounter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6453 {
6454 if (item->size == 0) {
6455 return ERROR_CODE_PARAM_INVALID;
6456 }
6457 auto* fullImpl = GetFullImpl();
6458 ArkUI_Bool open = false;
6459 ArkUI_Int32 thresholdPercentage = -1;
6460 ArkUI_Bool highlightBorder = true;
6461 if (item->size > NUM_0) {
6462 if (!InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
6463 return ERROR_CODE_PARAM_INVALID;
6464 }
6465 open = item->value[NUM_0].i32;
6466 }
6467 if (item->size > NUM_1) {
6468 if (!InRegion(NUM_1, NUM_100, static_cast<ArkUI_Int32>(item->value[NUM_1].f32))) {
6469 return ERROR_CODE_PARAM_INVALID;
6470 }
6471 thresholdPercentage = static_cast<ArkUI_Int32>(item->value[NUM_1].f32);
6472 }
6473 if (item->size > NUM_2) {
6474 if (!InRegion(NUM_0, NUM_1, item->value[NUM_2].i32)) {
6475 return ERROR_CODE_PARAM_INVALID;
6476 }
6477 highlightBorder = item->value[NUM_2].i32;
6478 }
6479
6480 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaShowCounterOptions(
6481 node->uiNodeHandle, open, thresholdPercentage, highlightBorder);
6482 return ERROR_CODE_NO_ERROR;
6483 }
6484
ResetTextAreaShowCounter(ArkUI_NodeHandle node)6485 void ResetTextAreaShowCounter(ArkUI_NodeHandle node)
6486 {
6487 auto* fullImpl = GetFullImpl();
6488 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaShowCounterOptions(node->uiNodeHandle);
6489 }
6490
GetTextAreaShowCounter(ArkUI_NodeHandle node)6491 const ArkUI_AttributeItem* GetTextAreaShowCounter(ArkUI_NodeHandle node)
6492 {
6493 ArkUIShowCountOptions options;
6494 auto modifier = GetFullImpl()->getNodeModifiers()->getTextAreaModifier();
6495 modifier->getTextAreaShowCounterOptions(node->uiNodeHandle, &options);
6496 // open
6497 g_numberValues[NUM_0].i32 = options.open;
6498 // thresholdPercentage
6499 g_numberValues[NUM_1].f32 = options.thresholdPercentage;
6500 // highlightBorder
6501 g_numberValues[NUM_2].i32 = options.highlightBorder;
6502 return &g_attributeItem;
6503 }
6504
SetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6505 int32_t SetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6506 {
6507 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
6508 return ERROR_CODE_PARAM_INVALID;
6509 }
6510 auto* fullImpl = GetFullImpl();
6511 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaSelectionMenuHidden(
6512 node->uiNodeHandle, item->value[NUM_0].i32);
6513 return ERROR_CODE_NO_ERROR;
6514 }
6515
GetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node)6516 const ArkUI_AttributeItem* GetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node)
6517 {
6518 g_numberValues[0].i32 =
6519 GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaSelectionMenuHidden(node->uiNodeHandle);
6520 return &g_attributeItem;
6521 }
6522
ResetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node)6523 void ResetTextAreaSelectionMenuHidden(ArkUI_NodeHandle node)
6524 {
6525 auto* fullImpl = GetFullImpl();
6526 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaSelectionMenuHidden(node->uiNodeHandle);
6527 }
6528
6529 // button
SetButtonLabel(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6530 int32_t SetButtonLabel(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6531 {
6532 if (item == nullptr || item->string == nullptr) {
6533 return ERROR_CODE_PARAM_INVALID;
6534 }
6535 auto* fullImpl = GetFullImpl();
6536 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonLabel(node->uiNodeHandle, item->string);
6537 return ERROR_CODE_NO_ERROR;
6538 }
6539
GetButtonLabel(ArkUI_NodeHandle node)6540 const ArkUI_AttributeItem* GetButtonLabel(ArkUI_NodeHandle node)
6541 {
6542 auto resultValue = GetFullImpl()->getNodeModifiers()->getButtonModifier()->getButtonLabel(
6543 node->uiNodeHandle);
6544 g_attributeItem.string = resultValue;
6545 return &g_attributeItem;
6546 }
6547
ResetButtonLabel(ArkUI_NodeHandle node)6548 void ResetButtonLabel(ArkUI_NodeHandle node)
6549 {
6550 auto* fullImpl = GetFullImpl();
6551 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonLabel(node->uiNodeHandle);
6552 }
6553
SetButtonType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6554 int32_t SetButtonType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6555 {
6556 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6557 if (LessNotEqual(actualSize, 0) ||
6558 !InRegion(ARKUI_BUTTON_TYPE_NORMAL, ARKUI_BUTTON_TYPE_CIRCLE, item->value[NUM_0].i32)) {
6559 return ERROR_CODE_PARAM_INVALID;
6560 }
6561
6562 auto* fullImpl = GetFullImpl();
6563 fullImpl->getNodeModifiers()->getButtonModifier()->setButtonType(node->uiNodeHandle, item->value[NUM_0].i32);
6564 return ERROR_CODE_NO_ERROR;
6565 }
6566
GetButtonType(ArkUI_NodeHandle node)6567 const ArkUI_AttributeItem* GetButtonType(ArkUI_NodeHandle node)
6568 {
6569 auto resultValue = GetFullImpl()->getNodeModifiers()->getButtonModifier()->getButtonType(node->uiNodeHandle);
6570 g_numberValues[0].i32 = resultValue;
6571 return &g_attributeItem;
6572 }
6573
ResetButtonType(ArkUI_NodeHandle node)6574 void ResetButtonType(ArkUI_NodeHandle node)
6575 {
6576 auto* fullImpl = GetFullImpl();
6577 fullImpl->getNodeModifiers()->getButtonModifier()->resetButtonType(node->uiNodeHandle);
6578 }
6579
SetProgressValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6580 int32_t SetProgressValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6581 {
6582 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6583 if (actualSize < 0 || LessNotEqual(item->value[0].f32, 0.0f)) {
6584 return ERROR_CODE_PARAM_INVALID;
6585 }
6586 auto* fullImpl = GetFullImpl();
6587 fullImpl->getNodeModifiers()->getProgressModifier()->setProgressValue(node->uiNodeHandle, item->value[0].f32);
6588 return ERROR_CODE_NO_ERROR;
6589 }
6590
GetProgressValue(ArkUI_NodeHandle node)6591 const ArkUI_AttributeItem* GetProgressValue(ArkUI_NodeHandle node)
6592 {
6593 auto resultValue = GetFullImpl()->getNodeModifiers()->getProgressModifier()->getProgressValue(
6594 node->uiNodeHandle);
6595 g_numberValues[0].f32 = resultValue;
6596 return &g_attributeItem;
6597 }
6598
ResetProgressValue(ArkUI_NodeHandle node)6599 void ResetProgressValue(ArkUI_NodeHandle node)
6600 {
6601 auto* fullImpl = GetFullImpl();
6602 fullImpl->getNodeModifiers()->getProgressModifier()->resetProgressValue(node->uiNodeHandle);
6603 }
6604
SetProgressTotal(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6605 int32_t SetProgressTotal(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6606 {
6607 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6608 if (actualSize < 0 || LessNotEqual(item->value[0].f32, 0.0f)) {
6609 return ERROR_CODE_PARAM_INVALID;
6610 }
6611 auto* fullImpl = GetFullImpl();
6612 fullImpl->getNodeModifiers()->getProgressModifier()->setProgressTotal(node->uiNodeHandle, item->value[0].f32);
6613 return ERROR_CODE_NO_ERROR;
6614 }
6615
GetProgressTotal(ArkUI_NodeHandle node)6616 const ArkUI_AttributeItem* GetProgressTotal(ArkUI_NodeHandle node)
6617 {
6618 auto resultValue = GetFullImpl()->getNodeModifiers()->getProgressModifier()->getProgressTotal(
6619 node->uiNodeHandle);
6620 g_numberValues[0].f32 = resultValue;
6621 return &g_attributeItem;
6622 }
6623
ResetProgressTotal(ArkUI_NodeHandle node)6624 void ResetProgressTotal(ArkUI_NodeHandle node)
6625 {
6626 auto* fullImpl = GetFullImpl();
6627 fullImpl->getNodeModifiers()->getProgressModifier()->resetProgressValue(node->uiNodeHandle);
6628 }
6629
SetProgressColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6630 int32_t SetProgressColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6631 {
6632 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6633 if (actualSize < 0) {
6634 return ERROR_CODE_PARAM_INVALID;
6635 }
6636 auto* fullImpl = GetFullImpl();
6637 fullImpl->getNodeModifiers()->getProgressModifier()->setProgressColor(node->uiNodeHandle, item->value[0].u32);
6638 return ERROR_CODE_NO_ERROR;
6639 }
6640
GetProgressColor(ArkUI_NodeHandle node)6641 const ArkUI_AttributeItem* GetProgressColor(ArkUI_NodeHandle node)
6642 {
6643 auto resultValue = GetFullImpl()->getNodeModifiers()->getProgressModifier()->getProgressColor(
6644 node->uiNodeHandle);
6645 g_numberValues[0].u32 = resultValue;
6646 return &g_attributeItem;
6647 }
6648
ResetProgressColor(ArkUI_NodeHandle node)6649 void ResetProgressColor(ArkUI_NodeHandle node)
6650 {
6651 auto* fullImpl = GetFullImpl();
6652 fullImpl->getNodeModifiers()->getProgressModifier()->resetProgressColor(node->uiNodeHandle);
6653 }
6654
SetProgressType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6655 int32_t SetProgressType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6656 {
6657 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6658 if (actualSize < 0 || !InRegion(static_cast<int32_t>(ARKUI_PROGRESS_TYPE_LINEAR),
6659 static_cast<int32_t>(ARKUI_PROGRESS_TYPE_CAPSULE), item->value[NUM_0].i32)) {
6660 return ERROR_CODE_PARAM_INVALID;
6661 }
6662 auto* fullImpl = GetFullImpl();
6663 fullImpl->getNodeModifiers()->getProgressModifier()->setProgressType(node->uiNodeHandle,
6664 PROGRESS_TYPE_ARRAY[item->value[NUM_0].i32]);
6665 return ERROR_CODE_NO_ERROR;
6666 }
6667
GetProgressType(ArkUI_NodeHandle node)6668 const ArkUI_AttributeItem* GetProgressType(ArkUI_NodeHandle node)
6669 {
6670 auto resultValue = GetFullImpl()->getNodeModifiers()->getProgressModifier()->getProgressType(
6671 node->uiNodeHandle);
6672 auto it = std::find(PROGRESS_TYPE_ARRAY.begin(), PROGRESS_TYPE_ARRAY.end(), resultValue);
6673 if (it != PROGRESS_TYPE_ARRAY.end()) {
6674 g_numberValues[0].i32 = std::distance(PROGRESS_TYPE_ARRAY.begin(), it);
6675 }
6676 return &g_attributeItem;
6677 }
6678
ResetProgressType(ArkUI_NodeHandle node)6679 void ResetProgressType(ArkUI_NodeHandle node)
6680 {
6681 auto* fullImpl = GetFullImpl();
6682 fullImpl->getNodeModifiers()->getProgressModifier()->resetProgressType(node->uiNodeHandle);
6683 }
6684
GetProgressModifierByNode(ArkUI_NodeHandle node)6685 const ArkUIProgressModifier* GetProgressModifierByNode(ArkUI_NodeHandle node)
6686 {
6687 CHECK_NULL_RETURN(node, nullptr);
6688 auto fullImpl = GetFullImpl();
6689 CHECK_NULL_RETURN(fullImpl, nullptr);
6690 auto modifiers = fullImpl->getNodeModifiers();
6691 CHECK_NULL_RETURN(modifiers, nullptr);
6692 auto progressModifier = modifiers->getProgressModifier();
6693 CHECK_NULL_RETURN(progressModifier, nullptr);
6694 return progressModifier;
6695 }
6696
SetProgressLinearStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6697 int32_t SetProgressLinearStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6698 {
6699 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
6700 node->progressLinearStyle = item->object;
6701
6702 auto progressModifier = GetProgressModifierByNode(node);
6703 CHECK_NULL_RETURN(progressModifier, ERROR_CODE_PARAM_INVALID);
6704 auto progressType = progressModifier->getProgressType(node->uiNodeHandle);
6705 if (item->size < 0 || item->object == nullptr || PROGRESS_TYPE_LINEAR != progressType) {
6706 return ERROR_CODE_PARAM_INVALID;
6707 }
6708 auto* option = reinterpret_cast<ArkUI_ProgressLinearStyleOption*>(item->object);
6709 CHECK_NULL_RETURN(option, ERROR_CODE_PARAM_INVALID);
6710
6711 ArkUIProgressStyle progressStyle;
6712 progressStyle.enableScanEffect = option->scanEffectEnable;
6713 progressStyle.enableSmoothEffect = option->smoothEffectEnable;
6714 progressStyle.strokeWidthValue = option->strokeWidth;
6715 progressStyle.strokeWidthUnit = static_cast<uint8_t>(DimensionUnit::VP);
6716 progressStyle.strokeRadiusValue = option->strokeRadius;
6717 progressStyle.strokeRadiusUnit = static_cast<uint8_t>(DimensionUnit::VP);
6718
6719 progressModifier->setProgressStyle(node->uiNodeHandle, &progressStyle);
6720 return ERROR_CODE_NO_ERROR;
6721 }
6722
GetProgressLinearStyle(ArkUI_NodeHandle node)6723 const ArkUI_AttributeItem* GetProgressLinearStyle(ArkUI_NodeHandle node)
6724 {
6725 auto progressModifier = GetProgressModifierByNode(node);
6726 CHECK_NULL_RETURN(progressModifier, nullptr);
6727 auto progressType = progressModifier->getProgressType(node->uiNodeHandle);
6728 if (PROGRESS_TYPE_LINEAR != progressType) {
6729 return nullptr;
6730 }
6731
6732 static ArkUIProgressLinearStyleOption option;
6733 progressModifier->getProgressLinearStyle(node->uiNodeHandle, option);
6734 g_attributeItem.object = &option;
6735 return &g_attributeItem;
6736 }
6737
ResetProgressLinearStyle(ArkUI_NodeHandle node)6738 void ResetProgressLinearStyle(ArkUI_NodeHandle node)
6739 {
6740 auto progressModifier = GetProgressModifierByNode(node);
6741 CHECK_NULL_VOID(progressModifier);
6742 auto progressType = progressModifier->getProgressType(node->uiNodeHandle);
6743 if (PROGRESS_TYPE_LINEAR != progressType) {
6744 return;
6745 }
6746
6747 progressModifier->resetProgressStyle(node->uiNodeHandle);
6748 }
6749
SetXComponentId(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6750 int32_t SetXComponentId(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6751 {
6752 // already check in entry point.
6753 auto* fullImpl = GetFullImpl();
6754 if (item == nullptr || !item->string) {
6755 return ERROR_CODE_PARAM_INVALID;
6756 }
6757 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentId(node->uiNodeHandle, item->string);
6758 return ERROR_CODE_NO_ERROR;
6759 }
6760
GetXComponentId(ArkUI_NodeHandle node)6761 const ArkUI_AttributeItem* GetXComponentId(ArkUI_NodeHandle node)
6762 {
6763 auto resultValue = GetFullImpl()->getNodeModifiers()->getXComponentModifier()->getXComponentId(
6764 node->uiNodeHandle);
6765 g_attributeItem.string = resultValue;
6766 return &g_attributeItem;
6767 }
6768
SetXComponentType(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6769 int32_t SetXComponentType(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6770 {
6771 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6772 if (actualSize < 0 || (item->value[NUM_0].i32 != static_cast<int32_t>(ARKUI_XCOMPONENT_TYPE_SURFACE) &&
6773 item->value[NUM_0].i32 != static_cast<int32_t>(ARKUI_XCOMPONENT_TYPE_TEXTURE))) {
6774 return ERROR_CODE_PARAM_INVALID;
6775 }
6776 // already check in entry point.
6777 auto* fullImpl = GetFullImpl();
6778 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentType(
6779 node->uiNodeHandle, item->value[NUM_0].i32);
6780 return ERROR_CODE_NO_ERROR;
6781 }
6782
GetXComponentType(ArkUI_NodeHandle node)6783 const ArkUI_AttributeItem* GetXComponentType(ArkUI_NodeHandle node)
6784 {
6785 auto resultValue = GetFullImpl()->getNodeModifiers()->getXComponentModifier()->getXComponentType(
6786 node->uiNodeHandle);
6787 g_numberValues[0].i32 = resultValue;
6788 return &g_attributeItem;
6789 }
6790
ResetXComponentType(ArkUI_NodeHandle node)6791 void ResetXComponentType(ArkUI_NodeHandle node)
6792 {
6793 auto* fullImpl = GetFullImpl();
6794 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentType(
6795 node->uiNodeHandle, ARKUI_XCOMPONENT_TYPE_SURFACE);
6796 }
6797
SetXComponentSurfaceSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6798 int32_t SetXComponentSurfaceSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6799 {
6800 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
6801 if (actualSize < 0) {
6802 return ERROR_CODE_PARAM_INVALID;
6803 }
6804 // already check in entry point.
6805 auto* fullImpl = GetFullImpl();
6806 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentSurfaceSize(
6807 node->uiNodeHandle, item->value[0].u32, item->value[1].u32);
6808 return ERROR_CODE_NO_ERROR;
6809 }
6810
GetXComponentSurfaceSize(ArkUI_NodeHandle node)6811 const ArkUI_AttributeItem* GetXComponentSurfaceSize(ArkUI_NodeHandle node)
6812 {
6813 int index = 0;
6814 g_numberValues[index++].u32 =
6815 GetFullImpl()->getNodeModifiers()->getXComponentModifier()->getXComponentSurfaceWidth(node->uiNodeHandle);
6816 g_numberValues[index++].u32 =
6817 GetFullImpl()->getNodeModifiers()->getXComponentModifier()->getXComponentSurfaceHeight(node->uiNodeHandle);
6818 g_attributeItem.size = index;
6819 return &g_attributeItem;
6820 }
6821
ResetXComponentSurfaceSize(ArkUI_NodeHandle node)6822 void ResetXComponentSurfaceSize(ArkUI_NodeHandle node)
6823 {
6824 auto* fullImpl = GetFullImpl();
6825 fullImpl->getNodeModifiers()->getXComponentModifier()->setXComponentSurfaceSize(node->uiNodeHandle, 0, 0);
6826 }
6827
SetBaseLineOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6828 int32_t SetBaseLineOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6829 {
6830 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
6831 if (actualSize < 0) {
6832 return ERROR_CODE_PARAM_INVALID;
6833 }
6834 // already check in entry point.
6835 auto* fullImpl = GetFullImpl();
6836 if (node->type == ARKUI_NODE_SPAN) {
6837 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanBaselineOffset(node->uiNodeHandle,
6838 item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6839 } else {
6840 fullImpl->getNodeModifiers()->getTextModifier()->setTextBaselineOffset(node->uiNodeHandle,
6841 item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6842 }
6843 return ERROR_CODE_NO_ERROR;
6844 }
6845
ResetBaselineOffset(ArkUI_NodeHandle node)6846 void ResetBaselineOffset(ArkUI_NodeHandle node)
6847 {
6848 auto* fullImpl = GetFullImpl();
6849 if (node->type == ARKUI_NODE_SPAN) {
6850 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanBaselineOffset(node->uiNodeHandle);
6851 } else {
6852 fullImpl->getNodeModifiers()->getTextModifier()->resetTextBaselineOffset(node->uiNodeHandle);
6853 }
6854 }
6855
SetTextShadow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6856 int32_t SetTextShadow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6857 {
6858 if (item->size < NUM_5) {
6859 return ERROR_CODE_PARAM_INVALID;
6860 }
6861 // already check in entry point.
6862 auto* fullImpl = GetFullImpl();
6863
6864 std::vector<struct ArkUITextShadowStruct> shadows;
6865 struct ArkUITextShadowStruct shadow = { item->value[0].f32, item->value[1].i32, item->value[2].u32,
6866 item->value[3].f32, item->value[4].f32 };
6867 shadows.emplace_back(shadow);
6868 if (node->type == ARKUI_NODE_TEXT) {
6869 fullImpl->getNodeModifiers()->getTextModifier()->setTextShadow(node->uiNodeHandle, &shadows[0], shadows.size());
6870 } else if (node->type == ARKUI_NODE_SPAN) {
6871 fullImpl->getNodeModifiers()->getSpanModifier()->setTextShadow(node->uiNodeHandle, &shadows[0], shadows.size());
6872 }
6873 return ERROR_CODE_NO_ERROR;
6874 }
6875
ResetTextShadow(ArkUI_NodeHandle node)6876 void ResetTextShadow(ArkUI_NodeHandle node)
6877 {
6878 auto* fullImpl = GetFullImpl();
6879 if (node->type == ARKUI_NODE_TEXT) {
6880 fullImpl->getNodeModifiers()->getTextModifier()->resetTextShadow(node->uiNodeHandle);
6881 } else if (node->type == ARKUI_NODE_SPAN) {
6882 fullImpl->getNodeModifiers()->getSpanModifier()->resetTextShadow(node->uiNodeHandle);
6883 }
6884 }
6885
SetTextMinFontSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6886 int32_t SetTextMinFontSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6887 {
6888 if (item->size == 0) {
6889 return ERROR_CODE_PARAM_INVALID;
6890 }
6891 auto fullImpl = GetFullImpl();
6892 if (node->type == ARKUI_NODE_TEXT) {
6893 fullImpl->getNodeModifiers()->getTextModifier()->setTextMinFontSize(
6894 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6895 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6896 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputAdaptMinFontSize(
6897 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6898 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6899 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaAdaptMinFontSize(
6900 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6901 }
6902 return ERROR_CODE_NO_ERROR;
6903 }
6904
GetTextMinFontSize(ArkUI_NodeHandle node)6905 const ArkUI_AttributeItem* GetTextMinFontSize(ArkUI_NodeHandle node)
6906 {
6907 if (node->type == ARKUI_NODE_TEXT) {
6908 g_numberValues[0].f32 =
6909 GetFullImpl()->getNodeModifiers()->getTextModifier()->getTextMinFontSize(node->uiNodeHandle);
6910 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6911 g_numberValues[0].f32 =
6912 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputAdaptMinFontSize(node->uiNodeHandle);
6913 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6914 g_numberValues[0].f32 =
6915 GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaAdaptMinFontSize(node->uiNodeHandle);
6916 }
6917 return &g_attributeItem;
6918 }
6919
ResetTextMinFontSize(ArkUI_NodeHandle node)6920 void ResetTextMinFontSize(ArkUI_NodeHandle node)
6921 {
6922 auto fullImpl = GetFullImpl();
6923 if (node->type == ARKUI_NODE_TEXT) {
6924 fullImpl->getNodeModifiers()->getTextModifier()->resetTextMinFontSize(node->uiNodeHandle);
6925 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6926 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputAdaptMinFontSize(node->uiNodeHandle);
6927 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6928 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaAdaptMinFontSize(node->uiNodeHandle);
6929 }
6930 }
6931
SetTextMaxFontSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6932 int32_t SetTextMaxFontSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6933 {
6934 if (item->size == 0) {
6935 return ERROR_CODE_PARAM_INVALID;
6936 }
6937 auto fullImpl = GetFullImpl();
6938 if (node->type == ARKUI_NODE_TEXT) {
6939 fullImpl->getNodeModifiers()->getTextModifier()->setTextMaxFontSize(
6940 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6941 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6942 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputAdaptMaxFontSize(
6943 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6944 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6945 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaAdaptMaxFontSize(
6946 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
6947 }
6948 return ERROR_CODE_NO_ERROR;
6949 }
6950
GetTextMaxFontSize(ArkUI_NodeHandle node)6951 const ArkUI_AttributeItem* GetTextMaxFontSize(ArkUI_NodeHandle node)
6952 {
6953 if (node->type == ARKUI_NODE_TEXT) {
6954 g_numberValues[0].f32 =
6955 GetFullImpl()->getNodeModifiers()->getTextModifier()->getTextMaxFontSize(node->uiNodeHandle);
6956 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6957 g_numberValues[0].f32 =
6958 GetFullImpl()->getNodeModifiers()->getTextInputModifier()->getTextInputAdaptMaxFontSize(node->uiNodeHandle);
6959 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6960 g_numberValues[0].f32 =
6961 GetFullImpl()->getNodeModifiers()->getTextAreaModifier()->getTextAreaAdaptMaxFontSize(node->uiNodeHandle);
6962 }
6963 return &g_attributeItem;
6964 }
6965
ResetTextMaxFontSize(ArkUI_NodeHandle node)6966 void ResetTextMaxFontSize(ArkUI_NodeHandle node)
6967 {
6968 auto fullImpl = GetFullImpl();
6969 if (node->type == ARKUI_NODE_TEXT) {
6970 fullImpl->getNodeModifiers()->getTextModifier()->resetTextMaxFontSize(node->uiNodeHandle);
6971 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
6972 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputAdaptMaxFontSize(node->uiNodeHandle);
6973 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
6974 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaAdaptMaxFontSize(node->uiNodeHandle);
6975 }
6976 }
6977
SetTextFont(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)6978 int32_t SetTextFont(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
6979 {
6980 if (item->size == 0) {
6981 return ERROR_CODE_PARAM_INVALID;
6982 }
6983 auto fullImpl = GetFullImpl();
6984 // size
6985 double size = item->value[0].f32;
6986 // weight
6987 int weight = 10; // default
6988 if (item->size > 1) {
6989 if (!CheckAttributeIsFontWeight(item->value[1].i32)) {
6990 return ERROR_CODE_PARAM_INVALID;
6991 }
6992 weight = item->value[1].i32;
6993 }
6994 // style
6995 int style = 0;
6996 if (item->size > 2) {
6997 // get value 2 is font style
6998 if (!CheckAttributeIsFontStyle(item->value[2].i32)) {
6999 return ERROR_CODE_PARAM_INVALID;
7000 }
7001 style = item->value[NUM_2].i32;
7002 }
7003 // family
7004 std::vector<std::string> familyArray;
7005 if (item->string != nullptr) {
7006 std::string value(item->string);
7007 StringUtils::StringSplitter(value, ',', familyArray);
7008 }
7009
7010 ArkUIFontWithOptionsStruct fontStruct;
7011 fontStruct.fontSizeNumber = size;
7012 fontStruct.fontSizeUnit = GetDefaultUnit(node, UNIT_FP);
7013 fontStruct.fontWeight = weight;
7014 if (familyArray.size() > 0) {
7015 std::vector<const char*> fontFamilies;
7016 for (const auto& element : familyArray) {
7017 fontFamilies.push_back(element.c_str());
7018 }
7019 fontStruct.fontFamilies = fontFamilies.data();
7020 }
7021 fontStruct.fontStyle = style;
7022 ArkUIFontWithOptionsStruct* fontInfo = &fontStruct;
7023 fullImpl->getNodeModifiers()->getTextModifier()->setTextFont(node->uiNodeHandle, fontInfo);
7024 return ERROR_CODE_NO_ERROR;
7025 }
7026
GetTextFont(ArkUI_NodeHandle node)7027 const ArkUI_AttributeItem* GetTextFont(ArkUI_NodeHandle node)
7028 {
7029 ArkUITextFont font;
7030 font.fontSizeUnit = GetDefaultUnit(node, UNIT_FP);
7031 GetFullImpl()->getNodeModifiers()->getTextModifier()->getFont(node->uiNodeHandle, &font);
7032 int index = 0;
7033 g_numberValues[index++].f32 = font.fontSize;
7034 g_numberValues[index++].i32 = font.fontWeight;
7035 g_numberValues[index++].i32 = font.fontStyle;
7036 g_attributeItem.size = index;
7037 g_attributeItem.string = font.fontFamilies;
7038 return &g_attributeItem;
7039 }
7040
ResetTextFont(ArkUI_NodeHandle node)7041 void ResetTextFont(ArkUI_NodeHandle node)
7042 {
7043 auto fullImpl = GetFullImpl();
7044 fullImpl->getNodeModifiers()->getTextModifier()->resetTextFont(node->uiNodeHandle);
7045 }
7046
SetTextHeightAdaptivePolicy(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7047 int32_t SetTextHeightAdaptivePolicy(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7048 {
7049 if (item->size == 0 || !CheckAttributeIsTextHeightAdaptivePolicy(item->value[0].i32)) {
7050 return ERROR_CODE_PARAM_INVALID;
7051 }
7052 auto fullImpl = GetFullImpl();
7053 fullImpl->getNodeModifiers()->getTextModifier()->setTextHeightAdaptivePolicy(
7054 node->uiNodeHandle, item->value[0].i32);
7055 return ERROR_CODE_NO_ERROR;
7056 }
7057
GetTextHeightAdaptivePolicy(ArkUI_NodeHandle node)7058 const ArkUI_AttributeItem* GetTextHeightAdaptivePolicy(ArkUI_NodeHandle node)
7059 {
7060 auto resultValue =
7061 GetFullImpl()->getNodeModifiers()->getTextModifier()->getHeightAdaptivePolicy(node->uiNodeHandle);
7062 g_numberValues[0].i32 = resultValue;
7063 return &g_attributeItem;
7064 }
7065
ResetTextHeightAdaptivePolicy(ArkUI_NodeHandle node)7066 void ResetTextHeightAdaptivePolicy(ArkUI_NodeHandle node)
7067 {
7068 auto fullImpl = GetFullImpl();
7069 fullImpl->getNodeModifiers()->getTextModifier()->resetTextHeightAdaptivePolicy(node->uiNodeHandle);
7070 }
7071
7072 // Toggle Attributes functions
SetToggleSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7073 int32_t SetToggleSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7074 {
7075 if (item->size == 0) {
7076 return ERROR_CODE_PARAM_INVALID;
7077 }
7078 auto* fullImpl = GetFullImpl();
7079
7080 fullImpl->getNodeModifiers()->getToggleModifier()->setToggleSelectedColor(node->uiNodeHandle, item->value[0].u32);
7081 return ERROR_CODE_NO_ERROR;
7082 }
7083
GetToggleSelectedColor(ArkUI_NodeHandle node)7084 const ArkUI_AttributeItem* GetToggleSelectedColor(ArkUI_NodeHandle node)
7085 {
7086 auto resultValue =
7087 GetFullImpl()->getNodeModifiers()->getToggleModifier()->getToggleSelectedColor(node->uiNodeHandle);
7088 g_numberValues[0].u32 = resultValue;
7089 return &g_attributeItem;
7090 }
7091
ResetToggleSelectedColor(ArkUI_NodeHandle node)7092 void ResetToggleSelectedColor(ArkUI_NodeHandle node)
7093 {
7094 auto* fullImpl = GetFullImpl();
7095
7096 fullImpl->getNodeModifiers()->getToggleModifier()->resetToggleSelectedColor(node->uiNodeHandle);
7097 }
7098
SetToggleSwitchPointColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7099 int32_t SetToggleSwitchPointColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7100 {
7101 if (item->size == 0) {
7102 return ERROR_CODE_PARAM_INVALID;
7103 }
7104 auto* fullImpl = GetFullImpl();
7105
7106 fullImpl->getNodeModifiers()->getToggleModifier()->setToggleSwitchPointColor(
7107 node->uiNodeHandle, item->value[0].u32);
7108 return ERROR_CODE_NO_ERROR;
7109 }
7110
GetToggleSwitchPointColor(ArkUI_NodeHandle node)7111 const ArkUI_AttributeItem* GetToggleSwitchPointColor(ArkUI_NodeHandle node)
7112 {
7113 auto resultValue =
7114 GetFullImpl()->getNodeModifiers()->getToggleModifier()->getToggleSwitchPointColor(node->uiNodeHandle);
7115 g_numberValues[0].u32 = resultValue;
7116 return &g_attributeItem;
7117 }
7118
ResetToggleSwitchPointColor(ArkUI_NodeHandle node)7119 void ResetToggleSwitchPointColor(ArkUI_NodeHandle node)
7120 {
7121 auto* fullImpl = GetFullImpl();
7122
7123 fullImpl->getNodeModifiers()->getToggleModifier()->resetToggleSwitchPointColor(node->uiNodeHandle);
7124 }
7125
SetToggleValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7126 int32_t SetToggleValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7127 {
7128 if (item->size == 0) {
7129 return ERROR_CODE_PARAM_INVALID;
7130 }
7131 auto* fullImpl = GetFullImpl();
7132 fullImpl->getNodeModifiers()->getToggleModifier()->setToggleIsOn(
7133 node->uiNodeHandle, item->value[0].i32);
7134 return ERROR_CODE_NO_ERROR;
7135 }
7136
GetToggleValue(ArkUI_NodeHandle node)7137 const ArkUI_AttributeItem* GetToggleValue(ArkUI_NodeHandle node)
7138 {
7139 auto resultValue =
7140 GetFullImpl()->getNodeModifiers()->getToggleModifier()->getToggleIsOn(node->uiNodeHandle);
7141 g_numberValues[0].i32 = resultValue;
7142 return &g_attributeItem;
7143 }
7144
ResetToggleValue(ArkUI_NodeHandle node)7145 void ResetToggleValue(ArkUI_NodeHandle node)
7146 {
7147 auto* fullImpl = GetFullImpl();
7148 fullImpl->getNodeModifiers()->getToggleModifier()->resetToggleIsOn(node->uiNodeHandle);
7149 }
7150
SetToggleUnselectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7151 int32_t SetToggleUnselectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7152 {
7153 if (item->size == 0) {
7154 return ERROR_CODE_PARAM_INVALID;
7155 }
7156 auto* fullImpl = GetFullImpl();
7157
7158 fullImpl->getNodeModifiers()->getToggleModifier()->setToggleUnselectedColor(node->uiNodeHandle, item->value[0].u32);
7159 return ERROR_CODE_NO_ERROR;
7160 }
7161
GetToggleUnselectedColor(ArkUI_NodeHandle node)7162 const ArkUI_AttributeItem* GetToggleUnselectedColor(ArkUI_NodeHandle node)
7163 {
7164 auto resultValue =
7165 GetFullImpl()->getNodeModifiers()->getToggleModifier()->getToggleUnselectedColor(node->uiNodeHandle);
7166 g_numberValues[0].u32 = resultValue;
7167 return &g_attributeItem;
7168 }
7169
ResetToggleUnselectedColor(ArkUI_NodeHandle node)7170 void ResetToggleUnselectedColor(ArkUI_NodeHandle node)
7171 {
7172 auto* fullImpl = GetFullImpl();
7173 fullImpl->getNodeModifiers()->getToggleModifier()->resetToggleUnselectedColor(node->uiNodeHandle);
7174 }
7175
7176 // LoadingProgress Attributes functions
GetLoadingProgressColor(ArkUI_NodeHandle node)7177 const ArkUI_AttributeItem* GetLoadingProgressColor(ArkUI_NodeHandle node)
7178 {
7179 auto modifier = GetFullImpl()->getNodeModifiers()->getLoadingProgressModifier();
7180
7181 g_numberValues[0].u32 = modifier->getColor(node->uiNodeHandle);
7182 return &g_attributeItem;
7183 }
7184
SetLoadingProgressColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7185 int32_t SetLoadingProgressColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7186 {
7187 // already check in entry point.
7188 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7189 if (actualSize < 0) {
7190 return ERROR_CODE_PARAM_INVALID;
7191 }
7192 auto fullImpl = GetFullImpl();
7193
7194 fullImpl->getNodeModifiers()->getLoadingProgressModifier()->setColor(node->uiNodeHandle, item->value[NUM_0].u32);
7195 return ERROR_CODE_NO_ERROR;
7196 }
7197
ResetLoadingProgressColor(ArkUI_NodeHandle node)7198 void ResetLoadingProgressColor(ArkUI_NodeHandle node)
7199 {
7200 auto fullImpl = GetFullImpl();
7201
7202 fullImpl->getNodeModifiers()->getLoadingProgressModifier()->resetColor(node->uiNodeHandle);
7203 }
7204
GetLoadingProgressEnableLoading(ArkUI_NodeHandle node)7205 const ArkUI_AttributeItem* GetLoadingProgressEnableLoading(ArkUI_NodeHandle node)
7206 {
7207 auto modifier = GetFullImpl()->getNodeModifiers()->getLoadingProgressModifier();
7208
7209 g_numberValues[0].i32 = modifier->getEnableLoading(node->uiNodeHandle);
7210 return &g_attributeItem;
7211 }
7212
SetLoadingProgressEnableLoading(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7213 int32_t SetLoadingProgressEnableLoading(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7214 {
7215 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7216 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7217 return ERROR_CODE_PARAM_INVALID;
7218 }
7219 auto fullImpl = GetFullImpl();
7220
7221 fullImpl->getNodeModifiers()->getLoadingProgressModifier()->setEnableLoading(
7222 node->uiNodeHandle, item->value[NUM_0].i32);
7223 return ERROR_CODE_NO_ERROR;
7224 }
7225
ResetLoadingProgressEnableLoading(ArkUI_NodeHandle node)7226 void ResetLoadingProgressEnableLoading(ArkUI_NodeHandle node)
7227 {
7228 auto fullImpl = GetFullImpl();
7229
7230 fullImpl->getNodeModifiers()->getLoadingProgressModifier()->resetEnableLoading(node->uiNodeHandle);
7231 }
7232
7233 // Swiper Attributes functions
SetSwiperLoop(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7234 int32_t SetSwiperLoop(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7235 {
7236 if (item->size == 0) {
7237 return ERROR_CODE_PARAM_INVALID;
7238 }
7239 if (!InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7240 return ERROR_CODE_PARAM_INVALID;
7241 }
7242 auto* fullImpl = GetFullImpl();
7243 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperLoop(
7244 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
7245 return ERROR_CODE_NO_ERROR;
7246 }
7247
ResetSwiperLoop(ArkUI_NodeHandle node)7248 void ResetSwiperLoop(ArkUI_NodeHandle node)
7249 {
7250 auto* fullImpl = GetFullImpl();
7251 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperLoop(node->uiNodeHandle);
7252 }
7253
GetSwiperLoop(ArkUI_NodeHandle node)7254 const ArkUI_AttributeItem* GetSwiperLoop(ArkUI_NodeHandle node)
7255 {
7256 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7257 g_numberValues[0].i32 = modifier->getSwiperLoop(node->uiNodeHandle);
7258 return &g_attributeItem;
7259 }
7260
SetSwiperAutoPlay(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7261 int32_t SetSwiperAutoPlay(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7262 {
7263 if (item->size == 0) {
7264 return ERROR_CODE_PARAM_INVALID;
7265 }
7266 if (!InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7267 return ERROR_CODE_PARAM_INVALID;
7268 }
7269 auto* fullImpl = GetFullImpl();
7270 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperAutoPlay(node->uiNodeHandle, item->value[0].i32);
7271 return ERROR_CODE_NO_ERROR;
7272 }
7273
ResetSwiperAutoPlay(ArkUI_NodeHandle node)7274 void ResetSwiperAutoPlay(ArkUI_NodeHandle node)
7275 {
7276 auto* fullImpl = GetFullImpl();
7277 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperAutoPlay(node->uiNodeHandle);
7278 }
7279
GetSwiperAutoPlay(ArkUI_NodeHandle node)7280 const ArkUI_AttributeItem* GetSwiperAutoPlay(ArkUI_NodeHandle node)
7281 {
7282 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7283 g_numberValues[0].i32 = modifier->getSwiperAutoPlay(node->uiNodeHandle);
7284 return &g_attributeItem;
7285 }
7286
SetSwiperShowIndicator(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7287 int32_t SetSwiperShowIndicator(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7288 {
7289 if (item->size == 0) {
7290 return ERROR_CODE_PARAM_INVALID;
7291 }
7292 if (!InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7293 return ERROR_CODE_PARAM_INVALID;
7294 }
7295 auto* fullImpl = GetFullImpl();
7296 std::vector<std::string> IndicatorProps = { "boolean", "true" };
7297 IndicatorProps[NUM_1] = std::to_string(item->value[0].i32);
7298 std::stringstream ss;
7299 for (const auto& str : IndicatorProps) {
7300 ss << str << "|";
7301 }
7302 std::string result;
7303 ss >> result;
7304 if (!result.empty()) {
7305 result.pop_back(); // 删除最后一个字符
7306 }
7307 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperIndicator(node->uiNodeHandle, result.c_str());
7308 return ERROR_CODE_NO_ERROR;
7309 }
7310
ResetSwiperShowIndicator(ArkUI_NodeHandle node)7311 void ResetSwiperShowIndicator(ArkUI_NodeHandle node)
7312 {
7313 auto* fullImpl = GetFullImpl();
7314 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperIndicator(node->uiNodeHandle);
7315 }
7316
GetSwiperShowIndicator(ArkUI_NodeHandle node)7317 const ArkUI_AttributeItem* GetSwiperShowIndicator(ArkUI_NodeHandle node)
7318 {
7319 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7320 g_numberValues[0].i32 = modifier->getSwiperShowIndicator(node->uiNodeHandle);
7321 return &g_attributeItem;
7322 }
7323
SetSwiperInterval(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7324 int32_t SetSwiperInterval(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7325 {
7326 if (item->size == 0) {
7327 return ERROR_CODE_PARAM_INVALID;
7328 }
7329 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7330 return ERROR_CODE_PARAM_INVALID;
7331 }
7332 auto* fullImpl = GetFullImpl();
7333 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperInterval(
7334 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].f32));
7335 return ERROR_CODE_NO_ERROR;
7336 }
7337
ResetSwiperInterval(ArkUI_NodeHandle node)7338 void ResetSwiperInterval(ArkUI_NodeHandle node)
7339 {
7340 auto* fullImpl = GetFullImpl();
7341 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperInterval(node->uiNodeHandle);
7342 }
7343
GetSwiperInterval(ArkUI_NodeHandle node)7344 const ArkUI_AttributeItem* GetSwiperInterval(ArkUI_NodeHandle node)
7345 {
7346 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7347 g_numberValues[0].f32 = modifier->getSwiperInterval(node->uiNodeHandle);
7348 return &g_attributeItem;
7349 }
7350
SetSwiperVertical(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7351 int32_t SetSwiperVertical(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7352 {
7353 if (item->size == 0) {
7354 return ERROR_CODE_PARAM_INVALID;
7355 }
7356 if (!InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7357 return ERROR_CODE_PARAM_INVALID;
7358 }
7359 auto* fullImpl = GetFullImpl();
7360 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperVertical(
7361 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
7362 return ERROR_CODE_NO_ERROR;
7363 }
7364
ResetSwiperVertical(ArkUI_NodeHandle node)7365 void ResetSwiperVertical(ArkUI_NodeHandle node)
7366 {
7367 auto* fullImpl = GetFullImpl();
7368 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperVertical(node->uiNodeHandle);
7369 }
7370
GetSwiperVertical(ArkUI_NodeHandle node)7371 const ArkUI_AttributeItem* GetSwiperVertical(ArkUI_NodeHandle node)
7372 {
7373 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7374 g_numberValues[0].i32 = modifier->getSwiperVertical(node->uiNodeHandle);
7375 return &g_attributeItem;
7376 }
7377
SetSwiperDuration(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7378 int32_t SetSwiperDuration(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7379 {
7380 if (item->size == 0) {
7381 return ERROR_CODE_PARAM_INVALID;
7382 }
7383 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7384 return ERROR_CODE_PARAM_INVALID;
7385 }
7386 auto* fullImpl = GetFullImpl();
7387 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperDuration(node->uiNodeHandle, item->value[0].f32);
7388 return ERROR_CODE_NO_ERROR;
7389 }
7390
ResetSwiperDuration(ArkUI_NodeHandle node)7391 void ResetSwiperDuration(ArkUI_NodeHandle node)
7392 {
7393 auto* fullImpl = GetFullImpl();
7394 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperDuration(node->uiNodeHandle);
7395 }
7396
GetSwiperDuration(ArkUI_NodeHandle node)7397 const ArkUI_AttributeItem* GetSwiperDuration(ArkUI_NodeHandle node)
7398 {
7399 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7400 g_numberValues[0].f32 = modifier->getSwiperDuration(node->uiNodeHandle);
7401 return &g_attributeItem;
7402 }
7403
SetSwiperCurve(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7404 int32_t SetSwiperCurve(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7405 {
7406 if (item->size == 0) {
7407 return ERROR_CODE_PARAM_INVALID;
7408 }
7409 if (item->value[0].i32 < ArkUI_AnimationCurve::ARKUI_CURVE_LINEAR ||
7410 item->value[0].i32 > ArkUI_AnimationCurve::ARKUI_CURVE_FRICTION) {
7411 return ERROR_CODE_PARAM_INVALID;
7412 }
7413 auto* fullImpl = GetFullImpl();
7414 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperCurve(
7415 node->uiNodeHandle, CurveToString(item->value[0].i32).c_str());
7416 return ERROR_CODE_NO_ERROR;
7417 }
7418
ResetSwiperCurve(ArkUI_NodeHandle node)7419 void ResetSwiperCurve(ArkUI_NodeHandle node)
7420 {
7421 auto* fullImpl = GetFullImpl();
7422 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperCurve(node->uiNodeHandle);
7423 }
7424
GetSwiperCurve(ArkUI_NodeHandle node)7425 const ArkUI_AttributeItem* GetSwiperCurve(ArkUI_NodeHandle node)
7426 {
7427 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7428 g_numberValues[0].i32 = modifier->getSwiperCurve(node->uiNodeHandle);
7429 return &g_attributeItem;
7430 }
7431
SetSwiperItemSpace(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7432 int32_t SetSwiperItemSpace(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7433 {
7434 if (item->size == 0) {
7435 return ERROR_CODE_PARAM_INVALID;
7436 }
7437 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7438 return ERROR_CODE_PARAM_INVALID;
7439 }
7440 auto* fullImpl = GetFullImpl();
7441 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperItemSpace(
7442 node->uiNodeHandle, item->value[0].f32, NUM_1);
7443 return ERROR_CODE_NO_ERROR;
7444 }
7445
ResetSwiperItemSpace(ArkUI_NodeHandle node)7446 void ResetSwiperItemSpace(ArkUI_NodeHandle node)
7447 {
7448 auto* fullImpl = GetFullImpl();
7449 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperItemSpace(node->uiNodeHandle);
7450 }
7451
GetSwiperItemSpace(ArkUI_NodeHandle node)7452 const ArkUI_AttributeItem* GetSwiperItemSpace(ArkUI_NodeHandle node)
7453 {
7454 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7455 g_numberValues[0].f32 = modifier->getSwiperItemSpace(node->uiNodeHandle);
7456 return &g_attributeItem;
7457 }
7458
SetSwiperIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7459 int32_t SetSwiperIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7460 {
7461 if (item->size == 0) {
7462 return ERROR_CODE_PARAM_INVALID;
7463 }
7464 if (item->value[0].i32 < 0) {
7465 return ERROR_CODE_PARAM_INVALID;
7466 }
7467
7468 ArkUI_Int32 animationMode = DEFAULT_ANIMATION_MODE;
7469 if (item->size > 1 && InRegion(NUM_0, NUM_2, item->value[1].i32)) {
7470 animationMode = item->value[1].i32;
7471 }
7472 auto* fullImpl = GetFullImpl();
7473 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperIndex(node->uiNodeHandle, item->value[0].i32, animationMode);
7474 return ERROR_CODE_NO_ERROR;
7475 }
7476
ResetSwiperIndex(ArkUI_NodeHandle node)7477 void ResetSwiperIndex(ArkUI_NodeHandle node)
7478 {
7479 auto* fullImpl = GetFullImpl();
7480 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperIndex(node->uiNodeHandle);
7481 }
7482
GetSwiperIndex(ArkUI_NodeHandle node)7483 const ArkUI_AttributeItem* GetSwiperIndex(ArkUI_NodeHandle node)
7484 {
7485 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7486 g_numberValues[0].i32 = modifier->getSwiperIndex(node->uiNodeHandle);
7487 return &g_attributeItem;
7488 }
7489
SetSwiperDisplayCount(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7490 int32_t SetSwiperDisplayCount(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7491 {
7492 if (item->size == 0) {
7493 return ERROR_CODE_PARAM_INVALID;
7494 }
7495 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7496 return ERROR_CODE_PARAM_INVALID;
7497 }
7498 auto* fullImpl = GetFullImpl();
7499 std::string type = "number";
7500 std::string displayCount = std::to_string(item->value[0].i32);
7501 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperDisplayCount(
7502 node->uiNodeHandle, displayCount.c_str(), type.c_str());
7503 return ERROR_CODE_NO_ERROR;
7504 }
7505
ResetSwiperDisplayCount(ArkUI_NodeHandle node)7506 void ResetSwiperDisplayCount(ArkUI_NodeHandle node)
7507 {
7508 auto* fullImpl = GetFullImpl();
7509 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperDisplayCount(node->uiNodeHandle);
7510 }
7511
GetSwiperDisplayCount(ArkUI_NodeHandle node)7512 const ArkUI_AttributeItem* GetSwiperDisplayCount(ArkUI_NodeHandle node)
7513 {
7514 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7515 g_numberValues[0].i32 = modifier->getSwiperDisplayCount(node->uiNodeHandle);
7516 return &g_attributeItem;
7517 }
7518
SetSwiperDisableSwipe(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7519 int32_t SetSwiperDisableSwipe(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7520 {
7521 if (item->size == 0) {
7522 return ERROR_CODE_PARAM_INVALID;
7523 }
7524 if (!InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7525 return ERROR_CODE_PARAM_INVALID;
7526 }
7527 auto* fullImpl = GetFullImpl();
7528 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperDisableSwipe(
7529 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
7530 return ERROR_CODE_NO_ERROR;
7531 }
7532
ResetSwiperDisableSwipe(ArkUI_NodeHandle node)7533 void ResetSwiperDisableSwipe(ArkUI_NodeHandle node)
7534 {
7535 auto* fullImpl = GetFullImpl();
7536 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperDisableSwipe(node->uiNodeHandle);
7537 }
7538
GetSwiperDisableSwipe(ArkUI_NodeHandle node)7539 const ArkUI_AttributeItem* GetSwiperDisableSwipe(ArkUI_NodeHandle node)
7540 {
7541 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7542 g_numberValues[0].i32 = modifier->getSwiperDisableSwipe(node->uiNodeHandle);
7543 return &g_attributeItem;
7544 }
7545
SetSwiperShowDisplayArrow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7546 int32_t SetSwiperShowDisplayArrow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7547 {
7548 if (item->size == 0) {
7549 return ERROR_CODE_PARAM_INVALID;
7550 }
7551 if (!InRegion(NUM_0, NUM_2, item->value[NUM_0].i32)) {
7552 return ERROR_CODE_PARAM_INVALID;
7553 }
7554 auto* fullImpl = GetFullImpl();
7555 double defaultBackgroundColor = StringToColorInt("#00000000", 0);
7556 double defaultArrowColor = StringToColorInt("#FF182431", 0);
7557 double displayArrow[ALLOW_SIZE_8] = { 1, 0, 0, DEFAULT_SIZE_24, defaultBackgroundColor, DEFAULT_SIZE_18,
7558 defaultArrowColor, 0 };
7559 if (item->value[0].i32 == ArkUI_SwiperArrow::ARKUI_SWIPER_ARROW_SHOW_ON_HOVER) {
7560 displayArrow[NUM_0] = DISPLAY_ARROW_TRUE;
7561 displayArrow[NUM_7] = DISPLAY_ARROW_TRUE;
7562 } else {
7563 displayArrow[NUM_0] = item->value[0].i32;
7564 displayArrow[NUM_7] = DISPLAY_ARROW_FALSE;
7565 }
7566 std::stringstream ss;
7567 for (const auto& str : displayArrow) {
7568 ss << str << "|";
7569 }
7570 std::string result;
7571 ss >> result;
7572 if (!result.empty()) {
7573 result.pop_back(); // 删除最后一个字符
7574 }
7575 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperDisplayArrow(node->uiNodeHandle, result.c_str());
7576 return ERROR_CODE_NO_ERROR;
7577 }
7578
ResetSwiperShowDisplayArrow(ArkUI_NodeHandle node)7579 void ResetSwiperShowDisplayArrow(ArkUI_NodeHandle node)
7580 {
7581 auto* fullImpl = GetFullImpl();
7582 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperDisplayArrow(node->uiNodeHandle);
7583 }
7584
GetSwiperShowDisplayArrow(ArkUI_NodeHandle node)7585 const ArkUI_AttributeItem* GetSwiperShowDisplayArrow(ArkUI_NodeHandle node)
7586 {
7587 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7588 g_numberValues[0].i32 = modifier->getSwiperShowDisplayArrow(node->uiNodeHandle);
7589 return &g_attributeItem;
7590 }
7591
SetSwiperEffectMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7592 int32_t SetSwiperEffectMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7593 {
7594 if (item->size == 0) {
7595 return ERROR_CODE_PARAM_INVALID;
7596 }
7597 if (item->value[0].i32 < ArkUI_EdgeEffect::ARKUI_EDGE_EFFECT_SPRING ||
7598 item->value[0].i32 > ArkUI_EdgeEffect::ARKUI_EDGE_EFFECT_NONE) {
7599 return ERROR_CODE_PARAM_INVALID;
7600 }
7601 auto* fullImpl = GetFullImpl();
7602 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperEffectMode(
7603 node->uiNodeHandle, static_cast<ArkUI_Int32>(item->value[0].i32));
7604 return ERROR_CODE_NO_ERROR;
7605 }
7606
ResetSwiperEffectMode(ArkUI_NodeHandle node)7607 void ResetSwiperEffectMode(ArkUI_NodeHandle node)
7608 {
7609 auto* fullImpl = GetFullImpl();
7610 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperEffectMode(node->uiNodeHandle);
7611 }
7612
GetSwiperEffectMode(ArkUI_NodeHandle node)7613 const ArkUI_AttributeItem* GetSwiperEffectMode(ArkUI_NodeHandle node)
7614 {
7615 auto modifier = GetFullImpl()->getNodeModifiers()->getSwiperModifier();
7616 g_numberValues[0].i32 = modifier->getSwiperEffectMode(node->uiNodeHandle);
7617 return &g_attributeItem;
7618 }
7619
SetSwiperNodeAdapter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7620 int32_t SetSwiperNodeAdapter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7621 {
7622 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
7623 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
7624 auto* nodeAdapter = reinterpret_cast<ArkUINodeAdapterHandle>(item->object);
7625 return GetFullImpl()->getNodeModifiers()->getSwiperModifier()->setNodeAdapter(node->uiNodeHandle, nodeAdapter);
7626 }
7627
ResetSwiperNodeAdapter(ArkUI_NodeHandle node)7628 void ResetSwiperNodeAdapter(ArkUI_NodeHandle node)
7629 {
7630 // already check in entry point.
7631 auto* fullImpl = GetFullImpl();
7632
7633 fullImpl->getNodeModifiers()->getSwiperModifier()->resetNodeAdapter(node->uiNodeHandle);
7634 }
7635
GetSwiperNodeAdapter(ArkUI_NodeHandle node)7636 const ArkUI_AttributeItem* GetSwiperNodeAdapter(ArkUI_NodeHandle node)
7637 {
7638 ArkUINodeAdapterHandle adapter =
7639 GetFullImpl()->getNodeModifiers()->getSwiperModifier()->getNodeAdapter(node->uiNodeHandle);
7640 g_attributeItem.object = reinterpret_cast<void*>(adapter);
7641 return &g_attributeItem;
7642 }
7643
SetSwiperCachedCount(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7644 int32_t SetSwiperCachedCount(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7645 {
7646 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
7647 if (item->size < 1) {
7648 return ERROR_CODE_PARAM_INVALID;
7649 }
7650 if (LessNotEqual(item->value[0].i32, NUM_0)) {
7651 return ERROR_CODE_PARAM_INVALID;
7652 }
7653 GetFullImpl()->getNodeModifiers()->getSwiperModifier()->setSwiperCachedCount(
7654 node->uiNodeHandle, item->value[0].i32);
7655
7656 ArkUI_Bool isShown = DEFAULT_FALSE;
7657 if (item->size == 2 && InRegion(DEFAULT_FALSE, DEFAULT_TRUE, item->value[1].i32)) {
7658 isShown = item->value[1].i32;
7659 }
7660 GetFullImpl()->getNodeModifiers()->getSwiperModifier()->setSwiperIsShown(node->uiNodeHandle, isShown);
7661 return ERROR_CODE_NO_ERROR;
7662 }
7663
ResetSwiperCachedCount(ArkUI_NodeHandle node)7664 void ResetSwiperCachedCount(ArkUI_NodeHandle node)
7665 {
7666 // already check in entry point.
7667 auto* fullImpl = GetFullImpl();
7668
7669 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperCachedCount(node->uiNodeHandle);
7670 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperIsShown(node->uiNodeHandle);
7671 }
7672
GetSwiperCachedCount(ArkUI_NodeHandle node)7673 const ArkUI_AttributeItem* GetSwiperCachedCount(ArkUI_NodeHandle node)
7674 {
7675 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getSwiperModifier()->getCachedCount(node->uiNodeHandle);
7676 ArkUI_Int32 isShown =
7677 GetFullImpl()->getNodeModifiers()->getSwiperModifier()->getSwiperCachedIsShown(node->uiNodeHandle);
7678 g_numberValues[0].i32 = value;
7679 g_numberValues[1].i32 = isShown;
7680 return &g_attributeItem;
7681 }
7682
SetSwiperNestedScroll(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7683 int32_t SetSwiperNestedScroll(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7684 {
7685 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7686 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7687 return ERROR_CODE_PARAM_INVALID;
7688 }
7689 ArkUI_Int32 values[ALLOW_SIZE_1] = {0};
7690 values[0] = item->value[0].i32;
7691
7692 auto* fullImpl = GetFullImpl();
7693 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperNestedScroll(node->uiNodeHandle, &values);
7694 return ERROR_CODE_NO_ERROR;
7695 }
7696
ResetSwiperNestedScroll(ArkUI_NodeHandle node)7697 void ResetSwiperNestedScroll(ArkUI_NodeHandle node)
7698 {
7699 auto* fullImpl = GetFullImpl();
7700 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperNestedScroll(node->uiNodeHandle);
7701 }
7702
GetSwiperNestedScroll(ArkUI_NodeHandle node)7703 const ArkUI_AttributeItem* GetSwiperNestedScroll(ArkUI_NodeHandle node)
7704 {
7705 auto* fullImpl = GetFullImpl();
7706 ArkUI_Int32 value = fullImpl->getNodeModifiers()->getSwiperModifier()->getSwiperNestedScroll(node->uiNodeHandle);
7707 g_numberValues[0].i32 = value;
7708 return &g_attributeItem;
7709 }
7710
SetSwiperToIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7711 int32_t SetSwiperToIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7712 {
7713 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7714 if (actualSize < 0) {
7715 return ERROR_CODE_PARAM_INVALID;
7716 }
7717 ArkUI_Int32 values[ALLOW_SIZE_2] = { 0, DEFAULT_FALSE };
7718 values[0] = item->value[0].i32;
7719 if (item->size > 1 && InRegion(NUM_0, NUM_1, item->value[1].i32)) {
7720 values[1] = item->value[1].i32;
7721 }
7722 auto* fullImpl = GetFullImpl();
7723 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperToIndex(node->uiNodeHandle, &values);
7724 return ERROR_CODE_NO_ERROR;
7725 }
7726
SetSwiperPrevMargin(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7727 int32_t SetSwiperPrevMargin(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7728 {
7729 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7730 if (actualSize < NUM_0) {
7731 return ERROR_CODE_PARAM_INVALID;
7732 }
7733 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7734 return ERROR_CODE_PARAM_INVALID;
7735 }
7736 ArkUI_Bool ignoreBlank = DEFAULT_FALSE;
7737 if (actualSize > NUM_1 && InRegion(DEFAULT_FALSE, DEFAULT_TRUE, item->value[1].i32)) {
7738 ignoreBlank = item->value[1].i32;
7739 }
7740 // already check in entry point.
7741 auto* fullImpl = GetFullImpl();
7742 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperPrevMargin(
7743 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_VP), ignoreBlank);
7744 return ERROR_CODE_NO_ERROR;
7745 }
7746
ResetSwiperPrevMargin(ArkUI_NodeHandle node)7747 void ResetSwiperPrevMargin(ArkUI_NodeHandle node)
7748 {
7749 // already check in entry point.
7750 auto* fullImpl = GetFullImpl();
7751 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperPrevMargin(node->uiNodeHandle);
7752 }
7753
GetSwiperPrevMargin(ArkUI_NodeHandle node)7754 const ArkUI_AttributeItem* GetSwiperPrevMargin(ArkUI_NodeHandle node)
7755 {
7756 // already check in entry point.
7757 auto* fullImpl = GetFullImpl();
7758 int32_t unit = GetDefaultUnit(node, UNIT_VP);
7759 ArkUISwiperMarginOptions options;
7760 fullImpl->getNodeModifiers()->getSwiperModifier()->getSwiperPrevMargin(node->uiNodeHandle, unit, &options);
7761 g_numberValues[0].f32 = options.margin;
7762 g_numberValues[1].i32 = options.ignoreBlank;
7763 g_attributeItem.size = REQUIRED_TWO_PARAM;
7764 return &g_attributeItem;
7765 }
7766
SetSwiperNextMargin(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7767 int32_t SetSwiperNextMargin(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7768 {
7769 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7770 if (actualSize < NUM_0) {
7771 return ERROR_CODE_PARAM_INVALID;
7772 }
7773 if (LessNotEqual(item->value[0].f32, 0.0f)) {
7774 return ERROR_CODE_PARAM_INVALID;
7775 }
7776 ArkUI_Bool ignoreBlank = DEFAULT_FALSE;
7777 if (actualSize > NUM_1 && InRegion(DEFAULT_FALSE, DEFAULT_TRUE, item->value[1].i32)) {
7778 ignoreBlank = item->value[1].i32;
7779 }
7780 // already check in entry point.
7781 auto* fullImpl = GetFullImpl();
7782 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperNextMargin(
7783 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_VP), ignoreBlank);
7784 return ERROR_CODE_NO_ERROR;
7785 }
7786
ResetSwiperNextMargin(ArkUI_NodeHandle node)7787 void ResetSwiperNextMargin(ArkUI_NodeHandle node)
7788 {
7789 // already check in entry point.
7790 auto* fullImpl = GetFullImpl();
7791 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperNextMargin(node->uiNodeHandle);
7792 }
7793
GetSwiperNextMargin(ArkUI_NodeHandle node)7794 const ArkUI_AttributeItem* GetSwiperNextMargin(ArkUI_NodeHandle node)
7795 {
7796 // already check in entry point.
7797 auto* fullImpl = GetFullImpl();
7798 int32_t unit = GetDefaultUnit(node, UNIT_VP);
7799 ArkUISwiperMarginOptions options;
7800 fullImpl->getNodeModifiers()->getSwiperModifier()->getSwiperNextMargin(node->uiNodeHandle, unit, &options);
7801 g_numberValues[0].f32 = options.margin;
7802 g_numberValues[1].i32 = options.ignoreBlank;
7803 g_attributeItem.size = REQUIRED_TWO_PARAM;
7804 return &g_attributeItem;
7805 }
7806
SetSwiperIndicator(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7807 int32_t SetSwiperIndicator(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7808 {
7809 if (item->size == 0) {
7810 return ERROR_CODE_PARAM_INVALID;
7811 }
7812 if (!CheckAttributeIndicator(item)) {
7813 return ERROR_CODE_PARAM_INVALID;
7814 }
7815
7816 ArkUI_SwiperIndicator* indicator = reinterpret_cast<ArkUI_SwiperIndicator*>(item->object);
7817 CHECK_NULL_RETURN(indicator, ERROR_CODE_PARAM_INVALID);
7818 node->swiperIndicator = indicator;
7819 ArkUISwiperIndicator indicatorProp;
7820 indicatorProp.dimUnit = GetDefaultUnit(node, UNIT_VP);
7821 indicatorProp.dimLeft = ArkUIOptionalFloat { indicator->dimLeft.isSet, indicator->dimLeft.value };
7822 indicatorProp.dimTop = ArkUIOptionalFloat { indicator->dimTop.isSet, indicator->dimTop.value };
7823 indicatorProp.dimRight = ArkUIOptionalFloat { indicator->dimRight.isSet, indicator->dimRight.value };
7824 indicatorProp.dimBottom = ArkUIOptionalFloat { indicator->dimBottom.isSet, indicator->dimBottom.value };
7825 if (indicator->type == ARKUI_SWIPER_INDICATOR_TYPE_DOT) {
7826 indicatorProp.type = ArkUISwiperIndicatorType::DOT;
7827 indicatorProp.itemWidth = ArkUIOptionalFloat { indicator->itemWidth.isSet, indicator->itemWidth.value };
7828 indicatorProp.itemHeight = ArkUIOptionalFloat { indicator->itemHeight.isSet, indicator->itemHeight.value };
7829 indicatorProp.selectedItemWidth =
7830 ArkUIOptionalFloat { indicator->selectedItemWidth.isSet, indicator->selectedItemWidth.value };
7831 indicatorProp.selectedItemHeight =
7832 ArkUIOptionalFloat { indicator->selectedItemHeight.isSet, indicator->selectedItemHeight.value };
7833 indicatorProp.maskValue = ArkUIOptionalInt { indicator->maskValue.isSet, indicator->maskValue.value };
7834 indicatorProp.colorValue = ArkUIOptionalUint { indicator->colorValue.isSet, indicator->colorValue.value };
7835 indicatorProp.selectedColorValue =
7836 ArkUIOptionalUint { indicator->selectedColorValue.isSet, indicator->selectedColorValue.value };
7837 indicatorProp.maxDisplayCount =
7838 ArkUIOptionalInt { indicator->maxDisplayCount.isSet, indicator->maxDisplayCount.value };
7839 } else {
7840 return ERROR_CODE_PARAM_INVALID;
7841 }
7842
7843 auto* fullImpl = GetFullImpl();
7844 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperIndicatorStyle(node->uiNodeHandle, &indicatorProp);
7845 return ERROR_CODE_NO_ERROR;
7846 }
7847
ResetSwiperIndicator(ArkUI_NodeHandle node)7848 void ResetSwiperIndicator(ArkUI_NodeHandle node)
7849 {
7850 auto* fullImpl = GetFullImpl();
7851 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperIndicator(node->uiNodeHandle);
7852 node->swiperIndicator = nullptr;
7853 }
7854
GetSwiperIndicator(ArkUI_NodeHandle node)7855 const ArkUI_AttributeItem* GetSwiperIndicator(ArkUI_NodeHandle node)
7856 {
7857 ArkUI_SwiperIndicator* indicator = reinterpret_cast<ArkUI_SwiperIndicator*>(node->swiperIndicator);
7858 if (!indicator) {
7859 return &g_attributeItem;
7860 }
7861 auto* fullImpl = GetFullImpl();
7862 ArkUISwiperIndicator props;
7863 fullImpl->getNodeModifiers()->getSwiperModifier()->getSwiperIndicator(node->uiNodeHandle, &props);
7864 indicator->dimLeft.value = props.dimLeft.value;
7865 indicator->dimTop.value = props.dimTop.value;
7866 indicator->dimRight.value = props.dimRight.value;
7867 indicator->dimBottom.value = props.dimBottom.value;
7868 if (props.type == ArkUISwiperIndicatorType::DOT) {
7869 indicator->itemWidth.value = props.itemWidth.value;
7870 indicator->itemHeight.value = props.itemHeight.value;
7871 indicator->selectedItemWidth.value = props.selectedItemWidth.value;
7872 indicator->selectedItemHeight.value = props.selectedItemHeight.value;
7873 indicator->maskValue.value = props.maskValue.value;
7874 indicator->colorValue.value = props.colorValue.value;
7875 indicator->selectedColorValue.value = props.selectedColorValue.value;
7876 indicator->maxDisplayCount.value = props.maxDisplayCount.value;
7877 } else {
7878 indicator = nullptr;
7879 }
7880
7881 g_numberValues[0].i32 = static_cast<int32_t>(props.type);
7882 g_attributeItem.size = REQUIRED_ONE_PARAM;
7883 g_attributeItem.object = indicator;
7884 return &g_attributeItem;
7885 }
7886
SetSwiperIndicatorInteractive(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7887 int32_t SetSwiperIndicatorInteractive(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7888 {
7889 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7890 if (actualSize < 0) {
7891 return ERROR_CODE_PARAM_INVALID;
7892 }
7893 auto* fullImpl = GetFullImpl();
7894 fullImpl->getNodeModifiers()->getSwiperModifier()->setIndicatorInteractive(node->uiNodeHandle,
7895 static_cast<bool>(item->value[0].i32));
7896 return ERROR_CODE_NO_ERROR;
7897 }
7898
ResetSwiperIndicatorInteractive(ArkUI_NodeHandle node)7899 void ResetSwiperIndicatorInteractive(ArkUI_NodeHandle node)
7900 {
7901 auto* fullImpl = GetFullImpl();
7902 fullImpl->getNodeModifiers()->getSwiperModifier()->resetIndicatorInteractive(node->uiNodeHandle);
7903 }
7904
GetSwiperIndicatorInteractive(ArkUI_NodeHandle node)7905 const ArkUI_AttributeItem* GetSwiperIndicatorInteractive(ArkUI_NodeHandle node)
7906 {
7907 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getSwiperModifier()->
7908 getIndicatorInteractive(node->uiNodeHandle);
7909 g_numberValues[0].i32 = value;
7910 return &g_attributeItem;
7911 }
7912
SetSwiperPageFlipMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7913 int32_t SetSwiperPageFlipMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7914 {
7915 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
7916 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
7917 return ERROR_CODE_PARAM_INVALID;
7918 }
7919
7920 auto* fullImpl = GetFullImpl();
7921 fullImpl->getNodeModifiers()->getSwiperModifier()->setSwiperPageFlipMode(node->uiNodeHandle, item->value[0].i32);
7922 return ERROR_CODE_NO_ERROR;
7923 }
7924
ResetSwiperPageFlipMode(ArkUI_NodeHandle node)7925 void ResetSwiperPageFlipMode(ArkUI_NodeHandle node)
7926 {
7927 auto* fullImpl = GetFullImpl();
7928 fullImpl->getNodeModifiers()->getSwiperModifier()->resetSwiperPageFlipMode(node->uiNodeHandle);
7929 }
7930
GetSwiperPageFlipMode(ArkUI_NodeHandle node)7931 const ArkUI_AttributeItem* GetSwiperPageFlipMode(ArkUI_NodeHandle node)
7932 {
7933 auto* fullImpl = GetFullImpl();
7934 ArkUI_Int32 value = fullImpl->getNodeModifiers()->getSwiperModifier()->getSwiperPageFlipMode(node->uiNodeHandle);
7935 g_numberValues[0].i32 = value;
7936 g_attributeItem.size = REQUIRED_ONE_PARAM;
7937 return &g_attributeItem;
7938 }
7939
SetTextFontFamily(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)7940 int32_t SetTextFontFamily(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
7941 {
7942 if (item->string == nullptr) {
7943 return ERROR_CODE_PARAM_INVALID;
7944 }
7945 auto* fullImpl = GetFullImpl();
7946 std::string value(item->string);
7947 std::vector<std::string> fontFamilies;
7948 StringUtils::StringSplitter(value, ',', fontFamilies);
7949 auto families = std::make_unique<char*[]>(fontFamilies.size());
7950 for (uint32_t i = 0; i < fontFamilies.size(); i++) {
7951 families[i] = const_cast<char*>(fontFamilies.at(i).c_str());
7952 }
7953
7954 if (node->type == ARKUI_NODE_TEXT_INPUT) {
7955 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontFamily(
7956 node->uiNodeHandle, const_cast<const char**>(families.get()), fontFamilies.size());
7957 } else if (node->type == ARKUI_NODE_TEXT) {
7958 fullImpl->getNodeModifiers()->getTextModifier()->setTextFontFamily(
7959 node->uiNodeHandle, const_cast<const char**>(families.get()), fontFamilies.size());
7960 } else if (node->type == ARKUI_NODE_SPAN) {
7961 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanFontFamily(
7962 node->uiNodeHandle, const_cast<const char**>(families.get()), fontFamilies.size());
7963 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
7964 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontFamily(node->uiNodeHandle, item->string);
7965 }
7966 return ERROR_CODE_NO_ERROR;
7967 }
7968
GetTextFontFamily(ArkUI_NodeHandle node)7969 const ArkUI_AttributeItem* GetTextFontFamily(ArkUI_NodeHandle node)
7970 {
7971 if (node->type == ARKUI_NODE_SPAN) {
7972 auto resultValue = GetFullImpl()->getNodeModifiers()->getSpanModifier()->getSpanFontFamily(node->uiNodeHandle);
7973 g_attributeItem.string = resultValue;
7974 } else {
7975 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextModifier()->getFontFamily(node->uiNodeHandle);
7976 g_attributeItem.string = resultValue;
7977 }
7978 g_attributeItem.size = 0;
7979 return &g_attributeItem;
7980 }
7981
ResetTextFontFamily(ArkUI_NodeHandle node)7982 void ResetTextFontFamily(ArkUI_NodeHandle node)
7983 {
7984 auto* fullImpl = GetFullImpl();
7985 if (node->type == ARKUI_NODE_TEXT_INPUT) {
7986 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontFamily(node->uiNodeHandle);
7987 } else if (node->type == ARKUI_NODE_TEXT) {
7988 fullImpl->getNodeModifiers()->getTextModifier()->resetTextFontFamily(node->uiNodeHandle);
7989 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
7990 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontFamily(node->uiNodeHandle);
7991 }
7992 }
7993
ResetTextCopyOption(ArkUI_NodeHandle node)7994 void ResetTextCopyOption(ArkUI_NodeHandle node)
7995 {
7996 auto* fullImpl = GetFullImpl();
7997 if (node->type == ARKUI_NODE_TEXT) {
7998 fullImpl->getNodeModifiers()->getTextModifier()->resetTextCopyOption(node->uiNodeHandle);
7999 }
8000 }
8001
SetTextCopyOption(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8002 int32_t SetTextCopyOption(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8003 {
8004 if (item->size == NUM_0 || !CheckAttributeIsCopyOptions(item->value[0].i32)) {
8005 return ERROR_CODE_PARAM_INVALID;
8006 }
8007 // already check in entry point.
8008 auto* fullImpl = GetFullImpl();
8009 if (node->type == ARKUI_NODE_TEXT) {
8010 fullImpl->getNodeModifiers()->getTextModifier()->setTextCopyOption(node->uiNodeHandle, item->value[0].i32);
8011 } else {
8012 return ERROR_CODE_PARAM_INVALID;
8013 }
8014 return ERROR_CODE_NO_ERROR;
8015 }
8016
GetTextCopyOption(ArkUI_NodeHandle node)8017 const ArkUI_AttributeItem* GetTextCopyOption(ArkUI_NodeHandle node)
8018 {
8019 auto resultValue = GetFullImpl()->getNodeModifiers()->getTextModifier()->getCopyOption(node->uiNodeHandle);
8020 g_numberValues[0].i32 = resultValue;
8021 return &g_attributeItem;
8022 }
8023
GetBaseLineOffset(ArkUI_NodeHandle node)8024 const ArkUI_AttributeItem* GetBaseLineOffset(ArkUI_NodeHandle node)
8025 {
8026 auto* fullImpl = GetFullImpl();
8027 if (node->type == ARKUI_NODE_SPAN) {
8028 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getSpanModifier()->getSpanBaselineOffset(
8029 node->uiNodeHandle);
8030 } else {
8031 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextBaselineOffset(
8032 node->uiNodeHandle);
8033 }
8034 g_attributeItem.size = REQUIRED_ONE_PARAM;
8035 return &g_attributeItem;
8036 }
8037
GetTextShadow(ArkUI_NodeHandle node)8038 const ArkUI_AttributeItem* GetTextShadow(ArkUI_NodeHandle node)
8039 {
8040 auto* fullImpl = GetFullImpl();
8041 ArkUITextShadowStruct shadowArray[NUM_1];
8042 if (node->type == ARKUI_NODE_TEXT) {
8043 fullImpl->getNodeModifiers()->getTextModifier()->getTextShadows(node->uiNodeHandle, &shadowArray[0], NUM_1);
8044 } else if (node->type == ARKUI_NODE_SPAN) {
8045 fullImpl->getNodeModifiers()->getSpanModifier()->getTextShadows(node->uiNodeHandle, &shadowArray[0], NUM_1);
8046 }
8047 g_numberValues[NUM_0].f32 = shadowArray[0].radius;
8048 g_numberValues[NUM_1].i32 = static_cast<int32_t>(shadowArray[0].type);
8049 g_numberValues[NUM_2].u32 = shadowArray[0].color;
8050 g_numberValues[NUM_3].f32 = shadowArray[0].offsetX;
8051 g_numberValues[NUM_4].f32 = shadowArray[0].offsetY;
8052 g_attributeItem.size = REQUIRED_FIVE_PARAM;
8053 return &g_attributeItem;
8054 }
8055
8056 // ListItemGroup
SetListItemGroupHeader(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8057 int32_t SetListItemGroupHeader(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8058 {
8059 if (!item->object) {
8060 return ERROR_CODE_PARAM_INVALID;
8061 }
8062 auto fullImpl = GetFullImpl();
8063 auto headerNodeHandle = reinterpret_cast<ArkUI_NodeHandle>(item->object);
8064 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupSetHeader(
8065 node->uiNodeHandle, headerNodeHandle->uiNodeHandle);
8066 return ERROR_CODE_NO_ERROR;
8067 }
8068
ResetListItemGroupHeader(ArkUI_NodeHandle node)8069 void ResetListItemGroupHeader(ArkUI_NodeHandle node)
8070 {
8071 // already check in entry point.
8072 auto* fullImpl = GetFullImpl();
8073 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupResetHeader(node->uiNodeHandle);
8074 }
8075
SetListItemGroupFooter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8076 int32_t SetListItemGroupFooter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8077 {
8078 if (!item->object) {
8079 return ERROR_CODE_PARAM_INVALID;
8080 }
8081 auto fullImpl = GetFullImpl();
8082 auto footerNodeHandle = reinterpret_cast<ArkUI_NodeHandle>(item->object);
8083 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupSetFooter(
8084 node->uiNodeHandle, footerNodeHandle->uiNodeHandle);
8085 return ERROR_CODE_NO_ERROR;
8086 }
8087
ResetListItemGroupFooter(ArkUI_NodeHandle node)8088 void ResetListItemGroupFooter(ArkUI_NodeHandle node)
8089 {
8090 auto* fullImpl = GetFullImpl();
8091 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupResetFooter(node->uiNodeHandle);
8092 }
8093
SetListItemGroupDivider(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8094 int32_t SetListItemGroupDivider(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8095 {
8096 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
8097 if (actualSize < 0 || LessNotEqual(item->value[NUM_1].f32, NUM_0) || LessNotEqual(item->value[NUM_2].f32, NUM_0) ||
8098 LessNotEqual(item->value[NUM_3].f32, NUM_0)) {
8099 return ERROR_CODE_PARAM_INVALID;
8100 }
8101 auto fullImpl = GetFullImpl();
8102 auto color = item->value[NUM_0].u32;
8103 int32_t unit = GetDefaultUnit(node, UNIT_VP);
8104 ArkUI_Float32 values[NUM_3] = { item->value[NUM_1].f32, item->value[NUM_2].f32, item->value[NUM_3].f32 };
8105 ArkUI_Int32 units[NUM_3] = { unit, unit, unit };
8106
8107 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupSetDivider(
8108 node->uiNodeHandle, color, values, units, NUM_3);
8109 return ERROR_CODE_NO_ERROR;
8110 }
8111
ResetListItemGroupDivider(ArkUI_NodeHandle node)8112 void ResetListItemGroupDivider(ArkUI_NodeHandle node)
8113 {
8114 // already check in entry point.
8115 auto* fullImpl = GetFullImpl();
8116 fullImpl->getNodeModifiers()->getListItemGroupModifier()->listItemGroupResetDivider(node->uiNodeHandle);
8117 }
8118
GetListItemGroupDivider(ArkUI_NodeHandle node)8119 const ArkUI_AttributeItem* GetListItemGroupDivider(ArkUI_NodeHandle node)
8120 {
8121 ArkUIdividerOptions option;
8122 GetFullImpl()->getNodeModifiers()->getListItemGroupModifier()->getlistItemGroupDivider(
8123 node->uiNodeHandle, &option, GetDefaultUnit(node, UNIT_VP));
8124 g_numberValues[NUM_0].u32 = option.color;
8125 g_numberValues[NUM_1].f32 = option.strokeWidth;
8126 g_numberValues[NUM_2].f32 = option.startMargin;
8127 g_numberValues[NUM_3].f32 = option.endMargin;
8128 g_attributeItem.size = ALLOW_SIZE_4;
8129 return &g_attributeItem;
8130 }
8131
SetListItemGroupChildrenMainSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8132 int32_t SetListItemGroupChildrenMainSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8133 {
8134 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
8135 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
8136 auto* listChildrenMainSize = reinterpret_cast<ArkUIListChildrenMainSize>(item->object);
8137 int32_t unit = GetDefaultUnit(node, UNIT_VP);
8138 GetFullImpl()->getNodeModifiers()->getListItemGroupModifier()->setListItemGroupChildrenMainSize(
8139 node->uiNodeHandle, listChildrenMainSize, unit);
8140 return ERROR_CODE_NO_ERROR;
8141 }
8142
ResetListItemGroupChildrenMainSize(ArkUI_NodeHandle node)8143 void ResetListItemGroupChildrenMainSize(ArkUI_NodeHandle node)
8144 {
8145 auto* fullImpl = GetFullImpl();
8146 fullImpl->getNodeModifiers()->getListItemGroupModifier()->resetListItemGroupChildrenMainSize(node->uiNodeHandle);
8147 }
8148
SetListItemGroupNodeAdapter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8149 int32_t SetListItemGroupNodeAdapter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8150 {
8151 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
8152 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
8153 auto* nodeAdapter = reinterpret_cast<ArkUINodeAdapterHandle>(item->object);
8154 return GetFullImpl()->getNodeModifiers()->getListItemGroupModifier()->setListItemGroupNodeAdapter(
8155 node->uiNodeHandle, nodeAdapter);
8156 }
8157
ResetListItemGroupNodeAdapter(ArkUI_NodeHandle node)8158 void ResetListItemGroupNodeAdapter(ArkUI_NodeHandle node)
8159 {
8160 // already check in entry point.
8161 auto* fullImpl = GetFullImpl();
8162 fullImpl->getNodeModifiers()->getListItemGroupModifier()->resetListItemGroupNodeAdapter(node->uiNodeHandle);
8163 }
8164
GetListItemGroupNodeAdapter(ArkUI_NodeHandle node)8165 const ArkUI_AttributeItem* GetListItemGroupNodeAdapter(ArkUI_NodeHandle node)
8166 {
8167 ArkUINodeAdapterHandle adapter =
8168 GetFullImpl()->getNodeModifiers()->getListItemGroupModifier()->getListItemGroupNodeAdapter(node->uiNodeHandle);
8169 g_attributeItem.object = reinterpret_cast<void*>(adapter);
8170 return &g_attributeItem;
8171 }
8172
SetListItemSwiperAction(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8173 int32_t SetListItemSwiperAction(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8174 {
8175 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
8176 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
8177 auto* listItemSwipeActionOption = reinterpret_cast<ArkUIListItemSwipeActionOptionHandle>(item->object);
8178 GetFullImpl()->getNodeModifiers()->getListItemModifier()->setListItemSwipeAction(
8179 node->uiNodeHandle, listItemSwipeActionOption);
8180 return ERROR_CODE_NO_ERROR;
8181 }
8182
ResetListItemSwiperAction(ArkUI_NodeHandle node)8183 void ResetListItemSwiperAction(ArkUI_NodeHandle node)
8184 {
8185 auto* fullImpl = GetFullImpl();
8186 fullImpl->getNodeModifiers()->getListItemModifier()->resetListItemSwipeAction(node->uiNodeHandle);
8187 }
8188 // datepicker
8189
GetDatePickerLunar(ArkUI_NodeHandle node)8190 const ArkUI_AttributeItem* GetDatePickerLunar(ArkUI_NodeHandle node)
8191 {
8192 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getLunar(node->uiNodeHandle);
8193 g_numberValues[0].i32 = value;
8194 return &g_attributeItem;
8195 }
8196
SetDatePickerLunar(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8197 int32_t SetDatePickerLunar(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8198 {
8199 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8200 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
8201 return ERROR_CODE_PARAM_INVALID;
8202 }
8203 auto fullImpl = GetFullImpl();
8204 fullImpl->getNodeModifiers()->getDatePickerModifier()->setLunar(node->uiNodeHandle, item->value[NUM_0].i32);
8205 return ERROR_CODE_NO_ERROR;
8206 }
8207
ResetDatePickerLunar(ArkUI_NodeHandle node)8208 void ResetDatePickerLunar(ArkUI_NodeHandle node)
8209 {
8210 auto fullImpl = GetFullImpl();
8211
8212 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetLunar(node->uiNodeHandle);
8213 }
8214
GetDatePickerStart(ArkUI_NodeHandle node)8215 const ArkUI_AttributeItem* GetDatePickerStart(ArkUI_NodeHandle node)
8216 {
8217 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getStartDate(node->uiNodeHandle);
8218 g_attributeItem.string = value;
8219 return &g_attributeItem;
8220 }
8221
SetDatePickerStart(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8222 int32_t SetDatePickerStart(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8223 {
8224 if (!item->string) {
8225 return ERROR_CODE_PARAM_INVALID;
8226 }
8227 auto fullImpl = GetFullImpl();
8228 std::vector<std::string> date;
8229 StringUtils::StringSplitter(item->string, '-', date);
8230 if (date.size() != NUM_3) {
8231 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "date is invalid");
8232 return ERROR_CODE_PARAM_INVALID;
8233 }
8234
8235 auto year = StringToInt(date[NUM_0].c_str(), DATEPICKER_START_TIME);
8236 auto month = StringToInt(date[NUM_1].c_str(), NUM_1);
8237 auto day = StringToInt(date[NUM_2].c_str(), NUM_1);
8238 fullImpl->getNodeModifiers()->getDatePickerModifier()->setStartDate(node->uiNodeHandle, year, month, day);
8239
8240 return ERROR_CODE_NO_ERROR;
8241 }
8242
ResetDatePickerStart(ArkUI_NodeHandle node)8243 void ResetDatePickerStart(ArkUI_NodeHandle node)
8244 {
8245 auto fullImpl = GetFullImpl();
8246
8247 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetStartDate(node->uiNodeHandle);
8248 }
8249
GetDatePickerEnd(ArkUI_NodeHandle node)8250 const ArkUI_AttributeItem* GetDatePickerEnd(ArkUI_NodeHandle node)
8251 {
8252 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getEndDate(node->uiNodeHandle);
8253 g_attributeItem.string = value;
8254 return &g_attributeItem;
8255 }
8256
SetDatePickerEnd(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8257 int32_t SetDatePickerEnd(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8258 {
8259 if (!item->string) {
8260 return ERROR_CODE_PARAM_INVALID;
8261 }
8262 auto fullImpl = GetFullImpl();
8263 std::vector<std::string> date;
8264 StringUtils::StringSplitter(item->string, '-', date);
8265 if (date.size() != NUM_3) {
8266 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "date is invalid");
8267 return ERROR_CODE_PARAM_INVALID;
8268 }
8269
8270 auto year = StringToInt(date[NUM_0].c_str(), DATEPICKER_END_TIME);
8271 auto month = StringToInt(date[NUM_1].c_str(), NUM_12);
8272 auto day = StringToInt(date[NUM_2].c_str(), NUM_31);
8273 fullImpl->getNodeModifiers()->getDatePickerModifier()->setEndDate(node->uiNodeHandle, year, month, day);
8274
8275 return ERROR_CODE_NO_ERROR;
8276 }
8277
ResetDatePickerEnd(ArkUI_NodeHandle node)8278 void ResetDatePickerEnd(ArkUI_NodeHandle node)
8279 {
8280 auto fullImpl = GetFullImpl();
8281
8282 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetEndDate(node->uiNodeHandle);
8283 }
8284
GetDatePickerSelected(ArkUI_NodeHandle node)8285 const ArkUI_AttributeItem* GetDatePickerSelected(ArkUI_NodeHandle node)
8286 {
8287 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getSelectedDate(node->uiNodeHandle);
8288 g_attributeItem.string = value;
8289 return &g_attributeItem;
8290 }
8291
SetDatePickerSelected(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8292 int32_t SetDatePickerSelected(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8293 {
8294 if (!item->string) {
8295 return ERROR_CODE_PARAM_INVALID;
8296 }
8297 auto fullImpl = GetFullImpl();
8298 std::vector<std::string> date;
8299 StringUtils::StringSplitter(item->string, '-', date);
8300 if (date.size() != NUM_3) {
8301 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "date is invalid");
8302 return ERROR_CODE_PARAM_INVALID;
8303 }
8304
8305 auto year = StringToInt(date[NUM_0].c_str());
8306 auto month = StringToInt(date[NUM_1].c_str());
8307 auto day = StringToInt(date[NUM_2].c_str());
8308 fullImpl->getNodeModifiers()->getDatePickerModifier()->setSelectedDate(node->uiNodeHandle, year, month, day);
8309
8310 return ERROR_CODE_NO_ERROR;
8311 }
8312
ResetDatePickerSelected(ArkUI_NodeHandle node)8313 void ResetDatePickerSelected(ArkUI_NodeHandle node)
8314 {
8315 auto fullImpl = GetFullImpl();
8316
8317 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetSelectedDate(node->uiNodeHandle);
8318 }
8319
GetDatePickerDisappearTextStyle(ArkUI_NodeHandle node)8320 const ArkUI_AttributeItem* GetDatePickerDisappearTextStyle(ArkUI_NodeHandle node)
8321 {
8322 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getDisappearTextStyle(node->uiNodeHandle);
8323 g_attributeItem.string = value;
8324 return &g_attributeItem;
8325 }
8326
SetDatePickerDisappearTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8327 int32_t SetDatePickerDisappearTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8328 {
8329 if (!item->string) {
8330 return ERROR_CODE_PARAM_INVALID;
8331 }
8332 auto fullImpl = GetFullImpl();
8333 std::vector<std::string> params;
8334 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8335 if (params.size() != NUM_5) {
8336 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8337 return ERROR_CODE_PARAM_INVALID;
8338 }
8339
8340 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8341 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8342 if (size == ERROR_CODE) {
8343 return ERROR_CODE_PARAM_INVALID;
8344 }
8345 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8346 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8347
8348 fullImpl->getNodeModifiers()->getDatePickerModifier()->setDisappearTextStyle(
8349 node->uiNodeHandle, fontInfo.c_str(), color, style);
8350
8351 return ERROR_CODE_NO_ERROR;
8352 }
8353
ResetDatePickerDisappearTextStyle(ArkUI_NodeHandle node)8354 void ResetDatePickerDisappearTextStyle(ArkUI_NodeHandle node)
8355 {
8356 auto fullImpl = GetFullImpl();
8357
8358 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetDisappearTextStyle(node->uiNodeHandle);
8359 }
8360
GetDatePickerTextStyle(ArkUI_NodeHandle node)8361 const ArkUI_AttributeItem* GetDatePickerTextStyle(ArkUI_NodeHandle node)
8362 {
8363 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getDatePickerTextStyle(node->uiNodeHandle);
8364 g_attributeItem.string = value;
8365 return &g_attributeItem;
8366 }
8367
SetDatePickerTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8368 int32_t SetDatePickerTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8369 {
8370 if (!item->string) {
8371 return ERROR_CODE_PARAM_INVALID;
8372 }
8373 auto fullImpl = GetFullImpl();
8374 std::vector<std::string> params;
8375 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8376 if (params.size() != NUM_5) {
8377 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8378 return ERROR_CODE_PARAM_INVALID;
8379 }
8380
8381 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8382 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8383 if (size == ERROR_CODE) {
8384 return ERROR_CODE_PARAM_INVALID;
8385 }
8386 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8387 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8388
8389 fullImpl->getNodeModifiers()->getDatePickerModifier()->setDatePickerTextStyle(
8390 node->uiNodeHandle, fontInfo.c_str(), color, style);
8391
8392 return ERROR_CODE_NO_ERROR;
8393 }
8394
ResetDatePickerTextStyle(ArkUI_NodeHandle node)8395 void ResetDatePickerTextStyle(ArkUI_NodeHandle node)
8396 {
8397 auto fullImpl = GetFullImpl();
8398
8399 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetDatePickerTextStyle(node->uiNodeHandle);
8400 }
8401
GetDatePickerSelectedTextStyle(ArkUI_NodeHandle node)8402 const ArkUI_AttributeItem* GetDatePickerSelectedTextStyle(ArkUI_NodeHandle node)
8403 {
8404 auto value = GetFullImpl()->getNodeModifiers()->getDatePickerModifier()->getSelectedTextStyle(node->uiNodeHandle);
8405 g_attributeItem.string = value;
8406 return &g_attributeItem;
8407 }
8408
SetDatePickerSelectedTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8409 int32_t SetDatePickerSelectedTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8410 {
8411 if (!item->string) {
8412 return ERROR_CODE_PARAM_INVALID;
8413 }
8414 auto fullImpl = GetFullImpl();
8415 std::vector<std::string> params;
8416 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8417 if (params.size() != NUM_5) {
8418 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8419 return ERROR_CODE_PARAM_INVALID;
8420 }
8421
8422 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_SELECTED_COLOR);
8423 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8424 if (size == ERROR_CODE) {
8425 return ERROR_CODE_PARAM_INVALID;
8426 }
8427 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8428 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8429
8430 fullImpl->getNodeModifiers()->getDatePickerModifier()->setSelectedTextStyle(
8431 node->uiNodeHandle, fontInfo.c_str(), color, style);
8432
8433 return ERROR_CODE_NO_ERROR;
8434 }
8435
ResetDatePickerSelectedTextStyle(ArkUI_NodeHandle node)8436 void ResetDatePickerSelectedTextStyle(ArkUI_NodeHandle node)
8437 {
8438 auto fullImpl = GetFullImpl();
8439
8440 fullImpl->getNodeModifiers()->getDatePickerModifier()->resetSelectedTextStyle(node->uiNodeHandle);
8441 }
8442
8443 // timepicker
GetTimePickerSelected(ArkUI_NodeHandle node)8444 const ArkUI_AttributeItem* GetTimePickerSelected(ArkUI_NodeHandle node)
8445 {
8446 auto value = GetFullImpl()->getNodeModifiers()->getTimepickerModifier()->getTimepickerSelected(node->uiNodeHandle);
8447 g_attributeItem.string = value;
8448 return &g_attributeItem;
8449 }
8450
SetTimePickerSelected(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8451 int32_t SetTimePickerSelected(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8452 {
8453 if (!item->string) {
8454 return ERROR_CODE_PARAM_INVALID;
8455 }
8456 auto fullImpl = GetFullImpl();
8457 std::vector<std::string> time;
8458 StringUtils::StringSplitter(item->string, '-', time);
8459 if (time.size() != NUM_2) {
8460 return ERROR_CODE_PARAM_INVALID;
8461 }
8462
8463 auto hour = StringToInt(time[NUM_0].c_str());
8464 auto minute = StringToInt(time[NUM_1].c_str());
8465 if (!InRegion(NUM_0, NUM_23, hour) || !InRegion(NUM_0, NUM_59, minute)) {
8466 return ERROR_CODE_PARAM_INVALID;
8467 }
8468 fullImpl->getNodeModifiers()->getTimepickerModifier()->setTimepickerSelected(node->uiNodeHandle, hour, minute);
8469
8470 return ERROR_CODE_NO_ERROR;
8471 }
8472
ResetTimePickerSelected(ArkUI_NodeHandle node)8473 void ResetTimePickerSelected(ArkUI_NodeHandle node)
8474 {
8475 auto fullImpl = GetFullImpl();
8476
8477 fullImpl->getNodeModifiers()->getTimepickerModifier()->resetTimepickerSelected(node->uiNodeHandle);
8478 }
8479
GetTimePickerUseMilitaryTime(ArkUI_NodeHandle node)8480 const ArkUI_AttributeItem* GetTimePickerUseMilitaryTime(ArkUI_NodeHandle node)
8481 {
8482 auto value =
8483 GetFullImpl()->getNodeModifiers()->getTimepickerModifier()->getTimepickerUseMilitaryTime(node->uiNodeHandle);
8484 g_numberValues[0].i32 = value;
8485 return &g_attributeItem;
8486 }
8487
SetTimePickerUseMilitaryTime(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8488 int32_t SetTimePickerUseMilitaryTime(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8489 {
8490 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8491 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
8492 return ERROR_CODE_PARAM_INVALID;
8493 }
8494 auto fullImpl = GetFullImpl();
8495 fullImpl->getNodeModifiers()->getTimepickerModifier()->setTimepickerUseMilitaryTime(
8496 node->uiNodeHandle, item->value[NUM_0].i32);
8497
8498 return ERROR_CODE_NO_ERROR;
8499 }
8500
ResetTimePickerUseMilitaryTime(ArkUI_NodeHandle node)8501 void ResetTimePickerUseMilitaryTime(ArkUI_NodeHandle node)
8502 {
8503 auto fullImpl = GetFullImpl();
8504
8505 fullImpl->getNodeModifiers()->getTimepickerModifier()->resetTimepickerUseMilitaryTime(node->uiNodeHandle);
8506 }
8507
GetTimePickerDisappearTextStyle(ArkUI_NodeHandle node)8508 const ArkUI_AttributeItem* GetTimePickerDisappearTextStyle(ArkUI_NodeHandle node)
8509 {
8510 auto value =
8511 GetFullImpl()->getNodeModifiers()->getTimepickerModifier()->getTimepickerDisappearTextStyle(node->uiNodeHandle);
8512 g_attributeItem.string = value;
8513 return &g_attributeItem;
8514 }
8515
SetTimePickerDisappearTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8516 int32_t SetTimePickerDisappearTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8517 {
8518 if (!item->string) {
8519 return ERROR_CODE_PARAM_INVALID;
8520 }
8521 auto fullImpl = GetFullImpl();
8522 std::vector<std::string> params;
8523 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8524 if (params.size() != NUM_5) {
8525 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8526 return ERROR_CODE_PARAM_INVALID;
8527 }
8528
8529 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8530 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8531 if (size == ERROR_CODE) {
8532 return ERROR_CODE_PARAM_INVALID;
8533 }
8534 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8535 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8536
8537 fullImpl->getNodeModifiers()->getTimepickerModifier()->setTimepickerDisappearTextStyle(
8538 node->uiNodeHandle, color, fontInfo.c_str(), style);
8539
8540 return ERROR_CODE_NO_ERROR;
8541 }
8542
ResetTimePickerDisappearTextStyle(ArkUI_NodeHandle node)8543 void ResetTimePickerDisappearTextStyle(ArkUI_NodeHandle node)
8544 {
8545 auto fullImpl = GetFullImpl();
8546
8547 fullImpl->getNodeModifiers()->getTimepickerModifier()->resetTimepickerDisappearTextStyle(node->uiNodeHandle);
8548 }
8549
GetTimePickerTextStyle(ArkUI_NodeHandle node)8550 const ArkUI_AttributeItem* GetTimePickerTextStyle(ArkUI_NodeHandle node)
8551 {
8552 auto value =
8553 GetFullImpl()->getNodeModifiers()->getTimepickerModifier()->getTimepickerTextStyle(node->uiNodeHandle);
8554 g_attributeItem.string = value;
8555 return &g_attributeItem;
8556 }
8557
SetTimePickerTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8558 int32_t SetTimePickerTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8559 {
8560 if (!item->string) {
8561 return ERROR_CODE_PARAM_INVALID;
8562 }
8563 auto fullImpl = GetFullImpl();
8564 std::vector<std::string> params;
8565 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8566 if (params.size() != NUM_5) {
8567 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8568 return ERROR_CODE_PARAM_INVALID;
8569 }
8570 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8571 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8572 if (size == ERROR_CODE) {
8573 return ERROR_CODE_PARAM_INVALID;
8574 }
8575 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8576 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8577
8578 fullImpl->getNodeModifiers()->getTimepickerModifier()->setTimepickerTextStyle(
8579 node->uiNodeHandle, color, fontInfo.c_str(), style);
8580
8581 return ERROR_CODE_NO_ERROR;
8582 }
8583
ResetTimePickerTextStyle(ArkUI_NodeHandle node)8584 void ResetTimePickerTextStyle(ArkUI_NodeHandle node)
8585 {
8586 auto fullImpl = GetFullImpl();
8587
8588 fullImpl->getNodeModifiers()->getTimepickerModifier()->resetTimepickerTextStyle(node->uiNodeHandle);
8589 }
8590
GetTimePickerSelectedTextStyle(ArkUI_NodeHandle node)8591 const ArkUI_AttributeItem* GetTimePickerSelectedTextStyle(ArkUI_NodeHandle node)
8592 {
8593 auto value =
8594 GetFullImpl()->getNodeModifiers()->getTimepickerModifier()->getTimepickerSelectedTextStyle(node->uiNodeHandle);
8595 g_attributeItem.string = value;
8596 return &g_attributeItem;
8597 }
8598
SetTimePickerSelectedTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8599 int32_t SetTimePickerSelectedTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8600 {
8601 if (!item->string) {
8602 return ERROR_CODE_PARAM_INVALID;
8603 }
8604 auto fullImpl = GetFullImpl();
8605 std::vector<std::string> params;
8606 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8607 if (params.size() != NUM_5) {
8608 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8609 return ERROR_CODE_PARAM_INVALID;
8610 }
8611
8612 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_SELECTED_COLOR);
8613 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8614 if (size == ERROR_CODE) {
8615 return ERROR_CODE_PARAM_INVALID;
8616 }
8617 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8618 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8619 fullImpl->getNodeModifiers()->getTimepickerModifier()->setTimepickerSelectedTextStyle(
8620 node->uiNodeHandle, color, fontInfo.c_str(), style);
8621
8622 return ERROR_CODE_NO_ERROR;
8623 }
8624
ResetTimePickerSelectedTextStyle(ArkUI_NodeHandle node)8625 void ResetTimePickerSelectedTextStyle(ArkUI_NodeHandle node)
8626 {
8627 auto fullImpl = GetFullImpl();
8628
8629 fullImpl->getNodeModifiers()->getTimepickerModifier()->resetTimepickerSelectedTextStyle(node->uiNodeHandle);
8630 }
8631
8632 // TextPicker
GetTextPickerDisappearTextStyle(ArkUI_NodeHandle node)8633 const ArkUI_AttributeItem* GetTextPickerDisappearTextStyle(ArkUI_NodeHandle node)
8634 {
8635 auto value =
8636 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerDisappearTextStyle(node->uiNodeHandle);
8637 g_attributeItem.string = value;
8638 return &g_attributeItem;
8639 }
8640
SetTextPickerDisappearTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8641 int32_t SetTextPickerDisappearTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8642 {
8643 if (!item->string) {
8644 return ERROR_CODE_PARAM_INVALID;
8645 }
8646 auto fullImpl = GetFullImpl();
8647 std::vector<std::string> params;
8648 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8649 if (params.size() != NUM_5) {
8650 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8651 return ERROR_CODE_PARAM_INVALID;
8652 }
8653
8654 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8655 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8656 if (size == ERROR_CODE) {
8657 return ERROR_CODE_PARAM_INVALID;
8658 }
8659 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8660 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8661
8662 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerDisappearTextStyle(
8663 node->uiNodeHandle, color, fontInfo.c_str(), style);
8664
8665 return ERROR_CODE_NO_ERROR;
8666 }
8667
ResetTextPickerDisappearTextStyle(ArkUI_NodeHandle node)8668 void ResetTextPickerDisappearTextStyle(ArkUI_NodeHandle node)
8669 {
8670 auto fullImpl = GetFullImpl();
8671
8672 fullImpl->getNodeModifiers()->getTextPickerModifier()->resetTextPickerDisappearTextStyle(node->uiNodeHandle);
8673 }
8674
GetTextPickerTextStyle(ArkUI_NodeHandle node)8675 const ArkUI_AttributeItem* GetTextPickerTextStyle(ArkUI_NodeHandle node)
8676 {
8677 auto value =
8678 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerTextStyle(node->uiNodeHandle);
8679 g_attributeItem.string = value;
8680 return &g_attributeItem;
8681 }
8682
SetTextPickerTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8683 int32_t SetTextPickerTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8684 {
8685 if (!item->string) {
8686 return ERROR_CODE_PARAM_INVALID;
8687 }
8688 auto fullImpl = GetFullImpl();
8689 std::vector<std::string> params;
8690 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8691 if (params.size() != NUM_5) {
8692 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8693 return ERROR_CODE_PARAM_INVALID;
8694 }
8695
8696 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_STYLE_COLOR);
8697 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8698 if (size == ERROR_CODE) {
8699 return ERROR_CODE_PARAM_INVALID;
8700 }
8701 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8702 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8703
8704 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerTextStyle(
8705 node->uiNodeHandle, color, fontInfo.c_str(), style);
8706
8707 return ERROR_CODE_NO_ERROR;
8708 }
8709
ResetTextPickerTextStyle(ArkUI_NodeHandle node)8710 void ResetTextPickerTextStyle(ArkUI_NodeHandle node)
8711 {
8712 auto fullImpl = GetFullImpl();
8713
8714 fullImpl->getNodeModifiers()->getTextPickerModifier()->resetTextPickerTextStyle(node->uiNodeHandle);
8715 }
8716
GetTextPickerSelectedTextStyle(ArkUI_NodeHandle node)8717 const ArkUI_AttributeItem* GetTextPickerSelectedTextStyle(ArkUI_NodeHandle node)
8718 {
8719 auto value =
8720 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerSelectedTextStyle(node->uiNodeHandle);
8721 g_attributeItem.string = value;
8722 return &g_attributeItem;
8723 }
8724
SetTextPickerSelectedTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8725 int32_t SetTextPickerSelectedTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8726 {
8727 if (!item->string) {
8728 return ERROR_CODE_PARAM_INVALID;
8729 }
8730 auto fullImpl = GetFullImpl();
8731 std::vector<std::string> params;
8732 StringUtils::StringSplitter(item->string, PARAMS_SEPARATOR_LEVEL1, params);
8733 if (params.size() != NUM_5) {
8734 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "params are invalid");
8735 return ERROR_CODE_PARAM_INVALID;
8736 }
8737
8738 ArkUI_Uint32 color = StringToColorInt(params[NUM_0].c_str(), DEFAULT_PICKER_SELECTED_COLOR);
8739 int size = StringToInt(params[NUM_1].c_str(), ERROR_CODE);
8740 if (size == ERROR_CODE) {
8741 return ERROR_CODE_PARAM_INVALID;
8742 }
8743 auto style = StringToEnumInt(params[NUM_4].c_str(), FONT_STYLES, NUM_0);
8744 std::string fontInfo = params[NUM_1] + '|' + params[NUM_2] + '|' + params[NUM_3];
8745
8746 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerSelectedTextStyle(
8747 node->uiNodeHandle, color, fontInfo.c_str(), style);
8748
8749 return ERROR_CODE_NO_ERROR;
8750 }
8751
ResetTextPickerSelectedTextStyle(ArkUI_NodeHandle node)8752 void ResetTextPickerSelectedTextStyle(ArkUI_NodeHandle node)
8753 {
8754 auto fullImpl = GetFullImpl();
8755
8756 fullImpl->getNodeModifiers()->getTextPickerModifier()->resetTextPickerSelectedTextStyle(node->uiNodeHandle);
8757 }
8758
GetTextPickerSelectedIndex(ArkUI_NodeHandle node)8759 const ArkUI_AttributeItem* GetTextPickerSelectedIndex(ArkUI_NodeHandle node)
8760 {
8761 int32_t size = GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerSelectedSize(
8762 node->uiNodeHandle);
8763 ArkUI_Uint32 values[size];
8764 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerSelectedIndex(
8765 node->uiNodeHandle, values, size);
8766 for (int i = 0; i < size; ++i) {
8767 g_numberValues[i].i32 = static_cast<int32_t>(values[i]);
8768 }
8769 return &g_attributeItem;
8770 }
8771
SetTextPickerSelectedIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8772 int32_t SetTextPickerSelectedIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8773 {
8774 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8775 if (actualSize < 0 || LessNotEqual(item->value[0].i32, NUM_0)) {
8776 return ERROR_CODE_PARAM_INVALID;
8777 }
8778 auto fullImpl = GetFullImpl();
8779 ArkUI_Uint32 values[item->size];
8780 for (int i = 0; i < item->size; ++i) {
8781 values[i] = item->value[i].i32;
8782 }
8783 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerSelectedIndex(
8784 node->uiNodeHandle, values, item->size);
8785 return ERROR_CODE_NO_ERROR;
8786 }
8787
ResetTextPickerSelectedIndex(ArkUI_NodeHandle node)8788 void ResetTextPickerSelectedIndex(ArkUI_NodeHandle node)
8789 {
8790 auto fullImpl = GetFullImpl();
8791
8792 fullImpl->getNodeModifiers()->getTextPickerModifier()->resetTextPickerSelectedIndex(node->uiNodeHandle);
8793 }
8794
SetTextPickerRange(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8795 int32_t SetTextPickerRange(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8796 {
8797 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8798 if (actualSize < 0 || !InRegion(static_cast<int32_t>(ARKUI_TEXTPICKER_RANGETYPE_SINGLE),
8799 static_cast<int32_t>(ARKUI_TEXTPICKER_RANGETYPE_MULTI), item->value[NUM_0].i32)) {
8800 return ERROR_CODE_PARAM_INVALID;
8801 }
8802 bool isSingleRange = false;
8803 auto fullImpl = GetFullImpl();
8804 if (!item->string) {
8805 return ERROR_CODE_PARAM_INVALID;
8806 }
8807 isSingleRange = item->value[NUM_0].i32 == static_cast<int32_t>(ARKUI_TEXTPICKER_RANGETYPE_SINGLE);
8808 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerRangeStr(
8809 node->uiNodeHandle, item->string, isSingleRange, item->value[NUM_0].i32);
8810 return ERROR_CODE_NO_ERROR;
8811 }
8812
ResetTextPickerRange(ArkUI_NodeHandle node)8813 void ResetTextPickerRange(ArkUI_NodeHandle node)
8814 {
8815 auto fullImpl = GetFullImpl();
8816 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerRangeStr(node->uiNodeHandle, "", true, NUM_0);
8817 }
8818
GetTextPickerRange(ArkUI_NodeHandle node)8819 const ArkUI_AttributeItem* GetTextPickerRange(ArkUI_NodeHandle node)
8820 {
8821 auto fullImpl = GetFullImpl();
8822 auto value =
8823 fullImpl->getNodeModifiers()->getTextPickerModifier()->getTextPickerRangeStr(node->uiNodeHandle);
8824 g_numberValues[0].i32 =
8825 fullImpl->getNodeModifiers()->getTextPickerModifier()->getTextPickerSingleRange(node->uiNodeHandle);
8826 g_attributeItem.string = value;
8827 return &g_attributeItem;
8828 }
8829
SetTextPickerValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8830 int32_t SetTextPickerValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8831 {
8832 if (!item->string) {
8833 return ERROR_CODE_PARAM_INVALID;
8834 }
8835 auto fullImpl = GetFullImpl();
8836 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerValue(
8837 node->uiNodeHandle, item->string);
8838
8839 return ERROR_CODE_NO_ERROR;
8840 }
8841
ResetTextPickerValue(ArkUI_NodeHandle node)8842 void ResetTextPickerValue(ArkUI_NodeHandle node)
8843 {
8844 auto fullImpl = GetFullImpl();
8845
8846 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerValue(node->uiNodeHandle, "");
8847 }
8848
GetTextPickerValue(ArkUI_NodeHandle node)8849 const ArkUI_AttributeItem* GetTextPickerValue(ArkUI_NodeHandle node)
8850 {
8851 auto value =
8852 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerValue(node->uiNodeHandle);
8853 g_attributeItem.string = value;
8854 return &g_attributeItem;
8855 }
8856
GetTextPickerSelected(ArkUI_NodeHandle node)8857 const ArkUI_AttributeItem* GetTextPickerSelected(ArkUI_NodeHandle node)
8858 {
8859 int32_t size = GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerSelectedSize(
8860 node->uiNodeHandle);
8861 ArkUI_Uint32 values[size];
8862 GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerSelectedIndex(
8863 node->uiNodeHandle, values, size);
8864 for (int i = 0; i < size; ++i) {
8865 g_numberValues[i].u32 = values[i];
8866 }
8867 return &g_attributeItem;
8868 }
8869
SetTextPickerSelected(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8870 int32_t SetTextPickerSelected(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8871 {
8872 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8873 if (actualSize < 0 || LessNotEqual(item->value[0].u32, NUM_0)) {
8874 return ERROR_CODE_PARAM_INVALID;
8875 }
8876 auto fullImpl = GetFullImpl();
8877 ArkUI_Uint32 values[item->size];
8878 for (int i = 0; i < item->size; ++i) {
8879 values[i] = item->value[i].u32;
8880 }
8881 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerSelectedIndex(
8882 node->uiNodeHandle, values, item->size);
8883 return ERROR_CODE_NO_ERROR;
8884 }
8885
SetTextPickerCanLoop(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8886 int32_t SetTextPickerCanLoop(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8887 {
8888 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8889 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[0].i32)) {
8890 return ERROR_CODE_PARAM_INVALID;
8891 }
8892 auto fullImpl = GetFullImpl();
8893 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerCanLoop(
8894 node->uiNodeHandle, item->value[0].i32);
8895 return ERROR_CODE_NO_ERROR;
8896 }
8897
GetTextPickerCanLoop(ArkUI_NodeHandle node)8898 const ArkUI_AttributeItem* GetTextPickerCanLoop(ArkUI_NodeHandle node)
8899 {
8900 int32_t result = GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerCanLoop(
8901 node->uiNodeHandle);
8902 g_numberValues[0].i32 = result;
8903 return &g_attributeItem;
8904 }
8905
ResetTextPickerCanLoop(ArkUI_NodeHandle node)8906 void ResetTextPickerCanLoop(ArkUI_NodeHandle node)
8907 {
8908 auto fullImpl = GetFullImpl();
8909 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerCanLoop(
8910 node->uiNodeHandle, true);
8911 }
8912
SetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8913 int32_t SetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8914 {
8915 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
8916 if (actualSize < 0 || LessNotEqual(item->value[0].f32, NUM_0)) {
8917 return ERROR_CODE_PARAM_INVALID;
8918 }
8919 auto fullImpl = GetFullImpl();
8920 int32_t unit = GetDefaultUnit(node, UNIT_VP);
8921 fullImpl->getNodeModifiers()->getTextPickerModifier()->setTextPickerDefaultPickerItemHeight(
8922 node->uiNodeHandle, item->value[0].f32, unit);
8923 return ERROR_CODE_NO_ERROR;
8924 }
8925
GetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node)8926 const ArkUI_AttributeItem* GetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node)
8927 {
8928 int32_t unit = GetDefaultUnit(node, UNIT_VP);
8929 float result = GetFullImpl()->getNodeModifiers()->getTextPickerModifier()->getTextPickerDefaultPickerItemHeight(
8930 node->uiNodeHandle, unit);
8931 g_numberValues[0].f32 = result;
8932 return &g_attributeItem;
8933 }
8934
ResetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node)8935 void ResetTextPickerDefaultPickerItemHeight(ArkUI_NodeHandle node)
8936 {
8937 auto fullImpl = GetFullImpl();
8938 fullImpl->getNodeModifiers()->getTextPickerModifier()->resetTextPickerDefaultPickerItemHeight(node->uiNodeHandle);
8939 }
8940
8941 // Row&Column
SetAlignItems(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8942 int32_t SetAlignItems(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8943 {
8944 if (item->size == 0 || !InRegion(NUM_0, NUM_2, item->value[0].i32)) {
8945 return ERROR_CODE_PARAM_INVALID;
8946 }
8947 auto* fullImpl = GetFullImpl();
8948 switch (node->type) {
8949 case ARKUI_NODE_COLUMN:
8950 fullImpl->getNodeModifiers()->getColumnModifier()->setColumnAlignItems(
8951 node->uiNodeHandle, item->value[0].i32 + NUM_1);
8952 break;
8953 case ARKUI_NODE_ROW:
8954 fullImpl->getNodeModifiers()->getRowModifier()->setRowAlignItems(
8955 node->uiNodeHandle, item->value[0].i32 + NUM_1);
8956 break;
8957 default:
8958 break;
8959 }
8960 return ERROR_CODE_NO_ERROR;
8961 }
8962
ResetAlignItems(ArkUI_NodeHandle node)8963 void ResetAlignItems(ArkUI_NodeHandle node)
8964 {
8965 auto* fullImpl = GetFullImpl();
8966 switch (node->type) {
8967 case ARKUI_NODE_COLUMN:
8968 fullImpl->getNodeModifiers()->getColumnModifier()->resetColumnAlignItems(node->uiNodeHandle);
8969 break;
8970 case ARKUI_NODE_ROW:
8971 fullImpl->getNodeModifiers()->getRowModifier()->resetRowAlignItems(node->uiNodeHandle);
8972 break;
8973 default:
8974 break;
8975 }
8976 }
8977
GetAlignItems(ArkUI_NodeHandle node)8978 const ArkUI_AttributeItem* GetAlignItems(ArkUI_NodeHandle node)
8979 {
8980 auto fullImpl = GetFullImpl();
8981 switch (node->type) {
8982 case ARKUI_NODE_COLUMN:
8983 g_numberValues[0].i32 =
8984 fullImpl->getNodeModifiers()->getColumnModifier()->getColumnAlignItems(node->uiNodeHandle) - NUM_1;
8985 break;
8986 case ARKUI_NODE_ROW:
8987 g_numberValues[0].i32 =
8988 fullImpl->getNodeModifiers()->getRowModifier()->getRowAlignItems(node->uiNodeHandle) - NUM_1;
8989 break;
8990 default:
8991 break;
8992 }
8993 return &g_attributeItem;
8994 }
8995
SetJustifyContent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)8996 int32_t SetJustifyContent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
8997 {
8998 if (item->size == 0 || !InRegion(NUM_1, NUM_8, item->value[0].i32)) {
8999 return ERROR_CODE_PARAM_INVALID;
9000 }
9001 auto* fullImpl = GetFullImpl();
9002 switch (node->type) {
9003 case ARKUI_NODE_COLUMN:
9004 fullImpl->getNodeModifiers()->getColumnModifier()->setColumnJustifyContent(
9005 node->uiNodeHandle, item->value[0].i32);
9006 break;
9007 case ARKUI_NODE_ROW:
9008 fullImpl->getNodeModifiers()->getRowModifier()->setRowJustifyContent(
9009 node->uiNodeHandle, item->value[0].i32);
9010 break;
9011 default:
9012 break;
9013 }
9014 return ERROR_CODE_NO_ERROR;
9015 }
9016
ResetJustifyContent(ArkUI_NodeHandle node)9017 void ResetJustifyContent(ArkUI_NodeHandle node)
9018 {
9019 auto* fullImpl = GetFullImpl();
9020 switch (node->type) {
9021 case ARKUI_NODE_COLUMN:
9022 fullImpl->getNodeModifiers()->getColumnModifier()->resetColumnJustifyContent(node->uiNodeHandle);
9023 break;
9024 case ARKUI_NODE_ROW:
9025 fullImpl->getNodeModifiers()->getRowModifier()->resetRowJustifyContent(node->uiNodeHandle);
9026 break;
9027 default:
9028 break;
9029 }
9030 }
9031
GetJustifyContent(ArkUI_NodeHandle node)9032 const ArkUI_AttributeItem* GetJustifyContent(ArkUI_NodeHandle node)
9033 {
9034 auto* fullImpl = GetFullImpl();
9035 switch (node->type) {
9036 case ARKUI_NODE_COLUMN:
9037 g_numberValues[0].i32 =
9038 fullImpl->getNodeModifiers()->getColumnModifier()->getColumnJustifyContent(node->uiNodeHandle);
9039 break;
9040 case ARKUI_NODE_ROW:
9041 g_numberValues[0].i32 =
9042 fullImpl->getNodeModifiers()->getRowModifier()->getRowJustifyContent(node->uiNodeHandle);
9043 break;
9044 default:
9045 break;
9046 }
9047 return &g_attributeItem;
9048 }
9049
9050 // Flex
SetFlexOptions(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9051 int32_t SetFlexOptions(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9052 {
9053 if (item->size == 0) {
9054 return ERROR_CODE_PARAM_INVALID;
9055 }
9056 auto* fullImpl = GetFullImpl();
9057 int options[NUM_5] = { 0, 0, 0, 1, 0 };
9058 if (item->size > NUM_0) {
9059 if (!InRegion(NUM_0, NUM_3, item->value[NUM_0].i32)) {
9060 return ERROR_CODE_PARAM_INVALID;
9061 }
9062 options[NUM_0] = item->value[NUM_0].i32;
9063 }
9064 if (item->size > NUM_1) {
9065 if (!InRegion(NUM_0, NUM_2, item->value[NUM_1].i32)) {
9066 return ERROR_CODE_PARAM_INVALID;
9067 }
9068 options[NUM_1] = item->value[NUM_1].i32;
9069 }
9070 if (item->size > NUM_2) {
9071 if (!InRegion(NUM_1, NUM_8, item->value[NUM_2].i32)) {
9072 return ERROR_CODE_PARAM_INVALID;
9073 }
9074 options[NUM_2] = item->value[NUM_2].i32;
9075 }
9076 if (item->size > NUM_3) {
9077 if (!InRegion(NUM_0, NUM_5, item->value[NUM_3].i32)) {
9078 return ERROR_CODE_PARAM_INVALID;
9079 }
9080 options[NUM_3] = item->value[NUM_3].i32;
9081 }
9082 if (item->size > NUM_4) {
9083 if (!InRegion(NUM_1, NUM_8, item->value[NUM_4].i32)) {
9084 return ERROR_CODE_PARAM_INVALID;
9085 }
9086 options[NUM_4] = item->value[NUM_4].i32;
9087 }
9088 fullImpl->getNodeModifiers()->getFlexModifier()->setFlexOptions(node->uiNodeHandle, options, NUM_5);
9089 return ERROR_CODE_NO_ERROR;
9090 }
9091
ResetFlexOptions(ArkUI_NodeHandle node)9092 void ResetFlexOptions(ArkUI_NodeHandle node)
9093 {
9094 auto* fullImpl = GetFullImpl();
9095 fullImpl->getNodeModifiers()->getFlexModifier()->resetFlexOptions(node->uiNodeHandle);
9096 }
9097
GetFlexOptions(ArkUI_NodeHandle node)9098 const ArkUI_AttributeItem* GetFlexOptions(ArkUI_NodeHandle node)
9099 {
9100 ArkUIFlexOptions options;
9101 GetFullImpl()->getNodeModifiers()->getFlexModifier()->getFlexOptions(node->uiNodeHandle, &options);
9102 g_numberValues[NUM_0].i32 = options.direction;
9103 g_numberValues[NUM_1].i32 = options.wrap;
9104 g_numberValues[NUM_2].i32 = options.justifyContent;
9105 g_numberValues[NUM_3].i32 = options.alignItems;
9106 g_numberValues[NUM_4].i32 = options.alignContent;
9107 return &g_attributeItem;
9108 }
9109
SetBackgroundImageSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9110 int32_t SetBackgroundImageSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9111 {
9112 auto* fullImpl = GetFullImpl();
9113 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
9114 if (actualSize < 0) {
9115 return ERROR_CODE_PARAM_INVALID;
9116 }
9117 if (LessNotEqual(item->value[BACKGROUND_IMAGE_WIDTH_INDEX].f32, 0.0f) ||
9118 LessNotEqual(item->value[BACKGROUND_IMAGE_HEIGHT_INDEX].f32, 0.0f)) {
9119 return ERROR_CODE_PARAM_INVALID;
9120 }
9121 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImageSizeWithUnit(node->uiNodeHandle,
9122 item->value[BACKGROUND_IMAGE_WIDTH_INDEX].f32, item->value[BACKGROUND_IMAGE_HEIGHT_INDEX].f32,
9123 GetDefaultUnit(node, UNIT_VP));
9124 return ERROR_CODE_NO_ERROR;
9125 }
9126
GetBackgroundImageSizeType(ArkUI_ImageSize nativeImageSizeType)9127 int32_t GetBackgroundImageSizeType(ArkUI_ImageSize nativeImageSizeType)
9128 {
9129 switch (nativeImageSizeType) {
9130 case ARKUI_IMAGE_SIZE_AUTO:
9131 return IMAGE_SIZE_TYPE_AUTO_INDEX;
9132 case ARKUI_IMAGE_SIZE_COVER:
9133 return IMAGE_SIZE_TYPE_COVER_INDEX;
9134 case ARKUI_IMAGE_SIZE_CONTAIN:
9135 return IMAGE_SIZE_TYPE_CONTAIN_INDEX;
9136 default:
9137 break;
9138 }
9139 return IMAGE_SIZE_TYPE_AUTO_INDEX;
9140 }
9141
SetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9142 int32_t SetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9143 {
9144 auto* fullImpl = GetFullImpl();
9145 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9146 if (actualSize < 0 || item->value[0].i32 < 0 ||
9147 item->value[0].i32 > static_cast<int32_t>(ARKUI_IMAGE_SIZE_CONTAIN)) {
9148 return ERROR_CODE_PARAM_INVALID;
9149 }
9150 auto imageSizeType = GetBackgroundImageSizeType(static_cast<ArkUI_ImageSize>(item->value[0].i32));
9151 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundImageSize(
9152 node->uiNodeHandle, 0.0f, 0.0f, imageSizeType, imageSizeType);
9153 return ERROR_CODE_NO_ERROR;
9154 }
9155
CheckBackgroundBlurStyleInput(const ArkUI_AttributeItem * item,int32_t size)9156 bool CheckBackgroundBlurStyleInput(const ArkUI_AttributeItem* item, int32_t size)
9157 {
9158 CHECK_NULL_RETURN(item, false);
9159 if (BLUR_STYLE_INDEX < size &&
9160 (item->value[BLUR_STYLE_INDEX].i32 < 0 ||
9161 item->value[BLUR_STYLE_INDEX].i32 > static_cast<int32_t>(ARKUI_BLUR_STYLE_COMPONENT_ULTRA_THICK))) {
9162 return false;
9163 }
9164 if (COLOR_MODE_INDEX < size &&
9165 (item->value[COLOR_MODE_INDEX].i32 < 0 ||
9166 item->value[COLOR_MODE_INDEX].i32 > static_cast<int32_t>(ARKUI_COLOR_MODE_DARK))) {
9167 return false;
9168 }
9169 if (ADAPTIVE_COLOR_INDEX < size &&
9170 (item->value[ADAPTIVE_COLOR_INDEX].i32 < 0 ||
9171 item->value[ADAPTIVE_COLOR_INDEX].i32 > static_cast<int32_t>(ARKUI_ADAPTIVE_COLOR_AVERAGE))) {
9172 return false;
9173 }
9174 if (SCALE_INDEX < size &&
9175 (LessNotEqual(item->value[SCALE_INDEX].f32, 0.0f) || GreatNotEqual(item->value[SCALE_INDEX].f32, 1.0f))) {
9176 return false;
9177 }
9178 if (GRAY_SCALE_START < size &&
9179 (LessNotEqual(item->value[GRAY_SCALE_START].f32, 0.0f) ||
9180 GreatNotEqual(item->value[GRAY_SCALE_START].f32, MAX_GRAYSCALE))) {
9181 return false;
9182 }
9183 if (GRAY_SCALE_END < size &&
9184 (LessNotEqual(item->value[GRAY_SCALE_END].f32, 0.0f) ||
9185 GreatNotEqual(item->value[GRAY_SCALE_END].f32, MAX_GRAYSCALE))) {
9186 return false;
9187 }
9188 return true;
9189 }
9190
SetBackgroundBlurStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9191 int32_t SetBackgroundBlurStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9192 {
9193 auto* fullImpl = GetFullImpl();
9194 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9195 if (actualSize < 0) {
9196 return ERROR_CODE_PARAM_INVALID;
9197 }
9198 auto isInputValid = CheckBackgroundBlurStyleInput(item, actualSize);
9199 if (!isInputValid) {
9200 return ERROR_CODE_PARAM_INVALID;
9201 }
9202 int32_t blurStyle = ARKUI_BLUR_STYLE_THIN;
9203 if (BLUR_STYLE_INDEX < actualSize) {
9204 blurStyle = ConvertBlurStyle(item->value[BLUR_STYLE_INDEX].i32);
9205 }
9206 int32_t colorMode = ARKUI_COLOR_MODE_SYSTEM;
9207 if (COLOR_MODE_INDEX < actualSize) {
9208 colorMode = item->value[COLOR_MODE_INDEX].i32;
9209 }
9210 int32_t adaptiveColor = ARKUI_ADAPTIVE_COLOR_DEFAULT;
9211 if (ADAPTIVE_COLOR_INDEX < actualSize) {
9212 adaptiveColor = item->value[ADAPTIVE_COLOR_INDEX].i32;
9213 }
9214 float scale = 1.0f;
9215 if (SCALE_INDEX < actualSize) {
9216 scale = item->value[SCALE_INDEX].f32;
9217 }
9218 uint32_t grayScaleStart = 0;
9219 if (GRAY_SCALE_START < actualSize) {
9220 if (GreatOrEqual(item->value[GRAY_SCALE_START].f32, 0.0f)) {
9221 grayScaleStart = static_cast<uint32_t>(item->value[GRAY_SCALE_START].f32);
9222 } else {
9223 return ERROR_CODE_PARAM_INVALID;
9224 }
9225 }
9226 uint32_t grayScaleEnd = 0;
9227 if (GRAY_SCALE_END < actualSize) {
9228 if (GreatOrEqual(item->value[GRAY_SCALE_END].f32, 0.0f)
9229 && GreatOrEqual(item->value[GRAY_SCALE_END].f32, item->value[GRAY_SCALE_START].f32)) {
9230 grayScaleEnd = static_cast<uint32_t>(item->value[GRAY_SCALE_END].f32);
9231 } else {
9232 return ERROR_CODE_PARAM_INVALID;
9233 }
9234 }
9235 int32_t intArray[NUM_5];
9236 intArray[NUM_0] = blurStyle;
9237 intArray[NUM_1] = colorMode;
9238 intArray[NUM_2] = adaptiveColor;
9239 std::vector<float> greyVector(NUM_2);
9240 greyVector[NUM_0] = grayScaleStart;
9241 greyVector[NUM_1] = grayScaleEnd;
9242 bool isValidColor = false;
9243 Color inactiveColor = Color::TRANSPARENT;
9244 fullImpl->getNodeModifiers()->getCommonModifier()->setBackgroundBlurStyle(
9245 node->uiNodeHandle, &intArray, scale, &greyVector[0], NUM_2, isValidColor, inactiveColor.GetValue());
9246 return ERROR_CODE_NO_ERROR;
9247 }
9248
SetForegroundBlurStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9249 int32_t SetForegroundBlurStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9250 {
9251 auto* fullImpl = GetFullImpl();
9252 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9253 if (actualSize < 0 || !CheckBackgroundBlurStyleInput(item, actualSize)) {
9254 return ERROR_CODE_PARAM_INVALID;
9255 }
9256 int32_t blurStyle = ARKUI_BLUR_STYLE_THIN;
9257 if (BLUR_STYLE_INDEX < actualSize) {
9258 blurStyle = ConvertBlurStyle(item->value[BLUR_STYLE_INDEX].i32);
9259 }
9260 int32_t colorMode = ARKUI_COLOR_MODE_SYSTEM;
9261 if (COLOR_MODE_INDEX < actualSize) {
9262 colorMode = item->value[COLOR_MODE_INDEX].i32;
9263 }
9264 int32_t adaptiveColor = ARKUI_ADAPTIVE_COLOR_DEFAULT;
9265 if (ADAPTIVE_COLOR_INDEX < actualSize) {
9266 adaptiveColor = item->value[ADAPTIVE_COLOR_INDEX].i32;
9267 }
9268 float scale = 1.0f;
9269 if (SCALE_INDEX < actualSize) {
9270 scale = item->value[SCALE_INDEX].f32;
9271 }
9272 float grayScaleStart = 0;
9273 if (GRAY_SCALE_START < actualSize) {
9274 grayScaleStart = item->value[GRAY_SCALE_START].f32;
9275 }
9276 float grayScaleEnd = 0;
9277 if (GRAY_SCALE_END < actualSize) {
9278 grayScaleEnd = item->value[GRAY_SCALE_END].f32;
9279 }
9280 int32_t intArray[NUM_3];
9281 intArray[NUM_0] = blurStyle;
9282 intArray[NUM_1] = colorMode;
9283 intArray[NUM_2] = adaptiveColor;
9284 BlurOption blurOption = {{grayScaleStart, grayScaleEnd}};
9285
9286 fullImpl->getNodeModifiers()->getCommonModifier()->setForegroundBlurStyle(
9287 node->uiNodeHandle, &intArray, scale, blurOption.grayscale.data(), blurOption.grayscale.size());
9288 return ERROR_CODE_NO_ERROR;
9289 }
9290
ResetForegroundBlurStyle(ArkUI_NodeHandle node)9291 void ResetForegroundBlurStyle(ArkUI_NodeHandle node)
9292 {
9293 auto* fullImpl = GetFullImpl();
9294 fullImpl->getNodeModifiers()->getCommonModifier()->resetForegroundBlurStyle(node->uiNodeHandle);
9295 }
9296
GetForegroundBlurStyle(ArkUI_NodeHandle node)9297 const ArkUI_AttributeItem* GetForegroundBlurStyle(ArkUI_NodeHandle node)
9298 {
9299 auto fullImpl = GetFullImpl();
9300 auto foregroundBlurStyle =
9301 fullImpl->getNodeModifiers()->getCommonModifier()->getForegroundBlurStyle(node->uiNodeHandle);
9302 g_numberValues[BLUR_STYLE_INDEX].i32 = UnConvertBlurStyle(foregroundBlurStyle.blurStyle);
9303 g_numberValues[COLOR_MODE_INDEX].i32 = foregroundBlurStyle.colorMode;
9304 g_numberValues[ADAPTIVE_COLOR_INDEX].i32 = foregroundBlurStyle.adaptiveColor;
9305 g_numberValues[SCALE_INDEX].f32 = foregroundBlurStyle.scale;
9306 g_numberValues[GRAY_SCALE_START].f32 = foregroundBlurStyle.grayScaleStart;
9307 g_numberValues[GRAY_SCALE_END].f32 = foregroundBlurStyle.grayScaleEnd;
9308 g_attributeItem.size = NUM_6;
9309 return &g_attributeItem;
9310 }
9311
SetLayoutRect(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9312 int32_t SetLayoutRect(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9313 {
9314 auto* fullImpl = GetFullImpl();
9315 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FOUR_PARAM);
9316 if (actualSize < 0) {
9317 return ERROR_CODE_PARAM_INVALID;
9318 }
9319 if (item->value[2].i32 < 0) { // 2:index of width
9320 return ERROR_CODE_PARAM_INVALID;
9321 }
9322 if (item->value[3].i32 < 0) { // 3:index of height
9323 return ERROR_CODE_PARAM_INVALID;
9324 }
9325 ArkUI_Int32 intArray[NUM_4];
9326 intArray[0] = item->value[0].i32;
9327 intArray[1] = item->value[1].i32;
9328 intArray[2] = item->value[2].i32; // 2:index of width
9329 intArray[3] = item->value[3].i32; // 3:index of height
9330 fullImpl->getNodeModifiers()->getCommonModifier()->setLayoutRect(node->uiNodeHandle, &intArray);
9331 return ERROR_CODE_NO_ERROR;
9332 }
9333
GetLayoutRect(ArkUI_NodeHandle node)9334 const ArkUI_AttributeItem* GetLayoutRect(ArkUI_NodeHandle node)
9335 {
9336 auto fullImpl = GetFullImpl();
9337 ArkUI_Int32 intArray[NUM_4];
9338 fullImpl->getNodeModifiers()->getCommonModifier()->getLayoutRect(node->uiNodeHandle, &intArray);
9339 g_numberValues[0].i32 = intArray[0];
9340 g_numberValues[1].i32 = intArray[1];
9341 g_numberValues[2].i32 = intArray[2]; // 2:index of width
9342 g_numberValues[3].i32 = intArray[3]; // 3:index of height
9343 g_attributeItem.size = NUM_4;
9344 return &g_attributeItem;
9345 }
9346
ResetLayoutRect(ArkUI_NodeHandle node)9347 void ResetLayoutRect(ArkUI_NodeHandle node)
9348 {
9349 auto fullImpl = GetFullImpl();
9350 fullImpl->getNodeModifiers()->getCommonModifier()->resetLayoutRect(node->uiNodeHandle);
9351 }
9352
SetFocusOnTouch(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9353 int32_t SetFocusOnTouch(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9354 {
9355 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
9356 return ERROR_CODE_PARAM_INVALID;
9357 }
9358 auto* fullImpl = GetFullImpl();
9359 fullImpl->getNodeModifiers()->getCommonModifier()->setFocusOnTouch(
9360 node->uiNodeHandle, item->value[NUM_0].i32);
9361 return ERROR_CODE_NO_ERROR;
9362 }
9363
ResetFocusOnTouch(ArkUI_NodeHandle node)9364 void ResetFocusOnTouch(ArkUI_NodeHandle node)
9365 {
9366 auto* fullImpl = GetFullImpl();
9367 fullImpl->getNodeModifiers()->getCommonModifier()->resetFocusOnTouch(node->uiNodeHandle);
9368 }
9369
GetFocusOnTouch(ArkUI_NodeHandle node)9370 const ArkUI_AttributeItem* GetFocusOnTouch(ArkUI_NodeHandle node)
9371 {
9372 auto resultValue = GetFullImpl()->getNodeModifiers()->getCommonModifier()->getFocusOnTouch(node->uiNodeHandle);
9373 g_numberValues[0].i32 = resultValue;
9374 return &g_attributeItem;
9375 }
9376
GetAccessibilityID(ArkUI_NodeHandle node)9377 const ArkUI_AttributeItem* GetAccessibilityID(ArkUI_NodeHandle node)
9378 {
9379 auto fullImpl = GetFullImpl();
9380 ArkUI_Int32 value = fullImpl->getNodeModifiers()->getCommonModifier()->getAccessibilityID(node->uiNodeHandle);
9381 g_numberValues[0].i32 = value;
9382 g_attributeItem.size = NUM_1;
9383 return &g_attributeItem;
9384 }
9385
SetAccessibilityState(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9386 int32_t SetAccessibilityState(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9387 {
9388 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
9389 ArkUI_AccessibilityState* statePtr = reinterpret_cast<ArkUI_AccessibilityState*>(item->object);
9390 CHECK_NULL_RETURN(statePtr, ERROR_CODE_PARAM_INVALID);
9391 if (statePtr->isDisabled.isSet && !InRegion(NUM_0, NUM_1, statePtr->isDisabled.value)) {
9392 return ERROR_CODE_PARAM_INVALID;
9393 }
9394 if (statePtr->isSelected.isSet && !InRegion(NUM_0, NUM_1, statePtr->isSelected.value)) {
9395 return ERROR_CODE_PARAM_INVALID;
9396 }
9397 if (statePtr->checkedType.isSet && !InRegion(NUM_0, NUM_1, statePtr->checkedType.value)) {
9398 return ERROR_CODE_PARAM_INVALID;
9399 }
9400 ArkUIAccessibilityState uiState;
9401 uiState.isDisabled = ArkUIOptionalInt { statePtr->isDisabled.isSet, statePtr->isDisabled.value };
9402 uiState.isSelected = ArkUIOptionalInt { statePtr->isSelected.isSet, statePtr->isSelected.value };
9403 uiState.checkedType = ArkUIOptionalInt { statePtr->checkedType.isSet, statePtr->checkedType.value };
9404 auto* fullImpl = GetFullImpl();
9405 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityState(node->uiNodeHandle, uiState);
9406 return ERROR_CODE_NO_ERROR;
9407 }
9408
GetAccessibilityState(ArkUI_NodeHandle node)9409 const ArkUI_AttributeItem* GetAccessibilityState(ArkUI_NodeHandle node)
9410 {
9411 static ArkUI_AccessibilityState state;
9412 ArkUIAccessibilityState uiState;
9413 auto* fullImpl = GetFullImpl();
9414 fullImpl->getNodeModifiers()->getCommonModifier()->getAccessibilityState(node->uiNodeHandle, uiState);
9415 state.isDisabled = ArkUI_OptionalInt { uiState.isDisabled.isSet, uiState.isDisabled.value };
9416 state.isSelected = ArkUI_OptionalInt { uiState.isSelected.isSet, uiState.isSelected.value };
9417 state.checkedType = ArkUI_OptionalInt { uiState.checkedType.isSet, uiState.checkedType.value };
9418 g_attributeItem.object = &state;
9419 g_attributeItem.size = NUM_0;
9420 return &g_attributeItem;
9421 }
9422
ResetAccessibilityState(ArkUI_NodeHandle node)9423 void ResetAccessibilityState(ArkUI_NodeHandle node)
9424 {
9425 auto fullImpl = GetFullImpl();
9426 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityState(node->uiNodeHandle);
9427 }
9428
SetAccessibilityValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9429 int32_t SetAccessibilityValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9430 {
9431 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
9432 ArkUI_AccessibilityValue* valuePtr = reinterpret_cast<ArkUI_AccessibilityValue*>(item->object);
9433 CHECK_NULL_RETURN(valuePtr, ERROR_CODE_PARAM_INVALID);
9434 if (valuePtr->current.isSet && ((!valuePtr->min.isSet) || (!valuePtr->max.isSet))) {
9435 return ERROR_CODE_PARAM_INVALID;
9436 }
9437 if (valuePtr->max.value < valuePtr->min.value) {
9438 return ERROR_CODE_PARAM_INVALID;
9439 }
9440 if ((valuePtr->current.value < valuePtr->min.value) || (valuePtr->current.value > valuePtr->max.value)) {
9441 return ERROR_CODE_PARAM_INVALID;
9442 }
9443 ArkUIAccessibilityValue uiValue;
9444 uiValue.min = ArkUIOptionalInt { valuePtr->min.isSet, valuePtr->min.value };
9445 uiValue.max = ArkUIOptionalInt { valuePtr->max.isSet, valuePtr->max.value };
9446 uiValue.current = ArkUIOptionalInt { valuePtr->current.isSet, valuePtr->current.value };
9447 uiValue.text = ArkUIOptionalCharPtr { valuePtr->text.isSet, valuePtr->text.value };
9448 auto* fullImpl = GetFullImpl();
9449 fullImpl->getNodeModifiers()->getCommonModifier()->setAccessibilityValue(node->uiNodeHandle, uiValue);
9450 return ERROR_CODE_NO_ERROR;
9451 }
9452
GetAccessibilityValue(ArkUI_NodeHandle node)9453 const ArkUI_AttributeItem* GetAccessibilityValue(ArkUI_NodeHandle node)
9454 {
9455 static ArkUI_AccessibilityValue value;
9456 ArkUIAccessibilityValue uiValue;
9457 auto* fullImpl = GetFullImpl();
9458 fullImpl->getNodeModifiers()->getCommonModifier()->getAccessibilityValue(node->uiNodeHandle, uiValue);
9459 value.min = ArkUI_OptionalInt { uiValue.min.isSet, uiValue.min.value };
9460 value.max = ArkUI_OptionalInt { uiValue.max.isSet, uiValue.max.value };
9461 value.current = ArkUI_OptionalInt { uiValue.current.isSet, uiValue.current.value };
9462 value.text = ArkUI_OptionalCharPtr { uiValue.text.isSet, uiValue.text.value };
9463 g_attributeItem.object = &value;
9464 g_attributeItem.size = NUM_0;
9465 return &g_attributeItem;
9466 }
9467
ResetAccessibilityValue(ArkUI_NodeHandle node)9468 void ResetAccessibilityValue(ArkUI_NodeHandle node)
9469 {
9470 auto fullImpl = GetFullImpl();
9471 fullImpl->getNodeModifiers()->getCommonModifier()->resetAccessibilityValue(node->uiNodeHandle);
9472 }
9473
ResetAreaChangeRatio(ArkUI_NodeHandle node)9474 void ResetAreaChangeRatio(ArkUI_NodeHandle node)
9475 {
9476 if (node->areaChangeRadio) {
9477 delete[] node->areaChangeRadio->value;
9478 delete node->areaChangeRadio;
9479 }
9480 node->areaChangeRadio = nullptr;
9481 }
9482
SetAreaChangeRatio(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9483 int32_t SetAreaChangeRatio(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9484 {
9485 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9486 if (actualSize < 0) {
9487 return ERROR_CODE_PARAM_INVALID;
9488 }
9489 ArkUI_Int32 radioLength = item->size;
9490 ArkUI_NumberValue* radioList = new ArkUI_NumberValue[radioLength];
9491 for (int i = 0; i < radioLength; ++i) {
9492 if (LessNotEqual(item->value[i].f32, 0.0f) || GreatNotEqual(item->value[i].f32, 1.0f)) {
9493 delete[] radioList;
9494 return ERROR_CODE_PARAM_INVALID;
9495 }
9496 radioList[i].f32 = item->value[i].f32;
9497 }
9498 if (node->areaChangeRadio) {
9499 ResetAreaChangeRatio(node);
9500 }
9501 node->areaChangeRadio = new ArkUI_AttributeItem { .value = radioList, .size = radioLength};
9502 return ERROR_CODE_NO_ERROR;
9503 }
9504
GetAreaChangeRatio(ArkUI_NodeHandle node)9505 const ArkUI_AttributeItem* GetAreaChangeRatio(ArkUI_NodeHandle node)
9506 {
9507 return node->areaChangeRadio;
9508 }
9509
CheckTransformCenter(const ArkUI_AttributeItem * item,int32_t size)9510 bool CheckTransformCenter(const ArkUI_AttributeItem* item, int32_t size)
9511 {
9512 CHECK_NULL_RETURN(item, false);
9513 if (CENTER_X_PERCENT_INDEX < size && (LessNotEqual(item->value[CENTER_X_PERCENT_INDEX].f32, 0.0f) ||
9514 GreatNotEqual(item->value[CENTER_X_PERCENT_INDEX].f32, 1.0f))) {
9515 return false;
9516 }
9517 if (CENTER_Y_PERCENT_INDEX < size && (LessNotEqual(item->value[CENTER_Y_PERCENT_INDEX].f32, 0.0f) ||
9518 GreatNotEqual(item->value[CENTER_Y_PERCENT_INDEX].f32, 1.0f))) {
9519 return false;
9520 }
9521 if (CENTER_Z_PERCENT_INDEX < size && (LessNotEqual(item->value[CENTER_Z_PERCENT_INDEX].f32, 0.0f) ||
9522 GreatNotEqual(item->value[CENTER_Z_PERCENT_INDEX].f32, 1.0f))) {
9523 return false;
9524 }
9525 return true;
9526 }
9527
SetTransformCenter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9528 int32_t SetTransformCenter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9529 {
9530 auto* fullImpl = GetFullImpl();
9531 auto actualSize = CheckAttributeItemArray(item, 0);
9532 if (actualSize < 0) {
9533 return ERROR_CODE_PARAM_INVALID;
9534 }
9535 auto isTransformCenterValid = CheckTransformCenter(item, actualSize);
9536 if (!isTransformCenterValid) {
9537 return ERROR_CODE_PARAM_INVALID;
9538 }
9539 int32_t unit = GetDefaultUnit(node, UNIT_VP);
9540 CalcDimension centerX(HALF, DimensionUnit::PERCENT);
9541 if (CENTER_X_INDEX < actualSize) {
9542 centerX.SetValue(item->value[CENTER_X_INDEX].f32);
9543 centerX.SetUnit(static_cast<DimensionUnit>(unit));
9544 }
9545 CalcDimension centerY(HALF, DimensionUnit::PERCENT);
9546 if (CENTER_Y_INDEX < actualSize) {
9547 centerY.SetValue(item->value[CENTER_Y_INDEX].f32);
9548 centerY.SetUnit(static_cast<DimensionUnit>(unit));
9549 }
9550 CalcDimension centerZ(0, static_cast<DimensionUnit>(unit));
9551 if (CENTER_Z_INDEX < actualSize) {
9552 centerZ.SetValue(item->value[CENTER_Z_INDEX].f32);
9553 }
9554 if (CENTER_X_PERCENT_INDEX < actualSize) {
9555 centerX.SetValue(item->value[CENTER_X_PERCENT_INDEX].f32);
9556 centerX.SetUnit(DimensionUnit::PERCENT);
9557 }
9558 if (CENTER_Y_PERCENT_INDEX < actualSize) {
9559 centerY.SetValue(item->value[CENTER_Y_PERCENT_INDEX].f32);
9560 centerY.SetUnit(DimensionUnit::PERCENT);
9561 }
9562 if (CENTER_Z_PERCENT_INDEX < actualSize) {
9563 centerZ.SetValue(item->value[CENTER_Z_PERCENT_INDEX].f32);
9564 centerZ.SetUnit(DimensionUnit::PERCENT);
9565 }
9566 fullImpl->getNodeModifiers()->getCommonModifier()->setTransitionCenter(node->uiNodeHandle, centerX.Value(),
9567 static_cast<int32_t>(centerX.Unit()), centerY.Value(), static_cast<int32_t>(centerY.Unit()), centerZ.Value(),
9568 static_cast<int32_t>(centerZ.Unit()));
9569 return ERROR_CODE_NO_ERROR;
9570 }
9571
SetOpacityTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9572 int32_t SetOpacityTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9573 {
9574 auto* fullImpl = GetFullImpl();
9575 auto actualSize = CheckAttributeItemArray(item, REQUIRED_THREE_PARAM);
9576 if (actualSize < 0) {
9577 return ERROR_CODE_PARAM_INVALID;
9578 }
9579 if (!CheckAnimation(item, actualSize, OPACITY_ANIMATION_BASE)) {
9580 return ERROR_CODE_PARAM_INVALID;
9581 }
9582 float opacity = DEFAULT_OPACITY;
9583 if (actualSize > 0) {
9584 opacity = item->value[0].f32;
9585 }
9586 ArkUIAnimationOptionType animationOption;
9587 ParseAnimation(item, actualSize, animationOption, OPACITY_ANIMATION_BASE);
9588 fullImpl->getNodeModifiers()->getCommonModifier()->setOpacityTransition(
9589 node->uiNodeHandle, opacity, &animationOption);
9590 return ERROR_CODE_NO_ERROR;
9591 }
9592
SetRotateTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9593 int32_t SetRotateTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9594 {
9595 auto* fullImpl = GetFullImpl();
9596 auto actualSize = CheckAttributeItemArray(item, REQUIRED_SEVEN_PARAM);
9597 if (actualSize < 0) {
9598 return ERROR_CODE_PARAM_INVALID;
9599 }
9600 if (!CheckAnimation(item, actualSize, ROTATE_ANIMATION_BASE)) {
9601 return ERROR_CODE_PARAM_INVALID;
9602 }
9603 std::array<float, ARRAY_SIZE> rotateArray;
9604 for (int32_t i = 0; i < actualSize && i < static_cast<int32_t>(rotateArray.size()); i++) {
9605 rotateArray[i] = item->value[i].f32;
9606 }
9607 float angle = 0.0f;
9608 if (ROTATE_ANGLE_INDEX < actualSize) {
9609 angle = item->value[ROTATE_ANGLE_INDEX].f32;
9610 }
9611 float perspective = 0.0f;
9612 if (ROTATE_PERSPECTIVE_INDEX < actualSize) {
9613 perspective = item->value[ROTATE_PERSPECTIVE_INDEX].f32;
9614 }
9615 ArkUIAnimationOptionType animationOption;
9616 ParseAnimation(item, actualSize, animationOption, ROTATE_ANIMATION_BASE);
9617 fullImpl->getNodeModifiers()->getCommonModifier()->setRotateTransition(
9618 node->uiNodeHandle, &rotateArray[0], ARRAY_SIZE, perspective, angle, &animationOption);
9619 return ERROR_CODE_NO_ERROR;
9620 }
9621
SetScaleTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9622 int32_t SetScaleTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9623 {
9624 auto* fullImpl = GetFullImpl();
9625 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FIVE_PARAM);
9626 if (actualSize < 0) {
9627 return ERROR_CODE_PARAM_INVALID;
9628 }
9629 if (!CheckAnimation(item, actualSize, SCALE_ANIMATION_BASE)) {
9630 return ERROR_CODE_PARAM_INVALID;
9631 }
9632 std::array<float, ARRAY_SIZE> scaleFloatArray;
9633 for (size_t i = 0; i < static_cast<uint32_t>(actualSize) && i < scaleFloatArray.size(); i++) {
9634 scaleFloatArray[i] = item->value[i].f32;
9635 }
9636 ArkUIAnimationOptionType animationOption;
9637 ParseAnimation(item, actualSize, animationOption, SCALE_ANIMATION_BASE);
9638 fullImpl->getNodeModifiers()->getCommonModifier()->setScaleTransition(
9639 node->uiNodeHandle, &scaleFloatArray[0], scaleFloatArray.size(), &animationOption);
9640 return ERROR_CODE_NO_ERROR;
9641 }
9642
SetTranslateTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9643 int32_t SetTranslateTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9644 {
9645 auto* fullImpl = GetFullImpl();
9646 auto actualSize = CheckAttributeItemArray(item, REQUIRED_FIVE_PARAM);
9647 if (actualSize < 0) {
9648 return ERROR_CODE_PARAM_INVALID;
9649 }
9650 if (!CheckAnimation(item, actualSize, TRANSLATE_ANIMATION_BASE)) {
9651 return ERROR_CODE_PARAM_INVALID;
9652 }
9653 int32_t unit = GetDefaultUnit(node, UNIT_VP);
9654 CalcDimension xDimension(0, static_cast<DimensionUnit>(unit));
9655 if (X_INDEX < actualSize) {
9656 xDimension.SetValue(item->value[X_INDEX].f32);
9657 }
9658 CalcDimension yDimension(0, static_cast<DimensionUnit>(unit));
9659 if (Y_INDEX < actualSize) {
9660 yDimension.SetValue(item->value[Y_INDEX].f32);
9661 }
9662 CalcDimension zDimension(0, static_cast<DimensionUnit>(unit));
9663 if (Z_INDEX < actualSize) {
9664 zDimension.SetValue(item->value[Z_INDEX].f32);
9665 }
9666 ArkUIAnimationOptionType animationOption;
9667 ParseAnimation(item, actualSize, animationOption, TRANSLATE_ANIMATION_BASE);
9668 fullImpl->getNodeModifiers()->getCommonModifier()->setTranslateTransition(node->uiNodeHandle, xDimension.Value(),
9669 static_cast<int32_t>(xDimension.Unit()), yDimension.Value(), static_cast<int32_t>(yDimension.Unit()),
9670 zDimension.Value(), static_cast<int32_t>(zDimension.Unit()), &animationOption);
9671 return ERROR_CODE_NO_ERROR;
9672 }
9673
SetMoveTransition(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9674 int32_t SetMoveTransition(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9675 {
9676 auto* fullImpl = GetFullImpl();
9677 auto actualSize = CheckAttributeItemArray(item, REQUIRED_THREE_PARAM);
9678 if (actualSize < 0) {
9679 return ERROR_CODE_PARAM_INVALID;
9680 }
9681 if (!CheckAnimation(item, actualSize, MOVE_ANIMATION_BASE)) {
9682 return ERROR_CODE_PARAM_INVALID;
9683 }
9684 int edgeType = ArkUI_TransitionEdge::ARKUI_TRANSITION_EDGE_START;
9685 if (!InRegion(NUM_0, NUM_3, item->value[NUM_0].i32)) {
9686 return ERROR_CODE_PARAM_INVALID;
9687 }
9688 edgeType = item->value[NUM_0].i32;
9689 ArkUIAnimationOptionType animationOption;
9690 ParseAnimation(item, actualSize, animationOption, MOVE_ANIMATION_BASE);
9691 fullImpl->getNodeModifiers()->getCommonModifier()->setMoveTransition(
9692 node->uiNodeHandle, edgeType, &animationOption);
9693 return ERROR_CODE_NO_ERROR;
9694 }
9695
SetOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9696 int32_t SetOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9697 {
9698 auto* fullImpl = GetFullImpl();
9699 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
9700 if (actualSize < 0) {
9701 return ERROR_CODE_PARAM_INVALID;
9702 }
9703 int32_t unit = GetDefaultUnit(node, UNIT_VP);
9704 CalcDimension xDimension(0, static_cast<DimensionUnit>(unit));
9705 xDimension.SetValue(item->value[NUM_0].f32);
9706 CalcDimension yDimension(0, static_cast<DimensionUnit>(unit));
9707 yDimension.SetValue(item->value[NUM_1].f32);
9708 std::array<float, TWO> offsetValue = { xDimension.Value(), yDimension.Value() };
9709 std::array<int32_t, TWO> offsetUnit = { static_cast<int32_t>(xDimension.Unit()),
9710 static_cast<int32_t>(yDimension.Unit()) };
9711 fullImpl->getNodeModifiers()->getCommonModifier()->setOffset(node->uiNodeHandle, &offsetValue[0], &offsetUnit[0]);
9712 return ERROR_CODE_NO_ERROR;
9713 }
9714
SetMarkAnchor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9715 int32_t SetMarkAnchor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9716 {
9717 auto* fullImpl = GetFullImpl();
9718 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWO_PARAM);
9719 if (actualSize < 0) {
9720 return ERROR_CODE_PARAM_INVALID;
9721 }
9722 int32_t unit = GetDefaultUnit(node, UNIT_VP);
9723 CalcDimension xDimension(0, static_cast<DimensionUnit>(unit));
9724 xDimension.SetValue(item->value[NUM_0].f32);
9725 CalcDimension yDimension(0, static_cast<DimensionUnit>(unit));
9726 yDimension.SetValue(item->value[NUM_1].f32);
9727 fullImpl->getNodeModifiers()->getCommonModifier()->setMarkAnchor(node->uiNodeHandle, xDimension.Value(),
9728 unit, yDimension.Value(), unit);
9729 return ERROR_CODE_NO_ERROR;
9730 }
9731
SetAlignRules(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9732 int32_t SetAlignRules(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9733 {
9734 node->alignRuleOption = item->object;
9735
9736 if (item->size < 0 || item->object == nullptr) {
9737 return ERROR_CODE_PARAM_INVALID;
9738 }
9739 auto* fullImpl = GetFullImpl();
9740 auto* option = reinterpret_cast<ArkUI_AlignmentRuleOption*>(item->object);
9741 char* anchors[NUM_6];
9742 ArkUI_Int32 aligns[NUM_6];
9743 if (option->left.hasValue) {
9744 // 0 -> left
9745 anchors[0] = const_cast<char*>(option->left.anchor.c_str());
9746 aligns[0] = option->left.align + NUM_1;
9747 }
9748 if (option->middle.hasValue) {
9749 // 1 -> middle
9750 anchors[1] = const_cast<char*>(option->middle.anchor.c_str());
9751 aligns[1] = option->middle.align + NUM_1;
9752 }
9753 if (option->right.hasValue) {
9754 // 2 -> right
9755 anchors[2] = const_cast<char*>(option->right.anchor.c_str());
9756 aligns[2] = option->right.align + NUM_1;
9757 }
9758 if (option->top.hasValue) {
9759 // 3 -> top
9760 anchors[3] = const_cast<char*>(option->top.anchor.c_str());
9761 aligns[3] = option->top.align + NUM_1;
9762 }
9763 if (option->center.hasValue) {
9764 // 4 -> center
9765 anchors[4] = const_cast<char*>(option->center.anchor.c_str());
9766 aligns[4] = option->center.align + NUM_1;
9767 }
9768 if (option->bottom.hasValue) {
9769 // 5 -> bottom
9770 anchors[5] = const_cast<char*>(option->bottom.anchor.c_str());
9771 aligns[5] = option->bottom.align + NUM_1;
9772 }
9773 fullImpl->getNodeModifiers()->getCommonModifier()->setAlignRules(node->uiNodeHandle, anchors, aligns, NUM_6);
9774 fullImpl->getNodeModifiers()->getCommonModifier()->setBias(
9775 node->uiNodeHandle, option->biasHorizontal, option->biasVertical);
9776 return ERROR_CODE_NO_ERROR;
9777 }
9778
ResetAlignRules(ArkUI_NodeHandle node)9779 void ResetAlignRules(ArkUI_NodeHandle node)
9780 {
9781 auto* fullImpl = GetFullImpl();
9782 fullImpl->getNodeModifiers()->getCommonModifier()->resetAlignRules(node->uiNodeHandle);
9783 node->alignRuleOption = nullptr;
9784 }
9785
SetTextContent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9786 int32_t SetTextContent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9787 {
9788 auto* fullImpl = GetFullImpl();
9789 if (!CheckAttributeString(item)) {
9790 return ERROR_CODE_PARAM_INVALID;
9791 }
9792 fullImpl->getNodeModifiers()->getTextModifier()->setContent(node->uiNodeHandle, item->string);
9793 return ERROR_CODE_NO_ERROR;
9794 }
9795
SetLineHeight(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9796 int32_t SetLineHeight(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9797 {
9798 auto* fullImpl = GetFullImpl();
9799 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9800 if (actualSize < 0) {
9801 return ERROR_CODE_PARAM_INVALID;
9802 }
9803 int32_t unit = GetDefaultUnit(node, UNIT_FP);
9804 switch (node->type) {
9805 case ARKUI_NODE_TEXT:
9806 fullImpl->getNodeModifiers()->getTextModifier()->setTextLineHeight(
9807 node->uiNodeHandle, item->value[0].f32, unit);
9808 break;
9809 case ARKUI_NODE_SPAN:
9810 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanLineHeight(
9811 node->uiNodeHandle, item->value[0].f32, unit);
9812 break;
9813 case ARKUI_NODE_TEXT_INPUT:
9814 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputLineHeight(
9815 node->uiNodeHandle, item->value[0].f32, unit);
9816 break;
9817 case ARKUI_NODE_TEXT_AREA:
9818 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaLineHeight(
9819 node->uiNodeHandle, item->value[0].f32, unit);
9820 break;
9821 default:
9822 break;
9823 }
9824 return ERROR_CODE_NO_ERROR;
9825 }
9826
SetDecoration(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9827 int32_t SetDecoration(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9828 {
9829 auto* fullImpl = GetFullImpl();
9830 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9831 if (actualSize < 0) {
9832 return ERROR_CODE_PARAM_INVALID;
9833 }
9834 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_TEXT_DECORATION_TYPE_LINE_THROUGH)) {
9835 return ERROR_CODE_PARAM_INVALID;
9836 }
9837 if (DECORATION_STYLE_INDEX < actualSize && (item->value[DECORATION_STYLE_INDEX].i32 < 0 ||
9838 item->value[DECORATION_STYLE_INDEX].i32 > static_cast<int32_t>(ARKUI_TEXT_DECORATION_STYLE_WAVY))) {
9839 return ERROR_CODE_PARAM_INVALID;
9840 }
9841 int32_t decoration = item->value[0].i32;
9842 auto decorationColor = Color::BLACK.GetValue();
9843 if (DECORATION_COLOR_INDEX < actualSize) {
9844 decorationColor = item->value[DECORATION_COLOR_INDEX].u32;
9845 }
9846 int32_t decorationStyle = 0;
9847 if (DECORATION_STYLE_INDEX < actualSize) {
9848 decorationStyle = item->value[DECORATION_STYLE_INDEX].i32;
9849 }
9850 switch (node->type) {
9851 case ARKUI_NODE_SPAN:
9852 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanDecoration(
9853 node->uiNodeHandle, decoration, decorationColor, decorationStyle);
9854 break;
9855 case ARKUI_NODE_TEXT:
9856 fullImpl->getNodeModifiers()->getTextModifier()->setTextDecoration(
9857 node->uiNodeHandle, decoration, decorationColor, decorationStyle);
9858 break;
9859 default:
9860 break;
9861 }
9862 return ERROR_CODE_NO_ERROR;
9863 }
9864
SetTextCase(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9865 int32_t SetTextCase(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9866 {
9867 auto* fullImpl = GetFullImpl();
9868 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9869 if (actualSize < 0) {
9870 return ERROR_CODE_PARAM_INVALID;
9871 }
9872 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_TEXT_CASE_UPPER)) {
9873 return ERROR_CODE_PARAM_INVALID;
9874 }
9875 switch (node->type) {
9876 case ARKUI_NODE_SPAN:
9877 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanTextCase(node->uiNodeHandle, item->value[0].i32);
9878 break;
9879 case ARKUI_NODE_TEXT:
9880 fullImpl->getNodeModifiers()->getTextModifier()->setTextCase(node->uiNodeHandle, item->value[0].i32);
9881 break;
9882 default:
9883 break;
9884 }
9885 return ERROR_CODE_NO_ERROR;
9886 }
9887
SetLetterSpacing(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9888 int32_t SetLetterSpacing(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9889 {
9890 auto* fullImpl = GetFullImpl();
9891 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9892 if (actualSize < 0) {
9893 return ERROR_CODE_PARAM_INVALID;
9894 }
9895 ArkUIStringAndFloat letterSpacingValue = { item->value[0].f32, nullptr };
9896 switch (node->type) {
9897 case ARKUI_NODE_SPAN:
9898 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanLetterSpacing(
9899 node->uiNodeHandle, &letterSpacingValue);
9900 break;
9901 case ARKUI_NODE_TEXT:
9902 fullImpl->getNodeModifiers()->getTextModifier()->setTextLetterSpacing(
9903 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
9904 break;
9905 case ARKUI_NODE_TEXT_INPUT:
9906 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputLetterSpacing(
9907 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
9908 break;
9909 case ARKUI_NODE_TEXT_AREA:
9910 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaLetterSpacing(
9911 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
9912 break;
9913 default:
9914 break;
9915 }
9916 return ERROR_CODE_NO_ERROR;
9917 }
9918
SetMaxLines(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9919 int32_t SetMaxLines(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9920 {
9921 auto* fullImpl = GetFullImpl();
9922 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9923 if (actualSize < 0) {
9924 return ERROR_CODE_PARAM_INVALID;
9925 }
9926 switch (node->type) {
9927 case ARKUI_NODE_TEXT:
9928 fullImpl->getNodeModifiers()->getTextModifier()->setTextMaxLines(node->uiNodeHandle, item->value[0].i32);
9929 break;
9930 case ARKUI_NODE_TEXT_INPUT:
9931 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputMaxLines(
9932 node->uiNodeHandle, item->value[0].i32);
9933 break;
9934 case ARKUI_NODE_TEXT_AREA:
9935 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaMaxLines(
9936 node->uiNodeHandle, item->value[0].i32);
9937 break;
9938 default:
9939 break;
9940 }
9941 return ERROR_CODE_NO_ERROR;
9942 }
9943
SetTextAlign(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9944 int32_t SetTextAlign(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9945 {
9946 auto* fullImpl = GetFullImpl();
9947 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9948 if (actualSize < 0) {
9949 return ERROR_CODE_PARAM_INVALID;
9950 }
9951 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_TEXT_ALIGNMENT_JUSTIFY)) {
9952 return ERROR_CODE_PARAM_INVALID;
9953 }
9954 switch (node->type) {
9955 case ARKUI_NODE_TEXT_INPUT:
9956 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputTextAlign(
9957 node->uiNodeHandle, item->value[0].i32);
9958 break;
9959 case ARKUI_NODE_TEXT:
9960 fullImpl->getNodeModifiers()->getTextModifier()->setTextAlign(node->uiNodeHandle, item->value[0].i32);
9961 break;
9962 case ARKUI_NODE_TEXT_AREA:
9963 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaTextAlign(
9964 node->uiNodeHandle, item->value[0].i32);
9965 break;
9966 default:
9967 break;
9968 }
9969 return ERROR_CODE_NO_ERROR;
9970 }
9971
SetTextOverflow(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9972 int32_t SetTextOverflow(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9973 {
9974 auto* fullImpl = GetFullImpl();
9975 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9976 if (actualSize < 0) {
9977 return ERROR_CODE_PARAM_INVALID;
9978 }
9979 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_TEXT_OVERFLOW_MARQUEE)) {
9980 return ERROR_CODE_PARAM_INVALID;
9981 }
9982 fullImpl->getNodeModifiers()->getTextModifier()->setTextOverflow(node->uiNodeHandle, item->value[0].i32);
9983 return ERROR_CODE_NO_ERROR;
9984 }
9985
SetTextIndent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)9986 int32_t SetTextIndent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
9987 {
9988 auto* fullImpl = GetFullImpl();
9989 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
9990 if (actualSize < 0) {
9991 return ERROR_CODE_PARAM_INVALID;
9992 }
9993 fullImpl->getNodeModifiers()->getTextModifier()->setTextIndent(node->uiNodeHandle,
9994 item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
9995 return ERROR_CODE_NO_ERROR;
9996 }
9997
ResetTextIndent(ArkUI_NodeHandle node)9998 void ResetTextIndent(ArkUI_NodeHandle node)
9999 {
10000 auto* fullImpl = GetFullImpl();
10001 fullImpl->getNodeModifiers()->getTextModifier()->setTextIndent(node->uiNodeHandle,
10002 0.0f, UNIT_FP);
10003 }
10004
SetTextWordBreak(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10005 int32_t SetTextWordBreak(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10006 {
10007 auto* fullImpl = GetFullImpl();
10008 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10009 if (actualSize < 0) {
10010 return ERROR_CODE_PARAM_INVALID;
10011 }
10012 fullImpl->getNodeModifiers()->getTextModifier()->setWordBreak(
10013 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
10014 return ERROR_CODE_NO_ERROR;
10015 }
10016
GetTextWordBreak(ArkUI_NodeHandle node)10017 const ArkUI_AttributeItem* GetTextWordBreak(ArkUI_NodeHandle node)
10018 {
10019 auto fullImpl = GetFullImpl();
10020 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextWordBreak(node->uiNodeHandle);
10021 g_attributeItem.size = REQUIRED_ONE_PARAM;
10022 return &g_attributeItem;
10023 }
10024
ResetTextWordBreak(ArkUI_NodeHandle node)10025 void ResetTextWordBreak(ArkUI_NodeHandle node)
10026 {
10027 auto* fullImpl = GetFullImpl();
10028 fullImpl->getNodeModifiers()->getTextModifier()->resetWordBreak(node->uiNodeHandle);
10029 }
10030
SetTextSelectedBackgroundColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10031 int32_t SetTextSelectedBackgroundColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10032 {
10033 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10034 if (actualSize < 0) {
10035 return ERROR_CODE_PARAM_INVALID;
10036 }
10037 auto* fullImpl = GetFullImpl();
10038 fullImpl->getNodeModifiers()->getTextModifier()->setTextSelectedBackgroundColor(
10039 node->uiNodeHandle, item->value[0].u32);
10040 return ERROR_CODE_NO_ERROR;
10041 }
10042
GetTextSelectedBackgroundColor(ArkUI_NodeHandle node)10043 const ArkUI_AttributeItem* GetTextSelectedBackgroundColor(ArkUI_NodeHandle node)
10044 {
10045 g_numberValues[0].u32 = GetFullImpl()->getNodeModifiers()->getTextModifier()->getTextSelectedBackgroundColor(
10046 node->uiNodeHandle);
10047 return &g_attributeItem;
10048 }
10049
ResetTextSelectedBackgroundColor(ArkUI_NodeHandle node)10050 void ResetTextSelectedBackgroundColor(ArkUI_NodeHandle node)
10051 {
10052 auto* fullImpl = GetFullImpl();
10053 fullImpl->getNodeModifiers()->getTextModifier()->resetTextSelectedBackgroundColor(node->uiNodeHandle);
10054 }
10055
SetTextEllipsisMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10056 int32_t SetTextEllipsisMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10057 {
10058 auto* fullImpl = GetFullImpl();
10059 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10060 if (actualSize < 0) {
10061 return ERROR_CODE_PARAM_INVALID;
10062 }
10063 fullImpl->getNodeModifiers()->getTextModifier()->setEllipsisMode(
10064 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
10065 return ERROR_CODE_NO_ERROR;
10066 }
10067
SetLineSpacing(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10068 int32_t SetLineSpacing(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10069 {
10070 auto* fullImpl = GetFullImpl();
10071 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10072 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
10073 return ERROR_CODE_PARAM_INVALID;
10074 }
10075 if (node->type == ARKUI_NODE_TEXT) {
10076 fullImpl->getNodeModifiers()->getTextModifier()->setTextLineSpacing(
10077 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
10078 }
10079 return ERROR_CODE_NO_ERROR;
10080 }
10081
SetTextContentWithStyledString(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10082 int32_t SetTextContentWithStyledString(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10083 {
10084 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
10085 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
10086 auto* fullImpl = GetFullImpl();
10087 auto* styledString = reinterpret_cast<ArkUI_StyledString*>(item->object);
10088 fullImpl->getNodeModifiers()->getTextModifier()->setTextContentWithStyledString(node->uiNodeHandle, styledString);
10089 return ERROR_CODE_NO_ERROR;
10090 }
10091
ResetTextContentWithStyledString(ArkUI_NodeHandle node)10092 void ResetTextContentWithStyledString(ArkUI_NodeHandle node)
10093 {
10094 auto* fullImpl = GetFullImpl();
10095 fullImpl->getNodeModifiers()->getTextModifier()->resetTextContentWithStyledString(node->uiNodeHandle);
10096 }
10097
SetHalfLeading(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10098 int32_t SetHalfLeading(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10099 {
10100 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10101 if (actualSize < 0 || !InRegion(NUM_0, NUM_1, item->value[NUM_0].i32)) {
10102 return ERROR_CODE_PARAM_INVALID;
10103 }
10104 // already check in entry point.
10105 auto* fullImpl = GetFullImpl();
10106 fullImpl->getNodeModifiers()->getTextModifier()->setTextHalfLeading(
10107 node->uiNodeHandle, item->value[NUM_0].i32);
10108 return ERROR_CODE_NO_ERROR;
10109 }
10110
GetHalfLeading(ArkUI_NodeHandle node)10111 const ArkUI_AttributeItem* GetHalfLeading(ArkUI_NodeHandle node)
10112 {
10113 auto fullImpl = GetFullImpl();
10114 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextHalfLeading(node->uiNodeHandle);
10115 g_attributeItem.size = REQUIRED_ONE_PARAM;
10116 return &g_attributeItem;
10117 }
10118
ResetHalfLeading(ArkUI_NodeHandle node)10119 void ResetHalfLeading(ArkUI_NodeHandle node)
10120 {
10121 auto* fullImpl = GetFullImpl();
10122 fullImpl->getNodeModifiers()->getTextModifier()->resetTextHalfLeading(node->uiNodeHandle);
10123 }
10124
GetTextEllipsisMode(ArkUI_NodeHandle node)10125 const ArkUI_AttributeItem* GetTextEllipsisMode(ArkUI_NodeHandle node)
10126 {
10127 auto fullImpl = GetFullImpl();
10128 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextEllipsisMode(node->uiNodeHandle);
10129 g_attributeItem.size = REQUIRED_ONE_PARAM;
10130 return &g_attributeItem;
10131 }
10132
GetLineSpacing(ArkUI_NodeHandle node)10133 const ArkUI_AttributeItem* GetLineSpacing(ArkUI_NodeHandle node)
10134 {
10135 auto fullImpl = GetFullImpl();
10136 if (node->type == ARKUI_NODE_TEXT) {
10137 g_numberValues[NUM_0].f32 =
10138 fullImpl->getNodeModifiers()->getTextModifier()->getTextLineSpacing(node->uiNodeHandle);
10139 g_numberValues[NUM_0].i32 = static_cast<int32_t>(node->lengthMetricUnit);
10140 g_attributeItem.size = REQUIRED_ONE_PARAM;
10141 }
10142 return &g_attributeItem;
10143 }
10144
ResetTextEllipsisMode(ArkUI_NodeHandle node)10145 void ResetTextEllipsisMode(ArkUI_NodeHandle node)
10146 {
10147 auto* fullImpl = GetFullImpl();
10148 fullImpl->getNodeModifiers()->getTextModifier()->resetEllipsisMode(node->uiNodeHandle);
10149 }
10150
SetTextEnableDateDetector(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10151 int32_t SetTextEnableDateDetector(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10152 {
10153 auto* fullImpl = GetFullImpl();
10154 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10155 if (actualSize < 0) {
10156 return ERROR_CODE_PARAM_INVALID;
10157 }
10158 fullImpl->getNodeModifiers()->getTextModifier()->setEnableDataDetector(
10159 node->uiNodeHandle, static_cast<uint32_t>(item->value[0].i32));
10160 return ERROR_CODE_NO_ERROR;
10161 }
10162
GetTextEnableDateDetector(ArkUI_NodeHandle node)10163 const ArkUI_AttributeItem* GetTextEnableDateDetector(ArkUI_NodeHandle node)
10164 {
10165 auto fullImpl = GetFullImpl();
10166 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getEnableDataDetector(node->uiNodeHandle);
10167 g_attributeItem.size = REQUIRED_ONE_PARAM;
10168 return &g_attributeItem;
10169 }
10170
ResetTextEnableDateDetector(ArkUI_NodeHandle node)10171 void ResetTextEnableDateDetector(ArkUI_NodeHandle node)
10172 {
10173 auto* fullImpl = GetFullImpl();
10174 fullImpl->getNodeModifiers()->getTextModifier()->resetEnableDataDetector(node->uiNodeHandle);
10175 }
10176
SetTextDataDetectorConfig(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10177 int32_t SetTextDataDetectorConfig(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10178 {
10179 auto* fullImpl = GetFullImpl();
10180 ArkUI_Uint32 values[item->size];
10181 for (int i = 0; i < item->size; i++) {
10182 values[i] = item->value[i].i32;
10183 }
10184 fullImpl->getNodeModifiers()->getTextModifier()->setTextDataDetectorConfig(
10185 node->uiNodeHandle, values, item->size);
10186 return ERROR_CODE_NO_ERROR;
10187 }
10188
GetTextDataDetectorConfig(ArkUI_NodeHandle node)10189 const ArkUI_AttributeItem* GetTextDataDetectorConfig(ArkUI_NodeHandle node)
10190 {
10191 ArkUI_Int32 values[32];
10192 auto* fullImpl = GetFullImpl();
10193 auto size = fullImpl->getNodeModifiers()->getTextModifier()->getTextDataDetectorConfig(
10194 node->uiNodeHandle, &values);
10195 for (auto i = 0; i < size; i++) {
10196 g_numberValues[i].i32 = values[i];
10197 }
10198 g_attributeItem.size = size;
10199 return &g_attributeItem;
10200 }
10201
ResetTextDataDetectorConfig(ArkUI_NodeHandle node)10202 void ResetTextDataDetectorConfig(ArkUI_NodeHandle node)
10203 {
10204 auto* fullImpl = GetFullImpl();
10205 fullImpl->getNodeModifiers()->getTextModifier()->resetTextDataDetectorConfig(node->uiNodeHandle);
10206 }
10207
SetFontFeature(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10208 int32_t SetFontFeature(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10209 {
10210 if (item->string == nullptr) {
10211 return ERROR_CODE_PARAM_INVALID;
10212 }
10213 auto* fullImpl = GetFullImpl();
10214 switch (node->type) {
10215 case ARKUI_NODE_TEXT_INPUT:
10216 fullImpl->getNodeModifiers()->getTextInputModifier()->setTextInputFontFeature(
10217 node->uiNodeHandle, item->string);
10218 break;
10219 case ARKUI_NODE_TEXT:
10220 fullImpl->getNodeModifiers()->getTextModifier()->setTextFontFeature(node->uiNodeHandle, item->string);
10221 break;
10222 case ARKUI_NODE_TEXT_AREA:
10223 fullImpl->getNodeModifiers()->getTextAreaModifier()->setTextAreaFontFeature(
10224 node->uiNodeHandle, item->string);
10225 break;
10226 default:
10227 break;
10228 }
10229 return ERROR_CODE_NO_ERROR;
10230 }
10231
GetFontFeature(ArkUI_NodeHandle node)10232 const ArkUI_AttributeItem* GetFontFeature(ArkUI_NodeHandle node)
10233 {
10234 auto fullImpl = GetFullImpl();
10235 ArkUI_CharPtr feature = nullptr;
10236 switch (node->type) {
10237 case ARKUI_NODE_TEXT_INPUT:
10238 feature = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputFontFeature(node->uiNodeHandle);
10239 g_attributeItem.string = (feature != nullptr ? feature : EMPTY_STR.c_str());
10240 break;
10241 case ARKUI_NODE_TEXT:
10242 feature = fullImpl->getNodeModifiers()->getTextModifier()->getTextFontFeature(node->uiNodeHandle);
10243 g_attributeItem.string = (feature != nullptr ? feature : EMPTY_STR.c_str());
10244 break;
10245 case ARKUI_NODE_TEXT_AREA:
10246 feature = fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaFontFeature(node->uiNodeHandle);
10247 g_attributeItem.string = (feature != nullptr ? feature : EMPTY_STR.c_str());
10248 break;
10249 default:
10250 break;
10251 }
10252 return &g_attributeItem;
10253 }
10254
ResetFontFeature(ArkUI_NodeHandle node)10255 void ResetFontFeature(ArkUI_NodeHandle node)
10256 {
10257 auto* fullImpl = GetFullImpl();
10258 switch (node->type) {
10259 case ARKUI_NODE_TEXT_INPUT:
10260 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputFontFeature(node->uiNodeHandle);
10261 break;
10262 case ARKUI_NODE_TEXT:
10263 fullImpl->getNodeModifiers()->getTextModifier()->resetTextFontFeature(node->uiNodeHandle);
10264 break;
10265 case ARKUI_NODE_TEXT_AREA:
10266 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaFontFeature(node->uiNodeHandle);
10267 break;
10268 default:
10269 break;
10270 }
10271 }
ResetLineSpacing(ArkUI_NodeHandle node)10272 void ResetLineSpacing(ArkUI_NodeHandle node)
10273 {
10274 auto fullImpl = GetFullImpl();
10275 switch (node->type) {
10276 case ARKUI_NODE_TEXT:
10277 fullImpl->getNodeModifiers()->getTextModifier()->resetTextLineSpacing(node->uiNodeHandle);
10278 break;
10279 default:
10280 break;
10281 }
10282 }
10283
SetSpanContent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10284 int32_t SetSpanContent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10285 {
10286 auto* fullImpl = GetFullImpl();
10287 if (!CheckAttributeString(item)) {
10288 return ERROR_CODE_PARAM_INVALID;
10289 }
10290 fullImpl->getNodeModifiers()->getSpanModifier()->setContent(node->uiNodeHandle, item->string);
10291 return ERROR_CODE_NO_ERROR;
10292 }
10293
SetSpanTextBackgroundStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10294 int32_t SetSpanTextBackgroundStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10295 {
10296 auto* fullImpl = GetFullImpl();
10297 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10298 if (actualSize < 0) {
10299 return ERROR_CODE_PARAM_INVALID;
10300 }
10301 float radiusVals[ALLOW_SIZE_4] = { 0, 0, 0, 0 };
10302 int32_t unit = GetDefaultUnit(node, UNIT_VP);
10303 int radiusUnits[ALLOW_SIZE_4] = { unit, unit, unit, unit };
10304
10305 if (item->size == ALLOW_SIZE_2) {
10306 if (LessNotEqual(item->value[NUM_1].f32, 0.0f)) {
10307 return ERROR_CODE_PARAM_INVALID;
10308 }
10309 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
10310 radiusVals[i] = item->value[1].f32;
10311 }
10312 } else if (item->size == ALLOW_SIZE_5) {
10313 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
10314 if (LessNotEqual(item->value[i + NUM_1].f32, 0.0f)) {
10315 return ERROR_CODE_PARAM_INVALID;
10316 } else {
10317 radiusVals[i] = item->value[i + NUM_1].f32;
10318 }
10319 }
10320 } else {
10321 return ERROR_CODE_PARAM_INVALID;
10322 }
10323
10324 fullImpl->getNodeModifiers()->getSpanModifier()->setSpanTextBackgroundStyle(
10325 node->uiNodeHandle, item->value[NUM_0].u32, radiusVals, radiusUnits, NUM_4);
10326 return ERROR_CODE_NO_ERROR;
10327 }
10328
SetVerticalAlign(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10329 int32_t SetVerticalAlign(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10330 {
10331 auto* fullImpl = GetFullImpl();
10332 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10333 if (actualSize < 0) {
10334 return ERROR_CODE_PARAM_INVALID;
10335 }
10336 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_IMAGE_SPAN_ALIGNMENT_TOP)) {
10337 return ERROR_CODE_PARAM_INVALID;
10338 }
10339 fullImpl->getNodeModifiers()->getImageSpanModifier()->setImageSpanVerticalAlign(
10340 node->uiNodeHandle, IMAGE_SPAN_ALIGNMENT_ARRAY[item->value[0].i32]);
10341 return ERROR_CODE_NO_ERROR;
10342 }
10343
SetPixelMapSrc(ArkUI_NodeHandle node,const std::shared_ptr<Napi::DrawableDescriptor> & descriptor)10344 int32_t SetPixelMapSrc(ArkUI_NodeHandle node, const std::shared_ptr<Napi::DrawableDescriptor>& descriptor)
10345 {
10346 auto* fullImpl = GetFullImpl();
10347 fullImpl->getNodeModifiers()->getImageModifier()->setPixelMap(node->uiNodeHandle, descriptor.get());
10348 return ERROR_CODE_NO_ERROR;
10349 }
10350
SetPixelMapArraySrc(ArkUI_NodeHandle node,const std::shared_ptr<Napi::AnimatedDrawableDescriptor> & descriptor)10351 int32_t SetPixelMapArraySrc(ArkUI_NodeHandle node, const std::shared_ptr<Napi::AnimatedDrawableDescriptor>& descriptor)
10352 {
10353 auto* fullImpl = GetFullImpl();
10354 fullImpl->getNodeModifiers()->getImageModifier()->setPixelMapArray(node->uiNodeHandle, descriptor.get());
10355 return ERROR_CODE_NO_ERROR;
10356 }
10357
SetResourceSrc(ArkUI_NodeHandle node,const std::shared_ptr<ArkUI_Resource> & resource)10358 int32_t SetResourceSrc(ArkUI_NodeHandle node, const std::shared_ptr<ArkUI_Resource>& resource)
10359 {
10360 auto* fullImpl = GetFullImpl();
10361 fullImpl->getNodeModifiers()->getImageModifier()->setResourceSrc(node->uiNodeHandle, resource.get());
10362 return ERROR_CODE_NO_ERROR;
10363 }
10364
SetImageSrc(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10365 int32_t SetImageSrc(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10366 {
10367 bool isString = CheckAttributeString(item);
10368 bool isObject = CheckAttributeObject(item);
10369 if ((isString && isObject) || (!isString && !isObject)) {
10370 return ERROR_CODE_PARAM_INVALID;
10371 }
10372 if (isString) {
10373 auto* fullImpl = GetFullImpl();
10374 fullImpl->getNodeModifiers()->getImageModifier()->setSrc(node->uiNodeHandle, item->string);
10375 return ERROR_CODE_NO_ERROR;
10376 }
10377
10378 auto drawableDescriptor = reinterpret_cast<ArkUI_DrawableDescriptor*>(item->object);
10379 if (!drawableDescriptor) {
10380 return ERROR_CODE_PARAM_INVALID;
10381 }
10382 node->drawableDescriptor = drawableDescriptor;
10383 if (!drawableDescriptor->drawableDescriptor && !drawableDescriptor->resource &&
10384 !drawableDescriptor->animatedDrawableDescriptor) {
10385 return ERROR_CODE_PARAM_INVALID;
10386 }
10387 if (drawableDescriptor->drawableDescriptor) {
10388 return SetPixelMapSrc(node, drawableDescriptor->drawableDescriptor);
10389 } else if (drawableDescriptor->animatedDrawableDescriptor) {
10390 return SetPixelMapArraySrc(node, drawableDescriptor->animatedDrawableDescriptor);
10391 } else {
10392 return SetResourceSrc(node, drawableDescriptor->resource);
10393 }
10394 }
10395
SetImageSpanSrc(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10396 int32_t SetImageSpanSrc(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10397 {
10398 auto* fullImpl = GetFullImpl();
10399 if (CheckAttributeString(item)) {
10400 fullImpl->getNodeModifiers()->getImageModifier()->setSrc(node->uiNodeHandle, item->string);
10401 return ERROR_CODE_NO_ERROR;
10402 } else {
10403 return SetImageSrc(node, item);
10404 }
10405 }
10406
SetImageSpanBaselineOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10407 int32_t SetImageSpanBaselineOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10408 {
10409 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10410 if (actualSize < 0) {
10411 return ERROR_CODE_PARAM_INVALID;
10412 }
10413 // already check in entry point.
10414 auto* fullImpl = GetFullImpl();
10415 fullImpl->getNodeModifiers()->getImageSpanModifier()->setImageSpanBaselineOffset(
10416 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_FP));
10417 return ERROR_CODE_NO_ERROR;
10418 }
10419
ResetImageSpanBaselineOffset(ArkUI_NodeHandle node)10420 void ResetImageSpanBaselineOffset(ArkUI_NodeHandle node)
10421 {
10422 // already check in entry point.
10423 auto* fullImpl = GetFullImpl();
10424 fullImpl->getNodeModifiers()->getImageSpanModifier()->
10425 resetImageSpanBaselineOffset(node->uiNodeHandle);
10426 }
10427
GetImageSpanBaselineOffset(ArkUI_NodeHandle node)10428 const ArkUI_AttributeItem* GetImageSpanBaselineOffset(ArkUI_NodeHandle node)
10429 {
10430 // already check in entry point.
10431 auto* fullImpl = GetFullImpl();
10432 int32_t unit = GetDefaultUnit(node, UNIT_FP);
10433 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getImageSpanModifier()->
10434 getImageSpanBaselineOffset(node->uiNodeHandle, unit);
10435 g_attributeItem.size = REQUIRED_ONE_PARAM;
10436 return &g_attributeItem;
10437 }
10438
SetObjectFit(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10439 int32_t SetObjectFit(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10440 {
10441 auto* fullImpl = GetFullImpl();
10442 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10443 if (actualSize < 0) {
10444 return ERROR_CODE_PARAM_INVALID;
10445 }
10446 if (item->value[0].i32 < 0 || item->value[0].i32 >
10447 static_cast<int32_t>(ARKUI_OBJECT_FIT_NONE_AND_ALIGN_BOTTOM_END)) {
10448 return ERROR_CODE_PARAM_INVALID;
10449 }
10450 fullImpl->getNodeModifiers()->getImageModifier()->setObjectFit(
10451 node->uiNodeHandle, OBJECT_FIT_ARRAY[item->value[0].i32]);
10452 return ERROR_CODE_NO_ERROR;
10453 }
10454
SetInterpolation(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10455 int32_t SetInterpolation(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10456 {
10457 auto* fullImpl = GetFullImpl();
10458 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10459 if (actualSize < 0) {
10460 return ERROR_CODE_PARAM_INVALID;
10461 }
10462 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_IMAGE_INTERPOLATION_HIGH)) {
10463 return ERROR_CODE_PARAM_INVALID;
10464 }
10465 fullImpl->getNodeModifiers()->getImageModifier()->setImageInterpolation(node->uiNodeHandle, item->value[0].i32);
10466 return ERROR_CODE_NO_ERROR;
10467 }
10468
SetObjectRepeat(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10469 int32_t SetObjectRepeat(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10470 {
10471 auto* fullImpl = GetFullImpl();
10472 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10473 if (actualSize < 0) {
10474 return ERROR_CODE_PARAM_INVALID;
10475 }
10476 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_IMAGE_REPEAT_XY)) {
10477 return ERROR_CODE_PARAM_INVALID;
10478 }
10479 fullImpl->getNodeModifiers()->getImageModifier()->setObjectRepeat(node->uiNodeHandle, item->value[0].i32);
10480 return ERROR_CODE_NO_ERROR;
10481 }
10482
SetColorFilter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10483 int32_t SetColorFilter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10484 {
10485 auto* fullImpl = GetFullImpl();
10486 auto actualSize = CheckAttributeItemArray(item, REQUIRED_TWENTY_PARAM);
10487 bool isObject = CheckAttributeObject(item);
10488 if ((actualSize < 0 && !isObject) || (actualSize > 0 && isObject)) {
10489 return ERROR_CODE_PARAM_INVALID;
10490 }
10491 if (isObject) {
10492 fullImpl->getNodeModifiers()->getImageModifier()->setDrawingColorFilter(node->uiNodeHandle, item->object);
10493 return ERROR_CODE_NO_ERROR;
10494 }
10495 std::vector<float> colorFloatArray;
10496 for (size_t i = 0; i < static_cast<uint32_t>(actualSize) && i < REQUIRED_TWENTY_PARAM; i++) {
10497 colorFloatArray.emplace_back(item->value[i].f32);
10498 }
10499 fullImpl->getNodeModifiers()->getImageModifier()->setColorFilter(
10500 node->uiNodeHandle, &colorFloatArray[0], colorFloatArray.size());
10501 return ERROR_CODE_NO_ERROR;
10502 }
10503
SetAutoResize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10504 int32_t SetAutoResize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10505 {
10506 auto* fullImpl = GetFullImpl();
10507 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10508 if (actualSize < 0) {
10509 return ERROR_CODE_PARAM_INVALID;
10510 }
10511 fullImpl->getNodeModifiers()->getImageModifier()->setAutoResize(
10512 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
10513 return ERROR_CODE_NO_ERROR;
10514 }
10515
SetAlt(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10516 int32_t SetAlt(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10517 {
10518 if (!item || (!item->string && !item->object)) {
10519 return ERROR_CODE_PARAM_INVALID;
10520 }
10521 auto* fullImpl = GetFullImpl();
10522 auto drawableDescriptor = reinterpret_cast<ArkUI_DrawableDescriptor*>(item->object);
10523 ArkUIImageSourceInfo imageInfo;
10524 imageInfo.url = item->string;
10525 node->altDrawableDescriptor = drawableDescriptor;
10526 if (drawableDescriptor && drawableDescriptor->resource) {
10527 imageInfo.resource = drawableDescriptor->resource.get();
10528 } else if (drawableDescriptor && drawableDescriptor->drawableDescriptor) {
10529 imageInfo.pixelMap = drawableDescriptor->drawableDescriptor.get();
10530 } else {
10531 node->altDrawableDescriptor = nullptr;
10532 if (!item->string) {
10533 return ERROR_CODE_PARAM_INVALID;
10534 }
10535 }
10536 imageInfo.pixelMapArray = nullptr;
10537 fullImpl->getNodeModifiers()->getImageModifier()->setAltSourceInfo(node->uiNodeHandle, &imageInfo);
10538 return ERROR_CODE_NO_ERROR;
10539 }
10540
SetResizable(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10541 int32_t SetResizable(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10542 {
10543 auto actualSize = CheckAttributeItemArray(item, NUM_4);
10544 if (actualSize < 0) {
10545 return ERROR_CODE_PARAM_INVALID;
10546 }
10547 auto* fullImpl = GetFullImpl();
10548 fullImpl->getNodeModifiers()->getImageModifier()->setImageResizable(
10549 node->uiNodeHandle, item->value[NUM_0].f32, item->value[NUM_1].f32,
10550 item->value[NUM_2].f32, item->value[NUM_3].f32);
10551 return ERROR_CODE_NO_ERROR;
10552 }
10553
ResetResizable(ArkUI_NodeHandle node)10554 void ResetResizable(ArkUI_NodeHandle node)
10555 {
10556 auto* fullImpl = GetFullImpl();
10557 fullImpl->getNodeModifiers()->getImageModifier()->setImageResizable(
10558 node->uiNodeHandle, 0.0f, 0.0f,
10559 0.0f, 0.0f);
10560 }
10561
GetResizable(ArkUI_NodeHandle node)10562 const ArkUI_AttributeItem* GetResizable(ArkUI_NodeHandle node)
10563 {
10564 auto fullImpl = GetFullImpl();
10565 std::array<float, NUM_4> resizableArray;
10566 fullImpl->getNodeModifiers()->getImageModifier()->getImageResizable(
10567 node->uiNodeHandle, &resizableArray[0], NUM_4);
10568 g_numberValues[NUM_0].f32 = resizableArray[NUM_0];
10569 g_numberValues[NUM_1].f32 = resizableArray[NUM_1];
10570 g_numberValues[NUM_2].f32 = resizableArray[NUM_2];
10571 g_numberValues[NUM_3].f32 = resizableArray[NUM_3];
10572 g_attributeItem.size = NUM_4;
10573 return &g_attributeItem;
10574 }
10575
SetImageDraggable(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10576 int32_t SetImageDraggable(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10577 {
10578 auto* fullImpl = GetFullImpl();
10579 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10580 if (actualSize < 0) {
10581 return ERROR_CODE_PARAM_INVALID;
10582 }
10583 fullImpl->getNodeModifiers()->getImageModifier()->setImageDraggable(
10584 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
10585 return ERROR_CODE_NO_ERROR;
10586 }
10587
SetRenderMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10588 int32_t SetRenderMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10589 {
10590 auto* fullImpl = GetFullImpl();
10591 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10592 if (actualSize < 0) {
10593 return ERROR_CODE_PARAM_INVALID;
10594 }
10595 if (item->value[0].i32 < 0 || item->value[0].i32 > static_cast<int32_t>(ARKUI_IMAGE_RENDER_MODE_TEMPLATE)) {
10596 return ERROR_CODE_PARAM_INVALID;
10597 }
10598 fullImpl->getNodeModifiers()->getImageModifier()->setRenderMode(node->uiNodeHandle, item->value[0].i32);
10599 return ERROR_CODE_NO_ERROR;
10600 }
10601
ResetRenderMode(ArkUI_NodeHandle node)10602 void ResetRenderMode(ArkUI_NodeHandle node)
10603 {
10604 auto* fullImpl = GetFullImpl();
10605 fullImpl->getNodeModifiers()->getImageModifier()->resetRenderMode(node->uiNodeHandle);
10606 }
10607
GetRenderMode(ArkUI_NodeHandle node)10608 const ArkUI_AttributeItem* GetRenderMode(ArkUI_NodeHandle node)
10609 {
10610 auto fullImpl = GetFullImpl();
10611 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getImageModifier()->getRenderMode(node->uiNodeHandle);
10612 g_attributeItem.size = REQUIRED_ONE_PARAM;
10613 return &g_attributeItem;
10614 }
10615
SetFitOriginalSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10616 int32_t SetFitOriginalSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10617 {
10618 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10619 if (actualSize < 0) {
10620 return ERROR_CODE_PARAM_INVALID;
10621 }
10622 if (item->value[0].i32 < DEFAULT_FALSE || item->value[0].i32 > DEFAULT_TRUE) {
10623 return ERROR_CODE_PARAM_INVALID;
10624 }
10625 auto* fullImpl = GetFullImpl();
10626 fullImpl->getNodeModifiers()->getImageModifier()->setFitOriginalSize(
10627 node->uiNodeHandle, static_cast<bool>(item->value[0].i32));
10628 return ERROR_CODE_NO_ERROR;
10629 }
10630
ResetFitOriginalSize(ArkUI_NodeHandle node)10631 void ResetFitOriginalSize(ArkUI_NodeHandle node)
10632 {
10633 auto* fullImpl = GetFullImpl();
10634 fullImpl->getNodeModifiers()->getImageModifier()->resetFitOriginalSize(node->uiNodeHandle);
10635 }
10636
GetFitOriginalSize(ArkUI_NodeHandle node)10637 const ArkUI_AttributeItem* GetFitOriginalSize(ArkUI_NodeHandle node)
10638 {
10639 auto* fullImpl = GetFullImpl();
10640 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getImageModifier()->getFitOriginalSize(node->uiNodeHandle);
10641 g_attributeItem.size = REQUIRED_ONE_PARAM;
10642 return &g_attributeItem;
10643 }
10644
SetFillColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10645 int32_t SetFillColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10646 {
10647 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10648 if (actualSize < 0) {
10649 return ERROR_CODE_PARAM_INVALID;
10650 }
10651 auto* fullImpl = GetFullImpl();
10652 fullImpl->getNodeModifiers()->getImageModifier()->setFillColor(
10653 node->uiNodeHandle, static_cast<ArkUI_Uint32>(item->value[0].u32));
10654 return ERROR_CODE_NO_ERROR;
10655 }
10656
ResetFillColor(ArkUI_NodeHandle node)10657 void ResetFillColor(ArkUI_NodeHandle node)
10658 {
10659 auto* fullImpl = GetFullImpl();
10660 fullImpl->getNodeModifiers()->getImageModifier()->resetFillColor(node->uiNodeHandle);
10661 }
10662
GetFillColor(ArkUI_NodeHandle node)10663 const ArkUI_AttributeItem* GetFillColor(ArkUI_NodeHandle node)
10664 {
10665 auto* fullImpl = GetFullImpl();
10666 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getImageModifier()->getFillColor(node->uiNodeHandle);
10667 g_attributeItem.size = REQUIRED_ONE_PARAM;
10668 return &g_attributeItem;
10669 }
10670
SetHintRadius(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10671 int32_t SetHintRadius(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10672 {
10673 auto* fullImpl = GetFullImpl();
10674 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10675 if (actualSize < 0) {
10676 return ERROR_CODE_PARAM_INVALID;
10677 }
10678 if (LessNotEqual(item->value[0].f32, 0.0f)) {
10679 return ERROR_CODE_PARAM_INVALID;
10680 }
10681 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->setHintRadius(
10682 node->uiNodeHandle, item->value[0].f32, GetDefaultUnit(node, UNIT_VP));
10683 return ERROR_CODE_NO_ERROR;
10684 }
10685
GetHintRadius(ArkUI_NodeHandle node)10686 const ArkUI_AttributeItem* GetHintRadius(ArkUI_NodeHandle node)
10687 {
10688 auto fullImpl = GetFullImpl();
10689 g_numberValues[0].f32 =
10690 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->getHintRadius(node->uiNodeHandle);
10691 g_attributeItem.size = REQUIRED_ONE_PARAM;
10692 return &g_attributeItem;
10693 }
10694
SetSelectedDate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10695 int32_t SetSelectedDate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10696 {
10697 auto* fullImpl = GetFullImpl();
10698 auto actualSize = CheckAttributeItemArray(item, REQUIRED_THREE_PARAM);
10699 if (actualSize < 0) {
10700 return ERROR_CODE_PARAM_INVALID;
10701 }
10702 if (!IsValidDate(item->value[SELECTED_YEAR_INDEX].u32,
10703 item->value[SELECTED_MONTH_INDEX].u32, item->value[SELECTED_DAY_INDEX].u32)) {
10704 return ERROR_CODE_PARAM_INVALID;
10705 }
10706 uint32_t selectedYear = item->value[SELECTED_YEAR_INDEX].u32;
10707 uint32_t selectedMonth = item->value[SELECTED_MONTH_INDEX].u32;
10708 uint32_t selectedDay = item->value[SELECTED_DAY_INDEX].u32;
10709 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->setSelectDate(
10710 node->uiNodeHandle, selectedYear, selectedMonth, selectedDay);
10711 return ERROR_CODE_NO_ERROR;
10712 }
10713
GetSelectedDate(ArkUI_NodeHandle node)10714 const ArkUI_AttributeItem* GetSelectedDate(ArkUI_NodeHandle node)
10715 {
10716 auto fullImpl = GetFullImpl();
10717 auto selectedDate = fullImpl->getNodeModifiers()->getCalendarPickerModifier()->getSelectedDate(node->uiNodeHandle);
10718 g_numberValues[SELECTED_YEAR_INDEX].u32 = selectedDate.year;
10719 g_numberValues[SELECTED_MONTH_INDEX].u32 = selectedDate.month;
10720 g_numberValues[SELECTED_DAY_INDEX].u32 = selectedDate.day;
10721 g_attributeItem.size = REQUIRED_THREE_PARAM;
10722 return &g_attributeItem;
10723 }
10724
SetEdgeAlignment(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10725 int32_t SetEdgeAlignment(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10726 {
10727 auto* fullImpl = GetFullImpl();
10728 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
10729 if (actualSize < 0) {
10730 return ERROR_CODE_PARAM_INVALID;
10731 }
10732 if (EDGE_TYPE_INDEX < actualSize &&
10733 (item->value[EDGE_TYPE_INDEX].i32 < static_cast<int32_t>(ARKUI_CALENDAR_ALIGNMENT_START) ||
10734 item->value[EDGE_TYPE_INDEX].i32 > static_cast<int32_t>(ARKUI_CALENDAR_ALIGNMENT_END))) {
10735 return ERROR_CODE_PARAM_INVALID;
10736 }
10737 int32_t defaultAlignment = 0;
10738 if (EDGE_TYPE_INDEX < actualSize) {
10739 defaultAlignment = item->value[EDGE_TYPE_INDEX].i32;
10740 }
10741 std::vector<float> sizeArray;
10742 float xOffset = 0.0f;
10743 if (EDGE_OFFSET_X_INDEX < actualSize) {
10744 xOffset = item->value[EDGE_OFFSET_X_INDEX].f32;
10745 }
10746 sizeArray.emplace_back(xOffset);
10747 float yOffset = 0.0f;
10748 if (EDGE_OFFSET_Y_INDEX < actualSize) {
10749 yOffset = item->value[EDGE_OFFSET_Y_INDEX].f32;
10750 }
10751 sizeArray.emplace_back(yOffset);
10752 int32_t unit = GetDefaultUnit(node, UNIT_VP);
10753 std::vector<int32_t> unitArray = { unit, unit };
10754 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->setEdgeAlign(
10755 node->uiNodeHandle, &sizeArray[0], &unitArray[0], static_cast<int32_t>(sizeArray.size()), defaultAlignment);
10756 return ERROR_CODE_NO_ERROR;
10757 }
10758
GetEdgeAlignment(ArkUI_NodeHandle node)10759 const ArkUI_AttributeItem* GetEdgeAlignment(ArkUI_NodeHandle node)
10760 {
10761 auto fullImpl = GetFullImpl();
10762 auto edgeAlign = fullImpl->getNodeModifiers()->getCalendarPickerModifier()->getEdgeAlign(node->uiNodeHandle);
10763 g_numberValues[EDGE_TYPE_INDEX].i32 = edgeAlign.alignType;
10764 g_numberValues[EDGE_OFFSET_X_INDEX].f32 = edgeAlign.offsetX;
10765 g_numberValues[EDGE_OFFSET_Y_INDEX].f32 = edgeAlign.offsetY;
10766 g_attributeItem.size = REQUIRED_THREE_PARAM;
10767 return &g_attributeItem;
10768 }
10769
SetCalendarPickerTextStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)10770 int32_t SetCalendarPickerTextStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
10771 {
10772 auto* fullImpl = GetFullImpl();
10773 auto actualSize = CheckAttributeItemArray(item, 0);
10774 if (actualSize < 0) {
10775 return ERROR_CODE_PARAM_INVALID;
10776 }
10777 if (CALENDAR_PICKER_FONT_SIZE_INDEX < actualSize &&
10778 LessNotEqual(item->value[CALENDAR_PICKER_FONT_SIZE_INDEX].f32, 0.0f)) {
10779 return ERROR_CODE_PARAM_INVALID;
10780 }
10781 if (CALENDAR_PICKER_FONT_WEIGHT_INDEX < actualSize &&
10782 (item->value[CALENDAR_PICKER_FONT_WEIGHT_INDEX].i32 < 0 ||
10783 item->value[CALENDAR_PICKER_FONT_WEIGHT_INDEX].i32 > static_cast<int32_t>(ARKUI_FONT_WEIGHT_REGULAR))) {
10784 return ERROR_CODE_PARAM_INVALID;
10785 }
10786 uint32_t fontColor = Color::BLACK.GetValue();
10787 if (CALENDAR_PICKER_FONT_COLOR_INDEX < actualSize) {
10788 fontColor = item->value[CALENDAR_PICKER_FONT_COLOR_INDEX].u32;
10789 }
10790 float fontSize = 0.0f;
10791 std::vector<float> fontSizeArray;
10792 if (CALENDAR_PICKER_FONT_SIZE_INDEX < actualSize) {
10793 fontSize = item->value[CALENDAR_PICKER_FONT_SIZE_INDEX].f32;
10794 }
10795 int32_t unit = GetDefaultUnit(node, UNIT_VP);
10796 fontSizeArray.emplace_back(fontSize);
10797 fontSizeArray.emplace_back(static_cast<float>(unit));
10798 int32_t fontWeight = 0;
10799 if (CALENDAR_PICKER_FONT_WEIGHT_INDEX < actualSize) {
10800 fontWeight = item->value[CALENDAR_PICKER_FONT_WEIGHT_INDEX].i32;
10801 }
10802 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->setTextStyleWithWeightEnum(
10803 node->uiNodeHandle, fontColor, fontSize, unit, fontWeight);
10804 return ERROR_CODE_NO_ERROR;
10805 }
10806
GetCalendarPickerTextStyle(ArkUI_NodeHandle node)10807 const ArkUI_AttributeItem* GetCalendarPickerTextStyle(ArkUI_NodeHandle node)
10808 {
10809 auto fullImpl = GetFullImpl();
10810 auto textStyle =
10811 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->getCalendarPickerTextStyle(node->uiNodeHandle);
10812 g_numberValues[CALENDAR_PICKER_FONT_COLOR_INDEX].u32 = textStyle.fontColor;
10813 g_numberValues[CALENDAR_PICKER_FONT_SIZE_INDEX].f32 = textStyle.fontSize;
10814 g_numberValues[CALENDAR_PICKER_FONT_WEIGHT_INDEX].i32 = textStyle.fontWeight;
10815 g_attributeItem.size = REQUIRED_THREE_PARAM;
10816 return &g_attributeItem;
10817 }
10818
ResetHintRadius(ArkUI_NodeHandle node)10819 void ResetHintRadius(ArkUI_NodeHandle node)
10820 {
10821 auto* fullImpl = GetFullImpl();
10822 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->setHintRadius(
10823 node->uiNodeHandle, DEFAULT_HINT_RADIUS, UNIT_VP);
10824 }
10825
ResetSelectedDate(ArkUI_NodeHandle node)10826 void ResetSelectedDate(ArkUI_NodeHandle node)
10827 {
10828 auto* fullImpl = GetFullImpl();
10829 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->resetSelectDate(node->uiNodeHandle);
10830 }
10831
ResetEdgeAlignment(ArkUI_NodeHandle node)10832 void ResetEdgeAlignment(ArkUI_NodeHandle node)
10833 {
10834 auto* fullImpl = GetFullImpl();
10835 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->resetEdgeAlign(node->uiNodeHandle);
10836 }
10837
ResetCalendarPickerTextStyle(ArkUI_NodeHandle node)10838 void ResetCalendarPickerTextStyle(ArkUI_NodeHandle node)
10839 {
10840 auto* fullImpl = GetFullImpl();
10841 fullImpl->getNodeModifiers()->getCalendarPickerModifier()->resetTextStyle(node->uiNodeHandle);
10842 }
10843
ResetBackgroundImageSize(ArkUI_NodeHandle node)10844 void ResetBackgroundImageSize(ArkUI_NodeHandle node)
10845 {
10846 auto* fullImpl = GetFullImpl();
10847 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackgroundImageSize(node->uiNodeHandle);
10848 }
10849
ResetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node)10850 void ResetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node)
10851 {
10852 ResetBackgroundImageSize(node);
10853 }
10854
ResetBackgroundBlurStyle(ArkUI_NodeHandle node)10855 void ResetBackgroundBlurStyle(ArkUI_NodeHandle node)
10856 {
10857 auto* fullImpl = GetFullImpl();
10858 fullImpl->getNodeModifiers()->getCommonModifier()->resetBackgroundBlurStyle(node->uiNodeHandle);
10859 }
10860
ResetTransformCenter(ArkUI_NodeHandle node)10861 void ResetTransformCenter(ArkUI_NodeHandle node)
10862 {
10863 auto* fullImpl = GetFullImpl();
10864 CalcDimension centerX(HALF, DimensionUnit::PERCENT);
10865 CalcDimension centerY(HALF, DimensionUnit::PERCENT);
10866 CalcDimension centerZ(0, DimensionUnit::VP);
10867 fullImpl->getNodeModifiers()->getCommonModifier()->setTransitionCenter(node->uiNodeHandle, centerX.Value(),
10868 static_cast<int32_t>(centerX.Unit()), centerY.Value(), static_cast<int32_t>(centerY.Unit()), centerZ.Value(),
10869 static_cast<int32_t>(centerZ.Unit()));
10870 }
10871
ResetOpacityTransition(ArkUI_NodeHandle node)10872 void ResetOpacityTransition(ArkUI_NodeHandle node)
10873 {
10874 auto* fullImpl = GetFullImpl();
10875 ArkUIAnimationOptionType animationOption;
10876 ResetAnimation(animationOption);
10877 fullImpl->getNodeModifiers()->getCommonModifier()->setOpacityTransition(
10878 node->uiNodeHandle, DEFAULT_OPACITY, &animationOption);
10879 }
10880
ResetRotateTransition(ArkUI_NodeHandle node)10881 void ResetRotateTransition(ArkUI_NodeHandle node)
10882 {
10883 auto* fullImpl = GetFullImpl();
10884 std::array<float, ARRAY_SIZE> rotateArray;
10885 ArkUIAnimationOptionType animationOption;
10886 ResetAnimation(animationOption);
10887 fullImpl->getNodeModifiers()->getCommonModifier()->setRotateTransition(
10888 node->uiNodeHandle, &rotateArray[0], ARRAY_SIZE, 0.0f, 0.0f, &animationOption);
10889 }
10890
ResetScaleTransition(ArkUI_NodeHandle node)10891 void ResetScaleTransition(ArkUI_NodeHandle node)
10892 {
10893 auto* fullImpl = GetFullImpl();
10894 std::array<float, ARRAY_SIZE> scaleFloatArray;
10895 ArkUIAnimationOptionType animationOption;
10896 ResetAnimation(animationOption);
10897 fullImpl->getNodeModifiers()->getCommonModifier()->setScaleTransition(
10898 node->uiNodeHandle, &scaleFloatArray[0], scaleFloatArray.size(), &animationOption);
10899 }
10900
ResetTranslateTransition(ArkUI_NodeHandle node)10901 void ResetTranslateTransition(ArkUI_NodeHandle node)
10902 {
10903 auto* fullImpl = GetFullImpl();
10904 std::array<float, ARRAY_SIZE> scaleFloatArray;
10905 ArkUIAnimationOptionType animationOption;
10906 ResetAnimation(animationOption);
10907 fullImpl->getNodeModifiers()->getCommonModifier()->setScaleTransition(
10908 node->uiNodeHandle, &scaleFloatArray[0], scaleFloatArray.size(), &animationOption);
10909 fullImpl->getNodeModifiers()->getCommonModifier()->setTranslateTransition(node->uiNodeHandle, 0.0f,
10910 UNIT_VP, 0.0f, UNIT_VP, 0.0f,
10911 UNIT_VP, &animationOption);
10912 }
10913
ResetMoveTransition(ArkUI_NodeHandle node)10914 void ResetMoveTransition(ArkUI_NodeHandle node)
10915 {
10916 auto* fullImpl = GetFullImpl();
10917 ArkUIAnimationOptionType animationOption;
10918 ResetAnimation(animationOption);
10919 fullImpl->getNodeModifiers()->getCommonModifier()->setMoveTransition(
10920 node->uiNodeHandle, ARKUI_TRANSITION_EDGE_TOP, &animationOption);
10921 }
10922
ResetOffset(ArkUI_NodeHandle node)10923 void ResetOffset(ArkUI_NodeHandle node)
10924 {
10925 auto* fullImpl = GetFullImpl();
10926 fullImpl->getNodeModifiers()->getCommonModifier()->resetOffset(node->uiNodeHandle);
10927 }
10928
ResetMarkAnchor(ArkUI_NodeHandle node)10929 void ResetMarkAnchor(ArkUI_NodeHandle node)
10930 {
10931 auto* fullImpl = GetFullImpl();
10932 fullImpl->getNodeModifiers()->getCommonModifier()->resetMarkAnchor(node->uiNodeHandle);
10933 }
10934
ResetTextContent(ArkUI_NodeHandle node)10935 void ResetTextContent(ArkUI_NodeHandle node)
10936 {
10937 auto* fullImpl = GetFullImpl();
10938 fullImpl->getNodeModifiers()->getTextModifier()->setContent(node->uiNodeHandle, "");
10939 }
10940
ResetLineHeight(ArkUI_NodeHandle node)10941 void ResetLineHeight(ArkUI_NodeHandle node)
10942 {
10943 auto fullImpl = GetFullImpl();
10944 switch (node->type) {
10945 case ARKUI_NODE_TEXT:
10946 fullImpl->getNodeModifiers()->getTextModifier()->resetTextLineHeight(node->uiNodeHandle);
10947 break;
10948 case ARKUI_NODE_SPAN:
10949 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanLineHeight(node->uiNodeHandle);
10950 break;
10951 case ARKUI_NODE_TEXT_INPUT:
10952 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputLineHeight(node->uiNodeHandle);
10953 break;
10954 case ARKUI_NODE_TEXT_AREA:
10955 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaLineHeight(node->uiNodeHandle);
10956 break;
10957 default:
10958 break;
10959 }
10960 }
10961
ResetDecoration(ArkUI_NodeHandle node)10962 void ResetDecoration(ArkUI_NodeHandle node)
10963 {
10964 auto fullImpl = GetFullImpl();
10965 switch (node->type) {
10966 case ARKUI_NODE_SPAN:
10967 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanDecoration(node->uiNodeHandle);
10968 break;
10969 case ARKUI_NODE_TEXT:
10970 fullImpl->getNodeModifiers()->getTextModifier()->resetTextDecoration(node->uiNodeHandle);
10971 break;
10972 default:
10973 break;
10974 }
10975 }
10976
ResetTextCase(ArkUI_NodeHandle node)10977 void ResetTextCase(ArkUI_NodeHandle node)
10978 {
10979 auto fullImpl = GetFullImpl();
10980 switch (node->type) {
10981 case ARKUI_NODE_SPAN:
10982 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanTextCase(node->uiNodeHandle);
10983 break;
10984 case ARKUI_NODE_TEXT:
10985 fullImpl->getNodeModifiers()->getTextModifier()->resetTextCase(node->uiNodeHandle);
10986 break;
10987 default:
10988 break;
10989 }
10990 }
10991
ResetLetterSpacing(ArkUI_NodeHandle node)10992 void ResetLetterSpacing(ArkUI_NodeHandle node)
10993 {
10994 auto fullImpl = GetFullImpl();
10995 switch (node->type) {
10996 case ARKUI_NODE_SPAN:
10997 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanLetterSpacing(node->uiNodeHandle);
10998 break;
10999 case ARKUI_NODE_TEXT:
11000 fullImpl->getNodeModifiers()->getTextModifier()->resetTextLetterSpacing(node->uiNodeHandle);
11001 break;
11002 case ARKUI_NODE_TEXT_INPUT:
11003 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputLetterSpacing(
11004 node->uiNodeHandle);
11005 break;
11006 case ARKUI_NODE_TEXT_AREA:
11007 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaLetterSpacing(
11008 node->uiNodeHandle);
11009 break;
11010 default:
11011 break;
11012 }
11013 }
11014
ResetMaxLines(ArkUI_NodeHandle node)11015 void ResetMaxLines(ArkUI_NodeHandle node)
11016 {
11017 auto fullImpl = GetFullImpl();
11018 switch (node->type) {
11019 case ARKUI_NODE_TEXT:
11020 fullImpl->getNodeModifiers()->getTextModifier()->resetTextMaxLines(node->uiNodeHandle);
11021 break;
11022 case ARKUI_NODE_TEXT_INPUT:
11023 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputMaxLines(node->uiNodeHandle);
11024 break;
11025 case ARKUI_NODE_TEXT_AREA:
11026 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaMaxLines(node->uiNodeHandle);
11027 break;
11028 default:
11029 break;
11030 }
11031 }
11032
ResetTextAlign(ArkUI_NodeHandle node)11033 void ResetTextAlign(ArkUI_NodeHandle node)
11034 {
11035 auto fullImpl = GetFullImpl();
11036 switch (node->type) {
11037 case ARKUI_NODE_TEXT_INPUT:
11038 fullImpl->getNodeModifiers()->getTextInputModifier()->resetTextInputTextAlign(node->uiNodeHandle);
11039 break;
11040 case ARKUI_NODE_TEXT:
11041 fullImpl->getNodeModifiers()->getTextModifier()->resetTextAlign(node->uiNodeHandle);
11042 break;
11043 case ARKUI_NODE_TEXT_AREA:
11044 fullImpl->getNodeModifiers()->getTextAreaModifier()->resetTextAreaTextAlign(node->uiNodeHandle);
11045 break;
11046 default:
11047 break;
11048 }
11049 }
11050
ResetTextOverflow(ArkUI_NodeHandle node)11051 void ResetTextOverflow(ArkUI_NodeHandle node)
11052 {
11053 auto fullImpl = GetFullImpl();
11054 fullImpl->getNodeModifiers()->getTextModifier()->resetTextOverflow(node->uiNodeHandle);
11055 }
11056
ResetSpanContent(ArkUI_NodeHandle node)11057 void ResetSpanContent(ArkUI_NodeHandle node)
11058 {
11059 auto fullImpl = GetFullImpl();
11060 fullImpl->getNodeModifiers()->getSpanModifier()->setContent(node->uiNodeHandle, "");
11061 }
11062
ResetSpanTextBackgroundStyle(ArkUI_NodeHandle node)11063 void ResetSpanTextBackgroundStyle(ArkUI_NodeHandle node)
11064 {
11065 auto fullImpl = GetFullImpl();
11066 fullImpl->getNodeModifiers()->getSpanModifier()->resetSpanTextBackgroundStyle(node->uiNodeHandle);
11067 }
11068
ResetImageSpanSrc(ArkUI_NodeHandle node)11069 void ResetImageSpanSrc(ArkUI_NodeHandle node)
11070 {
11071 auto fullImpl = GetFullImpl();
11072 fullImpl->getNodeModifiers()->getImageModifier()->setSrc(node->uiNodeHandle, "");
11073 }
11074
ResetVerticalAlign(ArkUI_NodeHandle node)11075 void ResetVerticalAlign(ArkUI_NodeHandle node)
11076 {
11077 auto fullImpl = GetFullImpl();
11078 fullImpl->getNodeModifiers()->getImageSpanModifier()->resetImageSpanVerticalAlign(
11079 node->uiNodeHandle);
11080 }
11081
ResetImageSrc(ArkUI_NodeHandle node)11082 void ResetImageSrc(ArkUI_NodeHandle node)
11083 {
11084 auto fullImpl = GetFullImpl();
11085 fullImpl->getNodeModifiers()->getImageModifier()->resetImageSrc(node->uiNodeHandle);
11086 }
11087
ResetObjectFit(ArkUI_NodeHandle node)11088 void ResetObjectFit(ArkUI_NodeHandle node)
11089 {
11090 auto fullImpl = GetFullImpl();
11091 fullImpl->getNodeModifiers()->getImageModifier()->resetObjectFit(node->uiNodeHandle);
11092 }
11093
ResetInterpolation(ArkUI_NodeHandle node)11094 void ResetInterpolation(ArkUI_NodeHandle node)
11095 {
11096 auto fullImpl = GetFullImpl();
11097 fullImpl->getNodeModifiers()->getImageModifier()->resetImageInterpolation(node->uiNodeHandle);
11098 }
11099
ResetObjectRepeat(ArkUI_NodeHandle node)11100 void ResetObjectRepeat(ArkUI_NodeHandle node)
11101 {
11102 auto fullImpl = GetFullImpl();
11103 fullImpl->getNodeModifiers()->getImageModifier()->resetObjectRepeat(node->uiNodeHandle);
11104 }
11105
ResetColorFilter(ArkUI_NodeHandle node)11106 void ResetColorFilter(ArkUI_NodeHandle node)
11107 {
11108 auto fullImpl = GetFullImpl();
11109 fullImpl->getNodeModifiers()->getImageModifier()->resetColorFilter(node->uiNodeHandle);
11110 }
11111
ResetAutoResize(ArkUI_NodeHandle node)11112 void ResetAutoResize(ArkUI_NodeHandle node)
11113 {
11114 auto fullImpl = GetFullImpl();
11115 fullImpl->getNodeModifiers()->getImageModifier()->resetAutoResize(node->uiNodeHandle);
11116 }
11117
ResetAlt(ArkUI_NodeHandle node)11118 void ResetAlt(ArkUI_NodeHandle node)
11119 {
11120 auto fullImpl = GetFullImpl();
11121 fullImpl->getNodeModifiers()->getImageModifier()->resetAlt(node->uiNodeHandle);
11122 }
11123
ResetImageDraggable(ArkUI_NodeHandle node)11124 void ResetImageDraggable(ArkUI_NodeHandle node)
11125 {
11126 auto fullImpl = GetFullImpl();
11127 fullImpl->getNodeModifiers()->getImageModifier()->resetImageDraggable(node->uiNodeHandle);
11128 }
11129
GetBackgroundImageSize(ArkUI_NodeHandle node)11130 const ArkUI_AttributeItem* GetBackgroundImageSize(ArkUI_NodeHandle node)
11131 {
11132 auto fullImpl = GetFullImpl();
11133 auto backGroundImageSize =
11134 fullImpl->getNodeModifiers()->getCommonModifier()->getBackgroundImageSize(
11135 node->uiNodeHandle, GetDefaultUnit(node, UNIT_VP));
11136 g_numberValues[BACKGROUND_IMAGE_WIDTH_INDEX].f32 = backGroundImageSize.xValue;
11137 g_numberValues[BACKGROUND_IMAGE_HEIGHT_INDEX].f32 = backGroundImageSize.yValue;
11138 g_attributeItem.size = REQUIRED_TWO_PARAM;
11139 return &g_attributeItem;
11140 }
11141
GetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node)11142 const ArkUI_AttributeItem* GetBackgroundImageSizeWithStyle(ArkUI_NodeHandle node)
11143 {
11144 auto fullImpl = GetFullImpl();
11145 g_numberValues[0].i32 =
11146 fullImpl->getNodeModifiers()->getCommonModifier()->getBackgroundImageSizeWithStyle(node->uiNodeHandle);
11147 g_attributeItem.size = REQUIRED_ONE_PARAM;
11148 return &g_attributeItem;
11149 }
11150
GetBackgroundBlurStyle(ArkUI_NodeHandle node)11151 const ArkUI_AttributeItem* GetBackgroundBlurStyle(ArkUI_NodeHandle node)
11152 {
11153 auto fullImpl = GetFullImpl();
11154 auto backGroundBlurStyle =
11155 fullImpl->getNodeModifiers()->getCommonModifier()->getBackgroundBlurStyle(node->uiNodeHandle);
11156 g_numberValues[BLUR_STYLE_INDEX].i32 = UnConvertBlurStyle(backGroundBlurStyle.blurStyle);
11157 g_numberValues[COLOR_MODE_INDEX].i32 = backGroundBlurStyle.colorMode;
11158 g_numberValues[ADAPTIVE_COLOR_INDEX].i32 = backGroundBlurStyle.adaptiveColor;
11159 g_numberValues[SCALE_INDEX].f32 = backGroundBlurStyle.scale;
11160 g_numberValues[GRAY_SCALE_START].f32 = backGroundBlurStyle.grayScaleStart;
11161 g_numberValues[GRAY_SCALE_END].f32 = backGroundBlurStyle.grayScaleEnd;
11162 g_attributeItem.size = NUM_6;
11163 return &g_attributeItem;
11164 }
11165
GetTransformCenter(ArkUI_NodeHandle node)11166 const ArkUI_AttributeItem* GetTransformCenter(ArkUI_NodeHandle node)
11167 {
11168 auto fullImpl = GetFullImpl();
11169 auto transformCenter = fullImpl->getNodeModifiers()->getCommonModifier()->getTransformCenter(node->uiNodeHandle);
11170 g_numberValues[CENTER_X_INDEX].f32 = transformCenter.centerX;
11171 g_numberValues[CENTER_Y_INDEX].f32 = transformCenter.centerY;
11172 g_numberValues[CENTER_Z_INDEX].f32 = transformCenter.centerZ;
11173 g_attributeItem.size = REQUIRED_THREE_PARAM;
11174 return &g_attributeItem;
11175 }
11176
GetOpacityTransition(ArkUI_NodeHandle node)11177 const ArkUI_AttributeItem* GetOpacityTransition(ArkUI_NodeHandle node)
11178 {
11179 auto fullImpl = GetFullImpl();
11180 auto opacityTransition =
11181 fullImpl->getNodeModifiers()->getCommonModifier()->getOpacityTransition(node->uiNodeHandle);
11182 const int32_t animationDurationIndex = OPACITY_ANIMATION_BASE + ANIMATION_DURATION_INDEX;
11183 const int32_t animationCurveIndex = OPACITY_ANIMATION_BASE + ANIMATION_CURVE_INDEX;
11184 const int32_t animationDelayIndex = OPACITY_ANIMATION_BASE + ANIMATION_DELAY_INDEX;
11185 const int32_t animationIterationsIndex = OPACITY_ANIMATION_BASE + ANIMATION_INTERATION_INDEX;
11186 const int32_t animationPlayModeIndex = OPACITY_ANIMATION_BASE + ANIMATION_PLAY_MODE_INDEX;
11187 const int32_t animationTempoIndex = OPACITY_ANIMATION_BASE + ANIMATION_TEMPO_INDEX;
11188 g_numberValues[0].f32 = opacityTransition.opacity;
11189 g_numberValues[animationDurationIndex].i32 = opacityTransition.animation.duration;
11190 g_numberValues[animationCurveIndex].i32 = opacityTransition.animation.curve;
11191 g_numberValues[animationDelayIndex].i32 = opacityTransition.animation.delay;
11192 g_numberValues[animationIterationsIndex].i32 = opacityTransition.animation.iteration;
11193 g_numberValues[animationPlayModeIndex].i32 =UnConvertAnimationDirection(opacityTransition.animation.playMode);
11194 g_numberValues[animationTempoIndex].f32 = opacityTransition.animation.tempo;
11195 g_attributeItem.size = REQUIRED_SEVEN_PARAM;
11196 return &g_attributeItem;
11197 }
11198
GetRotateTransition(ArkUI_NodeHandle node)11199 const ArkUI_AttributeItem* GetRotateTransition(ArkUI_NodeHandle node)
11200 {
11201 auto fullImpl = GetFullImpl();
11202 auto rotateTransition = fullImpl->getNodeModifiers()->getCommonModifier()->getRotateTransition(node->uiNodeHandle);
11203 const int32_t animationDurationIndex = ROTATE_ANIMATION_BASE + ANIMATION_DURATION_INDEX;
11204 const int32_t animationCurveIndex = ROTATE_ANIMATION_BASE + ANIMATION_CURVE_INDEX;
11205 const int32_t animationDelayIndex = ROTATE_ANIMATION_BASE + ANIMATION_DELAY_INDEX;
11206 const int32_t animationIterationsIndex = ROTATE_ANIMATION_BASE + ANIMATION_INTERATION_INDEX;
11207 const int32_t animationPlayModeIndex = ROTATE_ANIMATION_BASE + ANIMATION_PLAY_MODE_INDEX;
11208 const int32_t animationTempoIndex = ROTATE_ANIMATION_BASE + ANIMATION_TEMPO_INDEX;
11209 g_numberValues[X_INDEX].f32 = rotateTransition.xRotation;
11210 g_numberValues[Y_INDEX].f32 = rotateTransition.yRotation;
11211 g_numberValues[Z_INDEX].f32 = rotateTransition.zRotation;
11212 g_numberValues[ROTATE_ANGLE_INDEX].f32 = rotateTransition.angle;
11213 g_numberValues[ROTATE_PERSPECTIVE_INDEX].f32 = rotateTransition.perspective;
11214 g_numberValues[animationDurationIndex].i32 = rotateTransition.animation.duration;
11215 g_numberValues[animationCurveIndex].i32 = rotateTransition.animation.curve;
11216 g_numberValues[animationDelayIndex].i32 = rotateTransition.animation.delay;
11217 g_numberValues[animationIterationsIndex].i32 = rotateTransition.animation.iteration;
11218 g_numberValues[animationPlayModeIndex].i32 = UnConvertAnimationDirection(rotateTransition.animation.playMode);
11219 g_numberValues[animationTempoIndex].f32 = rotateTransition.animation.tempo;
11220 g_attributeItem.size = NUM_11;
11221 return &g_attributeItem;
11222 }
11223
GetScaleTransition(ArkUI_NodeHandle node)11224 const ArkUI_AttributeItem* GetScaleTransition(ArkUI_NodeHandle node)
11225 {
11226 auto fullImpl = GetFullImpl();
11227 auto scaleTransition = fullImpl->getNodeModifiers()->getCommonModifier()->getScaleTransition(node->uiNodeHandle);
11228 const int32_t animationDurationIndex = SCALE_ANIMATION_BASE + ANIMATION_DURATION_INDEX;
11229 const int32_t animationCurveIndex = SCALE_ANIMATION_BASE + ANIMATION_CURVE_INDEX;
11230 const int32_t animationDelayIndex = SCALE_ANIMATION_BASE + ANIMATION_DELAY_INDEX;
11231 const int32_t animationIterationsIndex = SCALE_ANIMATION_BASE + ANIMATION_INTERATION_INDEX;
11232 const int32_t animationPlayModeIndex = SCALE_ANIMATION_BASE + ANIMATION_PLAY_MODE_INDEX;
11233 const int32_t animationTempoIndex = SCALE_ANIMATION_BASE + ANIMATION_TEMPO_INDEX;
11234 g_numberValues[X_INDEX].f32 = scaleTransition.xScale;
11235 g_numberValues[Y_INDEX].f32 = scaleTransition.yScale;
11236 g_numberValues[Z_INDEX].f32 = scaleTransition.zScale;
11237 g_numberValues[animationDurationIndex].i32 = scaleTransition.animation.duration;
11238 g_numberValues[animationCurveIndex].i32 = scaleTransition.animation.curve;
11239 g_numberValues[animationDelayIndex].i32 = scaleTransition.animation.delay;
11240 g_numberValues[animationIterationsIndex].i32 = scaleTransition.animation.iteration;
11241 g_numberValues[animationPlayModeIndex].i32 = UnConvertAnimationDirection(scaleTransition.animation.playMode);
11242 g_numberValues[animationTempoIndex].f32 = scaleTransition.animation.tempo;
11243 g_attributeItem.size = NUM_9;
11244 return &g_attributeItem;
11245 }
11246
GetTranslateTransition(ArkUI_NodeHandle node)11247 const ArkUI_AttributeItem* GetTranslateTransition(ArkUI_NodeHandle node)
11248 {
11249 auto fullImpl = GetFullImpl();
11250 auto translateTransition =
11251 fullImpl->getNodeModifiers()->getCommonModifier()->getTranslateTransition(node->uiNodeHandle);
11252 const int32_t animationDurationIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_DURATION_INDEX;
11253 const int32_t animationCurveIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_CURVE_INDEX;
11254 const int32_t animationDelayIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_DELAY_INDEX;
11255 const int32_t animationIterationsIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_INTERATION_INDEX;
11256 const int32_t animationPlayModeIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_PLAY_MODE_INDEX;
11257 const int32_t animationTempoIndex = TRANSLATE_ANIMATION_BASE + ANIMATION_TEMPO_INDEX;
11258 g_numberValues[X_INDEX].f32 = translateTransition.xTransition;
11259 g_numberValues[Y_INDEX].f32 = translateTransition.yTransition;
11260 g_numberValues[Z_INDEX].f32 = translateTransition.zTransition;
11261 g_numberValues[animationDurationIndex].i32 = translateTransition.animation.duration;
11262 g_numberValues[animationCurveIndex].i32 = translateTransition.animation.curve;
11263 g_numberValues[animationDelayIndex].i32 = translateTransition.animation.delay;
11264 g_numberValues[animationIterationsIndex].i32 = translateTransition.animation.iteration;
11265 g_numberValues[animationPlayModeIndex].i32 = UnConvertAnimationDirection(translateTransition.animation.playMode);
11266 g_numberValues[animationTempoIndex].f32 = translateTransition.animation.tempo;
11267 return &g_attributeItem;
11268 }
11269
GetMoveTransition(ArkUI_NodeHandle node)11270 const ArkUI_AttributeItem* GetMoveTransition(ArkUI_NodeHandle node)
11271 {
11272 auto fullImpl = GetFullImpl();
11273 auto moveTransition =
11274 fullImpl->getNodeModifiers()->getCommonModifier()->getMoveTransition(node->uiNodeHandle);
11275 const int32_t animationDurationIndex = MOVE_ANIMATION_BASE + ANIMATION_DURATION_INDEX;
11276 const int32_t animationCurveIndex = MOVE_ANIMATION_BASE + ANIMATION_CURVE_INDEX;
11277 const int32_t animationDelayIndex = MOVE_ANIMATION_BASE + ANIMATION_DELAY_INDEX;
11278 const int32_t animationIterationsIndex = MOVE_ANIMATION_BASE + ANIMATION_INTERATION_INDEX;
11279 const int32_t animationPlayModeIndex = MOVE_ANIMATION_BASE + ANIMATION_PLAY_MODE_INDEX;
11280 const int32_t animationTempoIndex = MOVE_ANIMATION_BASE + ANIMATION_TEMPO_INDEX;
11281 g_numberValues[0].i32 = moveTransition.edgeType;
11282 g_numberValues[animationDurationIndex].i32 = moveTransition.animation.duration;
11283 g_numberValues[animationCurveIndex].i32 = moveTransition.animation.curve;
11284 g_numberValues[animationDelayIndex].i32 = moveTransition.animation.delay;
11285 g_numberValues[animationIterationsIndex].i32 = moveTransition.animation.iteration;
11286 g_numberValues[animationPlayModeIndex].i32 = moveTransition.animation.playMode;
11287 g_numberValues[animationTempoIndex].f32 = moveTransition.animation.tempo;
11288 g_attributeItem.size = REQUIRED_SEVEN_PARAM;
11289 return &g_attributeItem;
11290 }
11291
11292
GetOffset(ArkUI_NodeHandle node)11293 const ArkUI_AttributeItem* GetOffset(ArkUI_NodeHandle node)
11294 {
11295 auto fullImpl = GetFullImpl();
11296 auto offset = fullImpl->getNodeModifiers()->getCommonModifier()->getOffset(node->uiNodeHandle);
11297 g_numberValues[NUM_0].f32 = offset.xComponent;
11298 g_numberValues[NUM_1].f32 = offset.yComponent;
11299 g_attributeItem.size = REQUIRED_TWO_PARAM;
11300 return &g_attributeItem;
11301 }
11302
GetMarkAnchor(ArkUI_NodeHandle node)11303 const ArkUI_AttributeItem* GetMarkAnchor(ArkUI_NodeHandle node)
11304 {
11305 auto fullImpl = GetFullImpl();
11306 auto markAnchor = fullImpl->getNodeModifiers()->getCommonModifier()->getMarkAnchor(node->uiNodeHandle);
11307 g_numberValues[NUM_0].f32 = markAnchor.xCoordinate;
11308 g_numberValues[NUM_1].f32 = markAnchor.yCoordinate;
11309 g_attributeItem.size = REQUIRED_TWO_PARAM;
11310 return &g_attributeItem;
11311 }
11312
GetAlignRules(ArkUI_NodeHandle node)11313 const ArkUI_AttributeItem* GetAlignRules(ArkUI_NodeHandle node)
11314 {
11315 g_attributeItem.object = node->alignRuleOption;
11316 return &g_attributeItem;
11317 }
11318
GetTextContent(ArkUI_NodeHandle node)11319 const ArkUI_AttributeItem* GetTextContent(ArkUI_NodeHandle node)
11320 {
11321 auto fullImpl = GetFullImpl();
11322 auto textContent = fullImpl->getNodeModifiers()->getTextModifier()->getTextContent(node->uiNodeHandle);
11323 g_attributeItem.string = (textContent != nullptr ? textContent : EMPTY_STR.c_str());
11324 return &g_attributeItem;
11325 }
11326
GetFontColor(ArkUI_NodeHandle node)11327 const ArkUI_AttributeItem* GetFontColor(ArkUI_NodeHandle node)
11328 {
11329 auto fullImpl = GetFullImpl();
11330 switch (node->type) {
11331 case ARKUI_NODE_TEXT:
11332 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getTextModifier()->
11333 getFontColor(node->uiNodeHandle);
11334 g_attributeItem.size = REQUIRED_ONE_PARAM;
11335 break;
11336 case ARKUI_NODE_SPAN:
11337 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getSpanModifier()->
11338 getSpanFontColor(node->uiNodeHandle);
11339 g_attributeItem.size = REQUIRED_ONE_PARAM;
11340 break;
11341 case ARKUI_NODE_TEXT_INPUT:
11342 case ARKUI_NODE_TEXT_AREA:
11343 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
11344 getTextInputFontColor(node->uiNodeHandle);
11345 g_attributeItem.size = REQUIRED_ONE_PARAM;
11346 break;
11347 case ARKUI_NODE_BUTTON:
11348 g_numberValues[0].u32 = fullImpl->getNodeModifiers()->getButtonModifier()->
11349 getButtonFontColor(node->uiNodeHandle);
11350 g_attributeItem.size = REQUIRED_ONE_PARAM;
11351 break;
11352 default:
11353 break;
11354 }
11355 return &g_attributeItem;
11356 }
11357
GetFontSize(ArkUI_NodeHandle node)11358 const ArkUI_AttributeItem* GetFontSize(ArkUI_NodeHandle node)
11359 {
11360 auto fullImpl = GetFullImpl();
11361 auto unit = GetDefaultUnit(node, UNIT_FP);
11362 switch (node->type) {
11363 case ARKUI_NODE_TEXT:
11364 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getTextModifier()->
11365 getFontSize(node->uiNodeHandle, unit);
11366 g_attributeItem.size = REQUIRED_ONE_PARAM;
11367 break;
11368 case ARKUI_NODE_SPAN:
11369 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getSpanModifier()->
11370 getSpanFontSize(node->uiNodeHandle, unit);
11371 g_attributeItem.size = REQUIRED_ONE_PARAM;
11372 break;
11373 case ARKUI_NODE_TEXT_INPUT:
11374 case ARKUI_NODE_TEXT_AREA:
11375 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
11376 getTextInputFontSize(node->uiNodeHandle, unit);
11377 g_attributeItem.size = REQUIRED_ONE_PARAM;
11378 break;
11379 case ARKUI_NODE_BUTTON:
11380 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getButtonModifier()->
11381 getButtonFontSize(node->uiNodeHandle, unit);
11382 g_attributeItem.size = REQUIRED_ONE_PARAM;
11383 break;
11384 default:
11385 break;
11386 }
11387 return &g_attributeItem;
11388 }
11389
GetFontStyle(ArkUI_NodeHandle node)11390 const ArkUI_AttributeItem* GetFontStyle(ArkUI_NodeHandle node)
11391 {
11392 auto fullImpl = GetFullImpl();
11393 switch (node->type) {
11394 case ARKUI_NODE_TEXT:
11395 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->
11396 getItalicFontStyle(node->uiNodeHandle);
11397 g_attributeItem.size = REQUIRED_ONE_PARAM;
11398 break;
11399 case ARKUI_NODE_SPAN:
11400 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getSpanModifier()->
11401 getSpanFontStyle(node->uiNodeHandle);
11402 g_attributeItem.size = REQUIRED_ONE_PARAM;
11403 break;
11404 case ARKUI_NODE_TEXT_INPUT:
11405 case ARKUI_NODE_TEXT_AREA:
11406 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
11407 getTextInputFontStyle(node->uiNodeHandle);
11408 g_attributeItem.size = REQUIRED_ONE_PARAM;
11409 break;
11410 default:
11411 break;
11412 }
11413 return &g_attributeItem;
11414 }
11415
GetFontWeight(ArkUI_NodeHandle node)11416 const ArkUI_AttributeItem* GetFontWeight(ArkUI_NodeHandle node)
11417 {
11418 auto fullImpl = GetFullImpl();
11419 switch (node->type) {
11420 case ARKUI_NODE_TEXT:
11421 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getFontWeight(node->uiNodeHandle);
11422 g_attributeItem.size = REQUIRED_ONE_PARAM;
11423 break;
11424 case ARKUI_NODE_SPAN:
11425 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getSpanModifier()->
11426 getSpanFontWeight(node->uiNodeHandle);
11427 g_attributeItem.size = REQUIRED_ONE_PARAM;
11428 break;
11429 case ARKUI_NODE_TEXT_INPUT:
11430 case ARKUI_NODE_TEXT_AREA:
11431 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextInputModifier()->
11432 getTextInputFontWeight(node->uiNodeHandle);
11433 g_attributeItem.size = REQUIRED_ONE_PARAM;
11434 break;
11435 case ARKUI_NODE_BUTTON:
11436 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getButtonModifier()->
11437 getButtonFontWeight(node->uiNodeHandle);
11438 g_attributeItem.size = REQUIRED_ONE_PARAM;
11439 break;
11440 default:
11441 break;
11442 }
11443 return &g_attributeItem;
11444 }
11445
GetLineHeight(ArkUI_NodeHandle node)11446 const ArkUI_AttributeItem* GetLineHeight(ArkUI_NodeHandle node)
11447 {
11448 auto fullImpl = GetFullImpl();
11449 switch (node->type) {
11450 case ARKUI_NODE_TEXT:
11451 g_numberValues[NUM_0].f32 =
11452 fullImpl->getNodeModifiers()->getTextModifier()->getTextLineHeight(node->uiNodeHandle);
11453 g_attributeItem.size = REQUIRED_ONE_PARAM;
11454 break;
11455 case ARKUI_NODE_SPAN:
11456 g_numberValues[NUM_0].f32 =
11457 fullImpl->getNodeModifiers()->getSpanModifier()->getSpanLineHeight(node->uiNodeHandle);
11458 g_attributeItem.size = REQUIRED_ONE_PARAM;
11459 break;
11460 case ARKUI_NODE_TEXT_INPUT:
11461 g_numberValues[NUM_0].f32 =
11462 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputLineHeight(node->uiNodeHandle);
11463 g_attributeItem.size = REQUIRED_ONE_PARAM;
11464 break;
11465 case ARKUI_NODE_TEXT_AREA:
11466 g_numberValues[NUM_0].f32 =
11467 fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaLineHeight(node->uiNodeHandle);
11468 g_attributeItem.size = REQUIRED_ONE_PARAM;
11469 break;
11470 default:
11471 break;
11472 }
11473 return &g_attributeItem;
11474 }
11475
GetDecoration(ArkUI_NodeHandle node)11476 const ArkUI_AttributeItem* GetDecoration(ArkUI_NodeHandle node)
11477 {
11478 auto fullImpl = GetFullImpl();
11479 switch (node->type) {
11480 case ARKUI_NODE_SPAN: {
11481 ArkUITextDecorationType spanDecorationType = { 0, Color::BLACK.GetValue()};
11482 fullImpl->getNodeModifiers()->getSpanModifier()->getSpanDecoration(node->uiNodeHandle, &spanDecorationType);
11483 g_numberValues[0].i32 = spanDecorationType.decorationType;
11484 g_numberValues[DECORATION_COLOR_INDEX].u32 = spanDecorationType.color;
11485 g_numberValues[DECORATION_STYLE_INDEX].i32 = spanDecorationType.style;
11486 g_attributeItem.size = NUM_3;
11487 break;
11488 }
11489 case ARKUI_NODE_TEXT: {
11490 ArkUITextDecorationType textDecorationType = { 0, Color::BLACK.GetValue()};
11491 fullImpl->getNodeModifiers()->getTextModifier()->getTextDecoration(node->uiNodeHandle, &textDecorationType);
11492 g_numberValues[0].i32 = textDecorationType.decorationType;
11493 g_numberValues[DECORATION_COLOR_INDEX].u32 = textDecorationType.color;
11494 g_numberValues[DECORATION_STYLE_INDEX].i32 = textDecorationType.style;
11495 g_attributeItem.size = NUM_3;
11496 break;
11497 }
11498 default:
11499 break;
11500 }
11501
11502 return &g_attributeItem;
11503 }
11504
GetTextCase(ArkUI_NodeHandle node)11505 const ArkUI_AttributeItem* GetTextCase(ArkUI_NodeHandle node)
11506 {
11507 auto fullImpl = GetFullImpl();
11508 switch (node->type) {
11509 case ARKUI_NODE_SPAN:
11510 g_numberValues[NUM_0].i32 =
11511 fullImpl->getNodeModifiers()->getSpanModifier()->getSpanTextCase(node->uiNodeHandle);
11512 g_attributeItem.size = REQUIRED_ONE_PARAM;
11513 break;
11514 case ARKUI_NODE_TEXT:
11515 g_numberValues[NUM_0].i32 =
11516 fullImpl->getNodeModifiers()->getTextModifier()->getTextTextCase(node->uiNodeHandle);
11517 g_attributeItem.size = REQUIRED_ONE_PARAM;
11518 break;
11519 default:
11520 break;
11521 }
11522 return &g_attributeItem;
11523 }
11524
GetLetterSpacing(ArkUI_NodeHandle node)11525 const ArkUI_AttributeItem* GetLetterSpacing(ArkUI_NodeHandle node)
11526 {
11527 auto fullImpl = GetFullImpl();
11528 switch (node->type) {
11529 case ARKUI_NODE_SPAN:
11530 g_numberValues[NUM_0].f32 =
11531 fullImpl->getNodeModifiers()->getSpanModifier()->getSpanLetterSpacing(node->uiNodeHandle);
11532 g_attributeItem.size = REQUIRED_ONE_PARAM;
11533 break;
11534 case ARKUI_NODE_TEXT:
11535 g_numberValues[NUM_0].f32 =
11536 fullImpl->getNodeModifiers()->getTextModifier()->getTextLetterSpacing(node->uiNodeHandle);
11537 g_attributeItem.size = REQUIRED_ONE_PARAM;
11538 break;
11539 case ARKUI_NODE_TEXT_INPUT:
11540 g_numberValues[NUM_0].f32 =
11541 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputLetterSpacing(node->uiNodeHandle);
11542 g_attributeItem.size = REQUIRED_ONE_PARAM;
11543 break;
11544 case ARKUI_NODE_TEXT_AREA:
11545 g_numberValues[NUM_0].f32 =
11546 fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaLetterSpacing(node->uiNodeHandle);
11547 g_attributeItem.size = REQUIRED_ONE_PARAM;
11548 break;
11549 default:
11550 break;
11551 }
11552 return &g_attributeItem;
11553 }
11554
GetMaxLines(ArkUI_NodeHandle node)11555 const ArkUI_AttributeItem* GetMaxLines(ArkUI_NodeHandle node)
11556 {
11557 auto fullImpl = GetFullImpl();
11558 switch (node->type) {
11559 case ARKUI_NODE_TEXT:
11560 g_numberValues[NUM_0].i32 =
11561 fullImpl->getNodeModifiers()->getTextModifier()->getTextMaxLines(node->uiNodeHandle);
11562 g_attributeItem.size = REQUIRED_ONE_PARAM;
11563 break;
11564 case ARKUI_NODE_TEXT_INPUT:
11565 g_numberValues[NUM_0].i32 =
11566 fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputMaxLines(node->uiNodeHandle);
11567 g_attributeItem.size = REQUIRED_ONE_PARAM;
11568 break;
11569 case ARKUI_NODE_TEXT_AREA:
11570 g_numberValues[NUM_0].i32 =
11571 fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaMaxLines(node->uiNodeHandle);
11572 g_attributeItem.size = REQUIRED_ONE_PARAM;
11573 break;
11574 default:
11575 break;
11576 }
11577 return &g_attributeItem;
11578 }
11579
GetTextAlign(ArkUI_NodeHandle node)11580 const ArkUI_AttributeItem* GetTextAlign(ArkUI_NodeHandle node)
11581 {
11582 auto fullImpl = GetFullImpl();
11583 int32_t textAlign = NUM_0;
11584 if (node->type == ARKUI_NODE_TEXT) {
11585 textAlign = fullImpl->getNodeModifiers()->getTextModifier()->getTextAlign(node->uiNodeHandle);
11586 } else if (node->type == ARKUI_NODE_TEXT_INPUT) {
11587 textAlign = fullImpl->getNodeModifiers()->getTextInputModifier()->getTextInputTextAlign(node->uiNodeHandle);
11588 } else if (node->type == ARKUI_NODE_TEXT_AREA) {
11589 textAlign = fullImpl->getNodeModifiers()->getTextAreaModifier()->getTextAreaTextAlign(node->uiNodeHandle);
11590 }
11591 g_numberValues[0].i32 = textAlign;
11592 g_attributeItem.size = REQUIRED_ONE_PARAM;
11593 return &g_attributeItem;
11594 }
11595
GetTextOverflow(ArkUI_NodeHandle node)11596 const ArkUI_AttributeItem* GetTextOverflow(ArkUI_NodeHandle node)
11597 {
11598 auto fullImpl = GetFullImpl();
11599 g_numberValues[0].i32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextTextOverflow(node->uiNodeHandle);
11600 g_attributeItem.size = REQUIRED_ONE_PARAM;
11601 return &g_attributeItem;
11602 }
11603
GetTextIndent(ArkUI_NodeHandle node)11604 const ArkUI_AttributeItem* GetTextIndent(ArkUI_NodeHandle node)
11605 {
11606 auto fullImpl = GetFullImpl();
11607 g_numberValues[0].f32 = fullImpl->getNodeModifiers()->getTextModifier()->getTextTextIndent(node->uiNodeHandle);
11608 g_attributeItem.size = REQUIRED_ONE_PARAM;
11609 return &g_attributeItem;
11610 }
11611
GetSpanContent(ArkUI_NodeHandle node)11612 const ArkUI_AttributeItem* GetSpanContent(ArkUI_NodeHandle node)
11613 {
11614 auto fullImpl = GetFullImpl();
11615 auto content = fullImpl->getNodeModifiers()->getSpanModifier()->getSpanContent(node->uiNodeHandle);
11616 g_attributeItem.string = (content != nullptr ? content : EMPTY_STR.c_str());
11617 return &g_attributeItem;
11618 }
11619
GetSpanTextBackgroundStyle(ArkUI_NodeHandle node)11620 const ArkUI_AttributeItem* GetSpanTextBackgroundStyle(ArkUI_NodeHandle node)
11621 {
11622 auto fullImpl = GetFullImpl();
11623 ArkUITextBackgroundStyleOptions options;
11624 fullImpl->getNodeModifiers()->getSpanModifier()->getSpanTextBackgroundStyle(node->uiNodeHandle, &options);
11625 g_numberValues[NUM_0].u32 = options.color;
11626 g_numberValues[NUM_1].f32 = options.topLeft;
11627 g_numberValues[NUM_2].f32 = options.topRight;
11628 g_numberValues[NUM_3].f32 = options.bottomLeft;
11629 g_numberValues[NUM_4].f32 = options.bottomRight;
11630 return &g_attributeItem;
11631 }
11632
GetImageSpanSrc(ArkUI_NodeHandle node)11633 const ArkUI_AttributeItem* GetImageSpanSrc(ArkUI_NodeHandle node)
11634 {
11635 auto fullImpl = GetFullImpl();
11636 auto src = fullImpl->getNodeModifiers()->getImageModifier()->getImageSrc(node->uiNodeHandle);
11637 g_attributeItem.string = (src != nullptr ? src : EMPTY_STR.c_str());
11638 if (node->drawableDescriptor) {
11639 g_attributeItem.object = node->drawableDescriptor;
11640 }
11641 return &g_attributeItem;
11642 }
11643
GetVerticalAlign(ArkUI_NodeHandle node)11644 const ArkUI_AttributeItem* GetVerticalAlign(ArkUI_NodeHandle node)
11645 {
11646 auto fullImpl = GetFullImpl();
11647 auto verticalAlign =
11648 fullImpl->getNodeModifiers()->getImageSpanModifier()->getImageSpanVerticalAlign(node->uiNodeHandle);
11649 auto it = std::find(IMAGE_SPAN_ALIGNMENT_ARRAY.begin(), IMAGE_SPAN_ALIGNMENT_ARRAY.end(), verticalAlign);
11650 if (it != IMAGE_SPAN_ALIGNMENT_ARRAY.end()) {
11651 g_numberValues[0].i32 = std::distance(IMAGE_SPAN_ALIGNMENT_ARRAY.begin(), it);
11652 g_attributeItem.size = REQUIRED_ONE_PARAM;
11653 }
11654 return &g_attributeItem;
11655 }
11656
GetImageSrc(ArkUI_NodeHandle node)11657 const ArkUI_AttributeItem* GetImageSrc(ArkUI_NodeHandle node)
11658 {
11659 auto fullImpl = GetFullImpl();
11660 auto src = fullImpl->getNodeModifiers()->getImageModifier()->getImageSrc(node->uiNodeHandle);
11661 g_attributeItem.string = (src != nullptr ? src : EMPTY_STR.c_str());
11662 if (node->drawableDescriptor) {
11663 g_attributeItem.object = node->drawableDescriptor;
11664 }
11665 return &g_attributeItem;
11666 }
11667
GetObjectFit(ArkUI_NodeHandle node)11668 const ArkUI_AttributeItem* GetObjectFit(ArkUI_NodeHandle node)
11669 {
11670 auto fullImpl = GetFullImpl();
11671 auto resultValue = fullImpl->getNodeModifiers()->getImageModifier()->getObjectFit(node->uiNodeHandle);
11672 auto it = std::find(OBJECT_FIT_ARRAY.begin(), OBJECT_FIT_ARRAY.end(), resultValue);
11673 if (it != OBJECT_FIT_ARRAY.end()) {
11674 g_numberValues[0].i32 = std::distance(OBJECT_FIT_ARRAY.begin(), it);
11675 } else {
11676 g_numberValues[0].i32 = static_cast<int32_t>(ARKUI_OBJECT_FIT_COVER);
11677 }
11678 g_attributeItem.size = REQUIRED_ONE_PARAM;
11679 return &g_attributeItem;
11680 }
11681
GetInterpolation(ArkUI_NodeHandle node)11682 const ArkUI_AttributeItem* GetInterpolation(ArkUI_NodeHandle node)
11683 {
11684 auto fullImpl = GetFullImpl();
11685 auto interpolation = fullImpl->getNodeModifiers()->getImageModifier()->getImageInterpolation(node->uiNodeHandle);
11686 g_numberValues[0].i32 = interpolation;
11687 g_attributeItem.size = REQUIRED_ONE_PARAM;
11688 return &g_attributeItem;
11689 }
11690
GetObjectRepeat(ArkUI_NodeHandle node)11691 const ArkUI_AttributeItem* GetObjectRepeat(ArkUI_NodeHandle node)
11692 {
11693 auto fullImpl = GetFullImpl();
11694 auto objectRepeat = fullImpl->getNodeModifiers()->getImageModifier()->getObjectRepeat(node->uiNodeHandle);
11695 g_numberValues[0].i32 = objectRepeat;
11696 g_attributeItem.size = REQUIRED_ONE_PARAM;
11697 return &g_attributeItem;
11698 }
11699
GetColorFilter(ArkUI_NodeHandle node)11700 const ArkUI_AttributeItem* GetColorFilter(ArkUI_NodeHandle node)
11701 {
11702 auto fullImpl = GetFullImpl();
11703 auto colorFilter = fullImpl->getNodeModifiers()->getImageModifier()->getDrawingColorFilter(node->uiNodeHandle);
11704 if (colorFilter) {
11705 g_attributeItem.object = colorFilter;
11706 g_attributeItem.size = 0;
11707 return &g_attributeItem;
11708 }
11709 g_attributeItem.size = REQUIRED_TWENTY_PARAM;
11710 for (size_t i = 0; i < REQUIRED_TWENTY_PARAM; i++) {
11711 g_numberValues[i].f32 = 0;
11712 }
11713 ArkUIFilterColorType colorFilterType = { .filterArray = &g_numberValues[0].f32,
11714 .filterSize = REQUIRED_TWENTY_PARAM };
11715 fullImpl->getNodeModifiers()->getImageModifier()->getColorFilter(node->uiNodeHandle, &colorFilterType);
11716 return &g_attributeItem;
11717 }
11718
GetAutoResize(ArkUI_NodeHandle node)11719 const ArkUI_AttributeItem* GetAutoResize(ArkUI_NodeHandle node)
11720 {
11721 auto fullImpl = GetFullImpl();
11722 auto autoResize = fullImpl->getNodeModifiers()->getImageModifier()->getAutoResize(node->uiNodeHandle);
11723 g_numberValues[0].i32 = autoResize;
11724 g_attributeItem.size = REQUIRED_ONE_PARAM;
11725 return &g_attributeItem;
11726 }
11727
GetAlt(ArkUI_NodeHandle node)11728 const ArkUI_AttributeItem* GetAlt(ArkUI_NodeHandle node)
11729 {
11730 auto fullImpl = GetFullImpl();
11731 auto src = fullImpl->getNodeModifiers()->getImageModifier()->getAlt(node->uiNodeHandle);
11732 g_attributeItem.string = (src != nullptr ? src : EMPTY_STR.c_str());
11733 if (node->altDrawableDescriptor) {
11734 g_attributeItem.object = node->altDrawableDescriptor;
11735 }
11736 return &g_attributeItem;
11737 }
11738
GetImageDraggable(ArkUI_NodeHandle node)11739 const ArkUI_AttributeItem* GetImageDraggable(ArkUI_NodeHandle node)
11740 {
11741 auto fullImpl = GetFullImpl();
11742 auto draggable = fullImpl->getNodeModifiers()->getImageModifier()->getImageDraggable(node->uiNodeHandle);
11743 g_numberValues[0].i32 = draggable;
11744 g_attributeItem.size = REQUIRED_ONE_PARAM;
11745 return &g_attributeItem;
11746 }
11747
SetCheckboxSelect(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11748 int32_t SetCheckboxSelect(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11749 {
11750 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
11751 return ERROR_CODE_PARAM_INVALID;
11752 }
11753 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setSelect(node->uiNodeHandle, item->value[0].i32);
11754 return ERROR_CODE_NO_ERROR;
11755 }
11756
GetCheckboxSelect(ArkUI_NodeHandle node)11757 const ArkUI_AttributeItem* GetCheckboxSelect(ArkUI_NodeHandle node)
11758 {
11759 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getSelect(node->uiNodeHandle);
11760 g_numberValues[0].i32 = resultValue;
11761 return &g_attributeItem;
11762 }
11763
ResetCheckboxSelect(ArkUI_NodeHandle node)11764 void ResetCheckboxSelect(ArkUI_NodeHandle node)
11765 {
11766 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->resetSelect(node->uiNodeHandle);
11767 }
11768
SetCheckboxSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11769 int32_t SetCheckboxSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11770 {
11771 if (item->size == 0) {
11772 return ERROR_CODE_PARAM_INVALID;
11773 }
11774 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setSelectedColor(node->uiNodeHandle, item->value[0].u32);
11775 return ERROR_CODE_NO_ERROR;
11776 }
11777
GetCheckboxSelectedColor(ArkUI_NodeHandle node)11778 const ArkUI_AttributeItem* GetCheckboxSelectedColor(ArkUI_NodeHandle node)
11779 {
11780 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getSelectedColor(node->uiNodeHandle);
11781 g_numberValues[0].u32 = resultValue;
11782 return &g_attributeItem;
11783 }
11784
ResetCheckboxSelectedColor(ArkUI_NodeHandle node)11785 void ResetCheckboxSelectedColor(ArkUI_NodeHandle node)
11786 {
11787 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->resetSelectedColor(node->uiNodeHandle);
11788 }
11789
SetCheckboxUnSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11790 int32_t SetCheckboxUnSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11791 {
11792 if (item->size == 0) {
11793 return ERROR_CODE_PARAM_INVALID;
11794 }
11795 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setUnSelectedColor(
11796 node->uiNodeHandle, item->value[0].u32);
11797 return ERROR_CODE_NO_ERROR;
11798 }
11799
GetCheckboxUnSelectedColor(ArkUI_NodeHandle node)11800 const ArkUI_AttributeItem* GetCheckboxUnSelectedColor(ArkUI_NodeHandle node)
11801 {
11802 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getUnSelectedColor(node->uiNodeHandle);
11803 g_numberValues[0].u32 = resultValue;
11804 return &g_attributeItem;
11805 }
11806
ResetCheckboxUnSelectedColor(ArkUI_NodeHandle node)11807 void ResetCheckboxUnSelectedColor(ArkUI_NodeHandle node)
11808 {
11809 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->resetUnSelectedColor(node->uiNodeHandle);
11810 }
11811
SetCheckboxMark(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11812 int32_t SetCheckboxMark(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11813 {
11814 if (item->size == 0) {
11815 return ERROR_CODE_PARAM_INVALID;
11816 }
11817 // defalut white
11818 int strokeColor = item->value[0].u32;
11819 double size = -1;
11820 if (item->size > 1) {
11821 //check 2 for size
11822 if (LessNotEqual(item->value[1].f32, 0.0f)) {
11823 return ERROR_CODE_PARAM_INVALID;
11824 }
11825 //set 2 for size
11826 size = item->value[1].f32;
11827 }
11828 // defalut 2
11829 double strokeWidth = 2;
11830 if (item->size > ALLOW_SIZE_2) {
11831 //check 2 for strokeWidth
11832 if (LessNotEqual(item->value[2].f32, 0.0f)) {
11833 return ERROR_CODE_PARAM_INVALID;
11834 }
11835 //set 2 for strokeWidth
11836 strokeWidth = item->value[2].f32;
11837 }
11838 int32_t unit = GetDefaultUnit(node, UNIT_VP);
11839 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setMark(
11840 node->uiNodeHandle, strokeColor, size, unit, strokeWidth, unit);
11841 return ERROR_CODE_NO_ERROR;
11842 }
11843
GetCheckboxMark(ArkUI_NodeHandle node)11844 const ArkUI_AttributeItem* GetCheckboxMark(ArkUI_NodeHandle node)
11845 {
11846 auto strokeColor = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckMarkColor(node->uiNodeHandle);
11847 auto size = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckMarkSize(node->uiNodeHandle);
11848 auto strokeWidth = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckMarkWidth(node->uiNodeHandle);
11849 int index = 0;
11850 g_numberValues[index++].u32 = strokeColor;
11851 g_numberValues[index++].f32 = size;
11852 g_numberValues[index++].f32 = strokeWidth;
11853 g_attributeItem.size = index;
11854 return &g_attributeItem;
11855 }
11856
ResetCheckboxMark(ArkUI_NodeHandle node)11857 void ResetCheckboxMark(ArkUI_NodeHandle node)
11858 {
11859 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->resetMark(node->uiNodeHandle);
11860 }
11861
SetCheckboxShape(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11862 int32_t SetCheckboxShape(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11863 {
11864 if (item->size == 0 || !CheckAttributeIsCheckboxShape(item->value[0].i32)) {
11865 return ERROR_CODE_PARAM_INVALID;
11866 }
11867 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setCheckboxShape(node->uiNodeHandle, item->value[0].i32);
11868 return ERROR_CODE_NO_ERROR;
11869 }
11870
GetCheckboxShape(ArkUI_NodeHandle node)11871 const ArkUI_AttributeItem* GetCheckboxShape(ArkUI_NodeHandle node)
11872 {
11873 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckboxShape(node->uiNodeHandle);
11874 g_numberValues[0].i32 = resultValue;
11875 return &g_attributeItem;
11876 }
11877
ResetCheckboxShape(ArkUI_NodeHandle node)11878 void ResetCheckboxShape(ArkUI_NodeHandle node)
11879 {
11880 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->resetCheckboxShape(node->uiNodeHandle);
11881 }
11882
SetCheckboxName(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11883 int32_t SetCheckboxName(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11884 {
11885 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11886 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setCheckboxName(
11887 node->uiNodeHandle, item->string);
11888 return ERROR_CODE_NO_ERROR;
11889 }
11890
GetCheckboxName(ArkUI_NodeHandle node)11891 const ArkUI_AttributeItem* GetCheckboxName(ArkUI_NodeHandle node)
11892 {
11893 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckboxName(
11894 node->uiNodeHandle);
11895 g_attributeItem.string = resultValue;
11896 return &g_attributeItem;
11897 }
11898
ResetCheckboxName(ArkUI_NodeHandle node)11899 void ResetCheckboxName(ArkUI_NodeHandle node)
11900 {
11901 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setCheckboxName(
11902 node->uiNodeHandle, "");
11903 }
11904
SetCheckboxGroup(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11905 int32_t SetCheckboxGroup(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11906 {
11907 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11908 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setCheckboxGroup(
11909 node->uiNodeHandle, item->string);
11910 return ERROR_CODE_NO_ERROR;
11911 }
11912
GetCheckboxGroup(ArkUI_NodeHandle node)11913 const ArkUI_AttributeItem* GetCheckboxGroup(ArkUI_NodeHandle node)
11914 {
11915 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->getCheckboxName(
11916 node->uiNodeHandle);
11917 g_attributeItem.string = resultValue;
11918 return &g_attributeItem;
11919 }
11920
ResetCheckboxGroup(ArkUI_NodeHandle node)11921 void ResetCheckboxGroup(ArkUI_NodeHandle node)
11922 {
11923 GetFullImpl()->getNodeModifiers()->getCheckboxModifier()->setCheckboxGroup(
11924 node->uiNodeHandle, "");
11925 }
11926
SetCheckboxGroupName(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11927 int32_t SetCheckboxGroupName(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11928 {
11929 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11930 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupName(
11931 node->uiNodeHandle, item->string);
11932 return ERROR_CODE_NO_ERROR;
11933 }
11934
GetCheckboxGroupName(ArkUI_NodeHandle node)11935 const ArkUI_AttributeItem* GetCheckboxGroupName(ArkUI_NodeHandle node)
11936 {
11937 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupName(
11938 node->uiNodeHandle);
11939 g_attributeItem.string = resultValue;
11940 return &g_attributeItem;
11941 }
11942
ResetCheckboxGroupName(ArkUI_NodeHandle node)11943 void ResetCheckboxGroupName(ArkUI_NodeHandle node)
11944 {
11945 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupName(
11946 node->uiNodeHandle, "");
11947 }
11948
SetCheckboxGroupSelectAll(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11949 int32_t SetCheckboxGroupSelectAll(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11950 {
11951 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11952 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
11953 return ERROR_CODE_PARAM_INVALID;
11954 }
11955 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupSelectAll(node->uiNodeHandle, item->value[0].i32);
11956 return ERROR_CODE_NO_ERROR;
11957 }
11958
GetCheckboxGroupSelectAll(ArkUI_NodeHandle node)11959 const ArkUI_AttributeItem* GetCheckboxGroupSelectAll(ArkUI_NodeHandle node)
11960 {
11961 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupSelectAll(node->uiNodeHandle);
11962 g_numberValues[0].i32 = resultValue;
11963 return &g_attributeItem;
11964 }
11965
ResetCheckboxGroupSelectAll(ArkUI_NodeHandle node)11966 void ResetCheckboxGroupSelectAll(ArkUI_NodeHandle node)
11967 {
11968 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectAll(node->uiNodeHandle);
11969 }
11970
SetCheckboxGroupSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11971 int32_t SetCheckboxGroupSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11972 {
11973 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11974 if (item->size == 0) {
11975 return ERROR_CODE_PARAM_INVALID;
11976 }
11977 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupSelectedColor(node->uiNodeHandle, item->value[0].u32);
11978 return ERROR_CODE_NO_ERROR;
11979 }
11980
GetCheckboxGroupSelectedColor(ArkUI_NodeHandle node)11981 const ArkUI_AttributeItem* GetCheckboxGroupSelectedColor(ArkUI_NodeHandle node)
11982 {
11983 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupSelectedColor(node->uiNodeHandle);
11984 g_numberValues[0].u32 = resultValue;
11985 return &g_attributeItem;
11986 }
11987
ResetCheckboxGroupSelectedColor(ArkUI_NodeHandle node)11988 void ResetCheckboxGroupSelectedColor(ArkUI_NodeHandle node)
11989 {
11990 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupSelectedColor(node->uiNodeHandle);
11991 }
11992
SetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)11993 int32_t SetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
11994 {
11995 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
11996 if (item->size == 0) {
11997 return ERROR_CODE_PARAM_INVALID;
11998 }
11999 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupUnSelectedColor(
12000 node->uiNodeHandle, item->value[0].u32);
12001 return ERROR_CODE_NO_ERROR;
12002 }
12003
GetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node)12004 const ArkUI_AttributeItem* GetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node)
12005 {
12006 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupUnSelectedColor(node->uiNodeHandle);
12007 g_numberValues[0].u32 = resultValue;
12008 return &g_attributeItem;
12009 }
12010
ResetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node)12011 void ResetCheckboxGroupUnSelectedColor(ArkUI_NodeHandle node)
12012 {
12013 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupUnSelectedColor(node->uiNodeHandle);
12014 }
12015
SetCheckboxGroupMark(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12016 int32_t SetCheckboxGroupMark(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12017 {
12018 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
12019 if (item->size == 0) {
12020 return ERROR_CODE_PARAM_INVALID;
12021 }
12022 int strokeColor = item->value[0].u32;
12023 double size = -1;
12024 if (item->size > 1) {
12025 if (GreatOrEqual(item->value[1].f32, 0.0f)) {
12026 size = item->value[1].f32;
12027 }
12028 }
12029 double strokeWidth = 2;
12030 if (item->size > ALLOW_SIZE_2) {
12031 if (GreatOrEqual(item->value[2].f32, 0.0f)) {
12032 strokeWidth = item->value[2].f32;
12033 }
12034 }
12035 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupMark(
12036 node->uiNodeHandle, strokeColor, size, strokeWidth);
12037 return ERROR_CODE_NO_ERROR;
12038 }
12039
GetCheckboxGroupMark(ArkUI_NodeHandle node)12040 const ArkUI_AttributeItem* GetCheckboxGroupMark(ArkUI_NodeHandle node)
12041 {
12042 auto strokeColor = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupMarkColor(node->uiNodeHandle);
12043 auto size = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupMarkSize(node->uiNodeHandle);
12044 auto strokeWidth = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupMarkWidth(node->uiNodeHandle);
12045 int index = 0;
12046 g_numberValues[index++].u32 = strokeColor;
12047 g_numberValues[index++].f32 = size;
12048 g_numberValues[index++].f32 = strokeWidth;
12049 g_attributeItem.size = index;
12050 return &g_attributeItem;
12051 }
12052
ResetCheckboxGroupMark(ArkUI_NodeHandle node)12053 void ResetCheckboxGroupMark(ArkUI_NodeHandle node)
12054 {
12055 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupMark(node->uiNodeHandle);
12056 }
12057
SetCheckboxGroupShape(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12058 int32_t SetCheckboxGroupShape(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12059 {
12060 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
12061 if (item->size == 0 || !CheckAttributeIsCheckboxShape(item->value[0].i32)) {
12062 return ERROR_CODE_PARAM_INVALID;
12063 }
12064 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->setCheckboxGroupStyle(node->uiNodeHandle, item->value[0].i32);
12065 return ERROR_CODE_NO_ERROR;
12066 }
12067
GetCheckboxGroupShape(ArkUI_NodeHandle node)12068 const ArkUI_AttributeItem* GetCheckboxGroupShape(ArkUI_NodeHandle node)
12069 {
12070 auto resultValue = GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->getCheckboxGroupStyle(node->uiNodeHandle);
12071 g_numberValues[0].i32 = resultValue;
12072 return &g_attributeItem;
12073 }
12074
ResetCheckboxGroupShape(ArkUI_NodeHandle node)12075 void ResetCheckboxGroupShape(ArkUI_NodeHandle node)
12076 {
12077 GetFullImpl()->getNodeModifiers()->getCheckboxGroupModifier()->resetCheckboxGroupStyle(node->uiNodeHandle);
12078 }
12079
SetSliderBlockColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12080 int32_t SetSliderBlockColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12081 {
12082 if (item->size == 0) {
12083 return ERROR_CODE_PARAM_INVALID;
12084 }
12085
12086 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setBlockColor(node->uiNodeHandle, item->value[0].u32);
12087 return ERROR_CODE_NO_ERROR;
12088 }
12089
GetSliderBlockColor(ArkUI_NodeHandle node)12090 const ArkUI_AttributeItem* GetSliderBlockColor(ArkUI_NodeHandle node)
12091 {
12092 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getBlockColor(node->uiNodeHandle);
12093 g_numberValues[0].u32 = resultValue;
12094 return &g_attributeItem;
12095 }
12096
ResetSliderBlockColor(ArkUI_NodeHandle node)12097 void ResetSliderBlockColor(ArkUI_NodeHandle node)
12098 {
12099 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetBlockColor(node->uiNodeHandle);
12100 }
12101
SetSliderTrackColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12102 int32_t SetSliderTrackColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12103 {
12104 if (item->size == 0) {
12105 return ERROR_CODE_PARAM_INVALID;
12106 }
12107 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setTrackBackgroundColor(
12108 node->uiNodeHandle, item->value[0].u32);
12109 return ERROR_CODE_NO_ERROR;
12110 }
12111
GetSliderTrackColor(ArkUI_NodeHandle node)12112 const ArkUI_AttributeItem* GetSliderTrackColor(ArkUI_NodeHandle node)
12113 {
12114 auto resultValue =
12115 GetFullImpl()->getNodeModifiers()->getSliderModifier()->getTrackBackgroundColor(node->uiNodeHandle);
12116 g_numberValues[0].u32 = resultValue;
12117 return &g_attributeItem;
12118 }
12119
ResetSliderTrackColor(ArkUI_NodeHandle node)12120 void ResetSliderTrackColor(ArkUI_NodeHandle node)
12121 {
12122 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetTrackBackgroundColor(node->uiNodeHandle);
12123 }
12124
SetSliderSelectedColor(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12125 int32_t SetSliderSelectedColor(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12126 {
12127 if (item->size == 0) {
12128 return ERROR_CODE_PARAM_INVALID;
12129 }
12130 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setSelectColor(node->uiNodeHandle, item->value[0].u32);
12131 return ERROR_CODE_NO_ERROR;
12132 }
12133
GetSliderSelectedColor(ArkUI_NodeHandle node)12134 const ArkUI_AttributeItem* GetSliderSelectedColor(ArkUI_NodeHandle node)
12135 {
12136 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getSelectColor(node->uiNodeHandle);
12137 g_numberValues[0].u32 = resultValue;
12138 return &g_attributeItem;
12139 }
12140
ResetSliderSelectedColor(ArkUI_NodeHandle node)12141 void ResetSliderSelectedColor(ArkUI_NodeHandle node)
12142 {
12143 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSelectColor(node->uiNodeHandle);
12144 }
12145
SetSliderShowSteps(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12146 int32_t SetSliderShowSteps(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12147 {
12148 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
12149 return ERROR_CODE_PARAM_INVALID;
12150 }
12151 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setShowSteps(node->uiNodeHandle, item->value[0].i32);
12152 return ERROR_CODE_NO_ERROR;
12153 }
12154
GetSliderShowSteps(ArkUI_NodeHandle node)12155 const ArkUI_AttributeItem* GetSliderShowSteps(ArkUI_NodeHandle node)
12156 {
12157 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getShowSteps(node->uiNodeHandle);
12158 g_numberValues[0].i32 = resultValue;
12159 return &g_attributeItem;
12160 }
12161
ResetSliderShowSteps(ArkUI_NodeHandle node)12162 void ResetSliderShowSteps(ArkUI_NodeHandle node)
12163 {
12164 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetShowSteps(node->uiNodeHandle);
12165 }
12166
SetSliderBlockStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12167 int32_t SetSliderBlockStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12168 {
12169 if (item->size == 0 || !CheckAttributeIsSliderBlockStyle(item->value[0].i32)) {
12170 return ERROR_CODE_PARAM_INVALID;
12171 }
12172 int style = item->value[0].i32;
12173
12174 if (style == NUM_1) {
12175 if (item->string == nullptr) {
12176 return ERROR_CODE_PARAM_INVALID;
12177 }
12178 // image
12179 std::string src(item->string);
12180 std::string bundle;
12181 std::string module;
12182 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setSliderBlockImage(
12183 node->uiNodeHandle, src.c_str(), bundle.c_str(), module.c_str());
12184 } else if (style == NUM_2) {
12185 auto* fullImpl = GetFullImpl();
12186 if (item->value[1].i32 == ArkUI_ClipType::ARKUI_CLIP_TYPE_PATH) {
12187 ArkUI_Float32 pathAttributes[NUM_2];
12188 if (LessNotEqual(item->value[NUM_2].f32, 0.0f) || LessNotEqual(item->value[NUM_3].f32, 0.0f)) {
12189 return ERROR_CODE_PARAM_INVALID;
12190 } else {
12191 pathAttributes[NUM_0] = item->value[NUM_2].f32;
12192 pathAttributes[NUM_1] = item->value[NUM_3].f32;
12193 }
12194
12195 fullImpl->getNodeModifiers()->getSliderModifier()->setSliderBlockPath(
12196 node->uiNodeHandle, "path", &pathAttributes, item->string);
12197 } else {
12198 ArkUI_Float32 attributes[item->size - NUM_2];
12199 for (int i = NUM_2; i < item->size; i++) {
12200 if (LessNotEqual(item->value[i].f32, 0.0f)) {
12201 return ERROR_CODE_PARAM_INVALID;
12202 } else {
12203 attributes[i - NUM_2] = item->value[i].f32;
12204 }
12205 }
12206 fullImpl->getNodeModifiers()->getSliderModifier()->setSliderBlockShape(
12207 node->uiNodeHandle, ShapeToString(item->value[1].i32).c_str(), attributes, item->size - NUM_2);
12208 }
12209 }
12210 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setSliderBlockType(node->uiNodeHandle, style);
12211 return ERROR_CODE_NO_ERROR;
12212 }
12213
GetSliderBlockStyle(ArkUI_NodeHandle node)12214 const ArkUI_AttributeItem* GetSliderBlockStyle(ArkUI_NodeHandle node)
12215 {
12216 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getBlockType(node->uiNodeHandle);
12217 //index 0 style
12218 g_numberValues[0].i32 = resultValue;
12219 switch (resultValue) {
12220 case NUM_1: {
12221 auto imageValue =
12222 GetFullImpl()->getNodeModifiers()->getSliderModifier()->getBlockImageValue(node->uiNodeHandle);
12223 g_attributeItem.string = imageValue;
12224 break;
12225 }
12226 case NUM_2: {
12227 ArkUI_Float32 values[NUM_5];
12228 auto pathCommands = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getSliderBlockShape(
12229 node->uiNodeHandle, &values);
12230 //index 1 shapeType
12231 g_numberValues[1].i32 = values[0];
12232 //index 2 width
12233 g_numberValues[2].f32 = values[1];
12234 //index 3 height
12235 g_numberValues[3].f32 = values[2];
12236 g_attributeItem.size = NUM_3;
12237 ArkUI_ShapeType shapeType = static_cast<ArkUI_ShapeType>(values[0]);
12238 if (shapeType == ArkUI_ShapeType::ARKUI_SHAPE_TYPE_RECTANGLE) {
12239 //index 4 width
12240 g_numberValues[4].f32 = values[3];
12241 //index 5 height
12242 g_numberValues[5].f32 = values[4];
12243 g_attributeItem.size = NUM_6;
12244 } else if (shapeType == ArkUI_ShapeType::ARKUI_SHAPE_TYPE_PATH) {
12245 g_attributeItem.string = pathCommands;
12246 }
12247 break;
12248 }
12249 default:
12250 break;
12251 }
12252
12253 return &g_attributeItem;
12254 }
12255
ResetSliderBlockStyle(ArkUI_NodeHandle node)12256 void ResetSliderBlockStyle(ArkUI_NodeHandle node)
12257 {
12258 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSliderBlockImage(node->uiNodeHandle);
12259 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSliderBlockShape(node->uiNodeHandle);
12260 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSliderBlockType(node->uiNodeHandle);
12261 }
12262
SetSliderValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12263 int32_t SetSliderValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12264 {
12265 if (item->size == 0) {
12266 return ERROR_CODE_PARAM_INVALID;
12267 }
12268 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setSliderValue(node->uiNodeHandle, item->value[0].f32);
12269 return ERROR_CODE_NO_ERROR;
12270 }
12271
GetSliderValue(ArkUI_NodeHandle node)12272 const ArkUI_AttributeItem* GetSliderValue(ArkUI_NodeHandle node)
12273 {
12274 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getSliderValue(node->uiNodeHandle);
12275 g_numberValues[0].f32 = resultValue;
12276 return &g_attributeItem;
12277 }
12278
ResetSliderValue(ArkUI_NodeHandle node)12279 void ResetSliderValue(ArkUI_NodeHandle node)
12280 {
12281 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSliderValue(node->uiNodeHandle);
12282 }
12283
SetSliderMinValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12284 int32_t SetSliderMinValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12285 {
12286 if (item->size == 0) {
12287 return ERROR_CODE_PARAM_INVALID;
12288 }
12289 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setMinLabel(node->uiNodeHandle, item->value[0].f32);
12290 return ERROR_CODE_NO_ERROR;
12291 }
12292
GetSliderMinValue(ArkUI_NodeHandle node)12293 const ArkUI_AttributeItem* GetSliderMinValue(ArkUI_NodeHandle node)
12294 {
12295 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getMinLabel(node->uiNodeHandle);
12296 g_numberValues[0].f32 = resultValue;
12297 return &g_attributeItem;
12298 }
12299
ResetSliderMinValue(ArkUI_NodeHandle node)12300 void ResetSliderMinValue(ArkUI_NodeHandle node)
12301 {
12302 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetMinLabel(node->uiNodeHandle);
12303 }
12304
SetSliderMaxValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12305 int32_t SetSliderMaxValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12306 {
12307 if (item->size == 0) {
12308 return ERROR_CODE_PARAM_INVALID;
12309 }
12310 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setMaxLabel(node->uiNodeHandle, item->value[0].f32);
12311 return ERROR_CODE_NO_ERROR;
12312 }
12313
GetSliderMaxValue(ArkUI_NodeHandle node)12314 const ArkUI_AttributeItem* GetSliderMaxValue(ArkUI_NodeHandle node)
12315 {
12316 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getMaxLabel(node->uiNodeHandle);
12317 g_numberValues[0].f32 = resultValue;
12318 return &g_attributeItem;
12319 }
12320
ResetSliderMaxValue(ArkUI_NodeHandle node)12321 void ResetSliderMaxValue(ArkUI_NodeHandle node)
12322 {
12323 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetMaxLabel(node->uiNodeHandle);
12324 }
12325
SetSliderStep(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12326 int32_t SetSliderStep(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12327 {
12328 if (item->size == 0 || LessNotEqual(item->value[0].f32, SLIDER_STEP_MIN_F)) {
12329 return ERROR_CODE_PARAM_INVALID;
12330 }
12331 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setStep(node->uiNodeHandle, item->value[0].f32);
12332 return ERROR_CODE_NO_ERROR;
12333 }
12334
GetSliderStep(ArkUI_NodeHandle node)12335 const ArkUI_AttributeItem* GetSliderStep(ArkUI_NodeHandle node)
12336 {
12337 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getStep(node->uiNodeHandle);
12338 g_numberValues[0].f32 = resultValue;
12339 return &g_attributeItem;
12340 }
12341
ResetSliderStep(ArkUI_NodeHandle node)12342 void ResetSliderStep(ArkUI_NodeHandle node)
12343 {
12344 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetStep(node->uiNodeHandle);
12345 }
12346
SetSliderDirection(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12347 int32_t SetSliderDirection(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12348 {
12349 if (item->size == 0 || !CheckAttributeIsSliderDirection(item->value[0].i32)) {
12350 return ERROR_CODE_PARAM_INVALID;
12351 }
12352 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setDirection(node->uiNodeHandle, item->value[0].i32);
12353 return ERROR_CODE_NO_ERROR;
12354 }
12355
GetSliderDirection(ArkUI_NodeHandle node)12356 const ArkUI_AttributeItem* GetSliderDirection(ArkUI_NodeHandle node)
12357 {
12358 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getDirection(node->uiNodeHandle);
12359 g_numberValues[0].i32 = resultValue;
12360 return &g_attributeItem;
12361 }
12362
ResetSliderDirection(ArkUI_NodeHandle node)12363 void ResetSliderDirection(ArkUI_NodeHandle node)
12364 {
12365 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetDirection(node->uiNodeHandle);
12366 }
12367
SetSliderReverse(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12368 int32_t SetSliderReverse(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12369 {
12370 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
12371 return ERROR_CODE_PARAM_INVALID;
12372 }
12373 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setReverse(node->uiNodeHandle, item->value[0].i32);
12374 return ERROR_CODE_NO_ERROR;
12375 }
12376
GetSliderReverse(ArkUI_NodeHandle node)12377 const ArkUI_AttributeItem* GetSliderReverse(ArkUI_NodeHandle node)
12378 {
12379 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getReverse(node->uiNodeHandle);
12380 g_numberValues[0].i32 = resultValue;
12381 return &g_attributeItem;
12382 }
12383
ResetSliderReverse(ArkUI_NodeHandle node)12384 void ResetSliderReverse(ArkUI_NodeHandle node)
12385 {
12386 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetReverse(node->uiNodeHandle);
12387 }
12388
SetSliderStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12389 int32_t SetSliderStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12390 {
12391 if (item->size == 0 || !CheckAttributeIsSliderStyle(item->value[0].i32)) {
12392 return ERROR_CODE_PARAM_INVALID;
12393 }
12394 GetFullImpl()->getNodeModifiers()->getSliderModifier()->setSliderStyle(node->uiNodeHandle, item->value[0].i32);
12395 return ERROR_CODE_NO_ERROR;
12396 }
12397
GetSliderStyle(ArkUI_NodeHandle node)12398 const ArkUI_AttributeItem* GetSliderStyle(ArkUI_NodeHandle node)
12399 {
12400 auto resultValue = GetFullImpl()->getNodeModifiers()->getSliderModifier()->getSliderStyle(node->uiNodeHandle);
12401 g_numberValues[0].i32 = resultValue;
12402 return &g_attributeItem;
12403 }
12404
ResetSliderStyle(ArkUI_NodeHandle node)12405 void ResetSliderStyle(ArkUI_NodeHandle node)
12406 {
12407 GetFullImpl()->getNodeModifiers()->getSliderModifier()->resetSliderStyle(node->uiNodeHandle);
12408 }
12409
SetSliderTrackThickness(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12410 int32_t SetSliderTrackThickness(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12411 {
12412 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
12413 if (LessNotEqual(actualSize, 0) || LessOrEqual(item->value[NUM_0].f32, 0.0f)) {
12414 return ERROR_CODE_PARAM_INVALID;
12415 }
12416
12417 auto* fullImpl = GetFullImpl();
12418 fullImpl->getNodeModifiers()->getSliderModifier()->setThickness(
12419 node->uiNodeHandle, item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP));
12420 return ERROR_CODE_NO_ERROR;
12421 }
12422
GetSliderTrackThickness(ArkUI_NodeHandle node)12423 const ArkUI_AttributeItem* GetSliderTrackThickness(ArkUI_NodeHandle node)
12424 {
12425 auto modifier = GetFullImpl()->getNodeModifiers()->getSliderModifier();
12426 g_numberValues[0].f32 = modifier->getThickness(node->uiNodeHandle, GetDefaultUnit(node, UNIT_VP));
12427 if (LessOrEqual(g_numberValues[0].f32, 0.0f)) {
12428 return nullptr;
12429 }
12430 return &g_attributeItem;
12431 }
12432
ResetSliderTrackThickness(ArkUI_NodeHandle node)12433 void ResetSliderTrackThickness(ArkUI_NodeHandle node)
12434 {
12435 auto* fullImpl = GetFullImpl();
12436 fullImpl->getNodeModifiers()->getSliderModifier()->resetThickness(node->uiNodeHandle);
12437 }
12438
SetSliderValidSlideRange(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12439 int32_t SetSliderValidSlideRange(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12440 {
12441 if (!item || std::isnan(item->value[NUM_0].f32) || std::isnan(item->value[NUM_1].f32)) {
12442 return ERROR_CODE_PARAM_INVALID;
12443 }
12444
12445 auto* fullImpl = GetFullImpl();
12446 fullImpl->getNodeModifiers()->getSliderModifier()->setSliderValidSlideRange(
12447 node->uiNodeHandle, item->value[NUM_0].f32, item->value[NUM_1].f32);
12448 return ERROR_CODE_NO_ERROR;
12449 }
12450
GetSliderValidSlideRange(ArkUI_NodeHandle node)12451 const ArkUI_AttributeItem* GetSliderValidSlideRange(ArkUI_NodeHandle node)
12452 {
12453 auto modifier = GetFullImpl()->getNodeModifiers()->getSliderModifier();
12454 ArkUISliderValidSlideRange validRange = modifier->getSliderValidSlideRange(node->uiNodeHandle);
12455 if (std::isnan(validRange.from) || std::isnan(validRange.to)) {
12456 return nullptr;
12457 }
12458 g_numberValues[NUM_0].f32 = validRange.from;
12459 g_numberValues[NUM_1].f32 = validRange.to;
12460 return &g_attributeItem;
12461 }
12462
ResetSliderValidSlideRange(ArkUI_NodeHandle node)12463 void ResetSliderValidSlideRange(ArkUI_NodeHandle node)
12464 {
12465 auto* fullImpl = GetFullImpl();
12466 fullImpl->getNodeModifiers()->getSliderModifier()->resetSliderValidSlideRange(node->uiNodeHandle);
12467 }
12468
SetRefreshRefreshing(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12469 int32_t SetRefreshRefreshing(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12470 {
12471 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
12472 return ERROR_CODE_PARAM_INVALID;
12473 }
12474 GetFullImpl()->getNodeModifiers()->getRefreshModifier()->setRefreshing(
12475 node->uiNodeHandle, item->value[0].i32);
12476 return ERROR_CODE_NO_ERROR;
12477 }
12478
GetRefreshRefreshing(ArkUI_NodeHandle node)12479 const ArkUI_AttributeItem* GetRefreshRefreshing(ArkUI_NodeHandle node)
12480 {
12481 auto resultValue = GetFullImpl()->getNodeModifiers()->getRefreshModifier()->getRefreshing(node->uiNodeHandle);
12482 g_numberValues[0].i32 = resultValue;
12483 return &g_attributeItem;
12484 }
12485
SetRefreshContent(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12486 int32_t SetRefreshContent(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12487 {
12488 if (!item->object) {
12489 return ERROR_CODE_PARAM_INVALID;
12490 }
12491 auto fullImpl = GetFullImpl();
12492 auto contentNodeHandle = reinterpret_cast<ArkUI_NodeHandle>(item->object);
12493 fullImpl->getNodeModifiers()->getRefreshModifier()->setRefreshContent(
12494 node->uiNodeHandle, contentNodeHandle->uiNodeHandle);
12495 return ERROR_CODE_NO_ERROR;
12496 }
12497
ResetRefreshContent(ArkUI_NodeHandle node)12498 void ResetRefreshContent(ArkUI_NodeHandle node)
12499 {
12500 GetFullImpl()->getNodeModifiers()->getRefreshModifier()->setRefreshContent(node->uiNodeHandle, nullptr);
12501 }
12502
SetRefreshPullDownRatio(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12503 int32_t SetRefreshPullDownRatio(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12504 {
12505 if (item->size == 0) {
12506 return ERROR_CODE_PARAM_INVALID;
12507 }
12508 if (LessNotEqual(item->value[0].f32, 0.0f) || GreatNotEqual(item->value[0].f32, 1.0f)) {
12509 return ERROR_CODE_PARAM_INVALID;
12510 }
12511 // already check in entry point.
12512 auto* fullImpl = GetFullImpl();
12513 fullImpl->getNodeModifiers()->getRefreshModifier()->setPullDownRatio(node->uiNodeHandle, item->value[0].f32);
12514 return ERROR_CODE_NO_ERROR;
12515 }
12516
ResetRefreshPullDownRatio(ArkUI_NodeHandle node)12517 void ResetRefreshPullDownRatio(ArkUI_NodeHandle node)
12518 {
12519 auto* fullImpl = GetFullImpl();
12520 fullImpl->getNodeModifiers()->getRefreshModifier()->resetPullDownRatio(node->uiNodeHandle);
12521 }
12522
GetRefreshPullDownRatio(ArkUI_NodeHandle node)12523 const ArkUI_AttributeItem* GetRefreshPullDownRatio(ArkUI_NodeHandle node)
12524 {
12525 auto resultValue = GetFullImpl()->getNodeModifiers()->getRefreshModifier()->getPullDownRatio(node->uiNodeHandle);
12526 g_numberValues[0].f32 = resultValue;
12527 return &g_attributeItem;
12528 }
12529
SetRefreshOffset(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12530 int32_t SetRefreshOffset(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12531 {
12532 if (item->size == 0) {
12533 return ERROR_CODE_PARAM_INVALID;
12534 }
12535 if (LessOrEqual(item->value[0].f32, 0.0f)) {
12536 return ERROR_CODE_PARAM_INVALID;
12537 }
12538 // already check in entry point.
12539 auto* fullImpl = GetFullImpl();
12540 int32_t unit = GetDefaultUnit(node, UNIT_VP);
12541 fullImpl->getNodeModifiers()->getRefreshModifier()->setRefreshOffset(node->uiNodeHandle, item->value[0].f32, unit);
12542 return ERROR_CODE_NO_ERROR;
12543 }
12544
ResetRefreshOffset(ArkUI_NodeHandle node)12545 void ResetRefreshOffset(ArkUI_NodeHandle node)
12546 {
12547 auto* fullImpl = GetFullImpl();
12548 fullImpl->getNodeModifiers()->getRefreshModifier()->resetRefreshOffset(node->uiNodeHandle);
12549 }
12550
GetRefreshOffset(ArkUI_NodeHandle node)12551 const ArkUI_AttributeItem* GetRefreshOffset(ArkUI_NodeHandle node)
12552 {
12553 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
12554 auto resultValue =
12555 GetFullImpl()->getNodeModifiers()->getRefreshModifier()->getRefreshOffset(node->uiNodeHandle, unit);
12556 g_numberValues[0].f32 = resultValue;
12557 return &g_attributeItem;
12558 }
12559
SetPullToRefresh(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12560 int32_t SetPullToRefresh(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12561 {
12562 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
12563 return ERROR_CODE_PARAM_INVALID;
12564 }
12565 GetFullImpl()->getNodeModifiers()->getRefreshModifier()->setPullToRefresh(
12566 node->uiNodeHandle, item->value[0].i32);
12567 return ERROR_CODE_NO_ERROR;
12568 }
12569
ResetPullToRefresh(ArkUI_NodeHandle node)12570 void ResetPullToRefresh(ArkUI_NodeHandle node)
12571 {
12572 auto* fullImpl = GetFullImpl();
12573 fullImpl->getNodeModifiers()->getRefreshModifier()->resetPullToRefresh(node->uiNodeHandle);
12574 }
12575
GetPullToRefresh(ArkUI_NodeHandle node)12576 const ArkUI_AttributeItem* GetPullToRefresh(ArkUI_NodeHandle node)
12577 {
12578 auto resultValue = GetFullImpl()->getNodeModifiers()->getRefreshModifier()->getPullToRefresh(node->uiNodeHandle);
12579 g_numberValues[0].i32 = resultValue;
12580 return &g_attributeItem;
12581 }
12582 // waterFlow attribute
SetLayoutDirection(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12583 int32_t SetLayoutDirection(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12584 {
12585 if (item->size == 0) {
12586 return ERROR_CODE_PARAM_INVALID;
12587 }
12588 if (!InRegion(NUM_0, NUM_3, item->value[NUM_0].i32)) {
12589 return ERROR_CODE_PARAM_INVALID;
12590 }
12591 auto* fullImpl = GetFullImpl();
12592 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setLayoutDirection(node->uiNodeHandle, item->value[0].i32);
12593 return ERROR_CODE_NO_ERROR;
12594 }
12595
ResetLayoutDirection(ArkUI_NodeHandle node)12596 void ResetLayoutDirection(ArkUI_NodeHandle node)
12597 {
12598 auto* fullImpl = GetFullImpl();
12599 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetLayoutDirection(node->uiNodeHandle);
12600 }
12601
GetLayoutDirection(ArkUI_NodeHandle node)12602 const ArkUI_AttributeItem* GetLayoutDirection(ArkUI_NodeHandle node)
12603 {
12604 auto modifier = GetFullImpl()->getNodeModifiers()->getWaterFlowModifier();
12605 g_numberValues[0].i32 = modifier->getLayoutDirection(node->uiNodeHandle);
12606 return &g_attributeItem;
12607 }
12608
SetColumnsTemplate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12609 int32_t SetColumnsTemplate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12610 {
12611 auto* fullImpl = GetFullImpl();
12612 if (!CheckAttributeString(item)) {
12613 return ERROR_CODE_PARAM_INVALID;
12614 }
12615 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setColumnsTemplate(node->uiNodeHandle, item->string);
12616 return ERROR_CODE_NO_ERROR;
12617 }
12618
ResetColumnsTemplate(ArkUI_NodeHandle node)12619 void ResetColumnsTemplate(ArkUI_NodeHandle node)
12620 {
12621 auto* fullImpl = GetFullImpl();
12622 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetColumnsTemplate(node->uiNodeHandle);
12623 }
12624
GetColumnsTemplate(ArkUI_NodeHandle node)12625 const ArkUI_AttributeItem* GetColumnsTemplate(ArkUI_NodeHandle node)
12626 {
12627 auto fullImpl = GetFullImpl();
12628 auto columnsTemplate = fullImpl->getNodeModifiers()->getWaterFlowModifier()->getColumnsTemplate(node->uiNodeHandle);
12629 g_attributeItem.string = columnsTemplate;
12630 return &g_attributeItem;
12631 }
12632
SetRowsTemplate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12633 int32_t SetRowsTemplate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12634 {
12635 auto* fullImpl = GetFullImpl();
12636 if (!CheckAttributeString(item)) {
12637 return ERROR_CODE_PARAM_INVALID;
12638 }
12639 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setRowsTemplate(node->uiNodeHandle, item->string);
12640 return ERROR_CODE_NO_ERROR;
12641 }
12642
ResetRowsTemplate(ArkUI_NodeHandle node)12643 void ResetRowsTemplate(ArkUI_NodeHandle node)
12644 {
12645 auto* fullImpl = GetFullImpl();
12646 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setRowsTemplate(node->uiNodeHandle, "1fr");
12647 }
12648
GetRowsTemplate(ArkUI_NodeHandle node)12649 const ArkUI_AttributeItem* GetRowsTemplate(ArkUI_NodeHandle node)
12650 {
12651 auto fullImpl = GetFullImpl();
12652 auto rowsTemplate = fullImpl->getNodeModifiers()->getWaterFlowModifier()->getRowsTemplate(node->uiNodeHandle);
12653 g_attributeItem.string = rowsTemplate;
12654 return &g_attributeItem;
12655 }
12656
SetWaterFlowColumnsGap(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12657 int32_t SetWaterFlowColumnsGap(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12658 {
12659 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
12660 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
12661 return ERROR_CODE_PARAM_INVALID;
12662 }
12663 auto* fullImpl = GetFullImpl();
12664
12665 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setColumnsGap(
12666 node->uiNodeHandle, item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr);
12667 return ERROR_CODE_NO_ERROR;
12668 }
12669
ResetWaterFlowColumnsGap(ArkUI_NodeHandle node)12670 void ResetWaterFlowColumnsGap(ArkUI_NodeHandle node)
12671 {
12672 auto* fullImpl = GetFullImpl();
12673 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetColumnsGap(node->uiNodeHandle);
12674 }
12675
GetWaterFlowColumnsGap(ArkUI_NodeHandle node)12676 const ArkUI_AttributeItem* GetWaterFlowColumnsGap(ArkUI_NodeHandle node)
12677 {
12678 auto modifier = GetFullImpl()->getNodeModifiers()->getWaterFlowModifier();
12679 g_numberValues[0].f32 = modifier->getColumnsGap(node->uiNodeHandle);
12680 return &g_attributeItem;
12681 }
12682
SetWaterFlowRowsGap(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12683 int32_t SetWaterFlowRowsGap(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12684 {
12685 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
12686 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
12687 return ERROR_CODE_PARAM_INVALID;
12688 }
12689 auto* fullImpl = GetFullImpl();
12690 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setRowsGap(
12691 node->uiNodeHandle, item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr);
12692 return ERROR_CODE_NO_ERROR;
12693 }
12694
ResetWaterFlowRowsGap(ArkUI_NodeHandle node)12695 void ResetWaterFlowRowsGap(ArkUI_NodeHandle node)
12696 {
12697 auto* fullImpl = GetFullImpl();
12698 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetRowsGap(node->uiNodeHandle);
12699 }
12700
GetWaterFlowRowsGap(ArkUI_NodeHandle node)12701 const ArkUI_AttributeItem* GetWaterFlowRowsGap(ArkUI_NodeHandle node)
12702 {
12703 auto modifier = GetFullImpl()->getNodeModifiers()->getWaterFlowModifier();
12704 g_numberValues[0].f32 = modifier->getRowsGap(node->uiNodeHandle);
12705 return &g_attributeItem;
12706 }
12707
SetWaterFlowNodeAdapter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12708 int32_t SetWaterFlowNodeAdapter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12709 {
12710 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
12711 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
12712 auto* nodeAdapter = reinterpret_cast<ArkUINodeAdapterHandle>(item->object);
12713 return GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->setNodeAdapter(node->uiNodeHandle, nodeAdapter);
12714 }
12715
ResetWaterFlowNodeAdapter(ArkUI_NodeHandle node)12716 void ResetWaterFlowNodeAdapter(ArkUI_NodeHandle node)
12717 {
12718 // already check in entry point.
12719 auto* fullImpl = GetFullImpl();
12720
12721 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetNodeAdapter(node->uiNodeHandle);
12722 }
12723
GetWaterFlowNodeAdapter(ArkUI_NodeHandle node)12724 const ArkUI_AttributeItem* GetWaterFlowNodeAdapter(ArkUI_NodeHandle node)
12725 {
12726 ArkUINodeAdapterHandle adapter =
12727 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getNodeAdapter(node->uiNodeHandle);
12728 g_attributeItem.object = reinterpret_cast<void*>(adapter);
12729 return &g_attributeItem;
12730 }
12731
SetWaterFlowCachedCount(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12732 int32_t SetWaterFlowCachedCount(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12733 {
12734 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
12735 if (item->size != 1) {
12736 return ERROR_CODE_PARAM_INVALID;
12737 }
12738 if (LessNotEqual(item->value[0].i32, NUM_0)) {
12739 return ERROR_CODE_PARAM_INVALID;
12740 }
12741 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->setCachedCount(node->uiNodeHandle, item->value[0].i32);
12742 return ERROR_CODE_NO_ERROR;
12743 }
12744
ResetWaterFlowCachedCount(ArkUI_NodeHandle node)12745 void ResetWaterFlowCachedCount(ArkUI_NodeHandle node)
12746 {
12747 // already check in entry point.
12748 auto* fullImpl = GetFullImpl();
12749
12750 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetCachedCount(node->uiNodeHandle);
12751 }
12752
GetWaterFlowCachedCount(ArkUI_NodeHandle node)12753 const ArkUI_AttributeItem* GetWaterFlowCachedCount(ArkUI_NodeHandle node)
12754 {
12755 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getCachedCount(node->uiNodeHandle);
12756 g_numberValues[0].i32 = value;
12757 return &g_attributeItem;
12758 }
12759
SetWaterFlowFooter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12760 int32_t SetWaterFlowFooter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12761 {
12762 if (!item->object) {
12763 return ERROR_CODE_PARAM_INVALID;
12764 }
12765 auto fullImpl = GetFullImpl();
12766 auto footerNodeHandle = reinterpret_cast<ArkUI_NodeHandle>(item->object);
12767 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setWaterflowFooter(
12768 node->uiNodeHandle, footerNodeHandle->uiNodeHandle);
12769 return ERROR_CODE_NO_ERROR;
12770 }
12771
ResetWaterFlowFooter(ArkUI_NodeHandle node)12772 void ResetWaterFlowFooter(ArkUI_NodeHandle node)
12773 {
12774 // already check in entry point.
12775 auto* fullImpl = GetFullImpl();
12776 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetWaterflowFooter(node->uiNodeHandle);
12777 }
12778
SetWaterFlowSectionOption(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12779 int32_t SetWaterFlowSectionOption(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12780 {
12781 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
12782 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
12783 if (item->size != 1) {
12784 return ERROR_CODE_PARAM_INVALID;
12785 }
12786 auto* waterFlowSectionOption = reinterpret_cast<ArkUIWaterFlowSectionOption>(item->object);
12787 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->setSectionOption(
12788 node->uiNodeHandle, item->value[0].i32, waterFlowSectionOption);
12789 return ERROR_CODE_NO_ERROR;
12790 }
12791
ResetWaterFlowSectionOption(ArkUI_NodeHandle node)12792 void ResetWaterFlowSectionOption(ArkUI_NodeHandle node)
12793 {
12794 // already check in entry point.
12795 auto* fullImpl = GetFullImpl();
12796
12797 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetSectionOption(node->uiNodeHandle);
12798 }
12799
GetWaterFlowSectionOption(ArkUI_NodeHandle node)12800 const ArkUI_AttributeItem* GetWaterFlowSectionOption(ArkUI_NodeHandle node)
12801 {
12802 static ArkUI_WaterFlowSectionOption options =
12803 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getSectionOption(node->uiNodeHandle);
12804 g_attributeItem.object = &options;
12805 return &g_attributeItem;
12806 }
12807
SetItemConstraintSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12808 int32_t SetItemConstraintSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12809 {
12810 if (item->size != ALLOW_SIZE_4) {
12811 return ERROR_CODE_PARAM_INVALID;
12812 }
12813
12814 auto* fullImpl = GetFullImpl();
12815 ArkUI_Float32 constraintSize[ALLOW_SIZE_4] = { 0.0f, FLT_MAX, 0.0f, FLT_MAX };
12816 int32_t unit = GetDefaultUnit(node, UNIT_VP);
12817 ArkUI_Int32 units[ALLOW_SIZE_4] = { unit, unit, unit, unit };
12818
12819 for (int i = 0; i < ALLOW_SIZE_4; ++i) {
12820 if (LessNotEqual(item->value[i].f32, 0.0f)) {
12821 return ERROR_CODE_PARAM_INVALID;
12822 } else {
12823 constraintSize[i] = item->value[i].f32;
12824 }
12825 }
12826 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setItemMinWidth(
12827 node->uiNodeHandle, constraintSize[NUM_0], units[NUM_0], nullptr);
12828 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setItemMaxWidth(
12829 node->uiNodeHandle, constraintSize[NUM_1], units[NUM_1], nullptr);
12830 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setItemMinHeight(
12831 node->uiNodeHandle, constraintSize[NUM_2], units[NUM_2], nullptr);
12832 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setItemMaxHeight(
12833 node->uiNodeHandle, constraintSize[NUM_3], units[NUM_3], nullptr);
12834 return ERROR_CODE_NO_ERROR;
12835 }
12836
ResetItemConstraintSize(ArkUI_NodeHandle node)12837 void ResetItemConstraintSize(ArkUI_NodeHandle node)
12838 {
12839 auto* fullImpl = GetFullImpl();
12840 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetItemMinWidth(node->uiNodeHandle);
12841 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetItemMaxWidth(node->uiNodeHandle);
12842 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetItemMinHeight(node->uiNodeHandle);
12843 fullImpl->getNodeModifiers()->getWaterFlowModifier()->resetItemMaxHeight(node->uiNodeHandle);
12844 }
12845
GetItemConstraintSize(ArkUI_NodeHandle node)12846 const ArkUI_AttributeItem* GetItemConstraintSize(ArkUI_NodeHandle node)
12847 {
12848 ArkUI_Int32 unit = GetDefaultUnit(node, UNIT_VP);
12849 g_numberValues[NUM_0].f32 =
12850 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getItemMinWidth(node->uiNodeHandle, unit);
12851 g_numberValues[NUM_1].f32 =
12852 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getItemMaxWidth(node->uiNodeHandle, unit);
12853 g_numberValues[NUM_2].f32 =
12854 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getItemMinHeight(node->uiNodeHandle, unit);
12855 g_numberValues[NUM_3].f32 =
12856 GetFullImpl()->getNodeModifiers()->getWaterFlowModifier()->getItemMaxHeight(node->uiNodeHandle, unit);
12857 return &g_attributeItem;
12858 }
12859
SetWaterFlowScrollToIndex(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12860 int32_t SetWaterFlowScrollToIndex(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12861 {
12862 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
12863 if (actualSize < NUM_0) {
12864 return ERROR_CODE_PARAM_INVALID;
12865 }
12866 ArkUI_Int32 values[ALLOW_SIZE_3] = { NUM_0, DEFAULT_FALSE, ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_NONE };
12867 values[NUM_0] = item->value[NUM_0].i32;
12868 if (item->size > NUM_1 && InRegion(NUM_0, NUM_1, item->value[NUM_1].i32)) {
12869 values[NUM_1] = item->value[NUM_1].i32;
12870 }
12871 if (item->size > NUM_2 && InRegion(NUM_0, NUM_3, item->value[NUM_2].i32)) {
12872 values[NUM_2] = item->value[NUM_2].i32;
12873 }
12874 if (values[NUM_2] == ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_NONE) {
12875 values[NUM_2] = ArkUI_ScrollAlignment::ARKUI_SCROLL_ALIGNMENT_START;
12876 }
12877 auto* fullImpl = GetFullImpl();
12878 fullImpl->getNodeModifiers()->getWaterFlowModifier()->setScrollToIndex(
12879 node->uiNodeHandle, values[NUM_0], values[NUM_1], values[NUM_2]);
12880 return ERROR_CODE_NO_ERROR;
12881 }
12882 // radio attribute
SetRadioChecked(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12883 int32_t SetRadioChecked(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12884 {
12885 if (item->size == 0 || !CheckAttributeIsBool(item->value[0].i32)) {
12886 return ERROR_CODE_PARAM_INVALID;
12887 }
12888 auto* fullImpl = GetFullImpl();
12889 fullImpl->getNodeModifiers()->getRadioModifier()->setRadioChecked(node->uiNodeHandle, item->value[0].i32);
12890 return ERROR_CODE_NO_ERROR;
12891 }
12892
ResetRadioChecked(ArkUI_NodeHandle node)12893 void ResetRadioChecked(ArkUI_NodeHandle node)
12894 {
12895 auto* fullImpl = GetFullImpl();
12896 fullImpl->getNodeModifiers()->getRadioModifier()->resetRadioChecked(node->uiNodeHandle);
12897 }
12898
GetRadioChecked(ArkUI_NodeHandle node)12899 const ArkUI_AttributeItem* GetRadioChecked(ArkUI_NodeHandle node)
12900 {
12901 auto resultValue = GetFullImpl()->getNodeModifiers()->getRadioModifier()->getRadioChecked(node->uiNodeHandle);
12902 g_numberValues[0].i32 = resultValue;
12903 return &g_attributeItem;
12904 }
12905
SetRadioStyle(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12906 int32_t SetRadioStyle(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12907 {
12908 if (item->size == 0) {
12909 return ERROR_CODE_PARAM_INVALID;
12910 }
12911
12912 auto* fullImpl = GetFullImpl();
12913 ArkUI_Uint32 radioStyle[ALLOW_SIZE_3] = { 0xFF007DFF, 0xFF182431, 0xFFFFFFF };
12914 // checkedBackgroundColor
12915 if (item->size > NUM_0) {
12916 radioStyle[NUM_0] = item->value[NUM_0].u32;
12917 }
12918
12919 // uncheckedBorderColor
12920 if (item->size > NUM_1) {
12921 radioStyle[NUM_1] = item->value[NUM_1].u32;
12922 }
12923
12924 // indicatorColor
12925 if (item->size > NUM_2) {
12926 radioStyle[NUM_2] = item->value[NUM_2].u32;
12927 }
12928 fullImpl->getNodeModifiers()->getRadioModifier()->setRadioStyle(
12929 node->uiNodeHandle, radioStyle[NUM_0], radioStyle[NUM_1], radioStyle[NUM_2]);
12930 return ERROR_CODE_NO_ERROR;
12931 }
12932
ResetRadioStyle(ArkUI_NodeHandle node)12933 void ResetRadioStyle(ArkUI_NodeHandle node)
12934 {
12935 auto* fullImpl = GetFullImpl();
12936 fullImpl->getNodeModifiers()->getRadioModifier()->resetRadioStyle(node->uiNodeHandle);
12937 }
12938
GetRadioStyle(ArkUI_NodeHandle node)12939 const ArkUI_AttributeItem* GetRadioStyle(ArkUI_NodeHandle node)
12940 {
12941 ArkUIRadioStyleOption options;
12942 GetFullImpl()->getNodeModifiers()->getRadioModifier()->getRadioStyle(node->uiNodeHandle, &options);
12943 g_numberValues[NUM_0].u32 = options.checkedBackgroundColor;
12944 g_numberValues[NUM_1].u32 = options.uncheckedBorderColor;
12945 g_numberValues[NUM_2].u32 = options.indicatorColor;
12946 return &g_attributeItem;
12947 }
12948
SetRadioValue(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12949 int32_t SetRadioValue(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12950 {
12951 auto* fullImpl = GetFullImpl();
12952 if (!CheckAttributeString(item)) {
12953 return ERROR_CODE_PARAM_INVALID;
12954 }
12955 fullImpl->getNodeModifiers()->getRadioModifier()->setRadioValue(node->uiNodeHandle, item->string);
12956 return ERROR_CODE_NO_ERROR;
12957 }
12958
ResetRadioValue(ArkUI_NodeHandle node)12959 void ResetRadioValue(ArkUI_NodeHandle node)
12960 {
12961 auto* fullImpl = GetFullImpl();
12962 fullImpl->getNodeModifiers()->getRadioModifier()->resetRadioValue(node->uiNodeHandle);
12963 }
12964
GetRadioValue(ArkUI_NodeHandle node)12965 const ArkUI_AttributeItem* GetRadioValue(ArkUI_NodeHandle node)
12966 {
12967 auto fullImpl = GetFullImpl();
12968 auto value = fullImpl->getNodeModifiers()->getRadioModifier()->getRadioValue(node->uiNodeHandle);
12969 g_attributeItem.string = (value != nullptr ? value : EMPTY_STR.c_str());
12970 return &g_attributeItem;
12971 }
12972
SetRadioGroup(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12973 int32_t SetRadioGroup(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12974 {
12975 auto* fullImpl = GetFullImpl();
12976 if (!CheckAttributeString(item)) {
12977 return ERROR_CODE_PARAM_INVALID;
12978 }
12979 fullImpl->getNodeModifiers()->getRadioModifier()->setRadioGroup(node->uiNodeHandle, item->string);
12980 return ERROR_CODE_NO_ERROR;
12981 }
12982
ResetRadioGroup(ArkUI_NodeHandle node)12983 void ResetRadioGroup(ArkUI_NodeHandle node)
12984 {
12985 auto* fullImpl = GetFullImpl();
12986 fullImpl->getNodeModifiers()->getRadioModifier()->resetRadioGroup(node->uiNodeHandle);
12987 }
12988
GetRadioGroup(ArkUI_NodeHandle node)12989 const ArkUI_AttributeItem* GetRadioGroup(ArkUI_NodeHandle node)
12990 {
12991 auto fullImpl = GetFullImpl();
12992 auto value = fullImpl->getNodeModifiers()->getRadioModifier()->getRadioGroup(node->uiNodeHandle);
12993 g_attributeItem.string = (value != nullptr ? value : EMPTY_STR.c_str());
12994 return &g_attributeItem;
12995 }
12996
12997 // imageAnimator attribute
SetImageAnimatorSrc(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)12998 int32_t SetImageAnimatorSrc(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
12999 {
13000 if (!CheckAttributeObjectAndSize(item)) {
13001 return ERROR_CODE_PARAM_INVALID;
13002 }
13003 ArkUIImageFrameInfo imageInfos[item->size];
13004 if (!ParseImages(item, imageInfos, node)) {
13005 return ERROR_CODE_PARAM_INVALID;
13006 }
13007
13008 auto* fullImpl = GetFullImpl();
13009 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setImageAnimatorSrc(
13010 node->uiNodeHandle, imageInfos, item->size);
13011 return ERROR_CODE_NO_ERROR;
13012 }
13013
ResetImageAnimatorSrc(ArkUI_NodeHandle node)13014 void ResetImageAnimatorSrc(ArkUI_NodeHandle node)
13015 {
13016 auto* fullImpl = GetFullImpl();
13017 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetImages(node->uiNodeHandle);
13018 }
13019
GetImageAnimatorSrc(ArkUI_NodeHandle node)13020 const ArkUI_AttributeItem* GetImageAnimatorSrc(ArkUI_NodeHandle node)
13021 {
13022 if (!node->imageFrameInfos) {
13023 g_attributeItem.size = 0;
13024 } else {
13025 auto* fullImpl = GetFullImpl();
13026 g_attributeItem.size = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getImagesSize(
13027 node->uiNodeHandle);
13028 g_attributeItem.object = reinterpret_cast<ArkUI_ImageAnimatorFrameInfo**>(node->imageFrameInfos);
13029 }
13030 return &g_attributeItem;
13031 }
13032
SetImageAnimatorState(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13033 int32_t SetImageAnimatorState(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13034 {
13035 if (item->size == 0) {
13036 return ERROR_CODE_PARAM_INVALID;
13037 }
13038 if (item->value[0].i32 < NUM_0 || item->value[0].i32 > NUM_3) {
13039 return ERROR_CODE_PARAM_INVALID;
13040 }
13041
13042 auto* fullImpl = GetFullImpl();
13043 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setState(node->uiNodeHandle, item->value[0].i32);
13044 return ERROR_CODE_NO_ERROR;
13045 }
13046
ResetImageAnimatorState(ArkUI_NodeHandle node)13047 void ResetImageAnimatorState(ArkUI_NodeHandle node)
13048 {
13049 auto* fullImpl = GetFullImpl();
13050 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetState(node->uiNodeHandle);
13051 }
13052
GetImageAnimatorState(ArkUI_NodeHandle node)13053 const ArkUI_AttributeItem* GetImageAnimatorState(ArkUI_NodeHandle node)
13054 {
13055 auto* fullImpl = GetFullImpl();
13056 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getState(node->uiNodeHandle);
13057 g_numberValues[NUM_0].i32 = value;
13058 g_attributeItem.size = RETURN_SIZE_ONE;
13059 return &g_attributeItem;
13060 }
13061
SetImageAnimatorDuration(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13062 int32_t SetImageAnimatorDuration(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13063 {
13064 if (item->size == 0) {
13065 return ERROR_CODE_PARAM_INVALID;
13066 }
13067
13068 auto* fullImpl = GetFullImpl();
13069 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setDuration(node->uiNodeHandle, item->value[0].i32);
13070 return ERROR_CODE_NO_ERROR;
13071 }
13072
ResetImageAnimatorDuration(ArkUI_NodeHandle node)13073 void ResetImageAnimatorDuration(ArkUI_NodeHandle node)
13074 {
13075 auto* fullImpl = GetFullImpl();
13076 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetDuration(node->uiNodeHandle);
13077 }
13078
GetImageAnimatorDuration(ArkUI_NodeHandle node)13079 const ArkUI_AttributeItem* GetImageAnimatorDuration(ArkUI_NodeHandle node)
13080 {
13081 auto* fullImpl = GetFullImpl();
13082 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getDuration(node->uiNodeHandle);
13083 g_numberValues[NUM_0].i32 = value;
13084 g_attributeItem.size = RETURN_SIZE_ONE;
13085 return &g_attributeItem;
13086 }
13087
SetImageAnimatorReverse(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13088 int32_t SetImageAnimatorReverse(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13089 {
13090 if (item->size == 0) {
13091 return ERROR_CODE_PARAM_INVALID;
13092 }
13093 if (item->value[0].i32 < DEFAULT_FALSE || item->value[0].i32 > DEFAULT_TRUE) {
13094 return ERROR_CODE_PARAM_INVALID;
13095 }
13096
13097 auto* fullImpl = GetFullImpl();
13098 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setReverse(
13099 node->uiNodeHandle, static_cast<ArkUI_Uint32>(item->value[0].i32));
13100 return ERROR_CODE_NO_ERROR;
13101 }
13102
ResetImageAnimatorReverse(ArkUI_NodeHandle node)13103 void ResetImageAnimatorReverse(ArkUI_NodeHandle node)
13104 {
13105 auto* fullImpl = GetFullImpl();
13106 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetReverse(node->uiNodeHandle);
13107 }
13108
GetImageAnimatorReverse(ArkUI_NodeHandle node)13109 const ArkUI_AttributeItem* GetImageAnimatorReverse(ArkUI_NodeHandle node)
13110 {
13111 auto* fullImpl = GetFullImpl();
13112 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getIsReverse(node->uiNodeHandle);
13113 g_numberValues[NUM_0].i32 = value;
13114 g_attributeItem.size = RETURN_SIZE_ONE;
13115 return &g_attributeItem;
13116 }
13117
SetImageAnimatorFixedSize(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13118 int32_t SetImageAnimatorFixedSize(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13119 {
13120 if (item->size == 0) {
13121 return ERROR_CODE_PARAM_INVALID;
13122 }
13123 if (item->value[0].i32 < DEFAULT_FALSE || item->value[0].i32 > DEFAULT_TRUE) {
13124 return ERROR_CODE_PARAM_INVALID;
13125 }
13126
13127 auto* fullImpl = GetFullImpl();
13128 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setFixedSize(
13129 node->uiNodeHandle, static_cast<ArkUI_Uint32>(item->value[0].i32));
13130 return ERROR_CODE_NO_ERROR;
13131 }
13132
ResetImageAnimatorFixedSize(ArkUI_NodeHandle node)13133 void ResetImageAnimatorFixedSize(ArkUI_NodeHandle node)
13134 {
13135 auto* fullImpl = GetFullImpl();
13136 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetFixedSize(node->uiNodeHandle);
13137 }
13138
GetImageAnimatorFixedSize(ArkUI_NodeHandle node)13139 const ArkUI_AttributeItem* GetImageAnimatorFixedSize(ArkUI_NodeHandle node)
13140 {
13141 auto* fullImpl = GetFullImpl();
13142 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getFixedSize(node->uiNodeHandle);
13143 g_numberValues[NUM_0].i32 = value;
13144 g_attributeItem.size = RETURN_SIZE_ONE;
13145 return &g_attributeItem;
13146 }
13147
SetImageAnimatorFillMode(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13148 int32_t SetImageAnimatorFillMode(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13149 {
13150 if (item->size == 0) {
13151 return ERROR_CODE_PARAM_INVALID;
13152 }
13153 if (item->value[0].i32 < NUM_0 || item->value[0].i32 > NUM_3) {
13154 return ERROR_CODE_PARAM_INVALID;
13155 }
13156
13157 auto* fullImpl = GetFullImpl();
13158 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setFillMode(node->uiNodeHandle, item->value[0].i32);
13159 return ERROR_CODE_NO_ERROR;
13160 }
13161
ResetImageAnimatorFillMode(ArkUI_NodeHandle node)13162 void ResetImageAnimatorFillMode(ArkUI_NodeHandle node)
13163 {
13164 auto* fullImpl = GetFullImpl();
13165 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetFillMode(node->uiNodeHandle);
13166 }
13167
GetImageAnimatorFillMode(ArkUI_NodeHandle node)13168 const ArkUI_AttributeItem* GetImageAnimatorFillMode(ArkUI_NodeHandle node)
13169 {
13170 auto* fullImpl = GetFullImpl();
13171 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getFillMode(node->uiNodeHandle);
13172 g_numberValues[NUM_0].i32 = value;
13173 g_attributeItem.size = RETURN_SIZE_ONE;
13174 return &g_attributeItem;
13175 }
13176
SetImageAnimatorIterations(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13177 int32_t SetImageAnimatorIterations(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13178 {
13179 if (item->size == 0) {
13180 return ERROR_CODE_PARAM_INVALID;
13181 }
13182
13183 auto* fullImpl = GetFullImpl();
13184 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->setImageAnimatorIteration(
13185 node->uiNodeHandle, item->value[0].i32);
13186 return ERROR_CODE_NO_ERROR;
13187 }
13188
ResetImageAnimatorIterations(ArkUI_NodeHandle node)13189 void ResetImageAnimatorIterations(ArkUI_NodeHandle node)
13190 {
13191 auto* fullImpl = GetFullImpl();
13192 fullImpl->getNodeModifiers()->getImageAnimatorModifier()->resetImageAnimatorIteration(node->uiNodeHandle);
13193 }
13194
GetImageAnimatorIterations(ArkUI_NodeHandle node)13195 const ArkUI_AttributeItem* GetImageAnimatorIterations(ArkUI_NodeHandle node)
13196 {
13197 auto* fullImpl = GetFullImpl();
13198 int32_t value = fullImpl->getNodeModifiers()->getImageAnimatorModifier()->getIteration(node->uiNodeHandle);
13199 g_numberValues[NUM_0].i32 = value;
13200 g_attributeItem.size = RETURN_SIZE_ONE;
13201 return &g_attributeItem;
13202 }
13203
13204 // grid attribute
SetGridColumnsTemplate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13205 int32_t SetGridColumnsTemplate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13206 {
13207 auto* fullImpl = GetFullImpl();
13208 if (!CheckAttributeString(item)) {
13209 return ERROR_CODE_PARAM_INVALID;
13210 }
13211 fullImpl->getNodeModifiers()->getGridModifier()->setGridColumnsTemplate(node->uiNodeHandle, item->string);
13212 return ERROR_CODE_NO_ERROR;
13213 }
13214
ResetGridColumnsTemplate(ArkUI_NodeHandle node)13215 void ResetGridColumnsTemplate(ArkUI_NodeHandle node)
13216 {
13217 auto* fullImpl = GetFullImpl();
13218 fullImpl->getNodeModifiers()->getGridModifier()->resetGridColumnsTemplate(node->uiNodeHandle);
13219 }
13220
GetGridColumnsTemplate(ArkUI_NodeHandle node)13221 const ArkUI_AttributeItem* GetGridColumnsTemplate(ArkUI_NodeHandle node)
13222 {
13223 auto fullImpl = GetFullImpl();
13224 auto columnsTemplate = fullImpl->getNodeModifiers()->getGridModifier()->getGridColumnsTemplate(node->uiNodeHandle);
13225 g_attributeItem.string = columnsTemplate;
13226 return &g_attributeItem;
13227 }
13228
SetGridRowsTemplate(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13229 int32_t SetGridRowsTemplate(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13230 {
13231 auto* fullImpl = GetFullImpl();
13232 if (!CheckAttributeString(item)) {
13233 return ERROR_CODE_PARAM_INVALID;
13234 }
13235 fullImpl->getNodeModifiers()->getGridModifier()->setGridRowsTemplate(node->uiNodeHandle, item->string);
13236 return ERROR_CODE_NO_ERROR;
13237 }
13238
ResetGridRowsTemplate(ArkUI_NodeHandle node)13239 void ResetGridRowsTemplate(ArkUI_NodeHandle node)
13240 {
13241 auto* fullImpl = GetFullImpl();
13242 fullImpl->getNodeModifiers()->getGridModifier()->resetGridRowsTemplate(node->uiNodeHandle);
13243 }
13244
GetGridRowsTemplate(ArkUI_NodeHandle node)13245 const ArkUI_AttributeItem* GetGridRowsTemplate(ArkUI_NodeHandle node)
13246 {
13247 auto fullImpl = GetFullImpl();
13248 auto rowsTemplate = fullImpl->getNodeModifiers()->getGridModifier()->getGridRowsTemplate(node->uiNodeHandle);
13249 g_attributeItem.string = rowsTemplate;
13250 return &g_attributeItem;
13251 }
13252
SetGridColumnsGap(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13253 int32_t SetGridColumnsGap(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13254 {
13255 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
13256 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
13257 return ERROR_CODE_PARAM_INVALID;
13258 }
13259 auto* fullImpl = GetFullImpl();
13260 ArkUIResourceLength columnGap = { item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr };
13261 fullImpl->getNodeModifiers()->getGridModifier()->setGridColumnsGap(node->uiNodeHandle, &columnGap);
13262 return ERROR_CODE_NO_ERROR;
13263 }
13264
ResetGridColumnsGap(ArkUI_NodeHandle node)13265 void ResetGridColumnsGap(ArkUI_NodeHandle node)
13266 {
13267 auto* fullImpl = GetFullImpl();
13268 fullImpl->getNodeModifiers()->getGridModifier()->resetGridColumnsGap(node->uiNodeHandle);
13269 }
13270
GetGridColumnsGap(ArkUI_NodeHandle node)13271 const ArkUI_AttributeItem* GetGridColumnsGap(ArkUI_NodeHandle node)
13272 {
13273 auto modifier = GetFullImpl()->getNodeModifiers()->getGridModifier();
13274 g_numberValues[0].f32 = modifier->getGridColumnsGap(node->uiNodeHandle);
13275 return &g_attributeItem;
13276 }
13277
SetGridRowsGap(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13278 int32_t SetGridRowsGap(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13279 {
13280 auto actualSize = CheckAttributeItemArray(item, REQUIRED_ONE_PARAM);
13281 if (actualSize < 0 || LessNotEqual(item->value[NUM_0].f32, 0.0f)) {
13282 return ERROR_CODE_PARAM_INVALID;
13283 }
13284 auto* fullImpl = GetFullImpl();
13285 ArkUIResourceLength rowGap = { item->value[NUM_0].f32, GetDefaultUnit(node, UNIT_VP), nullptr };
13286 fullImpl->getNodeModifiers()->getGridModifier()->setGridRowsGap(node->uiNodeHandle, &rowGap);
13287 return ERROR_CODE_NO_ERROR;
13288 }
13289
ResetGridRowsGap(ArkUI_NodeHandle node)13290 void ResetGridRowsGap(ArkUI_NodeHandle node)
13291 {
13292 auto* fullImpl = GetFullImpl();
13293 fullImpl->getNodeModifiers()->getGridModifier()->resetGridRowsGap(node->uiNodeHandle);
13294 }
13295
GetGridRowsGap(ArkUI_NodeHandle node)13296 const ArkUI_AttributeItem* GetGridRowsGap(ArkUI_NodeHandle node)
13297 {
13298 auto modifier = GetFullImpl()->getNodeModifiers()->getGridModifier();
13299 g_numberValues[0].f32 = modifier->getGridRowsGap(node->uiNodeHandle);
13300 return &g_attributeItem;
13301 }
13302
SetGridNodeAdapter(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13303 int32_t SetGridNodeAdapter(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13304 {
13305 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
13306 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
13307 auto* nodeAdapter = reinterpret_cast<ArkUINodeAdapterHandle>(item->object);
13308 return GetFullImpl()->getNodeModifiers()->getGridModifier()->setNodeAdapter(node->uiNodeHandle, nodeAdapter);
13309 }
13310
ResetGridNodeAdapter(ArkUI_NodeHandle node)13311 void ResetGridNodeAdapter(ArkUI_NodeHandle node)
13312 {
13313 // already check in entry point.
13314 auto* fullImpl = GetFullImpl();
13315
13316 fullImpl->getNodeModifiers()->getGridModifier()->resetNodeAdapter(node->uiNodeHandle);
13317 }
13318
GetGridNodeAdapter(ArkUI_NodeHandle node)13319 const ArkUI_AttributeItem* GetGridNodeAdapter(ArkUI_NodeHandle node)
13320 {
13321 ArkUINodeAdapterHandle adapter =
13322 GetFullImpl()->getNodeModifiers()->getGridModifier()->getNodeAdapter(node->uiNodeHandle);
13323 g_attributeItem.object = reinterpret_cast<void*>(adapter);
13324 return &g_attributeItem;
13325 }
13326
SetGridCachedCount(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13327 int32_t SetGridCachedCount(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13328 {
13329 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
13330 if (item->size != 1) {
13331 return ERROR_CODE_PARAM_INVALID;
13332 }
13333 if (LessNotEqual(item->value[0].i32, NUM_0)) {
13334 return ERROR_CODE_PARAM_INVALID;
13335 }
13336 GetFullImpl()->getNodeModifiers()->getGridModifier()->setCachedCount(node->uiNodeHandle, item->value[0].i32);
13337 return ERROR_CODE_NO_ERROR;
13338 }
13339
ResetGridCachedCount(ArkUI_NodeHandle node)13340 void ResetGridCachedCount(ArkUI_NodeHandle node)
13341 {
13342 // already check in entry point.
13343 auto* fullImpl = GetFullImpl();
13344
13345 fullImpl->getNodeModifiers()->getGridModifier()->resetCachedCount(node->uiNodeHandle);
13346 }
13347
GetGridCachedCount(ArkUI_NodeHandle node)13348 const ArkUI_AttributeItem* GetGridCachedCount(ArkUI_NodeHandle node)
13349 {
13350 ArkUI_Int32 value = GetFullImpl()->getNodeModifiers()->getGridModifier()->getCachedCount(node->uiNodeHandle);
13351 g_numberValues[0].i32 = value;
13352 return &g_attributeItem;
13353 }
13354
SetRelativeContainerGuideLine(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13355 int32_t SetRelativeContainerGuideLine(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13356 {
13357 node->guidelineOption = item->object;
13358 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
13359 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
13360 auto styles = reinterpret_cast<ArkUI_GuidelineOption*>(item->object);
13361 ArkUI_Int32 size = static_cast<ArkUI_Int32>(styles->styles.size());
13362 std::vector<ArkUIGuidelineStyle> guidelineStyle;
13363 for (int i = 0; i < size; ++i) {
13364 ArkUIGuidelineStyle style;
13365 style.id = styles->styles[i].id.c_str();
13366 style.direction = styles->styles[i].direction;
13367 style.hasStart = styles->styles[i].hasStart;
13368 style.start = styles->styles[i].start;
13369 style.end = styles->styles[i].end;
13370 style.hasEnd = styles->styles[i].hasEnd;
13371 guidelineStyle.push_back(style);
13372 }
13373 GetFullImpl()->getNodeModifiers()->getRelativeContainerModifier()->setGuideLine(
13374 node->uiNodeHandle, guidelineStyle.data(), size);
13375 return ERROR_CODE_NO_ERROR;
13376 }
13377
SetRelativeContainerBarrier(ArkUI_NodeHandle node,const ArkUI_AttributeItem * item)13378 int32_t SetRelativeContainerBarrier(ArkUI_NodeHandle node, const ArkUI_AttributeItem* item)
13379 {
13380 node->barrierOption = item->object;
13381 CHECK_NULL_RETURN(item, ERROR_CODE_PARAM_INVALID);
13382 CHECK_NULL_RETURN(item->object, ERROR_CODE_PARAM_INVALID);
13383
13384 auto styles = reinterpret_cast<ArkUI_BarrierOption*>(item->object);
13385 ArkUI_Int32 size = static_cast<ArkUI_Int32>(styles->styles.size());
13386
13387 std::vector<ArkUIBarrierStyle> barrierStyle(size);
13388 for (int i = 0; i < size; ++i) {
13389 barrierStyle[i].id = styles->styles[i].id.c_str();
13390 barrierStyle[i].direction = styles->styles[i].direction;
13391 barrierStyle[i].referencedIdSize = static_cast<ArkUI_Int32>(styles->styles[i].referencedId.size());
13392 barrierStyle[i].referencedId = new ArkUI_CharPtr[barrierStyle[i].referencedIdSize];
13393 for (int j = 0; j < barrierStyle[i].referencedIdSize; ++j) {
13394 barrierStyle[i].referencedId[j] = styles->styles[i].referencedId[j].c_str();
13395 }
13396 }
13397
13398 GetFullImpl()->getNodeModifiers()->getRelativeContainerModifier()->setBarrier(
13399 node->uiNodeHandle, barrierStyle.data(), size);
13400
13401 for (int i = 0; i < size; ++i) {
13402 delete[] barrierStyle[i].referencedId;
13403 }
13404 return ERROR_CODE_NO_ERROR;
13405 }
13406
GetRelativeContainerGuideLine(ArkUI_NodeHandle node)13407 const ArkUI_AttributeItem* GetRelativeContainerGuideLine(ArkUI_NodeHandle node)
13408 {
13409 g_attributeItem.object = node->guidelineOption;
13410 return &g_attributeItem;
13411 }
13412
GetRelativeContainerBarrier(ArkUI_NodeHandle node)13413 const ArkUI_AttributeItem* GetRelativeContainerBarrier(ArkUI_NodeHandle node)
13414 {
13415 g_attributeItem.object = node->barrierOption;
13416 return &g_attributeItem;
13417 }
13418
ResetRelativeContainerGuideLine(ArkUI_NodeHandle node)13419 void ResetRelativeContainerGuideLine(ArkUI_NodeHandle node)
13420 {
13421 auto* fullImpl = GetFullImpl();
13422 fullImpl->getNodeModifiers()->getRelativeContainerModifier()->resetGuideline(node->uiNodeHandle);
13423 node->guidelineOption = nullptr;
13424 }
13425
ResetRelativeContainerBarrier(ArkUI_NodeHandle node)13426 void ResetRelativeContainerBarrier(ArkUI_NodeHandle node)
13427 {
13428 auto* fullImpl = GetFullImpl();
13429 fullImpl->getNodeModifiers()->getRelativeContainerModifier()->resetBarrier(node->uiNodeHandle);
13430 node->barrierOption = nullptr;
13431 }
13432
CheckIfAttributeLegal(ArkUI_NodeHandle node,int32_t type)13433 bool CheckIfAttributeLegal(ArkUI_NodeHandle node, int32_t type)
13434 {
13435 if (node->type == ARKUI_NODE_SPAN) {
13436 auto it = SPAN_ATTRIBUTES_MAP.find(type);
13437 return it != SPAN_ATTRIBUTES_MAP.end();
13438 }
13439 if (node->type == ARKUI_NODE_CUSTOM_SPAN) {
13440 return false;
13441 }
13442 return true;
13443 }
13444
13445 using Setter = int32_t(ArkUI_NodeHandle node, const ArkUI_AttributeItem* value);
13446 using Getter = const ArkUI_AttributeItem*(ArkUI_NodeHandle node);
13447 using Resetter = void(ArkUI_NodeHandle node);
13448
SetCommonAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13449 int32_t SetCommonAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13450 {
13451 static Setter* setters[] = {
13452 SetWidth,
13453 SetHeight,
13454 SetBackgroundColor,
13455 SetBackgroundImage,
13456 SetPadding,
13457 SetKey,
13458 SetEnabled,
13459 SetMargin,
13460 SetTranslate,
13461 SetScale,
13462 SetRotate,
13463 SetBrightness,
13464 SetSaturate,
13465 SetBlur,
13466 SetLinearGradient,
13467 SetAlign,
13468 SetOpacity,
13469 SetBorderWidth,
13470 SetBorderRadius,
13471 SetBorderColor,
13472 SetBorderStyle,
13473 SetZIndex,
13474 SetVisibility,
13475 SetClip,
13476 SetClipShape,
13477 SetTransform,
13478 SetHitTestBehavior,
13479 SetPosition,
13480 SetShadow,
13481 SetCustomShadow,
13482 SetBackgroundImageSize,
13483 SetBackgroundImageSizeWithStyle,
13484 SetBackgroundBlurStyle,
13485 SetTransformCenter,
13486 SetOpacityTransition,
13487 SetRotateTransition,
13488 SetScaleTransition,
13489 SetTranslateTransition,
13490 SetMoveTransition,
13491 SetFocusable,
13492 SetDefaultFocus,
13493 SetResponseRegion,
13494 SetOverlay,
13495 SetSweepGradient,
13496 SetRadialGradient,
13497 SetMask,
13498 SetBlendMode,
13499 SetDirection,
13500 SetConstraintSize,
13501 SetGrayscale,
13502 SetInvert,
13503 SetSepia,
13504 SetContrast,
13505 SetForegroundColor,
13506 SetOffset,
13507 SetMarkAnchor,
13508 SetBackgroundImagePosition,
13509 SetAlignRules,
13510 SetAlignSelf,
13511 SetFlexGrow,
13512 SetFlexShrink,
13513 SetFlexBasis,
13514 SetAccessibilityGroup,
13515 SetAccessibilityText,
13516 SetAccessibilityLevel,
13517 SetAccessibilityDescription,
13518 SetNeedFocus,
13519 SetAspectRatio,
13520 SetLayoutWeight,
13521 SetDisplayPriority,
13522 SetOutlineWidth,
13523 SetWidthPercent,
13524 SetHeightPercent,
13525 SetPaddingPercent,
13526 SetMarginPercent,
13527 SetGeometryTransition,
13528 SetChainMode,
13529 SetRenderFit,
13530 SetOutlineColor,
13531 SetSize,
13532 SetRenderGroup,
13533 SetColorBlend,
13534 SetForegroundBlurStyle,
13535 SetLayoutRect,
13536 SetFocusOnTouch,
13537 SetBorderWidthPercent,
13538 SetBorderRadiusPercent,
13539 nullptr,
13540 SetAccessibilityActions,
13541 SetAccessibilityRole,
13542 SetAccessibilityState,
13543 SetAccessibilityValue,
13544 SetExpandSafeArea,
13545 SetAreaChangeRatio,
13546 SetTransition,
13547 nullptr,
13548 SetFocusBox,
13549 nullptr,
13550 SetTabStop,
13551 SetBackdropBlur,
13552 };
13553 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13554 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "common node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13555 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13556 }
13557 return setters[subTypeId](node, value);
13558 }
13559
GetCommonAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13560 const ArkUI_AttributeItem* GetCommonAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13561 {
13562 static Getter* getters[] = {
13563 GetWidth,
13564 GetHeight,
13565 GetBackgroundColor,
13566 GetBackgroundImage,
13567 GetPadding,
13568 GetKey,
13569 GetEnabled,
13570 GetMargin,
13571 GetTranslate,
13572 GetScale,
13573 GetRotate,
13574 GetBrightness,
13575 GetSaturate,
13576 GetBlur,
13577 GetLinearGradient,
13578 GetAlign,
13579 GetOpacity,
13580 GetBorderWidth,
13581 GetBorderRadius,
13582 GetBorderColor,
13583 GetBorderStyle,
13584 GetZIndex,
13585 GetVisibility,
13586 GetClip,
13587 GetClipShape,
13588 GetTransform,
13589 GetHitTestBehavior,
13590 GetPosition,
13591 GetShadow,
13592 GetCustomShadow,
13593 GetBackgroundImageSize,
13594 GetBackgroundImageSizeWithStyle,
13595 GetBackgroundBlurStyle,
13596 GetTransformCenter,
13597 GetOpacityTransition,
13598 GetRotateTransition,
13599 GetScaleTransition,
13600 GetTranslateTransition,
13601 GetMoveTransition,
13602 GetFocusable,
13603 GetDefaultFocus,
13604 GetResponseRegion,
13605 GetOverlay,
13606 GetSweepGradient,
13607 GetRadialGradient,
13608 GetMask,
13609 GetBlendMode,
13610 GetDirection,
13611 GetConstraintSize,
13612 GetGrayscale,
13613 GetInvert,
13614 GetSepia,
13615 GetContrast,
13616 GetForegroundColor,
13617 GetOffset,
13618 GetMarkAnchor,
13619 GetBackgroundImagePosition,
13620 GetAlignRules,
13621 GetAlignSelf,
13622 GetFlexGrow,
13623 GetFlexShrink,
13624 GetFlexBasis,
13625 GetAccessibilityGroup,
13626 GetAccessibilityText,
13627 GetAccessibilityLevel,
13628 GetAccessibilityDescription,
13629 GetNeedFocus,
13630 GetAspectRatio,
13631 GetLayoutWeight,
13632 GetDisplayPriority,
13633 GetOutlineWidth,
13634 GetWidthPercent,
13635 GetHeightPercent,
13636 GetPaddingPercent,
13637 GetMarginPercent,
13638 GetGeometryTransition,
13639 GetChainMode,
13640 GetRenderFit,
13641 GetOutlineColor,
13642 GetSize,
13643 GetRenderGroup,
13644 GetColorBlend,
13645 GetForegroundBlurStyle,
13646 GetLayoutRect,
13647 GetFocusOnTouch,
13648 GetBorderWidthPercent,
13649 GetBorderRadiusPercent,
13650 GetAccessibilityID,
13651 GetAccessibilityActions,
13652 GetAccessibilityRole,
13653 GetAccessibilityState,
13654 GetAccessibilityValue,
13655 GetExpandSafeArea,
13656 GetAreaChangeRatio,
13657 GetTransition,
13658 GetUniqueID,
13659 nullptr,
13660 nullptr,
13661 GetTabStop,
13662 GetBackdropBlur,
13663 };
13664 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13665 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "common node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13666 return nullptr;
13667 }
13668 if (!getters[subTypeId]) {
13669 return nullptr;
13670 }
13671 g_attributeItem.size = RETURN_SIZE_ONE;
13672 return getters[subTypeId](node);
13673 }
13674
ResetCommonAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13675 void ResetCommonAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13676 {
13677 static Resetter* resetters[] = {
13678 ResetWidth,
13679 ResetHeight,
13680 ResetBackgroundColor,
13681 ResetBackgroundImage,
13682 ResetPadding,
13683 ResetKey,
13684 ResetEnabled,
13685 ResetMargin,
13686 ResetTranslate,
13687 ResetScale,
13688 ResetRotate,
13689 ResetBrightness,
13690 ResetSaturate,
13691 ResetBlur,
13692 ResetLinearGradient,
13693 ResetAlign,
13694 ResetOpacity,
13695 ResetBorderWidth,
13696 ResetBorderRadius,
13697 ResetBorderColor,
13698 ResetBorderStyle,
13699 ResetZIndex,
13700 ResetVisibility,
13701 ResetClip,
13702 ResetClipShape,
13703 ResetTransform,
13704 ResetHitTestBehavior,
13705 ResetPosition,
13706 ResetShadow,
13707 ResetCustomShadow,
13708 ResetBackgroundImageSize,
13709 ResetBackgroundImageSizeWithStyle,
13710 ResetBackgroundBlurStyle,
13711 ResetTransformCenter,
13712 ResetOpacityTransition,
13713 ResetRotateTransition,
13714 ResetScaleTransition,
13715 ResetTranslateTransition,
13716 ResetMoveTransition,
13717 ResetFocusable,
13718 ResetDefaultFocus,
13719 ResetResponseRegion,
13720 ResetOverlay,
13721 ResetSweepGradient,
13722 ResetRadialGradient,
13723 ResetMask,
13724 ResetBlendMode,
13725 ResetDirection,
13726 ResetConstraintSize,
13727 ResetGrayscale,
13728 ResetInvert,
13729 ResetSepia,
13730 ResetContrast,
13731 ResetForegroundColor,
13732 ResetOffset,
13733 ResetMarkAnchor,
13734 ResetBackgroundImagePosition,
13735 ResetAlignRules,
13736 ResetAlignSelf,
13737 ResetFlexGrow,
13738 ResetFlexShrink,
13739 ResetFlexBasis,
13740 ResetAccessibilityGroup,
13741 ResetAccessibilityText,
13742 ResetAccessibilityLevel,
13743 ResetAccessibilityDescription,
13744 nullptr,
13745 ResetAspectRatio,
13746 ResetLayoutWeight,
13747 ResetDisplayPriority,
13748 ResetOutlineWidth,
13749 ResetWidthPercent,
13750 ResetHeightPercent,
13751 ResetPaddingPercent,
13752 ResetMarginPercent,
13753 ResetGeometryTransition,
13754 ResetChainMode,
13755 ResetRenderFit,
13756 ResetOutlineColor,
13757 ResetSize,
13758 ResetRenderGroup,
13759 ResetColorBlend,
13760 ResetForegroundBlurStyle,
13761 ResetLayoutRect,
13762 ResetFocusOnTouch,
13763 ResetBorderWidthPercent,
13764 ResetBorderRadiusPercent,
13765 nullptr,
13766 ResetAccessibilityActions,
13767 ResetAccessibilityRole,
13768 ResetAccessibilityState,
13769 ResetAccessibilityValue,
13770 ResetExpandSafeArea,
13771 ResetAreaChangeRatio,
13772 nullptr,
13773 nullptr,
13774 ResetFocusBox,
13775 nullptr,
13776 ResetTabStop,
13777 ResetBackdropBlur,
13778 };
13779 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13780 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "common node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13781 return;
13782 }
13783 if (resetters[subTypeId]) {
13784 resetters[subTypeId](node);
13785 }
13786 }
13787
SetTextAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13788 int32_t SetTextAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13789 {
13790 static Setter* setters[] = { SetTextContent, SetFontColor, SetFontSize, SetFontStyle, SetFontWeight, SetLineHeight,
13791 SetDecoration, SetTextCase, SetLetterSpacing, SetMaxLines, SetTextAlign, SetTextOverflow, SetTextFontFamily,
13792 SetTextCopyOption, SetBaseLineOffset, SetTextShadow, SetTextMinFontSize, SetTextMaxFontSize, SetTextFont,
13793 SetTextHeightAdaptivePolicy, SetTextIndent, SetTextWordBreak, SetTextEllipsisMode, SetLineSpacing,
13794 SetFontFeature, SetTextEnableDateDetector, SetTextDataDetectorConfig, SetTextSelectedBackgroundColor,
13795 SetTextContentWithStyledString, SetHalfLeading, SetImmutableFontWeight };
13796 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13797 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "text node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13798 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13799 }
13800 return setters[subTypeId](node, value);
13801 }
13802
GetTextAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13803 const ArkUI_AttributeItem* GetTextAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13804 {
13805 static Getter* getters[] = { GetTextContent, GetFontColor, GetFontSize, GetFontStyle, GetFontWeight, GetLineHeight,
13806 GetDecoration, GetTextCase, GetLetterSpacing, GetMaxLines, GetTextAlign, GetTextOverflow, GetTextFontFamily,
13807 GetTextCopyOption, GetBaseLineOffset, GetTextShadow, GetTextMinFontSize, GetTextMaxFontSize, GetTextFont,
13808 GetTextHeightAdaptivePolicy, GetTextIndent, GetTextWordBreak, GetTextEllipsisMode, GetLineSpacing,
13809 GetFontFeature, GetTextEnableDateDetector, GetTextDataDetectorConfig, GetTextSelectedBackgroundColor, nullptr,
13810 GetHalfLeading, GetFontWeight };
13811 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*) || !getters[subTypeId]) {
13812 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "text node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13813 return nullptr;
13814 }
13815 g_attributeItem.size = RETURN_SIZE_ONE;
13816 return getters[subTypeId](node);
13817 }
13818
ResetTextAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13819 void ResetTextAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13820 {
13821 static Resetter* resetters[] = { ResetTextContent, ResetFontColor, ResetFontSize, ResetFontStyle, ResetFontWeight,
13822 ResetLineHeight, ResetDecoration, ResetTextCase, ResetLetterSpacing, ResetMaxLines, ResetTextAlign,
13823 ResetTextOverflow, ResetTextFontFamily, ResetTextCopyOption, ResetBaselineOffset, ResetTextShadow,
13824 ResetTextMinFontSize, ResetTextMaxFontSize, ResetTextFont, ResetTextHeightAdaptivePolicy, ResetTextIndent,
13825 ResetTextWordBreak, ResetTextEllipsisMode, ResetLineSpacing, ResetFontFeature, ResetTextEnableDateDetector,
13826 ResetTextDataDetectorConfig, ResetTextSelectedBackgroundColor, ResetTextContentWithStyledString,
13827 ResetHalfLeading, ResetFontWeight };
13828 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13829 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "text node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13830 return;
13831 }
13832 resetters[subTypeId](node);
13833 }
13834
SetSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13835 int32_t SetSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13836 {
13837 static Setter* setters[] = { SetSpanContent, SetSpanTextBackgroundStyle, SetBaseLineOffset };
13838 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13839 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13840 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13841 }
13842 return setters[subTypeId](node, value);
13843 }
13844
GetSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13845 const ArkUI_AttributeItem* GetSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13846 {
13847 static Getter* getters[] = { GetSpanContent, GetSpanTextBackgroundStyle, GetBaseLineOffset };
13848 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13849 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13850 return nullptr;
13851 }
13852 return getters[subTypeId](node);
13853 }
13854
ResetSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13855 void ResetSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13856 {
13857 static Resetter* resetters[] = { ResetSpanContent, ResetSpanTextBackgroundStyle, ResetBaselineOffset };
13858 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13859 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13860 return;
13861 }
13862 resetters[subTypeId](node);
13863 }
13864
SetImageSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13865 int32_t SetImageSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13866 {
13867 static Setter* setters[] = { SetImageSpanSrc, SetVerticalAlign, SetAlt, SetImageSpanBaselineOffset };
13868 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13869 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13870 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13871 }
13872 return setters[subTypeId](node, value);
13873 }
13874
GetImageSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13875 const ArkUI_AttributeItem* GetImageSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13876 {
13877 static Getter* getters[] = { GetImageSpanSrc, GetVerticalAlign, GetAlt, GetImageSpanBaselineOffset };
13878 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13879 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13880 return nullptr;
13881 }
13882 return getters[subTypeId](node);
13883 }
13884
ResetImageSpanAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13885 void ResetImageSpanAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13886 {
13887 static Resetter* resetters[] = { ResetImageSpanSrc, ResetVerticalAlign, ResetAlt, ResetImageSpanBaselineOffset };
13888 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13889 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13890 return;
13891 }
13892 resetters[subTypeId](node);
13893 }
13894
SetImageAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13895 int32_t SetImageAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13896 {
13897 static Setter* setters[] = { SetImageSrc, SetObjectFit, SetInterpolation, SetObjectRepeat, SetColorFilter,
13898 SetAutoResize, SetAlt, SetImageDraggable, SetRenderMode, SetFitOriginalSize, SetFillColor, SetResizable };
13899 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13900 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13901 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13902 }
13903 return setters[subTypeId](node, value);
13904 }
13905
GetImageAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13906 const ArkUI_AttributeItem* GetImageAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13907 {
13908 static Getter* getters[] = { GetImageSrc, GetObjectFit, GetInterpolation, GetObjectRepeat, GetColorFilter,
13909 GetAutoResize, GetAlt, GetImageDraggable, GetRenderMode, GetFitOriginalSize, GetFillColor, GetResizable };
13910 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13911 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13912 return nullptr;
13913 }
13914 return getters[subTypeId](node);
13915 }
13916
ResetImageAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13917 void ResetImageAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13918 {
13919 static Resetter* resetters[] = { ResetImageSrc, ResetObjectFit, ResetInterpolation, ResetObjectRepeat,
13920 ResetColorFilter, ResetAutoResize, ResetAlt, ResetImageDraggable, ResetRenderMode,
13921 ResetFitOriginalSize, ResetFillColor, ResetResizable };
13922 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13923 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "image node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13924 return;
13925 }
13926 resetters[subTypeId](node);
13927 }
13928
SetToggleAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13929 int32_t SetToggleAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13930 {
13931 static Setter* setters[] = { SetToggleSelectedColor, SetToggleSwitchPointColor, SetToggleValue,
13932 SetToggleUnselectedColor };
13933 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13934 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "toggle node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13935 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13936 }
13937 return setters[subTypeId](node, value);
13938 }
13939
GetToggleAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13940 const ArkUI_AttributeItem* GetToggleAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13941 {
13942 static Getter* getters[] = { GetToggleSelectedColor, GetToggleSwitchPointColor, GetToggleValue,
13943 GetToggleUnselectedColor };
13944 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13945 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "toggle node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13946 return nullptr;
13947 }
13948 g_attributeItem.size = RETURN_SIZE_ONE;
13949 return getters[subTypeId](node);
13950 }
13951
ResetToggleAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13952 void ResetToggleAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13953 {
13954 static Resetter* resetters[] = { ResetToggleSelectedColor, ResetToggleSwitchPointColor, ResetToggleValue,
13955 ResetToggleUnselectedColor };
13956 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13957 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "toggle node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13958 return;
13959 }
13960 resetters[subTypeId](node);
13961 }
13962
SetLoadingProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)13963 int32_t SetLoadingProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
13964 {
13965 static Setter* setters[] = { SetLoadingProgressColor, SetLoadingProgressEnableLoading };
13966 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
13967 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13968 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
13969 }
13970 return setters[subTypeId](node, item);
13971 }
13972
ResetLoadingProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13973 void ResetLoadingProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13974 {
13975 static Resetter* resetters[] = { ResetLoadingProgressColor, ResetLoadingProgressEnableLoading };
13976 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
13977 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13978 return;
13979 }
13980 return resetters[subTypeId](node);
13981 }
13982
GetLoadingProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId)13983 const ArkUI_AttributeItem* GetLoadingProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
13984 {
13985 static Getter* getters[] = { GetLoadingProgressColor, GetLoadingProgressEnableLoading };
13986 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
13987 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
13988 return &g_attributeItem;
13989 }
13990 return getters[subTypeId](node);
13991 }
13992
SetTextInputAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)13993 int32_t SetTextInputAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
13994 {
13995 static Setter* setters[] = { SetTextInputPlaceholder, SetTextInputText, SetCaretColor, SetCaretStyle,
13996 SetShowUnderline, SetMaxLength, SetEnterKeyType, SetPlaceholderColor, SetTextInputPlaceholderFont,
13997 SetEnableKeyboardOnFocus, SetTextInputType, SetSelectedBackgroundColor, SetShowPasswordIcon,
13998 StopTextInputEditing, SetTextInputCancelButton, SetTextInputTextSelection, SetTextInputUnderlineColor,
13999 SetTextInputEnableAutoFill, SetTextInputContentType, SetTextInputPasswordRules, SetTextInputSelectAll,
14000 SetInputFilter, SetTextInputStyle, SetTextInputCaretOffset, nullptr, nullptr,
14001 SetTextInputSelectionMenuHidden, SetBlurOnSubmit, SetInputCustomKeyboard, SetTextInputWordBreak,
14002 SetTextInputShowKeyBoardOnFocus, SetTextInputNumberOfLines, SetLetterSpacing, SetEnablePreviewText,
14003 nullptr, SetTextInputKeyboardAppearance };
14004 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14005 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textinput node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14006 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14007 }
14008 return setters[subTypeId](node, value);
14009 }
14010
GetTextInputAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14011 const ArkUI_AttributeItem* GetTextInputAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14012 {
14013 static Getter* getters[] = { GetTextInputPlaceholder, GetTextInputText, GetCaretColor, GetCaretStyle,
14014 GetShowUnderline, GetMaxLength, GetEnterKeyType, GetPlaceholderColor, GetTextInputPlaceholderFont,
14015 GetEnableKeyboardOnFocus, GetTextInputType, GetSelectedBackgroundColor, GetShowPasswordIcon, GetTextInputEditing,
14016 GetTextInputCancelButton, GetTextInputTextSelection, GetTextInputUnderlineColor, GetTextInputEnableAutoFill,
14017 GetTextInputContentType, GetTextInputPasswordRules, GetTextInputSelectAll, GetInputFilter,
14018 GetTextInputStyle, GetTextInputCaretOffset, GetTextInputContentRect, GetTextInputContentLineCount,
14019 GetTextInputSelectionMenuHidden, GetBlurOnSubmit, GetInputCustomKeyboard, GetTextInputWordBreak,
14020 GetTextInputShowKeyBoardOnFocus, GetTextInputNumberOfLines, GetLetterSpacing, GetEnablePreviewText,
14021 nullptr, GetTextInputKeyboardAppearance };
14022 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14023 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textinput node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14024 return nullptr;
14025 }
14026 return getters[subTypeId](node);
14027 }
14028
ResetTextInputAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14029 void ResetTextInputAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14030 {
14031 static Resetter* setters[] = { ResetTextInputPlaceholder, ResetTextInputText, ResetCaretColor, ResetCaretStyle,
14032 ResetShowUnderline, ResetMaxLength, ResetEnterKeyType, ResetPlaceholderColor, ResetTextInputPlaceholderFont,
14033 ResetEnableKeyboardOnFocus, ResetTextInputType, ResetSelectedBackgroundColor, ResetShowPasswordIcon, nullptr,
14034 ResetTextInputCancelButton, ResetTextInputTextSelection, ResetTextInputUnderlineColor,
14035 ResetTextInputEnableAutoFill, ResetTextInputContentType, ResetTextInputPasswordRules, ResetTextInputSelectAll,
14036 ResetInputFilter, ResetTextInputStyle, ResetTextInputCaretOffset, nullptr, nullptr,
14037 ResetTextInputSelectionMenuHidden, ResetBlurOnSubmit, ResetInputCustomKeyboard, ResetTextInputWordBreak,
14038 ResetTextInputShowKeyBoardOnFocus, ResetTextInputNumberOfLines, ResetLetterSpacing, ResetEnablePreviewText,
14039 nullptr, ResetTextInputKeyboardAppearance };
14040 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Resetter*)) {
14041 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textinput node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14042 return;
14043 }
14044 if (setters[subTypeId]) {
14045 setters[subTypeId](node);
14046 }
14047 }
14048
SetTextAreaAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)14049 int32_t SetTextAreaAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
14050 {
14051 static Setter* setters[] = { SetTextAreaPlaceholder, SetTextAreaText, SetMaxLength, SetPlaceholderColor,
14052 SetTextAreaPlaceholderFont, SetCaretColor, StopTextAreaEditing, SetTextAreaType, SetTextAreaShowCounter,
14053 SetTextAreaSelectionMenuHidden, SetBlurOnSubmit, SetInputFilter, SetSelectedBackgroundColor,
14054 SetEnterKeyType, SetEnableKeyboardOnFocus, SetTextInputCaretOffset, nullptr, nullptr,
14055 SetTextInputTextSelection, SetTextInputEnableAutoFill, SetTextInputContentType,
14056 SetTextInputShowKeyBoardOnFocus, SetTextInputNumberOfLines, SetLetterSpacing, SetEnablePreviewText,
14057 nullptr, SetTextInputKeyboardAppearance };
14058 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14059 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textarea node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14060 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14061 }
14062 return setters[subTypeId](node, value);
14063 }
14064
GetTextAreaAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14065 const ArkUI_AttributeItem* GetTextAreaAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14066 {
14067 static Getter* getters[] = { GetTextAreaPlaceholder, GetTextAreaText, GetMaxLength, GetPlaceholderColor,
14068 GetTextAreaPlaceholderFont, GetCaretColor, GetTextAreaEditing, GetTextAreaType, GetTextAreaShowCounter,
14069 GetTextAreaSelectionMenuHidden, GetBlurOnSubmit, GetInputFilter, GetSelectedBackgroundColor,
14070 GetEnterKeyType, GetEnableKeyboardOnFocus, GetTextInputCaretOffset, GetTextInputContentRect,
14071 GetTextInputContentLineCount, GetTextInputTextSelection, GetTextInputEnableAutoFill, GetTextInputContentType,
14072 GetTextInputShowKeyBoardOnFocus, GetTextInputNumberOfLines, GetLetterSpacing, GetEnablePreviewText,
14073 nullptr, GetTextInputKeyboardAppearance };
14074 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14075 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textarea span node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14076 return nullptr;
14077 }
14078 if (!getters[subTypeId]) {
14079 return nullptr;
14080 }
14081 return getters[subTypeId](node);
14082 }
14083
ResetTextAreaAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14084 void ResetTextAreaAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14085 {
14086 static Resetter* setters[] = { ResetTextAreaPlaceholder, ResetTextAreaText, ResetMaxLength, ResetPlaceholderColor,
14087 ResetTextAreaPlaceholderFont, ResetCaretColor, nullptr, ResetTextAreaType, ResetTextAreaShowCounter,
14088 ResetTextAreaSelectionMenuHidden, ResetBlurOnSubmit, ResetInputFilter, ResetSelectedBackgroundColor,
14089 ResetEnterKeyType, ResetEnableKeyboardOnFocus, ResetTextInputCaretOffset, nullptr, nullptr,
14090 ResetTextInputTextSelection, ResetTextInputEnableAutoFill, ResetTextInputContentType,
14091 ResetTextInputShowKeyBoardOnFocus, ResetTextInputNumberOfLines, ResetLetterSpacing, ResetEnablePreviewText,
14092 nullptr, ResetTextInputKeyboardAppearance };
14093 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Resetter*)) {
14094 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textarea node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14095 return;
14096 }
14097 if (setters[subTypeId]) {
14098 setters[subTypeId](node);
14099 }
14100 }
14101
SetButtonAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14102 int32_t SetButtonAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14103 {
14104 static Setter* setters[] = { SetButtonLabel, SetButtonType };
14105 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14106 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "button node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14107 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14108 }
14109 return setters[subTypeId](node, item);
14110 }
14111
GetButtonAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14112 const ArkUI_AttributeItem* GetButtonAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14113 {
14114 static Getter* getters[] = { GetButtonLabel, GetButtonType };
14115 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14116 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "button node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14117 return nullptr;
14118 }
14119 g_attributeItem.size = RETURN_SIZE_ONE;
14120 return getters[subTypeId](node);
14121 }
14122
ResetButtonAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14123 void ResetButtonAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14124 {
14125 static Resetter* resetters[] = { ResetButtonLabel, ResetButtonType };
14126 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14127 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "button node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14128 return;
14129 }
14130 return resetters[subTypeId](node);
14131 }
14132
SetProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14133 int32_t SetProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14134 {
14135 static Setter* setters[] = { SetProgressValue, SetProgressTotal, SetProgressColor, SetProgressType,
14136 SetProgressLinearStyle };
14137 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14138 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "progress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14139 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14140 }
14141 return setters[subTypeId](node, item);
14142 }
14143
GetProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14144 const ArkUI_AttributeItem* GetProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14145 {
14146 static Getter* getters[] = { GetProgressValue, GetProgressTotal, GetProgressColor, GetProgressType,
14147 GetProgressLinearStyle };
14148 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14149 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "progress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14150 return nullptr;
14151 }
14152 g_attributeItem.size = RETURN_SIZE_ONE;
14153 return getters[subTypeId](node);
14154 }
14155
ResetProgressAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14156 void ResetProgressAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14157 {
14158 static Resetter* resetters[] = { ResetProgressValue, ResetProgressTotal, ResetProgressColor, ResetProgressType,
14159 ResetProgressLinearStyle };
14160 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14161 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "progress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14162 return;
14163 }
14164 return resetters[subTypeId](node);
14165 }
14166
SetCheckboxAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14167 int32_t SetCheckboxAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14168 {
14169 static Setter* setters[] = { SetCheckboxSelect, SetCheckboxSelectedColor, SetCheckboxUnSelectedColor,
14170 SetCheckboxMark, SetCheckboxShape, SetCheckboxName, SetCheckboxGroup };
14171 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14172 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Checkbox node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14173 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14174 }
14175 return setters[subTypeId](node, item);
14176 }
14177
GetCheckboxAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14178 const ArkUI_AttributeItem* GetCheckboxAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14179 {
14180 static Getter* getters[] = { GetCheckboxSelect, GetCheckboxSelectedColor, GetCheckboxUnSelectedColor,
14181 GetCheckboxMark, GetCheckboxShape, GetCheckboxName, GetCheckboxGroup };
14182 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14183 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Checkbox node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14184 return nullptr;
14185 }
14186 g_attributeItem.size = RETURN_SIZE_ONE;
14187 return getters[subTypeId](node);
14188 }
14189
ResetCheckboxAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14190 void ResetCheckboxAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14191 {
14192 static Resetter* resetters[] = { ResetCheckboxSelect, ResetCheckboxSelectedColor, ResetCheckboxUnSelectedColor,
14193 ResetCheckboxMark, ResetCheckboxShape, ResetCheckboxName, ResetCheckboxGroup };
14194 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14195 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Checkbox node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14196 return;
14197 }
14198 return resetters[subTypeId](node);
14199 }
14200
SetXComponentAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)14201 int32_t SetXComponentAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
14202 {
14203 static Setter* setters[] = {
14204 SetXComponentId,
14205 SetXComponentType,
14206 SetXComponentSurfaceSize,
14207 };
14208 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14209 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "xcomponent node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14210 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14211 }
14212 return setters[subTypeId](node, value);
14213 }
14214
GetXComponentAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14215 const ArkUI_AttributeItem* GetXComponentAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14216 {
14217 static Getter* getters[] = { GetXComponentId, GetXComponentType, GetXComponentSurfaceSize, };
14218 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14219 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "xcomponent node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14220 return nullptr;
14221 }
14222 g_attributeItem.size = RETURN_SIZE_ONE;
14223 return getters[subTypeId](node);
14224 }
14225
ResetXComponentAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14226 void ResetXComponentAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14227 {
14228 static Resetter* setters[] = { nullptr, ResetXComponentType, ResetXComponentSurfaceSize };
14229 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Resetter*)) {
14230 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "xcomponent node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14231 return;
14232 }
14233 if (setters[subTypeId]) {
14234 setters[subTypeId](node);
14235 }
14236 }
14237
SetDatePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14238 int32_t SetDatePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14239 {
14240 static Setter* setters[] = { SetDatePickerLunar, SetDatePickerStart, SetDatePickerEnd, SetDatePickerSelected,
14241 SetDatePickerDisappearTextStyle, SetDatePickerTextStyle, SetDatePickerSelectedTextStyle };
14242 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14243 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "datepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14244 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14245 }
14246 return setters[subTypeId](node, item);
14247 }
14248
GetDatePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14249 const ArkUI_AttributeItem* GetDatePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14250 {
14251 static Getter* getters[] = { GetDatePickerLunar, GetDatePickerStart, GetDatePickerEnd, GetDatePickerSelected,
14252 GetDatePickerDisappearTextStyle, GetDatePickerTextStyle, GetDatePickerSelectedTextStyle };
14253 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14254 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "datepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14255 return &g_attributeItem;
14256 }
14257 return getters[subTypeId](node);
14258 }
14259
ResetDatePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14260 void ResetDatePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14261 {
14262 static Resetter* resetters[] = { ResetDatePickerLunar, ResetDatePickerStart, ResetDatePickerEnd,
14263 ResetDatePickerSelected, ResetDatePickerDisappearTextStyle, ResetDatePickerTextStyle,
14264 ResetDatePickerSelectedTextStyle };
14265 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14266 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "datepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14267 return;
14268 }
14269 return resetters[subTypeId](node);
14270 }
14271
SetTimePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14272 int32_t SetTimePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14273 {
14274 static Setter* setters[] = { SetTimePickerSelected, SetTimePickerUseMilitaryTime,
14275 SetTimePickerDisappearTextStyle, SetTimePickerTextStyle, SetTimePickerSelectedTextStyle };
14276 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14277 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "timepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14278 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14279 }
14280 return setters[subTypeId](node, item);
14281 }
14282
GetTimePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14283 const ArkUI_AttributeItem* GetTimePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14284 {
14285 static Getter* getters[] = { GetTimePickerSelected, GetTimePickerUseMilitaryTime, GetTimePickerDisappearTextStyle,
14286 GetTimePickerTextStyle, GetTimePickerSelectedTextStyle };
14287 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14288 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14289 return &g_attributeItem;
14290 }
14291 return getters[subTypeId](node);
14292 }
14293
ResetTimePickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14294 void ResetTimePickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14295 {
14296 static Resetter* resetters[] = { ResetTimePickerSelected, ResetTimePickerUseMilitaryTime,
14297 ResetTimePickerDisappearTextStyle, ResetTimePickerTextStyle, ResetTimePickerSelectedTextStyle };
14298 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14299 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "timepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14300 return;
14301 }
14302 return resetters[subTypeId](node);
14303 }
14304
SetTextPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14305 int32_t SetTextPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14306 {
14307 static Setter* setters[] = { SetTextPickerRange, SetTextPickerSelected, SetTextPickerValue,
14308 SetTextPickerDisappearTextStyle, SetTextPickerTextStyle, SetTextPickerSelectedTextStyle,
14309 SetTextPickerSelectedIndex, SetTextPickerCanLoop, SetTextPickerDefaultPickerItemHeight };
14310 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14311 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "textpicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14312 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14313 }
14314 return setters[subTypeId](node, item);
14315 }
14316
GetTextPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14317 const ArkUI_AttributeItem* GetTextPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14318 {
14319 static Getter* getters[] = { GetTextPickerRange, GetTextPickerSelected, GetTextPickerValue,
14320 GetTextPickerDisappearTextStyle, GetTextPickerTextStyle, GetTextPickerSelectedTextStyle,
14321 GetTextPickerSelectedIndex, GetTextPickerCanLoop, GetTextPickerDefaultPickerItemHeight };
14322 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14323 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14324 return &g_attributeItem;
14325 }
14326 return getters[subTypeId](node);
14327 }
14328
ResetTextPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14329 void ResetTextPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14330 {
14331 static Resetter* resetters[] = { ResetTextPickerRange, ResetTextPickerSelectedIndex, ResetTextPickerValue,
14332 ResetTextPickerDisappearTextStyle, ResetTextPickerTextStyle, ResetTextPickerSelectedTextStyle,
14333 ResetTextPickerSelectedIndex, ResetTextPickerCanLoop, ResetTextPickerDefaultPickerItemHeight };
14334 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14335 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "timepicker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14336 return;
14337 }
14338 return resetters[subTypeId](node);
14339 }
14340
SetCalendarPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14341 int32_t SetCalendarPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14342 {
14343 static Setter* setters[] = { SetHintRadius, SetSelectedDate, SetEdgeAlignment, SetCalendarPickerTextStyle };
14344 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14345 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "calendar picker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14346 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14347 }
14348 return setters[subTypeId](node, item);
14349 }
14350
ResetCalendarPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14351 void ResetCalendarPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14352 {
14353 static Resetter* resetters[] = { ResetHintRadius, ResetSelectedDate, ResetEdgeAlignment,
14354 ResetCalendarPickerTextStyle };
14355 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14356 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "calendar picker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14357 return;
14358 }
14359 return resetters[subTypeId](node);
14360 }
14361
GetCalendarPickerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14362 const ArkUI_AttributeItem* GetCalendarPickerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14363 {
14364 static Getter* getters[] = { GetHintRadius, GetSelectedDate, GetEdgeAlignment, GetCalendarPickerTextStyle };
14365 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14366 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "calendar picker node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14367 return nullptr;
14368 }
14369 return getters[subTypeId](node);
14370 }
14371
SetSliderAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14372 int32_t SetSliderAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14373 {
14374 static Setter* setters[] = {
14375 SetSliderBlockColor,
14376 SetSliderTrackColor,
14377 SetSliderSelectedColor,
14378 SetSliderShowSteps,
14379 SetSliderBlockStyle,
14380 SetSliderValue,
14381 SetSliderMinValue,
14382 SetSliderMaxValue,
14383 SetSliderStep,
14384 SetSliderDirection,
14385 SetSliderReverse,
14386 SetSliderStyle,
14387 SetSliderTrackThickness,
14388 SetSliderValidSlideRange,
14389 };
14390 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14391 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "slider node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14392 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14393 }
14394 return setters[subTypeId](node, item);
14395 }
14396
GetSliderAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14397 const ArkUI_AttributeItem* GetSliderAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14398 {
14399 static Getter* getters[] = {
14400 GetSliderBlockColor,
14401 GetSliderTrackColor,
14402 GetSliderSelectedColor,
14403 GetSliderShowSteps,
14404 GetSliderBlockStyle,
14405 GetSliderValue,
14406 GetSliderMinValue,
14407 GetSliderMaxValue,
14408 GetSliderStep,
14409 GetSliderDirection,
14410 GetSliderReverse,
14411 GetSliderStyle,
14412 GetSliderTrackThickness,
14413 GetSliderValidSlideRange,
14414 };
14415 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14416 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "slider node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14417 return nullptr;
14418 }
14419 g_attributeItem.size = RETURN_SIZE_ONE;
14420 return getters[subTypeId](node);
14421 }
14422
ResetSliderAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14423 void ResetSliderAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14424 {
14425 static Resetter* resetters[] = {
14426 ResetSliderBlockColor,
14427 ResetSliderTrackColor,
14428 ResetSliderSelectedColor,
14429 ResetSliderShowSteps,
14430 ResetSliderBlockStyle,
14431 ResetSliderValue,
14432 ResetSliderMinValue,
14433 ResetSliderMaxValue,
14434 ResetSliderStep,
14435 ResetSliderDirection,
14436 ResetSliderReverse,
14437 ResetSliderStyle,
14438 ResetSliderTrackThickness,
14439 ResetSliderValidSlideRange,
14440 };
14441 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14442 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "slider node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14443 return;
14444 }
14445 return resetters[subTypeId](node);
14446 }
14447
SetRadioAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14448 int32_t SetRadioAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14449 {
14450 static Setter* setters[] = { SetRadioChecked, SetRadioStyle, SetRadioValue, SetRadioGroup };
14451 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14452 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "radio node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14453 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14454 }
14455 return setters[subTypeId](node, item);
14456 }
14457
GetRadioAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14458 const ArkUI_AttributeItem* GetRadioAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14459 {
14460 static Getter* getters[] = { GetRadioChecked, GetRadioStyle, GetRadioValue, GetRadioGroup };
14461 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14462 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "radio node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14463 return nullptr;
14464 }
14465 g_attributeItem.size = RETURN_SIZE_ONE;
14466 return getters[subTypeId](node);
14467 }
14468
ResetRadioAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14469 void ResetRadioAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14470 {
14471 static Resetter* resetters[] = { ResetRadioChecked, ResetRadioStyle, ResetRadioValue, ResetRadioGroup };
14472 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14473 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "radio node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14474 return;
14475 }
14476 return resetters[subTypeId](node);
14477 }
14478
SetImageAnimatorAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14479 int32_t SetImageAnimatorAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14480 {
14481 static Setter* setters[] = { SetImageAnimatorSrc, SetImageAnimatorState, SetImageAnimatorDuration,
14482 SetImageAnimatorReverse, SetImageAnimatorFixedSize, SetImageAnimatorFillMode, SetImageAnimatorIterations };
14483 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14484 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "imageAnimator node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14485 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14486 }
14487 return setters[subTypeId](node, item);
14488 }
14489
GetImageAnimatorAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14490 const ArkUI_AttributeItem* GetImageAnimatorAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14491 {
14492 static Getter* getters[] = { GetImageAnimatorSrc, GetImageAnimatorState, GetImageAnimatorDuration,
14493 GetImageAnimatorReverse, GetImageAnimatorFixedSize, GetImageAnimatorFillMode, GetImageAnimatorIterations };
14494 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14495 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "imageAnimator node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14496 return nullptr;
14497 }
14498 return getters[subTypeId](node);
14499 }
14500
ResetImageAnimatorAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14501 void ResetImageAnimatorAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14502 {
14503 static Resetter* setters[] = { ResetImageAnimatorSrc, ResetImageAnimatorState, ResetImageAnimatorDuration,
14504 ResetImageAnimatorReverse, ResetImageAnimatorFixedSize, ResetImageAnimatorFillMode,
14505 ResetImageAnimatorIterations };
14506 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Resetter*)) {
14507 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "imageAnimator node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14508 return;
14509 }
14510 setters[subTypeId](node);
14511 }
14512
SetStackAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14513 int32_t SetStackAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14514 {
14515 static Setter* setters[] = { SetAlignContent };
14516 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14517 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "stack node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14518 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14519 }
14520 return setters[subTypeId](node, item);
14521 }
14522
GetStackAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14523 const ArkUI_AttributeItem* GetStackAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14524 {
14525 static Getter* getters[] = { GetAlignContent };
14526 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14527 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "stack node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14528 return nullptr;
14529 }
14530 return getters[subTypeId](node);
14531 }
14532
ResetStackAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14533 void ResetStackAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14534 {
14535 static Resetter* setters[] = { ResetAlignContent };
14536 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Resetter*)) {
14537 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "stack node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14538 return;
14539 }
14540 setters[subTypeId](node);
14541 }
14542
SetSwiperAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)14543 int32_t SetSwiperAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
14544 {
14545 static Setter* setters[] = { SetSwiperLoop, SetSwiperAutoPlay, SetSwiperShowIndicator, SetSwiperInterval,
14546 SetSwiperVertical, SetSwiperDuration, SetSwiperCurve, SetSwiperItemSpace, SetSwiperIndex, SetSwiperDisplayCount,
14547 SetSwiperDisableSwipe, SetSwiperShowDisplayArrow, SetSwiperEffectMode, SetSwiperNodeAdapter,
14548 SetSwiperCachedCount, SetSwiperPrevMargin, SetSwiperNextMargin, SetSwiperIndicator, SetSwiperNestedScroll,
14549 SetSwiperToIndex, SetSwiperIndicatorInteractive, SetSwiperPageFlipMode };
14550 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14551 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "swiper node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14552 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14553 }
14554 return setters[subTypeId](node, value);
14555 }
14556
ResetSwiperAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14557 void ResetSwiperAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14558 {
14559 static Resetter* resetters[] = { ResetSwiperLoop, ResetSwiperAutoPlay, ResetSwiperShowIndicator,
14560 ResetSwiperInterval, ResetSwiperVertical, ResetSwiperDuration, ResetSwiperCurve, ResetSwiperItemSpace,
14561 ResetSwiperIndex, ResetSwiperDisplayCount, ResetSwiperDisableSwipe, ResetSwiperShowDisplayArrow,
14562 ResetSwiperEffectMode, ResetSwiperNodeAdapter, ResetSwiperCachedCount, ResetSwiperPrevMargin,
14563 ResetSwiperNextMargin, ResetSwiperIndicator, ResetSwiperNestedScroll, nullptr, ResetSwiperIndicatorInteractive,
14564 ResetSwiperPageFlipMode };
14565 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14566 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "swiper node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14567 return;
14568 }
14569 resetters[subTypeId](node);
14570 }
14571
GetSwiperAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14572 const ArkUI_AttributeItem* GetSwiperAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14573 {
14574 static Getter* getters[] = { GetSwiperLoop, GetSwiperAutoPlay, GetSwiperShowIndicator, GetSwiperInterval,
14575 GetSwiperVertical, GetSwiperDuration, GetSwiperCurve, GetSwiperItemSpace, GetSwiperIndex, GetSwiperDisplayCount,
14576 GetSwiperDisableSwipe, GetSwiperShowDisplayArrow, GetSwiperEffectMode, GetSwiperNodeAdapter,
14577 GetSwiperCachedCount, GetSwiperPrevMargin, GetSwiperNextMargin, GetSwiperIndicator, GetSwiperNestedScroll,
14578 nullptr, GetSwiperIndicatorInteractive, GetSwiperPageFlipMode };
14579 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14580 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "swiper node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14581 return nullptr;
14582 }
14583 g_attributeItem.size = RETURN_SIZE_ONE;
14584 return getters[subTypeId](node);
14585 }
14586
SetScrollAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14587 int32_t SetScrollAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14588 {
14589 static Setter* setters[] = { SetScrollScrollBar, SetScrollScrollBarWidth, SetScrollScrollBarColor,
14590 SetScrollScrollable, SetScrollEdgeEffect, SetScrollEnableScrollInteraction, SetScrollFriction,
14591 SetScrollScrollSnap, SetScrollNestedScroll, SetScrollTo, SetScrollEdge, SetScrollEnablePaging, SetScrollPage,
14592 SetScrollBy, SetScrollFling, SetScrollFadingEdge, nullptr, SetContentStartOffset, SetContentEndOffset,
14593 nullptr, nullptr, SetScrollBackToTop };
14594 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14595 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "scroll node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14596 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14597 }
14598 return setters[subTypeId](node, item);
14599 }
14600
GetScrollAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14601 const ArkUI_AttributeItem* GetScrollAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14602 {
14603 static Getter* getters[] = { GetScrollScrollBar, GetScrollScrollBarWidth, GetScrollScrollBarColor,
14604 GetScrollScrollable, GetScrollEdgeEffect, GetScrollEnableScrollInteraction, GetScrollFriction,
14605 GetScrollScrollSnap, GetScrollNestedScroll, GetScrollOffset, GetScrollEdge, GetScrollEnablePaging, nullptr,
14606 nullptr, nullptr, GetScrollFadingEdge, GetScrollContentSize, GetContentStartOffset, GetContentEndOffset,
14607 nullptr, nullptr, GetScrollBackToTop };
14608 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14609 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "slider node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14610 return nullptr;
14611 }
14612 g_attributeItem.size = RETURN_SIZE_ONE;
14613 return getters[subTypeId](node);
14614 }
14615
ResetScrollAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14616 void ResetScrollAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14617 {
14618 static Resetter* resetters[] = { ResetScrollScrollBar, ResetScrollScrollBarWidth, ResetScrollScrollBarColor,
14619 ResetScrollScrollable, ResetScrollEdgeEffect, ResetScrollEnableScrollInteraction, ResetScrollFriction,
14620 ResetScrollScrollSnap, ResetScrollNestedScroll, ResetScrollTo, ResetScrollEdge, ResetScrollEnablePaging,
14621 nullptr, nullptr, nullptr, ResetScrollFadingEdge, nullptr, ResetContentStartOffset, ResetContentEndOffset,
14622 nullptr, nullptr, ResetScrollBackToTop };
14623 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14624 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "list node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14625 return;
14626 }
14627 return resetters[subTypeId](node);
14628 }
14629
SetListAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * value)14630 int32_t SetListAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* value)
14631 {
14632 static Setter* setters[] = { SetListDirection, SetListSticky, SetListSpace, SetListNodeAdapter, SetListCachedCount,
14633 SetListScrollToIndex, SetListAlignListItem, SetListChildrenMainSize, SetListInitialIndex, SetListDivider,
14634 SetListScrollToItemInGroup, SetListLanes, SetListScrollSnapAlign, SetListMaintainVisibleContentPosition };
14635 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14636 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "list node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14637 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14638 }
14639 return setters[subTypeId](node, value);
14640 }
14641
GetListAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14642 const ArkUI_AttributeItem* GetListAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14643 {
14644 static Getter* getters[] = { GetListDirection, GetListSticky, GetListSpace, GetListNodeAdapter, GetListCachedCount,
14645 nullptr, GetListAlignListItem, nullptr, GetListInitialIndex, GetListDivider, nullptr, GetListLanes,
14646 GetListScrollSnapAlign, GetListMaintainVisibleContentPosition };
14647 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14648 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "loadingprogress node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14649 return &g_attributeItem;
14650 }
14651 return getters[subTypeId](node);
14652 }
14653
ResetListAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14654 void ResetListAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14655 {
14656 static Resetter* resetters[] = { ResetListDirection, ResetListSticky, ResetListSpace, ResetListNodeAdapter,
14657 ResetListCachedCount, nullptr, ResetListAlignListItem, ResetListChildrenMainSize, ResetListInitialIndex,
14658 ResetListDivider, nullptr, ResetListLanes, ResetListScrollSnapAlign, ResetListMaintainVisibleContentPosition };
14659 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14660 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "list node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14661 return;
14662 }
14663 return resetters[subTypeId](node);
14664 }
14665
SetListItemAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14666 int32_t SetListItemAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14667 {
14668 static Setter* setters[] = { SetListItemSwiperAction };
14669 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14670 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "listitem node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14671 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14672 }
14673 return setters[subTypeId](node, item);
14674 }
14675
ResetListItemAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14676 void ResetListItemAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14677 {
14678 static Resetter* resetters[] = { ResetListItemSwiperAction };
14679 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14680 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "listitem node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14681 return;
14682 }
14683 if (resetters[subTypeId]) {
14684 return resetters[subTypeId](node);
14685 }
14686 }
14687
SetListItemGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14688 int32_t SetListItemGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14689 {
14690 static Setter* setters[] = { SetListItemGroupHeader, SetListItemGroupFooter, SetListItemGroupDivider,
14691 SetListItemGroupChildrenMainSize, SetListItemGroupNodeAdapter };
14692 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14693 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "listitemgroup node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14694 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14695 }
14696 return setters[subTypeId](node, item);
14697 }
14698
ResetListItemGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14699 void ResetListItemGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14700 {
14701 static Resetter* resetters[] = { ResetListItemGroupHeader, ResetListItemGroupFooter, ResetListItemGroupDivider,
14702 ResetListItemGroupChildrenMainSize, ResetListItemGroupNodeAdapter };
14703 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14704 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "ListItemGroup node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14705 return;
14706 }
14707 if (resetters[subTypeId]) {
14708 return resetters[subTypeId](node);
14709 }
14710 }
14711
GetListItemGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14712 const ArkUI_AttributeItem* GetListItemGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14713 {
14714 static Getter* getters[] = { nullptr, nullptr, GetListItemGroupDivider, nullptr, GetListItemGroupNodeAdapter };
14715 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14716 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "ListItemGroup node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14717 return nullptr;
14718 }
14719 g_attributeItem.size = RETURN_SIZE_ONE;
14720 return getters[subTypeId](node);
14721 }
14722
SetColumnAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14723 int32_t SetColumnAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14724 {
14725 static Setter* setters[] = { SetAlignItems, SetJustifyContent };
14726 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14727 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "column node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14728 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14729 }
14730 return setters[subTypeId](node, item);
14731 }
14732
ResetColumnAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14733 void ResetColumnAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14734 {
14735 static Resetter* resetters[] = { ResetAlignItems, ResetJustifyContent };
14736 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14737 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "column node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14738 return;
14739 }
14740 return resetters[subTypeId](node);
14741 }
14742
GetColumnAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14743 const ArkUI_AttributeItem* GetColumnAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14744 {
14745 static Getter* getters[] = { GetAlignItems, GetJustifyContent };
14746 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14747 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "column node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14748 return nullptr;
14749 }
14750 g_attributeItem.size = RETURN_SIZE_ONE;
14751 return getters[subTypeId](node);
14752 }
14753
SetRowAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14754 int32_t SetRowAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14755 {
14756 static Setter* setters[] = { SetAlignItems, SetJustifyContent };
14757 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14758 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "row node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14759 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14760 }
14761 return setters[subTypeId](node, item);
14762 }
14763
ResetRowAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14764 void ResetRowAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14765 {
14766 static Resetter* resetters[] = { ResetAlignItems, ResetJustifyContent };
14767 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14768 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "row node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14769 return;
14770 }
14771 return resetters[subTypeId](node);
14772 }
14773
GetRowAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14774 const ArkUI_AttributeItem* GetRowAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14775 {
14776 static Getter* getters[] = { GetAlignItems, GetJustifyContent };
14777 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14778 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "row node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14779 return nullptr;
14780 }
14781 g_attributeItem.size = RETURN_SIZE_ONE;
14782 return getters[subTypeId](node);
14783 }
14784
SetFlexAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14785 int32_t SetFlexAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14786 {
14787 static Setter* setters[] = { SetFlexOptions };
14788 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14789 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "flex node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14790 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14791 }
14792 return setters[subTypeId](node, item);
14793 }
14794
ResetFlexAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14795 void ResetFlexAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14796 {
14797 static Resetter* resetters[] = { ResetFlexOptions };
14798 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14799 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "flex node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14800 return;
14801 }
14802 return resetters[subTypeId](node);
14803 }
14804
GetFlexAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14805 const ArkUI_AttributeItem* GetFlexAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14806 {
14807 static Getter* getters[] = { GetFlexOptions };
14808 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14809 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "flex node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14810 return nullptr;
14811 }
14812 g_attributeItem.size = RETURN_SIZE_ONE;
14813 return getters[subTypeId](node);
14814 }
14815
SetRefreshAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14816 int32_t SetRefreshAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14817 {
14818 static Setter* setters[] = { SetRefreshRefreshing, SetRefreshContent, SetRefreshPullDownRatio, SetRefreshOffset,
14819 SetPullToRefresh };
14820 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14821 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "refresh node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14822 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14823 }
14824 return setters[subTypeId](node, item);
14825 }
14826
GetRefreshAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14827 const ArkUI_AttributeItem* GetRefreshAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14828 {
14829 static Getter* getters[] = { GetRefreshRefreshing, nullptr, GetRefreshPullDownRatio, GetRefreshOffset,
14830 GetPullToRefresh };
14831 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14832 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "refresh node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14833 return nullptr;
14834 }
14835 g_attributeItem.size = RETURN_SIZE_ONE;
14836 if (getters[subTypeId]) {
14837 return getters[subTypeId](node);
14838 }
14839 return nullptr;
14840 }
14841
ResetRefreshAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14842 void ResetRefreshAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14843 {
14844 static Resetter* resetters[] = { nullptr, ResetRefreshContent, ResetRefreshPullDownRatio, ResetRefreshOffset,
14845 ResetPullToRefresh };
14846 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14847 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "refresh node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14848 return;
14849 }
14850 if (resetters[subTypeId]) {
14851 return resetters[subTypeId](node);
14852 }
14853 }
14854
SetWaterFlowAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14855 int32_t SetWaterFlowAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14856 {
14857 static Setter* setters[] = { SetLayoutDirection, SetColumnsTemplate, SetRowsTemplate, SetWaterFlowColumnsGap,
14858 SetWaterFlowRowsGap, SetWaterFlowSectionOption, SetWaterFlowNodeAdapter, SetWaterFlowCachedCount,
14859 SetWaterFlowFooter, SetWaterFlowScrollToIndex, SetItemConstraintSize };
14860 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14861 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "waterFlow node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14862 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14863 }
14864 return setters[subTypeId](node, item);
14865 }
14866
ResetWaterFlowAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14867 void ResetWaterFlowAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14868 {
14869 static Resetter* resetters[] = { ResetLayoutDirection, ResetColumnsTemplate, ResetRowsTemplate,
14870 ResetWaterFlowColumnsGap, ResetWaterFlowRowsGap, ResetWaterFlowSectionOption, ResetWaterFlowNodeAdapter,
14871 ResetWaterFlowCachedCount, ResetWaterFlowFooter, nullptr, ResetItemConstraintSize };
14872 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14873 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "waterFlow node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14874 return;
14875 }
14876 return resetters[subTypeId](node);
14877 }
14878
GetWaterFlowAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14879 const ArkUI_AttributeItem* GetWaterFlowAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14880 {
14881 static Getter* getters[] = { GetLayoutDirection, GetColumnsTemplate, GetRowsTemplate, GetWaterFlowColumnsGap,
14882 GetWaterFlowRowsGap, GetWaterFlowSectionOption, GetWaterFlowNodeAdapter, GetWaterFlowCachedCount,
14883 nullptr, nullptr, GetItemConstraintSize };
14884 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14885 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "waterFlow node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14886 return nullptr;
14887 }
14888 g_attributeItem.size = RETURN_SIZE_ONE;
14889 return getters[subTypeId](node);
14890 }
14891
SetRelativeContainerAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14892 int32_t SetRelativeContainerAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14893 {
14894 static Setter* setters[] = { SetRelativeContainerGuideLine, SetRelativeContainerBarrier };
14895 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14896 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "RelativeContainer node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14897 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14898 }
14899 return setters[subTypeId](node, item);
14900 }
14901
ResetRelativeContainerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14902 void ResetRelativeContainerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14903 {
14904 static Resetter* resetters[] = { ResetRelativeContainerGuideLine, ResetRelativeContainerBarrier };
14905 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14906 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "RelativeContainer node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14907 return;
14908 }
14909 return resetters[subTypeId](node);
14910 }
14911
GetRelativeContainerAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14912 const ArkUI_AttributeItem* GetRelativeContainerAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14913 {
14914 static Getter* getters[] = { GetRelativeContainerGuideLine, GetRelativeContainerBarrier };
14915 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14916 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "RelativeContainer node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14917 return nullptr;
14918 }
14919 g_attributeItem.size = RETURN_SIZE_ONE;
14920 return getters[subTypeId](node);
14921 }
14922
SetGridAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14923 int32_t SetGridAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14924 {
14925 static Setter* setters[] = { SetGridColumnsTemplate, SetGridRowsTemplate, SetGridColumnsGap, SetGridRowsGap,
14926 SetGridNodeAdapter, SetGridCachedCount };
14927 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14928 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Grid node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14929 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14930 }
14931 return setters[subTypeId](node, item);
14932 }
14933
ResetGridAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14934 void ResetGridAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14935 {
14936 static Resetter* resetters[] = { ResetGridColumnsTemplate, ResetGridRowsTemplate, ResetGridColumnsGap,
14937 ResetGridRowsGap, ResetGridNodeAdapter, ResetGridCachedCount };
14938 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14939 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Grid node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14940 return;
14941 }
14942 return resetters[subTypeId](node);
14943 }
14944
GetGridAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14945 const ArkUI_AttributeItem* GetGridAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14946 {
14947 static Getter* getters[] = { GetGridColumnsTemplate, GetGridRowsTemplate, GetGridColumnsGap, GetGridRowsGap,
14948 GetGridNodeAdapter, GetGridCachedCount };
14949 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14950 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Grid node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14951 return nullptr;
14952 }
14953 g_attributeItem.size = RETURN_SIZE_ONE;
14954 return getters[subTypeId](node);
14955 }
14956 } // namespace
14957
SetCheckboxGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId,const ArkUI_AttributeItem * item)14958 int32_t SetCheckboxGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item)
14959 {
14960 static Setter* setters[] = { SetCheckboxGroupName, SetCheckboxGroupSelectAll, SetCheckboxGroupSelectedColor,
14961 SetCheckboxGroupUnSelectedColor, SetCheckboxGroupMark, SetCheckboxGroupShape };
14962 if (static_cast<uint32_t>(subTypeId) >= sizeof(setters) / sizeof(Setter*)) {
14963 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
14964 }
14965 return setters[subTypeId](node, item);
14966 }
14967
GetCheckboxGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14968 const ArkUI_AttributeItem* GetCheckboxGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14969 {
14970 static Getter* getters[] = { GetCheckboxGroupName, GetCheckboxGroupSelectAll, GetCheckboxGroupSelectedColor,
14971 GetCheckboxGroupUnSelectedColor, GetCheckboxGroupMark, GetCheckboxGroupShape };
14972 if (static_cast<uint32_t>(subTypeId) >= sizeof(getters) / sizeof(Getter*)) {
14973 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Checkbox node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14974 return nullptr;
14975 }
14976 g_attributeItem.size = RETURN_SIZE_ONE;
14977 return getters[subTypeId](node);
14978 }
14979
ResetCheckboxGroupAttribute(ArkUI_NodeHandle node,int32_t subTypeId)14980 void ResetCheckboxGroupAttribute(ArkUI_NodeHandle node, int32_t subTypeId)
14981 {
14982 static Resetter* resetters[] = { ResetCheckboxGroupName, ResetCheckboxGroupSelectAll,
14983 ResetCheckboxGroupSelectedColor, ResetCheckboxGroupUnSelectedColor, ResetCheckboxGroupMark,
14984 ResetCheckboxGroupShape };
14985 if (static_cast<uint32_t>(subTypeId) >= sizeof(resetters) / sizeof(Resetter*)) {
14986 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "Checkbox node attribute: %{public}d NOT IMPLEMENT", subTypeId);
14987 return;
14988 }
14989 return resetters[subTypeId](node);
14990 }
14991
SetNodeAttribute(ArkUI_NodeHandle node,ArkUI_NodeAttributeType type,const ArkUI_AttributeItem * item)14992 int32_t SetNodeAttribute(ArkUI_NodeHandle node, ArkUI_NodeAttributeType type, const ArkUI_AttributeItem* item)
14993 {
14994 using AttributeSetterClass = int32_t(ArkUI_NodeHandle node, int32_t subTypeId, const ArkUI_AttributeItem* item);
14995 static AttributeSetterClass* setterClasses[] = {
14996 SetCommonAttribute,
14997 SetTextAttribute,
14998 SetSpanAttribute,
14999 SetImageSpanAttribute,
15000 SetImageAttribute,
15001 SetToggleAttribute,
15002 SetLoadingProgressAttribute,
15003 SetTextInputAttribute,
15004 SetTextAreaAttribute,
15005 SetButtonAttribute,
15006 SetProgressAttribute,
15007 SetCheckboxAttribute,
15008 SetXComponentAttribute,
15009 SetDatePickerAttribute,
15010 SetTimePickerAttribute,
15011 SetTextPickerAttribute,
15012 SetCalendarPickerAttribute,
15013 SetSliderAttribute,
15014 SetRadioAttribute,
15015 SetImageAnimatorAttribute,
15016 nullptr,
15017 SetCheckboxGroupAttribute,
15018 SetStackAttribute,
15019 SetSwiperAttribute,
15020 SetScrollAttribute,
15021 SetListAttribute,
15022 SetListItemAttribute,
15023 SetListItemGroupAttribute,
15024 SetColumnAttribute,
15025 SetRowAttribute,
15026 SetFlexAttribute,
15027 SetRefreshAttribute,
15028 SetWaterFlowAttribute,
15029 nullptr,
15030 SetRelativeContainerAttribute,
15031 SetGridAttribute
15032 };
15033 int32_t subTypeClass = type / MAX_NODE_SCOPE_NUM;
15034 int32_t subTypeId = type % MAX_NODE_SCOPE_NUM;
15035 int32_t nodeSubTypeClass =
15036 subTypeClass < MAX_NODE_SCOPE_NUM ? subTypeClass : (subTypeClass - MAX_NODE_SCOPE_NUM + BASIC_COMPONENT_NUM);
15037 if ((static_cast<uint32_t>(nodeSubTypeClass) >= sizeof(setterClasses) / sizeof(AttributeSetterClass*)) ||
15038 !CheckIfAttributeLegal(node, type) || !CheckIsCNodeOrCrossLanguage(node)) {
15039 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
15040 }
15041 if (!setterClasses[nodeSubTypeClass]) {
15042 return ERROR_CODE_PARAM_INVALID;
15043 }
15044 auto result = setterClasses[nodeSubTypeClass](node, subTypeId, item);
15045 if (result == ERROR_CODE_NO_ERROR) {
15046 GetFullImpl()->getBasicAPI()->markDirty(node->uiNodeHandle, ARKUI_DIRTY_FLAG_ATTRIBUTE_DIFF);
15047 }
15048 return result;
15049 }
15050
GetNodeAttribute(ArkUI_NodeHandle node,ArkUI_NodeAttributeType type)15051 const ArkUI_AttributeItem* GetNodeAttribute(ArkUI_NodeHandle node, ArkUI_NodeAttributeType type)
15052 {
15053 ResetAttributeItem();
15054 using AttributeGetterClass = const ArkUI_AttributeItem*(ArkUI_NodeHandle node, int32_t subTypeId);
15055 static AttributeGetterClass* getterClasses[] = { GetCommonAttribute, GetTextAttribute, GetSpanAttribute,
15056 GetImageSpanAttribute, GetImageAttribute, GetToggleAttribute, GetLoadingProgressAttribute,
15057 GetTextInputAttribute, GetTextAreaAttribute, GetButtonAttribute, GetProgressAttribute, GetCheckboxAttribute,
15058 GetXComponentAttribute, GetDatePickerAttribute, GetTimePickerAttribute, GetTextPickerAttribute,
15059 GetCalendarPickerAttribute, GetSliderAttribute, GetRadioAttribute, GetImageAnimatorAttribute, nullptr,
15060 GetCheckboxGroupAttribute, GetStackAttribute,
15061 GetSwiperAttribute, GetScrollAttribute, GetListAttribute, nullptr, GetListItemGroupAttribute,
15062 GetColumnAttribute, GetRowAttribute, GetFlexAttribute, GetRefreshAttribute, GetWaterFlowAttribute, nullptr,
15063 GetRelativeContainerAttribute, GetGridAttribute };
15064 int32_t subTypeClass = type / MAX_NODE_SCOPE_NUM;
15065 int32_t subTypeId = type % MAX_NODE_SCOPE_NUM;
15066 int32_t nodeSubTypeClass =
15067 subTypeClass < MAX_NODE_SCOPE_NUM ? subTypeClass : (subTypeClass - MAX_NODE_SCOPE_NUM + BASIC_COMPONENT_NUM);
15068 if ((static_cast<uint32_t>(nodeSubTypeClass) >= sizeof(getterClasses) / sizeof(AttributeGetterClass*)) ||
15069 !CheckIfAttributeLegal(node, type)) {
15070 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "node attribute: %{public}d NOT IMPLEMENT", type);
15071 return nullptr;
15072 }
15073 if (!getterClasses[nodeSubTypeClass]) {
15074 return nullptr;
15075 }
15076 return getterClasses[nodeSubTypeClass](node, subTypeId);
15077 }
15078
ResetNodeAttribute(ArkUI_NodeHandle node,ArkUI_NodeAttributeType type)15079 int32_t ResetNodeAttribute(ArkUI_NodeHandle node, ArkUI_NodeAttributeType type)
15080 {
15081 using AttributeResetterClass = void(ArkUI_NodeHandle node, int32_t subTypeId);
15082 static AttributeResetterClass* resetterClasses[] = {
15083 ResetCommonAttribute,
15084 ResetTextAttribute,
15085 ResetSpanAttribute,
15086 ResetImageSpanAttribute,
15087 ResetImageAttribute,
15088 ResetToggleAttribute,
15089 ResetLoadingProgressAttribute,
15090 ResetTextInputAttribute,
15091 ResetTextAreaAttribute,
15092 ResetButtonAttribute,
15093 ResetProgressAttribute,
15094 ResetCheckboxAttribute,
15095 ResetXComponentAttribute,
15096 ResetDatePickerAttribute,
15097 ResetTimePickerAttribute,
15098 ResetTextPickerAttribute,
15099 ResetCalendarPickerAttribute,
15100 ResetSliderAttribute,
15101 ResetRadioAttribute,
15102 ResetImageAnimatorAttribute,
15103 nullptr,
15104 ResetCheckboxGroupAttribute,
15105 ResetStackAttribute,
15106 ResetSwiperAttribute,
15107 ResetScrollAttribute,
15108 ResetListAttribute,
15109 ResetListItemAttribute,
15110 ResetListItemGroupAttribute,
15111 ResetColumnAttribute,
15112 ResetRowAttribute,
15113 ResetFlexAttribute,
15114 ResetRefreshAttribute,
15115 ResetWaterFlowAttribute,
15116 nullptr,
15117 ResetRelativeContainerAttribute,
15118 ResetGridAttribute
15119 };
15120 int32_t subTypeClass = type / MAX_NODE_SCOPE_NUM;
15121 int32_t subTypeId = type % MAX_NODE_SCOPE_NUM;
15122 int32_t nodeSubTypeClass =
15123 subTypeClass < MAX_NODE_SCOPE_NUM ? subTypeClass : (subTypeClass - MAX_NODE_SCOPE_NUM + BASIC_COMPONENT_NUM);
15124 if ((static_cast<uint32_t>(nodeSubTypeClass) >= sizeof(resetterClasses) / sizeof(AttributeResetterClass*)) ||
15125 !CheckIfAttributeLegal(node, type) || !CheckIsCNodeOrCrossLanguage(node)) {
15126 TAG_LOGE(AceLogTag::ACE_NATIVE_NODE, "node attribute: %{public}d NOT IMPLEMENT", type);
15127 return ERROR_CODE_NATIVE_IMPL_TYPE_NOT_SUPPORTED;
15128 }
15129 if (!resetterClasses[nodeSubTypeClass]) {
15130 return ERROR_CODE_PARAM_INVALID;
15131 }
15132 resetterClasses[nodeSubTypeClass](node, subTypeId);
15133 GetFullImpl()->getBasicAPI()->markDirty(node->uiNodeHandle, ARKUI_DIRTY_FLAG_ATTRIBUTE_DIFF);
15134 return ERROR_CODE_NO_ERROR;
15135 }
15136
15137 } // namespace OHOS::Ace::NodeModel