aboutsummaryrefslogtreecommitdiffstats
path: root/win/events.go
diff options
context:
space:
mode:
authorfaiface <faiface@ksp.sk>2017-08-18 19:33:01 +0200
committerfaiface <faiface@ksp.sk>2017-08-18 19:33:01 +0200
commitee3366ded862f02a1a5ee4ea856a06e46bb889ee (patch)
tree3bc57102892faa30167971f844461df061077874 /win/events.go
parentc900b5f71877660fffad5bc276aeda4c9a345ad1 (diff)
downloadgui-ee3366ded862f02a1a5ee4ea856a06e46bb889ee.zip
add win package
Diffstat (limited to 'win/events.go')
-rw-r--r--win/events.go49
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)
+}