// 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;

struct vec2 {
    float32 x;
    float32 y;
};

struct vec3 {
    float32 x;
    float32 y;
    float32 z;
};

struct vec4 {
    float32 x;
    float32 y;
    float32 z;
    float32 w;
};

struct mat4 {
    /// Column major order.
    array<float32>:16 matrix;
};

/// sRGB color space and nonlinear transfer function.
// TODO(fxbug.dev/23484): use float32s instead of uint8.
struct ColorRgba {
    uint8 red;
    uint8 green;
    uint8 blue;
    uint8 alpha;
};

struct ColorRgb {
    float32 red;
    float32 green;
    float32 blue;
};

struct Quaternion {
    float32 x;
    float32 y;
    float32 z;
    float32 w;
};

/// Oriented plane described by a normal vector and a distance
/// from the origin along that vector.
struct Plane3 {
    vec3 dir;
    float32 dist;
};

struct FactoredTransform {
    vec3 translation;
    vec3 scale;
    /// Point around which rotation and scaling occur.
    vec3 anchor;
    Quaternion rotation;
};

union Value {
    1: float32 vector1;
    2: vec2 vector2;
    3: vec3 vector3;
    4: vec4 vector4;
    5: mat4 matrix4x4;
    6: ColorRgba color_rgba;
    7: ColorRgb color_rgb;
    /// Degrees of counter-clockwise rotation in the XY plane.
    8: float32 degrees;
    9: Quaternion quaternion;
    10: FactoredTransform transform;
    /// ID of a value-producing resource (an animation or an expression).
    /// The type of this value matches the type produced by the named resource.
    11: uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a float32, and `value` is ignored.
struct FloatValue {
    float32 value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a vec2, and `value` is ignored.
struct Vector2Value {
    vec2 value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a vec3, and `value` is ignored.
struct Vector3Value {
    vec3 value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a vec4, and `value` is ignored.
struct Vector4Value {
    vec4 value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a vec4, and `value` is ignored.
struct Matrix4Value {
    mat4 value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a ColorRgb, and `value` is ignored.
struct ColorRgbValue {
    ColorRgb value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a ColorRgba, and `value` is ignored.
struct ColorRgbaValue {
    ColorRgba value;
    uint32 variable_id;
};

/// A value that is specified explicitly by `value` if `variable_id` is zero,
/// or is the value produced by the resource identified by `variable_id`, e.g.
/// an animation or expression.  In the latter case, the value produced by the
/// resource must be a Quaternion, and `value` is ignored.
struct QuaternionValue {
    Quaternion value;
    uint32 variable_id;
};

enum ValueType {
    kNone = 0;
    kVector1 = 1;
    kVector2 = 2;
    kVector3 = 3;
    kVector4 = 4;
    kMatrix4 = 5;
    kColorRgb = 6;
    kColorRgba = 7;
    kQuaternion = 8;
    kFactoredTransform = 9;
};

/// Describes how nodes interact with hit testings.
enum HitTestBehavior {
    /// Apply hit testing to the node's content, its parts, and its children.
    kDefault = 0;

    /// Suppress hit testing of the node and everything it contains.
    kSuppress = 1;
};

/// Rendering target metrics associated with a node.
/// See also `MetricsEvent`.
struct Metrics {
    /// The ratio between the size of one logical pixel within the node's local
    /// coordinate system and the size of one physical pixel of the rendering
    /// target.
    ///
    /// This scale factors change in relation to the resolution of the rendering
    /// target and the scale transformations applied by containing nodes.
    /// They are always strictly positive and non-zero.
    ///
    /// For example, suppose the rendering target is a high resolution display
    /// with a device pixel ratio of 2.0 meaning that each logical pixel
    /// within the model corresponds to two physical pixels of the display.
    /// Assuming no scale transformations affect the node, then its metrics event
    /// will report a scale factor of 2.0.
    ///
    /// Building on this example, if instead the node's parent applies a
    /// scale transformation of 0.25 to the node, then the node's metrics event
    /// will report a scale factor of 0.5 indicating that the node should render
    /// its content at a reduced resolution and level of detail since a smaller
    /// area of physical pixels (half the size in each dimension) will be rendered.
    float32 scale_x;
    float32 scale_y;
    float32 scale_z;
};

/// Represents an axis-aligned bounding box.
///
/// If any of the dimensions has a negative extent (e.g. max.x < min.x) then the
/// bounding box is treated as empty. It is valid for a client to define an
/// empty bounding box.
///
/// An "empty bounding box" is one that does not admit a point inhabitant.
/// Note that a zero-volume, zero-area bounding box (e.g., a point like
/// (0,0,0)-(0,0,0), or a line like (0,0,0)-(1,0,0)) is thus not empty.
struct BoundingBox {
    vec3 min;
    vec3 max;
};

/// Represents the properties for a View.
struct ViewProperties {
    /// The View's bounding box extents can be defined as:
    ///    { bounding_box.min + inset_from_min, bounding_box.max - inset_from_max }
    /// Content contained within the View is clipped to this bounding box.
    ///
    // TODO(fxbug.dev/24037): should we just have a vec3 extent instead of a bounding box
    // with a potentially non-zero min?
    BoundingBox bounding_box;

    /// `insets_from_min` and `insets_from_max` specify the distances between the
    /// view's bounding box and that of its parent.
    vec3 inset_from_min;
    vec3 inset_from_max;

    /// Whether the View can receive a focus event; default is true.  When
    /// false, and this View is eligible to receive a focus event, no
    /// focus/unfocus event is actually sent to any View.
    bool focus_change = true;

    /// Whether the View allows geometrically underlying Views to receive input;
    /// default is true. When false, Scenic does not send input events to
    /// underlying Views.
    // TODO(fxbug.dev/24695): not implemented yet.
    bool downward_input = true;
};

/// Represents the state of a View in Scenic.
struct ViewState {
    /// Whether the View is rendering. Default is false. Delivered to the View's
    /// corresponding ViewHolder after the View's first frame render request.
    bool is_rendering;
};
