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