Class WidgetInstance<W extends Widget>

java.lang.Object
dev.pfaff.altargui.WidgetInstance<W>
All Implemented Interfaces:
IElement
Direct Known Subclasses:
LeafWidgetInstance, SingleChildWidgetInstance

public abstract non-sealed class WidgetInstance<W extends Widget> extends Object implements IElement
  • Field Details

  • Constructor Details

  • Method Details

    • configure

      public abstract void configure(StateContext stateContext, W widget, boolean init)
      Configures the instance's state according to the inputs in the specified widget.

      Other initialization might be done if init is true.

    • onMount

      protected void onMount()
      Called when the element is mounted to a new parent.
    • onUnmount

      @MustBeInvokedByOverriders protected void onUnmount()
      Called when the element is unmounted from the current parent.
    • updateMount

      public final void updateMount(WidgetInstance<?> parent)
    • dispose

      public final void dispose()
      Disposes of the element. The element may be reused.
    • stencilLayout

      public final void stencilLayout(StateContext context)
      Computes sizes of element content and children.

      This will usually call StencilLayoutContext.updateMountAndLayout(StateContext, WidgetInstance, WidgetInstance, BiConsumer) with each child and go through a layout procedure wherein setAvailableSize(float, float) and then stencilLayout(StateContext) are called (in that order) on each child.

    • traceLayout

      public final void traceLayout()
      Sets positions of element content and children.

      This will usually call StencilLayoutContext.updateMountAndLayout(StateContext, WidgetInstance, WidgetInstance, BiConsumer) with each child and go through a layout procedure wherein setAvailableSize(float, float) and then traceLayout() are called (in that order) on each child.

    • scissorLayout

      public final void scissorLayout()
      Clips element content and children.

      This will usually call StencilLayoutContext.updateMountAndLayout(StateContext, WidgetInstance, WidgetInstance, BiConsumer) with each child and go through a layout procedure wherein setClippedRect(float, float, float, float) and then scissorLayout() are called (in that order) on each child.

    • mount

      public final void mount(MountContext context)
    • uSpecMount

      public void uSpecMount(MountContext context)
    • computeFillLayout

      protected static void computeFillLayout(WidgetInstance element)
    • computeStencilLayout

      protected abstract void computeStencilLayout(StateContext context)
    • computeTraceLayout

      protected abstract void computeTraceLayout()
    • computeScissorLayout

      protected abstract void computeScissorLayout()
    • computeMount

      protected abstract void computeMount(MountContext context)
    • markNeedsStencilLayout

      protected final void markNeedsStencilLayout()
    • markNeedsTraceLayout

      protected final void markNeedsTraceLayout()
    • markNeedsScissorLayout

      protected final void markNeedsScissorLayout()
    • markNeedsLayout

      @Deprecated protected final void markNeedsLayout()
      Deprecated.
      use markNeedsStencilLayout() and/or markNeedsTraceLayout() as appropriate instead.
    • propagateNeedsStencilLayoutFromChild

      protected void propagateNeedsStencilLayoutFromChild()
      This will need to be overridden for any aligned positioning to include markNeedsTraceLayout().
    • takeNeedsStencilLayout

      protected final boolean takeNeedsStencilLayout()
    • takeNeedsTraceLayout

      protected final boolean takeNeedsTraceLayout()
    • takeNeedsScissorLayout

      protected final boolean takeNeedsScissorLayout()
    • allocatedX

      public final float allocatedX()
    • allocatedY

      public final float allocatedY()
    • allocatedWidth

      public final float allocatedWidth()
    • allocatedHeight

      public final float allocatedHeight()
    • markNeedsStencilLayoutOnAllocationChange

      protected final void markNeedsStencilLayoutOnAllocationChange()
    • markNeedsTraceLayoutOnAllocationChange

      protected final void markNeedsTraceLayoutOnAllocationChange()
    • markNeedsScissorLayoutOnAllocationChange

      protected final void markNeedsScissorLayoutOnAllocationChange()
    • setPosition

      public final void setPosition(float x, float y)
      Called by the parent element to set the position of its children.
    • setAvailableSize

      public final void setAvailableSize(float width, float height)
      Called by the parent element to communicate the amount of space available to its children.
    • copyPositionFrom

      public final void copyPositionFrom(WidgetInstance other)
      Copies the position from the given other widget (usually the parent).
    • copyAvailableSizeFrom

      public final void copyAvailableSizeFrom(WidgetInstance other)
      Copies the available size from the given other widget (usually the parent).
    • copyClippedRectFrom

      public final void copyClippedRectFrom(WidgetInstance other)
      Copies the clipped rect from the given other widget (usually the parent).
    • requireFiniteAllocatedWidth

      protected final void requireFiniteAllocatedWidth()
    • requireFiniteAllocatedHeight

      protected final void requireFiniteAllocatedHeight()
    • computedWidth

      public final float computedWidth()
    • computedHeight

      public final float computedHeight()
    • clippedX

      public final float clippedX()
    • clippedY

      public final float clippedY()
    • clippedWidth

      public final float clippedWidth()
    • clippedHeight

      public final float clippedHeight()
    • setComputedSize

      protected final void setComputedSize(float width, float height)
    • setClippedRect

      public final void setClippedRect(float x, float y, float width, float height)

      Widgets may be clipped by parents. To support this, parents must propagate a clipped rect to their children. The clip is enforced by parents when rendering, but must be enforced by each element when implementing input event handlers.

      See Also:
      • clippedX
      • clippedY
      • clippedWidth
      • clippedHeight
    • copyComputedSizeFrom

      protected final void copyComputedSizeFrom(WidgetInstance other)
    • fillAllocated

      protected final void fillAllocated()
      Sets the computed size to fill the entire allocated rect.
    • isInside

      public final boolean isInside(double checkX, double checkY)
      Checks if the given coordinates are inside the element's clipped rectangle.
    • isInside

      public final boolean isInside(float checkX, float checkY)
      Checks if the given coordinates are inside the element's clipped rectangle.
    • applyBuiltinSelector

      public void applyBuiltinSelector(BuiltinSelector selector, Consumer<WidgetInstance> consumer)
    • toStringShort

      public final String toStringShort()
      Specified by:
      toStringShort in interface IElement
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • guiContext

      public final GuiContext guiContext()
    • key

      public final long key()
      Specified by:
      key in interface IElement
    • equals

      public final boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • parent

      @Nullable public final @Nullable IElement parent()