making underliing glfv window public
This commit is contained in:
parent
857c068d8d
commit
a49ca19a42
|
@ -45,7 +45,7 @@ func (w *Window) SetMousePosition(v pixel.Vec) {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
if (v.X >= 0 && v.X <= w.bounds.W()) &&
|
if (v.X >= 0 && v.X <= w.bounds.W()) &&
|
||||||
(v.Y >= 0 && v.Y <= w.bounds.H()) {
|
(v.Y >= 0 && v.Y <= w.bounds.H()) {
|
||||||
w.window.SetCursorPos(
|
w.Window.SetCursorPos(
|
||||||
v.X+w.bounds.Min.X,
|
v.X+w.bounds.Min.X,
|
||||||
(w.bounds.H()-v.Y)+w.bounds.Min.Y,
|
(w.bounds.H()-v.Y)+w.bounds.Min.Y,
|
||||||
)
|
)
|
||||||
|
@ -359,7 +359,7 @@ var buttonNames = map[Button]string{
|
||||||
|
|
||||||
func (w *Window) initInput() {
|
func (w *Window) initInput() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetMouseButtonCallback(func(_ *glfw.Window, button glfw.MouseButton, action glfw.Action, mod glfw.ModifierKey) {
|
w.Window.SetMouseButtonCallback(func(_ *glfw.Window, button glfw.MouseButton, action glfw.Action, mod glfw.ModifierKey) {
|
||||||
switch action {
|
switch action {
|
||||||
case glfw.Press:
|
case glfw.Press:
|
||||||
w.tempInp.buttons[Button(button)] = true
|
w.tempInp.buttons[Button(button)] = true
|
||||||
|
@ -368,7 +368,7 @@ func (w *Window) initInput() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
w.window.SetKeyCallback(func(_ *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) {
|
w.Window.SetKeyCallback(func(_ *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) {
|
||||||
if key == glfw.KeyUnknown {
|
if key == glfw.KeyUnknown {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -382,23 +382,23 @@ func (w *Window) initInput() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
w.window.SetCursorEnterCallback(func(_ *glfw.Window, entered bool) {
|
w.Window.SetCursorEnterCallback(func(_ *glfw.Window, entered bool) {
|
||||||
w.cursorInsideWindow = entered
|
w.cursorInsideWindow = entered
|
||||||
})
|
})
|
||||||
|
|
||||||
w.window.SetCursorPosCallback(func(_ *glfw.Window, x, y float64) {
|
w.Window.SetCursorPosCallback(func(_ *glfw.Window, x, y float64) {
|
||||||
w.tempInp.mouse = pixel.V(
|
w.tempInp.mouse = pixel.V(
|
||||||
x+w.bounds.Min.X,
|
x+w.bounds.Min.X,
|
||||||
(w.bounds.H()-y)+w.bounds.Min.Y,
|
(w.bounds.H()-y)+w.bounds.Min.Y,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
w.window.SetScrollCallback(func(_ *glfw.Window, xoff, yoff float64) {
|
w.Window.SetScrollCallback(func(_ *glfw.Window, xoff, yoff float64) {
|
||||||
w.tempInp.scroll.X += xoff
|
w.tempInp.scroll.X += xoff
|
||||||
w.tempInp.scroll.Y += yoff
|
w.tempInp.scroll.Y += yoff
|
||||||
})
|
})
|
||||||
|
|
||||||
w.window.SetCharCallback(func(_ *glfw.Window, r rune) {
|
w.Window.SetCharCallback(func(_ *glfw.Window, r rune) {
|
||||||
w.tempInp.typed += string(r)
|
w.tempInp.typed += string(r)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -79,7 +79,7 @@ type WindowConfig struct {
|
||||||
|
|
||||||
// Window is a window handler. Use this type to manipulate a window (input, drawing, etc.).
|
// Window is a window handler. Use this type to manipulate a window (input, drawing, etc.).
|
||||||
type Window struct {
|
type Window struct {
|
||||||
window *glfw.Window
|
*glfw.Window
|
||||||
|
|
||||||
bounds pixel.Rect
|
bounds pixel.Rect
|
||||||
canvas *Canvas
|
canvas *Canvas
|
||||||
|
@ -138,10 +138,10 @@ func NewWindow(cfg WindowConfig) (*Window, error) {
|
||||||
|
|
||||||
var share *glfw.Window
|
var share *glfw.Window
|
||||||
if currWin != nil {
|
if currWin != nil {
|
||||||
share = currWin.window
|
share = currWin.Window
|
||||||
}
|
}
|
||||||
_, _, width, height := intBounds(cfg.Bounds)
|
_, _, width, height := intBounds(cfg.Bounds)
|
||||||
w.window, err = glfw.CreateWindow(
|
w.Window, err = glfw.CreateWindow(
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
cfg.Title,
|
cfg.Title,
|
||||||
|
@ -153,8 +153,8 @@ func NewWindow(cfg WindowConfig) (*Window, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.Position.X != 0 || cfg.Position.Y != 0 {
|
if cfg.Position.X != 0 || cfg.Position.Y != 0 {
|
||||||
w.window.SetPos(int(cfg.Position.X), int(cfg.Position.Y))
|
w.Window.SetPos(int(cfg.Position.X), int(cfg.Position.Y))
|
||||||
w.window.Show()
|
w.Window.Show()
|
||||||
}
|
}
|
||||||
|
|
||||||
// enter the OpenGL context
|
// enter the OpenGL context
|
||||||
|
@ -175,7 +175,7 @@ func NewWindow(cfg WindowConfig) (*Window, error) {
|
||||||
imgs[i] = pic.Image()
|
imgs[i] = pic.Image()
|
||||||
}
|
}
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetIcon(imgs)
|
w.Window.SetIcon(imgs)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ func NewWindow(cfg WindowConfig) (*Window, error) {
|
||||||
// Destroy destroys the Window. The Window can't be used any further.
|
// Destroy destroys the Window. The Window can't be used any further.
|
||||||
func (w *Window) Destroy() {
|
func (w *Window) Destroy() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.Destroy()
|
w.Window.Destroy()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ func (w *Window) Update() {
|
||||||
func (w *Window) SwapBuffers() {
|
func (w *Window) SwapBuffers() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
_, _, oldW, oldH := intBounds(w.bounds)
|
_, _, oldW, oldH := intBounds(w.bounds)
|
||||||
newW, newH := w.window.GetSize()
|
newW, newH := w.Window.GetSize()
|
||||||
w.bounds = w.bounds.ResizedMin(w.bounds.Size().Add(pixel.V(
|
w.bounds = w.bounds.ResizedMin(w.bounds.Size().Add(pixel.V(
|
||||||
float64(newW-oldW),
|
float64(newW-oldW),
|
||||||
float64(newH-oldH),
|
float64(newH-oldH),
|
||||||
|
@ -222,7 +222,7 @@ func (w *Window) SwapBuffers() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.begin()
|
w.begin()
|
||||||
|
|
||||||
framebufferWidth, framebufferHeight := w.window.GetFramebufferSize()
|
framebufferWidth, framebufferHeight := w.Window.GetFramebufferSize()
|
||||||
glhf.Bounds(0, 0, framebufferWidth, framebufferHeight)
|
glhf.Bounds(0, 0, framebufferWidth, framebufferHeight)
|
||||||
|
|
||||||
glhf.Clear(0, 0, 0, 0)
|
glhf.Clear(0, 0, 0, 0)
|
||||||
|
@ -239,7 +239,7 @@ func (w *Window) SwapBuffers() {
|
||||||
} else {
|
} else {
|
||||||
glfw.SwapInterval(0)
|
glfw.SwapInterval(0)
|
||||||
}
|
}
|
||||||
w.window.SwapBuffers()
|
w.Window.SwapBuffers()
|
||||||
w.end()
|
w.end()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -250,7 +250,7 @@ func (w *Window) SwapBuffers() {
|
||||||
// Window from within the program.
|
// Window from within the program.
|
||||||
func (w *Window) SetClosed(closed bool) {
|
func (w *Window) SetClosed(closed bool) {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetShouldClose(closed)
|
w.Window.SetShouldClose(closed)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +260,7 @@ func (w *Window) SetClosed(closed bool) {
|
||||||
func (w *Window) Closed() bool {
|
func (w *Window) Closed() bool {
|
||||||
var closed bool
|
var closed bool
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
closed = w.window.ShouldClose()
|
closed = w.Window.ShouldClose()
|
||||||
})
|
})
|
||||||
return closed
|
return closed
|
||||||
}
|
}
|
||||||
|
@ -268,7 +268,7 @@ func (w *Window) Closed() bool {
|
||||||
// SetTitle changes the title of the Window.
|
// SetTitle changes the title of the Window.
|
||||||
func (w *Window) SetTitle(title string) {
|
func (w *Window) SetTitle(title string) {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetTitle(title)
|
w.Window.SetTitle(title)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@ func (w *Window) SetBounds(bounds pixel.Rect) {
|
||||||
w.bounds = bounds
|
w.bounds = bounds
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
_, _, width, height := intBounds(bounds)
|
_, _, width, height := intBounds(bounds)
|
||||||
w.window.SetSize(width, height)
|
w.Window.SetSize(width, height)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ func (w *Window) SetBounds(bounds pixel.Rect) {
|
||||||
func (w *Window) SetPos(pos pixel.Vec) {
|
func (w *Window) SetPos(pos pixel.Vec) {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
left, top := int(pos.X), int(pos.Y)
|
left, top := int(pos.X), int(pos.Y)
|
||||||
w.window.SetPos(left, top)
|
w.Window.SetPos(left, top)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ func (w *Window) SetPos(pos pixel.Vec) {
|
||||||
func (w *Window) GetPos() pixel.Vec {
|
func (w *Window) GetPos() pixel.Vec {
|
||||||
var v pixel.Vec
|
var v pixel.Vec
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
x, y := w.window.GetPos()
|
x, y := w.Window.GetPos()
|
||||||
v = pixel.V(float64(x), float64(y))
|
v = pixel.V(float64(x), float64(y))
|
||||||
})
|
})
|
||||||
return v
|
return v
|
||||||
|
@ -312,12 +312,12 @@ func (w *Window) Bounds() pixel.Rect {
|
||||||
|
|
||||||
func (w *Window) setFullscreen(monitor *Monitor) {
|
func (w *Window) setFullscreen(monitor *Monitor) {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.restore.xpos, w.restore.ypos = w.window.GetPos()
|
w.restore.xpos, w.restore.ypos = w.Window.GetPos()
|
||||||
w.restore.width, w.restore.height = w.window.GetSize()
|
w.restore.width, w.restore.height = w.Window.GetSize()
|
||||||
|
|
||||||
mode := monitor.monitor.GetVideoMode()
|
mode := monitor.monitor.GetVideoMode()
|
||||||
|
|
||||||
w.window.SetMonitor(
|
w.Window.SetMonitor(
|
||||||
monitor.monitor,
|
monitor.monitor,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -330,7 +330,7 @@ func (w *Window) setFullscreen(monitor *Monitor) {
|
||||||
|
|
||||||
func (w *Window) setWindowed() {
|
func (w *Window) setWindowed() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetMonitor(
|
w.Window.SetMonitor(
|
||||||
nil,
|
nil,
|
||||||
w.restore.xpos,
|
w.restore.xpos,
|
||||||
w.restore.ypos,
|
w.restore.ypos,
|
||||||
|
@ -361,7 +361,7 @@ func (w *Window) SetMonitor(monitor *Monitor) {
|
||||||
func (w *Window) Monitor() *Monitor {
|
func (w *Window) Monitor() *Monitor {
|
||||||
var monitor *glfw.Monitor
|
var monitor *glfw.Monitor
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
monitor = w.window.GetMonitor()
|
monitor = w.Window.GetMonitor()
|
||||||
})
|
})
|
||||||
if monitor == nil {
|
if monitor == nil {
|
||||||
return nil
|
return nil
|
||||||
|
@ -375,7 +375,7 @@ func (w *Window) Monitor() *Monitor {
|
||||||
func (w *Window) Focused() bool {
|
func (w *Window) Focused() bool {
|
||||||
var focused bool
|
var focused bool
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
focused = w.window.GetAttrib(glfw.Focused) == glfw.True
|
focused = w.Window.GetAttrib(glfw.Focused) == glfw.True
|
||||||
})
|
})
|
||||||
return focused
|
return focused
|
||||||
}
|
}
|
||||||
|
@ -395,9 +395,9 @@ func (w *Window) SetCursorVisible(visible bool) {
|
||||||
w.cursorVisible = visible
|
w.cursorVisible = visible
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
if visible {
|
if visible {
|
||||||
w.window.SetInputMode(glfw.CursorMode, glfw.CursorNormal)
|
w.Window.SetInputMode(glfw.CursorMode, glfw.CursorNormal)
|
||||||
} else {
|
} else {
|
||||||
w.window.SetInputMode(glfw.CursorMode, glfw.CursorHidden)
|
w.Window.SetInputMode(glfw.CursorMode, glfw.CursorHidden)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -407,7 +407,7 @@ func (w *Window) SetCursorVisible(visible bool) {
|
||||||
func (w *Window) SetCursorDisabled() {
|
func (w *Window) SetCursorDisabled() {
|
||||||
w.cursorVisible = false
|
w.cursorVisible = false
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.SetInputMode(glfw.CursorMode, glfw.CursorDisabled)
|
w.Window.SetInputMode(glfw.CursorMode, glfw.CursorDisabled)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ func (w *Window) CursorVisible() bool {
|
||||||
// Note: must be called inside the main thread.
|
// Note: must be called inside the main thread.
|
||||||
func (w *Window) begin() {
|
func (w *Window) begin() {
|
||||||
if currWin != w {
|
if currWin != w {
|
||||||
w.window.MakeContextCurrent()
|
w.Window.MakeContextCurrent()
|
||||||
currWin = w
|
currWin = w
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -491,6 +491,6 @@ func (w *Window) Canvas() *Canvas {
|
||||||
// already visible or is in full screen mode, this function does nothing.
|
// already visible or is in full screen mode, this function does nothing.
|
||||||
func (w *Window) Show() {
|
func (w *Window) Show() {
|
||||||
mainthread.Call(func() {
|
mainthread.Call(func() {
|
||||||
w.window.Show()
|
w.Window.Show()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue