blob: 66456962e03da0a00b6d2e7c204b1cf9d35cd3fd [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 Mozart |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 OpacityNodeArgs {
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;
};