blob: a4b215825bd8c5be49cc093ed45485cc7d32fba5 [file] [log] [blame]
// 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(SCN-694): Clean up dummy args.
uint32 unused = 0;
};
/// Characteristics:
/// - has_parent
/// - is_clip
/// - has_parts
struct ClipNodeArgs {
// TODO(SCN-694): 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(SCN-694): Clean up dummy args.
uint32 unused = 0;
};