| // Copyright 2017 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | library fuchsia.ui.gfx; | 
 |  | 
 | // These are the types of nodes that can be created within a Scenic `Session`. | 
 | // | 
 | // All nodes have an associated transform, which distinguishes them from mere | 
 | // resources.  Nodes may also have one or more node Characteristics: | 
 | // | 
 | // These are characteristics that each type of `Node` either has or doesn't. | 
 | // These constrain operations that reference nodes; violations will cause the | 
 | // `Session` connection to be closed.  For example, `NodeAddChildOp` must target | 
 | // a node with the "has_children" characteristic.  These characteristics are not | 
 | // explicitly reflected in the Session API; instead, they must be enforced by | 
 | // implementations of the API. | 
 | // - has_children: The node can contain other nodes as children. | 
 | // - has_parent: The node can be a child of another node.  If this is false, | 
 | //   the node can only be a direct descendant of its containing scene. | 
 | // - has_parts:  The node can contain other nodes as parts.  All parts must be | 
 | //   from the same session as their parent. | 
 | // - has_clip:  The node can contain a clip node as a child. | 
 | // - is_clip:  The node can clip other nodes. | 
 | // - has_shape: The node can contain ShapeNodes as children. | 
 | // - has_material:  The node can have a Material resource applied to it. | 
 |  | 
 | /// Characteristics: | 
 | /// - has_parent | 
 | /// - has_shape | 
 | /// - has_material | 
 | struct ShapeNodeArgs { | 
 |     // TODO(fxbug.dev/23916): Clean up dummy args. | 
 |     uint32 unused = 0; | 
 | }; | 
 |  | 
 | /// Characteristics: | 
 | /// - has_parent | 
 | /// - is_clip | 
 | /// - has_parts | 
 | struct ClipNodeArgs { | 
 |     // TODO(fxbug.dev/23916): Clean up dummy args. | 
 |     uint32 unused = 0; | 
 | }; | 
 |  | 
 | /// Characteristics: | 
 | /// - has_transform | 
 | /// - has_parent | 
 | /// - has_children | 
 | /// - has_parts | 
 | /// - has_opacity | 
 | struct OpacityNodeArgsHACK { | 
 |     uint32 unused = 0; | 
 | }; | 
 |  | 
 | /// Characteristics: | 
 | /// - has_transform | 
 | /// - has_children | 
 | /// - has_parent | 
 | /// - has_parts | 
 | /// - has_clip | 
 | struct EntityNodeArgs { | 
 |     // TODO(fxbug.dev/23916): Clean up dummy args. | 
 |     uint32 unused = 0; | 
 | }; |