]> Pileus Git - ~andy/gtk/blob - gtk/gtkcurve.h
Initial revision
[~andy/gtk] / gtk / gtkcurve.h
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the Free
16  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18 #ifndef __GTK_CURVE_H__
19 #define __GTK_CURVE_H__
20
21
22 #include <gdk/gdk.h>
23 #include <gtk/gtkdrawingarea.h>
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif /* __cplusplus */
28
29
30 #define GTK_CURVE(obj)        GTK_CHECK_CAST (obj, gtk_curve_get_type (), GtkCurve)
31 #define GTK_CURVE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_curve_get_type, GtkCurveClass)
32 #define GTK_IS_CURVE(obj)     GTK_CHECK_TYPE (obj, gtk_curve_get_type ())
33
34
35 typedef struct _GtkCurve        GtkCurve;
36 typedef struct _GtkCurveClass   GtkCurveClass;
37
38 typedef enum
39 {
40   GTK_CURVE_TYPE_LINEAR,        /* linear interpolation */
41   GTK_CURVE_TYPE_SPLINE,        /* spline interpolation */
42   GTK_CURVE_TYPE_FREE           /* free form curve */
43 } GtkCurveType;
44
45 struct _GtkCurve
46 {
47   GtkDrawingArea graph;
48
49   gint cursor_type;
50   gfloat min_x;
51   gfloat max_x;
52   gfloat min_y;
53   gfloat max_y;
54   GdkPixmap *pixmap;
55   GtkCurveType curve_type;
56   gint height;                  /* (cached) graph height in pixels */
57   gint grab_point;              /* point currently grabbed */
58   gint last;
59
60   /* (cached) curve points: */
61   gint num_points;
62   GdkPoint *point;
63
64   /* control points: */
65   gint num_ctlpoints;           /* number of control points */
66   gfloat (*ctlpoint)[2];        /* array of control points */
67 };
68
69 struct _GtkCurveClass
70 {
71   GtkDrawingAreaClass parent_class;
72
73   void (* curve_type_changed) (GtkCurve *curve);
74 };
75
76
77 guint           gtk_curve_get_type      (void);
78 GtkWidget*      gtk_curve_new           (void);
79 void            gtk_curve_reset         (GtkCurve *curve);
80 void            gtk_curve_set_gamma     (GtkCurve *curve, gfloat gamma);
81 void            gtk_curve_set_range     (GtkCurve *curve,
82                                          gfloat min_x, gfloat max_x,
83                                          gfloat min_y, gfloat max_y);
84 void            gtk_curve_get_vector    (GtkCurve *curve,
85                                          int veclen, gfloat vector[]);
86 void            gtk_curve_set_vector    (GtkCurve *curve,
87                                          int veclen, gfloat vector[]);
88 void            gtk_curve_set_curve_type (GtkCurve *curve, GtkCurveType type);
89
90
91 #ifdef __cplusplus
92 }
93 #endif /* __cplusplus */
94
95
96 #endif /* __GTK_CURVE_H__ */