ChangeLog
====================

GazeParser 0.11.1
----------------------

(released 2019/04/24)

* CHANGED GazeParser
    - FIXED: Bug in calcurating threshold for Microsaccade detection is fixed.
    - FIXED: Bug in getCameraImageSize() is fixed.
    - FIXED: "config" option is added to Dummy backend of GazeParser.TrackingTools.

    .. note:: SimpleGazeTracker 0.11.1 is not released.  Please use SimpleGazeTracker 0.11.0.


GazeParser 0.11.0
----------------------

(released 2018/08/27)

* CHANGED GazeParser
    * CHANGED: GazeParser supports both Python 2 and 3. (Tested on Python 2.7 and 3.6)
    * CHANGED: GazeParser.TrackingTools no longer supoorts VisionEgg-backend.  Only PsychoPy is supported.
    * CHANGED: EyelinkToGazeParser() and TobiiToGazeParser() are removed from GazeParser.Converter
* CHANGED GazeParser PsychoPy components
    * CHANGED: PsychoPyComponent supports PsychoPy 1.90.0 or later.
    * CHANGED: PsychoPyComponent no longer supports PsychoPy older than 1.84.0.
* CHANGED: SimpleGazeTracker
    * CHANGED: Dialog for camera setup guide is shown at the first run.
    * CHANGED: HTML help can be opened by "H" key.

GazeParser 0.10.0
----------------------

(released 2016/09/30)

* CHANGED: GazeParser.TrackingTools
    * ADDED: Manual calibration mode is added.
* CHANGED: SimpleGazeTracker
    * ADDED: Manual calibration mode is added.
* ADDED: **DirectShow edition** is added to support DirectShow cameras (2017/03/03).

GazeParser 0.9.0
----------------------

(released 2015/10/08)

* CHANGED: SimpleGazeTracker
    - ADDED: Linux version of FlyCapture2 edition is released. Name of executable file is **sgtsrv-flycap**.
    - ADDED: Camera image can be saved by pressing "I" key during preview.
    - ADDED: Camera image can be viewed during recording by pressing "L" key. Note that performance of SimpleGazeTracker degrades by drawing camera image.
    - ADDED: Error dialog is shown when initialization of SimpleGazeTracker is failed. Configuration directory can be opened from the dialog.
* ADDED: GazeParser
    - setup_for_psychopy.py script is added to help installing GazeParser to Standalone PsychoPy.
* CHANGED: Data Viewer
    - Default data viewer is replaced with wxPython-based version. Previous (Tkinter-based) viewer is available as GazeParser/app/tk_Viewer.py.
* CHANGED: GazeParser.TrackingTools
    - ADDED: Camera image can be saved by pressing "I" key during preview.
    - FIXED: getEyePosition() and getEyePositionList() did not work in the dummy mode.

GazeParser 0.8.2
----------------------

(released 2015/06/03)

* ADDED: New Data Viewer
    - ADDED: Prototype version of a new, wxPython-based data viewer is added.
* CHANGED: SimpleGazeTracker
    - ADDED: A new command "getCameraImageSize" is added.
    - CHANGED: Camera mode is changed from GrayscaleMode to MJPEGMode in order to improve performance on V120slim (OptiTrack edition).
* CHANGED: GazeParser.TrackingTools
    - ADDED: :func:`~GazeParser.TrackingTools.BaseController.getCameraImageSize` and :func:`~GazeParser.TrackingTools.BaseController.fitImageBufferToTracker` are added to fit size of the preview image buffer to SimpleGazeTracker's camera image buffer.
    - ADDED: :func:`~GazeParser.TrackingTools.BaseController.setCurrentScreenParamsToConfig` is added to set current screen parameters to GazeParser's configuration.
* CHANGED: PsychoPyComponents
    - ADDED: GazeParserGetPos component is added to get the latest gaze position data.
    - ADDED: A new option "Fit Preview Buffer" is added.
    - CHANGED: TRACKER_ORIGIN, VIEWING_DISTANCE, DOTS_PER_CENTIMETER_H and DOTS_PER_CENTIMETER_V are supported by "Use Monitor Info" option.
    - CHANGED: GazeParserRec component outputs "sync_rec" message to PsychoPy's log file.
    - CHANGED: GazeParserMessage component outputs event log.
    - FIXED: "Message (Start)" and "Message (End)" can be set to "set every repeat".
    - FIXED: "Mode" option of GazeParserInit component did not work properly.


GazeParser 0.8.1
----------------------

(released 2015/03/25)

* CHANGED: SimpleGazeTracker
    - CHANGED: "MINPOINTS" and "MAXPOINTS" are removed automatically from the CONFIG file. You don't have to edit CONFIG file manually. Note that values of these parameters are lost.
* CHANGED: PsychoPyComponents
    - ADDED: A new option is added to GazeParserInit to toggle sending PsychcoPy's monitor settings to SimpleGazeTracker.
    - CHANGED: Time gap between SimpleGazeTracker and experiments built with PsychoPyComponent is reduced.
    - CHANGED: Unnecessary log messages generated by PsychoPyComponents are suppressed.
    - CHANGED: GazeParserRec component sends a 'rec_sync' message when initialization of recording is finished.
    - CHANGED: Default parameters of PsychoPy Components are modified.
* FIXED: GazeParser.Configuration
    - FIXED: getParametersAsDict didn't return current values but default values.
* FIXED: GazeParser.TrackingTools
    - FIXED: Units of current gaze position was not properly converted to 'pix'.

    .. note:: PsychoPyComponents included in 0.8.1 cannot be used with current version of PsychoPy (1.82.01). Please download `Components0.8.1-PsychoPy1.82.01.zip <http://sourceforge.net/projects/gazeparser/files/0.8.1/GazeParser-0.8.1/Components0.8.1-PsychoPy1.82.01.zip/download>`_.


GazeParser 0.8.0
----------------------

(released 2015/03/14)

* CHANGED: SimpleGazeTracker
    - CHANGED: Width and height are used to select pupil candidate instead of contour length. Use MIN_PUPIL_WIDTH and MAX_PUPIL_WIDTH to specify acceptable pupil size (unit is percentage of ROI width)
    - CHANGED: Percentage of dark pixels in pupil candidates are checked to improve pupil detection.
    - CHANGED: Calibration results are output to data file.
    - CHANGED: "MINPOINTS" and "MAXPOINTS" options are obsolete in this version.
    - ADDED: "saveCalValResultsDetail" command is added to save raw calibration data.
* CHANGED GazeParser.Core:
    - ADDED: checkVersion option to :func:`GazeParser.Utility.load`.
    - ADDED: :class:`GazeParser.Core.CalPointData` is added to hold calibration data.
    - CHANGED: Data attribute 'CalPointData' is added to :class:`GazeParser.Core.GazeData`.
* CHANGED GazeParser.Converter:
    - :func:`GazeParser.Converte.TrackerToGazeParser` supports calibration precision/accuracy data of SimpleGazeTracker 0.8.0.
* CHANGED: GazeParser.TrackingTools
    - Raw calibration/validation data can be saved to SimpleGazeTracker data file (GazeParser.TrackingTools).
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - fix error in combining data files (Viewer.py).
* ADDED: Custom components for PsychoPy Builder


GazeParser 0.7.0
----------------------

(released 2014/08/12)

* CHANGED: SimpleGazeTracker
    - ADDED: Measurement Computing's USB-IO units are supported. The "Universal Library" is used on Windows, and the "DAQFlex" is used on Linux.
    - ADDED: New parameters, USBIO_BOARD, USBIO_AD, USBIO_DI and USB_USE_THREAD are added to SimpleGazeTracker configuration file.
    - CHANGED: Version of libraries are updated: OpenCV2.4.9, FlyCapture2.6.3.4, OptiTrack CameraSDK 1.5.1.
    - FIXED: Decimation method is fixed in SimpleGazeTracker Optitrack edition.
    - FIXED: Set IRFilter=true in SimpleGazeTracker Optitrack edition.
* CHANGED GazeParser.Core:
    - ADDED: Support USB-IO data recorded by SimpleGazeTracker.
* CHANGED GazeParser.Converter:
    - ADDED: Support USB-IO data recorded by SimpleGazeTracker.
* CHANGED: GazeParser.TrackingTools
    - FIXED: Pillow is supported.
    - FIXED: 'units' option is removed from setPos() from :class:`GazeParser.TrackingTools.ControllerPsychoPyBackend`.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - FIXED: Pillow is supported.
    - FIXED: Previous directory is set to initial directory of the File dialogs (open, save...).
    - FIXED: Hide 'Exit' menu of ConfigEditor to prevent closing data viewer when configuration dialog is opened from the viewer.


GazeParser 0.6.6
----------------------

(released 2013/12/10)

* CHANGED: SimpleGazeTracker
    - CHANGED: Parameter directory and data directory can be changed with using command line option. Please see :ref:`sgt-commandline-option` for detail.
    - CHANGED: Source files for Windows and Linux were integrated.
    - CHANGED: GPC5300 edition supports WOW64 envirionment. This means that GPC5300 edition can run on **64bit Windows 7/8**.
    - CHANGED: OptiTrack CameraSDK is used instead of OptiTrack 2D SDK to build OptiTrack edition. Thanks to this modification, OptiTrack edition can run on **64bit Windows 8**.
* CHANGED: GazeParser.Core:
    - ADDED: Data attribute named 'recordingDate' is added, that holds when the data was recorded.
* CHANGED: GazeParser.Configuration:
    - ADDED: "RESAMPLING" option is added to control data resampling during data conversion See :ref:`resampling_data` for detail.
* CHANGED: GazeParser.Converter:
    - CHANGED: Data resampling is supported.
* CHANGED: GazeParser.TrackingTools
    - CHANGED: Default calibration target is filled because the target was not properly drawn on some graphic cards (PsychoPyBackend).
* CHANGED: GazeParser.Utility:
    - ADDED: :func:`~GazeParser.Utility.compareVersion`, :func:`~GazeParser.Utility.checkAttributes` and :func:`~GazeParser.Utility.rebuildData` are added to load data that were converted with older versions of GazeParser.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - CHANGED: Parameters can be exported from "Convert SimpleGazeTracker CSV" dialog.
    - CHANGED: Checkmark is drawn on [View] menu to indicate current plot mode.
    - CHANGED: Only number of converted files is displayed when more than 16 files are converted at once.
    - CHANGED: Data viewer tries to rebuild old data if it doesn't have newly added attributes.
    - FIXED: "saveas" is called if name is not specified. (ConfigEditor)
    - FIXED: Data export didn't work correctly.
    - FIXED: Aspect ratio T-XY plot was not correctly updated.
    - FIXED: Stimulus image was not correctly rendered.


GazeParser 0.6.5
----------------------

(released 2013/05/31)

* CHANGED: SimpleGazeTracker
    - ADDED: SimpleGazeTracker GPC5300 edition supports *camera-specific data*. Status if digital input port on the interface board is output to the data file.
    - ADDED: A new parameter, BLUR_FILTER_SIZE, is added to SimpleGazeTracker FlyCapture2 edition to reduce image noize.
    - CHANGED: Calibration results summary is simplified.
    - CHANGED: Default installation directory of sgtsrv is change to /usr/local/bin. Default installation directory of configuration files (CONFIG, CONFIG_OPENCV) and font file (FreeSans.ttf) are changed to /usr/local/lib/simplegazetracker.
    - CHANGED: SimpleGazeTracker tries to find configurations file in the directory where executable binary is installed at first. Then, tries to find them in /usr/local/lib/simplegazetracker, /usr/lib/simplegazetracker and finally in the current directory.
    - CHANGED: SimpleGazeTracker tries to find font file in the directory where executable binary is installed at first. Then, tries to find them in /usr/local/lib/simplegazetracker, /usr/share/fonts/truetype/freefont and finally in the current directory.
    - FIXED: Several bugs are fixed.
* CHANGED: GazeParser.TrackingTools
    - CHANGED: Calibration results summary is simplified.
    - CHANGED: Validation checks whether calibration has been performed or not. If calibration has not been performed, validation is not started.
    - FIXED: :func:`~GazeParser.TrackingTools.BaseController.verifyFixation` crashed because :func:`~GazeParser.TrackingTools.ControllerVisionEggBackend.getSpatialError` did not support 'ma' option.
    - FIXED: 'units' option of :func:`~GazeParser.TrackingTools.ControllerPsychoPyBackend.getSpatialError` did not work properly.
* CHANGED: GazeParser.Converter
    - ADDED: :func:`~GazeParser.Converter.TrackerToGazeParser` supports camera-specific data.
* CHANGED: GazeParser.Core
    - ADDED: Data attribute named 'CameraSpecificData' is added to store camera-specific data. :func:`~GazeParser.Core.GazeData.hasCameraSpecificData` is added to test whether the data has camera-specific data.
    - ADDED: :func:`~GazeParser.Core.GazeData.findIndexFromTime` is added to get index of sample that is nearest to the time given by the argument.

GazeParser 0.6.4
----------------------

(released 2013/03/29)

* CHANGED: SimpleGazeTracker
    - ADDED: Thread-mode is adde to SimpleGazeTracker FlyCapture2 edition. "USE_THREAD" option is added to select threading or non-threading mode. SLEEP_DURATION option is added to save CPU resource when FPS is low.
    - ADDED: "getEyePositionList" command is added to get a list of latest gaze position data during recording.
    - ADDED: "getWholeEyePositionList" and "getWholeMessageList" commands are added to transfer data at the end of each recording.
    - ADDED: "isBinocularMode" command is added to check recording mode.
    - CHANGED; A new option is added to "getEyePosition" command to get moving-average of gaze position. **This command is not compatible with previous versions of GazeParser.TrackingTools**.
    - CHANGED: Log messages are added.
    - CHANGED: initCamera() and saveCameraParameters() are changed to receive no arguments.
    - CHANGED: Name of executable file is changed from simplegazetracker to sgtsrv (Linux, MacOS X).
    - FIX: Application was not properly closed when running in non-thread mode (OpenCV Edition).
    - FIX: Command after "insertSettings" was ignored.
    - FIX: Message buffer was not correctly initialized at the begining of recording.
* CHANGED: GazeParser.TrackingTools
    - ADDED: Following methods are added to support new functions of SimpleGazeTracker.
        - :func:`~GazeParser.TrackingTools.BaseController.getEyePositionList`
        - :func:`~GazeParser.TrackingTools.BaseController.getWholeEyePositionList`
        - :func:`~GazeParser.TrackingTools.BaseController.getWholeMessageList`
        - :func:`~GazeParser.TrackingTools.BaseController.isBinocularMode`
    - ADDED: :func:`~GazeParser.TrackingTools.BaseController.isDummy` is added to check whether tracker is running in dummy mode or not.
    - CHANGED: A new option "ma" is added to :func:`~GazeParser.TrackingTools.BaseController.verifyFixation` and :func:`~GazeParser.TrackingTools.ControllerVisionEggBackend.getEyePosition`.
    - FIX: getCalibrationResults, getCalibrationResultsDetail and getEyePosition failed when non-float value was received.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - FIX: Latency data could not be exported.

GazeParser 0.6.3
----------------------

(released 2013/02/21)

* CHANGED: SimpleGazeTracker
    - ADDED: **FlyCapture2 edition** is added to support `Point Grey Flea3 USB3.0 camera (FL3-U3-13Y3M-C) <http://ww2.ptgrey.com/USB3/Flea3>`_. Currently, this edition runs only on Windows.
    - CHANGED: Windows Installers of SimpleGazeTracker for Windows are build by VisualStudio 2010 and OpenCV 2.4.3.
    - CHANGED: Camera image is visible during performing getSpatialError(). This will help adjusting camera settings when getSpatialError() fails.
    - CHANGED: SimpleGazeTracker checks CONFIG and copy default CONFIG when CONFIG is not found.
    - CHANGED: Detailed error messages are output to log file when CONFIG is not found in the installation directory.
    - CHANGED: New icon
* CHANGED: GazePraser.Core
    - ADDED: :func:`~GazeParser.Core.MessageData.delete`, :func:`~GazeParser.Core.MessageData.updateMessage`, :func:`~GazeParser.Core.GazeData.deleteMessage` and :func:`~GazeParser.Core.GazeData.insertNewMessage` are added to edit messages.
    - ADDED: :func:`~GazeParser.Core.GazeData.sortMessagesByTime` and :func:`~GazeParser.Core.GazeData.sortEventListByTime` are added to sort messages and events when messages are inserted or edited.
    - ADDED: :func:`~GazeParser.Core.GazeData.getSacAmp` is added to get a list of apmlitudes of saccades.
    - CHANGED: Following methods returns subset of data when a list of indices is passed.
        - :func:`~GazeParser.Core.GazeData.getFixDur`
        - :func:`~GazeParser.Core.GazeData.getFixCenter`
        - :func:`~GazeParser.Core.GazeData.getFixTime`
        - :func:`~GazeParser.Core.GazeData.getBlinkTime`
        - :func:`~GazeParser.Core.GazeData.getMsgTime`
        - :func:`~GazeParser.Core.GazeData.getBlinkTime`
        - :func:`~GazeParser.Core.GazeData.getSacLen`
        - :func:`~GazeParser.Core.GazeData.getSacDur`
        - :func:`~GazeParser.Core.GazeData.getSacTime`.
* ADDED: GazeParser.Region
    - This submodule is *experimental*. This module is called from Data Viewer to count fixations in rectangular or circular regions.
* CHANGED: GazeParser.TrackingTools
    - CHANGED: Background stimuli can be presented while performing getSpatialError() and verifyFixation().
    - CHANGED: Current gaze position and limit of gaze position error can be presented on the screen by pressing a key. This will help adjusting camera settings when verifyFixation() fails.
    - FIXED: Sleep 0.5 sec after verifyFixation() successfully finished.
    - FIXED: PsychoPy-based dummy controller's getEyePosition() works properly when the value of 'units' is not 'pix'.
    - FIXED: 'message' option of PsychoPy-based getSpatialError() did not work.
    - FIXED: Unnecessary messages in PsychoPy logfile (e.g. updating camera preview image while performing doCalibration()) are suppressed.
* CHANGED: GazeParser.Converter
    - FIXED: :func:`~GazeParser.Converter.TrackerToGazeParser` failed data conversion when no saccade candidates are found in the data.
    - FIXED: :func:`~GazeParser.Converter.TrackerToGazeParser` failed data conversion when there is no vaid gaze data in a certain trial.
* CHANGED: GazeParser.Utility
    - ADDED: :func:`~GazeParser.Utility.splitFilenames` is moved from GazeParser/app/Converters.py.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - ADDED: Heat-map plot and scatter plot of fixations. Plots can be selected from 'View' menu.
    - ADDED: Heat-map, scatter and XY plot can be superimposed on stimulus image.  Stimulus image can be specified for each trial by inserting '!STIMIMAGE' message.
    - ADDED: 'Jump to ...' is added to 'View' menu to provide quick switching of trials.
    - ADDED: 'Saccade latency' is added to 'Analysis' menu to get a list of saccade onset time relative to inserted messages.
    - ADDED: 'Clear' button is added to clear selection in the event list. Selection mode automatically changes to 'Emphasize' when selection is cleared.
    - ADDED: Messages can be deleted, inserted and edited by right-clicking on the event list.
    - ADDED: 'Save' and 'Combine data files' are added to 'File' menu.
    - ADDED: Font file selector is added to display non-ascii messages on the data plot.
    - CHANGED: New icon
    - FIXED: 'Export' menu did not work properly.
    - FIXED: 'prev/next trial' of Interactive configuration window did not work properly.
    - FIXED: A bug in file type is corrected.


GazeParser 0.6.2
----------------------

(released 2012/12/12)

* CHANGED: SimpleGazeTracker
    - CHANGED: SimpleGazeTracker logs messages sent with startRecording and stopRecording.
    - CHANGED: A new option to "openDataFile" command to determine whether SimpleGazeTracker overwrits or renames an existing data file.
      For example, when 'data.csv' is passed as the name of a new data file and 'data.csv' already exists, the existing 'data.csv' is renamed to 'data.csv.0'. If 'data.csv.0' also exists, SimpleGazeTracker try to rename it to 'data.csv.1', 'data.csv.2', ...
* CHANGED: GazeParser.Core
    - CHANGED: relativeStartTime and relativeEndTime accept MessageData object as th reference time (:class:`~GazeParser.Core.SaccadeData` amd :class:`~GazeParser.Core.FixationData`).
    - FIXED: 'direction' is not defined in :class:`~GazeParser.Core.SaccadeData`.
* CHANGED: GazeParser.TrackingTools
    - CHANGED: 'overwrite' option is added to 'GazeParser.TrackingTools.BaseController.openDataFile` to support overwrite/rename feature of SimpleGazeTracker.
    - FIXED: Default IP address did not work correctly.
    - FIXED: Unnecessary warning messages are suppressed when controller is running in a dummy mode.
* CHANGED: GazeParser.TrajectoryCurvature
    - CHANGED: A new option, 'ignoreNaN' is added to :func:`GazeParser.TrajectoryCurvature.getAreaCurvature` to calculate area curvature when NaNs are included in gaze trajectory.
    - FIXED: 'origin' option of :func:`GazeParser.TrajectoryCurvature.getRotatedTrajectory` didn't work.
    - FIXED: Unnecessary messages are suppressed.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - FIXED: SCREEN_ORIGIN is correctly recognized in XY-T plot mode.
    - FIXED: Interactive configuration dialog couldn't save new configuration file.
    - FIXED: Interactive config couldn't open data file generated by older version of GazeParser.


GazeParser 0.6.1
----------------------

(released 2012/11/30)

* CHANGED: SimpleGazeTracker
    - FIXED: TCP/IP behavior is modified to prevent program halt in Ubuntu.
    - FIXED: Spaces and tabs are allowed before and after "=" in SimpleGazeTracker configuration files.
    - CHANGED: "toggleCalResult" command requires a new parameter which directly specify whether calresult should be on/off.
    - CHANGED: Configuration files with section header (e.g. [SimpleGazeTrackerCommon]) are supported to read SimpleGazeTracker configuration files using ConfigParser module.  Old format (without section header) is also supported.
* CHANGED: GazeParser.Configuration
    - Output warning messages if options are not found in the GazeParser configuration file.
* CHANGED: GazeParser.TrackingTools
    - ADDED: :func:`~GazeParser.TrackingTools.BaseController.verifyFixation` is added.
    - ADDED: A new option, TRACKER_IP_ADDRESS, is added to customize default SimpleGazeTracker IP address.
    - CHANGED: Mouse buttons can be used instead of keyboard in :func:`~GazeParser.TrackingTools.BaseController.doCalibration`, :func:`~GazeParser.TrackingTools.BaseController.doValidation` and :func:`~GazeParser.TrackingTools.BaseController.getSpatialError`.
    - CHANGED: Output warning messages if options are not found in TrackingTools configuration file.
    - FIXED: TCP/IP behavior is modified to prevent program halt in Ubuntu.
    - FIXED: :class:`GazeParser.TrackingTools.ControllerVisionEggBackend` halted when event buffer overflowed.
* CHANGED: GazeParser.Converter
    - CHANGED: :func:`~GazeParser.Converter.TrackerToGazeParser` reads a GazeParser configration file when the filename is passed as 'config' parameter.
    - ADDED: A new parameter, SACCADE_MINIMUM_AMPLITUDE, is added to prevent detecting saccades with small amplitude.
    - FIXED: :func:`~GazeParser.Converter.TrackerToGazeParser` failed to converet data when no saccade candidate was detected.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - ADDED: Color configuration dialog is added.
    - ADDED: Grid configuration dialog is added.
    - CHANGED: "modifyPlotRange" is removed from the menu.
    - FIXED: interactive configuration
* CHANGED: GazeParser.Graphics.quickPlot
    - ADDED: New options, xlim, ylim, and units, are added to :func:`GazeParser.Graphics.quickPlot`.
    - FIXED: some bugs in :func:`GazeParser.Graphics.quickPlot` are fixed.

Converters
MOD: ineffective paramters are disabled in app.Converters.Converter
FIX: app.Converters.Converter.useParameters is changed from Tkinter.StringVar  to Tkinter.BooleanVar

GazeParser 0.6.0
----------------------

(released 2012/11/01)

* CHANGED: GazeParser.TrackingTools
    - ADDED: Two options, CALTARGET_MOTION_DURATION and CALTARGET_DURATION_PER_POS, are added to customize calibration/validation target motion.
    - ADDED: Two options, NUM_SAMPLES_PER_TRGPOS and CAL_GETSAMPLE_DEALAY, are added to customize calibration data acquisition.
    - ADDED: :func:`~GazeParser.TrackingTools.BaseController.setCalTargetMotionParams` and :func:`~GazeParser.TrackingTools.BaseController.setCalSampleAcquisitionParams` are added to overwrite CALTARGET_MOTION_DURATION, CALTARGET_DURATION_PER_POS, NUM_SAMPLES_PER_TRGPOS and CAL_GETSAMPLE_DEALAY.
    - CHANGED: :func:`~GazeParser.TrackingTools.BaseController.getEyePosition` returns current pupil size.
    - CHANGED: :func:`~GazeParser.TrackingTools.BaseController.sendMessage`, :func:`~GazeParser.TrackingTools.BaseController.startRecording` and :func:`~GazeParser.TrackingTools.BaseController.stopRecording` accepts an unicode string as a message.
        The message is recorded as an UTF-8 string in SimpleGazeTracker CSV file.
    - CHANGED: Terminator of data sent from SimpleGazeTracker is changed to \0 in all commands. As a result, **This version of GazeParser cannot communicate with SimpleGazeTracker 0.5.3 or former.**
    - CHANGED: :func:`~GazeParser.TrackingTools.BaseController.sendSettings` sends parameters in a fixed order.
* CHANGED: :func:`~GazeParser.Converter.TrackerToGazeParser` accepts UTF-8 messages in SimpleGazeTracker CSV file.
* CHANGED: Data Viewer (GazeParser/app/Viewer.py)
    - ADDED: Viewer configuration file (Viewer.cfg) is added to customize appearance of Data Viewer.
    - ADDED: A list of recently used directories are added to 'File' menu to provide quick access to these directories.
    - CHANGED: UTF-8 messages can be rendered in the plot area. An appropriate font file must be specified in the configuration file.
    - CHANGED: Event list provides quick access to an event by double-clicking an item on the event list.
    - CHANGED: SimpleGazeTracker CSV file is automatically converted to GazeParser data file when it is opened by Data Viewer.
* CHANGED: SimpleGazeTracker
    - CHANGED: "getEyePosition" command returns current pupil size.
    - CHANGED: Terminator of data sent from SimpleGazeTracker is changed to \0 in all commands. As a result, **This version of SimpleGazeTracker cannot communicate with GazeParser 0.5.3 or former.**
    - ADDED: A new parameter is added to "getCalSample" and "getValSample" commands to customize number of calibration samples per target position.
    - CHANGED: Warning messages are logged when number of calibration samples exceeds MAXCALDATA (=7200).
    - CHANGED: Warning messages are logged when number of calibration positions exceeds MAXCALPOINT (=60).
* FIXED: :func:`GazeParser.Utility.createConfigDir` does not create configuraion directory when running as root (uid=0).
* FIXED: Default value of 'font' parameter of :func:`~GazeParser.TrackingTools.DummyPsychoPyBackend.setCalibrationScreen` is fixed.

GazeParser 0.5.3
----------------------

(released 2012/10/15)

* CHANGED: **Location of configuration files was changed in order to place data files and configuration files to separate directories**.
    - CHANGED: **[Microsoft Windows]** Configuration files are at %AppData%\GazeParser and %AppData%SimpleGazeTracker.
    - CHANGED: **[Linux and MacOS X]** Configuration files are at $HOME/.GazeParser and $HOME/.SimpleGazeTracker.
* ADDED: Tentative pupillometry support. See :ref:`config-simplegazetracker` to disable/enable this feature. See :ref:`simplegazetracker-data-format053` for new data format.
    - ADDED: SimpleGazeTracker outputs pupil size.
    - ADDED: :func:`GazeParser.Converter.TrackerToGazeParser` supports pupil size. *Note that EyelinkToGazeParser and TobiiToGazeParser does not support pupil size yet.*
    - ADDED: 'Pupil' attribulte is added to :class:`GazeParser.Core.GazeData`.
    - ADDED: A parameter 'OUTPUT_PUPILSIZE' is added to SimpleGazeTracker.
* ADDED: 'font' option is added to :func:`~GazeParser.TrackingTools.BaseController.setCalibrationScreen`.
* ADDED: Appearance of data viewer (GazeParser/app/Viewer.py) can be customized using a configuration file.
* FIXED: Calibration results display was not correctly drawn when screen width of the Presentation PC was not a mulile of 4 (e.g. 1366pixel).
* FIXED: Several bugs in the binocular recording mode were fixed.
* FIXED: Texts on the main plot of data viewer were now correctly clipped.

GazeParser 0.5.2
----------------------

(released 2012/08/27)

*SimpleGazeTracker is not updated. Please use SimpleGazeTracker 0.5.1 with GazeParser 0.5.2.*

* CHANGED: GazeParser.TrackingTools
    - CHANGED: :func:`GazeParser.TrackingTools.BaseController.calibrationLoop` raises ValueError if calibrationLoop is called before setting calibration area and calibration target positions.
    - CHANGED: :func:`GazeParser.TrackingTools.ControllerVisionEggBackend.setCalibrationTargetStimulus` and :func:`GazeParser.TrackingTools.ControllerPsychoPyBackend.setCalibrationTargetStimulus` support a list of stimulus objects as calibration target.
    - ADDED: :func:`GazeParser.TrackingTools.BaseController.updateCalibrationTargetStimulusCallBack` is added to support dynamic calibration target. See :ref:`sample04` for detail.
* FIXED: :func:`GazeParser.TrackingTools.ControllerVisionEggBackend.setCalibrationTargetStimulus` did not work correctly.
* FIXED: Tuple was not accepted by :func:`GazeParser.TrackingTools.ControllerVisionEggBackend.setCalibrationTargetPositions`.
* FIXED: :func:`GazeParser.Converter.TrackerToGazeParser` could not convert data files with CR/LF line feed code when running on Linux.
* FIXED: Size of converter dialog was too small when GazeParser/app/Converters.py was executed on Linux.

GazeParser 0.5.1
----------------------

(released 2012/07/31)

* CHANGED: SimpleGazeTracker 
    - CHANGED: Pupil detection algorithm is improved.  Rate of detection failure is reduced when shadows whose size is similar to pupil size are included in captured images.
    - CHANGED: SimpleGazeTracker edition is output to a log file.
    - ADDED: A parameter 'Camera ID' is added to OpenCV edition.  You can specify which camera should be used when multiple camearas are connected to the Recorder PC.
    - ADDED: A parameter 'SHOW_DETECTIONERROR_MSG' is added to all edition.
    - ADDED: Parameters 'ROI_WIDTH' and 'ROI_HEIGHT' are added to all edition.  You can specify a subregion where SimpleGazeTracker searches pupil and Purkinje image.
    - ADDED: Parameters 'PORT_RECV' and 'PORT_SEND' are added to all edition to customize TCP ports.
    - ADDED: A parameter 'DELAY_CORRECTION' is added to all adition .
* CHANGED: GazeParser.TrackingTools
    - CHANGED: Dummy mode is improved.  You can emurate eye movement with mouse when the controller runs as dummy mode.
    - CHANGED: Parameters 'port1' and 'port2' of :func:`GazeParser.TrackingTools.BaseController.connect` are renamed to portRecv' and 'portSend'
    - ADDED: :func:`GazeParser.TrackingTools.BaseController.getSpatialError`
    - ADDED: :func:`GazeParser.TrackingTools.cameraDelayEstimationHelper`
* CHANGED: GazeParser Home directory on Win32 is moved from %HOMEDRIVE%%HOMEPATH%\GazeParser to %USERPROFILE%\GazeParser.
* FIXED: :func:`GazeParser.TrackingTools.ControllerPsychoPyBackend.getSpatialError` did not work when 'units' was not 'pix'.
* FIXED: Some minor bugs.

GazeParser 0.5.0
----------------------

(released 2012/06/28)

* CHANGED: GazeParser.Tracker is renamed to SimpleGazeTracker and now runs on Windows, Linux and Mac OS X.
    - ADDED: There are three editions of SimpleGazeTracker, OptiTrack, InterfaceGPC5300, and OpenCV.
        * OpenCV edition runs on Windows, Linux and Mac OS X.
        * Optitrack and InterfaceGPC5300 editions run on Windows only.
    - CHANGED: Location of configuration files is moved from %APPDATA%\GazeTracker to %USERPROFILE%\SimpleGazeTracker in Windows.
    - CHANGED: New SimpleGazeTracker depends on SDL, SDL_net and SDL_ttf instead of DirectX and WinSock.
    - ADDED: Tentative binocular recording mode.
    - ADDED: Application log is output to Tracker.log in the data directory.
* ADDED: :func:`GazeParser.Core.GazeData.findMessage`
    

GazeParser 0.4.1
--------------------

(released 2012/05/25)

* ADDED: :func:`GazeParser.Converter.TobiiToGazeParser`
* CHANGED: GazeParser.TrackingTools module is updated.
    - :func:`GazeParser.TrackingTools.BaseController.calibrationLoop` returns **'space' and 'q'** instead of pygame.locals.K_SPACE and pygame.locals.K_q.
    - :class:`GazeParser.TrackingTools.ControllerPsychoPyBackend` supports pyglet window.
    - :class:`GazeParser.TrackingTools.ControllerPsychoPyBackend` supports *unit* options.
    
    .. note:: Gaze position is recorded in *pix* in the data file.

* ADDED: Installer of *CameraLink edition* of GazeParser.Tracker is released. CameraLink image grabbers manufactured by `Interface Corporation <http://www.interface.co.jp/>`_ is necessary to use this edition.
* FIXED: Installer of GazeParser.Tracker was localized to Japanese. Localization of the installer is now set to 'Neutral'.
* CHANGED: GazeParser.Tracker outputs calibration target poisitions to the data file. 
  This information would be helpful to convert the units of target position when calibration target positions are specified in non-'pix' units.
* CHANGED: GazeParser.app.Viewer is updated.
  * Messages are plotted in XY-T mode.
  * Number of fixations are plotted in XY mode.
* FIXED: GazeParser.Core.GazeData._getEventListByTime could not deal with data without any saccade.
* FIXED: bug with GazeParser.Microsaccade module.
* FIXED: process of GazeParser.Tracker did not terminate when multiple errors occurred while initialization.
* FIXED: GazeParser.app.Converters.interactiveConfig did not work.

GazeParser 0.4.0
---------------------

(released 2012/05/10)

* First release.