• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 
16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_INTERFACES_NATIVE_NODE_NODE_MODEL_SAFELY_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_INTERFACES_NATIVE_NODE_NODE_MODEL_SAFELY_H
18 #include "node_model.h"
19 
20 namespace OHOS::Ace::NodeModel {
21 ArkUI_NodeHandle CreateNodeSafely(ArkUI_NodeType type);
22 void DisposeNodeSafely(ArkUI_NodeHandle nativePtr);
23 int32_t AddChildSafely(ArkUI_NodeHandle parentNode, ArkUI_NodeHandle childNode);
24 int32_t RemoveChildSafely(ArkUI_NodeHandle parentNode, ArkUI_NodeHandle childNode);
25 int32_t InsertChildAfterSafely(ArkUI_NodeHandle parentNode, ArkUI_NodeHandle childNode, ArkUI_NodeHandle siblingNode);
26 int32_t InsertChildBeforeSafely(ArkUI_NodeHandle parentNode, ArkUI_NodeHandle childNode, ArkUI_NodeHandle siblingNode);
27 int32_t InsertChildAtSafely(ArkUI_NodeHandle parentNode, ArkUI_NodeHandle childNode, int32_t position);
28 int32_t SetAttributeSafely(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* value);
29 const ArkUI_AttributeItem* GetAttributeSafely(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute);
30 int32_t ResetAttributeSafely(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute);
31 int32_t RegisterNodeEventSafely(ArkUI_NodeHandle nodePtr, ArkUI_NodeEventType eventType,
32     int32_t targetId, void* userData);
33 void UnregisterNodeEventSafely(ArkUI_NodeHandle nodePtr, ArkUI_NodeEventType eventType);
34 void RegisterOnEventSafely(void (*eventReceiver)(ArkUI_NodeEvent* event));
35 void UnregisterOnEventSafely();
36 void MarkDirtySafely(ArkUI_NodeHandle nodePtr, ArkUI_NodeDirtyFlag dirtyFlag);
37 int32_t AddNodeEventReceiverSafely(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event));
38 int32_t RemoveNodeEventReceiverSafely(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event));
39 int32_t SetUserDataSafely(ArkUI_NodeHandle node, void* userData);
40 void* GetUserDataSafely(ArkUI_NodeHandle node);
41 int32_t SetLengthMetricUnitSafely(ArkUI_NodeHandle nodePtr, ArkUI_LengthMetricUnit unit);
42 uint32_t GetTotalChildCountSafely(ArkUI_NodeHandle node);
43 ArkUI_NodeHandle GetChildAtSafely(ArkUI_NodeHandle node, int32_t position);
44 ArkUI_NodeHandle GetFirstChildSafely(ArkUI_NodeHandle node);
45 ArkUI_NodeHandle GetLastChildSafely(ArkUI_NodeHandle node);
46 ArkUI_NodeHandle GetPreviousSiblingSafely(ArkUI_NodeHandle node);
47 ArkUI_NodeHandle GetNextSiblingSafely(ArkUI_NodeHandle node);
48 int32_t RegisterNodeCustomEventSafely(
49     ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType, int32_t targetId, void* userData);
50 void UnregisterNodeCustomEventSafely(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType);
51 void RegisterNodeCustomReceiverSafely(void (*eventReceiver)(ArkUI_NodeCustomEvent* event));
52 void UnregisterNodeCustomEventReceiverSafely();
53 int32_t SetMeasuredSizeSafely(ArkUI_NodeHandle node, int32_t width, int32_t height);
54 int32_t SetLayoutPositionSafely(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY);
55 ArkUI_IntSize GetMeasuredSizeSafely(ArkUI_NodeHandle node);
56 ArkUI_IntOffset GetLayoutPositionSafely(ArkUI_NodeHandle node);
57 int32_t MeasureNodeSafely(ArkUI_NodeHandle node, ArkUI_LayoutConstraint* constraint);
58 int32_t LayoutNodeSafely(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY);
59 int32_t AddNodeCustomEventReceiverSafely(ArkUI_NodeHandle nodePtr, void (*eventReceiver)(ArkUI_NodeCustomEvent* event));
60 int32_t RemoveNodeCustomEventReceiverSafely(ArkUI_NodeHandle nodePtr,
61     void (*eventReceiver)(ArkUI_NodeCustomEvent* event));
62 ArkUI_NodeHandle GetParentSafely(ArkUI_NodeHandle node);
63 int32_t RemoveAllChildrenSafely(ArkUI_NodeHandle parentNode);
64 bool IsValidArkUINodeMultiThread(ArkUI_NodeHandle nodePtr);
65 }; // namespace OHOS::Ace::NodeModel
66 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_INTERFACES_NATIVE_NODE_NODE_MODEL_SAFELY_H