A Clap describes either a “click” (mousedown followed by mouseup), OR a
“tap” with one finger (singular fingerdown event).
Claps are a useful alternative to most kinds of Click or Tap events,
when you want the same behavior for both to be contained in one place.
A primitive that gathers children underneath a single render node with a shared base transform,
like [Group], except Frame has the option of clipping rendering outside
of its bounds.
Raw Percent type, which we use for serialization and dynamic traversal. At the time
of authoring, this type is not used directly at runtime, but is intended for into coercion
into downstream types, e.g. ColorChannel, Rotation, and Size. This allows us to be “dumb”
about how we parse %, and allow the context in which it is used to pull forward a specific
type through into inference.
Scroll occurs when a frame is translated vertically or horizontally
Can be both by touch, mouse or keyboard
The contained delta_x and delta_y describe the horizontal and vertical translation of
the frame
A combination of a clipping area (nearly identical to a Frame,) and an
inner panel that can be scrolled on zero or more axes. Scroller coordinates with each chassis to
create native scrolling containers, which pass native scroll events back to Engine. In turn,
Scroller translates its children to reflect the current scroll position.
When both scrolling axes are disabled, Scroller acts exactly like a Frame, with a possibly-
transformed Group surrounding its contents.
Stacker lays out a series of nodes either
vertically or horizontally (i.e. a single row or column) with a specified gutter in between
each node. Stackers can be stacked inside of each other, horizontally
and vertically, along with percentage-based positioning and Transform2D.anchor to compose any rectilinear 2D layout.
Container for all internal pax types
Two important traits are related to this type:
ToFromPaxValue - responsible for converting to and from specific types (u8,
String, Color, etc)
CoercionRules - responsible for coercing a PaxValue to a specific type
(possibly from multiple different variants)
Marker trait. Implement only for types that are not part of PaxValue, but
need to be stored inside a PaxAny. If they are part of pax value, instead
implement CoercionRules manually, or using the default impl macro as seen
in coercion_impls.rs
Marker trait that needs to be implemented for a struct for insertion and
deletion in a store
NOTE: Stored objects need to be UNIQUE for any given stack. Do not insert
values with types that could potentially be used in another use case,
instead create a local new type (newtype pattern) only used for a single purpose
This trait is implemented by all types that has a builtin equivalent
representation (see to_from_impls module) This is NOT responsible for
coercing between types, but returns an err in all cases where the underlying
type is not exactly what is expected