diff options
| author | faiface <faiface@ksp.sk> | 2017-08-18 19:33:01 +0200 |
|---|---|---|
| committer | faiface <faiface@ksp.sk> | 2017-08-18 19:33:01 +0200 |
| commit | ee3366ded862f02a1a5ee4ea856a06e46bb889ee (patch) | |
| tree | 3bc57102892faa30167971f844461df061077874 /win/events.go | |
| parent | c900b5f71877660fffad5bc276aeda4c9a345ad1 (diff) | |
| download | gui-ee3366ded862f02a1a5ee4ea856a06e46bb889ee.zip | |
add win package
Diffstat (limited to 'win/events.go')
| -rw-r--r-- | win/events.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/win/events.go b/win/events.go new file mode 100644 index 0000000..7ce93e5 --- /dev/null +++ b/win/events.go @@ -0,0 +1,49 @@ +package win + +import ( + "fmt" + "strings" + + "github.com/faiface/gui/event" + "github.com/go-gl/glfw/v3.2/glfw" +) + +func (w *Win) setUpEvents(events chan<- string) { + var moX, moY int + + w.w.SetMouseButtonCallback(func(_ *glfw.Window, button glfw.MouseButton, action glfw.Action, mod glfw.ModifierKey) { + switch action { + case glfw.Press: + events <- mkEvent("mo", "down", moX, moY) + case glfw.Release: + events <- mkEvent("mo", "up", moX, moY) + } + }) + + w.w.SetCursorPosCallback(func(_ *glfw.Window, x, y float64) { + moX, moY = int(x), int(y) + events <- mkEvent("mo", "move", moX, moY) + }) + + w.w.SetCharCallback(func(_ *glfw.Window, r rune) { + events <- mkEvent("kb", "type", r) + }) + + w.w.SetSizeCallback(func(_ *glfw.Window, width, height int) { + w.resize(width, height) + events <- mkEvent("wi", "resize", width, height) + }) + + w.w.SetCloseCallback(func(_ *glfw.Window) { + events <- mkEvent("wi", "close") + w.close() + }) +} + +func mkEvent(a ...interface{}) string { + s := make([]string, len(a)) + for i := range s { + s[i] = fmt.Sprint(a[i]) + } + return strings.Join(s, event.Sep) +} |