A tiny, portable, immediate-mode UI library ported to Go (as of commit 0850aba860959c3e75fb3e97120ca92957f9d057, v2.02)
-
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 -
All pointer-based commands (
MU_COMMAND_JUMP
) and theCommand
struct have been reworked to use indices -
The
mu_Real
type has been replaced withfloat32
because Go does not allow implicit casting of identical type aliases -
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
- Ebitengine rendering backend + demo port: zeozeozeo/ebitengine-microui-go
- Official Ebitengine fork and integration efforts: ebitengine/microui
The library expects the user to provide input and handle the resultant drawing commands, it does not do any drawing/tessellation itself.
Thank you @rxi for creating this awesome library and thank you @Zyko0 for contributing numerous fixes to this Go port.