tea.ml

Graphics framework inspired by TEA. Uses kivy and VDOM-diffing internally. Supports GUIs, canvas graphics & shaders

Definitions

Types

type Color = Vec
data Uniform
	= UniformFloat String Number
	| UniformInt String Number
	| UniformVec2 String Vec
	| UniformVec3 String Vec
	| UniformVec4 String Vec
	| UniformTex0 String Img
data Widget
	= Rect Color Vec Vec
	| TRect Img Vec Vec
	| SRect String (List Uniform) Vec Vec
	| Btn String String Vec Vec
	| Slider String Number Number Number Number Vec Vec
	| Label String String Vec Vec
	| Line (List Vec) Number Color
	| Many (List Widget)
WIDGET_DOCS : doc

Attributes for Widgets:
Rect : color, size, pos
TRect : texture, size, pos
Btn : name, text, size, pos
Slider: name, min, max, step, value, size, pos
Label : name, text, size, pos
Line : polygon-points, width, color
Many : children

data Event
	= Tick
	| BtnPressed String
	| BtnReleased String
	| BtnHeld String
	| SliderMoved String Number

Starting the App

setTick : a -> (Event -> a -> a) -> (a -> Widget) -> Unit
forceUpdate : state -> state
stop : Unit -> Unit

Basic kinds of apps / patterns

staticView : (Unit -> Widget) -> Unit

Renders a view and then halts the app.
Use for graphing, etc.

Getters

width : Number
height: Number
getFPS : Unit -> Number

Positioning / layouts

setPos : Widget -> Vec -> Unit
randPos : Unit -> Vec
grid : Vec -> Vec -> Num -> Num -> List (Vec -> Widget) -> Widget

Colors & constants