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