Represents a color with alpha channel.
Values are unorm (i.e. the valid range is [0,1]), and are in linear color
space. They are not gamma-corrected nor premultiplied.
A user-defined identifier for a particular piece of Content. See Content creation functions
(e.g. [CreateViewport], [CreateImage]) for more information.
The properties of an Image as defined by the client. These properties determine how an Image
uses the backing BufferCollection. See [CreateImage] for more information.
The return type of [GetLayout]. This table contains most of the information necessary
for a client to decide how to layout their content in a Flatland instance. This data may be
provided to the client before the command that creates the View is presented, so that the
client may lay out content properly before their first call to [Present].
Fields that a client needs in order to produce its next frame, returned in
[OnNextFrameBegin]. Each field is guaranteed to be set and contain valid information.
The properties of a Viewport as defined by the parent. This data, along with the set of attached
Transforms, will be used to compute the LayoutInfo for the View of the Viewport.
ViewportProperties must have logical_size set at least once. This is the initial size that
will drive the layout of the child.
In Flatland, the +X axis is to the right and +Y axis is down. There is no notion of a Z axis.
Due to the lack of a Z axis, there is no mathematical notion of “handedness” (either right or
left) with respect to rotation. Thus, we define a counter-clockwise rotation in the same way
as if a skeuomorphic clock were to be displayed on the screen, with the hands of said clock
moving in a CCW motion from the POV of the observer.
ParentViewportWatchers will be informed when they are actively attached to a output display
(either directly, or through a chain of parent Viewports) and when they are not. Until they are
connected to a display, some pieces of information (such as pixel scale) may be unavailable.