## extInfos

extInfos — give the capability to draw some information near each node.

## Synopsis

    enum                DrawItem;
    enum                DrawMethod;

    void                extInfosBuild                       (VisuData *dataObj);
    void                extInfosSet_data                    (VisuData *data,
                                                             DataNode *dataNode,
                                                             int *nodes);
    void                extInfosSet_element                 (VisuData *data,
                                                             int *nodes);
    void                extInfosSet_number                  (VisuData *data,
                                                             int *nodes);
    gboolean            extInfosSet_used                    (VisuData *data,
                                                             gboolean status);

    OpenGLExtension*    extInfosInit                        ();

## Description

This part is used to draw some information near the nodes. This information can be the one of a VisuNodeProperty or something else. When read from a VisuNodeProperty, just giving the name will produce the right output. In other cases a print routine must be given.

## Details

### enum DrawItem

    typedef enum
      {
        DRAW_NEVER,
        DRAW_SELECTED,
        DRAW_ALWAYS
      } DrawItem;

This enum represents the possibilities for the information drawing.

`DRAW_NEVER` | don't draw any information on nodes ;
`DRAW_SELECTED` | draw information only on a list of nodes ;
`DRAW_ALWAYS` | draw information on all nodes.

### enum DrawMethod

    typedef enum
      {
        DRAW_METH_NONE,
        DRAW_METH_ID,
        DRAW_METH_TYPE,
        DRAW_METH_OTHER
      } DrawMethod;

This enum represents the method for information drawing.

`DRAW_METH_NONE` | draw nothing ;
`DRAW_METH_ID` | draw the id of nodes ;
`DRAW_METH_TYPE` | draw the name of node element ;
`DRAW_METH_OTHER` | other possible draw rendering method.

### extInfosBuild ()

    void                extInfosBuild                       (VisuData *dataObj);

Build the OpenGL list representing the informations associated to the given `dataObj`. To associate some, use `extInfosSet_number()`, or `extInfosSet_element()` or `extInfosSet_data()`.

`dataObj` : | a VisuData object.

### extInfosSet_data ()

    void                extInfosSet_data                    (VisuData *data,
                                                             DataNode *dataNode,
                                                             int *nodes);

As `extInfosSet_number()`, but draw some informations instead of their numbers. The informations are defined by the `dataNode` argument.

`data` : | a VisuData object ;
`dataNode` : | a DataNode object ;
`nodes` : | an integer list, terminated with a negative number ;

### extInfosSet_element ()

    void                extInfosSet_element                 (VisuData *data,
                                                             int *nodes);

As `extInfosSet_number()`, but draw the names of elements instead of their numbers.

`data` : | a VisuData object ;
`nodes` : | an integer list, terminated with a negative number.

### extInfosSet_number ()

    void                extInfosSet_number                  (VisuData *data,
                                                             int *nodes);

Associate a informations extension to the given `data`. With this extension, some the number of nodes will be drawn on them. Numbers can be drawn and all nodes (set `nodes` to a NULL pointer), or to a restricted list of nodes represented by their numbers. In this case, `nodes` can have whatever length but must be terminated by a negative integer. This array is then owned by the extension and should not be freed.

`data` : | a VisuData object ;
`nodes` : | an integer list, terminated with a negative number.

### extInfosSet_used ()

    gboolean            extInfosSet_used                    (VisuData *data,
                                                             gboolean status);

Change the status of the informations extension.

`data` : | a VisuData object ;
`status` : | a boolean.
Returns : | TRUE if the calling routine should call `visuObjectRedraw()`.

### extInfosInit ()

    OpenGLExtension*    extInfosInit                        ();

Create the extension, it is called by V_Sim on starup and should not used elsewhere.

Returns : | the newly created OpenGLExtension.