Differences between revisions 32 and 34 (spanning 2 versions)
Revision 32 as of 2017-05-19 07:58:56
Size: 3527
Revision 34 as of 2017-05-19 08:53:00
Size: 3556
Deletions are marked like this. Additions are marked like this.
Line 59: Line 59:
class CCalibrator;
Line 66: Line 68:
Line 86: Line 89:
In PreProcessTrial: In !PreProcessTrial:
Line 92: Line 95:
In PostProcessTrial: In !PostProcessTrial:

Design Concepts

1. doxygen generated API reference

The automatically generated class reference can be read at this location. It has been generated with the doxygen tool.

2. Using Font Primitives

nrec uses a special bitmap file format (.bmf) for fonts. There is a command line tool called ttf2bmf that can be used to convert ttf font files into bmf files. The font size specified defines the file size and the resolution of the font bitmaps and defaults to 12. The program, its source code and some example files are located in the folder run/Fonts.


./ttf2bmf fontfile outputfile [fontsize]


$ ./ttf2bmf LucidaTypewriterRegular.ttf default.bmf 24
./ttf2bmf: Wrote default.bmf, 256 by 256 pixels.
$ ./ttf2bmf LucidaTypewriterRegular.ttf default.bmf 10
./ttf2bmf: Wrote default.bmf, 256 by 64 pixels.
$ ./ttf2bmf LucidaTypewriterRegular.ttf default.bmf 48
./ttf2bmf: Wrote default.bmf, 256 by 1024 pixels.
$ ./ttf2bmf LucidaTypewriterRegular.ttf default.bmf
./ttf2bmf: Wrote default.bmf, 256 by 128 pixels.

3. Understanding the logger mechanism

The Logger is used to transfer messages between different threads running at different priority. Here is an illustration on how it works and an example of a LogReader implementation.

4. Understanding the plotting mechanism

The Plotting is used to handle the data plot windows containing qwt plots and streaming data into them. Here is an illustration on how it works.

5. FlowCondFixation and all it's actions


6. PrimitiveControllerColorChangeOnStatus and it's timing


7. To have a paradigm access the eye recording of the previous trial

In the header file:

class CCalibrator;
 * Calibrator object is needed to read in the analog samples after the trial.
CCalibrator* m_poCalibrator;

In the cpp file:

In the includes:

#include "CCalibrator.h"

In the constructor:

 : IParadigm( oParameters ),
    m_poCalibrator( NULL ),
// create simple calibrator object w/o initialization to post-trial read analog values 
m_poCalibrator = new CCalibrator();

In the destructor:

// Delete calibrator object.
delete m_poCalibrator;

In PreProcessTrial:

// Tell the calibration data object the trial's recording process
m_poCalibrator->PrepareTrial( poTrial->GetRecordingId() );

In PostProcessTrial:

// get all analog input samples from calibrator (channel 1)
std::vector< double > vecAInSamples;
vecAInSamples = m_poCalibrator->GetSamples( -1., -1., 1 );
// get analog samples from a certain channel and time interval
std::vector< double > CCalibrator::GetSamples( double dStartTime, double dStopTime, int iChannel )
// get calibrated eye positions
std::vector< std::vector< double > > CCalibrator::GetSamplesCalibrated( double dStartTime, double dStopTime )
// get maximum tangential velocity (in deg/s)
double CCalibrator::GetMaximumVelocity( double dStartTime, double dStopTime )

nrec: DesignInformation (last edited 2017-05-19 08:53:00 by FriedemannBunjes)