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 #ifndef FRAMEWORKS_CORE_INTERFACES_NATIVE_NODE_VIEW_MODEL_H
16 #define FRAMEWORKS_CORE_INTERFACES_NATIVE_NODE_VIEW_MODEL_H
17 
18 #pragma once
19 
20 #include "core/interfaces/native/node/node_api.h"
21 
22 #include "core/interfaces/native/node/extension_companion_node.h"
23 
24 namespace OHOS::Ace::NG::ViewModel {
25 
26 void* CreateNode(ArkUINodeType tag, ArkUI_Int32 nodeId);
27 
28 void* CreateNodeWithParams(ArkUINodeType tag, ArkUI_Int32 nodeId, const ArkUI_Params& params);
29 
30 ArkUI_CharPtr GetName(void* nativePtr);
31 
32 void DisposeNode(void* nativePtr);
33 
34 void AddChild(void* parentNode, void* childNode);
35 
36 void RemoveChild(void* parentNode, void* childNode);
37 
38 void InsertChildAt(void* parentNode, void* childNode, int32_t position);
39 
40 void InsertChildAfter(void* parentNode, void* childNode, void* siblingNode);
41 
42 void InsertChildBefore(void* parentNode, void* childNode, void* siblingNode);
43 
44 void RegisterCompanion(void* node, int peerId, ArkUI_Int32 flags);
45 
46 ExtensionCompanionNode* GetCompanion(void* nodePtr);
47 
48 void SetCustomCallback(ArkUIVMContext context, void* nodePtr, ArkUI_Int32 callback);
49 
50 void SetCallbackMethod(ArkUIAPICallbackMethod* method);
51 
52 ArkUIAPICallbackMethod* GetCallbackMethod();
53 
54 ArkUI_Int32 MeasureNode(ArkUIVMContext context, ArkUINodeHandle nodePtr, ArkUI_Float32* data);
55 
56 ArkUI_Int32 LayoutNode(ArkUIVMContext context, ArkUINodeHandle nodePtr, ArkUI_Float32  (*data)[2]);
57 
58 ArkUI_Int32 DrawNode(ArkUIVMContext context, ArkUINodeHandle nodePtr, ArkUI_Float32* data);
59 
60 void SetAttachNodePtr(ArkUINodeHandle nodePtr, void* attachNode);
61 
62 void* GetAttachNodePtr(ArkUINodeHandle nodePtr);
63 
64 ArkUI_Bool IsBuilderNode(void* nodePtr);
65 } // namespace OHOS::Ace::NG::ViewModel
66 #endif
67