• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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