diff options
author | xengineering <me@xengineering.eu> | 2023-02-20 20:51:56 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2023-02-20 20:51:56 +0100 |
commit | 2ab06fbc7f5b2ed93ee8668ac6f3ab7c1e15130c (patch) | |
tree | 0146575be8a4bcefc99e43fb887cffae38d81692 /go/main.go | |
parent | becf716c4de03d58113017cd135b3c90fd77bcac (diff) | |
download | limox-2ab06fbc7f5b2ed93ee8668ac6f3ab7c1e15130c.tar limox-2ab06fbc7f5b2ed93ee8668ac6f3ab7c1e15130c.tar.zst limox-2ab06fbc7f5b2ed93ee8668ac6f3ab7c1e15130c.zip |
Add Golang-based Gio example code
Golang and Gio should be considered as an alternative to the current C-
and SDL-based setup.
Diffstat (limited to 'go/main.go')
-rw-r--r-- | go/main.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/go/main.go b/go/main.go new file mode 100644 index 0000000..5c4c213 --- /dev/null +++ b/go/main.go @@ -0,0 +1,49 @@ +package main + +import ( + "image/color" + "log" + "os" + + "gioui.org/app" + "gioui.org/font/gofont" + "gioui.org/io/system" + "gioui.org/layout" + "gioui.org/op" + "gioui.org/text" + "gioui.org/widget/material" +) + +func main() { + go func() { + w := app.NewWindow() + err := run(w) + if err != nil { + log.Fatal(err) + } + os.Exit(0) + }() + app.Main() +} + +func run(w *app.Window) error { + th := material.NewTheme(gofont.Collection()) + var ops op.Ops + for { + e := <-w.Events() + switch e := e.(type) { + case system.DestroyEvent: + return e.Err + case system.FrameEvent: + gtx := layout.NewContext(&ops, e) + + title := material.H1(th, "Hello, Gio") + maroon := color.NRGBA{R: 127, G: 0, B: 0, A: 255} + title.Color = maroon + title.Alignment = text.Middle + title.Layout(gtx) + + e.Frame(gtx.Ops) + } + } +} |