changeset 293:2b045d5b673b

Add binding for sdl mouse motion event
author Michael Pavone <pavone@retrodev.com>
date Thu, 24 Jul 2014 09:43:18 -0700
parents f73ebc146af9
children d1dc2d70bdfd
files modules/sdl.tp samples/sdl.tp
diffstat 2 files changed, 66 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/modules/sdl.tp	Thu Jul 24 09:43:06 2014 -0700
+++ b/modules/sdl.tp	Thu Jul 24 09:43:18 2014 -0700
@@ -181,6 +181,39 @@
 			oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
 			oi32 num!: (mouseButEvent y)
 			mcall: y! 2 empty oi32
+			empty
+		}
+
+		llMessage: populateMouseMotionEvent withVars: {
+			eventPtr <- cpointer ptr
+			empty <- object ptr
+			mouseMotEvent <- SDL_MouseMotionEvent ptr
+			ou32 <- obj_uint32 ptr
+			oi32 <- obj_int32 ptr
+		} andCode: :eventPtr empty {
+			mouseMotEvent <- eventPtr val
+			ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
+			ou32 num!: (mouseMotEvent windowID)
+			mcall: windowID! 2 empty ou32
+			ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
+			ou32 num!: (mouseMotEvent which)
+			mcall: mouseID! 2 empty ou32
+			ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
+			ou32 num!: (mouseMotEvent state)
+			mcall: buttonState! 2 empty ou32
+			oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
+			oi32 num!: (mouseMotEvent x)
+			mcall: x! 2 empty oi32
+			oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
+			oi32 num!: (mouseMotEvent y)
+			mcall: y! 2 empty oi32
+			oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
+			oi32 num!: (mouseMotEvent xrel)
+			mcall: xRel! 2 empty oi32
+			oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
+			oi32 num!: (mouseMotEvent yrel)
+			mcall: yRel! 2 empty oi32
+			empty
 		}
 	}
 
@@ -303,6 +336,33 @@
 	_eventConstructors set: (_events mouseDown) mouseButtonEvent
 	_eventConstructors set: (_events mouseUp) mouseButtonEvent
 
+	_eventConstructors set: (_events mouseMotion) :typ tstamp eventPtr {
+		_helper populateMouseMotionEvent: eventPtr #{
+			type <- typ
+			timeStamp <- tstamp
+			windowID <- 0u32
+			mouseID <- 0u32
+			buttonState <- 0u32
+			x <- 0
+			y <- 0
+			xRel <- 0
+			yRel <- 0
+		}
+	}
+
+	/*
+	_eventConstructors set: (_events mouseWheel) :type tstamp eventPtr {
+		_helper populateMouseWheelEvent: eventPtr #{
+			type <- typ
+			timeStamp <- tstamp
+			windowID <- 0u32
+			mouseID <- 0u32
+			x <- 0
+			y <- 0
+		}
+	}
+	*/
+
 	_makeTexture <- :rendptr texptr {
 		#{
 			includeSystemHeader: "SDL.h"
--- a/samples/sdl.tp	Thu Jul 24 09:43:06 2014 -0700
+++ b/samples/sdl.tp	Thu Jul 24 09:43:18 2014 -0700
@@ -9,6 +9,7 @@
 		keyUp
 		mouseDown
 		mouseUp
+		mouseMotion
 	] from: (sdl eventTypes)
 	main <- {
 		if: (sdl init: (video or timer)) = 0 {
@@ -42,7 +43,11 @@
 												print: "Key event for: " . (ev keyChar) . ", pressed?: " . (ev pressed?) . "\n"
 											} else: {
 												if: (ev type) = mouseDown || (ev type) = mouseUp {
-													print: "Mouse event at: " . (ev x) . ", " . (ev y) . " for button " . (ev button) . "\n"
+													print: "Mouse button event at: " . (ev x) . ", " . (ev y) . " for button " . (ev button) . "\n"
+												} else: {
+													if: (ev type) = mouseMotion {
+														print: "Mouse motion event: " . (ev xRel) . ", " . (ev yRel) . "\n"
+													}
 												}
 											}
 										}