/**
\mainpage Engauge Digitizer II

The Engauge Digitizer II application quickly extracts numeric data from images containing
graphs with curves and two axes drawn. Converting an image into data may be described as doing
the opposite of graphing - which converts numeric data into graph images.

For users
---------
Major features added since version Engauge Digitizer 5.2 include:

- Sub-pixel point placement increases accuracy
- Undo/redo makes recovering from mistakes easy
- Easier and more powerful zooming
- Improved drag-and-drop
- Wizard provides an interactive tutorial to explain the basic steps
- Wizard creates a checklist guide to interactively leads user through steps from file import to file export
- MSI installer for Windows operating system

For developers
--------------
Engauge Digitizer Version 2 uses the new <a href="http://qt-project.org">Qt5</a>
library, rather than the old <a href="http://qt-project.org">Qt3</a>
library used by Version 1. The Qt3 library is disappearing from most operating systems, but 
Qt5 should be available for many years.

The code takes advantage of some powerful open source toolkits:

- <a href="http://cccc.sourceforge.net"><b>CCCC</b></a> provides important metrics to identify possible problem areas 
  (run docccc in src directory)
- <a href="http://doxygen.org"><b>Doxygen</b></a> documents all C++ classes (run doxygen in src directory)
- <a href="http://fftw.org"><b>FFTW</b></a> provides a fast-fourier transform (FFT) for faster image processing, 
  especially cross-correlations
- <a href="http://log4cpp.sourceforge.net"><b>Log4cpp</b></a> provides configurable logging
- <a href="http://www.openjpeg.org"><b>OpenJPEG</b></a> supports JPEG2000 images on systems without support for that format

The code is architected with some important design patterns:

- <b>Command pattern</b> provides Undo/Redo using commands and a command stack, and also provides robust data transfer
  between threads using commands and a FIFO command queue
- <b>Factory pattern</b> generates points with the details encapsulated in the factory class
- <b>Functor pattern</b> provides efficient processing of Curve and Point data from outside the Document class, without violating
  encapsulation of performed by generic iteration through the Curves with functors
- <b>Model/View pattern</b> separates graphical object management in the GraphicsScene, and graphical presentation and interaction
  in the GraphicsView. Delegates, representing the document, interact with the Model and View
- <b>State pattern</b> isolates each digitizing mode into one state, with a context class acting as a container and single 
  class for interfacing across the state machine boundary
- <b>Strategy pattern</b> encapsulates code chunks when the chunk to be used depends on the current context 

Code development has been moved from sourceforge.net to github.com, and Doxygen documentation has been added. 
*/
