made gradient_get_color_at() use GimpRGB.
2001-01-20 Michael Natterer <mitch@gimp.org> * app/gradient.[ch]: made gradient_get_color_at() use GimpRGB. * app/airbrush.c * app/blend.c * app/gimpcontextpreview.c * app/gradient_select.c * app/paint_core.[ch] * app/paintbrush.c * app/palette.c * app/pencil.c * app/gradients_cmds.c * app/gradient_select_cmds.c * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/gradients.pdb: changed accordingly.
This commit is contained in:
parent
8571f45c77
commit
c31d2639e3
37 changed files with 499 additions and 476 deletions
18
ChangeLog
18
ChangeLog
|
|
@ -1,3 +1,21 @@
|
|||
2001-01-20 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/gradient.[ch]: made gradient_get_color_at() use GimpRGB.
|
||||
|
||||
* app/airbrush.c
|
||||
* app/blend.c
|
||||
* app/gimpcontextpreview.c
|
||||
* app/gradient_select.c
|
||||
* app/paint_core.[ch]
|
||||
* app/paintbrush.c
|
||||
* app/palette.c
|
||||
* app/pencil.c
|
||||
|
||||
* app/gradients_cmds.c
|
||||
* app/gradient_select_cmds.c
|
||||
* tools/pdbgen/pdb/gradient_select.pdb
|
||||
* tools/pdbgen/pdb/gradients.pdb: changed accordingly.
|
||||
|
||||
2001-01-20 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/color_notebook.[ch]
|
||||
|
|
|
|||
|
|
@ -330,14 +330,17 @@ airbrush_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -1383,8 +1383,9 @@ gradient_render_pixel (double x,
|
|||
/* Blend the colors */
|
||||
|
||||
if (rbd->blend_mode == CUSTOM_MODE)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
factor, &color->r, &color->g, &color->b, &color->a);
|
||||
{
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), factor, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Blend values */
|
||||
|
|
|
|||
|
|
@ -1383,8 +1383,9 @@ gradient_render_pixel (double x,
|
|||
/* Blend the colors */
|
||||
|
||||
if (rbd->blend_mode == CUSTOM_MODE)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
factor, &color->r, &color->g, &color->b, &color->a);
|
||||
{
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), factor, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Blend values */
|
||||
|
|
|
|||
|
|
@ -904,11 +904,11 @@ draw_gradient (GtkPreview *preview,
|
|||
gint width,
|
||||
gint height)
|
||||
{
|
||||
guchar *p0, *p1, *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
gdouble c0, c1;
|
||||
guchar *p0, *p1, *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = 1.0 / (width - 1);
|
||||
cur_x = 0.0;
|
||||
|
|
@ -917,7 +917,7 @@ draw_gradient (GtkPreview *preview,
|
|||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE_SM) & 1)
|
||||
{
|
||||
|
|
@ -930,13 +930,13 @@ draw_gradient (GtkPreview *preview,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
|
|||
111
app/gradient.c
111
app/gradient.c
|
|
@ -711,10 +711,7 @@ gradient_list_get_gradient_index (GSList *list,
|
|||
void
|
||||
gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a)
|
||||
GimpRGB *color)
|
||||
{
|
||||
gdouble factor = 0.0;
|
||||
grad_segment_t *seg;
|
||||
|
|
@ -722,10 +719,12 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
gdouble middle;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
/* if there is no gradient return a totally transparent black */
|
||||
if (gradient == NULL)
|
||||
{
|
||||
r = 0; g = 0; b = 0; a = 0;
|
||||
gimp_rgba_set (color, 0.0, 0.0, 0.0, 0.0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -780,13 +779,18 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
|
||||
/* Calculate color components */
|
||||
|
||||
*a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
rgb.a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
|
||||
if (seg->color == GRAD_RGB)
|
||||
{
|
||||
*r = seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
*g = seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
*b = seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
rgb.r
|
||||
= seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
|
||||
rgb.g =
|
||||
seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
|
||||
rgb.b =
|
||||
seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -837,11 +841,9 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
}
|
||||
|
||||
gimp_hsv_to_rgb (&left_hsv, &rgb);
|
||||
|
||||
*r = rgb.r;
|
||||
*g = rgb.g;
|
||||
*b = rgb.b;
|
||||
}
|
||||
|
||||
*color = rgb;
|
||||
}
|
||||
|
||||
/***** The main gradient editor dialog *****/
|
||||
|
|
@ -1361,7 +1363,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
guchar *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -1373,7 +1375,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE_SM) & 1)
|
||||
{
|
||||
|
|
@ -1386,13 +1388,13 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -2298,25 +2300,28 @@ static void
|
|||
preview_set_hint (gint x)
|
||||
{
|
||||
gdouble xpos;
|
||||
gdouble r, g, b, a;
|
||||
gdouble h, s, v;
|
||||
GimpRGB rgb;
|
||||
GimpHSV hsv;
|
||||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
|
||||
gradient_get_color_at (curr_gradient, xpos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &rgb);
|
||||
|
||||
h = r;
|
||||
s = g;
|
||||
v = b;
|
||||
|
||||
gimp_rgb_to_hsv_double (&h, &s, &v);
|
||||
gimp_rgb_to_hsv (&rgb, &hsv);
|
||||
|
||||
str = g_strdup_printf (_("Position: %0.6f "
|
||||
"RGB (%0.3f, %0.3f, %0.3f) "
|
||||
"HSV (%0.3f, %0.3f, %0.3f) "
|
||||
"Opacity: %0.3f"),
|
||||
xpos, r, g, b, h * 360.0, s, v, a);
|
||||
xpos,
|
||||
rgb.r,
|
||||
rgb.g,
|
||||
rgb.b,
|
||||
hsv.h * 360.0,
|
||||
hsv.s,
|
||||
hsv.v,
|
||||
rgb.a);
|
||||
|
||||
ed_set_hint (str);
|
||||
g_free (str);
|
||||
|
|
@ -2332,8 +2337,7 @@ preview_set_foreground (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_foreground (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2356,8 +2360,7 @@ preview_set_background (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_background (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2464,7 +2467,7 @@ preview_fill_image (gint width,
|
|||
guchar *p0, *p1;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -2475,7 +2478,7 @@ preview_fill_image (gint width,
|
|||
/* Create lines to fill the image */
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (curr_gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
|
|
@ -2488,13 +2491,13 @@ preview_fill_image (gint width,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -4713,11 +4716,11 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
grad_segment_t **newl,
|
||||
grad_segment_t **newr)
|
||||
{
|
||||
double r, g, b, a;
|
||||
GimpRGB color;
|
||||
grad_segment_t *newseg;
|
||||
|
||||
/* Get color at original segment's midpoint */
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &color);
|
||||
|
||||
/* Create a new segment and insert it in the list */
|
||||
|
||||
|
|
@ -4746,10 +4749,10 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
|
||||
newseg->right_color = lseg->right_color;
|
||||
|
||||
lseg->right_color.r = newseg->left_color.r = r;
|
||||
lseg->right_color.g = newseg->left_color.g = g;
|
||||
lseg->right_color.b = newseg->left_color.b = b;
|
||||
lseg->right_color.a = newseg->left_color.a = a;
|
||||
lseg->right_color.r = newseg->left_color.r = color.r;
|
||||
lseg->right_color.g = newseg->left_color.g = color.g;
|
||||
lseg->right_color.b = newseg->left_color.b = color.b;
|
||||
lseg->right_color.a = newseg->left_color.a = color.a;
|
||||
|
||||
/* Set parameters of new segment */
|
||||
|
||||
|
|
@ -4904,16 +4907,8 @@ cpopup_split_uniform (grad_segment_t *lseg,
|
|||
seg->right = lseg->left + (i + 1) * seg_len;
|
||||
seg->middle = (seg->left + seg->right) / 2.0;
|
||||
|
||||
gradient_get_color_at (curr_gradient, seg->left,
|
||||
&seg->left_color.r,
|
||||
&seg->left_color.g,
|
||||
&seg->left_color.b,
|
||||
&seg->left_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->right,
|
||||
&seg->right_color.r,
|
||||
&seg->right_color.g,
|
||||
&seg->right_color.b,
|
||||
&seg->right_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->left, &seg->left_color);
|
||||
gradient_get_color_at (curr_gradient, seg->right, &seg->right_color);
|
||||
|
||||
seg->type = lseg->type;
|
||||
seg->color = lseg->color;
|
||||
|
|
|
|||
|
|
@ -39,10 +39,7 @@ gint gradient_list_get_gradient_index (GSList *list,
|
|||
|
||||
void gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a);
|
||||
GimpRGB *color);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_H__ */
|
||||
|
|
|
|||
|
|
@ -711,10 +711,7 @@ gradient_list_get_gradient_index (GSList *list,
|
|||
void
|
||||
gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a)
|
||||
GimpRGB *color)
|
||||
{
|
||||
gdouble factor = 0.0;
|
||||
grad_segment_t *seg;
|
||||
|
|
@ -722,10 +719,12 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
gdouble middle;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
/* if there is no gradient return a totally transparent black */
|
||||
if (gradient == NULL)
|
||||
{
|
||||
r = 0; g = 0; b = 0; a = 0;
|
||||
gimp_rgba_set (color, 0.0, 0.0, 0.0, 0.0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -780,13 +779,18 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
|
||||
/* Calculate color components */
|
||||
|
||||
*a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
rgb.a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
|
||||
if (seg->color == GRAD_RGB)
|
||||
{
|
||||
*r = seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
*g = seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
*b = seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
rgb.r
|
||||
= seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
|
||||
rgb.g =
|
||||
seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
|
||||
rgb.b =
|
||||
seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -837,11 +841,9 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
}
|
||||
|
||||
gimp_hsv_to_rgb (&left_hsv, &rgb);
|
||||
|
||||
*r = rgb.r;
|
||||
*g = rgb.g;
|
||||
*b = rgb.b;
|
||||
}
|
||||
|
||||
*color = rgb;
|
||||
}
|
||||
|
||||
/***** The main gradient editor dialog *****/
|
||||
|
|
@ -1361,7 +1363,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
guchar *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -1373,7 +1375,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE_SM) & 1)
|
||||
{
|
||||
|
|
@ -1386,13 +1388,13 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -2298,25 +2300,28 @@ static void
|
|||
preview_set_hint (gint x)
|
||||
{
|
||||
gdouble xpos;
|
||||
gdouble r, g, b, a;
|
||||
gdouble h, s, v;
|
||||
GimpRGB rgb;
|
||||
GimpHSV hsv;
|
||||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
|
||||
gradient_get_color_at (curr_gradient, xpos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &rgb);
|
||||
|
||||
h = r;
|
||||
s = g;
|
||||
v = b;
|
||||
|
||||
gimp_rgb_to_hsv_double (&h, &s, &v);
|
||||
gimp_rgb_to_hsv (&rgb, &hsv);
|
||||
|
||||
str = g_strdup_printf (_("Position: %0.6f "
|
||||
"RGB (%0.3f, %0.3f, %0.3f) "
|
||||
"HSV (%0.3f, %0.3f, %0.3f) "
|
||||
"Opacity: %0.3f"),
|
||||
xpos, r, g, b, h * 360.0, s, v, a);
|
||||
xpos,
|
||||
rgb.r,
|
||||
rgb.g,
|
||||
rgb.b,
|
||||
hsv.h * 360.0,
|
||||
hsv.s,
|
||||
hsv.v,
|
||||
rgb.a);
|
||||
|
||||
ed_set_hint (str);
|
||||
g_free (str);
|
||||
|
|
@ -2332,8 +2337,7 @@ preview_set_foreground (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_foreground (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2356,8 +2360,7 @@ preview_set_background (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_background (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2464,7 +2467,7 @@ preview_fill_image (gint width,
|
|||
guchar *p0, *p1;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -2475,7 +2478,7 @@ preview_fill_image (gint width,
|
|||
/* Create lines to fill the image */
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (curr_gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
|
|
@ -2488,13 +2491,13 @@ preview_fill_image (gint width,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -4713,11 +4716,11 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
grad_segment_t **newl,
|
||||
grad_segment_t **newr)
|
||||
{
|
||||
double r, g, b, a;
|
||||
GimpRGB color;
|
||||
grad_segment_t *newseg;
|
||||
|
||||
/* Get color at original segment's midpoint */
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &color);
|
||||
|
||||
/* Create a new segment and insert it in the list */
|
||||
|
||||
|
|
@ -4746,10 +4749,10 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
|
||||
newseg->right_color = lseg->right_color;
|
||||
|
||||
lseg->right_color.r = newseg->left_color.r = r;
|
||||
lseg->right_color.g = newseg->left_color.g = g;
|
||||
lseg->right_color.b = newseg->left_color.b = b;
|
||||
lseg->right_color.a = newseg->left_color.a = a;
|
||||
lseg->right_color.r = newseg->left_color.r = color.r;
|
||||
lseg->right_color.g = newseg->left_color.g = color.g;
|
||||
lseg->right_color.b = newseg->left_color.b = color.b;
|
||||
lseg->right_color.a = newseg->left_color.a = color.a;
|
||||
|
||||
/* Set parameters of new segment */
|
||||
|
||||
|
|
@ -4904,16 +4907,8 @@ cpopup_split_uniform (grad_segment_t *lseg,
|
|||
seg->right = lseg->left + (i + 1) * seg_len;
|
||||
seg->middle = (seg->left + seg->right) / 2.0;
|
||||
|
||||
gradient_get_color_at (curr_gradient, seg->left,
|
||||
&seg->left_color.r,
|
||||
&seg->left_color.g,
|
||||
&seg->left_color.b,
|
||||
&seg->left_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->right,
|
||||
&seg->right_color.r,
|
||||
&seg->right_color.g,
|
||||
&seg->right_color.b,
|
||||
&seg->right_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->left, &seg->left_color);
|
||||
gradient_get_color_at (curr_gradient, seg->right, &seg->right_color);
|
||||
|
||||
seg->type = lseg->type;
|
||||
seg->color = lseg->color;
|
||||
|
|
|
|||
|
|
@ -39,10 +39,7 @@ gint gradient_list_get_gradient_index (GSList *list,
|
|||
|
||||
void gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a);
|
||||
GimpRGB *color);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_H__ */
|
||||
|
|
|
|||
|
|
@ -328,8 +328,10 @@ gradient_change_callbacks (GradientSelect *gsp,
|
|||
{
|
||||
gdouble *values, *pv;
|
||||
double pos, delta;
|
||||
double r, g, b, a;
|
||||
gint i = gsp->sample_size;
|
||||
GimpRGB color;
|
||||
gint i;
|
||||
|
||||
i = gsp->sample_size;
|
||||
pos = 0.0;
|
||||
delta = 1.0 / (i - 1);
|
||||
|
||||
|
|
@ -338,12 +340,12 @@ gradient_change_callbacks (GradientSelect *gsp,
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -327,23 +327,24 @@ gradients_get_gradient_data_invoker (Argument *args)
|
|||
if (success)
|
||||
{
|
||||
gdouble *pv;
|
||||
gdouble pos, delta;
|
||||
gdouble r, g, b, a;
|
||||
int i = sample_size;
|
||||
gdouble pos, delta;
|
||||
GimpRGB color;
|
||||
gint i;
|
||||
|
||||
pos = 0.0;
|
||||
i = sample_size;
|
||||
pos = 0.0;
|
||||
delta = 1.0 / (i - 1);
|
||||
|
||||
pv = values = g_new (gdouble, i * 4);
|
||||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ gradients_sample_uniform_invoker (Argument *args)
|
|||
gdouble *color_samples = NULL;
|
||||
gradient_t *gradient;
|
||||
gdouble pos, delta;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble *pv;
|
||||
|
||||
i = args[0].value.pdb_int;
|
||||
|
|
@ -231,12 +231,12 @@ gradients_sample_uniform_invoker (Argument *args)
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
@ -302,7 +302,7 @@ gradients_sample_custom_invoker (Argument *args)
|
|||
gint32 array_length = 0;
|
||||
gdouble *color_samples = NULL;
|
||||
gradient_t *gradient;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble *pv;
|
||||
|
||||
i = args[0].value.pdb_int;
|
||||
|
|
@ -321,12 +321,12 @@ gradients_sample_custom_invoker (Argument *args)
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, *pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, *pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -711,10 +711,7 @@ gradient_list_get_gradient_index (GSList *list,
|
|||
void
|
||||
gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a)
|
||||
GimpRGB *color)
|
||||
{
|
||||
gdouble factor = 0.0;
|
||||
grad_segment_t *seg;
|
||||
|
|
@ -722,10 +719,12 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
gdouble middle;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
/* if there is no gradient return a totally transparent black */
|
||||
if (gradient == NULL)
|
||||
{
|
||||
r = 0; g = 0; b = 0; a = 0;
|
||||
gimp_rgba_set (color, 0.0, 0.0, 0.0, 0.0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -780,13 +779,18 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
|
||||
/* Calculate color components */
|
||||
|
||||
*a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
rgb.a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
|
||||
if (seg->color == GRAD_RGB)
|
||||
{
|
||||
*r = seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
*g = seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
*b = seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
rgb.r
|
||||
= seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
|
||||
rgb.g =
|
||||
seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
|
||||
rgb.b =
|
||||
seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -837,11 +841,9 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
}
|
||||
|
||||
gimp_hsv_to_rgb (&left_hsv, &rgb);
|
||||
|
||||
*r = rgb.r;
|
||||
*g = rgb.g;
|
||||
*b = rgb.b;
|
||||
}
|
||||
|
||||
*color = rgb;
|
||||
}
|
||||
|
||||
/***** The main gradient editor dialog *****/
|
||||
|
|
@ -1361,7 +1363,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
guchar *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -1373,7 +1375,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE_SM) & 1)
|
||||
{
|
||||
|
|
@ -1386,13 +1388,13 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -2298,25 +2300,28 @@ static void
|
|||
preview_set_hint (gint x)
|
||||
{
|
||||
gdouble xpos;
|
||||
gdouble r, g, b, a;
|
||||
gdouble h, s, v;
|
||||
GimpRGB rgb;
|
||||
GimpHSV hsv;
|
||||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
|
||||
gradient_get_color_at (curr_gradient, xpos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &rgb);
|
||||
|
||||
h = r;
|
||||
s = g;
|
||||
v = b;
|
||||
|
||||
gimp_rgb_to_hsv_double (&h, &s, &v);
|
||||
gimp_rgb_to_hsv (&rgb, &hsv);
|
||||
|
||||
str = g_strdup_printf (_("Position: %0.6f "
|
||||
"RGB (%0.3f, %0.3f, %0.3f) "
|
||||
"HSV (%0.3f, %0.3f, %0.3f) "
|
||||
"Opacity: %0.3f"),
|
||||
xpos, r, g, b, h * 360.0, s, v, a);
|
||||
xpos,
|
||||
rgb.r,
|
||||
rgb.g,
|
||||
rgb.b,
|
||||
hsv.h * 360.0,
|
||||
hsv.s,
|
||||
hsv.v,
|
||||
rgb.a);
|
||||
|
||||
ed_set_hint (str);
|
||||
g_free (str);
|
||||
|
|
@ -2332,8 +2337,7 @@ preview_set_foreground (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_foreground (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2356,8 +2360,7 @@ preview_set_background (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_background (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2464,7 +2467,7 @@ preview_fill_image (gint width,
|
|||
guchar *p0, *p1;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -2475,7 +2478,7 @@ preview_fill_image (gint width,
|
|||
/* Create lines to fill the image */
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (curr_gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
|
|
@ -2488,13 +2491,13 @@ preview_fill_image (gint width,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -4713,11 +4716,11 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
grad_segment_t **newl,
|
||||
grad_segment_t **newr)
|
||||
{
|
||||
double r, g, b, a;
|
||||
GimpRGB color;
|
||||
grad_segment_t *newseg;
|
||||
|
||||
/* Get color at original segment's midpoint */
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &color);
|
||||
|
||||
/* Create a new segment and insert it in the list */
|
||||
|
||||
|
|
@ -4746,10 +4749,10 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
|
||||
newseg->right_color = lseg->right_color;
|
||||
|
||||
lseg->right_color.r = newseg->left_color.r = r;
|
||||
lseg->right_color.g = newseg->left_color.g = g;
|
||||
lseg->right_color.b = newseg->left_color.b = b;
|
||||
lseg->right_color.a = newseg->left_color.a = a;
|
||||
lseg->right_color.r = newseg->left_color.r = color.r;
|
||||
lseg->right_color.g = newseg->left_color.g = color.g;
|
||||
lseg->right_color.b = newseg->left_color.b = color.b;
|
||||
lseg->right_color.a = newseg->left_color.a = color.a;
|
||||
|
||||
/* Set parameters of new segment */
|
||||
|
||||
|
|
@ -4904,16 +4907,8 @@ cpopup_split_uniform (grad_segment_t *lseg,
|
|||
seg->right = lseg->left + (i + 1) * seg_len;
|
||||
seg->middle = (seg->left + seg->right) / 2.0;
|
||||
|
||||
gradient_get_color_at (curr_gradient, seg->left,
|
||||
&seg->left_color.r,
|
||||
&seg->left_color.g,
|
||||
&seg->left_color.b,
|
||||
&seg->left_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->right,
|
||||
&seg->right_color.r,
|
||||
&seg->right_color.g,
|
||||
&seg->right_color.b,
|
||||
&seg->right_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->left, &seg->left_color);
|
||||
gradient_get_color_at (curr_gradient, seg->right, &seg->right_color);
|
||||
|
||||
seg->type = lseg->type;
|
||||
seg->color = lseg->color;
|
||||
|
|
|
|||
|
|
@ -39,10 +39,7 @@ gint gradient_list_get_gradient_index (GSList *list,
|
|||
|
||||
void gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a);
|
||||
GimpRGB *color);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_H__ */
|
||||
|
|
|
|||
|
|
@ -328,8 +328,10 @@ gradient_change_callbacks (GradientSelect *gsp,
|
|||
{
|
||||
gdouble *values, *pv;
|
||||
double pos, delta;
|
||||
double r, g, b, a;
|
||||
gint i = gsp->sample_size;
|
||||
GimpRGB color;
|
||||
gint i;
|
||||
|
||||
i = gsp->sample_size;
|
||||
pos = 0.0;
|
||||
delta = 1.0 / (i - 1);
|
||||
|
||||
|
|
@ -338,12 +340,12 @@ gradient_change_callbacks (GradientSelect *gsp,
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2319,21 +2319,23 @@ static void
|
|||
palette_import_fill_grad_preview (GtkWidget *preview,
|
||||
gradient_t *gradient)
|
||||
{
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
dx = 1.0/ (IMPORT_PREVIEW_WIDTH - 1);
|
||||
cur_x = 0;
|
||||
|
||||
for (loop = 0 ; loop < IMPORT_PREVIEW_WIDTH; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
*p++ = r * 255.0;
|
||||
*p++ = g * 255.0;
|
||||
*p++ = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
*p++ = (guchar) (color.r * 255.999);
|
||||
*p++ = (guchar) (color.g * 255.999);
|
||||
*p++ = (guchar) (color.b * 255.999);
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
||||
|
|
@ -2736,7 +2738,8 @@ palette_import_create_from_grad (gchar *name)
|
|||
{
|
||||
/* Add names to entry */
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
guchar r, g, b;
|
||||
|
||||
gint sample_sz;
|
||||
gint loop;
|
||||
|
|
@ -2749,13 +2752,15 @@ palette_import_create_from_grad (gchar *name)
|
|||
|
||||
for (loop = 0; loop < sample_sz; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
r = r * 255.0;
|
||||
g = g * 255.0;
|
||||
b = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
gimp_rgb_get_uchar (&color, &r, &g, &b);
|
||||
|
||||
cur_x += dx;
|
||||
palette_entries_add_entry (entries, _("Untitled"),
|
||||
(gint) r, (gint) g, (gint) b);
|
||||
(gint) r,
|
||||
(gint) g,
|
||||
(gint) b);
|
||||
}
|
||||
|
||||
palette_insert_all (entries);
|
||||
|
|
|
|||
|
|
@ -330,14 +330,17 @@ airbrush_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -172,14 +172,17 @@ pencil_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -1019,10 +1019,7 @@ paint_core_cleanup (void)
|
|||
void
|
||||
paint_core_get_color_from_gradient (PaintCore *paint_core,
|
||||
gdouble gradient_length,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a,
|
||||
GimpRGB *color,
|
||||
GradientPaintMode mode)
|
||||
{
|
||||
gdouble y;
|
||||
|
|
@ -1040,7 +1037,7 @@ paint_core_get_color_from_gradient (PaintCore *paint_core,
|
|||
else
|
||||
y = y - (int)y;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), y, r, g, b, a);
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), y, color);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -155,10 +155,7 @@ void paint_core_cleanup (void);
|
|||
|
||||
void paint_core_get_color_from_gradient (PaintCore *paint_core,
|
||||
gdouble gradient_length,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a,
|
||||
GimpRGB *color,
|
||||
GradientPaintMode mode);
|
||||
|
||||
/* paint tool painting functions */
|
||||
|
|
|
|||
|
|
@ -490,17 +490,17 @@ paintbrush_motion (PaintCore *paint_core,
|
|||
PaintApplicationMode incremental,
|
||||
GradientPaintMode gradient_type)
|
||||
{
|
||||
GImage *gimage;
|
||||
TempBuf * area;
|
||||
gdouble x, paint_left;
|
||||
gdouble position;
|
||||
guchar local_blend = OPAQUE_OPACITY;
|
||||
guchar temp_blend = OPAQUE_OPACITY;
|
||||
guchar col[MAX_CHANNELS];
|
||||
gdouble r,g,b,a;
|
||||
gint mode;
|
||||
gint opacity;
|
||||
gdouble scale;
|
||||
GImage *gimage;
|
||||
TempBuf *area;
|
||||
gdouble x, paint_left;
|
||||
gdouble position;
|
||||
guchar local_blend = OPAQUE_OPACITY;
|
||||
guchar temp_blend = OPAQUE_OPACITY;
|
||||
guchar col[MAX_CHANNELS];
|
||||
GimpRGB color;
|
||||
gint mode;
|
||||
gint opacity;
|
||||
gdouble scale;
|
||||
PaintApplicationMode paint_appl_mode = incremental ? INCREMENTAL : CONSTANT;
|
||||
|
||||
position = 0.0;
|
||||
|
|
@ -538,19 +538,19 @@ paintbrush_motion (PaintCore *paint_core,
|
|||
{
|
||||
if (pressure_options->color)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
paint_core->curpressure, &color);
|
||||
else
|
||||
paint_core_get_color_from_gradient (paint_core, gradient_length,
|
||||
&r, &g, &b, &a, mode);
|
||||
r = r * 255.0;
|
||||
g = g * 255.0;
|
||||
b = b * 255.0;
|
||||
a = a * 255.0;
|
||||
temp_blend = (gint)((a * local_blend) / 255);
|
||||
col[0] = (gint)r;
|
||||
col[1] = (gint)g;
|
||||
col[2] = (gint)b;
|
||||
col[3] = OPAQUE_OPACITY;
|
||||
&color, mode);
|
||||
|
||||
temp_blend = (gint) ((color.a * local_blend));
|
||||
|
||||
gimp_rgb_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX]);
|
||||
col[ALPHA_PIX] = OPAQUE_OPACITY;
|
||||
|
||||
/* always use incremental mode with gradients */
|
||||
/* make the gui cool later */
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
|
|
|
|||
|
|
@ -2319,21 +2319,23 @@ static void
|
|||
palette_import_fill_grad_preview (GtkWidget *preview,
|
||||
gradient_t *gradient)
|
||||
{
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
dx = 1.0/ (IMPORT_PREVIEW_WIDTH - 1);
|
||||
cur_x = 0;
|
||||
|
||||
for (loop = 0 ; loop < IMPORT_PREVIEW_WIDTH; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
*p++ = r * 255.0;
|
||||
*p++ = g * 255.0;
|
||||
*p++ = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
*p++ = (guchar) (color.r * 255.999);
|
||||
*p++ = (guchar) (color.g * 255.999);
|
||||
*p++ = (guchar) (color.b * 255.999);
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
||||
|
|
@ -2736,7 +2738,8 @@ palette_import_create_from_grad (gchar *name)
|
|||
{
|
||||
/* Add names to entry */
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
guchar r, g, b;
|
||||
|
||||
gint sample_sz;
|
||||
gint loop;
|
||||
|
|
@ -2749,13 +2752,15 @@ palette_import_create_from_grad (gchar *name)
|
|||
|
||||
for (loop = 0; loop < sample_sz; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
r = r * 255.0;
|
||||
g = g * 255.0;
|
||||
b = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
gimp_rgb_get_uchar (&color, &r, &g, &b);
|
||||
|
||||
cur_x += dx;
|
||||
palette_entries_add_entry (entries, _("Untitled"),
|
||||
(gint) r, (gint) g, (gint) b);
|
||||
(gint) r,
|
||||
(gint) g,
|
||||
(gint) b);
|
||||
}
|
||||
|
||||
palette_insert_all (entries);
|
||||
|
|
|
|||
15
app/pencil.c
15
app/pencil.c
|
|
@ -172,14 +172,17 @@ pencil_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -330,14 +330,17 @@ airbrush_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -1383,8 +1383,9 @@ gradient_render_pixel (double x,
|
|||
/* Blend the colors */
|
||||
|
||||
if (rbd->blend_mode == CUSTOM_MODE)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
factor, &color->r, &color->g, &color->b, &color->a);
|
||||
{
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), factor, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Blend values */
|
||||
|
|
|
|||
|
|
@ -330,14 +330,17 @@ airbrush_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -1383,8 +1383,9 @@ gradient_render_pixel (double x,
|
|||
/* Blend the colors */
|
||||
|
||||
if (rbd->blend_mode == CUSTOM_MODE)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
factor, &color->r, &color->g, &color->b, &color->a);
|
||||
{
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), factor, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Blend values */
|
||||
|
|
|
|||
|
|
@ -172,14 +172,17 @@ pencil_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -1019,10 +1019,7 @@ paint_core_cleanup (void)
|
|||
void
|
||||
paint_core_get_color_from_gradient (PaintCore *paint_core,
|
||||
gdouble gradient_length,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a,
|
||||
GimpRGB *color,
|
||||
GradientPaintMode mode)
|
||||
{
|
||||
gdouble y;
|
||||
|
|
@ -1040,7 +1037,7 @@ paint_core_get_color_from_gradient (PaintCore *paint_core,
|
|||
else
|
||||
y = y - (int)y;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), y, r, g, b, a);
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL), y, color);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -155,10 +155,7 @@ void paint_core_cleanup (void);
|
|||
|
||||
void paint_core_get_color_from_gradient (PaintCore *paint_core,
|
||||
gdouble gradient_length,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a,
|
||||
GimpRGB *color,
|
||||
GradientPaintMode mode);
|
||||
|
||||
/* paint tool painting functions */
|
||||
|
|
|
|||
|
|
@ -490,17 +490,17 @@ paintbrush_motion (PaintCore *paint_core,
|
|||
PaintApplicationMode incremental,
|
||||
GradientPaintMode gradient_type)
|
||||
{
|
||||
GImage *gimage;
|
||||
TempBuf * area;
|
||||
gdouble x, paint_left;
|
||||
gdouble position;
|
||||
guchar local_blend = OPAQUE_OPACITY;
|
||||
guchar temp_blend = OPAQUE_OPACITY;
|
||||
guchar col[MAX_CHANNELS];
|
||||
gdouble r,g,b,a;
|
||||
gint mode;
|
||||
gint opacity;
|
||||
gdouble scale;
|
||||
GImage *gimage;
|
||||
TempBuf *area;
|
||||
gdouble x, paint_left;
|
||||
gdouble position;
|
||||
guchar local_blend = OPAQUE_OPACITY;
|
||||
guchar temp_blend = OPAQUE_OPACITY;
|
||||
guchar col[MAX_CHANNELS];
|
||||
GimpRGB color;
|
||||
gint mode;
|
||||
gint opacity;
|
||||
gdouble scale;
|
||||
PaintApplicationMode paint_appl_mode = incremental ? INCREMENTAL : CONSTANT;
|
||||
|
||||
position = 0.0;
|
||||
|
|
@ -538,19 +538,19 @@ paintbrush_motion (PaintCore *paint_core,
|
|||
{
|
||||
if (pressure_options->color)
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
paint_core->curpressure, &color);
|
||||
else
|
||||
paint_core_get_color_from_gradient (paint_core, gradient_length,
|
||||
&r, &g, &b, &a, mode);
|
||||
r = r * 255.0;
|
||||
g = g * 255.0;
|
||||
b = b * 255.0;
|
||||
a = a * 255.0;
|
||||
temp_blend = (gint)((a * local_blend) / 255);
|
||||
col[0] = (gint)r;
|
||||
col[1] = (gint)g;
|
||||
col[2] = (gint)b;
|
||||
col[3] = OPAQUE_OPACITY;
|
||||
&color, mode);
|
||||
|
||||
temp_blend = (gint) ((color.a * local_blend));
|
||||
|
||||
gimp_rgb_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX]);
|
||||
col[ALPHA_PIX] = OPAQUE_OPACITY;
|
||||
|
||||
/* always use incremental mode with gradients */
|
||||
/* make the gui cool later */
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
|
|
|
|||
|
|
@ -172,14 +172,17 @@ pencil_motion (PaintCore *paint_core,
|
|||
/* color the pixels */
|
||||
if (pressure_options->color)
|
||||
{
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
gradient_get_color_at (gimp_context_get_gradient (NULL),
|
||||
paint_core->curpressure, &r, &g, &b, &a);
|
||||
col[0] = r * 255.0;
|
||||
col[1] = g * 255.0;
|
||||
col[2] = b * 255.0;
|
||||
col[3] = a * 255.0;
|
||||
paint_core->curpressure, &color);
|
||||
|
||||
gimp_rgba_get_uchar (&color,
|
||||
&col[RED_PIX],
|
||||
&col[GREEN_PIX],
|
||||
&col[BLUE_PIX],
|
||||
&col[ALPHA_PIX]);
|
||||
|
||||
paint_appl_mode = INCREMENTAL;
|
||||
color_pixels (temp_buf_data (area), col,
|
||||
area->width * area->height, area->bytes);
|
||||
|
|
|
|||
|
|
@ -711,10 +711,7 @@ gradient_list_get_gradient_index (GSList *list,
|
|||
void
|
||||
gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a)
|
||||
GimpRGB *color)
|
||||
{
|
||||
gdouble factor = 0.0;
|
||||
grad_segment_t *seg;
|
||||
|
|
@ -722,10 +719,12 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
gdouble middle;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
/* if there is no gradient return a totally transparent black */
|
||||
if (gradient == NULL)
|
||||
{
|
||||
r = 0; g = 0; b = 0; a = 0;
|
||||
gimp_rgba_set (color, 0.0, 0.0, 0.0, 0.0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -780,13 +779,18 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
|
||||
/* Calculate color components */
|
||||
|
||||
*a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
rgb.a = seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||
|
||||
if (seg->color == GRAD_RGB)
|
||||
{
|
||||
*r = seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
*g = seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
*b = seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
rgb.r
|
||||
= seg->left_color.r + (seg->right_color.r - seg->left_color.r) * factor;
|
||||
|
||||
rgb.g =
|
||||
seg->left_color.g + (seg->right_color.g - seg->left_color.g) * factor;
|
||||
|
||||
rgb.b =
|
||||
seg->left_color.b + (seg->right_color.b - seg->left_color.b) * factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -837,11 +841,9 @@ gradient_get_color_at (gradient_t *gradient,
|
|||
}
|
||||
|
||||
gimp_hsv_to_rgb (&left_hsv, &rgb);
|
||||
|
||||
*r = rgb.r;
|
||||
*g = rgb.g;
|
||||
*b = rgb.b;
|
||||
}
|
||||
|
||||
*color = rgb;
|
||||
}
|
||||
|
||||
/***** The main gradient editor dialog *****/
|
||||
|
|
@ -1361,7 +1363,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
guchar *even, *odd;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -1373,7 +1375,7 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE_SM) & 1)
|
||||
{
|
||||
|
|
@ -1386,13 +1388,13 @@ gradient_clist_fill_preview (gradient_t *gradient,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -2298,25 +2300,28 @@ static void
|
|||
preview_set_hint (gint x)
|
||||
{
|
||||
gdouble xpos;
|
||||
gdouble r, g, b, a;
|
||||
gdouble h, s, v;
|
||||
GimpRGB rgb;
|
||||
GimpHSV hsv;
|
||||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
|
||||
gradient_get_color_at (curr_gradient, xpos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &rgb);
|
||||
|
||||
h = r;
|
||||
s = g;
|
||||
v = b;
|
||||
|
||||
gimp_rgb_to_hsv_double (&h, &s, &v);
|
||||
gimp_rgb_to_hsv (&rgb, &hsv);
|
||||
|
||||
str = g_strdup_printf (_("Position: %0.6f "
|
||||
"RGB (%0.3f, %0.3f, %0.3f) "
|
||||
"HSV (%0.3f, %0.3f, %0.3f) "
|
||||
"Opacity: %0.3f"),
|
||||
xpos, r, g, b, h * 360.0, s, v, a);
|
||||
xpos,
|
||||
rgb.r,
|
||||
rgb.g,
|
||||
rgb.b,
|
||||
hsv.h * 360.0,
|
||||
hsv.s,
|
||||
hsv.v,
|
||||
rgb.a);
|
||||
|
||||
ed_set_hint (str);
|
||||
g_free (str);
|
||||
|
|
@ -2332,8 +2337,7 @@ preview_set_foreground (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_foreground (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2356,8 +2360,7 @@ preview_set_background (gint x)
|
|||
gchar *str;
|
||||
|
||||
xpos = control_calc_g_pos (x);
|
||||
gradient_get_color_at (curr_gradient, xpos,
|
||||
&color.r, &color.g, &color.b, &color.a);
|
||||
gradient_get_color_at (curr_gradient, xpos, &color);
|
||||
|
||||
gimp_context_set_background (gimp_context_get_user (), &color);
|
||||
|
||||
|
|
@ -2464,7 +2467,7 @@ preview_fill_image (gint width,
|
|||
guchar *p0, *p1;
|
||||
gint x, y;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
gdouble c0, c1;
|
||||
|
||||
dx = (right - left) / (width - 1);
|
||||
|
|
@ -2475,7 +2478,7 @@ preview_fill_image (gint width,
|
|||
/* Create lines to fill the image */
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gradient_get_color_at (curr_gradient, cur_x, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, cur_x, &color);
|
||||
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
|
|
@ -2488,13 +2491,13 @@ preview_fill_image (gint width,
|
|||
c1 = GIMP_CHECK_LIGHT;
|
||||
}
|
||||
|
||||
*p0++ = (c0 + (r - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (g - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (b - c0) * a) * 255.0;
|
||||
*p0++ = (c0 + (color.r - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.g - c0) * color.a) * 255.0;
|
||||
*p0++ = (c0 + (color.b - c0) * color.a) * 255.0;
|
||||
|
||||
*p1++ = (c1 + (r - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (g - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (b - c1) * a) * 255.0;
|
||||
*p1++ = (c1 + (color.r - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.g - c1) * color.a) * 255.0;
|
||||
*p1++ = (c1 + (color.b - c1) * color.a) * 255.0;
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
|
@ -4713,11 +4716,11 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
grad_segment_t **newl,
|
||||
grad_segment_t **newr)
|
||||
{
|
||||
double r, g, b, a;
|
||||
GimpRGB color;
|
||||
grad_segment_t *newseg;
|
||||
|
||||
/* Get color at original segment's midpoint */
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &r, &g, &b, &a);
|
||||
gradient_get_color_at (curr_gradient, lseg->middle, &color);
|
||||
|
||||
/* Create a new segment and insert it in the list */
|
||||
|
||||
|
|
@ -4746,10 +4749,10 @@ cpopup_split_midpoint (grad_segment_t *lseg,
|
|||
|
||||
newseg->right_color = lseg->right_color;
|
||||
|
||||
lseg->right_color.r = newseg->left_color.r = r;
|
||||
lseg->right_color.g = newseg->left_color.g = g;
|
||||
lseg->right_color.b = newseg->left_color.b = b;
|
||||
lseg->right_color.a = newseg->left_color.a = a;
|
||||
lseg->right_color.r = newseg->left_color.r = color.r;
|
||||
lseg->right_color.g = newseg->left_color.g = color.g;
|
||||
lseg->right_color.b = newseg->left_color.b = color.b;
|
||||
lseg->right_color.a = newseg->left_color.a = color.a;
|
||||
|
||||
/* Set parameters of new segment */
|
||||
|
||||
|
|
@ -4904,16 +4907,8 @@ cpopup_split_uniform (grad_segment_t *lseg,
|
|||
seg->right = lseg->left + (i + 1) * seg_len;
|
||||
seg->middle = (seg->left + seg->right) / 2.0;
|
||||
|
||||
gradient_get_color_at (curr_gradient, seg->left,
|
||||
&seg->left_color.r,
|
||||
&seg->left_color.g,
|
||||
&seg->left_color.b,
|
||||
&seg->left_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->right,
|
||||
&seg->right_color.r,
|
||||
&seg->right_color.g,
|
||||
&seg->right_color.b,
|
||||
&seg->right_color.a);
|
||||
gradient_get_color_at (curr_gradient, seg->left, &seg->left_color);
|
||||
gradient_get_color_at (curr_gradient, seg->right, &seg->right_color);
|
||||
|
||||
seg->type = lseg->type;
|
||||
seg->color = lseg->color;
|
||||
|
|
|
|||
|
|
@ -39,10 +39,7 @@ gint gradient_list_get_gradient_index (GSList *list,
|
|||
|
||||
void gradient_get_color_at (gradient_t *gradient,
|
||||
gdouble pos,
|
||||
gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b,
|
||||
gdouble *a);
|
||||
GimpRGB *color);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_H__ */
|
||||
|
|
|
|||
|
|
@ -2319,21 +2319,23 @@ static void
|
|||
palette_import_fill_grad_preview (GtkWidget *preview,
|
||||
gradient_t *gradient)
|
||||
{
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
guchar buffer[3*IMPORT_PREVIEW_WIDTH];
|
||||
gint loop;
|
||||
guchar *p = buffer;
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
|
||||
dx = 1.0/ (IMPORT_PREVIEW_WIDTH - 1);
|
||||
cur_x = 0;
|
||||
|
||||
for (loop = 0 ; loop < IMPORT_PREVIEW_WIDTH; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
*p++ = r * 255.0;
|
||||
*p++ = g * 255.0;
|
||||
*p++ = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
*p++ = (guchar) (color.r * 255.999);
|
||||
*p++ = (guchar) (color.g * 255.999);
|
||||
*p++ = (guchar) (color.b * 255.999);
|
||||
|
||||
cur_x += dx;
|
||||
}
|
||||
|
||||
|
|
@ -2736,7 +2738,8 @@ palette_import_create_from_grad (gchar *name)
|
|||
{
|
||||
/* Add names to entry */
|
||||
gdouble dx, cur_x;
|
||||
gdouble r, g, b, a;
|
||||
GimpRGB color;
|
||||
guchar r, g, b;
|
||||
|
||||
gint sample_sz;
|
||||
gint loop;
|
||||
|
|
@ -2749,13 +2752,15 @@ palette_import_create_from_grad (gchar *name)
|
|||
|
||||
for (loop = 0; loop < sample_sz; loop++)
|
||||
{
|
||||
gradient_get_color_at (gradient, cur_x, &r, &g, &b, &a);
|
||||
r = r * 255.0;
|
||||
g = g * 255.0;
|
||||
b = b * 255.0;
|
||||
gradient_get_color_at (gradient, cur_x, &color);
|
||||
|
||||
gimp_rgb_get_uchar (&color, &r, &g, &b);
|
||||
|
||||
cur_x += dx;
|
||||
palette_entries_add_entry (entries, _("Untitled"),
|
||||
(gint) r, (gint) g, (gint) b);
|
||||
(gint) r,
|
||||
(gint) g,
|
||||
(gint) b);
|
||||
}
|
||||
|
||||
palette_insert_all (entries);
|
||||
|
|
|
|||
|
|
@ -210,23 +210,24 @@ HELP
|
|||
if (success)
|
||||
{
|
||||
gdouble *pv;
|
||||
gdouble pos, delta;
|
||||
gdouble r, g, b, a;
|
||||
int i = sample_size;
|
||||
gdouble pos, delta;
|
||||
GimpRGB color;
|
||||
gint i;
|
||||
|
||||
pos = 0.0;
|
||||
i = sample_size;
|
||||
pos = 0.0;
|
||||
delta = 1.0 / (i - 1);
|
||||
|
||||
pv = values = g_new (gdouble, i * 4);
|
||||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ HELP
|
|||
&sample_outargs;
|
||||
|
||||
%invoke = (
|
||||
vars => [ 'gradient_t *gradient', 'gdouble pos, delta', 'gdouble r, g, b, a', 'gdouble *pv' ],
|
||||
vars => [ 'gradient_t *gradient', 'gdouble pos, delta', 'GimpRGB color', 'gdouble *pv' ],
|
||||
code => <<'CODE'
|
||||
{
|
||||
pos = 0.0;
|
||||
|
|
@ -163,12 +163,12 @@ HELP
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos += delta;
|
||||
}
|
||||
|
|
@ -204,7 +204,7 @@ HELP
|
|||
&sample_outargs;
|
||||
|
||||
%invoke = (
|
||||
vars => [ 'gradient_t *gradient', 'gdouble r, g, b, a', 'gdouble *pv' ],
|
||||
vars => [ 'gradient_t *gradient', 'GimpRGB color', 'gdouble *pv' ],
|
||||
code => <<'CODE'
|
||||
{
|
||||
array_length = i * 4;
|
||||
|
|
@ -215,12 +215,12 @@ HELP
|
|||
|
||||
while (i--)
|
||||
{
|
||||
gradient_get_color_at (gradient, *pos, &r, &g, &b, &a);
|
||||
gradient_get_color_at (gradient, *pos, &color);
|
||||
|
||||
*pv++ = r;
|
||||
*pv++ = g;
|
||||
*pv++ = b;
|
||||
*pv++ = a;
|
||||
*pv++ = color.r;
|
||||
*pv++ = color.g;
|
||||
*pv++ = color.b;
|
||||
*pv++ = color.a;
|
||||
|
||||
pos++;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue