1 #ifndef SEEN_GRADIENT_SELECTOR_H
2 #define SEEN_GRADIENT_SELECTOR_H
4 /*
5 * Gradient vector and position widget
6 *
7 * Authors:
8 * Lauris Kaplinski <lauris@kaplinski.com>
9 * Jon A. Cruz <jon@joncruz.org>
10 *
11 * Copyright (C) 2001-2002 Lauris Kaplinski
12 * Copyright (C) 2001 Ximian, Inc.
13 * Copyright (C) 2010 Jon A. Cruz
14 *
15 * Released under GNU GPL, read the file 'COPYING' for more information
16 */
18 #include <glib.h>
19 #include <gtk/gtkvbox.h>
20 #include <vector>
21 #include "sp-gradient.h"
22 #include "sp-gradient-spread.h"
23 #include "sp-gradient-units.h"
25 class SPGradient;
27 #define SP_TYPE_GRADIENT_SELECTOR (sp_gradient_selector_get_type ())
28 #define SP_GRADIENT_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelector))
29 #define SP_GRADIENT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelectorClass))
30 #define SP_IS_GRADIENT_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_GRADIENT_SELECTOR))
31 #define SP_IS_GRADIENT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_SELECTOR))
35 struct SPGradientSelector {
36 GtkVBox vbox;
38 enum SelectorMode {
39 MODE_LINEAR,
40 MODE_RADIAL,
41 MODE_SWATCH
42 };
44 SelectorMode mode;
46 SPGradientUnits gradientUnits;
47 SPGradientSpread gradientSpread;
49 /* Vector selector */
50 GtkWidget *vectors;
52 /* Editing buttons */
53 GtkWidget *edit;
54 GtkWidget *add;
56 /* Position widget */
57 GtkWidget *position;
59 /* Spread selector */
60 GtkWidget *spread;
61 GtkWidget *spreadLbl;
63 bool safelyInit;
64 std::vector<GtkWidget*> nonsolid;
66 void setMode(SelectorMode mode);
67 void setUnits(SPGradientUnits units);
68 void setSpread(SPGradientSpread spread);
69 void setVector(SPDocument *doc, SPGradient *vector);
70 SPGradientUnits getUnits();
71 SPGradientSpread getSpread();
72 SPGradient *getVector();
73 };
75 struct SPGradientSelectorClass {
76 GtkVBoxClass parent_class;
78 void (* grabbed) (SPGradientSelector *sel);
79 void (* dragged) (SPGradientSelector *sel);
80 void (* released) (SPGradientSelector *sel);
81 void (* changed) (SPGradientSelector *sel);
82 };
84 GType sp_gradient_selector_get_type(void);
86 GtkWidget *sp_gradient_selector_new (void);
88 void sp_gradient_selector_set_bbox (SPGradientSelector *sel, gdouble x0, gdouble y0, gdouble x1, gdouble y1);
90 #endif // SEEN_GRADIENT_SELECTOR_H
93 /*
94 Local Variables:
95 mode:c++
96 c-file-style:"stroustrup"
97 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
98 indent-tabs-mode:nil
99 fill-column:99
100 End:
101 */
102 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :