<?xml version="1.0" ?>
<pipeline ssi-v="1">

	<!-- Plug-ins
	
	Register plug-ins.
	
	-->
	<register>		
		<load name="mouse"/>
		<load name="graphic"/>
	</register>

	<!-- Sensor 
	
	By setting event to true we instruct the sensor to fire an
	event each time the left mouse button was pressed and released again.
	
	-->
	<sensor create="Mouse:mouse" sr="50.0" mask="1" event="true" address="click@mouse">		
		<output channel="cursor" pin="pos" />
	</sensor>
	
	<!-- Events
	
	Calculate mean cursor position
	
	-->
	<consumer create="StringEventSender" address="mean@string">
		<input pin="pos" address="click@mouse"/>
	</consumer>
	<consumer create="TupleEventSender" address="mean@tuple">
		<input pin="pos" address="click@mouse"/>
	</consumer>
	<consumer create="MapEventSender" keys="x,y" address="mean@map">
		<input pin="pos" address="click@mouse"/>
	</consumer>

	<!-- Visualization 	

	Visualize cursor movement only when the left mouse button was pressed.

	-->
	<consumer create="SignalPainter:plot" title="CURSOR">
		<input pin="pos" address="click@mouse" state="completed"/>		
	</consumer>		

	<!-- Event monitor
	
	Shows a list of all previous events in the last 10 seconds.
		
	-->	
	<object create="EventMonitor:monitor" title="CLICKS">
		<listen address="mean@" span="5s" />		
	</object>		
	
	<!-- Decoration -->
	<object create="Decorator" icon="true" title="Pipeline">
		<area pos="0,0,400,600">console</area>
		<area pos="400,0,400,300">plot</area>
		<area pos="400,300,400,300">monitor</area>
	</object>

</pipeline>