class MouseSource

Defined at line 3041 of file fidling/gen/sdk/fidl/fuchsia.ui.pointer/fuchsia.ui.pointer/hlcpp/fuchsia/ui/pointer/cpp/fidl.h

A method for a client to receive mouse pointer events.

The position of a pointer event is defined in the context of a viewport,

situated in the view. The dimensions of the view and viewport, and their

spatial relationship (defined with a transform matrix), are supplied

synchronously in a |ViewParameter| table. A view may retrieve a pointer's

position in its local coordinate system by applying the viewport-to-view

transform matrix.

The viewport is embedded in an independent and stable coordinate system,

suitable for interpreting pointer events in a scale-independent manner;

mouse movement will be observed at a constant scale, even under effects such

as magnification or panning. However, other effects, such as enlargening the

view's clip bounds, may trigger a change in the viewport extents.

Public Methods

void ~MouseSource ()
void Watch (WatchCallback callback)

A method for a client to receive mouse pointer events.

This call is formulated as a "hanging get" pattern: the client asks for

a set of recent events, and receives them via the callback. This

pull-based approach ensures that clients consume events at their own

pace; events don't clog up the channel in an unbounded manner.

Flow control. The caller is allowed at most one in-flight |Watch| call

at a time; it is a logical error to have concurrent calls to |Watch|.

Non-compliance results in channel closure.

Client pacing. The server will dispatch events to the caller on a FIFO,

lossless, best-effort basis, but the caller must allocate enough time to

keep up with new events.

Event times. The timestamps on each event in the event vector are *not*

guaranteed monotonic; events from different devices may be injected into

Scenic at different times. Generally, events from a single device are

expected to have monotonically increasing timestamps.

View parameters. Occasionally, changes in view or viewport require

notifying the client. If a |MouseEvent| carries |ViewParameters|, these

parameters apply to successive |MousePointerSample|s until the next

|ViewParameters|.