aboutsummaryrefslogtreecommitdiffstats
path: root/win/monitor.go
diff options
context:
space:
mode:
author8o7wer <8o7wermobile@gmail.com>2019-05-10 20:50:07 -0800
committer8o7wer <8o7wermobile@gmail.com>2019-05-10 20:50:07 -0800
commit4d2d435b65f660ff4acf99fc043f75c8d04db6ae (patch)
tree607f23ea69aefdc89623fd3b2d4fa0ca994a9ce2 /win/monitor.go
parentf8fde9e8d0b8270f082b778b44627a03dd59c57c (diff)
downloadgui-4d2d435b65f660ff4acf99fc043f75c8d04db6ae.zip
Adds the ability to get monitor information through win.GetPrimaryMonitor()
Diffstat (limited to 'win/monitor.go')
-rw-r--r--win/monitor.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/win/monitor.go b/win/monitor.go
new file mode 100644
index 0000000..931484a
--- /dev/null
+++ b/win/monitor.go
@@ -0,0 +1,42 @@
+package win
+
+import (
+ "github.com/faiface/mainthread"
+ "github.com/go-gl/glfw/v3.2/glfw"
+)
+
+
+// Holds information on a monitor
+type Monitor struct {
+ Width, Height int
+ RefreshRate int
+}
+
+// Returns a struct containing information about the primary monitor
+func GetPrimaryMonitor() (Monitor, error) {
+ returns := mainthread.CallVal( func() interface{} {
+ err := glfw.Init()
+ if err != nil {
+ return err
+ }
+
+ return glfw.GetPrimaryMonitor().GetVideoMode()
+ })
+
+ monitor := Monitor{0, 0, 0}
+ var err error = nil
+
+ switch v := returns.(type) {
+ case *glfw.VidMode:
+ videoMode := v
+
+ width := videoMode.Width
+ height := videoMode.Height
+ refreshRate := videoMode.RefreshRate
+ monitor = Monitor{width, height, refreshRate}
+ case error:
+ err = v
+ }
+
+ return monitor, err
+}