visu_rendering

visu_rendering — Methods to create and add new rendering methods.

Synopsis

#define             VISU_ERROR_RENDERING
gboolean            (*renderingFormatLoadFunc)          (VisuData *data,
                                                         const gchar *filename,
                                                         FileFormat *format,
                                                         int nSet,
                                                         GError **error);
enum                RenderingErrorFlag;
typedef             RenderingFormatLoad;

Description

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.

Details

VISU_ERROR_RENDERING

#define VISU_ERROR_RENDERING visuRenderingClassGet_quark()

renderingFormatLoadFunc ()

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.

data :

a VisuData object ;

filename :

the access to the file to load ;

format :

a FileFormat object (can be NULL) ;

nSet :

an integer ;

error :

a pointer to store possible errors.

Returns :

FALSE if data is unchanged (wrong format), TRUE otherwise (even if some minor errors have happened).

enum RenderingErrorFlag

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.

RENDERING_ERROR_METHOD

Error from the rendering method.

RENDERING_ERROR_FILE

Error when opening.

RENDERING_ERROR_FORMAT

Wrongness in format.

RenderingFormatLoad

typedef struct RenderingFormatLoad_struct RenderingFormatLoad;

Short way to address RenderingFormatLoad_struct objects.