/**
\mainpage TexGen
\section intro_sec Introduction
Welcome to the documentation of TexGen, a tool for modelling the geometry of textiles.

\section modules_sec Modules
TexGen has been split into several modules as illustrated in the graph below:

\dotfile texgenmodules.dot "TexGen modules"

The documentation provided here documents the Core, Renderer and Export modules mainly.
The python interface is automatically generated by SWIG allowing python to call functions
within the core and renderer modules hence the documentation here also applies to the python
modules. The GUI has not yet been documentated.

\section api_sec API Reference
The API reference guide has been generated by DoxyGen from the source code. It can be
accessed from the various buttons at the top of the page. A quick rundown of the classes
found in the within the core module and how they relate to each other is shown below:

\dotfile texgenimp.dot "Core module structure"

\section templates_sec Python STL templates
The following templates have been defined which should be used for the Python versions of functions in place of the STL declarations in the corresponding C++ functions (shown in the documentation).
For example, a string vector would be declared as StringVector() in a Python script and used in place of a vector<string> shown in the C++ version of the function declaration.

%template(StringVector) vector<string>;\n
%template(PlaneVector) vector<TexGen::PLANE>;\n
%template(XYZPair) pair<TexGen::XYZ, TexGen::XYZ>;\n
%template(YarnList) list<TexGen::CYarn>;\n
%template(YarnVector) vector<TexGen::CYarn>;\n
%template(YarnVectorPtr) vector<TexGen::CYarn*>;\n
%template(TextileVector) vector<TexGen::CTextile*>;\n	
%template(TextileMap) map<string, TexGen::CTextile*>;\n	
%template(NodeVector) vector<TexGen::CNode>;\n
%template(SlaveNodeVector) vector<TexGen::CSlaveNode>;\n
%template(XYZVector) vector<TexGen::XYZ>;\n
%template(XYVector) vector<TexGen::XY>;\n
%template(DoubleVector) vector<double>;\n
%template(IntPair) pair<int, int>;\n
%template(IntPairVector) vector<pair<int, int> >;\n
%template(PointInfoVector) vector<TexGen::POINT_INFO>;\n
%template(DoubleXYZPair) pair<double, TexGen::XYZ>;\n
%template(DoubleXYZPairVector) vector< pair<double, TexGen::XYZ> >;\n
%template(BoolPair) pair<bool, bool>;\n
%template(IntList) list<int>;\n
%template(IntVector) vector<int>;\n
%template(BoolVector) vector<bool>;\n
%template(ElementDataList) list<TexGen::MESHER_ELEMENT_DATA>;\n
%template(MeshDataVector) vector<TexGen::CMeshDataBase*>;\n
%template(LinearTransformationVector) vector<CLinearTransformation>;\n
%template(FloatVector) vector<float>;\n
%template(MeshVector) vector<TexGen::CMesh>;\n

\section main_sec Guide
Refer to the website for a guide on using TexGen:

http://texgen.sourceforge.net/
*/
