Skip to content
Marek Maskarinec edited this page Oct 9, 2022 · 7 revisions

ui.um

struct Theme*

type Theme* = struct {
	fg, bg: uint32

	borderColor: uint32
	borderSize: th.fu
}

struct Generic*

type Generic* = struct {
	r: rect.Rect
	gridPos: th.Vf2
	gridSpan: th.Vf2
	theme: Theme

	ctx: interface{}
	onEvent: fn(eventType: th.uu, ctx: interface{})
	pressed: bool
	selected: bool
}

A structure all elements have to contain. t can be set manually by the user, s being the dimensions, or it can be set by another elements. onEvent is an event callback. It will pass whatever is set in the ctx field. Event types: eventUnknown eventHover eventPress eventJustPress eventRelease

interface Element*

type Element* = interface {
	handle()
	draw()
	get(): ^Generic
}

An interface every ui element has to implements.

interface TextRenderer*

type TextRenderer* = interface {
	draw(text: str, pos: th.Vf2, color: uint32, scale: th.fu = 1.0)
	measure(text: str): th.Vf2
}

Interface used anywhere, where text is rendered.

struct PixelFont*

type PixelFont* = struct { }

Bindings around canvas's font rendering functions to make them usable with the TextRenderer interface.

fn draw*

fn (pf: ^PixelFont) draw*(text: str, pos: th.Vf2, color: uint32, scale: th.fu = 1.0) {

fn measure*

fn (pf: ^PixelFont) measure*(text: str): th.Vf2 {

fn mkGeneric*

fn mkGeneric*(): Generic {

fn grid*

fn (g: ^Generic) grid*(x, y: th.uu): ^Generic {

Functions that sets the grid pos of a Generic

fn span*

fn (g: ^Generic) span*(x, y: th.uu): ^Generic {

Function setting the grid span of a Generic

fn handle*

fn (g: ^Generic) handle*() {

Generic's handle function. It checks for events. If you create your own ui element and want to have more control over how events are fired, you don't have to use it.

fn drawBorder*

fn drawBorder*(p, d: th.Vf2, t: Theme) {

Clone this wiki locally