milkbucket/main.go

68 lines
1.2 KiB
Go

package main
/*
#cgo CFLAGS: -I/home/nick/Downloads/include
#cgo LDFLAGS: -L/home/nick/.local/lib -lprojectM-4
#include "projectM-4/projectM.h"
*/
import "C"
import (
"github.com/veandco/go-sdl2/sdl"
)
func handleWindowEvent(event *sdl.WindowEvent, handle C.projectm_handle) {
switch event.Event {
case sdl.WINDOWEVENT_RESIZED:
w, h := event.Data1, event.Data2
C.projectm_set_window_size(handle, C.ulong(w), C.ulong(h))
}
}
func handleEvent(event sdl.Event, handle C.projectm_handle) bool {
switch event.(type) {
case *sdl.QuitEvent:
return false
case *sdl.WindowEvent:
event := event.(*sdl.WindowEvent)
handleWindowEvent(event, handle)
}
return true
}
func main() {
err := sdl.Init(sdl.INIT_VIDEO)
if err != nil {
panic(err)
}
defer sdl.Quit()
m, err := newMilkDropWindow(800, 600)
if err != nil {
panic(err)
}
defer m.destroy()
m.loadPreset("/usr/share/projectM/presets/presets_stock/Zylot - Wisps.milk")
running := true
for running {
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
running = handleEvent(event, m.handle)
if !running {
break
}
}
if !running {
break
}
running, err = m.render()
if err != nil {
panic(err)
}
}
}