Code

Initial F&S dialog setting of swatch colors.
[inkscape.git] / src / widgets / paint-selector.h
1 #ifndef SEEN_SP_PAINT_SELECTOR_H
2 #define SEEN_SP_PAINT_SELECTOR_H
4 /** \file
5  * Generic paint selector widget
6  *
7  * Authors:
8  *   Lauris
9  *   Jon A. Cruz <jon@joncruz.org>
10  *
11  * Copyright (C) Lauris 2002
12  * Copyright (C) 2010 Authors
13  *
14  */
16 #include <glib.h>
17 #include "sp-gradient-spread.h"
18 #include "sp-gradient-units.h"
20 class SPGradient;
22 #define SP_TYPE_PAINT_SELECTOR (sp_paint_selector_get_type ())
23 #define SP_PAINT_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_PAINT_SELECTOR, SPPaintSelector))
24 #define SP_PAINT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_PAINT_SELECTOR, SPPaintSelectorClass))
25 #define SP_IS_PAINT_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_PAINT_SELECTOR))
26 #define SP_IS_PAINT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_PAINT_SELECTOR))
28 #include <gtk/gtkvbox.h>
30 #include "../forward.h"
31 #include <color.h>
32 #include <libnr/nr-forward.h>
34 typedef enum {
35     SP_PAINT_SELECTOR_MODE_EMPTY,
36     SP_PAINT_SELECTOR_MODE_MULTIPLE,
37     SP_PAINT_SELECTOR_MODE_NONE,
38     SP_PAINT_SELECTOR_MODE_COLOR_RGB,
39     SP_PAINT_SELECTOR_MODE_COLOR_CMYK,
40     SP_PAINT_SELECTOR_MODE_GRADIENT_LINEAR,
41     SP_PAINT_SELECTOR_MODE_GRADIENT_RADIAL,
42     SP_PAINT_SELECTOR_MODE_PATTERN,
43     SP_PAINT_SELECTOR_MODE_SWATCH,
44     SP_PAINT_SELECTOR_MODE_UNSET
45 } SPPaintSelectorMode;
47 typedef enum {
48     SP_PAINT_SELECTOR_FILLRULE_NONZERO,
49     SP_PAINT_SELECTOR_FILLRULE_EVENODD
50 } SPPaintSelectorFillRule;
52 /// Generic paint selector widget
53 struct SPPaintSelector {
54     GtkVBox vbox;
56     guint update : 1;
58     SPPaintSelectorMode mode;
60     GtkWidget *style;
61     GtkWidget *none;
62     GtkWidget *solid;
63     GtkWidget *gradient;
64     GtkWidget *radial;
65     GtkWidget *pattern;
66     GtkWidget *swatch;
67     GtkWidget *unset;
69     GtkWidget *fillrulebox;
70     GtkWidget *evenodd, *nonzero;
72     GtkWidget *frame, *selector;
74     SPColor color;
75     float alpha;
76 };
78 /// The SPPaintSelector vtable
79 struct SPPaintSelectorClass {
80     GtkVBoxClass parent_class;
82     void (* mode_changed) (SPPaintSelector *psel, SPPaintSelectorMode mode);
84     void (* grabbed) (SPPaintSelector *psel);
85     void (* dragged) (SPPaintSelector *psel);
86     void (* released) (SPPaintSelector *psel);
87     void (* changed) (SPPaintSelector *psel);
88     void (* fillrule_changed) (SPPaintSelector *psel, SPPaintSelectorFillRule fillrule);
89 };
91 GtkType sp_paint_selector_get_type (void);
93 GtkWidget *sp_paint_selector_new (bool is_fill);
95 void sp_paint_selector_set_mode (SPPaintSelector *psel, SPPaintSelectorMode mode);
96 void sp_paint_selector_set_fillrule (SPPaintSelector *psel, SPPaintSelectorFillRule fillrule);
98 void sp_paint_selector_set_color_alpha (SPPaintSelector *psel, const SPColor *color, float alpha);
100 void sp_paint_selector_set_gradient_linear (SPPaintSelector *psel, SPGradient *vector);
102 void sp_paint_selector_set_gradient_radial (SPPaintSelector *psel, SPGradient *vector);
104 void sp_paint_selector_set_swatch(SPPaintSelector *psel, SPGradient *vector );
106 void sp_paint_selector_set_gradient_properties (SPPaintSelector *psel, SPGradientUnits units, SPGradientSpread spread);
107 void sp_paint_selector_get_gradient_properties (SPPaintSelector *psel, SPGradientUnits *units, SPGradientSpread *spread);
109 void sp_gradient_selector_attrs_to_gradient (SPGradient *gr, SPPaintSelector *psel);
111 void sp_paint_selector_get_color_alpha (SPPaintSelector *psel, SPColor *color, gfloat *alpha);
113 SPGradient *sp_paint_selector_get_gradient_vector (SPPaintSelector *psel);
115 void sp_paint_selector_system_color_set (SPPaintSelector *psel, const SPColor *color, float opacity);
117 SPPattern * sp_paint_selector_get_pattern (SPPaintSelector *psel);
119 void sp_update_pattern_list ( SPPaintSelector *psel, SPPattern *pat);
121 void sp_paint_selector_set_flat_color (SPPaintSelector *psel, SPDesktop *desktop, const gchar *color_property, const gchar *opacity_property);
123 SPPaintSelectorMode sp_style_determine_paint_selector_mode (SPStyle *style, bool isfill);
125 #endif // SEEN_SP_PAINT_SELECTOR_H
127 /*
128   Local Variables:
129   mode:c++
130   c-file-style:"stroustrup"
131   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
132   indent-tabs-mode:nil
133   fill-column:99
134   End:
135 */
136 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :