## wire

wire — Gives methods to draw lines as OpenGl objects pairing two elements.

## Synopsis

    PairsExtension*     initPairsWire                       ();
    int                 setWireGeneralWidth                 (int val);
    int                 getWireGeneralWidth                 ();
    int                 setWireWidth                        (VisuPairData *data,
                                                             int val);
    int                 getWireWidth                        (VisuPairData *data);
    int                 setWireNonLinear                    (int val);
    int                 getWireNonLinear                    ();
    float*              getLengthSampleForColor             (int color,
                                                             int *size);
    guint16             wireGet_stipple                     (VisuPairData *data);
    gboolean            wireSet_stipple                     (VisuPairData *data,
                                                             guint16 stipple);

## Description

The wire pair module is the simplest way to draw pairs between elements : using lines. The size of lines can be chosen but is limited by OpenGL implementation that usually only allow line width of 10 pixels as maximum size.

## Details

### initPairsWire ()

    PairsExtension*     initPairsWire                       ();

This method is used by V_Sim on startup, don't use it on your own.

Returns : | the wire pair extension.

### setWireGeneralWidth ()

    int                 setWireGeneralWidth                 (int val);

The width of line between elements can be chosen by kinds of pairs, but can use a default value for all kinds of pairs when no individual value is available. Use this method to set the default width.

`val` : | a positive integer.
Returns : | 1 if the calling method should call the `visuPairBuild()` method, 0 if not.

### getWireGeneralWidth ()

    int                 getWireGeneralWidth                 ();

Get the default width for wire pairs (see `setWireGeneralWidth()` to set this value).

Returns : | the default width.

### setWireWidth ()

    int                 setWireWidth                        (VisuPairData *data,
                                                             int val);

This method allows to change the width of line for a specific pair. When a pair is rendered via with a line, it first checks if that pairs has a specific width value set by this method. If not, it uses the default value. If the specific value is indeed changed, the pairs OpenGl list is not recreated automatically and the calling method should call the `visuPairBuild()` method according to the return value.

`data` : | a PairsData object ;
`val` : | a positive integer.
Returns : | 1 if the calling method should call the `visuPairBuild()` method, 0 if not.

### getWireWidth ()

    int                 getWireWidth                        (VisuPairData *data);

Get the width of the given pair `data`. If the given pair has no specific width, the defaul value is returned.

`data` : | a PairsData object.
Returns : | the width of the given pair.

### setWireNonLinear ()

    int                 setWireNonLinear                    (int val);

If the `val` argument is true, the wire drawn as pairs do not use their user-defined color but instead are colored using a function depending on the length. See `getLengthSampleForColor()` to know how to change this colorization function.

`val` : | a boolean value.
Returns : | 1 if the calling method should call the `visuPairBuild()` method, 0 if not.

### getWireNonLinear ()

    int                 getWireNonLinear                    ();

Get if color are user-defined or length dependent.

Returns : | 1 if color is length dependent.

### getLengthSampleForColor ()

    float*              getLengthSampleForColor             (int color,
                                                             int *size);

When pairs colors are length dependent, an array is used to store the colorization function. This function is a two variables one, the first variable is the color channel and the second gives the correspondance between [0;1] (length variabtion between pair_min and pair_max) and [0;1] (color variation in the given channel). The color channels must be RGB coded. This method is used to get one of the array for the given channel (`color`). The calling method should sample the transformation function and store it in the returned array. Its size is stored in the `size` argument.

`color` : | an integer [0;2], coding for RGB channel ;
`size` : | a pointer to an integer.
Returns : | the star of the transformation array for the given color channel.

### wireGet_stipple ()

    guint16             wireGet_stipple                     (VisuPairData *data);

Get the line pattern of `data`.

`data` : | a VisuPairData object.
Returns : | a line pattern (default is 65535).

### wireSet_stipple ()

    gboolean            wireSet_stipple                     (VisuPairData *data,
                                                             guint16 stipple);

Change the line pattern of `data`.

`data` : | a VisuPairData object ;
`stipple` : | a pattern.
Returns : | TRUE if the value is different from previous, then call the `visuPairBuild()` method.