~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to app/core/gimp-gradients.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2007-05-02 16:33:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070502163303-bvzhjzbpw8qglc4y
Tags: 2.3.16-1ubuntu1
* Resynchronized with Debian, remaining Ubuntu changes:
  - debian/rules: i18n magic.
* debian/control.in:
  - Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch,
  debian/patches/10_dont_show_wizard.patch: updated.
* debian/patches/04_composite-signedness.patch,
  debian/patches/05_add-letter-spacing.patch: dropped, used upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* The GIMP -- an image manipulation program
 
1
/* GIMP - The GNU Image Manipulation Program
2
2
 * Copyright (C) 1995-2002 Spencer Kimball, Peter Mattis, and others
3
3
 *
4
4
 * gimp-gradients.c
23
23
 
24
24
#include <glib-object.h>
25
25
 
26
 
#include "libgimpcolor/gimpcolor.h"
27
 
 
28
26
#include "core-types.h"
29
27
 
30
 
#include "config/gimpbaseconfig.h"
31
 
 
32
28
#include "gimp.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"
37
34
 
38
35
#include "gimp-intl.h"
39
36
 
40
37
 
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"
45
42
 
46
43
 
47
44
/*  local function prototypes  */
48
45
 
49
 
static GimpGradient * gimp_gradients_add_gradient       (Gimp          *gimp,
50
 
                                                         const gchar   *name,
51
 
                                                         const gchar   *id);
52
 
static void           gimp_gradients_foreground_changed (GimpContext   *context,
53
 
                                                         const GimpRGB *fg,
54
 
                                                         Gimp          *gimp);
55
 
static void           gimp_gradients_background_changed (GimpContext   *context,
56
 
                                                         const GimpRGB *bg,
57
 
                                                         Gimp          *gimp);
 
46
static GimpGradient * gimp_gradients_add_gradient (Gimp        *gimp,
 
47
                                                   const gchar *name,
 
48
                                                   const gchar *id);
58
49
 
59
50
 
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,
91
 
                 0.0);
92
 
 
93
 
  g_signal_connect (gimp->user_context, "foreground_changed",
94
 
                    G_CALLBACK (gimp_gradients_foreground_changed),
95
 
                    gimp);
96
 
  g_signal_connect (gimp->user_context, "background_changed",
97
 
                    G_CALLBACK (gimp_gradients_background_changed),
98
 
                    gimp);
 
78
  gradient->segments->right_color_type = GIMP_GRADIENT_COLOR_FOREGROUND_TRANSPARENT;
99
79
}
100
80
 
101
81
 
106
86
                             const gchar *name,
107
87
                             const gchar *id)
108
88
{
109
 
  GimpBaseConfig *base_config;
110
 
  GimpGradient   *gradient;
111
 
 
112
 
  base_config = GIMP_BASE_CONFIG (gimp->config);
113
 
 
114
 
  gradient = GIMP_GRADIENT (gimp_gradient_new (name,
115
 
                                               base_config->stingy_memory_use));
 
89
  GimpGradient *gradient = GIMP_GRADIENT (gimp_gradient_new (name));
116
90
 
117
91
  gimp_data_make_internal (GIMP_DATA (gradient));
118
92
 
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;
123
95
 
124
96
  gimp_container_add (gimp->gradient_factory->container,
125
97
                      GIMP_OBJECT (gradient));
129
101
 
130
102
  return gradient;
131
103
}
132
 
 
133
 
static void
134
 
gimp_gradients_foreground_changed (GimpContext   *context,
135
 
                                   const GimpRGB *fg,
136
 
                                   Gimp          *gimp)
137
 
{
138
 
  GimpGradient *gradient;
139
 
 
140
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_RGB_KEY);
141
 
 
142
 
  if (gradient)
143
 
    {
144
 
      gradient->segments->left_color = *fg;
145
 
      gimp_data_dirty (GIMP_DATA (gradient));
146
 
    }
147
 
 
148
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CCW_KEY);
149
 
 
150
 
  if (gradient)
151
 
    {
152
 
      gradient->segments->left_color = *fg;
153
 
      gimp_data_dirty (GIMP_DATA (gradient));
154
 
    }
155
 
 
156
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CW_KEY);
157
 
 
158
 
  if (gradient)
159
 
    {
160
 
      gradient->segments->left_color = *fg;
161
 
      gimp_data_dirty (GIMP_DATA (gradient));
162
 
    }
163
 
 
164
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_TRANSPARENT_KEY);
165
 
 
166
 
  if (gradient)
167
 
    {
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));
172
 
    }
173
 
}
174
 
 
175
 
static void
176
 
gimp_gradients_background_changed (GimpContext   *context,
177
 
                                   const GimpRGB *bg,
178
 
                                   Gimp          *gimp)
179
 
{
180
 
  GimpGradient *gradient;
181
 
 
182
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_RGB_KEY);
183
 
 
184
 
  if (gradient)
185
 
    {
186
 
      gradient->segments->right_color = *bg;
187
 
      gimp_data_dirty (GIMP_DATA (gradient));
188
 
    }
189
 
 
190
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CCW_KEY);
191
 
 
192
 
  if (gradient)
193
 
    {
194
 
      gradient->segments->right_color = *bg;
195
 
      gimp_data_dirty (GIMP_DATA (gradient));
196
 
    }
197
 
 
198
 
  gradient = g_object_get_data (G_OBJECT (gimp), FG_BG_HSV_CW_KEY);
199
 
 
200
 
  if (gradient)
201
 
    {
202
 
      gradient->segments->right_color = *bg;
203
 
      gimp_data_dirty (GIMP_DATA (gradient));
204
 
    }
205
 
}