![]() |
![]() |
![]() |
V_Sim API - Reference Manual | ![]() |
---|---|---|---|---|
#define VISU_ERROR_RENDERING gboolean (*renderingFormatLoadFunc) (VisuData *data, const gchar *filename, FileFormat *format, int nSet, GError **error); enum RenderingErrorFlag; typedef RenderingFormatLoad;
The way visu renders its data is done by modules. They are called rendering methods and they describes how data are drawn on the screen. Many can be defined but only one is used at a time to render the data.
One or more file type are associated with a rendering method. And a rendering method must specify the way to load the data it needs. Taking the example of a spin system representation, there are two kinds of file. The first kind describes the position the spin and the second contains their orientations.
To create a new rendering method, use
renderingMethod_new()
. The name is mandatory and must be
unique. The description is not compulsory. The number of file kinds
is also required. Use renderingMethodSet_fileType()
to associated a
GList of FileFormat. In our example of spin system, the first
kind of file is about positions, and the associated file formats
are *.ascii, *.d3 and *.xyz.
The VisuRendering_struct has to two pointers on methods
that are important. The first, createOpenGLElementFunc()
is called
when V_Sim needs to create an OpenGL list corresponding to the
VisuElement given as argument. This list then can be used to
render each node and thus accelerating the rendering
operations. The second method is createOpenGLNodeFunc()
and is
called by V_Sim for each node of the system when the main OpenGL
list (the one for the nodes) is created. Thus, in the contrary of
the first method, thios one should not create an OpenGL list but
directly call OpenGL routines to draw the node. This method is also
responsible to put the node at the right position. Use
visuDataGet_nodePosition()
to retrieve the position and translate
the node accordingly.
gboolean (*renderingFormatLoadFunc) (VisuData *data, const gchar *filename, FileFormat *format, int nSet, GError **error);
This is an interface for a generic load method. This method read the file
positionned on filename
and populate or change the arrays in
data
. When enter this method, the data
argument is already
allocated but its arrays may be empty and unallocated (depending on
context). If the load method fails (because the format is wrong or
anything else), the data
argument should not be modified. If some
errors occur, the pointer error
will be instanciated. A
VisuRendering can have several renderingFormatLoadFunc methods
for each format they support. The nSet
argument is used to load a
specific set of nodes if the input format supports it. If nSet
is
0, then the default set of nodes is loaded.
|
a VisuData object ; |
|
the access to the file to load ; |
|
a FileFormat object (can be NULL) ; |
|
an integer ; |
|
a pointer to store possible errors. |
Returns : |
FALSE if data is unchanged (wrong format), TRUE otherwise (even if
some minor errors have happened).
|
typedef enum { RENDERING_ERROR_METHOD, /* Error from the rendering method. */ RENDERING_ERROR_FILE, /* Error when opening. */ RENDERING_ERROR_FORMAT /* Wrongness in format. */ } RenderingErrorFlag;
Thiese are flags used when reading a file with a rendering method.
typedef struct RenderingFormatLoad_struct RenderingFormatLoad;
Short way to address RenderingFormatLoad_struct objects.