aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author8o7wer <8o7wermobile@gmail.com>2019-05-10 20:51:08 -0800
committer8o7wer <8o7wermobile@gmail.com>2019-05-10 20:51:08 -0800
commit8b2b10d1d4a09fb436580c598379182ddf3d2c25 (patch)
tree8722d5a9f25b2eae465cf6cda0db86965e6d0e89
parent4d2d435b65f660ff4acf99fc043f75c8d04db6ae (diff)
downloadgui-8b2b10d1d4a09fb436580c598379182ddf3d2c25.zip
Fixing w.ratio going under zero and causing a divide by zero exception
Adds Borderless and Maximized options
-rw-r--r--win/win.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/win/win.go b/win/win.go
index f624f35..519db84 100644
--- a/win/win.go
+++ b/win/win.go
@@ -20,6 +20,8 @@ type options struct {
title string
width, height int
resizable bool
+ borderless bool
+ maximized bool
}
// Title option sets the title (caption) of the window.
@@ -44,6 +46,20 @@ func Resizable() Option {
}
}
+//Borderless option makes the window borderless
+func Borderless() Option {
+ return func(o *options) {
+ o.borderless = true
+ }
+}
+
+//Maximized option makes the window start maximized
+func Maximized() Option {
+ return func(o *options) {
+ o.maximized = true
+ }
+}
+
// New creates a new window with all the supplied options.
//
// The default title is empty and the default size is 640x480.
@@ -53,6 +69,8 @@ func New(opts ...Option) (*Win, error) {
width: 640,
height: 480,
resizable: false,
+ borderless: false,
+ maximized: false,
}
for _, opt := range opts {
opt(&o)
@@ -80,6 +98,9 @@ func New(opts ...Option) (*Win, error) {
// hiDPI hack
width, _ := w.w.GetFramebufferSize()
w.ratio = width / o.width
+ if w.ratio < 1 {
+ w.ratio = 1
+ }
if w.ratio != 1 {
o.width /= w.ratio
o.height /= w.ratio
@@ -115,7 +136,16 @@ func makeGLFWWin(o *options) (*glfw.Window, error) {
} else {
glfw.WindowHint(glfw.Resizable, glfw.False)
}
+ if o.borderless {
+ glfw.WindowHint(glfw.Decorated, glfw.False)
+ }
+ if o.maximized {
+ glfw.WindowHint(glfw.Maximized, glfw.True)
+ }
w, err := glfw.CreateWindow(o.width, o.height, o.title, nil, nil)
+ if o.maximized {
+ o.width, o.height = w.GetFramebufferSize() // set o.width and o.height to the window size due to the window being maximized
+ }
if err != nil {
return nil, err
}