// 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; // Reports metrics information. // This event type is only reported for node resources. const uint32 kMetricsEventMask = 1; const uint32 kSizeChangeHintEventMask = 2; // These are all of the types of events which can be reported by a |Session|. // Use |SetEventMaskCmd| to enable event delivery for a resource. union Event { // Events which are controlled by a mask. MetricsEvent metrics; SizeChangeHintEvent size_change_hint; // Events which are always delivered, regardless of mask. ImportUnboundEvent import_unbound; ViewConnectedEvent view_connected; ViewDisconnectedEvent view_disconnected; ViewHolderDisconnectedEvent view_holder_disconnected; ViewAttachedToSceneEvent view_attached_to_scene; ViewDetachedFromSceneEvent view_detached_from_scene; ViewPropertiesChangedEvent view_properties_changed; ViewStateChangedEvent view_state_changed; }; // Provides rendering target metrics information about the specified node. // // This event is delivered when the following conditions are true: // - The node is a descendant of a |Scene|. // - The node has |kMetricsEventMask| set to an enabled state. // - The node's metrics have changed since they were last delivered, or since // |kMetricsEventMask| transitioned from a disabled state to an enabled state. // // Subscribe to this event to receive information about the scale factors you // should apply when generating textures for your nodes. struct MetricsEvent { uint32 node_id; Metrics metrics; }; // Delivered in response to a size change hint from a parent node // (SendSizeChangeHintCmd). // // This event is delivered when the following conditions are true: // - The node has |kSizeChangeEventMask| set to an enabled state. // - A parent node has sent a SendSizeChangeHintCmd. // // Subscribe to this event to receive information about how large textures you // will need in the near future for your nodes. The canonical use case is to // pre-allocate memory to avoid repeated re-allocations. struct SizeChangeHintEvent { uint32 node_id; float32 width_change_factor; float32 height_change_factor; }; // Delivered when the imported resource with the given ID is no longer bound to // its host resource, or if the imported resource can not be bound because // the host resource is not available. struct ImportUnboundEvent { uint32 resource_id; }; // Delivered to a ViewHolder's Session when its peer View is connected. struct ViewConnectedEvent { uint32 view_holder_id; }; // Delivered to a ViewHolder's Session when its peer View is disconnected or // destroyed. // // If the View is destroyed before the connection is established, then this // event will be delivered immediately when the ViewHolder attempts to connect. struct ViewDisconnectedEvent { uint32 view_holder_id; }; // Delivered to a View's Session when its peer ViewHolder is disconnected or // destroyed. // // If the ViewHolder is destroyed before the connection is established, then // this event will be delivered immediately when the View attempts to connect. struct ViewHolderDisconnectedEvent { uint32 view_id; }; // Delivered to a View's Session when the parent ViewHolder for the given View // becomes a part of a Scene. // // A ViewHolder is considered to be part of a Scene if there is an unbroken // chain of parent-child relationships between the Scene node and the // ViewHolder node. struct ViewAttachedToSceneEvent { uint32 view_id; ViewProperties properties; }; // Delivered to a View's Session when the parent ViewHolder for the given View // is no longer part of a scene. // // This can happen if the ViewHolder is detached directly from the scene, or // if one of its parent nodes is. // // A ViewHolder is considered to be part of a Scene if there is an unbroken // chain of parent-child relationships between the Scene node and the // ViewHolder node. struct ViewDetachedFromSceneEvent { uint32 view_id; }; // Delivered when the parent ViewHolder for the given View makes a change to // the View's properties. struct ViewPropertiesChangedEvent { uint32 view_id; ViewProperties properties; }; // Delivered to a ViewHolder's Session when its peer View's state has changed. struct ViewStateChangedEvent { uint32 view_holder_id; ViewState state; };