## visu_dump

visu_dump — Some resources to add the ability to export the rendered data to an other format (usually image format).

## Synopsis

    struct      DumpType_struct;
    typedef     DumpType;
    int         (*writeDumpFunc)                (FileFormat *format,
                                                 GString *buffer,
                                                 char *fileName,
                                                 int width,
                                                 int height,
                                                 VisuData *dataObj,
                                                 guchar *image,
                                                 voidDataFunc functionWait,
                                                 gpointer data);
    DumpType*   (*initDumpModuleFunc)           ();
    GList*      getAllDumpModules               ();
    int         getNbDumpModules                ();
    void        abortDump                       (GObject *obj,
                                                 gpointer data);

    int         initDumpModule                  ();

## Description

V_Sim can export loaded data to othe formats. This module descibes the methods and structure to create a dumping extension. Basically, a dumping extension is just a FileFormat and a method that is called when exporting is required. No method exists to create a dumping extension, just allocate and initialize the DumpType structure.

The writeDumpFunc should suspend its process to allow the calling program to refresh itself if the dump process is slow. Ideally, the argument `waitFunction` should be called exactly 100 times.

## Details

### struct DumpType_struct

    struct DumpType_struct {
      FileFormat *fileType;
      writeDumpFunc writeFunc;
    };

This structure is used to store a dumping extension. Such an extension is characterized by its FileFormat and a method that can write a file from the current rendered data.

FileFormat *`fileType`; | a FileFormat ;
writeDumpFunc `writeFunc`; | a pointer to a write func.

### DumpType

    typedef struct DumpType_struct DumpType;

Common name for DumpType_struct structures.

### writeDumpFunc ()

    int         (*writeDumpFunc)                (FileFormat *format,
                                                 GString *buffer,
                                                 char *fileName,
                                                 int width,
                                                 int height,
                                                 VisuData *dataObj,
                                                 guchar *image,
                                                 voidDataFunc functionWait,
                                                 gpointer data);

This is a prototype of a method implemented by a dumping extension that is called when the current rendering must be dumped to a file.

`format` : | a FileFormat object, corresponding to the write method ;
`buffer` : | a GString to store some error (not NULL) ;
`fileName` : | a string that defined the file to write to ;
`width` : | an integer ;
`height` : | an integer.
`dataObj` : | the VisuData to be exported ;
`image` : | the data to be written ;
`functionWait` : | a method to call periodically during the dump ;
`data` : | some pointer on object to be passed to the wait function.
Returns : | 0 if everything goes right.

### initDumpModuleFunc ()

    DumpType*   (*initDumpModuleFunc)           ();

This protoype defines initializing function for dumping extension. Create such a funcction an add its name in the list listInitDumpModuleFunc defined in dumpModules/externalDumpModules.h thus the new dumping extension will be initialized on startup.

Returns : | a newly allocated DumpType.

### getAllDumpModules ()

    GList*      getAllDumpModules               ();

All dumping extensions are stored in an opaque way in V_Sim. But they can be listed by a call to this method.

Returns : | a list of all the known dumping extensions. This list is own by V_Sim and should be considered read-only.

### getNbDumpModules ()

    int         getNbDumpModules                ();

A convinient way to know how dumping extensions are registered.

Returns : | the number of known dumping extensions.

### abortDump ()

    void        abortDump                       (GObject *obj,
                                                 gpointer data);

Does nothing for the moment.

`obj` : | an object ;
`data` : | some data.

### initDumpModule ()

    int         initDumpModule                  ();

This method is used to initialized the system of dumping extension. It should not be called after startup process is finished.

Returns : | 0 if everything ran smoothly.