ui

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2023 License: MIT Imports: 22 Imported by: 9

Documentation

Overview

Package ui provides types and functions for creating an interactive User Interface.

Index

Constants

View Source
const (
	KeyboardEventTypeKeyDown = app.KeyboardEventTypeKeyDown
	KeyboardEventTypeKeyUp   = app.KeyboardEventTypeKeyUp
	KeyboardEventTypeRepeat  = app.KeyboardEventTypeRepeat
	KeyboardEventTypeType    = app.KeyboardEventTypeType
)
View Source
const (
	KeyCodeEscape       = app.KeyCodeEscape
	KeyCodeEnter        = app.KeyCodeEnter
	KeyCodeSpace        = app.KeyCodeSpace
	KeyCodeTab          = app.KeyCodeTab
	KeyCodeCaps         = app.KeyCodeCaps
	KeyCodeLeftShift    = app.KeyCodeLeftShift
	KeyCodeRightShift   = app.KeyCodeRightShift
	KeyCodeLeftControl  = app.KeyCodeLeftControl
	KeyCodeRightControl = app.KeyCodeRightControl
	KeyCodeLeftAlt      = app.KeyCodeLeftAlt
	KeyCodeRightAlt     = app.KeyCodeRightAlt
	KeyCodeBackspace    = app.KeyCodeBackspace
	KeyCodeInsert       = app.KeyCodeInsert
	KeyCodeDelete       = app.KeyCodeDelete
	KeyCodeHome         = app.KeyCodeHome
	KeyCodeEnd          = app.KeyCodeEnd
	KeyCodePageUp       = app.KeyCodePageUp
	KeyCodePageDown     = app.KeyCodePageDown
	KeyCodeArrowLeft    = app.KeyCodeArrowLeft
	KeyCodeArrowRight   = app.KeyCodeArrowRight
	KeyCodeArrowUp      = app.KeyCodeArrowUp
	KeyCodeArrowDown    = app.KeyCodeArrowDown
	KeyCodeMinus        = app.KeyCodeMinus
	KeyCodeEqual        = app.KeyCodeEqual
	KeyCodeLeftBracket  = app.KeyCodeLeftBracket
	KeyCodeRightBracket = app.KeyCodeRightBracket
	KeyCodeSemicolon    = app.KeyCodeSemicolon
	KeyCodeComma        = app.KeyCodeComma
	KeyCodePeriod       = app.KeyCodePeriod
	KeyCodeSlash        = app.KeyCodeSlash
	KeyCodeBackslash    = app.KeyCodeBackslash
	KeyCodeApostrophe   = app.KeyCodeApostrophe
	KeyCodeGraveAccent  = app.KeyCodeGraveAccent
	KeyCodeA            = app.KeyCodeA
	KeyCodeB            = app.KeyCodeB
	KeyCodeC            = app.KeyCodeC
	KeyCodeD            = app.KeyCodeD
	KeyCodeE            = app.KeyCodeE
	KeyCodeF            = app.KeyCodeF
	KeyCodeG            = app.KeyCodeG
	KeyCodeH            = app.KeyCodeH
	KeyCodeI            = app.KeyCodeI
	KeyCodeJ            = app.KeyCodeJ
	KeyCodeK            = app.KeyCodeK
	KeyCodeL            = app.KeyCodeL
	KeyCodeM            = app.KeyCodeM
	KeyCodeN            = app.KeyCodeN
	KeyCodeO            = app.KeyCodeO
	KeyCodeP            = app.KeyCodeP
	KeyCodeQ            = app.KeyCodeQ
	KeyCodeR            = app.KeyCodeR
	KeyCodeS            = app.KeyCodeS
	KeyCodeT            = app.KeyCodeT
	KeyCodeU            = app.KeyCodeU
	KeyCodeV            = app.KeyCodeV
	KeyCodeW            = app.KeyCodeW
	KeyCodeX            = app.KeyCodeX
	KeyCodeY            = app.KeyCodeY
	KeyCodeZ            = app.KeyCodeZ
	KeyCode0            = app.KeyCode0
	KeyCode1            = app.KeyCode1
	KeyCode2            = app.KeyCode2
	KeyCode3            = app.KeyCode3
	KeyCode4            = app.KeyCode4
	KeyCode5            = app.KeyCode5
	KeyCode6            = app.KeyCode6
	KeyCode7            = app.KeyCode7
	KeyCode8            = app.KeyCode8
	KeyCode9            = app.KeyCode9
	KeyCodeF1           = app.KeyCodeF1
	KeyCodeF2           = app.KeyCodeF2
	KeyCodeF3           = app.KeyCodeF3
	KeyCodeF4           = app.KeyCodeF4
	KeyCodeF5           = app.KeyCodeF5
	KeyCodeF6           = app.KeyCodeF6
	KeyCodeF7           = app.KeyCodeF7
	KeyCodeF8           = app.KeyCodeF8
	KeyCodeF9           = app.KeyCodeF9
	KeyCodeF10          = app.KeyCodeF10
	KeyCodeF11          = app.KeyCodeF11
	KeyCodeF12          = app.KeyCodeF12
)
View Source
const (
	KeyModifierControl  = app.KeyModifierControl
	KeyModifierShift    = app.KeyModifierShift
	KeyModifierAlt      = app.KeyModifierAlt
	KeyModifierCapsLock = app.KeyModifierCapsLock
)
View Source
const (
	MouseEventTypeDown       = app.MouseEventTypeDown
	MouseEventTypeUp         = app.MouseEventTypeUp
	MouseEventTypeMove       = app.MouseEventTypeMove
	MouseEventTypeDrag       = app.MouseEventTypeDrag
	MouseEventTypeDragCancel = app.MouseEventTypeDragCancel
	MouseEventTypeDrop       = app.MouseEventTypeDrop
	MouseEventTypeEnter      = app.MouseEventTypeEnter
	MouseEventTypeLeave      = app.MouseEventTypeLeave
	MouseEventTypeScroll     = app.MouseEventTypeScroll
)
View Source
const (
	MouseButtonLeft   = app.MouseButtonLeft
	MouseButtonMiddle = app.MouseButtonMiddle
	MouseButtonRight  = app.MouseButtonRight
)

Variables

This section is empty.

Functions

func WrappedLocator added in v0.11.0

func WrappedLocator(delegate resource.ReadLocator) resource.ReadLocator

WrapResourceLocator returns a new resource.ReadLocator that is capable of providing ui built-in resources as well as custom user resources.

Types

type Bounds

type Bounds struct {
	Position
	Size
}

Bounds represents a content area on the screen. It consists of a Position and Size.

func NewBounds

func NewBounds(x, y, width, height int) Bounds

NewBounds creates a new Bounds object.

func (Bounds) Contains

func (b Bounds) Contains(position Position) bool

Contains returns whether the specified Position is contained by this Bounds.

func (Bounds) Grow

func (b Bounds) Grow(size Size) Bounds

Grow returns a new Bounds that has a size that is larger by the given amount compared to these Bounds.

func (Bounds) Intersect

func (b Bounds) Intersect(other Bounds) Bounds

Intersect returns a new Bounds that is the intersection of the specified Bounds and these Bounds.

func (Bounds) Resize

func (b Bounds) Resize(width, height int) Bounds

Resize returns a new Bounds that is with a new Size of the specified dimensions.

func (Bounds) Shrink

func (b Bounds) Shrink(size Size) Bounds

Shrink returns a new Bounds that has a size that is smaller by the given amount compared to these Bounds.

func (Bounds) String

func (b Bounds) String() string

String returns the string representation of these Bounds.

func (Bounds) Translate

func (b Bounds) Translate(delta Position) Bounds

Translate returns a new Bounds that is with a translated position by the given amount.

type Canvas

type Canvas struct {
	// contains filtered or unexported fields
}

Canvas represents a mechanism through which an Element can render itself to the screen.

func (Canvas) Clip

func (c Canvas) Clip()

Clip creates a new clipping area according to the currently constructed Path and the clip area of parent layers.

func (*Canvas) DrawBounds added in v0.11.0

func (c *Canvas) DrawBounds(element *Element, padding bool) DrawBounds

DrawBounds returns the bounds to be used for drawing for the specified element.

func (Canvas) DrawSurface added in v0.3.0

func (c Canvas) DrawSurface(surface Surface, position, size sprec.Vec2)

DrawSurface renders the specified surface. The surface's Render method will be called when needed and is expected to return a texture representing the rendered frame.

func (*Canvas) ElapsedTime added in v0.12.0

func (c *Canvas) ElapsedTime() time.Duration

ElapsedTime returns the amount of time that has passed since the last render iteration.

This should only be used by elements that are constantly being invalidated (i.e. do real-time rendering), as otherwise this duration would be incorrect since a non-dirty element could be omitted during some frames.

func (Canvas) Fill added in v0.5.0

func (c Canvas) Fill(fill Fill)

Fill fills the currently constructed Path according to the fill settings.

func (Canvas) FillText added in v0.5.0

func (c Canvas) FillText(text string, position sprec.Vec2, typography Typography)

FillText draws a solid text at the specified position using the provided typography settings.

func (Canvas) Pop

func (c Canvas) Pop()

Pop restores the drawing state based on the parent layer. If this is the first layer, then this method panics.

func (Canvas) Push

func (c Canvas) Push()

Push records the current state and creates a new state layer. Changes done in the new layer will not affect the parent layer.

You may create up to 256 layers including the starting one after which the method panics.

func (Canvas) ResetTransform added in v0.4.0

func (c Canvas) ResetTransform()

ResetTransform restores the transform to the value it had after the last Push. If this is the first layer, then it is set to the identity matrix.

func (Canvas) Rotate added in v0.5.0

func (c Canvas) Rotate(angle sprec.Angle)

Rotate rotates the drawing coordinate system by the specified angle.

func (Canvas) Scale added in v0.5.0

func (c Canvas) Scale(amount sprec.Vec2)

Scale scales the drawing coordinate system by the specified amount in both directions.

func (Canvas) SetClipRect added in v0.5.0

func (c Canvas) SetClipRect(left, right, top, bottom float32)

SetClipRect creates a clipping rectangle region. This clipping mechanism is slighly faster than using Clip with a Path and is used by the UI framework for clipping Element contents.

Note: This clipping model does not nest, hence you can escape the boundaries of your Element depending on the provided values. In most cases, the Clip method should be used instead.

func (Canvas) SetTransform added in v0.4.0

func (c Canvas) SetTransform(transform sprec.Mat4)

SetTransform changes the transform relative to the former layer transform.

func (Canvas) Stroke added in v0.5.0

func (c Canvas) Stroke()

Stroke outlines the currently constructed Path.

func (Canvas) Translate

func (c Canvas) Translate(delta sprec.Vec2)

Translate moves the drawing position by the specified delta amount.

type Color

type Color struct {
	R uint8
	G uint8
	B uint8
	A uint8
}

Color represents a 32bit color (8 bits per channel).

func Aqua

func Aqua() Color

Aqua returns an opaque Aqua color.

func Black

func Black() Color

Black returns an opaque Black color.

func Blue

func Blue() Color

Blue returns an opaque Blue color.

func ColorWithAlpha added in v0.3.0

func ColorWithAlpha(color Color, a uint8) Color

ColorWithAlpha returns a new color that is based on the specified color but with adjusted alpha channel.

func Fuchsia

func Fuchsia() Color

Fuchsia returns an opaque Fuchsia color.

func Gray

func Gray() Color

Gray returns an opaque Gray color.

func Green

func Green() Color

Green returns an opaque Green color.

func Lime

func Lime() Color

Lime returns an opaque Lime color.

func Maroon

func Maroon() Color

Maroon returns an opaque Maroon color.

func MixColors added in v0.5.0

func MixColors(first, second Color, alpha float32) Color

MixColors returns a mixture of the two colors where alpha determines the amount of the second color.

func Navy() Color

Navy returns an opaque Navy color.

func Olive

func Olive() Color

Olive returns an opaque Olive color.

func Purple

func Purple() Color

Purple returns an opaque Purple color.

func RGB

func RGB(r, g, b uint8) Color

RGB creates a new Color off of the specified R (Red), G (Green), B (Blue) components. The alpha of the Color is set to 255 (opaque).

func RGBA

func RGBA(r, g, b, a uint8) Color

RGBA creates a new Color off of the specified R (Red), G (Green), B (Blue), A (Alpha) components.

func Red

func Red() Color

Red returns an opaque Red color.

func Silver

func Silver() Color

Silver returns an opaque Silver color.

func Teal

func Teal() Color

Teal returns an opaque Teal color.

func Transparent

func Transparent() Color

Transparent returns a fully transparent color.

func White

func White() Color

White returns an opaque White color.

func Yellow

func Yellow() Color

Yellow returns an opaque Yellow color.

func (Color) Opaque

func (c Color) Opaque() bool

Opaque returns whether this color is opaque. (i.e. has an alpha with the maximum value)

func (Color) Overlay added in v0.8.0

func (c Color) Overlay(color Color) Color

Overlay returns a new Color that is the result of overlaying the specified color over the current color. The specified color should have an alpha that is lower than 100% for there to be any useful result.

func (Color) Translucent

func (c Color) Translucent() bool

Translucent returns whether this color is translucent.

A translucent color is one that is partially visible (i.e. has an alpha value smaller than the maximum).

func (Color) Transparent

func (c Color) Transparent() bool

Transparent returns whether this color is transparent.

A transparent color is one that is not at all visible (i.e. has an alpha value equal to zero).

type Context

type Context struct {
	// contains filtered or unexported fields
}

Context represents the lifecycle and resource allocation of an Element hierarchy.

func (*Context) CreateContext added in v0.4.0

func (c *Context) CreateContext() *Context

CreateContext returns a new Context that is a child of the current Context and as such can reuse resources held by the current context.

func (*Context) CreateFont added in v0.4.0

func (c *Context) CreateFont(font *opentype.Font) (*Font, error)

CreateFont creates a new Font resource.

The Font will be destroyed once this Context is destroyed.

func (*Context) CreateFontCollection added in v0.4.0

func (c *Context) CreateFontCollection(collection *opentype.Collection) (*FontCollection, error)

CreateFontCollection creates a new FontCollection resource.

The FontCollection will be destroyed once this Context is destroyed.

func (*Context) CreateImage added in v0.3.0

func (c *Context) CreateImage(img image.Image) (*Image, error)

CreateImage creates a new Image resource.

The Image will be destroyed once this Context is destroyed.

func (*Context) Destroy added in v0.4.0

func (c *Context) Destroy()

Destroy releases all resources held by this Context.

func (*Context) GetFont

func (c *Context) GetFont(family, subFamily string) (*Font, bool)

GetFont returns the Font with the specified family and sub-family name from all of the created or loaded fonts and/or family collections.

func (*Context) OpenFont added in v0.4.0

func (c *Context) OpenFont(uri string) (*Font, error)

OpenFont opens the Font at the specified URI location.

The URI is interpreted according to the used ResourceLocator.

The Font will be destroyed once this Context is destroyed.

func (*Context) OpenFontCollection

func (c *Context) OpenFontCollection(uri string) (*FontCollection, error)

OpenFontCollection opens the FontCollection at the specified URI location.

The URI is interpreted according to the used ResourceLocator.

The FontCollection will be destroyed once this Context is destroyed.

func (*Context) OpenImage

func (c *Context) OpenImage(uri string) (*Image, error)

OpenImage opens the Image at the specified URI location.

The URI is interpreted according to the used ResourceLocator.

The Image will be destroyed once this Context is destroyed.

func (*Context) Schedule

func (c *Context) Schedule(fn func())

Schedule appends the specified function to be called from the UI thread (UI goroutine).

This function is safe for concurrent use, though such use would not guarantee any order for the functions that are being concurrently added.

This function can be called from both the UI thread, as well as from other goroutines.

There is a limit to the number of functions that can be queued within a given frame iteration. Once the buffer is full, new functions will be dropped.

func (*Context) Window

func (c *Context) Window() *Window

Window returns the Window that this Context is a part of.

type Controller added in v0.12.0

type Controller struct {
	// contains filtered or unexported fields
}

func NewController

func NewController(locator resource.ReadLocator, shaders ShaderCollection, initFn InitFunc) *Controller

NewController creates a new app.Controller that integrates with the ui package to render a user interface.

func (*Controller) OnCloseRequested added in v0.12.0

func (c *Controller) OnCloseRequested(window app.Window)

func (*Controller) OnCreate added in v0.12.0

func (c *Controller) OnCreate(appWindow app.Window)

func (*Controller) OnDestroy added in v0.12.0

func (c *Controller) OnDestroy(window app.Window)

func (*Controller) OnFramebufferResize added in v0.12.0

func (c *Controller) OnFramebufferResize(window app.Window, width, height int)

func (*Controller) OnKeyboardEvent added in v0.12.0

func (c *Controller) OnKeyboardEvent(window app.Window, event app.KeyboardEvent) bool

func (*Controller) OnMouseEvent added in v0.12.0

func (c *Controller) OnMouseEvent(window app.Window, event app.MouseEvent) bool

func (*Controller) OnRender added in v0.12.0

func (c *Controller) OnRender(window app.Window)

func (*Controller) OnResize added in v0.12.0

func (c *Controller) OnResize(window app.Window, width, height int)

type DrawBounds added in v0.11.0

type DrawBounds struct {
	Position sprec.Vec2
	Size     sprec.Vec2
}

DrawBounds represents a rectangle area to be used for drawing.

func (DrawBounds) Height added in v0.11.0

func (b DrawBounds) Height() float32

Height returns the height of the draw area.

func (DrawBounds) Width added in v0.11.0

func (b DrawBounds) Width() float32

Width returns the width of the draw area.

func (DrawBounds) X added in v0.11.0

func (b DrawBounds) X() float32

X returns the left side of the draw area.

func (DrawBounds) Y added in v0.11.0

func (b DrawBounds) Y() float32

Y returns the top side of the draw area.

type Element

type Element struct {
	// contains filtered or unexported fields
}

Element represents a hierarchical entity on the screen. It need not necessarily be a control and could just be an intermediate element used to group Controls.

func (*Element) AbsoluteBounds added in v0.8.0

func (e *Element) AbsoluteBounds() Bounds

AbsoluteBounds returns the absolute bounds of the Element.

func (*Element) AppendChild

func (e *Element) AppendChild(child *Element)

AppendChild adds the specified Element as the right-most child of this Element. If the appended Element already has a parent, it is first detached from that parent.

func (*Element) AppendSibling

func (e *Element) AppendSibling(sibling *Element)

AppendSibling attaches an Element to the right of the current one.

func (*Element) Bounds

func (e *Element) Bounds() Bounds

Bounds returns the bounds of this Element relative to its parent. If it is a top-most Element, then the bounds are relative to the Window's content area.

func (*Element) ContentBounds

func (e *Element) ContentBounds() Bounds

ContentBounds returns the bounds of the content area of this Element relative to the Element itself. The content bounds are calculated based on the Element's bounds and padding.

func (*Element) Destroy

func (e *Element) Destroy()

Destroy removes this Element from the hierarchy, as well as any child Elements and releases all allocated resources.

func (*Element) Detach

func (e *Element) Detach()

Detach removes this Element from the hierarchy but does not release any resources.

func (*Element) Enabled

func (e *Element) Enabled() bool

Enabled returns whether this element can be interacted with by the user.

func (*Element) Essence

func (e *Element) Essence() Essence

Essence returns the Essence that is responsible for the behavior of this Element.

func (*Element) FirstChild

func (e *Element) FirstChild() *Element

FirstChild returns the first (left-most) child Element of this Element. If this Element does not have any children then this method returns nil.

func (*Element) Focusable added in v0.3.0

func (e *Element) Focusable() bool

Focusable returns whether this Element can receive keyboard events. When an element if focusable and a mouse down event is received, it becomes the focused element and will begin to receive keyboard events.

func (*Element) HierarchyEnabled added in v0.8.0

func (e *Element) HierarchyEnabled() bool

HierarchyEnabled checks whether this Element and all parent Elements are enabled.

func (*Element) HierarchyVisible added in v0.8.0

func (e *Element) HierarchyVisible() bool

HierarchyVisible checks whether this Element and all parent Elements are visible.

func (*Element) ID

func (e *Element) ID() string

ID returns the ID of this Element. If an ID was not specified, then an emptry string is returned.

func (*Element) IdealSize

func (e *Element) IdealSize() Size

IdealSize returns the ideal dimensions for this Element, which could (but not necessarily) be taken into consideration by layout containers.

func (*Element) Invalidate added in v0.8.0

func (e *Element) Invalidate()

Invalidate marks this element as dirty and needing to be redrawn.

func (*Element) LastChild

func (e *Element) LastChild() *Element

LastChild returns the last (right-most) child Element of this Element. If this Element does not have any children then this method returns nil.

func (*Element) Layout

func (e *Element) Layout() Layout

Layout returns the layout configured for this Element.

func (*Element) LayoutConfig

func (e *Element) LayoutConfig() LayoutConfig

LayoutConfig returns the layout configuration for this Element. The actual implementation of the LayoutConfig interface depends on the owner Element. If this Element does not have any layout preference, then nil is returned.

func (*Element) LeftSibling

func (e *Element) LeftSibling() *Element

LeftSibling returns the left sibling Element of this Element. If this Element is the left-most child of its parent or does not have a parent then this method returns nil.

func (*Element) Padding

func (e *Element) Padding() Spacing

Padding returns the spacing that should be maintained inside an Element between its outer bounds and its content area. This setting could affect the layouting of child Elements and clipping during rendering.

func (*Element) Parent

func (e *Element) Parent() *Element

Parent returns the parent Element in the hierarchy. If this is the top-most Element then nil is returned.

func (*Element) PrependChild

func (e *Element) PrependChild(child *Element)

PrependChild adds the specified Element as the left-most child of this Element. If the preprended Element already has a parent, it is first detached from that parent.

func (*Element) PrependSibling added in v0.8.0

func (e *Element) PrependSibling(sibling *Element)

PrependSibling attaches an Element to the left of the current one.

func (*Element) RemoveChild

func (e *Element) RemoveChild(child *Element)

RemoveChild removes the specified Element from the list of children held by this Element. If the specified Element is not a child of this Element, then nothing happens.

func (*Element) RightSibling

func (e *Element) RightSibling() *Element

RightSibling returns the right sibling Element of this Element. If this Element is the right-most child of its parent or does not have a parent then this method returns nil.

func (*Element) SetBounds

func (e *Element) SetBounds(bounds Bounds)

SetBounds configures this Element's bounds relative to its parent. If it is a top-most element, then the bounds are relative to the Window's content area.

func (*Element) SetEnabled

func (e *Element) SetEnabled(enabled bool)

SetEnabled specifies whether this Element should be enabled for user interaction.

func (*Element) SetEssence

func (e *Element) SetEssence(essence Essence)

SetEssence changes the Essence that is to control the behavior and represent the purpose of this Element. Specifying nil indicates that this is a plain Element that will not handle events in any special way.

func (*Element) SetFocusable added in v0.3.0

func (e *Element) SetFocusable(focusable bool)

SetFocusable controls whether this Element should receive keyboard events.

func (*Element) SetID

func (e *Element) SetID(id string)

SetID changes the ID of this Element.

func (*Element) SetIdealSize

func (e *Element) SetIdealSize(size Size)

SetIdealSize changes this Element's ideal dimensions.

func (*Element) SetLayout

func (e *Element) SetLayout(layout Layout)

SetLayout changes this Element's layout. If specified, this Element's children will be positioned according to the specified Layout. If nil is specified, then child Elements are not repositioned in any way and will use their configured bounds as positioning and size.

func (*Element) SetLayoutConfig

func (e *Element) SetLayoutConfig(layoutConfig LayoutConfig)

SetLayoutConfig changes this Element's layout configuration. The provided implementation should match the requirements of the parent layout Element, otherwise they will not be taken into consideration. If nil is specified, then default layouting should be used.

func (*Element) SetPadding

func (e *Element) SetPadding(padding Spacing)

SetPadding configures this Element's content area spacing.

func (*Element) SetVisible

func (e *Element) SetVisible(visible bool)

SetVisible controls whether this Element should be rendered.

func (*Element) Visible

func (e *Element) Visible() bool

Visible returns whether this Element should be rendered and in respect whether it should receive events. Even if an Element is not Visible, it will still be considered by a layout. To fully remove an Element from the screen, the Materialized setting should be used.

func (*Element) Window added in v0.8.0

func (e *Element) Window() *Window

Window returns the ui Window that owns this Element.

type ElementKeyboardHandler added in v0.3.0

type ElementKeyboardHandler interface {
	OnKeyboardEvent(element *Element, event KeyboardEvent) bool
}

ElementKeyboardHandler is a type of EventHandler that can be used to receive events when an element is focused and keyboard actions are performed.

type ElementMouseHandler

type ElementMouseHandler interface {
	OnMouseEvent(element *Element, event MouseEvent) bool
}

ElementMouseHandler is a type of ElementHandler that can be used to receive events when the mouse has interacted with a given Element.

type ElementRenderHandler

type ElementRenderHandler interface {
	OnRender(element *Element, canvas *Canvas)
}

ElementRenderHandler is a type of ElementHandler that can be used to receive events when a given Element is being rendered and to perform a custom rendering for the Element.

type ElementResizeHandler

type ElementResizeHandler interface {
	OnResize(element *Element, bounds Bounds)
}

ElementResizeHandler is a type of ElementHandler that can be used to receive events when an Element has been resized.

type Essence

type Essence interface{}

Essence represents the behavior that is attached to an Element. For example, the actual value behind the interface could be a specific UI control and/or a handler.

type FilepathPayload added in v0.3.0

type FilepathPayload = app.FilepathPayload

FilepathPayload is a type of Payload that occurs when files have been dragged and dropped into the window.

type Fill added in v0.3.0

type Fill struct {

	// Rule specifies the mechanism through which it is determined
	// which point is part of the shape in an overlapping or concave
	// polygon.
	Rule FillRule

	// Color specifies the color to use to fill the shape.
	Color Color

	// Image specifies an optional image to be used for filling
	// the shape.
	Image *Image

	// ImageOffset determines the offset of the origin of the
	// image relative to the current translation context.
	ImageOffset sprec.Vec2

	// ImageSize determines the size of the drawn image. In
	// essence, this size performs scaling.
	ImageSize sprec.Vec2
}

Fill configures how a solid shape is to be drawn.

type FillLayout added in v0.3.0

type FillLayout struct{}

FillLayout resizes the children to fill the content space of the Element.

func NewFillLayout added in v0.3.0

func NewFillLayout() *FillLayout

NewFillLayout returns a new FillLayout instance.

func (*FillLayout) Apply added in v0.3.0

func (l *FillLayout) Apply(element *Element)

Apply applies this layout to the specified Element.

type FillRule added in v0.3.0

type FillRule int

FillRule represents the mechanism through which it is determined which point is part of the shape in an overlapping or concave polygon.

const (
	// FillRuleSimple is the fastest approach and should be used
	// with non-overlapping concave shapes.
	FillRuleSimple FillRule = iota

	// FillRuleNonZero will fill areas that are covered by the
	// shape, regardless if it overlaps.
	FillRuleNonZero

	// FillRuleEvenOdd will fill areas that are covered by the
	// shape and it does not overlap or overlaps an odd number
	// of times.
	FillRuleEvenOdd
)

type Font

type Font struct {
	// contains filtered or unexported fields
}

Font represents a text Font.

func (*Font) Destroy added in v0.4.0

func (f *Font) Destroy()

Destroy releases all resources related to this Font.

func (*Font) Family

func (f *Font) Family() string

Family returns the family name of this Font. (e.g. Roboto, Open Sans)

func (*Font) SubFamily

func (f *Font) SubFamily() string

SubFamily returns the sub-family name of this Font. (e.g. Italic, Bold)

func (*Font) TextSize added in v0.3.0

func (f *Font) TextSize(text string, fontSize float32) sprec.Vec2

TextSize returns the size it would take to draw the specified text string at the specified font size.

type FontCollection

type FontCollection struct {
	// contains filtered or unexported fields
}

FontCollection represents a collection of Fonts.

func (*FontCollection) Destroy added in v0.4.0

func (c *FontCollection) Destroy()

Destroy releases all resources held by this FontCollection.

func (*FontCollection) Fonts

func (c *FontCollection) Fonts() []*Font

Fonts returns all Fonts contained by this collection.

type Image

type Image struct {
	// contains filtered or unexported fields
}

Image represents a 2D image.

func (*Image) Destroy added in v0.3.0

func (i *Image) Destroy()

Destroy releases all resources allocated for this image.

func (*Image) Size

func (i *Image) Size() Size

Size returns the dimensions of this Image.

type InitFunc

type InitFunc func(window *Window)

InitFunc can be used to initialize the Window with the respective Element hierarchy.

type KeyCode

type KeyCode = app.KeyCode

KeyCode represents a keyboard key.

type KeyModifier

type KeyModifier = app.KeyModifier

KeyModifier represents a modifier key.

type KeyModifierSet

type KeyModifierSet = app.KeyModifierSet

KeyModifierSet is used to indicate which modifier keys were active at the event occurrence.

type KeyboardEvent

type KeyboardEvent struct {

	// Type specifies the keyboard event type.
	Type KeyboardEventType

	// Code returns the code of the keyboard key.
	Code KeyCode

	// Rune returns the character that was typed in case
	// of an KeyboardEventTypeType event.
	Rune rune

	// Modifiers contains a set of modifier keys that were
	// pressed during the event.
	Modifiers KeyModifierSet
}

KeyboardEvent is used to propagate events related to keyboard actions.

func (KeyboardEvent) String

func (e KeyboardEvent) String() string

String returns a string representation for this keyboard event.

type KeyboardEventType

type KeyboardEventType = app.KeyboardEventType

KeyboardEventType is used to specify the type of keyboard action that occurred.

type Layout

type Layout interface {

	// Apply applies this layout to the specified Element.
	Apply(element *Element)
}

Layout represents an algorithm through which child Elements are positioned on the screen relative to their parent.

type LayoutConfig

type LayoutConfig interface{}

LayoutConfig represents a layout configuration for an Element. The actual implementation of this interface is determined by the parent Element's layout model.

type MouseButton

type MouseButton = app.MouseButton

MouseButton represents the mouse button.

type MouseEvent

type MouseEvent struct {

	// Index indicates which mouse triggered the event. By default
	// the index for a the primary mouse is 0.
	// This is applicable for devices with multiple pointers
	// (mobile) or in case a second mouse is emulated
	// (e.g. with a game controller).
	Index int

	// Position specifies the moust position relative to the receiver.
	Position Position

	// Type specifies the mouse event type.
	Type MouseEventType

	// Button specifies the button for which the event is
	// applicable.
	Button MouseButton

	// ScrollX determines the amount of horizontal scroll.
	ScrollX float64

	// ScrollY determines the amount of vertical scroll.
	ScrollY float64

	// Payload contains the data that was dropped.
	Payload interface{}
}

MouseEvent represents an event related to a mouse action.

func (MouseEvent) String

func (e MouseEvent) String() string

String returns a string representation for this mouse event.

type MouseEventType

type MouseEventType = app.MouseEventType

MouseEventType represents the type of mouse event.

type Position

type Position struct {
	X int
	Y int
}

Position represents a position on the screen that can either be absolute or relative, depending on the context.

func NewPosition

func NewPosition(x, y int) Position

NewPosition creates a new Position with the specified coordinates.

func (Position) Inverse

func (p Position) Inverse() Position

Inverse returns a new Position that is the reverse of this Position.

func (Position) String

func (p Position) String() string

String returns a string representation of this Position.

func (Position) Translate

func (p Position) Translate(delta Position) Position

Translate returns a new Position that is translated by the specified amount.

type ShaderCollection added in v0.4.0

type ShaderCollection struct {
	ShapeShadedSet func() ShaderSet
	ShapeBlankSet  func() ShaderSet
	ContourSet     func() ShaderSet
	TextSet        func() ShaderSet
}

ShaderCollection holds the set of shaders to be used for rendering.

type ShaderSet added in v0.4.0

type ShaderSet struct {
	VertexShader   string
	FragmentShader string
}

ShaderSet contains the combination of shaders that make a single shader program for rendering.

type Size

type Size struct {
	Width  int
	Height int
}

Size represents the dimensions of something on the screen.

func NewSize

func NewSize(width, height int) Size

NewSize returns a new Size with the specified dimensions.

func (Size) Empty

func (s Size) Empty() bool

Empty returns whether this Size is zero or negative in any direction.

func (Size) Grow

func (s Size) Grow(delta Size) Size

Grow returns a new Size that is larger than this Size by the given delta amount.

func (Size) Inverse added in v0.8.0

func (s Size) Inverse() Size

Inverse returns the inverse Size of the current one.

func (Size) Shrink

func (s Size) Shrink(delta Size) Size

Shrink returns a new Size that is smaller than this Size by the given delta amount.

func (Size) String

func (s Size) String() string

String returns the string representation of this Size.

type Spacing

type Spacing struct {
	Left   int
	Right  int
	Top    int
	Bottom int
}

Spacing represents a spacing around or inside a given screen entity (e.g. Element).

func SymmetricSpacing added in v0.12.0

func SymmetricSpacing(horizontal, vertical int) Spacing

SymmetricSpacing returns a Spacing that is horizontally and vertically symmetric.

func UniformSpacing added in v0.12.0

func UniformSpacing(spacing int) Spacing

UniformSpacing returns a Spacing that is equal all around.

func (Spacing) Horizontal

func (s Spacing) Horizontal() int

Horizontal returns the horizontal amount of spacing.

func (Spacing) Size added in v0.8.0

func (s Spacing) Size() Size

Size returns the amount of spacing used in both horizontal and vertical direction.

func (Spacing) String

func (s Spacing) String() string

String returns the strings representation of this Spacing.

func (Spacing) Vertical

func (s Spacing) Vertical() int

Vertical returns the vertical amount of spacing.

type Surface added in v0.3.0

type Surface interface {
	Render() (render.Texture, Size)
}

Surface represents an auxiliary drawer.

type Typography added in v0.3.0

type Typography struct {

	// Font specifies the font to be used.
	Font *Font

	// Size specifies the font size.
	Size float32

	// Color indicates the color of the text.
	Color Color
}

Typography configures how text is to be drawn.

type Window

type Window struct {
	app.Window
	// contains filtered or unexported fields
}

Window represents an application window.

func (*Window) Context

func (w *Window) Context() *Context

Context returns the Context for this Window.

Note that anything allocated through this Context will not be released until this Window is closed.

func (*Window) CreateElement added in v0.8.0

func (w *Window) CreateElement() *Element

CreateElement creates a new Element instance.

The returned Element is not attached to anything and will not be drawn or processed in any way until it is attached to the Element hierarchy.

func (*Window) DiscardFocus added in v0.3.0

func (w *Window) DiscardFocus()

DiscardFocus removes the focus from any Element.

func (*Window) FindElementByID

func (w *Window) FindElementByID(id string) (*Element, bool)

FindElementByID looks through the Element hierarchy tree for an Element with the specified ID.

func (*Window) GetElementByID

func (w *Window) GetElementByID(id string) *Element

GetElementByID looks through the Element hierarchy tree for an Element with the specified ID. Unlike FindElementByID, this method panics if such an Element cannot be found.

func (*Window) GrantFocus added in v0.10.0

func (w *Window) GrantFocus(element *Element)

GrantFocus grants the focus to the specified Element.

func (*Window) IsElementFocused added in v0.3.0

func (w *Window) IsElementFocused(element *Element) bool

IsElementFocused returns whether the specified element is the currently focused Element.

func (*Window) Root

func (w *Window) Root() *Element

Root returns the Element that represents this Window.

func (*Window) SetSize

func (w *Window) SetSize(size Size)

SetSize changes the content area of this Window to the specified size.

func (*Window) Size

func (w *Window) Size() Size

Size returns the content area of this Window.

type WindowHandler

type WindowHandler interface {

	// OnResize is called whenever the native window has
	// been resized.
	OnResize(size Size)

	// OnFramebufferResize is called whenever the native window's
	// framebuffer has been resized.
	OnFramebufferResize(size Size)

	// OnKeyboardEvent is called whenever a native key event
	// has been registered.
	OnKeyboardEvent(event KeyboardEvent) bool

	// OnMouseEvent is called whenever a native mouse event
	// has been registered.
	OnMouseEvent(event MouseEvent) bool

	// OnRender is called whenever the Window should redraw
	// itself.
	OnRender()

	// OnCloseRequested is called whenever the end-user has
	// indicated that they would like to close the appplication.
	// (e.g. using the close button on the application)
	OnCloseRequested()
}

WindowHandler is an interface that is used by the framework to communicate with Window implementations critical events.

Directories

Path Synopsis
Package component features a framework, inspired by React, that allows one to construct a user interface hierarchy through the usage of declarative DSL.
Package component features a framework, inspired by React, that allows one to construct a user interface hierarchy through the usage of declarative DSL.
Package i18n provides experimental internationalization features.
Package i18n provides experimental internationalization features.
Package layout provides a default layout scheme that can, but need not, be used with the ui framework.
Package layout provides a default layout scheme that can, but need not, be used with the ui framework.
Package mvc adds utilities on top of the component package that allow one to model a user interface that uses a type of MVC pattern.
Package mvc adds utilities on top of the component package that allow one to model a user interface that uses a type of MVC pattern.
Package std provides a collection of standard components that can be used with the ui framework.
Package std provides a collection of standard components that can be used with the ui framework.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL