• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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