Abstract
Protected
constructorReadonly
childThe Viewport's child. Painting and layout will be relative to this.
Layout constraints of viewport when resolving widget's layout. A 4-tuple containing, respectively, minimum width, maximum width, minimum height and maximum height.
By default, has no minimum width nor height and unconstrained maximum width and height.
Abstract
Readonly
contextThe render target's (canvas) 2D context. Alpha is enabled.
Note that readonly in this context means that this property is a getter, not that it is immutable. Ideally, this is a getter that gets the current rendering context. Some Viewport implementations (such as CanvasViewport) will always use the same context, while others (such as ClippedViewport) will occasionally change the context.
Protected
forceShould the layout be resolved, even if the child widget doesn't have a dirty layout?
The offset of the child inside the Viewport. Depending on the Viewport implementation, this may update the actual position of the child Widget, or it may just affect how the paint method behaves.
The parent Viewport of this Viewport. Since positions are relative to this, absolute positions can be calculated by following all the parents.
If null, this is the topmost Viewport and owned by the UI Root.
Should be set by the owner when the owner is attached or detached.
The actual dimensions and position of the viewport, relative to the parent Viewport (or the UI Root if there is no parent Viewport, meaning that positions are absolute in that case); for example, this would be the equivalent to an iframe's dimensions and position (the HTML body in the iframe can have different dimensions than the iframe itself and be scrolled by some amount).
Do not use this value for resolving the layout. Only use this for event handling or other logic that doesn't affect layout.
Should be set by the owner of the Viewport (a Root or a ViewportWidget) when finalizing layout.
Readonly
relativeThe coordinate system used for this Viewport. If true, then coordinates are relative to the Viewport itself (Viewport#child always has a position of 0,0). If false, then coordinates are absolute (relative to the nearest relative parent Viewport, or topmost Viewport, or 0,0 if this is the topmost Viewport).
Protected
Static
dimensionlessHas the warning for dimensionless canvases been issued?
Protected
Static
maxThe maximum retries allowed for resolving the layout. The first attempt is not counted. Only retries that exceed this limit are discarded; if maxRelayout is 4, then the 5th retry will be discarded.
Protected
Static
powerHas the warning for non-power of 2 dimensions been issued?
Abstract
effectiveGet the canvas scale that will be applied to the Viewport's child. Used for checking whether a child's dimensions exceeds a canvas' maximum dimensions.
Note that readonly in this context means that this property is a getter, not that it is immutable. Ideally, this is a getter that calculates the effective scale of the viewport via the canvas dimensions and max dimensions, which may returns different values, not the same value every time.
Dispatch an event to the Viewport's Viewport#child. Only TricklingEvent is supported.
The event to dispatch down the UI tree
Returns the widget that captured the event or null if none captured the event.
Get the rect of the child alongside more extra information, clipped/clamped to the bounds of the viewport. Usually only for internal, but can be used externally if you know what you're doing.
Abstract
markMark a rectangle relative to this viewport as dirty.
A rectangle with the area that was marked as dirty
Abstract
paintPaint the Viewport#child to the Viewport#context and, if it makes sense to do so, paint to the Viewport#parent Viewport's context.
Nothing is done if the child was not re-painted.
Extra damage regions (not tracked internally) that need to be repainted. Can be an empty list if this is a root viewport.
Returns true if the child was re-painted, else, false.
Private
relayoutForces re-layout and calls BaseViewport#updateChildPos. Used as a callback for the BaseViewport#rect field watcher.
Resolves the given child's layout by calling Widget#resolveDimensions with the current Viewport#constraints, Widget#resolvePosition and Widget#finalizeBounds.
Handles both relative and absolute coordinates. The previous position is used.
Returns true if the child was resized, else, false.
Private
updateResolves the position of the child and finalizes its bounds. This effectively updates the position of the child in an out-of-order fashion (doesn't wait for the proper stage of the layout resolution). Used as a callback for the BaseViewport#offset field watcher.
The base implementation of the Viewport interface. See CanvasViewport and ClippedViewport.