A tiny, portable, immediate-mode UI library ported to Go (as of commit 05d7b46c9cf650dd0c5fbc83a9bebf87c80d02a5)
-
Functions and structs are renamed to be PascalCase and the prefix
mu_
is removed, like this:mu_push_command
->PushCommand
mu_begin_treenode_ex
->BeginTreeNodeEx
mu_get_clip_rect
->GetClipRect
-
Every function that takes
mu_Context
(Context
) instead has aContext
reciever, soButton(ctx, label)
becomesctx.Button(label)
-
Stacks are now slices with variable length,
append
is used forpush
andslice = slice[:len(slice)-1]
is used forpop
-
mu_Font
(Font
) isinterface{}
, since it doesn't store any font data. You can usereflect
if you want to store values inside it -
The library is split into separate files instead of one file
-
The library is ~1300 lines of code in total
NewContext
, which is a helper for creating a newContext
ctx.Render
, which calls a function for every command inside the command list, then clears it
The library expects the user to provide input and handle the resultant drawing commands, it does not do any drawing itself.