mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 13:07:26 +01:00
glwf: Implement SetIcon
This commit is contained in:
parent
efc7225ee1
commit
947fbe0a2e
@ -16,6 +16,7 @@ package glfw
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"image"
|
"image"
|
||||||
|
"image/draw"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
@ -23,6 +24,21 @@ import (
|
|||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type glfwVidMode struct {
|
||||||
|
width int32
|
||||||
|
height int32
|
||||||
|
redBits int32
|
||||||
|
greenBits int32
|
||||||
|
blueBits int32
|
||||||
|
refreshRate int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type glfwImage struct {
|
||||||
|
width int32
|
||||||
|
height int32
|
||||||
|
pixels uintptr
|
||||||
|
}
|
||||||
|
|
||||||
type glfwWindows map[uintptr]*Window
|
type glfwWindows map[uintptr]*Window
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -57,15 +73,6 @@ func (w glfwWindows) get(win uintptr) *Window {
|
|||||||
return ww
|
return ww
|
||||||
}
|
}
|
||||||
|
|
||||||
type glfwVidMode struct {
|
|
||||||
width int32
|
|
||||||
height int32
|
|
||||||
redBits int32
|
|
||||||
greenBits int32
|
|
||||||
blueBits int32
|
|
||||||
refreshRate int32
|
|
||||||
}
|
|
||||||
|
|
||||||
type Monitor struct {
|
type Monitor struct {
|
||||||
m uintptr
|
m uintptr
|
||||||
}
|
}
|
||||||
@ -197,10 +204,20 @@ func (w *Window) SetScrollCallback(cbfun ScrollCallback) (previous ScrollCallbac
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *Window) SetIcon(images []image.Image) {
|
func (w *Window) SetIcon(images []image.Image) {
|
||||||
// TODO: Implement this
|
gimgs := make([]glfwImage, len(images))
|
||||||
|
defer runtime.KeepAlive(gimgs)
|
||||||
|
|
||||||
// glfwDLL.call("glfwSetWindowIcon", w.w, l, p)
|
for i, img := range images {
|
||||||
// panicError()
|
b := img.Bounds()
|
||||||
|
m := image.NewNRGBA(image.Rect(0, 0, b.Dx(), b.Dy()))
|
||||||
|
draw.Draw(m, m.Bounds(), img, b.Min, draw.Src)
|
||||||
|
gimgs[i].width = int32(b.Dx())
|
||||||
|
gimgs[i].height = int32(b.Dy())
|
||||||
|
gimgs[i].pixels = uintptr(unsafe.Pointer(&m.Pix[0]))
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwDLL.call("glfwSetWindowIcon", w.w, uintptr(len(gimgs)), uintptr(unsafe.Pointer(&gimgs[0])))
|
||||||
|
panicError()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Window) SetInputMode(mode InputMode, value int) {
|
func (w *Window) SetInputMode(mode InputMode, value int) {
|
||||||
|
Loading…
Reference in New Issue
Block a user