# HG changeset patch # User Michael Pavone # Date 1406220198 25200 # Node ID 2b045d5b673b800fe11e94b8eab68ff6c7230ae0 # Parent f73ebc146af95e51c677df4a69f3d0d3d37a978a Add binding for sdl mouse motion event diff -r f73ebc146af9 -r 2b045d5b673b modules/sdl.tp --- 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" diff -r f73ebc146af9 -r 2b045d5b673b samples/sdl.tp --- 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" + } } } }