## GwyGraphBasics

GwyGraphBasics — Common graph functions and utilities

## Synopsis

    #include <libgwydgets/gwydgets.h>

                        GwyGraphActiveAreaSpecs;
    void                gwy_graph_draw_point                (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x,
                                                             gint y,
                                                             GwyGraphPointType type,
                                                             gint size,
                                                             const GwyRGBA *color);
    void                gwy_graph_draw_line                 (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x_from,
                                                             gint y_from,
                                                             gint x_to,
                                                             gint y_to,
                                                             GdkLineStyle line_style,
                                                             gint size,
                                                             const GwyRGBA *color);
    void                gwy_graph_draw_curve                (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwyGraphCurveModel *gcmodel);
    void                gwy_graph_draw_selection_points     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphPoint *selection);
    void                gwy_graph_draw_selection_areas      (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphArea *selection);
    void                gwy_graph_draw_selection_lines      (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphLine *selection,
                                                             GtkOrientation orientation);
    void                gwy_graph_draw_selection_xareas     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraph1DArea *selection);
    void                gwy_graph_draw_selection_yareas     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraph1DArea *selection);
    void                gwy_graph_draw_grid                 (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             guint nxdata,
                                                             const gdouble *x_grid_data,
                                                             guint nydata,
                                                             const gdouble *y_grid_data);
    const GwyRGBA*      gwy_graph_get_preset_color          (guint i);
    guint               gwy_graph_get_n_preset_colors       (void);

## Description

## Details

### GwyGraphActiveAreaSpecs

    typedef struct {
        gint xmin;
        gint ymin;
        gint height;
        gint width;
        gdouble real_xmin;
        gdouble real_ymin;
        gdouble real_height;
        gdouble real_width;
        gboolean log_x;
        gboolean log_y;
    } GwyGraphActiveAreaSpecs;

Graph area specification (for graph drawing primitives).

gint `xmin`; | X offset of the active area with respect to drawable left border.
gint `ymin`; | Y offset of the active area with respect to drawable top border.
gint `height`; | Active area height in pixels.
gint `width`; | Active area width pixels.
gdouble `real_xmin`; | Minimum x value in real units.
gdouble `real_ymin`; | Minimum y value in real units.
gdouble `real_height`; | Area height in real units.
gdouble `real_width`; | Area width in real units.
gboolean `log_x`; | `TRUE` if x-axis is logarithmic.
gboolean `log_y`; | `TRUE` if y-axis is logarithmic.

### gwy_graph_draw_point ()

    void                gwy_graph_draw_point                (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x,
                                                             gint y,
                                                             GwyGraphPointType type,
                                                             gint size,
                                                             const GwyRGBA *color);

Draws a point on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`x` : | X coordinate of the point.
`y` : | Y coordinate of the point.
`type` : | graph point type
`size` : | point size
`color` : | point color

### gwy_graph_draw_line ()

    void                gwy_graph_draw_line                 (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x_from,
                                                             gint y_from,
                                                             gint x_to,
                                                             gint y_to,
                                                             GdkLineStyle line_style,
                                                             gint size,
                                                             const GwyRGBA *color);

Draws a line segment on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`x_from` : | x coordinate of the start point of the line
`y_from` : | y coordinate of the start point of the line
`x_to` : | x coordinate of the end point of the line
`y_to` : | y coordinate of the end point of the line
`line_style` : | graph line style
`size` : | point size
`color` : | point color

### gwy_graph_draw_curve ()

    void                gwy_graph_draw_curve                (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwyGraphCurveModel *gcmodel);

Draws a single graph curve on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`gcmodel` : | Curve model of the curve to draw.

### gwy_graph_draw_selection_points ()

    void                gwy_graph_draw_selection_points     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphPoint *selection);

Draws selection points on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context.
`specs` : | Specifications (boundaries) of the active area of the graph.
`selection` : | A selection of type GwySelectionGraphPoint.

### gwy_graph_draw_selection_areas ()

    void                gwy_graph_draw_selection_areas      (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphArea *selection);

Draws selected area on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`selection` : | A selection of type GwySelectionGraphArea.

### gwy_graph_draw_selection_lines ()

    void                gwy_graph_draw_selection_lines      (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraphLine *selection,
                                                             GtkOrientation orientation);

Draws selected lines on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`selection` : | a GwySelectionGraphLine structure
`orientation` : | horizontal or vertical orientation

### gwy_graph_draw_selection_xareas ()

    void                gwy_graph_draw_selection_xareas     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraph1DArea *selection);

Draws selected x-area on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`selection` : | A selection of type GwySelectionGraph1DArea.

### gwy_graph_draw_selection_yareas ()

    void                gwy_graph_draw_selection_yareas     (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             GwySelectionGraph1DArea *selection);

Drawss selected y-area on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`selection` : | A selection of type GwySelectionGraph1DArea.

### gwy_graph_draw_grid ()

    void                gwy_graph_draw_grid                 (GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             GwyGraphActiveAreaSpecs *specs,
                                                             guint nxdata,
                                                             const gdouble *x_grid_data,
                                                             guint nydata,
                                                             const gdouble *y_grid_data);

Draws an array of grid lines on a drawable.

`drawable` : | A drawable.
`gc` : | Graphics context. It is modified by this function unpredictably.
`specs` : | Specifications (boundaries) of the active area of the graph.
`nxdata` : | Number of x grid positions.
`x_grid_data` : | Array of grid data for the x-axis, it can be `NULL` if `nxdata` is zero.
`nydata` : | Number of y grid positions.
`y_grid_data` : | Array of grid data for the y-axis, it can be `NULL` if `nydata` is zero.

### gwy_graph_get_preset_color ()

    const GwyRGBA*      gwy_graph_get_preset_color          (guint i);

Gets a preset graph color.

Preset colors are a set of selected colors one can use to distingush graph curves when there is no reason to prefer a particular color. Note they can occasionally change between version, even their number can change.

`i` : | Color number, starting from 0 which is always black. It can be any number but colors start to repeat after `gwy_graph_get_n_preset_colors()` colors.
Returns : | A constant color that must not be neither modified nor freed.

### gwy_graph_get_n_preset_colors ()

    guint               gwy_graph_get_n_preset_colors       (void);

Gets the number of distinct colors `gwy_graph_get_preset_color()` can return.

Returns : | The number of distinct colors.