## panelSurfaces

panelSurfaces — Gtk interface to load isosurfaces.

## Synopsis

    enum        PanelIsosurfacesColumnId;
    gboolean    isosurfaces_show_next           ();
    GtkListStore* panelIsosurfacesGet_listStore ();
    gboolean    panelIsosurfacesSet_used        (VisuData *dataObj,
                                                 gboolean used);
    void        panelIsosurfacesAdd_withValue   (gchar *filename,
                                                 float value,
                                                 gchar *name);
    void        panelIsosurfacesEdit_surfaceProperties
                                                (gboolean flag);
    int         panelIsosurfacesLoad_file       (const char *file_name,
                                                 gboolean fit_to_box,
                                                 VisuData *data,
                                                 OptionTable *table);
    gboolean    panelIsosurfacesShow_all        (gboolean show);

## Description

This module contains the panel used to draw isosurfaces. From it, you can draw isosurfaces on screen after they are loaded through the surfaces module. You can also access tools to manage and create .surf files, these tools are related to the panelSurfacesTools module.

## Details

### enum PanelIsosurfacesColumnId

    typedef enum
      {
        COLUMN_FIELD_LABEL,
        COLUMN_FIELD_POINTER,
        NB_COLUMN_FIELD
      } PanelIsosurfacesColumnId;

Thesse are the description of the columns stored in the GtkListStore of this panel. See `panelIsosurfacesGet_listStore()` to access this liststore.

`COLUMN_FIELD_LABEL` | a string, the description of the scalar field.
`COLUMN_FIELD_POINTER` | the pointer to the ScalarField object.
`NB_COLUMN_FIELD` | the number of columns.

### isosurfaces_show_next ()

    gboolean    isosurfaces_show_next           ();

Selects the next surface in the list. If the current surface selected is the last one, selects the first one in the list. If no surface is selected, does nothing.

Returns : | TRUE if a surface has been selected, FALSE otherwise.

### panelIsosurfacesGet_listStore ()

    GtkListStore* panelIsosurfacesGet_listStore ();

This method gives read access to the GtkListStore used to store the scalar field files.

Returns : | the GtkListStore used by this panel to store its scalar fields. It should be considered read-only.

### panelIsosurfacesSet_used ()

    gboolean    panelIsosurfacesSet_used        (VisuData *dataObj,
                                                 gboolean used);

Change the status of the isosurface extension, drawn or not.

`dataObj` : | the current VisuData (can be NULL) ;
`used` : | a boolean.
Returns : | TRUE if the OpenGLAskForReDraw signal should be emitted.

### panelIsosurfacesAdd_withValue ()

    void        panelIsosurfacesAdd_withValue   (gchar *filename,
                                                 float value,
                                                 gchar *name);

Create and add a surface created from the given scalar field. This field must already be loaded. If `name` is not given, the surface will be called "Isosurface id" where id is an increasing counter.

`filename` : | the name of the scalar field from which to add a surface ;
`value` : | the iso value ;
`name` : | the name used to identify the new surface (can be NULL).

### panelIsosurfacesEdit_surfaceProperties ()

    void        panelIsosurfacesEdit_surfaceProperties
                                                (gboolean flag);

Opens a new window allowing to edit surface properties.

`flag` : | if TRUE, edit the properties of the selected surface only (or all surfaces of one selected file only). If FALSE, don't take into account the selection and change properties of all surfaces.

### panelIsosurfacesLoad_file ()

    int         panelIsosurfacesLoad_file       (const char *file_name,
                                                 gboolean fit_to_box,
                                                 VisuData *data,
                                                 OptionTable *table);

Tries to load the given `file_name` and if it succeeds, adds loaded surfaces to the isosurfaces panel. In all cases, all previously loaded surfaces are removed from the panel (and from memory).

`file_name` : | the file you want to try to load
`fit_to_box` : | whether these isosurfaces should be resized in order to fit to the current VisuBox ;
`data` : | the VisuData to fit the box to (can be NULL if `fit_to_box` is false ;
`table` : | a set of different Option (can be NULL).
Returns : | 0 in case of success, n != 0 otherwise.

### panelIsosurfacesShow_all ()

    gboolean    panelIsosurfacesShow_all        (gboolean show);

`show` : |
Returns : |