#ifndef GUTENPRINTUI_CURVE_H
#define GUTENPRINTUI_CURVE_H
#include <gdk/gdk.h>
#include <gtk/gtkdrawingarea.h>
#ifdef __cplusplus
extern "C" {
#endif
#define STPUI_TYPE_CURVE (stpui_curve_get_type ())
#define STPUI_CURVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STPUI_TYPE_CURVE, StpuiCurve))
#define STPUI_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STPUI_TYPE_CURVE, StpuiCurveClass))
#define STPUI_IS_CURVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STPUI_TYPE_CURVE))
#define STPUI_IS_CURVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STPUI_TYPE_CURVE))
#define STPUI_CURVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STPUI_TYPE_CURVE, StpuiCurveClass))
typedef enum
{
STPUI_CURVE_TYPE_LINEAR,
STPUI_CURVE_TYPE_SPLINE,
STPUI_CURVE_TYPE_FREE
} StpuiCurveType;
typedef struct _StpuiCurve StpuiCurve;
typedef struct _StpuiCurveClass StpuiCurveClass;
struct _StpuiCurve
{
GtkDrawingArea graph;
gint cursor_type;
gfloat min_x;
gfloat max_x;
gfloat min_y;
gfloat max_y;
GdkPixmap *pixmap;
StpuiCurveType curve_type;
gint height;
gint grab_point;
gint last;
gint num_points;
GdkPoint *point;
gint num_ctlpoints;
gfloat (*ctlpoint)[2];
};
struct _StpuiCurveClass
{
GtkDrawingAreaClass parent_class;
void (* curve_type_changed) (StpuiCurve *curve);
void (*_gtk_reserved1) (void);
void (*_gtk_reserved2) (void);
void (*_gtk_reserved3) (void);
void (*_gtk_reserved4) (void);
};
GType stpui_curve_get_type (void) G_GNUC_CONST;
GtkWidget* stpui_curve_new (void);
void stpui_curve_reset (StpuiCurve *curve);
void stpui_curve_set_gamma (StpuiCurve *curve, gfloat gamma_);
void stpui_curve_set_range (StpuiCurve *curve,
gfloat min_x, gfloat max_x,
gfloat min_y, gfloat max_y);
void stpui_curve_get_vector (StpuiCurve *curve,
int veclen, gfloat vector[]);
void stpui_curve_set_vector (StpuiCurve *curve,
int veclen, const gfloat vector[]);
void stpui_curve_set_curve_type (StpuiCurve *curve, StpuiCurveType type);
#ifdef __cplusplus
}
#endif
#endif