TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

class Component in Tinman.AddOns.GUI

Base class for all user interface components.

abstract class Component extends Disposable
  implements IGraphicsComponent
  IInputConsumer
  IRenderable2D
  IScrollable
  IUpdateableFrameTime
  base of Choice
  Container
  ImageView
  InputField
  LabelView
  PushButton
  ScrollBar
  Slider

Remarks

The default layout settings are defined by Default and returned by the default implementation of the property LayoutDefault. Subclasses may override it, in order to define custom default layout settings. In this case, the class documentation should list these values.

Public / Attributes

Action

The input click of the default action of this component.

public property Action { get set }
type InputClick
value The input click or None.

Remarks:

Defaults to None.

Bounds

Returns the bounds of this component in the client area of its parent container.

public property Bounds { get }
type Box2I
value The component bounds.

Focusable

Can this component receive the input focus?

public property Focusable { get set }
type bool
value true if the component can receive the input focus, false if not.

Height

Height of this component in its parent containers client area.

public property Height { get }
type int32
value The current component height, in pixels.
implements IScrollable.Height

IsFocussed

Does this component has the input focus?

public virtual property IsFocussed { get }
type bool
value true if this component has the input focus, false if not.

IsHighlighted

public property IsHighlighted { get }
type bool
value

IsHovered

Does the mouse cursor currently hover above this component?

public property IsHovered { get }
type bool
value true if the mouse cursor hovers above this component, false if not.

LayoutAlign

The alignment anchor of this component.

public property LayoutAlign { get set }
type Anchor
value The anchor.

LayoutDefault

Returns the default Layout settings for this component.

public virtual property LayoutDefault { get }
type Layout
value The default layout settings.

Remarks:

The default implementation returns Default.

LayoutFill

The fill mode of this component.

public virtual property LayoutFill { get set }
type Axis
value The fill mode.

LayoutGrid

The bounds of this component in its parent containers layout grid.

public property LayoutGrid { get set }
type Box2I
value The layout grid bounds.

LayoutGrow

Defines how the layout grid column resp. row in the components parent container grows.

public property LayoutGrow { get set }
type Axis
value The axes that will grow.

LayoutInfo

The current layout settings of this component.

public virtual property LayoutInfo { get set }
type Layout
value The Layout info object.

LayoutMargin

The outer margin of this component.

public property LayoutMargin { get set }
type Edging
value The outer margin.

LayoutShrink

Defines how the layout grid column resp. row in the components parent container grows.

public property LayoutShrink { get set }
type Axis
value The axes that will shrink.

LayoutSize

The requested size of this component, in pixels.

public property LayoutSize { get set }
type Vec2I
value The requested size.

LifecycleState

Returns the lifecycle state of this object.

public virtual property LifecycleState { get }
type LifecycleState
value The lifecycle state.
inherited Disposable.LifecycleState

OnAction

The components default action has been triggered.

public property OnAction { get }
type IEventGeneric<Component>
value [not-null] The event object.

Parent

The parent container of this component.

public property Parent { get }
type Container
value The parent container or null if this component is the root.

ParentCorners

Returns the corners that this component shares with the client area of its parent container.

public property ParentCorners { get }
type Corner
value The shared client area corners.

ParentEdges

Returns the edges that this component shares with the client area of its parent container.

public property ParentEdges { get }
type Anchor
value The shared client area edges.

ScrollHeight

Scroll height of this component.

public property ScrollHeight { get }
type int32
value The current scroll height, in pixels.
implements IScrollable.ScrollHeight

ScrollTick

Returns the size of a single scroll tick.

public virtual property ScrollTick { get }
type int32
value The scroll tick size, in pixels.
implements IScrollable.ScrollTick

ScrollWidth

Scroll width of this component.

public property ScrollWidth { get }
type int32
value The current scroll width, in pixels.
implements IScrollable.ScrollWidth

ScrollX

The horizontal scroll position of this component.

public property ScrollX { get set }
type int32
value The current scroll position.
implements IScrollable.ScrollX

ScrollY

The vertical scroll position of this component.

public property ScrollY { get set }
type int32
value The current scroll position.
implements IScrollable.ScrollY

State

The component state.

public virtual property State { get set }
type ComponentState
value The component state.

StyleClassType

Returns the style class for this component type.

public abstract property StyleClassType { get }
type StyleClass
value The style class (e.g. 'InputField' for InputField).

StyleClassVariant

Optional style class variant of this component.

public property StyleClassVariant { get set }
type string
value The variant name or null.

Stylesheet

The stylesheet object to use for this user interface element.

public property Stylesheet { get set }
type Stylesheet
value The stylesheet object to use or null.

Tag

The user-defined tag value of this component.

public property Tag { get set }
type int32
value The tag value or null.

Remarks:

Defaults to -1.

Width

Width of this component in its parent containers client area.

public property Width { get }
type int32
value The current component width, in pixels.
implements IScrollable.Width

Public / Methods

AcquireTry

Acquires a strong reference to this disposable object.

[OwnerReturn, ThreadSafe]
public method AcquireTry ()
type IDisposable
returns this if a new strong reference has been acquired, null if this object is already being disposed.
inherited Disposable.AcquireTry

Remarks:

The object will not be actually disposed by calls to Dispose when there is at least one strong reference left. Code that calls the AcquireTry method is responsible for calling the Dispose method accordingly.

This method is not intended to be used in performance-critical code. It should only be used to high-level resource management.

ConsumeInput

Consumes the given user input event.

public method ConsumeInput (InputEvent inputEvent)
type bool
params inputEvent The user input event.
returns true if the input event has been consumed, false if not.
implements IInputConsumer.ConsumeInput

Remarks:

Input events are provided to an IInputConsumer object only if it has the input focus (see FocusGained and FocusLost). Mouse events are provided when the mouse cursor is inside of the input bounds (MouseEnter and MouseLeave). The Closing event can be provided at any time.

  1. FocusGained: gained input focus
  2. Keyboard events:
  3. Mouse events:
    1. MouseEnter
    2. Mouse events:
    3. MouseLeave
  4. FocusLost: lost input focus
  5. Closing: user request to shut down

Dispose

Releases all resources held by this object if there are no more strong references to it, decrements the reference counter by one otherwise.

[Dispose, OwnerThis, ThreadSafe]
public method Dispose ()
inherited Disposable.Dispose

Remarks:

The Dispose method silently returns if the object has already been disposed.

Focus

Transfers the input focus to this component.

public method Focus ()
returns [not-null] this
implements IFocusable.Focus

GraphicsAttach

Attaches this component to the given Graphics context.

public virtual method GraphicsAttach (Graphics graphics)
params graphics [not-null] The graphics context.
implements IGraphicsComponent.GraphicsAttach

Remarks:

All graphics-related resources should be created here.

GraphicsDetach

Detaches this user interface component from its Graphics context.

public virtual method GraphicsDetach ()
implements IGraphicsComponent.GraphicsDetach

Remarks:

All graphics-related resources should be disposed here.

GraphicsResize

The screen size has changed.

public virtual method GraphicsResize (Vec2I screenSize)
params screenSize The new screen size, in pixels.
implements IGraphicsComponent.GraphicsResize

Remarks:

The given screen size is equal to the value of ScreenSize of the Graphics object that has been passed to GraphicsAttach earlier.

Render2D

Performs 2D rendering.

public method Render2D (Graphics g)
params g [not-null] The graphics object to use.
implements IRenderable2D.Render2D

Remarks:

When this method is called, the given Graphics object has already been initialized for 2D rendering:

Usually, Render2D is called from within Render.

UpdateFrameTime

This method is called once per application frame.

public virtual method UpdateFrameTime (float32 time)
type bool
params time [>0] The amount of time that has elapsed since the last frame, in seconds.
returns true if the object needs to be presented again, false if the current presentation is still valid.
implements IUpdateableFrameTime.UpdateFrameTime

Protected / Attributes

ActualLayoutMargin

Returns the actual margin of this component.

protected property ActualLayoutMargin { get }
type Edging
value The actual margin value.

Remarks:

The default implementation returns LayoutMargin. Implementing subclasses can perform additional computations here.

Subclasses must call InvalidateLayout with ComputeLayoutGridExtend to notify when ActualLayoutMargin returns a different value.

ActualLayoutSize

Returns the actual minimum layout size of this component.

protected virtual property ActualLayoutSize { get }
type Vec2I
value The actual minimum layout size.

Remarks:

The default implementation returns LayoutSize. Implementing subclasses can perform additional computations here.

Subclasses must call InvalidateLayout with ComputeLayoutGridExtend to notify when ActualLayoutSize returns a different value.

color

The current color scheme.

protected field color
type ColorScheme

graphics

The current Graphics object or null if this component is not attached.

protected field graphics
type Graphics

IsAttached

Is this component currently attached to a live component hierarchy?

protected property IsAttached { get }
type bool
value true if this component is attached to a live hierarchy, false if not.

textFont

The TextFont value for this component.

[Owner]
protected field textFont
type PixelFont

textFontHint

The TextFontHint value for this component.

[Owner]
protected field textFontHint
type PixelFont

Protected / Constructors

Component

Creates a new instance of Component.

protected constructor Component ()

Protected / Methods

ActionClick

The action click has been performed.

protected virtual method ActionClick ()

See also:

Action

ActionNotify

Notifies all listeners of the OnAction event.

protected method ActionNotify (bool flash = true)
params flash Render a visual flash to indicate the action? Defaults to true.

BoundsChanged

This method is called each time the Bounds of this component have changed.

[EmptyBody]
protected virtual method BoundsChanged ()

ConsumeAction

protected virtual method ConsumeAction (InputEvent action)
type bool
params action

ConsumeKeyboard

Processes the given input event.

[EmptyBody]
protected virtual method ConsumeKeyboard (InputEvent key)
type bool
params key The mouse event.
returns true if the component has consumed the input event, false if not.

ConsumeMouse

Processes the given input event.

protected virtual method ConsumeMouse (InputEvent mouse)
type bool
params mouse The mouse event.
returns true if the component has consumed the input event, false if not.

Dirty

protected method Dirty ()

DisposeManaged

Disposes the managed resources held by a concrete subclass. This method will be called at most once per subclass.

protected override method DisposeManaged ()
overrides Disposable.DisposeManaged

Remarks:

This method will only be called when a disposable object is explicitly destroyed by user code calling the Dispose method. It will not be called when the object is collected as garbage by the system.

Overriding methods must call the DisposeManaged method of their base class. The base call should be the last statement.

The DisposeManaged method is called before the DisposeUnmanaged method.

DisposeUnmanaged

Disposes the unmanaged resources held by a concrete subclass. This method will be called exactly once per subclass.

protected virtual method DisposeUnmanaged ()
inherited Disposable.DisposeUnmanaged

Remarks:

Overriding methods must call the DisposeUnmanaged method of their base class. The base call should be the last statement.

The DisposeUnmanaged method is called after the DisposeManaged method.

DoRender

Performs component specific rendering.

[EmptyBody]
protected virtual method DoRender (Graphics graphics)
params graphics The Graphics object to use.

DoStylesheetApply

Applies the current stylesheet settings to this component.

protected virtual method DoStylesheetApply ()

Remarks:

Implementing methods should query fetch style property values and store them somewhere for using them later quickly.

All graphics resources that are acquired during DoStylesheetApply must be properly disposed in GraphicsDetach.

DrawBackground

Draws the background rectangle of this component.

protected method DrawBackground (bool border, int32 round = 5)
params border Draw a border?
  round Size of round corners. Defaults to 5.

DrawHint

Draws a hint text.

protected method DrawHint (string text, int32 x, int32 y, Anchor anchor)
params text The hint text.
  x X-coordinate of anchor point.
  y Y-coordinate of anchor point.
  anchor The text anchor point.

DrawString

Draws a text.

protected method DrawString (string text, int32 x, int32 y, Anchor anchor)
params text The text.
  x X-coordinate of anchor point.
  y Y-coordinate of anchor point.
  anchor The text anchor point.

FocusChanged

This method is called when this component has lost or gained the input focus.

[EmptyBody]
protected virtual method FocusChanged ()

InvalidateLayout

Invalidates the layout grid of the parent container of this component.

protected method InvalidateLayout (LayoutAction layoutAction = LayoutAction.ComputeLayoutGridExtend)
params layoutAction The layout action that needs to be performed. Defaults to ComputeLayoutGridExtend.

Logging

Logger

The logger object of this class.

public static readonly field Logger
type ILogger