## context

context — Libg3d initialization and configuration

## Synopsis

    #include <g3d/g3d.h>

                        G3DContext;
    G3DContext *        g3d_context_new                     (void);
    void                g3d_context_free                    (G3DContext *context);
    gboolean            (*G3DSetBgColorFunc)                (G3DFloat r,
                                                             G3DFloat g,
                                                             G3DFloat b,
                                                             G3DFloat a,
                                                             gpointer user_data);
    gboolean            (*G3DUpdateInterfaceFunc)           (gpointer user_data);
    gboolean            (*G3DUpdateProgressBarFunc)         (G3DFloat percentage,
                                                             gboolean show,
                                                             gpointer user_data);
    gboolean            g3d_context_update_interface        (G3DContext *context);
    void                g3d_context_set_update_interface_func
                                                            (G3DContext *context,
                                                             G3DUpdateInterfaceFunc func,
                                                             gpointer user_data);
    gboolean            g3d_context_update_progress_bar     (G3DContext *context,
                                                             G3DFloat percentage,
                                                             gboolean visibility);
    void                g3d_context_set_update_progress_bar_func
                                                            (G3DContext *context,
                                                             G3DUpdateProgressBarFunc func,
                                                             gpointer user_data);
    gboolean            g3d_context_set_bgcolor             (G3DContext *context,
                                                             G3DFloat r,
                                                             G3DFloat g,
                                                             G3DFloat b,
                                                             G3DFloat a);
    void                g3d_context_set_set_bgcolor_func    (G3DContext *context,
                                                             G3DSetBgColorFunc func,
                                                             gpointer user_data);

## Description

All state information is saved in the context. It also serves as an interface to the application.

## Details

### G3DContext

    typedef struct {
    } G3DContext;

Internal stuff for libg3d.

### g3d_context_new ()

    G3DContext *        g3d_context_new                     (void);

Create a new context. This initializes the library (and also the plugin system so this has not to be done seperately).

Returns : | a valid context, or NULL on failure.

### g3d_context_free ()

    void                g3d_context_free                    (G3DContext *context);

Cleans up the context and the plugin system and frees all reserved memory.

`context` : | the context to free

### G3DSetBgColorFunc ()

    gboolean            (*G3DSetBgColorFunc)                (G3DFloat r,
                                                             G3DFloat g,
                                                             G3DFloat b,
                                                             G3DFloat a,
                                                             gpointer user_data);

Background color setting callback.

`r` : | red component
`g` : | green component
`b` : | blue component
`a` : | alpha component
`user_data` : | opaque data as given to `g3d_context_set_set_bgcolor_func()`
Returns : | TRUE on success, FALSE else.

### G3DUpdateInterfaceFunc ()

    gboolean            (*G3DUpdateInterfaceFunc)           (gpointer user_data);

Interface updating callback.

`user_data` : | opaque data as given to `g3d_context_set_update_interface_func()`
Returns : | TRUE on success, FALSE else.

### G3DUpdateProgressBarFunc ()

    gboolean            (*G3DUpdateProgressBarFunc)         (G3DFloat percentage,
                                                             gboolean show,
                                                             gpointer user_data);

Progress updating callback.

`percentage` : | progress of plugin operation
`show` : | TRUE if the progress bar should be visible, FALSE else
`user_data` : | opaque data as given to `g3d_context_set_update_progress_bar_func()`
Returns : | TRUE on success, FALSE else.

### g3d_context_update_interface ()

    gboolean            g3d_context_update_interface        (G3DContext *context);

Try to update the interface. This will call a function registered with `g3d_context_set_update_interface_func`.

`context` : | a valid context
Returns : | TRUE on success, FALSE else

### g3d_context_set_update_interface_func ()

    void                g3d_context_set_update_interface_func
                                                            (G3DContext *context,
                                                             G3DUpdateInterfaceFunc func,
                                                             gpointer user_data);

Registers a callback function for updating the interface.

`context` : | a valid context
`func` : | the callback function
`user_data` : | user-defined opaque pointer

### g3d_context_update_progress_bar ()

    gboolean            g3d_context_update_progress_bar     (G3DContext *context,
                                                             G3DFloat percentage,
                                                             gboolean visibility);

Try to update the progress bar.

`context` : | a valid context
`percentage` : | the percentage to set on the progress bar
`visibility` : | show or hide the progress bar
Returns : | TRUE on success, FALSE else

### g3d_context_set_update_progress_bar_func ()

    void                g3d_context_set_update_progress_bar_func
                                                            (G3DContext *context,
                                                             G3DUpdateProgressBarFunc func,
                                                             gpointer user_data);

Registers a callback function for updating the progress bar.

`context` : | a valid context
`func` : | the callback function
`user_data` : | user-defined opaque pointer

### g3d_context_set_bgcolor ()

    gboolean            g3d_context_set_bgcolor             (G3DContext *context,
                                                             G3DFloat r,
                                                             G3DFloat g,
                                                             G3DFloat b,
                                                             G3DFloat a);

Try to set the background color. This will call a function registered with `g3d_context_set_set_bgcolor_func`.

`context` : | a valid context
`r` : | red component (range: 0.0 .. 1.0)
`g` : | green component (range: 0.0 .. 1.0)
`b` : | green component (range: 0.0 .. 1.0)
`a` : | alpha component
Returns : | TRUE on success, FALSE else

### g3d_context_set_set_bgcolor_func ()

    void                g3d_context_set_set_bgcolor_func    (G3DContext *context,
                                                             G3DSetBgColorFunc func,
                                                             gpointer user_data);

Registers a callback function for setting the background color.

`context` : | a valid context
`func` : | the callback function
`user_data` : | user-defined opaque pointer

## See Also

G3DContext