From 98318abb60a2c4101e862b27740e9d32fc2e919d Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 31 Mar 2019 13:04:44 +0200 Subject: [PATCH] apps/hello: add hello world example --- apps/go.mod | 2 +- apps/hello/hello.go | 63 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 apps/hello/hello.go diff --git a/apps/go.mod b/apps/go.mod index 31326156..ff90edba 100644 --- a/apps/go.mod +++ b/apps/go.mod @@ -1,6 +1,6 @@ module gioui.org/apps -go 1.13 +go 1.12 require ( gioui.org/ui v0.0.0-20190331090026-ca5204fcb8b3 diff --git a/apps/hello/hello.go b/apps/hello/hello.go new file mode 100644 index 00000000..351b9e33 --- /dev/null +++ b/apps/hello/hello.go @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: Unlicense OR MIT + +package main + +import ( + "image" + "image/color" + "log" + + "gioui.org/ui" + "gioui.org/ui/app" + "gioui.org/ui/layout" + "gioui.org/ui/measure" + "gioui.org/ui/text" + + "golang.org/x/image/font/gofont/goregular" + "golang.org/x/image/font/sfnt" +) + +func main() { + err := app.CreateWindow(app.WindowOptions{ + Width: ui.Dp(400), + Height: ui.Dp(800), + Title: "Hello World", + }) + if err != nil { + log.Fatal(err) + } + app.Main() +} + +func init() { + go func() { + for w := range app.Windows() { + go loop(w) + } + }() +} + +func loop(w *app.Window) { + regular, err := sfnt.Parse(goregular.TTF) + if err != nil { + panic("failed to load font") + } + var faces measure.Faces + black := &image.Uniform{color.Black} + face := faces.For(regular, ui.Dp(50)) + for w.IsAlive() { + e := <-w.Events() + switch e := e.(type) { + case app.Draw: + faces.Cfg = e.Config + cs := layout.ExactConstraints(w.Size()) + root, _ := (text.Label{Src: black, Face: face, Text: "Hello, World!"}).Layout(cs) + w.Draw(root) + faces.Frame() + } + w.Ack() + } + if w.Err() != nil { + log.Fatal(err) + } +}