factor/extra/processing/gadget/gadget.factor

70 lines
1.5 KiB
Factor
Raw Normal View History

2008-04-06 17:36:12 -04:00
USING: kernel namespaces combinators
ui.gestures accessors ui.gadgets.frame-buffer ;
2008-04-06 17:36:12 -04:00
IN: processing.gadget
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: processing-gadget < frame-buffer button-down button-up key-down key-up ;
2008-04-06 17:36:12 -04:00
: <processing-gadget> ( -- gadget ) processing-gadget new-frame-buffer ;
2008-04-06 17:36:12 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SYMBOL: mouse-pressed-value
SYMBOL: key-pressed-value
SYMBOL: button-value
SYMBOL: key-value
: key-pressed? ( -- ? ) key-pressed-value get ;
: mouse-pressed? ( -- ? ) mouse-pressed-value get ;
: key ( -- key ) key-value get ;
: button ( -- val ) button-value get ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2008-08-27 17:24:04 -04:00
M: processing-gadget handle-gesture ( gesture gadget -- ? )
swap
2008-04-06 17:36:12 -04:00
{
{
[ dup key-down? ]
[
2008-09-02 13:35:24 -04:00
sym>> key-value set
2008-04-06 17:36:12 -04:00
key-pressed-value on
key-down>> dup [ call ] [ drop ] if
t
]
}
{
[ dup key-up? ]
[
key-pressed-value off
drop
key-up>> dup [ call ] [ drop ] if
t
] }
{
[ dup button-down? ]
[
2008-09-02 13:35:24 -04:00
#>> button-value set
2008-04-06 17:36:12 -04:00
mouse-pressed-value on
button-down>> dup [ call ] [ drop ] if
t
]
}
{
[ dup button-up? ]
[
mouse-pressed-value off
drop
button-up>> dup [ call ] [ drop ] if
t
]
}
{ [ t ] [ 2drop t ] }
}
2008-09-02 13:35:24 -04:00
cond ;