00001 /*!@file Neuro/SimulationViewerEyeSim.H simulate an eye-tracker recording */ 00002 00003 // //////////////////////////////////////////////////////////////////// // 00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2003 // 00005 // by the University of Southern California (USC) and the iLab at USC. // 00006 // See http://iLab.usc.edu for information about this project. // 00007 // //////////////////////////////////////////////////////////////////// // 00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00010 // in Visual Environments, and Applications'' by Christof Koch and // 00011 // Laurent Itti, California Institute of Technology, 2001 (patent // 00012 // pending; application number 09/912,225 filed July 23, 2001; see // 00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00014 // //////////////////////////////////////////////////////////////////// // 00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00016 // // 00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00018 // redistribute it and/or modify it under the terms of the GNU General // 00019 // Public License as published by the Free Software Foundation; either // 00020 // version 2 of the License, or (at your option) any later version. // 00021 // // 00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00025 // PURPOSE. See the GNU General Public License for more details. // 00026 // // 00027 // You should have received a copy of the GNU General Public License // 00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00030 // Boston, MA 02111-1307 USA. // 00031 // //////////////////////////////////////////////////////////////////// // 00032 // 00033 // Primary maintainer for this file: Laurent Itti <itti@usc.edu> 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Neuro/SimulationViewerEyeSim.H $ 00035 // $Id: SimulationViewerEyeSim.H 10821 2009-02-11 07:32:37Z itti $ 00036 // 00037 00038 #ifndef SIMULATIONVIEWEREYESIM_H_DEFINED 00039 #define SIMULATIONVIEWEREYESIM_H_DEFINED 00040 00041 #include "Component/ModelParam.H" 00042 #include "Neuro/SimulationViewerStd.H" 00043 00044 class EyeHeadController; 00045 00046 //! Simulate an eye-tracker recording 00047 /*! This simulation viewer has for main purpose to output a text file 00048 that is in the same format as what we would get from a human eye 00049 tracker device (.eye file). Thus it allows us to generate and save eye 00050 movement scanpaths that come from the model but are in the same format 00051 as human recordings. In turn, these scanpaths can then be compared to 00052 actual human scanpaths. SimulationViewerEyeSim derived from 00053 SimulationViewerStd and hence inherits all its behavior, simply adding 00054 provision for generating and saving the .eye scanpath files. */ 00055 class SimulationViewerEyeSim : public SimulationViewerStd { 00056 public: 00057 // ###################################################################### 00058 /*! @name Constructors and destructors */ 00059 //@{ 00060 00061 //! Constructor. See ModelComponent.H. 00062 SimulationViewerEyeSim(OptionManager& mgr, 00063 const std::string& descrName = "EyeSim Simulation Viewer", 00064 const std::string& tagName = "SimulationViewerEyeSim"); 00065 00066 //! Destructor 00067 virtual ~SimulationViewerEyeSim(); 00068 00069 //@} 00070 00071 protected: 00072 //! Overload of callback defined in SimulationViewerStd 00073 virtual void 00074 onSimEventWTAwinner(SimEventQueue& q, rutz::shared_ptr<SimEventWTAwinner>& e); 00075 00076 //! Name of a calibrated eye movement file 00077 OModelParam<std::string> itsEyeFname; 00078 00079 //! Period at which eye movement samples should be read in 00080 OModelParam<SimTime> itsEyePeriod; 00081 00082 //! Number of initial eye movement samples before stimulus starts 00083 OModelParam<int> itsEyeTrash; 00084 00085 //! Get started 00086 virtual void start1(); 00087 00088 //! get stopped 00089 virtual void stop1(); 00090 00091 private: 00092 FILE *itsOutFile; 00093 Point2D<int> itsLastEyePos; 00094 }; 00095 00096 #endif 00097 00098 // ###################################################################### 00099 /* So things look consistent in everyone's emacs... */ 00100 /* Local Variables: */ 00101 /* indent-tabs-mode: nil */ 00102 /* End: */