blob: a22aeffc21a6e3e597d6f1365ace2b19bc8b2b49 [file] [log] [blame]
// Copyright 2020 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.pointer;
/// A floating-point 3x3 matrix.
/// - The values are placed in column-major order.
alias Mat3 = array<float32, 9>;
/// A floating-point two-dimensional point.
/// - The values are placed in (x, y) order.
alias Point2 = array<float32, 2>;
/// An axis-aligned rectangle. It is defined by its minimal and maximal extents
/// in a coordinate system.
type Rectangle = struct {
/// The minimal extent of this rectangle, inclusive.
/// - Its coordinates are pairwise less than the maximal extent's
/// coordinates.
min Point2;
/// The maximal extent of this rectangle, inclusive.
/// - Its coordinates are pairwise greater than the minimal extent's
/// coordinates.
max Point2;
};
/// The parameters of the associated view and viewport, sufficient to correctly
/// interpret the position and scale of pointer events dispatched to this view.
///
/// Ordering. These parameters arrive over the same channel as pointer events,
/// to provide synchronous context for interpreting the position of pointer
/// events in the view's local coordinate system.
///
/// Inter-protocol redundancy. Some of these parameters may also be sent over an
/// independent channel dedicated to view control; the client is responsible for
/// correct use of asynchronously received parameters.
///
/// TODO(https://fxbug.dev/42162292): Rename viewport, it is used in Flatland.
type ViewParameters = struct {
/// The view's area of content, placed in the coordinate system of the view.
///
/// The rectangle is defined by the parent view's setup of clipping on this
/// view.
view Rectangle;
/// The viewport's area of interaction, placed in an independent coordinate
/// system.
///
/// A pointer event's position is defined in the coordinate system of this
/// viewport.
///
/// A change in viewport extents means the region for pointer interaction
/// has itself moved, or changed in size, or both.
viewport Rectangle;
/// The transform matrix that relates a point's position in the viewport's
/// coordinate system to its position in the view's coordinate system.
viewport_to_view_transform Mat3;
};