removed the "last_visited" field from GimpGradient. Instead added the new
2005-02-27 Sven Neumann <sven@gimp.org> * app/core/gimpgradient.[ch]: removed the "last_visited" field from GimpGradient. Instead added the new function gimp_gradient_get_color_at_segment() that allows the caller to do the same optimization. * app/actions/gradient-editor-commands.c * app/core/gimpdrawable-blend.c * app/core/gimppalette-import.c * app/paint/gimppaintoptions.c * app/widgets/gimpgradienteditor.c * app/widgets/gimpgradientselect.c * app/widgets/gimpviewrenderergradient.c: changed accordingly. * app/pdb/gradient_cmds.c * app/pdb/gradients_cmds.c: regenerated.
This commit is contained in:

committed by
Sven Neumann

parent
5f4cec76da
commit
8de1e94bb7
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
|||||||
|
2005-02-27 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* app/core/gimpgradient.[ch]: removed the "last_visited" field
|
||||||
|
from GimpGradient. Instead added the new function
|
||||||
|
gimp_gradient_get_color_at_segment() that allows the caller to do
|
||||||
|
the same optimization.
|
||||||
|
|
||||||
|
* app/actions/gradient-editor-commands.c
|
||||||
|
* app/core/gimpdrawable-blend.c
|
||||||
|
* app/core/gimppalette-import.c
|
||||||
|
* app/paint/gimppaintoptions.c
|
||||||
|
* app/widgets/gimpgradienteditor.c
|
||||||
|
* app/widgets/gimpgradientselect.c
|
||||||
|
* app/widgets/gimpviewrenderergradient.c: changed accordingly.
|
||||||
|
|
||||||
|
* app/pdb/gradient_cmds.c
|
||||||
|
* app/pdb/gradients_cmds.c: regenerated.
|
||||||
|
|
||||||
2005-02-26 Manish Singh <yosh@gimp.org>
|
2005-02-26 Manish Singh <yosh@gimp.org>
|
||||||
|
|
||||||
* plug-ins/common/png.c: revert change to read images one row at a
|
* plug-ins/common/png.c: revert change to read images one row at a
|
||||||
|
@ -775,8 +775,6 @@ gradient_editor_replace_selection (GimpGradientEditor *editor,
|
|||||||
|
|
||||||
editor->control_sel_l = replace_seg;
|
editor->control_sel_l = replace_seg;
|
||||||
editor->control_sel_r = replace_last;
|
editor->control_sel_r = replace_last;
|
||||||
|
|
||||||
gradient->last_visited = NULL; /* Force re-search */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -121,14 +121,14 @@ static void gradient_precalc_shapeburst (GimpImage *gimage,
|
|||||||
gdouble dist,
|
gdouble dist,
|
||||||
GimpProgress *progress);
|
GimpProgress *progress);
|
||||||
|
|
||||||
static void gradient_render_pixel (gdouble x,
|
static void gradient_render_pixel (gdouble x,
|
||||||
gdouble y,
|
gdouble y,
|
||||||
GimpRGB *color,
|
GimpRGB *color,
|
||||||
gpointer render_data);
|
gpointer render_data);
|
||||||
static void gradient_put_pixel (gint x,
|
static void gradient_put_pixel (gint x,
|
||||||
gint y,
|
gint y,
|
||||||
GimpRGB *color,
|
GimpRGB *color,
|
||||||
gpointer put_pixel_data);
|
gpointer put_pixel_data);
|
||||||
|
|
||||||
static void gradient_fill_region (GimpImage *gimage,
|
static void gradient_fill_region (GimpImage *gimage,
|
||||||
GimpDrawable *drawable,
|
GimpDrawable *drawable,
|
||||||
@ -653,8 +653,8 @@ gradient_precalc_shapeburst (GimpImage *gimage,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gradient_render_pixel (double x,
|
gradient_render_pixel (gdouble x,
|
||||||
double y,
|
gdouble y,
|
||||||
GimpRGB *color,
|
GimpRGB *color,
|
||||||
gpointer render_data)
|
gpointer render_data)
|
||||||
{
|
{
|
||||||
@ -715,13 +715,13 @@ gradient_render_pixel (double x,
|
|||||||
case GIMP_GRADIENT_SPIRAL_CLOCKWISE:
|
case GIMP_GRADIENT_SPIRAL_CLOCKWISE:
|
||||||
factor = gradient_calc_spiral_factor (rbd->dist,
|
factor = gradient_calc_spiral_factor (rbd->dist,
|
||||||
rbd->vec, rbd->offset,
|
rbd->vec, rbd->offset,
|
||||||
x - rbd->sx, y - rbd->sy,TRUE);
|
x - rbd->sx, y - rbd->sy, TRUE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GIMP_GRADIENT_SPIRAL_ANTICLOCKWISE:
|
case GIMP_GRADIENT_SPIRAL_ANTICLOCKWISE:
|
||||||
factor = gradient_calc_spiral_factor (rbd->dist,
|
factor = gradient_calc_spiral_factor (rbd->dist,
|
||||||
rbd->vec, rbd->offset,
|
rbd->vec, rbd->offset,
|
||||||
x - rbd->sx, y - rbd->sy,FALSE);
|
x - rbd->sx, y - rbd->sy, FALSE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -761,7 +761,8 @@ gradient_render_pixel (double x,
|
|||||||
|
|
||||||
if (rbd->blend_mode == GIMP_CUSTOM_MODE)
|
if (rbd->blend_mode == GIMP_CUSTOM_MODE)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (rbd->gradient, factor, rbd->reverse, color);
|
gimp_gradient_get_color_at (rbd->gradient, NULL,
|
||||||
|
factor, rbd->reverse, color);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -60,11 +60,16 @@ static gboolean gimp_gradient_get_popup_size (GimpViewable *viewable,
|
|||||||
static TempBuf * gimp_gradient_get_new_preview (GimpViewable *viewable,
|
static TempBuf * gimp_gradient_get_new_preview (GimpViewable *viewable,
|
||||||
gint width,
|
gint width,
|
||||||
gint height);
|
gint height);
|
||||||
static void gimp_gradient_dirty (GimpData *data);
|
|
||||||
static gchar * gimp_gradient_get_extension (GimpData *data);
|
static gchar * gimp_gradient_get_extension (GimpData *data);
|
||||||
static GimpData * gimp_gradient_duplicate (GimpData *data,
|
static GimpData * gimp_gradient_duplicate (GimpData *data,
|
||||||
gboolean stingy_memory_use);
|
gboolean stingy_memory_use);
|
||||||
|
|
||||||
|
static GimpGradientSegment *
|
||||||
|
gimp_gradient_get_segment_at_internal (GimpGradient *gradient,
|
||||||
|
GimpGradientSegment *seg,
|
||||||
|
gdouble pos);
|
||||||
|
|
||||||
|
|
||||||
static inline gdouble gimp_gradient_calc_linear_factor (gdouble middle,
|
static inline gdouble gimp_gradient_calc_linear_factor (gdouble middle,
|
||||||
gdouble pos);
|
gdouble pos);
|
||||||
static inline gdouble gimp_gradient_calc_curved_factor (gdouble middle,
|
static inline gdouble gimp_gradient_calc_curved_factor (gdouble middle,
|
||||||
@ -127,7 +132,8 @@ gimp_gradient_calc_sphere_increasing_factor (gdouble middle,
|
|||||||
{
|
{
|
||||||
pos = gimp_gradient_calc_linear_factor (middle, pos) - 1.0;
|
pos = gimp_gradient_calc_linear_factor (middle, pos) - 1.0;
|
||||||
|
|
||||||
return sqrt (1.0 - pos * pos); /* Works for convex increasing and concave decreasing */
|
/* Works for convex increasing and concave decreasing */
|
||||||
|
return sqrt (1.0 - pos * pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gdouble
|
static inline gdouble
|
||||||
@ -136,7 +142,8 @@ gimp_gradient_calc_sphere_decreasing_factor (gdouble middle,
|
|||||||
{
|
{
|
||||||
pos = gimp_gradient_calc_linear_factor (middle, pos);
|
pos = gimp_gradient_calc_linear_factor (middle, pos);
|
||||||
|
|
||||||
return 1.0 - sqrt(1.0 - pos * pos); /* Works for convex decreasing and concave increasing */
|
/* Works for convex decreasing and concave increasing */
|
||||||
|
return 1.0 - sqrt(1.0 - pos * pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -188,7 +195,6 @@ gimp_gradient_class_init (GimpGradientClass *klass)
|
|||||||
viewable_class->get_popup_size = gimp_gradient_get_popup_size;
|
viewable_class->get_popup_size = gimp_gradient_get_popup_size;
|
||||||
viewable_class->get_new_preview = gimp_gradient_get_new_preview;
|
viewable_class->get_new_preview = gimp_gradient_get_new_preview;
|
||||||
|
|
||||||
data_class->dirty = gimp_gradient_dirty;
|
|
||||||
data_class->save = gimp_gradient_save;
|
data_class->save = gimp_gradient_save;
|
||||||
data_class->get_extension = gimp_gradient_get_extension;
|
data_class->get_extension = gimp_gradient_get_extension;
|
||||||
data_class->duplicate = gimp_gradient_duplicate;
|
data_class->duplicate = gimp_gradient_duplicate;
|
||||||
@ -197,8 +203,7 @@ gimp_gradient_class_init (GimpGradientClass *klass)
|
|||||||
static void
|
static void
|
||||||
gimp_gradient_init (GimpGradient *gradient)
|
gimp_gradient_init (GimpGradient *gradient)
|
||||||
{
|
{
|
||||||
gradient->segments = NULL;
|
gradient->segments = NULL;
|
||||||
gradient->last_visited = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -266,14 +271,15 @@ gimp_gradient_get_new_preview (GimpViewable *viewable,
|
|||||||
gint width,
|
gint width,
|
||||||
gint height)
|
gint height)
|
||||||
{
|
{
|
||||||
GimpGradient *gradient = GIMP_GRADIENT (viewable);
|
GimpGradient *gradient = GIMP_GRADIENT (viewable);
|
||||||
TempBuf *temp_buf;
|
GimpGradientSegment *seg = NULL;
|
||||||
guchar *buf;
|
TempBuf *temp_buf;
|
||||||
guchar *p;
|
guchar *buf;
|
||||||
guchar *row;
|
guchar *p;
|
||||||
gint x, y;
|
guchar *row;
|
||||||
gdouble dx, cur_x;
|
gint x, y;
|
||||||
GimpRGB color;
|
gdouble dx, cur_x;
|
||||||
|
GimpRGB color;
|
||||||
|
|
||||||
dx = 1.0 / (width - 1);
|
dx = 1.0 / (width - 1);
|
||||||
cur_x = 0.0;
|
cur_x = 0.0;
|
||||||
@ -283,7 +289,7 @@ gimp_gradient_get_new_preview (GimpViewable *viewable,
|
|||||||
|
|
||||||
for (x = 0; x < width; x++)
|
for (x = 0; x < width; x++)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, cur_x, FALSE, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, cur_x, FALSE, &color);
|
||||||
|
|
||||||
*p++ = color.r * 255.0;
|
*p++ = color.r * 255.0;
|
||||||
*p++ = color.g * 255.0;
|
*p++ = color.g * 255.0;
|
||||||
@ -377,44 +383,46 @@ gimp_gradient_get_standard (void)
|
|||||||
return standard_gradient;
|
return standard_gradient;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gimp_gradient_dirty (GimpData *data)
|
|
||||||
{
|
|
||||||
GimpGradient *gradient = GIMP_GRADIENT (data);
|
|
||||||
|
|
||||||
gradient->last_visited = NULL;
|
|
||||||
|
|
||||||
if (GIMP_DATA_CLASS (parent_class)->dirty)
|
|
||||||
GIMP_DATA_CLASS (parent_class)->dirty (data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
gimp_gradient_get_extension (GimpData *data)
|
gimp_gradient_get_extension (GimpData *data)
|
||||||
{
|
{
|
||||||
return GIMP_GRADIENT_FILE_EXTENSION;
|
return GIMP_GRADIENT_FILE_EXTENSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
/**
|
||||||
gimp_gradient_get_color_at (GimpGradient *gradient,
|
* gimp_gradient_get_color_at:
|
||||||
gdouble pos,
|
* @gradient: a gradient
|
||||||
gboolean reverse,
|
* @seg: a segment to seed the search with (or %NULL)
|
||||||
GimpRGB *color)
|
* @pos: position in the gradient (between 0.0 and 1.0)
|
||||||
|
* @reverse:
|
||||||
|
* @color: returns the color
|
||||||
|
*
|
||||||
|
* If you are iterating over an gradient, you should pass the the
|
||||||
|
* return value from the last call for @seg.
|
||||||
|
*
|
||||||
|
* Return value: the gradient segment the color is from
|
||||||
|
**/
|
||||||
|
GimpGradientSegment *
|
||||||
|
gimp_gradient_get_color_at (GimpGradient *gradient,
|
||||||
|
GimpGradientSegment *seg,
|
||||||
|
gdouble pos,
|
||||||
|
gboolean reverse,
|
||||||
|
GimpRGB *color)
|
||||||
{
|
{
|
||||||
gdouble factor = 0.0;
|
gdouble factor = 0.0;
|
||||||
GimpGradientSegment *seg;
|
gdouble seg_len;
|
||||||
gdouble seg_len;
|
gdouble middle;
|
||||||
gdouble middle;
|
GimpRGB rgb;
|
||||||
GimpRGB rgb;
|
|
||||||
|
|
||||||
g_return_if_fail (GIMP_IS_GRADIENT (gradient));
|
g_return_val_if_fail (GIMP_IS_GRADIENT (gradient), NULL);
|
||||||
g_return_if_fail (color != NULL);
|
g_return_val_if_fail (color != NULL, NULL);
|
||||||
|
|
||||||
pos = CLAMP (pos, 0.0, 1.0);
|
pos = CLAMP (pos, 0.0, 1.0);
|
||||||
|
|
||||||
if (reverse)
|
if (reverse)
|
||||||
pos = 1.0 - pos;
|
pos = 1.0 - pos;
|
||||||
|
|
||||||
seg = gimp_gradient_get_segment_at (gradient, pos);
|
seg = gimp_gradient_get_segment_at_internal (gradient, seg, pos);
|
||||||
|
|
||||||
seg_len = seg->right - seg->left;
|
seg_len = seg->right - seg->left;
|
||||||
|
|
||||||
@ -526,22 +534,19 @@ gimp_gradient_get_color_at (GimpGradient *gradient,
|
|||||||
seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
seg->left_color.a + (seg->right_color.a - seg->left_color.a) * factor;
|
||||||
|
|
||||||
*color = rgb;
|
*color = rgb;
|
||||||
|
|
||||||
|
return seg;
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpGradientSegment *
|
static GimpGradientSegment *
|
||||||
gimp_gradient_get_segment_at (GimpGradient *gradient,
|
gimp_gradient_get_segment_at_internal (GimpGradient *gradient,
|
||||||
gdouble pos)
|
GimpGradientSegment *seg,
|
||||||
|
gdouble pos)
|
||||||
{
|
{
|
||||||
GimpGradientSegment *seg;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_GRADIENT (gradient), NULL);
|
|
||||||
|
|
||||||
/* handle FP imprecision at the edges of the gradient */
|
/* handle FP imprecision at the edges of the gradient */
|
||||||
pos = CLAMP (pos, 0.0, 1.0);
|
pos = CLAMP (pos, 0.0, 1.0);
|
||||||
|
|
||||||
if (gradient->last_visited)
|
if (! seg)
|
||||||
seg = gradient->last_visited;
|
|
||||||
else
|
|
||||||
seg = gradient->segments;
|
seg = gradient->segments;
|
||||||
|
|
||||||
while (seg)
|
while (seg)
|
||||||
@ -550,7 +555,6 @@ gimp_gradient_get_segment_at (GimpGradient *gradient,
|
|||||||
{
|
{
|
||||||
if (pos <= seg->right)
|
if (pos <= seg->right)
|
||||||
{
|
{
|
||||||
gradient->last_visited = seg; /* for speed */
|
|
||||||
return seg;
|
return seg;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -565,12 +569,20 @@ gimp_gradient_get_segment_at (GimpGradient *gradient,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Oops: we should have found a segment, but we didn't */
|
/* Oops: we should have found a segment, but we didn't */
|
||||||
g_warning ("%s: no matching segment for position %0.15f",
|
g_warning ("%s: no matching segment for position %0.15f", G_STRFUNC, pos);
|
||||||
G_STRFUNC, pos);
|
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GimpGradientSegment *
|
||||||
|
gimp_gradient_get_segment_at (GimpGradient *gradient,
|
||||||
|
gdouble pos)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_GRADIENT (gradient), NULL);
|
||||||
|
|
||||||
|
return gimp_gradient_get_segment_at_internal (gradient, NULL, pos);
|
||||||
|
}
|
||||||
|
|
||||||
/* gradient segment functions */
|
/* gradient segment functions */
|
||||||
|
|
||||||
GimpGradientSegment *
|
GimpGradientSegment *
|
||||||
@ -683,7 +695,7 @@ gimp_gradient_segment_split_midpoint (GimpGradient *gradient,
|
|||||||
gimp_data_freeze (GIMP_DATA (gradient));
|
gimp_data_freeze (GIMP_DATA (gradient));
|
||||||
|
|
||||||
/* Get color at original segment's midpoint */
|
/* Get color at original segment's midpoint */
|
||||||
gimp_gradient_get_color_at (gradient, lseg->middle, FALSE, &color);
|
gimp_gradient_get_color_at (gradient, lseg, lseg->middle, FALSE, &color);
|
||||||
|
|
||||||
/* Create a new segment and insert it in the list */
|
/* Create a new segment and insert it in the list */
|
||||||
|
|
||||||
@ -765,8 +777,10 @@ gimp_gradient_segment_split_uniform (GimpGradient *gradient,
|
|||||||
seg->right = lseg->left + (i + 1) * seg_len;
|
seg->right = lseg->left + (i + 1) * seg_len;
|
||||||
seg->middle = (seg->left + seg->right) / 2.0;
|
seg->middle = (seg->left + seg->right) / 2.0;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, seg->left, FALSE, &seg->left_color);
|
gimp_gradient_get_color_at (gradient, seg,
|
||||||
gimp_gradient_get_color_at (gradient, seg->right, FALSE, &seg->right_color);
|
seg->left, FALSE, &seg->left_color);
|
||||||
|
gimp_gradient_get_color_at (gradient, seg,
|
||||||
|
seg->right, FALSE, &seg->right_color);
|
||||||
|
|
||||||
seg->type = lseg->type;
|
seg->type = lseg->type;
|
||||||
seg->color = lseg->color;
|
seg->color = lseg->color;
|
||||||
@ -802,15 +816,11 @@ gimp_gradient_segment_split_uniform (GimpGradient *gradient,
|
|||||||
if (lseg->next)
|
if (lseg->next)
|
||||||
lseg->next->prev = seg;
|
lseg->next->prev = seg;
|
||||||
|
|
||||||
gradient->last_visited = NULL; /* Force re-search */
|
|
||||||
|
|
||||||
/* Done */
|
/* Done */
|
||||||
|
|
||||||
*newl = tmp;
|
*newl = tmp;
|
||||||
*newr = seg;
|
*newr = seg;
|
||||||
|
|
||||||
/* Delete old segment */
|
/* Delete old segment */
|
||||||
|
|
||||||
gimp_gradient_segment_free (lseg);
|
gimp_gradient_segment_free (lseg);
|
||||||
|
|
||||||
gimp_data_thaw (GIMP_DATA (gradient));
|
gimp_data_thaw (GIMP_DATA (gradient));
|
||||||
|
@ -57,9 +57,6 @@ struct _GimpGradient
|
|||||||
GimpData parent_instance;
|
GimpData parent_instance;
|
||||||
|
|
||||||
GimpGradientSegment *segments;
|
GimpGradientSegment *segments;
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GimpGradientSegment *last_visited;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GimpGradientClass
|
struct _GimpGradientClass
|
||||||
@ -68,18 +65,19 @@ struct _GimpGradientClass
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
GType gimp_gradient_get_type (void) G_GNUC_CONST;
|
GType gimp_gradient_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
GimpData * gimp_gradient_new (const gchar *name,
|
GimpData * gimp_gradient_new (const gchar *name,
|
||||||
gboolean stingy_memory_use);
|
gboolean stingy_memory_use);
|
||||||
GimpData * gimp_gradient_get_standard (void);
|
GimpData * gimp_gradient_get_standard (void);
|
||||||
|
|
||||||
void gimp_gradient_get_color_at (GimpGradient *gradient,
|
GimpGradientSegment * gimp_gradient_get_color_at (GimpGradient *gradient,
|
||||||
gdouble pos,
|
GimpGradientSegment *seg,
|
||||||
gboolean reverse,
|
gdouble pos,
|
||||||
GimpRGB *color);
|
gboolean reverse,
|
||||||
GimpGradientSegment * gimp_gradient_get_segment_at (GimpGradient *grad,
|
GimpRGB *color);
|
||||||
gdouble pos);
|
GimpGradientSegment * gimp_gradient_get_segment_at (GimpGradient *grad,
|
||||||
|
gdouble pos);
|
||||||
|
|
||||||
|
|
||||||
/* gradient segment functions */
|
/* gradient segment functions */
|
||||||
|
@ -62,10 +62,11 @@ gimp_palette_import_from_gradient (GimpGradient *gradient,
|
|||||||
const gchar *palette_name,
|
const gchar *palette_name,
|
||||||
gint n_colors)
|
gint n_colors)
|
||||||
{
|
{
|
||||||
GimpPalette *palette;
|
GimpPalette *palette;
|
||||||
gdouble dx, cur_x;
|
GimpGradientSegment *seg = NULL;
|
||||||
GimpRGB color;
|
gdouble dx, cur_x;
|
||||||
gint loop;
|
GimpRGB color;
|
||||||
|
gint i;
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_GRADIENT (gradient), NULL);
|
g_return_val_if_fail (GIMP_IS_GRADIENT (gradient), NULL);
|
||||||
g_return_val_if_fail (palette_name != NULL, NULL);
|
g_return_val_if_fail (palette_name != NULL, NULL);
|
||||||
@ -75,9 +76,9 @@ gimp_palette_import_from_gradient (GimpGradient *gradient,
|
|||||||
|
|
||||||
dx = 1.0 / (n_colors - 1);
|
dx = 1.0 / (n_colors - 1);
|
||||||
|
|
||||||
for (loop = 0, cur_x = 0; loop < n_colors; loop++, cur_x += dx)
|
for (i = 0, cur_x = 0; i < n_colors; i++, cur_x += dx)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, cur_x, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, cur_x, reverse, &color);
|
||||||
gimp_palette_add_entry (palette, -1, NULL, &color);
|
gimp_palette_add_entry (palette, -1, NULL, &color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +521,7 @@ gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options,
|
|||||||
|
|
||||||
if (pressure_options->color)
|
if (pressure_options->color)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pressure,
|
gimp_gradient_get_color_at (gradient, NULL, pressure,
|
||||||
gradient_options->gradient_reverse,
|
gradient_options->gradient_reverse,
|
||||||
color);
|
color);
|
||||||
|
|
||||||
@ -565,7 +565,7 @@ gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options,
|
|||||||
else
|
else
|
||||||
pos = pos - (gint) pos;
|
pos = pos - (gint) pos;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, pos,
|
gimp_gradient_get_color_at (gradient, NULL, pos,
|
||||||
gradient_options->gradient_reverse,
|
gradient_options->gradient_reverse,
|
||||||
color);
|
color);
|
||||||
|
|
||||||
|
@ -490,9 +490,10 @@ gradient_get_uniform_samples_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble pos = 0.0;
|
GimpGradientSegment *seg = NULL;
|
||||||
gdouble delta = 1.0 / (num_samples - 1);
|
gdouble pos = 0.0;
|
||||||
gdouble *sample;
|
gdouble delta = 1.0 / (num_samples - 1);
|
||||||
|
gdouble *sample;
|
||||||
|
|
||||||
num_color_samples = num_samples * 4;
|
num_color_samples = num_samples * 4;
|
||||||
|
|
||||||
@ -502,7 +503,7 @@ gradient_get_uniform_samples_invoker (Gimp *gimp,
|
|||||||
{
|
{
|
||||||
GimpRGB color;
|
GimpRGB color;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*sample++ = color.r;
|
*sample++ = color.r;
|
||||||
*sample++ = color.g;
|
*sample++ = color.g;
|
||||||
@ -612,7 +613,8 @@ gradient_get_custom_samples_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble *sample;
|
GimpGradientSegment *seg = NULL;
|
||||||
|
gdouble *sample;
|
||||||
|
|
||||||
num_color_samples = num_samples * 4;
|
num_color_samples = num_samples * 4;
|
||||||
|
|
||||||
@ -622,7 +624,7 @@ gradient_get_custom_samples_invoker (Gimp *gimp,
|
|||||||
{
|
{
|
||||||
GimpRGB color;
|
GimpRGB color;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, *pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, *pos, reverse, &color);
|
||||||
|
|
||||||
*sample++ = color.r;
|
*sample++ = color.r;
|
||||||
*sample++ = color.g;
|
*sample++ = color.g;
|
||||||
|
@ -173,6 +173,8 @@ gradients_sample_uniform_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
|
GimpGradientSegment *seg = NULL;
|
||||||
|
|
||||||
pos = 0.0;
|
pos = 0.0;
|
||||||
delta = 1.0 / (i - 1);
|
delta = 1.0 / (i - 1);
|
||||||
|
|
||||||
@ -184,7 +186,7 @@ gradients_sample_uniform_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
@ -278,6 +280,8 @@ gradients_sample_custom_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
|
GimpGradientSegment *seg = NULL;
|
||||||
|
|
||||||
array_length = i * 4;
|
array_length = i * 4;
|
||||||
|
|
||||||
pv = color_samples = g_new (gdouble, array_length);
|
pv = color_samples = g_new (gdouble, array_length);
|
||||||
@ -286,7 +290,7 @@ gradients_sample_custom_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, *pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, *pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
@ -397,10 +401,11 @@ gradients_get_gradient_data_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble *pv;
|
GimpGradientSegment *seg = NULL;
|
||||||
gdouble pos, delta;
|
gdouble *pv;
|
||||||
GimpRGB color;
|
gdouble pos, delta;
|
||||||
gint i;
|
GimpRGB color;
|
||||||
|
gint i;
|
||||||
|
|
||||||
i = sample_size;
|
i = sample_size;
|
||||||
pos = 0.0;
|
pos = 0.0;
|
||||||
@ -410,7 +415,7 @@ gradients_get_gradient_data_invoker (Gimp *gimp,
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
|
@ -797,7 +797,7 @@ view_set_hint (GimpGradientEditor *editor,
|
|||||||
|
|
||||||
xpos = control_calc_g_pos (editor, x);
|
xpos = control_calc_g_pos (editor, x);
|
||||||
|
|
||||||
gimp_gradient_get_color_at (GIMP_GRADIENT (data_editor->data),
|
gimp_gradient_get_color_at (GIMP_GRADIENT (data_editor->data), NULL,
|
||||||
xpos, FALSE, &rgb);
|
xpos, FALSE, &rgb);
|
||||||
|
|
||||||
gimp_rgb_to_hsv (&rgb, &hsv);
|
gimp_rgb_to_hsv (&rgb, &hsv);
|
||||||
@ -838,7 +838,7 @@ view_set_foreground (GimpGradientEditor *editor,
|
|||||||
|
|
||||||
xpos = control_calc_g_pos (editor, x);
|
xpos = control_calc_g_pos (editor, x);
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, xpos, FALSE, &color);
|
gimp_gradient_get_color_at (gradient, NULL, xpos, FALSE, &color);
|
||||||
|
|
||||||
gimp_context_set_foreground (user_context, &color);
|
gimp_context_set_foreground (user_context, &color);
|
||||||
|
|
||||||
@ -873,7 +873,7 @@ view_set_background (GimpGradientEditor *editor,
|
|||||||
|
|
||||||
xpos = control_calc_g_pos (editor, x);
|
xpos = control_calc_g_pos (editor, x);
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, xpos, FALSE, &color);
|
gimp_gradient_get_color_at (gradient, NULL, xpos, FALSE, &color);
|
||||||
|
|
||||||
gimp_context_set_background (user_context, &color);
|
gimp_context_set_background (user_context, &color);
|
||||||
|
|
||||||
|
@ -150,11 +150,12 @@ gimp_gradient_select_run_callback (GimpPdbDialog *dialog,
|
|||||||
gboolean closing,
|
gboolean closing,
|
||||||
gint *n_return_vals)
|
gint *n_return_vals)
|
||||||
{
|
{
|
||||||
GimpGradient *gradient = GIMP_GRADIENT (object);
|
GimpGradient *gradient = GIMP_GRADIENT (object);
|
||||||
gdouble *values, *pv;
|
GimpGradientSegment *seg = NULL;
|
||||||
gdouble pos, delta;
|
gdouble *values, *pv;
|
||||||
GimpRGB color;
|
gdouble pos, delta;
|
||||||
gint i;
|
GimpRGB color;
|
||||||
|
gint i;
|
||||||
|
|
||||||
i = GIMP_GRADIENT_SELECT (dialog)->sample_size;
|
i = GIMP_GRADIENT_SELECT (dialog)->sample_size;
|
||||||
pos = 0.0;
|
pos = 0.0;
|
||||||
@ -165,7 +166,7 @@ gimp_gradient_select_run_callback (GimpPdbDialog *dialog,
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pos, FALSE, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, FALSE, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
|
@ -132,6 +132,7 @@ gimp_view_renderer_gradient_render (GimpViewRenderer *renderer,
|
|||||||
{
|
{
|
||||||
GimpViewRendererGradient *rendergrad;
|
GimpViewRendererGradient *rendergrad;
|
||||||
GimpGradient *gradient;
|
GimpGradient *gradient;
|
||||||
|
GimpGradientSegment *seg = NULL;
|
||||||
guchar *even;
|
guchar *even;
|
||||||
guchar *odd;
|
guchar *odd;
|
||||||
guchar *buf;
|
guchar *buf;
|
||||||
@ -168,7 +169,8 @@ gimp_view_renderer_gradient_render (GimpViewRenderer *renderer,
|
|||||||
{
|
{
|
||||||
guchar r, g, b, a;
|
guchar r, g, b, a;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, cur_x, rendergrad->reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg,
|
||||||
|
cur_x, rendergrad->reverse, &color);
|
||||||
cur_x += dx;
|
cur_x += dx;
|
||||||
|
|
||||||
gimp_rgba_get_uchar (&color, &r, &g, &b, &a);
|
gimp_rgba_get_uchar (&color, &r, &g, &b, &a);
|
||||||
|
@ -481,9 +481,10 @@ HELP
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble pos = 0.0;
|
GimpGradientSegment *seg = NULL;
|
||||||
gdouble delta = 1.0 / (num_samples - 1);
|
gdouble pos = 0.0;
|
||||||
gdouble *sample;
|
gdouble delta = 1.0 / (num_samples - 1);
|
||||||
|
gdouble *sample;
|
||||||
|
|
||||||
num_color_samples = num_samples * 4;
|
num_color_samples = num_samples * 4;
|
||||||
|
|
||||||
@ -493,7 +494,7 @@ HELP
|
|||||||
{
|
{
|
||||||
GimpRGB color;
|
GimpRGB color;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*sample++ = color.r;
|
*sample++ = color.r;
|
||||||
*sample++ = color.g;
|
*sample++ = color.g;
|
||||||
@ -545,7 +546,8 @@ HELP
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble *sample;
|
GimpGradientSegment *seg = NULL;
|
||||||
|
gdouble *sample;
|
||||||
|
|
||||||
num_color_samples = num_samples * 4;
|
num_color_samples = num_samples * 4;
|
||||||
|
|
||||||
@ -555,7 +557,7 @@ HELP
|
|||||||
{
|
{
|
||||||
GimpRGB color;
|
GimpRGB color;
|
||||||
|
|
||||||
gimp_gradient_get_color_at (gradient, *pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, *pos, reverse, &color);
|
||||||
|
|
||||||
*sample++ = color.r;
|
*sample++ = color.r;
|
||||||
*sample++ = color.g;
|
*sample++ = color.g;
|
||||||
|
@ -110,6 +110,8 @@ sub gradients_sample_uniform {
|
|||||||
'GimpRGB color', 'gdouble *pv' ],
|
'GimpRGB color', 'gdouble *pv' ],
|
||||||
code => <<'CODE'
|
code => <<'CODE'
|
||||||
{
|
{
|
||||||
|
GimpGradientSegment *seg = NULL;
|
||||||
|
|
||||||
pos = 0.0;
|
pos = 0.0;
|
||||||
delta = 1.0 / (i - 1);
|
delta = 1.0 / (i - 1);
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ sub gradients_sample_uniform {
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
@ -153,6 +155,8 @@ sub gradients_sample_custom {
|
|||||||
vars => [ 'GimpGradient *gradient', 'GimpRGB color', 'gdouble *pv' ],
|
vars => [ 'GimpGradient *gradient', 'GimpRGB color', 'gdouble *pv' ],
|
||||||
code => <<'CODE'
|
code => <<'CODE'
|
||||||
{
|
{
|
||||||
|
GimpGradientSegment *seg = NULL;
|
||||||
|
|
||||||
array_length = i * 4;
|
array_length = i * 4;
|
||||||
|
|
||||||
pv = color_samples = g_new (gdouble, array_length);
|
pv = color_samples = g_new (gdouble, array_length);
|
||||||
@ -161,7 +165,7 @@ sub gradients_sample_custom {
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, *pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, *pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
@ -223,10 +227,11 @@ sub gradients_get_gradient_data {
|
|||||||
|
|
||||||
if (gradient)
|
if (gradient)
|
||||||
{
|
{
|
||||||
gdouble *pv;
|
GimpGradientSegment *seg = NULL;
|
||||||
gdouble pos, delta;
|
gdouble *pv;
|
||||||
GimpRGB color;
|
gdouble pos, delta;
|
||||||
gint i;
|
GimpRGB color;
|
||||||
|
gint i;
|
||||||
|
|
||||||
i = sample_size;
|
i = sample_size;
|
||||||
pos = 0.0;
|
pos = 0.0;
|
||||||
@ -236,7 +241,7 @@ sub gradients_get_gradient_data {
|
|||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
gimp_gradient_get_color_at (gradient, pos, reverse, &color);
|
seg = gimp_gradient_get_color_at (gradient, seg, pos, reverse, &color);
|
||||||
|
|
||||||
*pv++ = color.r;
|
*pv++ = color.r;
|
||||||
*pv++ = color.g;
|
*pv++ = color.g;
|
||||||
|
Reference in New Issue
Block a user