diff --git a/examples/glfw/glfw.go b/examples/glfw/glfw.go index 77988b8..0c40de0 100644 --- a/examples/glfw/glfw.go +++ b/examples/glfw/glfw.go @@ -47,6 +47,10 @@ func main() { log.Fatalf("Error loading canvas GL assets: %v", err) } + window.SetCursorPosCallback(func(w *glfw.Window, xpos float64, ypos float64) { + mx, my = xpos, ypos + }) + // initialize canvas with zero size, since size is set in main loop cv := canvas.New(0, 0, 0, 0) @@ -66,9 +70,13 @@ func main() { } } +var mx, my float64 + func run(cv *canvas.Canvas, w, h float64) { cv.SetFillStyle("#000") cv.FillRect(0, 0, w, h) cv.SetFillStyle("#00F") cv.FillRect(w*0.25, h*0.25, w*0.5, h*0.5) + cv.SetStrokeStyle("#0F0") + cv.StrokeRect(mx-32, my-32, 64, 64) } diff --git a/examples/sdl/sdl.go b/examples/sdl/sdl.go index 735162f..c9caf66 100644 --- a/examples/sdl/sdl.go +++ b/examples/sdl/sdl.go @@ -90,6 +90,8 @@ func main() { if e.Type == sdl.KEYDOWN && e.Keysym.Scancode == sdl.SCANCODE_ESCAPE { running = false } + case *sdl.MouseMotionEvent: + mx, my = float64(e.X), float64(e.Y) case *sdl.WindowEvent: if e.Type == sdl.WINDOWEVENT_CLOSE { running = false @@ -109,9 +111,13 @@ func main() { } } +var mx, my float64 + func run(cv *canvas.Canvas, w, h float64) { cv.SetFillStyle("#000") cv.FillRect(0, 0, w, h) cv.SetFillStyle("#0F0") cv.FillRect(w*0.25, h*0.25, w*0.5, h*0.5) + cv.SetStrokeStyle("#00F") + cv.StrokeRect(mx-32, my-32, 64, 64) }