## GwyGraphArea

GwyGraphArea — Layout for drawing graph curves

## Synopsis

    #include <libgwydgets/gwydgets.h>

                        GwyGraphArea;
                        GwyGraphAreaClass;
    GtkWidget*          gwy_graph_area_new                  (void);
    GtkWidget*          gwy_graph_area_get_label            (GwyGraphArea *area);
    void                gwy_graph_area_set_model            (GwyGraphArea *area,
                                                             GwyGraphModel *gmodel);
    GwyGraphModel*      gwy_graph_area_get_model            (GwyGraphArea *area);
    void                gwy_graph_area_get_cursor           (GwyGraphArea *area,
                                                             gdouble *x_cursor,
                                                             gdouble *y_cursor);
    void                gwy_graph_area_set_x_range          (GwyGraphArea *area,
                                                             gdouble x_min,
                                                             gdouble x_max);
    void                gwy_graph_area_set_y_range          (GwyGraphArea *area,
                                                             gdouble y_min,
                                                             gdouble y_max);
    void                gwy_graph_area_set_x_grid_data      (GwyGraphArea *area,
                                                             guint ndata,
                                                             const gdouble *grid_data);
    void                gwy_graph_area_set_y_grid_data      (GwyGraphArea *area,
                                                             guint ndata,
                                                             const gdouble *grid_data);
    const gdouble*      gwy_graph_area_get_x_grid_data      (GwyGraphArea *area,
                                                             guint *ndata);
    const gdouble*      gwy_graph_area_get_y_grid_data      (GwyGraphArea *area,
                                                             guint *ndata);
    GwySelection*       gwy_graph_area_get_selection        (GwyGraphArea *area,
                                                             GwyGraphStatusType status_type);
    void                gwy_graph_area_set_status           (GwyGraphArea *area,
                                                             GwyGraphStatusType status_type);
    GwyGraphStatusType  gwy_graph_area_get_status           (GwyGraphArea *area);
    void                gwy_graph_area_draw_on_drawable     (GwyGraphArea *area,
                                                             GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height);
    GString*            gwy_graph_area_export_vector        (GwyGraphArea *area,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height);
    void                gwy_graph_area_enable_user_input    (GwyGraphArea *area,
                                                             gboolean enable);
    void                gwy_graph_area_edit_curve           (GwyGraphArea *area,
                                                             gint id);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkObject
                   +----GtkWidget
                         +----GtkContainer
                               +----GtkLayout
                                     +----GwyGraphArea

## Implemented Interfaces

GwyGraphArea implements AtkImplementorIface and GtkBuildable.

## Properties

      "status"                   GwyGraphStatusType    : Read / Write

## Signals

      "edit-curve"                                     : Run First / Action

## Description

GwyGraphArea is the central part of GwyGraph widget. It plots a set of data curves with the given plot properties.

It is recommended to use it within GwyGraph, however, it can also be used separately.

## Details

### GwyGraphArea

    typedef struct _GwyGraphArea GwyGraphArea;

### GwyGraphAreaClass

    typedef struct {
        GtkLayoutClass parent_class;

        void (*edit_curve)(GwyGraphArea *area,
                           gint id);
        void (*reserved2)(void);
    } GwyGraphAreaClass;

### gwy_graph_area_new ()

    GtkWidget*          gwy_graph_area_new                  (void);

Creates a new graph area widget.

Returns : | Newly created graph area as GtkWidget.

### gwy_graph_area_get_label ()

    GtkWidget*          gwy_graph_area_get_label            (GwyGraphArea *area);

Gets the label inside a graph area.

`area` : | A graph area.
Returns : | The graph label widget within the graph area.

### gwy_graph_area_set_model ()

    void                gwy_graph_area_set_model            (GwyGraphArea *area,
                                                             GwyGraphModel *gmodel);

Sets the graph model of a graph area.

`area` : | A graph area.
`gmodel` : | New graph model.

### gwy_graph_area_get_model ()

    GwyGraphModel*      gwy_graph_area_get_model            (GwyGraphArea *area);

Gets the model of a graph area.

`area` : | A graph area.
Returns : | The graph model this graph area widget displays.

### gwy_graph_area_get_cursor ()

    void                gwy_graph_area_get_cursor           (GwyGraphArea *area,
                                                             gdouble *x_cursor,
                                                             gdouble *y_cursor);

Gets mouse cursor related values within a graph area.

`area` : | A graph area.
`x_cursor` : | Location to store the x value corresponding to cursor position.
`y_cursor` : | Location to store the y value corresponding to cursor position.

### gwy_graph_area_set_x_range ()

    void                gwy_graph_area_set_x_range          (GwyGraphArea *area,
                                                             gdouble x_min,
                                                             gdouble x_max);

Sets the horizontal range a graph area displays.

`area` : | A graph area.
`x_min` : | The minimum x value, in real coodrinates.
`x_max` : | The maximum x value, in real coodrinates.

### gwy_graph_area_set_y_range ()

    void                gwy_graph_area_set_y_range          (GwyGraphArea *area,
                                                             gdouble y_min,
                                                             gdouble y_max);

Sets the vertical range a graph area displays.

`area` : | A graph area.
`y_min` : | The minimum y value, in real coodrinates.
`y_max` : | The maximum y value, in real coodrinates.

### gwy_graph_area_set_x_grid_data ()

    void                gwy_graph_area_set_x_grid_data      (GwyGraphArea *area,
                                                             guint ndata,
                                                             const gdouble *grid_data);

Sets the grid data on the x-axis of a graph area

`area` : | A graph area.
`ndata` : | The number of points in `grid_data`.
`grid_data` : | Array of grid line positions on the x-axis (in real values, not pixels).

### gwy_graph_area_set_y_grid_data ()

    void                gwy_graph_area_set_y_grid_data      (GwyGraphArea *area,
                                                             guint ndata,
                                                             const gdouble *grid_data);

Sets the grid data on the y-axis of a graph area

`area` : |
`ndata` : | The number of points in `grid_data`.
`grid_data` : | Array of grid line positions on the y-axis (in real values, not pixels).

### gwy_graph_area_get_x_grid_data ()

    const gdouble*      gwy_graph_area_get_x_grid_data      (GwyGraphArea *area,
                                                             guint *ndata);

Gets the grid data on the x-axis of a graph area.

`area` : | A graph area.
`ndata` : | Location to store the number of returned positions.
Returns : | Array of grid line positions (in real values, not pixels) owned by the graph area.

### gwy_graph_area_get_y_grid_data ()

    const gdouble*      gwy_graph_area_get_y_grid_data      (GwyGraphArea *area,
                                                             guint *ndata);

Gets the grid data on the y-axis of a graph area.

`area` : | A graph area.
`ndata` : | Location to store the number of returned positions.
Returns : | Array of grid line positions (in real values, not pixels) owned by the graph area.

### gwy_graph_area_get_selection ()

    GwySelection*       gwy_graph_area_get_selection        (GwyGraphArea *area,
                                                             GwyGraphStatusType status_type);

Gets the selection object corresponding to a status of a graph area.

A selection object exists even for inactive status types (selection modes), therefore also selections for other modes than the currently active one can be requested.

`area` : | A graph area.
`status_type` : | Graph status. Value `GWY_GRAPH_STATUS_PLAIN` mode (which has no selection associated) stands for the currentl selection mode.
Returns : | The requested selection. It is `NULL` only if `status_type` is `GWY_GRAPH_STATUS_PLAIN` and the current selection mode is `GWY_GRAPH_STATUS_PLAIN`.

### gwy_graph_area_set_status ()

    void                gwy_graph_area_set_status           (GwyGraphArea *area,
                                                             GwyGraphStatusType status_type);

Sets the status of a graph area.

When the area is inside a GwyGraph, use `gwy_graph_set_status()` instead (also see this function for details).

`area` : | A graph area.
`status_type` : | New graph area status.

### gwy_graph_area_get_status ()

    GwyGraphStatusType  gwy_graph_area_get_status           (GwyGraphArea *area);

Gets the status of a grap area.

See `gwy_graph_area_set_status()`.

`area` : | A graph area.
Returns : | The current graph area status.

### gwy_graph_area_draw_on_drawable ()

    void                gwy_graph_area_draw_on_drawable     (GwyGraphArea *area,
                                                             GdkDrawable *drawable,
                                                             GdkGC *gc,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height);

Draws a graph area to a Gdk drawable.

`area` : | A graph area.
`drawable` : | a GdkDrawable (destination for graphics operations)
`gc` : | Graphics context. It is modified by this function unpredictably.
`x` : | X position in `drawable` where the graph area should be drawn
`y` : | Y position in `drawable` where the graph area should be drawn
`width` : | width of the graph area on the drawable
`height` : | height of the graph area on the drawable

### gwy_graph_area_export_vector ()

    GString*            gwy_graph_area_export_vector        (GwyGraphArea *area,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height);

Creates PostScript representation of a graph area.

`area` : | A graph area.
`x` : |
`y` : |
`width` : |
`height` : |
Returns : | A fragment of PostScript code representing the the graph area as a newly allocated GString.

### gwy_graph_area_enable_user_input ()

    void                gwy_graph_area_enable_user_input    (GwyGraphArea *area,
                                                             gboolean enable);

Enables/disables all user input dialogs (invoked by clicking the mouse).

`area` : | A graph area.
`enable` : | `TRUE` to enable user interaction, `FALSE` to disable it.

### gwy_graph_area_edit_curve ()

    void                gwy_graph_area_edit_curve           (GwyGraphArea *area,
                                                             gint id);

Invokes the curve property dialog for a curve.

If the dialog is already displayed, it is switched to the requested curve.

`area` : | A graph area.
`id` : | The index of the curve to edit properties of.

Since 2.5

## Property Details

### The `"status"` property

      "status"                   GwyGraphStatusType    : Read / Write

The type of reaction to mouse events (zoom, selections).

Default value: GWY_GRAPH_STATUS_PLAIN

## Signal Details

### The `"edit-curve"` signal

    void                user_function                      (GwyGraphArea *gwygraphcurvemodel,
                                                            gint          arg1,
                                                            gpointer      user_data)               : Run First / Action

The ::data-changed signal is emitted when a curve properties are to be edited.

`gwygraphcurvemodel` : | The GwyGraphArea which received the signal.
`arg1` : | The index of the curve to edit.
`user_data` : | user data set when the signal handler was connected.

Since 2.5