1 /*
2 * Copyright (c) 2023 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 "base/memory/ace_type.h"
16 #include "core/interfaces/native/node/api.h"
17 #include "core/interfaces/native/node/blank_modifier.h"
18 #include "core/interfaces/native/node/button_modifier.h"
19 #include "core/interfaces/native/node/checkbox_modifier.h"
20 #include "core/interfaces/native/node/checkboxgroup_modifier.h"
21 #include "core/interfaces/native/node/column_modifier.h"
22 #include "core/interfaces/native/node/column_split_modifier.h"
23 #include "core/interfaces/native/node/common_modifier.h"
24 #include "core/interfaces/native/node/counter_modifier.h"
25 #include "core/interfaces/native/node/date_picker_modifier.h"
26 #include "core/interfaces/native/node/divider_modifier.h"
27 #include "core/interfaces/native/node/grid_modifier.h"
28 #include "core/interfaces/native/node/grid_col_modifier.h"
29 #include "core/interfaces/native/node/grid_item_modifier.h"
30 #include "core/interfaces/native/node/grid_row_modifier.h"
31 #include "core/interfaces/native/node/hyperlink_modifier.h"
32 #include "core/interfaces/native/node/image_animator_modifier.h"
33 #include "core/interfaces/native/node/image_modifier.h"
34 #include "core/interfaces/native/node/image_span_modifier.h"
35 #include "core/interfaces/native/node/list_item_modifier.h"
36 #include "core/interfaces/native/node/menu_modifier.h"
37 #include "core/interfaces/native/node/menu_item_modifier.h"
38 #include "core/interfaces/native/node/nav_destination_modifier.h"
39 #include "core/interfaces/native/node/nav_router_modifier.h"
40 #include "core/interfaces/native/node/navigation_modifier.h"
41 #include "core/interfaces/native/node/navigator_modifier.h"
42 #include "core/interfaces/native/node/node_container_modifier.h"
43 #include "core/interfaces/native/node/panel_modifier.h"
44 #include "core/interfaces/native/node/pattern_lock_modifier.h"
45 #include "core/interfaces/native/node/progress_modifier.h"
46 #include "core/interfaces/native/node/render_node_modifier.h"
47 #include "core/interfaces/native/node/text_area_modifier.h"
48 #include "core/interfaces/native/node/text_input_modifier.h"
49 #include "core/interfaces/native/node/swiper_modifier.h"
50 #include "core/interfaces/native/node/text_modifier.h"
51 #include "core/interfaces/native/node/toggle_modifier.h"
52 #include "core/interfaces/native/node/radio_modifier.h"
53 #include "core/interfaces/native/node/rating_modifier.h"
54 #include "core/interfaces/native/node/rich_editor_modifier.h"
55 #include "core/interfaces/native/node/row_modifier.h"
56 #include "core/interfaces/native/node/row_split_modifier.h"
57 #include "core/interfaces/native/node/search_modifier.h"
58 #include "core/interfaces/native/node/select_modifier.h"
59 #include "core/interfaces/native/node/slider_modifier.h"
60 #include "core/interfaces/native/node/span_modifier.h"
61 #include "core/interfaces/native/node/stack_modifier.h"
62 #include "core/interfaces/native/node/stepper_item_modifier.h"
63 #include "core/interfaces/native/node/tabs_modifier.h"
64 #include "core/interfaces/native/node/textpicker_modifier.h"
65 #include "core/interfaces/native/node/timepicker_modifier.h"
66 #include "core/interfaces/native/node/video_modifier.h"
67 #include "core/interfaces/native/node/line_modifier.h"
68 #include "core/interfaces/native/node/path_modifier.h"
69 #include "core/interfaces/native/node/polygon_modifier.h"
70 #include "core/interfaces/native/node/polyline_modifier.h"
71 #include "core/interfaces/native/node/qrcode_modifier.h"
72 #include "core/interfaces/native/node/water_flow_modifier.h"
73 #include "core/interfaces/native/node/side_bar_container_modifier.h"
74 #include "core/interfaces/native/node/marquee_modifier.h"
75 #include "core/components/common/layout/constants.h"
76 #include "core/components_ng/base/frame_node.h"
77 #include "core/components_ng/base/view_abstract.h"
78 #include "core/pipeline/base/element_register.h"
79 #include "core/interfaces/native/node/calendar_picker_modifier.h"
80 #include "core/interfaces/native/node/alphabet_indexer_modifier.h"
81 #include "core/interfaces/native/node/data_panel_modifier.h"
82 #include "core/interfaces/native/node/gauge_modifier.h"
83 #include "core/interfaces/native/node/scroll_modifier.h"
84 #include "core/interfaces/native/node/common_shape_modifier.h"
85 #include "core/interfaces/native/node/shape_modifier.h"
86 #include "core/interfaces/native/node/rect_modifier.h"
87 #include "core/interfaces/native/node/list_modifier.h"
88 #include "core/interfaces/native/node/list_item_group_modifier.h"
89 #include "core/interfaces/native/node/text_timer_modifier.h"
90 #include "core/interfaces/native/node/loading_progress_modifier.h"
91 #include "core/interfaces/native/node/text_clock_modifier.h"
92 #ifdef PLUGIN_COMPONENT_SUPPORTED
93 #include "core/interfaces/native/node/plugin_modifier.h"
94 #endif
95 #ifdef XCOMPONENT_SUPPORTED
96 #include "core/interfaces/native/node/xcomponent_modifier.h"
97 #endif
98 #ifdef FORM_SUPPORTED
99 #include "core/interfaces/native/node/form_component_modifier.h"
100 #endif
101
102 using namespace OHOS::Ace::NG;
103
GetFrameNodeById(int nodeId)104 NodeHandle GetFrameNodeById(int nodeId)
105 {
106 auto node = OHOS::Ace::ElementRegister::GetInstance()->GetNodeById(nodeId);
107 return OHOS::Ace::AceType::RawPtr(node);
108 }
109
GetUIState(NodeHandle node)110 int64_t GetUIState(NodeHandle node)
111 {
112 auto* frameNode = reinterpret_cast<FrameNode*>(node);
113 CHECK_NULL_RETURN(frameNode, 0);
114 auto eventHub = frameNode->GetEventHub<EventHub>();
115 CHECK_NULL_RETURN(eventHub, 0);
116 return eventHub->GetCurrentUIState();
117 }
118
SetSupportedUIState(NodeHandle node,uint64_t state)119 void SetSupportedUIState(NodeHandle node, uint64_t state)
120 {
121 auto* frameNode = reinterpret_cast<FrameNode*>(node);
122 CHECK_NULL_VOID(frameNode);
123 auto eventHub = frameNode->GetEventHub<EventHub>();
124 CHECK_NULL_VOID(eventHub);
125 eventHub->AddSupportedState(static_cast<uint64_t>(state));
126 }
127
128 static struct ArkUINodeAPI impl = {
129 GetFrameNodeById,
130 GetUIState,
131 SetSupportedUIState,
132 GetCommonModifier,
133 GetCheckboxGroupModifier,
134 GetCounterModifier,
135 GetRowModifier,
136 GetRowSplitModifier,
137 GetTextModifier,
138 GetButtonModifier,
139 GetToggleModifier,
140 GetImageSpanModifier,
141 GetBlankModifier,
142 GetSearchModifier,
143 GetSelectModifier,
144 GetRadioModifier,
145 GetCheckboxModifier,
146 GetTimepickerModifier,
147 GetTextpickerModifier,
148 GetRatingModifier,
149 GetSliderModifier,
150 GetDividerModifier,
151 GetStackModifier,
152 GetNavDestinationModifier,
153 GetGridModifier,
154 GetGridColModifier,
155 GetGridRowModifier,
156 GetPanelModifier,
157 GetTextAreaModifier,
158 GetNavigationModifier,
159 GetColumnModifier,
160 GetRichEditorModifier,
161 GetImageModifier,
162 GetVideoModifier,
163 GetNavigatorModifier,
164 GetNavRouterModifier,
165 GetNodeContainerModifier,
166 GetPatternLockModifier,
167 GetColumnSplitModifier,
168 GetLineModifier,
169 GetPathModifier,
170 GetPolygonModifier,
171 GetPolylineModifier,
172 GetSpanModifier,
173 GetImageAnimatorModifier,
174 GetSideBarContainerModifier,
175 GetCalendarPickerModifier,
176 GetTextInputModifier,
177 GetTabsModifier,
178 GetStepperItemModifier,
179 GetHyperlinkModifier,
180 GetMarqueeModifier,
181 GetMenuItemModifier,
182 GetMenuModifier,
183 GetDatePickerModifier,
184 GetWaterFlowModifier,
185 GetAlphabetIndexerModifier,
186 GetDataPanelModifier,
187 GetGaugeModifier,
188 GetScrollModifier,
189 GetGridItemModifier,
190 GetProgressModifier,
191 GetCommonShapeModifier,
192 GetShapeModifier,
193 GetRectModifier,
194 GetSwiperModifier,
195 GetListItemModifier,
196 GetListModifier,
197 GetListItemGroupModifier,
198 GetQRCodeModifier,
199 GetLoadingProgressModifier,
200 GetTextClockModifier,
201 GetTextTimerModifier,
202 GetRenderNodeModifier,
203
204 #ifdef PLUGIN_COMPONENT_SUPPORTED
205 GetPluginModifier,
206 #endif
207 #ifdef XCOMPONENT_SUPPORTED
208 GetXComponentModifier,
209 #endif
210 #ifdef FORM_SUPPORTED
211 GetFormComponentModifier,
212 #endif
213 };
214
GetArkUIInternalNodeAPI()215 ArkUINodeAPI* GetArkUIInternalNodeAPI()
216 {
217 return &impl;
218 }
219
GetArkUINodeAPI()220 extern "C" ACE_FORCE_EXPORT ArkUINodeAPI* GetArkUINodeAPI()
221 {
222 return &impl;
223 }
224