avyos.dev/pkg/graphics/widget/engine

package engine

Overview

No package-level documentation is provided.

Export GroupCount
Constants0
Variables0
Functions0
Types2

Types

Element

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

Element is the universal DOM-like node. Every UI element is an Element. It implements widget.Widget and renders entirely from attributes. Based on its attributes, it can behave as any widget: button, text input, checkbox, slider, container, etc.

Functions

BuildMenuPopup

func BuildMenuPopup(menu *Element, closeFn func()) (*Element, int, int, bool)

BuildMenuPopup clones a menu subtree and returns popup content plus dimensions.

NewElement

func NewElement(tag string) *Element

NewElement creates a new Element with the given tag.

Methods

AddChild

func (e *Element) AddChild(child *Element)

AddChild adds a child element.

Attr

func (e *Element) Attr(name, def string) string

Attr returns the string attribute or default.

AttrBool

func (e *Element) AttrBool(name string, def bool) bool

AttrBool returns a boolean attribute or default.

AttrColor

func (e *Element) AttrColor(name string, def color.NRGBA) color.NRGBA

AttrColor returns a color attribute or default.

AttrFloat

func (e *Element) AttrFloat(name string, def float64) float64

AttrFloat returns a float attribute or default.

AttrInt

func (e *Element) AttrInt(name string, def int) int

AttrInt returns an integer attribute or default.

BindSignal

func (e *Element) BindSignal(name string, fn interface{}) bool

BindSignal binds a runtime signal handler (for example "clicked").

Bounds

func (e *Element) Bounds() image.Rectangle

ChildElements

func (e *Element) ChildElements() []*Element

ChildElements returns child elements.

Children

func (e *Element) Children() []gfxwidget.Widget

Children returns child widgets (for app.App damage tracking).

ClearChildren

func (e *Element) ClearChildren()

ClearChildren removes all child elements.

DirtyRects

func (e *Element) DirtyRects() []image.Rectangle

DirtyRects returns optional subregions that should be redrawn for this widget. Nil means repaint the full widget bounds.

Draw

func (e *Element) Draw(buf *core.Buffer)

EmitSignal

func (e *Element) EmitSignal(name string, args ...interface{})

EmitSignal emits a signal by name with optional args.

FindChild

func (e *Element) FindChild(id string) *Element

FindChild finds a descendant by id (depth-first).

GetAttribute

func (e *Element) GetAttribute(name string) string

GetAttribute returns an attribute value.

HandleEvent

func (e *Element) HandleEvent(ev gfxinput.Event) bool

HasAttribute

func (e *Element) HasAttribute(name string) bool

HasAttribute reports whether the attribute key exists.

ID

func (e *Element) ID() string

ID returns the element's id.

IsDirty

func (e *Element) IsDirty() bool

IsFocused

func (e *Element) IsFocused() bool

IsVisible

func (e *Element) IsVisible() bool

MarkClean

func (e *Element) MarkClean()

MarkDirty

func (e *Element) MarkDirty()

MinSize

func (e *Element) MinSize() image.Point

ScrollTextAreaToBottom

func (e *Element) ScrollTextAreaToBottom()

ScrollTextAreaToBottom moves the multiline viewport to the newest lines.

SelfDirty

func (e *Element) SelfDirty() bool

SetAttribute

func (e *Element) SetAttribute(name string, value interface{})

SetAttribute sets an attribute value and marks dirty.

SetBounds

func (e *Element) SetBounds(r image.Rectangle)

SetFocused

func (e *Element) SetFocused(focused bool)

SetID

func (e *Element) SetID(id string)

SetID updates the element id.

SetTerminalBuffer

func (e *Element) SetTerminalBuffer(lines [][]TerminalCell, cursorCol, cursorRow int, showCursor bool)

SetTerminalBuffer updates a multiline element with terminal-styled cells. It keeps the text-area scroll state while replacing its backing lines.

SetVisible

func (e *Element) SetVisible(visible bool)

Tag

func (e *Element) Tag() string

Tag returns the element's tag name.

TextAreaAtBottom

func (e *Element) TextAreaAtBottom(threshold int) bool

TextAreaAtBottom reports whether the current multiline viewport is at the end.

TerminalCell

type TerminalCell struct {
	Char      rune
	Fg        color.NRGBA
	Bg        color.NRGBA
	Underline bool
}

TerminalCell holds one terminal glyph with resolved foreground/background colors.