24
24
#include <glib-object.h>
26
#include "libgimpcolor/gimpcolor.h"
28
26
#include "core-types.h"
30
#include "config/gimpbaseconfig.h"
29
#include "gimp-gradients.h"
30
#include "gimpcontext.h"
33
31
#include "gimpcontainer.h"
34
#include "gimpcontext.h"
35
32
#include "gimpdatafactory.h"
36
33
#include "gimpgradient.h"
38
35
#include "gimp-intl.h"
41
#define FG_BG_RGB_KEY "gimp-fg-bg-rgb-gradient"
42
#define FG_BG_HSV_CCW_KEY "gimp-fg-bg-hsv-ccw-gradient"
43
#define FG_BG_HSV_CW_KEY "gimp-fg-bg-hsv-cw-gradient"
44
#define FG_TRANSPARENT_KEY "gimp-fg-transparent-gradient"
38
#define FG_BG_RGB_KEY "gimp-gradient-fg-bg-rgb"
39
#define FG_BG_HSV_CCW_KEY "gimp-gradient-fg-bg-hsv-ccw"
40
#define FG_BG_HSV_CW_KEY "gimp-gradient-fg-bg-hsv-cw"
41
#define FG_TRANSPARENT_KEY "gimp-gradient-fg-transparent"
47
44
/* local function prototypes */
49
static GimpGradient * gimp_gradients_add_gradient (Gimp *gimp,
52
static void gimp_gradients_foreground_changed (GimpContext *context,
55
static void gimp_gradients_background_changed (GimpContext *context,
46
static GimpGradient * gimp_gradients_add_gradient (Gimp *gimp,
60
51
/* public functions */
84
75
gradient = gimp_gradients_add_gradient (gimp,
85
76
_("FG to Transparent"),
86
77
FG_TRANSPARENT_KEY);
87
gimp_rgba_set (&gradient->segments->right_color,
88
gradient->segments->left_color.r,
89
gradient->segments->left_color.g,
90
gradient->segments->left_color.b,
93
g_signal_connect (gimp->user_context, "foreground_changed",
94
G_CALLBACK (gimp_gradients_foreground_changed),
96
g_signal_connect (gimp->user_context, "background_changed",
97
G_CALLBACK (gimp_gradients_background_changed),
78
gradient->segments->right_color_type = GIMP_GRADIENT_COLOR_FOREGROUND_TRANSPARENT;
106
86
const gchar *name,
109
GimpBaseConfig *base_config;
110
GimpGradient *gradient;
112
base_config = GIMP_BASE_CONFIG (gimp->config);
114
gradient = GIMP_GRADIENT (gimp_gradient_new (name,
115
base_config->stingy_memory_use));
89
GimpGradient *gradient = GIMP_GRADIENT (gimp_gradient_new (name));
117
91
gimp_data_make_internal (GIMP_DATA (gradient));
119
gimp_context_get_foreground (gimp->user_context,
120
&gradient->segments->left_color);
121
gimp_context_get_background (gimp->user_context,
122
&gradient->segments->right_color);
93
gradient->segments->left_color_type = GIMP_GRADIENT_COLOR_FOREGROUND;
94
gradient->segments->right_color_type = GIMP_GRADIENT_COLOR_BACKGROUND;
124
96
gimp_container_add (gimp->gradient_factory->container,
125
97
GIMP_OBJECT (gradient));
134
gimp_gradients_foreground_changed (GimpContext *context,
138
GimpGradient *gradient;
140
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_RGB_KEY);
144
gradient->segments->left_color = *fg;
145
gimp_data_dirty (GIMP_DATA (gradient));
148
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CCW_KEY);
152
gradient->segments->left_color = *fg;
153
gimp_data_dirty (GIMP_DATA (gradient));
156
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CW_KEY);
160
gradient->segments->left_color = *fg;
161
gimp_data_dirty (GIMP_DATA (gradient));
164
gradient = g_object_get_data (G_OBJECT (gimp), FG_TRANSPARENT_KEY);
168
gradient->segments->left_color = *fg;
169
gradient->segments->right_color = *fg;
170
gradient->segments->right_color.a = 0.0;
171
gimp_data_dirty (GIMP_DATA (gradient));
176
gimp_gradients_background_changed (GimpContext *context,
180
GimpGradient *gradient;
182
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_RGB_KEY);
186
gradient->segments->right_color = *bg;
187
gimp_data_dirty (GIMP_DATA (gradient));
190
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CCW_KEY);
194
gradient->segments->right_color = *bg;
195
gimp_data_dirty (GIMP_DATA (gradient));
198
gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CW_KEY);
202
gradient->segments->right_color = *bg;
203
gimp_data_dirty (GIMP_DATA (gradient));