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|.