view src/xs_curve.h @ 370:df6f12a00305

Work on filter curve widget begins, based on GtkCurve widget from Gtk+ 1.2.10.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 09 Nov 2005 05:52:01 +0000
parents 4f247b19c9ea
children 58079c6180a0
line wrap: on
line source

#ifndef _XS_CURVE_H
#define _XS_CURVE_H

#include <gdk/gdk.h>
#include <gtk/gtkdrawingarea.h>

#ifdef __cplusplus
extern "C" {
#endif


#define XS_TYPE_CURVE                  (xs_curve_get_type ())
#define XS_CURVE(obj)                  (GTK_CHECK_CAST ((obj), XS_TYPE_CURVE, XSCurve))
#define XS_CURVE_CLASS(luokka)          (GTK_CHECK_CLASS_CAST ((luokka), XS_TYPE_CURVE, XSCurveClass))
#define XS_IS_CURVE(obj)               (GTK_CHECK_TYPE ((obj), XS_TYPE_CURVE))
#define XS_IS_CURVE_CLASS(luokka)       (GTK_CHECK_CLASS_TYPE ((luokka), XS_TYPE_CURVE))


typedef struct _XSCurve	XSCurve;
typedef struct _XSCurveClass	XSCurveClass;


struct _XSCurve
{
  GtkDrawingArea graph;

  gint cursor_type;
  gfloat min_x;
  gfloat max_x;
  gfloat min_y;
  gfloat max_y;
  GdkPixmap *pixmap;
  GtkCurveType curve_type;
  gint height;                  /* (cached) graph height in pixels */
  gint grab_point;              /* point currently grabbed */
  gint last;

  /* (cached) curve points: */
  gint num_points;
  GdkPoint *point;

  /* control points: */
  gint num_ctlpoints;           /* number of control points */
  gfloat (*ctlpoint)[2];        /* array of control points */
};

struct _XSCurveClass
{
  GtkDrawingAreaClass parent_class;

  void (* curve_type_changed) (XSCurve *curve);
};


GtkType		xs_curve_get_type	(void);
GtkWidget*	xs_curve_new		(void);
void		xs_curve_reset		(XSCurve *curve);
void		xs_curve_set_gamma	(XSCurve *curve, gfloat gamma);
void		xs_curve_set_range	(XSCurve *curve,
					 gfloat min_x, gfloat max_x,
					 gfloat min_y, gfloat max_y);
void		xs_curve_get_vector	(XSCurve *curve,
					 int veclen, gfloat vector[]);
void		xs_curve_set_vector	(XSCurve *curve,
					 int veclen, gfloat vector[]);
void		xs_curve_set_curve_type (XSCurve *curve, GtkCurveType type);


#ifdef __cplusplus
}
#endif

#endif /* _XS_CURVE_H */