mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-13 22:47:26 +01:00
b359985e97
Many of the structs found in internal.h (internal_windows.go) contain defines such as GLFW_WIN32_WINDOW_STATE which gets replaced with a struct defined in win32platform_windows.go (win32_platform.h). Originally, these structs where directly placed inside of internal_windows.go. However, to make it easier to add macOS and Linux these cannot be in this file. This commit separates the windows specific structs into the respective windows file and updates the field to be named state. Updates #2546
229 lines
4.8 KiB
Go
229 lines
4.8 KiB
Go
// SPDX-License-Identifier: Zlib
|
|
// SPDX-FileCopyrightText: 2002-2006 Marcus Geelnard
|
|
// SPDX-FileCopyrightText: 2006-2019 Camilla Löwy
|
|
// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
|
|
|
|
package goglfw
|
|
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
const (
|
|
_GLFW_INSERT_FIRST = 0
|
|
_GLFW_INSERT_LAST = 1
|
|
)
|
|
|
|
var _glfw library
|
|
|
|
type initconfig struct {
|
|
hatButtons bool
|
|
}
|
|
|
|
type wndconfig struct {
|
|
width int
|
|
height int
|
|
title string
|
|
resizable bool
|
|
visible bool
|
|
decorated bool
|
|
focused bool
|
|
autoIconify bool
|
|
floating bool
|
|
maximized bool
|
|
centerCursor bool
|
|
focusOnShow bool
|
|
scaleToMonitor bool
|
|
}
|
|
|
|
type ctxconfig struct {
|
|
client int
|
|
source int
|
|
major int
|
|
minor int
|
|
forward bool
|
|
debug bool
|
|
noerror bool
|
|
profile int
|
|
robustness int
|
|
release int
|
|
share *Window
|
|
}
|
|
|
|
type fbconfig struct {
|
|
redBits int
|
|
greenBits int
|
|
blueBits int
|
|
alphaBits int
|
|
depthBits int
|
|
stencilBits int
|
|
accumRedBits int
|
|
accumGreenBits int
|
|
accumBlueBits int
|
|
accumAlphaBits int
|
|
auxBuffers int
|
|
stereo bool
|
|
samples int
|
|
sRGB bool
|
|
doublebuffer bool
|
|
transparent bool
|
|
handle uintptr
|
|
}
|
|
|
|
type context struct {
|
|
client int
|
|
source int
|
|
major int
|
|
minor int
|
|
revision int
|
|
forward bool
|
|
debug bool
|
|
noerror bool
|
|
profile int
|
|
robustness int
|
|
release int
|
|
|
|
// TODO: Put these functions in an interface type.
|
|
makeCurrent func(*Window) error
|
|
swapBuffers func(*Window) error
|
|
swapInterval func(int) error
|
|
extensionSupported func(string) bool
|
|
getProcAddress func(string) uintptr
|
|
destroy func(*Window) error
|
|
|
|
platform platformContextState
|
|
}
|
|
|
|
type (
|
|
PosCallback func(w *Window, xpos int, ypos int)
|
|
SizeCallback func(w *Window, width int, height int)
|
|
CloseCallback func(w *Window)
|
|
RefreshCallback func(w *Window)
|
|
FocusCallback func(w *Window, focused bool)
|
|
IconifyCallback func(w *Window, iconified bool)
|
|
MaximizeCallback func(w *Window, iconified bool)
|
|
FramebufferSizeCallback func(w *Window, width int, height int)
|
|
ContentScaleCallback func(w *Window, x float32, y float32)
|
|
MouseButtonCallback func(w *Window, button MouseButton, action Action, mods ModifierKey)
|
|
CursorPosCallback func(w *Window, xpos float64, ypos float64)
|
|
CursorEnterCallback func(w *Window, entered bool)
|
|
ScrollCallback func(w *Window, xoff float64, yoff float64)
|
|
KeyCallback func(w *Window, key Key, scancode int, action Action, mods ModifierKey)
|
|
CharCallback func(w *Window, char rune)
|
|
CharModsCallback func(w *Window, char rune, mods ModifierKey)
|
|
DropCallback func(w *Window, names []string)
|
|
MonitorCallback func(monitor *Monitor, event PeripheralEvent)
|
|
)
|
|
|
|
type Window struct {
|
|
resizable bool
|
|
decorated bool
|
|
autoIconify bool
|
|
floating bool
|
|
focusOnShow bool
|
|
shouldClose bool
|
|
userPointer unsafe.Pointer
|
|
doublebuffer bool
|
|
videoMode VidMode
|
|
monitor *Monitor
|
|
cursor *Cursor
|
|
|
|
minwidth int
|
|
minheight int
|
|
maxwidth int
|
|
maxheight int
|
|
numer int
|
|
denom int
|
|
|
|
stickyKeys bool
|
|
stickyMouseButtons bool
|
|
lockKeyMods bool
|
|
cursorMode int
|
|
mouseButtons [MouseButtonLast + 1]Action
|
|
keys [KeyLast + 1]Action
|
|
// Virtual cursor position when cursor is disabled
|
|
virtualCursorPosX float64
|
|
virtualCursorPosY float64
|
|
rawMouseMotion bool
|
|
|
|
context context
|
|
|
|
callbacks struct {
|
|
pos PosCallback
|
|
size SizeCallback
|
|
close CloseCallback
|
|
refresh RefreshCallback
|
|
focus FocusCallback
|
|
iconify IconifyCallback
|
|
maximize MaximizeCallback
|
|
fbsize FramebufferSizeCallback
|
|
scale ContentScaleCallback
|
|
mouseButton MouseButtonCallback
|
|
cursorPos CursorPosCallback
|
|
cursorEnter CursorEnterCallback
|
|
scroll ScrollCallback
|
|
key KeyCallback
|
|
character CharCallback
|
|
charmods CharModsCallback
|
|
drop DropCallback
|
|
}
|
|
|
|
platform platformWindowState
|
|
}
|
|
|
|
type Monitor struct {
|
|
name string
|
|
|
|
window *Window
|
|
|
|
modes []*VidMode
|
|
|
|
platform platformMonitorState
|
|
}
|
|
|
|
type Cursor struct {
|
|
platform platformCursorState
|
|
}
|
|
|
|
type tls struct {
|
|
platform platformTLSState
|
|
}
|
|
|
|
type library struct {
|
|
initialized bool
|
|
|
|
hints struct {
|
|
init initconfig
|
|
framebuffer fbconfig
|
|
window wndconfig
|
|
context ctxconfig
|
|
refreshRate int
|
|
}
|
|
|
|
errors []error // TODO: Check the error at polling?
|
|
cursors []*Cursor
|
|
windows []*Window
|
|
|
|
monitors []*Monitor
|
|
|
|
contextSlot tls
|
|
|
|
callbacks struct {
|
|
monitor MonitorCallback
|
|
}
|
|
|
|
platformWindow platformLibraryWindowState
|
|
platformContext platformLibraryContextState
|
|
}
|
|
|
|
func boolToInt(x bool) int {
|
|
if x {
|
|
return 1
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func intToBool(x int) bool {
|
|
return x != 0
|
|
}
|