1 /* 2 * Copyright (c) 2021-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 16 #ifndef ROSEN_RENDER_SERVICE_BASE_COMMAND_RS_BASE_NODE_COMMAND_H 17 #define ROSEN_RENDER_SERVICE_BASE_COMMAND_RS_BASE_NODE_COMMAND_H 18 19 #include "command/rs_command_templates.h" 20 #include "common/rs_macros.h" 21 22 namespace OHOS { 23 namespace Rosen { 24 25 enum RSBaseNodeCommandType : uint16_t { 26 BASE_NODE_DESTROY, 27 BASE_NODE_ADD_CHILD, 28 BASE_NODE_MOVE_CHILD, 29 BASE_NODE_ADD_CROSS_PARENT_CHILD, 30 BASE_NODE_REMOVE_CHILD, 31 BASE_NODE_REMOVE_CROSS_PARENT_CHILD, 32 BASE_NODE_SET_IS_CROSS_NODE, 33 BASE_NODE_ADD_CROSS_SCREEN_CHILD, 34 BASE_NODE_REMOVE_CROSS_SCREEN_CHILD, 35 BASE_NODE_REMOVE_FROM_TREE, 36 BASE_NODE_CLEAR_CHILDREN, 37 }; 38 39 class RSB_EXPORT BaseNodeCommandHelper { 40 public: 41 static void Destroy(RSContext& context, NodeId nodeId); 42 static void AddChild(RSContext& context, NodeId nodeId, NodeId childNodeId, int32_t index); 43 static void MoveChild(RSContext& context, NodeId nodeId, NodeId childNodeId, int32_t index); 44 static void RemoveChild(RSContext& context, NodeId nodeId, NodeId childNodeId); 45 static void AddCrossParentChild(RSContext& context, NodeId nodeId, NodeId childNodeId, int32_t index); 46 static void RemoveCrossParentChild(RSContext& context, NodeId nodeId, NodeId childNodeId, NodeId newParentId); 47 static void SetIsCrossNode(RSContext& context, NodeId nodeId, bool isCrossNode); 48 static void AddCrossScreenChild(RSContext& context, NodeId nodeId, NodeId childNodeId, NodeId cloneNodeId, 49 int32_t index, bool autoClearCloneNode = false); 50 static void RemoveCrossScreenChild(RSContext& context, NodeId nodeId, NodeId childNodeId); 51 static void RemoveFromTree(RSContext& context, NodeId nodeId); 52 static void ClearChildren(RSContext& context, NodeId nodeId); 53 }; 54 55 ADD_COMMAND(RSBaseNodeDestroy, 56 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_DESTROY, 57 BaseNodeCommandHelper::Destroy, NodeId)) 58 ADD_COMMAND(RSBaseNodeAddChild, 59 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_ADD_CHILD, 60 BaseNodeCommandHelper::AddChild, NodeId, NodeId, int32_t)) 61 ADD_COMMAND(RSBaseNodeMoveChild, 62 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_MOVE_CHILD, 63 BaseNodeCommandHelper::MoveChild, NodeId, NodeId, int32_t)) 64 ADD_COMMAND(RSBaseNodeRemoveChild, 65 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_REMOVE_CHILD, 66 BaseNodeCommandHelper::RemoveChild, NodeId, NodeId)) 67 ADD_COMMAND(RSBaseNodeAddCrossParentChild, 68 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_ADD_CROSS_PARENT_CHILD, 69 BaseNodeCommandHelper::AddCrossParentChild, NodeId, NodeId, int32_t)) 70 ADD_COMMAND(RSBaseNodeRemoveCrossParentChild, 71 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_REMOVE_CROSS_PARENT_CHILD, 72 BaseNodeCommandHelper::RemoveCrossParentChild, NodeId, NodeId, NodeId)) 73 ADD_COMMAND(RSBaseNodeSetIsCrossNode, 74 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_SET_IS_CROSS_NODE, 75 BaseNodeCommandHelper::SetIsCrossNode, NodeId, bool)) 76 ADD_COMMAND(RSBaseNodeAddCrossScreenChild, 77 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_ADD_CROSS_SCREEN_CHILD, 78 BaseNodeCommandHelper::AddCrossScreenChild, NodeId, NodeId, NodeId, int32_t, bool)) 79 ADD_COMMAND(RSBaseNodeRemoveCrossScreenChild, 80 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_REMOVE_CROSS_SCREEN_CHILD, 81 BaseNodeCommandHelper::RemoveCrossScreenChild, NodeId, NodeId)) 82 ADD_COMMAND(RSBaseNodeRemoveFromTree, 83 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_REMOVE_FROM_TREE, 84 BaseNodeCommandHelper::RemoveFromTree, NodeId)) 85 ADD_COMMAND(RSBaseNodeClearChild, 86 ARG(PERMISSION_APP, BASE_NODE, BASE_NODE_CLEAR_CHILDREN, 87 BaseNodeCommandHelper::ClearChildren, NodeId)) 88 } // namespace Rosen 89 } // namespace OHOS 90 91 #endif // ROSEN_RENDER_SERVICE_BASE_COMMAND_RS_BASE_NODE_COMMAND_H 92