Mercurial > repos > tabletprog
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" + } } } }