<!-- ##### SECTION Title ##### -->
visu_data

<!-- ##### SECTION Short_Description ##### -->
Give methods to store and manage data from input file(s).

<!-- ##### SECTION Long_Description ##### -->
<para>
The main goal of V_Sim is to draw lists of elements. For example, when used to render atoms, a box that contains 24 silicon atoms and 46 germanium atoms is a box with two elements (silicon and germanium) where the silicon element has 24 nodes and the germanium element has 46 nodes. This module gives then methods to create nodes (see #VisuElement to create and managed elements).
</para>
<para>
A node is characterised by its position in the space and its orientation. When rendered, a specific translation can be applied. It has also one number that is its position in the read input file and one boolean to control if it is rendered on screen. One can associate whatever properties using visuDataSet_nodeProperty(). These properties can be retrieved with visuDataGet_nodeProperty(). But before using these methods, the needed space must be allocated using visuDataAdd_nodeProperty(). The stored properties must be pointers on something.
</para>
<para>
All nodes are stored in a structure called #VisuData. V_Sim uses one #VisuData per input file(s). A pointer %currentVisuData points to the current rendered #VisuData. This structure contains a list of pointers on all the #VisuElement used in this file. It also contains the list of all #VisuNodes of this file (or these files).
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### USER_FUNCTION setColorFunc ##### -->
<para>

</para>

@visuData: 
@rgba: 
@ele: 
@node: 


<!-- ##### STRUCT VisuData ##### -->
<para>

</para>

@parent: 
@ntype: 
@fromVisuElementToInt: 
@fromIntToVisuElement: 
@fromNumberToVisuNode: 
@nbOfAllStoredNodes: 
@numberOfNodes: 
@numberOfStoredNodes: 
@nodes: 
@setColor: 
@private: 

<!-- ##### FUNCTION visuDataNew ##### -->
<para>

</para>

@Returns: 
<!-- # Unused Parameters # -->
@nbOfTypes: 
@nbOfNodesPerVisuElement: 
@visuElementUsed: 


<!-- ##### FUNCTION visuDataNew_withOpenGLView ##### -->
<para>

</para>

@view: 
@Returns: 


<!-- ##### FUNCTION visuDataAdd_VisuElement ##### -->
<para>

</para>

@data: 
@ele: 
@x: 
@y: 
@z: 
@number: 
@Returns: 


<!-- ##### FUNCTION visuDataAdd_VisuElementWithRotation ##### -->
<para>

</para>

@data: 
@ele: 
@x: 
@y: 
@z: 
@theta: 
@phi: 
@number: 
@Returns: 


<!-- ##### FUNCTION visuDataAdd_int ##### -->
<para>

</para>

@data: 
@position: 
@x: 
@y: 
@z: 
@number: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_nodeFromNumber ##### -->
<para>

</para>

@data: 
@number: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_nodeFromId ##### -->
<para>

</para>

@data: 
@eleId: 
@posId: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_objectList ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_population ##### -->
<para>

</para>

@data: 
@nbOfTypes: 
@nbOfNodesPerVisuElement: 
@visuElementUsed: 
@Returns: 


<!-- ##### FUNCTION visuDataFree_population ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataGet_renderingWindow ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataConvert_boxCoordinatestoXYZ ##### -->
<para>

</para>

@data: 
@xyz: 
@boxCoord: 


<!-- ##### FUNCTION visuDataConvert_XYZtoBoxCoordinates ##### -->
<para>

</para>

@data: 
@boxCoord: 
@xyz: 


<!-- ##### FUNCTION visuDataGet_boxGeometry ##### -->
<para>

</para>

@data: 
@vector: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_boxGeometry ##### -->
<para>

</para>

@data: 
@geometry: 
@periodic: 


<!-- ##### FUNCTION visuDataGet_periodic ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_XYZtranslation ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_XYZtranslation ##### -->
<para>

</para>

@data: 
@xyz: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_boxMatrix ##### -->
<para>

</para>

@data: 
@matrix: 


<!-- ##### FUNCTION visuData_constrainedElementInTheBox ##### -->
<para>

</para>

@data: 
@element: 
@Returns: 


<!-- ##### FUNCTION visuData_constrainedInTheBox ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuData_constrainedFree ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataGet_nodePosition ##### -->
<para>

</para>

@data: 
@node: 
@coord: 


<!-- ##### FUNCTION visuDataSet_nodeProperty ##### -->
<para>

</para>

@data: 
@node: 
@key: 
@value: 


<!-- ##### FUNCTION visuDataGet_nodeProperty ##### -->
<para>

</para>

@data: 
@node: 
@key: 
@Returns: 


<!-- ##### FUNCTION visuDataAdd_nodeProperty ##### -->
<para>

</para>

@data: 
@key: 
@freeFunc: 


<!-- ##### FUNCTION visuDataRemove_nodeProperty ##### -->
<para>

</para>

@data: 
@key: 


<!-- ##### FUNCTION visuData_compareElements ##### -->
<para>

</para>

@data1: 
@data2: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_changeElementFlag ##### -->
<para>

</para>

@data: 
@changeElement: 


<!-- ##### FUNCTION visuDataGet_changeElementFlag ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_property ##### -->
<para>

</para>

@data: 
@key: 
@value: 


<!-- ##### FUNCTION visuDataGet_property ##### -->
<para>

</para>

@data: 
@key: 
@Returns: 


<!-- ##### FUNCTION visuDataRemove_property ##### -->
<para>

</para>

@data: 
@key: 


<!-- ##### FUNCTION visuDataAdd_timeout ##### -->
<para>

</para>

@data: 
@time: 
@func: 
@user_data: 
@Returns: 


<!-- ##### FUNCTION visuDataRemove_timeout ##### -->
<para>

</para>

@data: 
@timeoutId: 
@Returns: 


<!-- ##### FUNCTION visuDataAdd_file ##### -->
<para>

</para>

@data: 
@file: 
@kind: 


<!-- ##### FUNCTION visuDataGet_file ##### -->
<para>

</para>

@data: 
@kind: 
@Returns: 


<!-- ##### FUNCTION visuDataRemove_allFiles ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataSet_fileCommentary ##### -->
<para>

</para>

@data: 
@commentary: 


<!-- ##### FUNCTION visuDataGet_fileCommentary ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_ColorFunc ##### -->
<para>

</para>

@data: 
@func: 


<!-- ##### FUNCTION visuDataGet_allObjects ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION visuData_createNode ##### -->
<para>

</para>

@data: 
@node: 


<!-- ##### FUNCTION visuData_createNodes ##### -->
<para>

</para>

@data: 
@ele: 


<!-- ##### FUNCTION visuData_createAllNodes ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuData_createAllElements ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataEmit_askForShowHideNodes ##### -->
<para>

</para>

@data: 
@redraw: 


<!-- ##### FUNCTION visuDataEmit_elementRenderedChange ##### -->
<para>

</para>

@data: 
@element: 


<!-- ##### FUNCTION visuDataEmit_facettesChanged ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataEmit_nodePositionChanged ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataEmit_nodeRenderedChange ##### -->
<para>

</para>

@data: 


<!-- ##### FUNCTION visuDataGet_openGLView ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_angleOfView ##### -->
<para>

</para>

@data: 
@valueTheta: 
@valuePhi: 
@valueOmega: 
@mask: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_perspectiveOfView ##### -->
<para>

</para>

@data: 
@value: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_positionOfView ##### -->
<para>

</para>

@data: 
@valueX: 
@valueY: 
@mask: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_propertyWithDestroyFunc ##### -->
<para>

</para>

@data: 
@key: 
@value: 
@freeFunc: 


<!-- ##### FUNCTION visuDataSet_renderingWindow ##### -->
<para>

</para>

@data: 
@window: 


<!-- ##### FUNCTION visuDataSet_sizeOfView ##### -->
<para>

</para>

@data: 
@width: 
@height: 
@Returns: 


<!-- ##### FUNCTION visuDataSet_zoomOfView ##### -->
<para>

</para>

@data: 
@value: 
@Returns: 


