## GwyCurve GwyCurve — Widget that displays editable curves |

## Functions

GtkWidget * | gwy_curve_new ()
void | gwy_curve_reset ()
void | gwy_curve_set_range ()
void | gwy_curve_set_curve_type ()
void | gwy_curve_set_channels ()
void | gwy_curve_set_control_points ()
void | gwy_curve_get_control_points ()

## Properties

GwyCurveType | curve-type | Read / Write
float | max-x | Read / Write
float | max-y | Read / Write
float | min-x | Read / Write
float | min-y | Read / Write
gboolean | snap | Read / Write

## Signals

void | curve-edited | Run First
void | curve-type-changed | Run First

## Types and Values

typedef | GwyPoint
| GwyChannelData
struct | GwyCurve
struct | GwyCurveClass

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkObject
                ╰── GtkWidget
                    ╰── GtkDrawingArea
                        ╰── GwyCurve

## Implemented Interfaces

GwyCurve implements AtkImplementorIface and GtkBuildable.

## Includes

    #include <libgwydgets/gwydgets.h>

## Description

GwyCurve is a widget that can display multiple curves. The user can edit these curves by clicking and dragging control points. New control points are created when a user clicks on a part of a curve where there are no control points. Control points can be deleted by dragging ontop of another control point.

## Functions

### gwy_curve_new ()

    GtkWidget *
    gwy_curve_new (void);

Creates GwyCurve widget. By default, the widget will have 3 curves.

#### Returns

new GwyCurve widget.

### gwy_curve_reset ()

    void
    gwy_curve_reset (GwyCurve *curve);

Removes all control points, resetting the curves to their initial state.

#### Parameters

curve | a GwyCurve widget. |

### gwy_curve_set_range ()

    void
    gwy_curve_set_range (GwyCurve *curve,
                         gdouble min_x,
                         gdouble max_x,
                         gdouble min_y,
                         gdouble max_y);

### gwy_curve_set_curve_type ()

    void
    gwy_curve_set_curve_type (GwyCurve *curve,
                              GwyCurveType type);

### gwy_curve_set_channels ()

    void
    gwy_curve_set_channels (GwyCurve *curve,
                            gint num_channels,
                            GwyRGBA *colors);

### gwy_curve_set_control_points ()

    void
    gwy_curve_set_control_points (GwyCurve *curve,
                                  GwyChannelData *channel_data,
                                  gboolean prune);

### gwy_curve_get_control_points ()

    void
    gwy_curve_get_control_points (GwyCurve *curve,
                                  GwyChannelData *channel_data,
                                  gboolean triplets);

## Types and Values

### GwyPoint

    typedef GwyXY GwyPoint;

### GwyChannelData

    typedef struct {
        /* curve points: */
        gint num_points;
        GwyPoint *points;

        /* control points: */
        gint num_ctlpoints;
        GwyPoint *ctlpoints;

        GwyRGBA color;
    } GwyChannelData;

### struct GwyCurve

    struct GwyCurve;

### struct GwyCurveClass

    struct GwyCurveClass {
        GtkDrawingAreaClass parent_class;

        /* Signals */
        void (*curve_type_changed)(GwyCurve *curve);
        void (*curve_edited)(GwyCurve *curve);

        /* Padding for future expansion */
        void (*_gwy_reserved1) (void);
        void (*_gwy_reserved2) (void);
        void (*_gwy_reserved3) (void);
        void (*_gwy_reserved4) (void);
    };

## Property Details

### The `“curve-type”` property

      “curve-type”               GwyCurveType

Is this curve linear, spline interpolated, or free-form.

Owner: GwyCurve

Flags: Read / Write

Default value: GWY_CURVE_TYPE_LINEAR

### The `“max-x”` property

      “max-x”                    float

Maximum possible X value.

Owner: GwyCurve

Flags: Read / Write

Default value: 1

### The `“max-y”` property

      “max-y”                    float

Maximum possible value for Y.

Owner: GwyCurve

Flags: Read / Write

Default value: 1

### The `“min-x”` property

      “min-x”                    float

Minimum possible value for X.

Owner: GwyCurve

Flags: Read / Write

Default value: 0

### The `“min-y”` property

      “min-y”                    float

Minimum possible value for Y.

Owner: GwyCurve

Flags: Read / Write

Default value: 0

### The `“snap”` property

      “snap”                     gboolean

Snap to control points mode.

Owner: GwyCurve

Flags: Read / Write

Default value: TRUE

## Signal Details

### The `“curve-edited”` signal

    void
    user_function (GwyCurve *gwycurve,
                   gpointer  user_data)

Flags: Run First

### The `“curve-type-changed”` signal

    void
    user_function (GwyCurve *gwycurve,
                   gpointer  user_data)

Flags: Run First