ToolIOModule.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00043
00044
00045 #include "ToolIOModule.h"
00046 #include "ToolSource.h"
00047 #include "ToolSink.h"
00048
00049
00050
00051 ToolIOModule::ToolIOModule( QTable * out_ ) :
00052 Module(), NodeFactory(), output( out_ ), quit(0)
00053 {
00054 output->setNumRows( 0 );
00055 }
00056
00057
00058
00059 ToolIOModule::~ToolIOModule()
00060 {
00061 sinks.clear();
00062 sources.clear();
00063 }
00064
00065
00066
00067 void ToolIOModule::init(StringTable& attributes, ConfigNode * localTree)
00068 {
00069 Module::init( attributes, localTree );
00070 }
00071
00072
00073
00074 Node * ToolIOModule::createNode( const std::string& name, StringTable& attributes)
00075 {
00076 if( name.compare("ConsoleSink") == 0 || name.compare("ToolSink") == 0 )
00077 {
00078 ToolSink * sink = new ToolSink( attributes.get("comment"));
00079 sinks.push_back( sink );
00080
00081 return sink;
00082 } else if( name.compare("ConsoleSource") == 0 || name.compare("ToolSource") == 0)
00083 {
00084 int number;
00085 if( sscanf( attributes.get("number").c_str()," %i", &number ) == 1 )
00086 {
00087 if( number >= 0 && number < 10 )
00088 {
00089 ToolSource * source = new ToolSource( number );
00090 sources.push_back( source );
00091
00092 return source;
00093 } else
00094 {
00095
00096 }
00097 }
00098 }
00099 return NULL;
00100 }
00101
00102
00103
00104 void ToolIOModule::pullEvent()
00105 {
00106 QString s;
00107 int row;
00108 double diff;
00109 for(NodeVector::iterator it = sinks.begin(); it != sinks.end(); it++ )
00110 {
00111 ToolSink * sink = (ToolSink *)(*it);
00112 if( sink->changed == 1 )
00113 {
00114 row = it - sinks.begin();
00115 Event & event = sink->event;
00116 diff = OSUtils::currentTime() - event.time;
00117 s.sprintf("%f %f %f", event.getPosition()[0],event.getPosition()[1],event.getPosition()[2]);
00118 output->setText( row, 0, s );
00119 s.sprintf("%f %f %f %f", event.getOrientation()[0], event.getOrientation()[1],
00120 event.getOrientation()[2], event.getOrientation()[3] );
00121 output->setText( row, 1, s );
00122 s.sprintf("%hx", event.getButton() );
00123 output->setText( row, 2, s );
00124 s.sprintf("%f", event.getConfidence() );
00125 output->setText( row, 3, s );
00126 s.sprintf("%lf", event.time );
00127 output->setText( row, 4, s );
00128 s.sprintf("%lf", diff );
00129 output->setText( row, 5, s );
00130 sink->changed = 0;
00131 }
00132 }
00133 }
00134
00135
00136
00137 void ToolIOModule::start()
00138 {
00139 output->setNumRows( sinks.size());
00140 QHeader * head = output->verticalHeader();
00141 for(NodeVector::iterator it = sinks.begin(); it != sinks.end(); it++ )
00142 {
00143 ToolSink * sink = (ToolSink *)(*it);
00144 head->setLabel(it - sinks.begin(),sink->comment.c_str());
00145 }
00146 head->adjustSize();
00147 Module::start();
00148 }
00149
00150 void ToolIOModule::close()
00151 {
00152 }
00153
00154 int ToolIOModule::stop()
00155 {
00156 return quit;
00157 }
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173