New routine in gimpmiscui and some code clean-up

This commit is contained in:
Maurits Rijk 2003-01-27 22:07:49 +00:00
parent 416049f460
commit 9984145f49
7 changed files with 362 additions and 991 deletions

View File

@ -1,3 +1,16 @@
2003-01-27 Maurits Rijk <lpeek.mrijk@consunet.nl>
* plug-ins/common/sample_colorize.c: code clean-up, added a few more
mnemonics to dialogs.
* plug-ins/gfig/gfig.c
* plug-ins/gflare/gflare.c
* plug-ins/FractalExplorer/FractalExplorer.c: use new
gimp_plug_in_parse_path routine.
* libgimp/gimpmiscui.[ch] (gimp_plug_in_parse_path): new routine used
in several plug-ins.
2003-01-27 Sven Neumann <sven@gimp.org> 2003-01-27 Sven Neumann <sven@gimp.org>
* app/gui/preferences-dialog.c: commented out debugging output. * app/gui/preferences-dialog.c: commented out debugging output.

View File

@ -280,3 +280,64 @@ gimp_fixme_preview_fill (GimpFixMePreview *preview,
g_free (src); g_free (src);
} }
GList*
gimp_plug_in_parse_path (gchar *path_name, const gchar *dir_name)
{
GList *path_list = NULL;
GList *fail_list = NULL;
GList *list;
gchar *path;
path = gimp_gimprc_query (path_name);
if (!path)
{
gchar *gimprc = gimp_personal_rc_file ("gimprc");
gchar *full_path;
gchar *esc_path;
full_path = g_strconcat
("${gimp_dir}", G_DIR_SEPARATOR_S, dir_name,
G_SEARCHPATH_SEPARATOR_S,
"${gimp_data_dir}", G_DIR_SEPARATOR_S, dir_name,
NULL);
esc_path = g_strescape (full_path, NULL);
g_message (_("No %s in gimprc:\n"
"You need to add an entry like\n"
"(%s \"%s\")\n"
"to your %s file."), path_name, path_name, esc_path,
gimprc);
g_free (gimprc);
g_free (full_path);
g_free (esc_path);
return NULL;
}
path_list = gimp_path_parse (path, 16, TRUE, &fail_list);
g_free (path);
if (fail_list)
{
GString *err = g_string_new (path_name);
g_string_append (err, _(" misconfigured - "
"the following folders were not found:"));
for (list = fail_list; list; list = g_list_next (list))
{
g_string_append_c (err, '\n');
g_string_append (err, (gchar *) list->data);
}
g_message (err->str);
g_string_free (err, TRUE);
gimp_path_free (fail_list);
}
return path_list;
}

View File

@ -68,6 +68,7 @@ void gimp_fixme_preview_do_row (GimpFixMePreview *preview,
gint width, gint width,
guchar *src); guchar *src);
GList *gimp_plug_in_parse_path (gchar *path_name, const gchar *dir_name);
G_END_DECLS G_END_DECLS

View File

@ -711,11 +711,9 @@ delete_dialog_callback (GtkWidget *widget,
} }
delete_dialog = NULL; delete_dialog = NULL;
return;
} }
static gint static gboolean
delete_fractal_callback (GtkWidget *widget, delete_fractal_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
@ -765,10 +763,7 @@ fractalexplorer_list_ok_callback (GtkWidget *widget,
list = options->list_entry; list = options->list_entry;
/* Set the new layer name */ /* Set the new layer name */
if (options->obj->draw_name) g_free(options->obj->draw_name);
{
g_free(options->obj->draw_name);
}
options->obj->draw_name = options->obj->draw_name =
g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry))); g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry)));
@ -785,7 +780,6 @@ fractalexplorer_list_ok_callback (GtkWidget *widget,
gtk_widget_destroy (options->query_box); gtk_widget_destroy (options->query_box);
g_free (options); g_free (options);
} }
static void static void
@ -795,7 +789,7 @@ fractalexplorer_list_cancel_callback (GtkWidget *widget,
fractalexplorerListOptions *options; fractalexplorerListOptions *options;
options = (fractalexplorerListOptions *) data; options = (fractalexplorerListOptions *) data;
if(options->created) if (options->created)
{ {
/* We are creating an entry so if cancelled /* We are creating an entry so if cancelled
* must del the list item as well * must del the list item as well
@ -909,9 +903,8 @@ new_button_press (GtkWidget *widget,
} }
/* /*
* Load all fractalexplorer, which are founded in fractalexplorer-path-list, into fractalexplorer_list. * Load all fractalexplorer, which are founded in fractalexplorer-path-list,
* fractalexplorer-path-list must be initialized first. (plug_in_parse_fractalexplorer_path ()) * into fractalexplorer_list.
* based on code from Gflare.
*/ */
static gint static gint
@ -932,7 +925,6 @@ fractalexplorer_list_pos (fractalexplorerOBJ *fractalexplorer)
n++; n++;
} }
return n; return n;
} }
@ -1043,17 +1035,13 @@ static void
list_button_update (fractalexplorerOBJ *obj) list_button_update (fractalexplorerOBJ *obj)
{ {
g_return_if_fail (obj != NULL); g_return_if_fail (obj != NULL);
pic_obj = (fractalexplorerOBJ *)obj; pic_obj = obj;
} }
fractalexplorerOBJ * fractalexplorerOBJ *
fractalexplorer_new (void) fractalexplorer_new (void)
{ {
fractalexplorerOBJ * new; return g_new0 (fractalexplorerOBJ, 1);
new = g_new0 (fractalexplorerOBJ, 1);
return new;
} }
void void
@ -1127,62 +1115,11 @@ list_button_press (GtkWidget *widget,
return FALSE; return FALSE;
} }
/*
* Query gimprc for fractalexplorer-path, and parse it.
* This code is based on script_fu_find_scripts ()
* and the Gflare plugin.
*/
void void
plug_in_parse_fractalexplorer_path (void) plug_in_parse_fractalexplorer_path (void)
{ {
GList *fail_list = NULL; fractalexplorer_path_list =
GList *list; gimp_plug_in_parse_path ("fractalexplorer-path", "fractalexplorer");
gchar *fractalexplorer_path;
gimp_path_free (fractalexplorer_path_list);
fractalexplorer_path_list = NULL;
fractalexplorer_path = gimp_gimprc_query ("fractalexplorer-path");
if (!fractalexplorer_path)
{
gchar *gimprc = gimp_personal_rc_file ("gimprc");
gchar *path = g_strescape
("${gimp_dir}" G_DIR_SEPARATOR_S "fractalexplorer"
G_SEARCHPATH_SEPARATOR_S
"${gimp_data_dir}" G_DIR_SEPARATOR_S "fractalexplorer",
NULL);
g_message (_("No fractalexplorer-path in gimprc:\n"
"You need to add an entry like\n"
"(fractalexplorer-path \"%s\")\n"
"to your %s file."), path, gimprc);
g_free (gimprc);
g_free (path);
return;
}
fractalexplorer_path_list = gimp_path_parse (fractalexplorer_path,
16, TRUE, &fail_list);
g_free (fractalexplorer_path);
if (fail_list)
{
GString *err =
g_string_new (_("fractalexplorer-path misconfigured - "
"the following folders were not found:"));
for (list = fail_list; list; list = g_list_next (list))
{
g_string_append_c (err, '\n');
g_string_append (err, (gchar *) list->data);
}
g_message (err->str);
g_string_free (err, TRUE);
gimp_path_free (fail_list);
}
} }
static void static void
@ -1201,7 +1138,7 @@ fractalexplorer_free_everything (fractalexplorerOBJ *fractalexplorer)
{ {
g_assert (fractalexplorer != NULL); g_assert (fractalexplorer != NULL);
if(fractalexplorer->filename) if (fractalexplorer->filename)
{ {
remove (fractalexplorer->filename); remove (fractalexplorer->filename);
} }
@ -1211,15 +1148,7 @@ fractalexplorer_free_everything (fractalexplorerOBJ *fractalexplorer)
static void static void
fractalexplorer_list_free_all (void) fractalexplorer_list_free_all (void)
{ {
GList * list; g_list_foreach (fractalexplorer_list, (GFunc) fractalexplorer_free, NULL);
fractalexplorerOBJ * fractalexplorer;
for (list = fractalexplorer_list; list; list = g_list_next (list))
{
fractalexplorer = (fractalexplorerOBJ *) list->data;
fractalexplorer_free (fractalexplorer);
}
g_list_free (fractalexplorer_list); g_list_free (fractalexplorer_list);
fractalexplorer_list = NULL; fractalexplorer_list = NULL;
} }
@ -1332,7 +1261,7 @@ fractalexplorer_list_load_all (GList *plist)
} }
} }
if(!fractalexplorer_list) if (!fractalexplorer_list)
{ {
/* lets have at least one! */ /* lets have at least one! */
fractalexplorer = fractalexplorer_new (); fractalexplorer = fractalexplorer_new ();
@ -1340,7 +1269,6 @@ fractalexplorer_list_load_all (GList *plist)
fractalexplorer_list_insert (fractalexplorer); fractalexplorer_list_insert (fractalexplorer);
} }
pic_obj = current_obj = fractalexplorer_list->data; /* set to first entry */ pic_obj = current_obj = fractalexplorer_list->data; /* set to first entry */
} }
GtkWidget * GtkWidget *
@ -1457,7 +1385,6 @@ fractalexplorer_rescan_list (void)
return; return;
} }
/* the dialog */
dlg = gimp_dialog_new (_("Rescan for Fractals"), "fractalexplorer", dlg = gimp_dialog_new (_("Rescan for Fractals"), "fractalexplorer",
gimp_standard_help_func, "filters/fractalexplorer.html", gimp_standard_help_func, "filters/fractalexplorer.html",
GTK_WIN_POS_MOUSE, GTK_WIN_POS_MOUSE,

View File

@ -191,6 +191,7 @@ typedef struct {
* Some globals * Some globals
*/ */
static GimpRunMode run_mode;
static t_samp_interface g_di; /* global dialog interface varables */ static t_samp_interface g_di; /* global dialog interface varables */
static t_values g_values = { -1, -1, 1, 1, 0, 1, 0, 255, 1.0, 0, 255, 5.5 }; static t_values g_values = { -1, -1, 1, 1, 0, 1, 0, 255, 1.0, 0, 255, 5.5 };
static t_samp_table_elem g_lum_tab[256]; static t_samp_table_elem g_lum_tab[256];
@ -322,7 +323,6 @@ run (gchar *name,
{ {
static GimpParam values[1]; static GimpParam values[1];
GimpDrawable *dst_drawable; GimpDrawable *dst_drawable;
GimpRunMode run_mode;
GimpPDBStatusType status = GIMP_PDB_SUCCESS; GimpPDBStatusType status = GIMP_PDB_SUCCESS;
const gchar *l_env; const gchar *l_env;
@ -1117,8 +1117,6 @@ p_levels_update (gint update)
} }
} /* end p_levels_update */ } /* end p_levels_update */
static gint static gint
p_level_in_events (GtkWidget *widget, p_level_in_events (GtkWidget *widget,
GdkEvent *event, GdkEvent *event,
@ -2019,8 +2017,6 @@ p_get_pixel( t_GDRW *gdrw, gint32 x, gint32 y, guchar *pixel )
return; return;
} }
/* gimp_pixel_rgn_get_pixel(&gdrw->pr, pixel, x, y); */
col = x / gdrw->tile_width; col = x / gdrw->tile_width;
row = y / gdrw->tile_height; row = y / gdrw->tile_height;
offx = x % gdrw->tile_width; offx = x % gdrw->tile_width;
@ -2528,7 +2524,7 @@ p_get_gradient (gint mode)
g_free (f_samples); g_free (f_samples);
} /* end p_get_gradient */ } /* end p_get_gradient */
gint32 static gint32
p_is_layer_alive(gint32 drawable_id) p_is_layer_alive(gint32 drawable_id)
{ {
/* return -1 if layer has become invalid */ /* return -1 if layer has become invalid */
@ -2539,9 +2535,9 @@ p_is_layer_alive(gint32 drawable_id)
gint l_idi, l_idl; gint l_idi, l_idl;
gint l_found; gint l_found;
if(drawable_id < 0) if (drawable_id < 0)
{ {
return (-1); return -1;
} }
/* gimp_layer_get_image_id: crash in gimp 1.1.2 if called with invalid drawable_id /* gimp_layer_get_image_id: crash in gimp 1.1.2 if called with invalid drawable_id
@ -2555,69 +2551,59 @@ p_is_layer_alive(gint32 drawable_id)
* } * }
*/ */
images = gimp_image_list(&nimages); images = gimp_image_list (&nimages);
l_idi = nimages -1; l_idi = nimages -1;
l_found = FALSE; l_found = FALSE;
while((l_idi >= 0) && images) while ((l_idi >= 0) && images)
{ {
layers = gimp_image_get_layers (images[l_idi], &nlayers); layers = gimp_image_get_layers (images[l_idi], &nlayers);
l_idl = nlayers -1; l_idl = nlayers - 1;
while((l_idl >= 0) && layers) while ((l_idl >= 0) && layers)
{ {
if(drawable_id == layers[l_idl]) if (drawable_id == layers[l_idl])
{ {
l_found = TRUE; l_found = TRUE;
break; break;
} }
l_idl--; l_idl--;
} }
g_free(layers); g_free (layers);
l_idi--; l_idi--;
} }
if(images) g_free(images); g_free(images);
if(!l_found) if (!l_found)
{ {
printf("sample colorize: unknown layer_id %d (Image closed?)\n", (int)drawable_id); printf("sample colorize: unknown layer_id %d (Image closed?)\n",
return (-1); (int)drawable_id);
return -1;
} }
return drawable_id;
return(drawable_id);
} /* end p_is_layer_alive */ } /* end p_is_layer_alive */
static void
void
p_end_gdrw(t_GDRW *gdrw) p_end_gdrw(t_GDRW *gdrw)
{ {
t_GDRW *l_sel_gdrw; t_GDRW *sel_gdrw;
if(g_Sdebug) printf("\np_end_gdrw: drawable %p ID: %d\n", gdrw->drawable, (int)gdrw->drawable->drawable_id); if (gdrw->tile)
if(gdrw->tile)
{ {
if(g_Sdebug) printf("p_end_gdrw: tile unref\n"); gimp_tile_unref (gdrw->tile, gdrw->tile_dirty);
gimp_tile_unref( gdrw->tile, gdrw->tile_dirty);
gdrw->tile = NULL; gdrw->tile = NULL;
} }
l_sel_gdrw = (t_GDRW *)(gdrw->sel_gdrw); sel_gdrw = (t_GDRW*)(gdrw->sel_gdrw);
if(l_sel_gdrw) if (sel_gdrw)
{ {
if(l_sel_gdrw->tile) if(sel_gdrw->tile)
{ {
if(g_Sdebug) printf("p_end_gdrw: sel_tile unref\n"); gimp_tile_unref (sel_gdrw->tile, sel_gdrw->tile_dirty);
gimp_tile_unref( l_sel_gdrw->tile, l_sel_gdrw->tile_dirty); sel_gdrw->tile = NULL;
l_sel_gdrw->tile = NULL;
if(g_Sdebug) printf("p_end_gdrw:SEL_TILE_SWAPCOUNT: %d\n", (int)l_sel_gdrw->tile_swapcount);
} }
gdrw->sel_gdrw = NULL; gdrw->sel_gdrw = NULL;
} }
}
if(g_Sdebug) printf("p_end_gdrw:TILE_SWAPCOUNT: %d\n", (int)gdrw->tile_swapcount);
} /* end p_end_gdrw */ static void
void
p_init_gdrw(t_GDRW *gdrw, GimpDrawable *drawable, gint dirty, gint shadow) p_init_gdrw(t_GDRW *gdrw, GimpDrawable *drawable, gint dirty, gint shadow)
{ {
gint32 l_image_id; gint32 l_image_id;
@ -2643,13 +2629,6 @@ p_init_gdrw(t_GDRW *gdrw, GimpDrawable *drawable, gint dirty, gint shadow)
gimp_drawable_mask_bounds (drawable->drawable_id, &gdrw->x1, &gdrw->y1, &gdrw->x2, &gdrw->y2); gimp_drawable_mask_bounds (drawable->drawable_id, &gdrw->x1, &gdrw->y1, &gdrw->x2, &gdrw->y2);
/*
* gimp_pixel_rgn_init (&gdrw->pr, drawable,
* gdrw->x1, gdrw->y1, gdrw->x2 - gdrw->x1, gdrw->y2 - gdrw->y1,
* dirty, shadow);
*/
gdrw->bpp = drawable->bpp; gdrw->bpp = drawable->bpp;
if (gimp_drawable_has_alpha(drawable->drawable_id)) if (gimp_drawable_has_alpha(drawable->drawable_id))
{ {
@ -2660,8 +2639,7 @@ p_init_gdrw(t_GDRW *gdrw, GimpDrawable *drawable, gint dirty, gint shadow)
{ {
gdrw->index_alpha = 0; /* there is no alpha channel */ gdrw->index_alpha = 0; /* there is no alpha channel */
} }
l_image_id = gimp_layer_get_image_id(drawable->drawable_id); l_image_id = gimp_layer_get_image_id(drawable->drawable_id);
/* check and see if we have a selection mask */ /* check and see if we have a selection mask */
@ -2719,12 +2697,11 @@ p_init_gdrw(t_GDRW *gdrw, GimpDrawable *drawable, gint dirty, gint shadow)
else else
{ {
gdrw->sel_gdrw = NULL; /* selection is FALSE */ gdrw->sel_gdrw = NULL; /* selection is FALSE */
} }
} /* end p_init_gdrw */ } /* end p_init_gdrw */
/* analyze the colors in the sample_drawable */ /* analyze the colors in the sample_drawable */
int static int
p_sample_analyze(t_GDRW *sample_gdrw) p_sample_analyze(t_GDRW *sample_gdrw)
{ {
gint32 l_sample_pixels; gint32 l_sample_pixels;
@ -2748,8 +2725,6 @@ p_sample_analyze(t_GDRW *sample_gdrw)
l_progress = 0.0; l_progress = 0.0;
if(g_show_progress) gimp_progress_init (_("Sample Analyze...")); if(g_show_progress) gimp_progress_init (_("Sample Analyze..."));
prot_fp = NULL; prot_fp = NULL;
if(g_Sdebug) prot_fp = fopen("sample_colors.dump", "w"); if(g_Sdebug) prot_fp = fopen("sample_colors.dump", "w");
p_print_values(prot_fp); p_print_values(prot_fp);
@ -2837,7 +2812,7 @@ p_sample_analyze(t_GDRW *sample_gdrw)
if(prot_fp) fclose(prot_fp); if(prot_fp) fclose(prot_fp);
/* check if there was at least one visible pixel */ /* check if there was at least one visible pixel */
if(l_sample_pixels == 0) if (l_sample_pixels == 0)
{ {
printf("Error: Source sample has no visible Pixel\n"); printf("Error: Source sample has no visible Pixel\n");
return -1; return -1;
@ -2845,7 +2820,7 @@ p_sample_analyze(t_GDRW *sample_gdrw)
return 0; return 0;
} /* end p_sample_analyze */ } /* end p_sample_analyze */
void static void
p_rnd_remap(gint32 lum, guchar *mapped_color) p_rnd_remap(gint32 lum, guchar *mapped_color)
{ {
t_samp_color_elem *l_col_ptr; t_samp_color_elem *l_col_ptr;
@ -2853,7 +2828,7 @@ p_rnd_remap(gint32 lum, guchar *mapped_color)
gint l_ct; gint l_ct;
gint l_idx; gint l_idx;
if(g_lum_tab[lum].all_samples > 1) if (g_lum_tab[lum].all_samples > 1)
{ {
l_rnd = g_random_int_range (0, g_lum_tab[lum].all_samples); l_rnd = g_random_int_range (0, g_lum_tab[lum].all_samples);
l_ct = 0; l_ct = 0;
@ -2879,8 +2854,7 @@ p_rnd_remap(gint32 lum, guchar *mapped_color)
memcpy(mapped_color, &g_sample_color_tab[lum + lum + lum], 3); memcpy(mapped_color, &g_sample_color_tab[lum + lum + lum], 3);
} /* end p_rnd_remap */ } /* end p_rnd_remap */
static void
void
p_remap_pixel(guchar *pixel, guchar *original, gint bpp2) p_remap_pixel(guchar *pixel, guchar *original, gint bpp2)
{ {
guchar mapped_color[4]; guchar mapped_color[4];
@ -2891,24 +2865,30 @@ p_remap_pixel(guchar *pixel, guchar *original, gint bpp2)
double l_dg, l_dr, l_db; double l_dg, l_dr, l_db;
double l_dlum; double l_dlum;
/* get brightness from (uncolorized) original */
l_lum = g_out_trans_tab[g_lvl_trans_tab[LUMINOSITY_1(original)]]; /* get brightness from (uncolorized) original */ l_lum = g_out_trans_tab[g_lvl_trans_tab[LUMINOSITY_1(original)]];
if(g_values.rnd_subcolors) if (g_values.rnd_subcolors)
{ {
p_rnd_remap(l_lum, mapped_color); p_rnd_remap (l_lum, mapped_color);
} }
else else
{ {
memcpy(mapped_color, &g_sample_color_tab[l_lum + l_lum + l_lum], 3); memcpy (mapped_color, &g_sample_color_tab[l_lum + l_lum + l_lum], 3);
} }
if(g_values.hold_inten) if (g_values.hold_inten)
{ {
if(g_values.orig_inten) { l_orig_lum = LUMINOSITY_0(original); } if (g_values.orig_inten)
else { l_orig_lum = 100.0 * g_lvl_trans_tab[LUMINOSITY_1(original)]; } {
l_orig_lum = LUMINOSITY_0(original);
}
else
{
l_orig_lum = 100.0 * g_lvl_trans_tab[LUMINOSITY_1(original)];
}
l_mapped_lum = LUMINOSITY_0(mapped_color); l_mapped_lum = LUMINOSITY_0(mapped_color);
if(l_mapped_lum == 0) if (l_mapped_lum == 0)
{ {
/* convert black to greylevel with desired brightness value */ /* convert black to greylevel with desired brightness value */
mapped_color[0] = l_orig_lum / 100.0; mapped_color[0] = l_orig_lum / 100.0;
@ -3028,12 +3008,12 @@ p_remap_pixel(guchar *pixel, guchar *original, gint bpp2)
{ {
/* overflow in the blue channel (compensate with green and red) */ /* overflow in the blue channel (compensate with green and red) */
l_dlum = (l_blu - 255.0) * 11.0; l_dlum = (l_blu - 255.0) * 11.0;
if(l_mg > 0) if (l_mg > 0)
{ {
l_dg = l_dlum / (59.0 + (30.0 * l_mr / l_mg)); l_dg = l_dlum / (59.0 + (30.0 * l_mr / l_mg));
l_dr = l_dg * l_mr / l_mg; l_dr = l_dg * l_mr / l_mg;
} }
else if(l_mr > 0) else if (l_mr > 0)
{ {
l_dr = l_dlum / (30.0 + (59.0 * l_mg / l_mr)); l_dr = l_dlum / (30.0 + (59.0 * l_mg / l_mr));
l_dg = l_dr * l_mg / l_mr; l_dg = l_dr * l_mg / l_mr;
@ -3061,10 +3041,9 @@ p_remap_pixel(guchar *pixel, guchar *original, gint bpp2)
} }
} }
mapped_color[0] = CLAMP0255(l_red + 0.5);
mapped_color[0] = CLAMP(l_red + 0.5, 0, 255); mapped_color[1] = CLAMP0255(l_grn + 0.5);
mapped_color[1] = CLAMP(l_grn + 0.5, 0, 255); mapped_color[2] = CLAMP0255(l_blu + 0.5);
mapped_color[2] = CLAMP(l_blu + 0.5, 0, 255);
} }
} }
@ -3073,96 +3052,40 @@ p_remap_pixel(guchar *pixel, guchar *original, gint bpp2)
memcpy(pixel, &mapped_color[0], bpp2); memcpy(pixel, &mapped_color[0], bpp2);
} /* end p_remap_pixel */ } /* end p_remap_pixel */
static void
colorize_func(guchar *src, guchar *dest, gint bpp, gpointer data)
{
gboolean has_alpha = (gboolean) data;
void if (has_alpha)
{
bpp--;
dest[bpp] = src[bpp];
}
p_remap_pixel(dest, src, bpp);
}
static void
p_colorize_drawable(gint32 drawable_id) p_colorize_drawable(gint32 drawable_id)
{ {
GimpDrawable *drawable; GimpDrawable *drawable;
GimpPixelRgn pixel_rgn; gboolean has_alpha;
GimpPixelRgn shadow_rgn;
gpointer pr;
gint l_row, l_col;
gint l_bpp2;
gint l_has_alpha;
gint l_idx_alpha;
guchar *l_ptr;
guchar *l_row_ptr;
guchar *l_sh_ptr;
guchar *l_sh_row_ptr;
gint32 l_x1, l_x2, l_y1, l_y2;
float l_progress_step;
float l_progress;
if(drawable_id < 1) return;
drawable = gimp_drawable_get (drawable_id); drawable = gimp_drawable_get (drawable_id);
if(drawable == NULL) return; has_alpha = gimp_drawable_has_alpha(drawable->drawable_id);
gimp_drawable_mask_bounds (drawable->drawable_id, &l_x1, &l_y1, &l_x2, &l_y2); if (g_show_progress)
gimp_pixel_rgn_init (&pixel_rgn, drawable, gimp_progress_init (_("Remap Colorized..."));
l_x1, l_y1, l_x2 - l_x1, l_y2 - l_y1,
FALSE, /* dirty */
FALSE /* shadow */
);
gimp_pixel_rgn_init (&shadow_rgn, drawable,
l_x1, l_y1, l_x2 - l_x1, l_y2 - l_y1,
TRUE, /* dirty */
TRUE /* shadow */
);
/* init progress */
l_progress_step = 1.0 / ((1 + l_y2 - l_y1) * (1+ ((l_x2 - l_x1)/gimp_tile_width ())));
l_progress = 0.0;
if(g_show_progress) gimp_progress_init (_("Remap Colorized..."));
l_bpp2 = pixel_rgn.bpp; gimp_rgn_iterate2 (drawable, run_mode, colorize_func,
l_idx_alpha = pixel_rgn.bpp -1; GINT_TO_POINTER (has_alpha));
l_has_alpha = gimp_drawable_has_alpha(drawable->drawable_id);
if(l_has_alpha)
{
l_bpp2--; /* do not remap the alpha channel bytes */
}
for (pr = gimp_pixel_rgns_register (2, &pixel_rgn, &shadow_rgn);
pr != NULL; pr = gimp_pixel_rgns_process (pr))
{
l_row_ptr = pixel_rgn.data;
l_sh_row_ptr = shadow_rgn.data;
for ( l_row = 0; l_row < pixel_rgn.h; l_row++ )
{
l_ptr = l_row_ptr;
l_sh_ptr = l_sh_row_ptr;
for( l_col = 0; l_col < pixel_rgn.w; l_col++)
{
/* if this is a visible (non-transparent) pixel */
if(l_has_alpha)
{
l_sh_ptr[l_idx_alpha] = l_ptr[l_idx_alpha];
}
p_remap_pixel(l_sh_ptr, l_ptr, l_bpp2); /* set colorized pixel in shadow pr */
l_ptr += pixel_rgn.bpp;
l_sh_ptr += shadow_rgn.bpp;
}
l_row_ptr += pixel_rgn.rowstride;
l_sh_row_ptr += shadow_rgn.rowstride;
if(g_show_progress) gimp_progress_update (l_progress += l_progress_step);
}
if(g_Sdebug) printf ("ROWS done, progress :%f\n", (float)l_progress);
}
/* reset the progress to zero to indiciate that the plug-in has done its job */
if (g_show_progress) if (g_show_progress)
gimp_progress_update (0.0); gimp_progress_update (0.0);
}
gimp_drawable_flush (drawable);
gimp_drawable_merge_shadow (drawable->drawable_id, TRUE);
gimp_drawable_update (drawable->drawable_id, l_x1, l_y1, l_x2 - l_x1, l_y2 - l_y1);
} /* end p_colorize_drawable */
/* colorize dst_drawable like sample_drawable */ /* colorize dst_drawable like sample_drawable */
int static int
p_main_colorize(gint mc_flags) p_main_colorize(gint mc_flags)
{ {
GimpDrawable *dst_drawable; GimpDrawable *dst_drawable;
@ -3183,41 +3106,47 @@ p_main_colorize(gint mc_flags)
l_rc = 0; l_rc = 0;
if(mc_flags & MC_GET_SAMPLE_COLORS) if (mc_flags & MC_GET_SAMPLE_COLORS)
{ {
l_id = g_values.sample_id; l_id = g_values.sample_id;
if((l_id == SMP_GRADIENT) || (l_id == SMP_INV_GRADIENT)) if ((l_id == SMP_GRADIENT) || (l_id == SMP_INV_GRADIENT))
{ {
p_get_gradient(l_id); p_get_gradient(l_id);
} }
else else
{ {
if(p_is_layer_alive(l_id) < 0) { return (-1); } if (p_is_layer_alive(l_id) < 0)
{
return -1;
}
sample_drawable = gimp_drawable_get (l_id); sample_drawable = gimp_drawable_get (l_id);
p_init_gdrw(&l_sample_gdrw, sample_drawable, FALSE, FALSE); p_init_gdrw (&l_sample_gdrw, sample_drawable, FALSE, FALSE);
p_free_colors(); p_free_colors ();
l_rc = p_sample_analyze(&l_sample_gdrw); l_rc = p_sample_analyze (&l_sample_gdrw);
} }
} }
if((mc_flags & MC_DST_REMAP) && (l_rc == 0)) if ((mc_flags & MC_DST_REMAP) && (l_rc == 0))
{ {
if(p_is_layer_alive(g_values.dst_id) < 0) { return (-1); } if (p_is_layer_alive(g_values.dst_id) < 0)
{
return -1;
}
dst_drawable = gimp_drawable_get (g_values.dst_id); dst_drawable = gimp_drawable_get (g_values.dst_id);
if(gimp_drawable_is_gray(g_values.dst_id)) if (gimp_drawable_is_gray (g_values.dst_id))
{ {
if(mc_flags & MC_DST_REMAP) if (mc_flags & MC_DST_REMAP)
{ {
gimp_convert_rgb(gimp_layer_get_image_id(g_values.dst_id)); gimp_convert_rgb (gimp_layer_get_image_id (g_values.dst_id));
} }
} }
p_colorize_drawable(dst_drawable->drawable_id); p_colorize_drawable (dst_drawable->drawable_id);
}
if(sample_drawable)
{
p_end_gdrw(&l_sample_gdrw);
} }
return (l_rc); if (sample_drawable)
{
p_end_gdrw (&l_sample_gdrw);
}
return l_rc;
} /* end p_main_colorize */ } /* end p_main_colorize */

View File

@ -769,66 +769,6 @@ run (gchar *name,
gimp_drawable_detach (drawable); gimp_drawable_detach (drawable);
} }
/*
* Query gimprc for gfig-path, and parse it.
*/
static void
plug_in_parse_gfig_path (void)
{
GList *fail_list = NULL;
GList *list;
gchar *gfig_path;
if (gfig_path_list)
gimp_path_free (gfig_path_list);
gfig_path_list = NULL;
gfig_path = gimp_gimprc_query ("gfig-path");
if (!gfig_path)
{
gchar *gimprc = gimp_personal_rc_file ("gimprc");
gchar *path = g_strescape
("${gimp_dir}" G_DIR_SEPARATOR_S "gfig"
G_SEARCHPATH_SEPARATOR_S
"${gimp_data_dir}" G_DIR_SEPARATOR_S "gfig",
NULL);
g_message (_("No gfig-path in gimprc:\n"
"You need to add an entry like\n"
"(gfig-path \"%s\")\n"
"to your %s file."),
path, gimprc);
g_free (gimprc);
g_free (path);
return;
}
gfig_path_list = gimp_path_parse (gfig_path, 16, TRUE, &fail_list);
g_free (gfig_path);
if (fail_list)
{
GString *err =
g_string_new (_("gfig-path misconfigured - "
"the following folders were not found:"));
for (list = fail_list; list; list = g_list_next (list))
{
g_string_append_c (err, '\n');
g_string_append (err, (gchar *) list->data);
}
g_message (err->str);
g_string_free (err, TRUE);
gimp_path_free (fail_list);
}
}
/* /*
Translate SPACE to "\\040", etc. Translate SPACE to "\\040", etc.
Taken from gflare plugin Taken from gflare plugin
@ -901,27 +841,22 @@ gfig_list_pos (GFigObj *gfig)
n++; n++;
} }
return n; return n;
} }
/*
* Insert gfigs in alphabetical order
*/
static gint static gint
gfig_list_insert (GFigObj *gfig) gfig_list_insert (GFigObj *gfig)
{ {
gint n; gint n;
/*
* Insert gfigs in alphabetical order
*/
n = gfig_list_pos (gfig); n = gfig_list_pos (gfig);
gfig_list = g_list_insert (gfig_list, gfig, n); gfig_list = g_list_insert (gfig_list, gfig, n);
#ifdef DEBUG
printf ("gfig_list_insert %s => %d\n", gfig->draw_name, n);
#endif /* DEBUG */
return n; return n;
} }
@ -930,8 +865,7 @@ gfig_free (GFigObj *gfig)
{ {
g_assert (gfig != NULL); g_assert (gfig != NULL);
if (gfig->obj_list) free_all_objs (gfig->obj_list);
free_all_objs (gfig->obj_list);
g_free (gfig->name); g_free (gfig->name);
g_free (gfig->filename); g_free (gfig->filename);
@ -947,28 +881,15 @@ gfig_free_everything (GFigObj *gfig)
if (gfig->filename) if (gfig->filename)
{ {
#ifdef DEBUG
printf ("Removing filename '%s'\n", gfig->filename);
#endif /* DEBUG */
remove (gfig->filename); remove (gfig->filename);
} }
gfig_free (gfig); gfig_free (gfig);
} }
static void static void
gfig_list_free_all (void) gfig_list_free_all (void)
{ {
GList *list; g_list_foreach (gfig_list, (GFunc) gfig_free, NULL);
GFigObj *gfig;
for (list = gfig_list; list; list = g_list_next (list))
{
gfig = (GFigObj *) list->data;
gfig_free (gfig);
}
g_list_free (gfig_list); g_list_free (gfig_list);
gfig_list = NULL; gfig_list = NULL;
} }
@ -1040,11 +961,7 @@ gfig_list_load_all (GList *plist)
static GFigObj * static GFigObj *
gfig_new (void) gfig_new (void)
{ {
GFigObj * new; return g_new0 (GFigObj, 1);
new = g_new0 (GFigObj, 1);
return new;
} }
static void static void
@ -1409,13 +1326,10 @@ gfig_obj_counts (DAllObjs *objs)
{ {
gint count = 0; gint count = 0;
while (objs) for (; objs; objs = objs->next)
{ count++;
count++;
objs = objs->next;
}
return (count); return count;
} }
static void static void
@ -1626,16 +1540,7 @@ cache_preview (void)
img_bpp = real_img_bpp; img_bpp = real_img_bpp;
} }
switch (gimp_drawable_type (gfig_select_drawable->drawable_id)) isgrey = gimp_drawable_is_gray (gfig_select_drawable->drawable_id);
{
case GIMP_GRAYA_IMAGE:
case GIMP_GRAY_IMAGE:
isgrey = 1;
default:
break;
}
/*memset (p,-1, preview_width*preview_height*4); return;*/
for (y = 0; y < preview_height; y++) for (y = 0; y < preview_height; y++)
{ {
@ -1748,13 +1653,8 @@ select_button_clicked (GtkWidget *widget,
if (current_obj) if (current_obj)
{ {
objs = current_obj->obj_list; for (objs = current_obj->obj_list; objs; objs = objs->next)
count++;
while (objs)
{
objs = objs->next;
count++;
}
} }
switch (type) switch (type)
@ -2398,10 +2298,7 @@ gfig_brush_fill_preview (GtkWidget *pw,
GimpDrawable *brushdrawable; GimpDrawable *brushdrawable;
gint bcount = 3; gint bcount = 3;
if (bdesc->pv_buf) g_free (bdesc->pv_buf); /* Free old area */
{
g_free (bdesc->pv_buf); /* Free old area */
}
brushdrawable = gimp_drawable_get (layer_ID); brushdrawable = gimp_drawable_get (layer_ID);
@ -3909,7 +3806,7 @@ gfig_dialog (void)
yyy = gdk_rgb_get_visual (); yyy = gdk_rgb_get_visual ();
xxx = gdk_rgb_get_colormap (); xxx = gdk_rgb_get_colormap ();
plug_in_parse_gfig_path (); gfig_path_list = gimp_plug_in_parse_path ("gfig-path", "gfig");
/*cache_preview (); Get the preview image and store it also set has_alpha */ /*cache_preview (); Get the preview image and store it also set has_alpha */
@ -4279,11 +4176,9 @@ gfig_preview_events (GtkWidget *widget,
default: default:
break; break;
} }
return FALSE; return FALSE;
} }
/* /*
* The edit gfig name attributes dialog * The edit gfig name attributes dialog
* Modified from Gimp source - layer edit. * Modified from Gimp source - layer edit.
@ -4338,29 +4233,15 @@ gfig_list_ok_callback (GtkWidget *widget,
list = options->list_entry; list = options->list_entry;
/* Set the new layer name */ /* Set the new layer name */
#ifdef DEBUG
printf ("Found obj %s\n", options->obj->draw_name);
#endif /* DEBUG */
if (options->obj->draw_name)
g_free (options->obj->draw_name);
g_free (options->obj->draw_name);
options->obj->draw_name = options->obj->draw_name =
g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry))); g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry)));
#ifdef DEBUG
printf ("NEW name %s\n", options->obj->draw_name);
#endif /* DEBUG */
/* Need to reorder the list */ /* Need to reorder the list */
/* gtk_label_set_text (GTK_LABEL (options->layer_widget->label), layer->name);*/ /* gtk_label_set_text (GTK_LABEL (options->layer_widget->label), layer->name);*/
pos = gtk_list_child_position (GTK_LIST (gfig_gtk_list), list); pos = gtk_list_child_position (GTK_LIST (gfig_gtk_list), list);
#ifdef DEBUG
printf ("pos = %d\n", pos);
#endif /* DEBUG */
gtk_list_clear_items (GTK_LIST (gfig_gtk_list), pos, pos + 1); gtk_list_clear_items (GTK_LIST (gfig_gtk_list), pos, pos + 1);
/* remove/Add again */ /* remove/Add again */
@ -6197,8 +6078,7 @@ clear_undo (void)
for (lv = undo_water_mark; lv >= 0; lv--) for (lv = undo_water_mark; lv >= 0; lv--)
{ {
if (undo_table[lv]) free_all_objs (undo_table[lv]);
free_all_objs (undo_table[lv]);
undo_table[lv] = NULL; undo_table[lv] = NULL;
} }
@ -6504,23 +6384,16 @@ get_diffs (Dobject *obj,
g_assert (obj != NULL); g_assert (obj != NULL);
spnt = obj->points; for (spnt = obj->points; spnt; spnt = spnt->next)
if (!spnt)
return (NULL); /* no-line */
/* Slow slow slowwwwww....*/
while (spnt)
{ {
if (spnt->found_me) if (spnt->found_me)
{ {
*xdiff = spnt->pnt.x - to_pnt->x; *xdiff = spnt->pnt.x - to_pnt->x;
*ydiff = spnt->pnt.y - to_pnt->y; *ydiff = spnt->pnt.y - to_pnt->y;
return (spnt); return spnt;
} }
spnt = spnt->next;
} }
return (NULL); return NULL;
} }
static void static void
@ -6533,58 +6406,42 @@ update_pnts (Dobject *obj,
g_assert (obj != NULL); g_assert (obj != NULL);
/* Update all pnts */ /* Update all pnts */
spnt = obj->points; for (spnt = obj->points; spnt; spnt = spnt->next)
if (!spnt)
return; /* no-line */
/* Go around all the points drawing a line from one to the next */
while (spnt)
{ {
spnt->pnt.x = spnt->pnt.x - xdiff; spnt->pnt.x -= xdiff;
spnt->pnt.y = spnt->pnt.y - ydiff; spnt->pnt.y -= ydiff;
spnt = spnt->next;
} }
} }
static void static void
do_move_all_obj (GdkPoint *to_pnt) do_move_all_obj (GdkPoint *to_pnt)
{ {
/* Move all objects in one go */ /* Move all objects in one go */
/* Undraw/then draw in new pos */ /* Undraw/then draw in new pos */
DAllObjs *all; gint16 xdiff = move_all_pnt->x - to_pnt->x;
Dobject *obj; gint16 ydiff = move_all_pnt->y - to_pnt->y;
gint16 xdiff = 0;
gint16 ydiff = 0;
xdiff = move_all_pnt->x - to_pnt->x; if (xdiff || ydiff)
ydiff = move_all_pnt->y - to_pnt->y;
if (!xdiff && !ydiff)
return;
all = current_obj->obj_list;
while (all)
{ {
obj = all->obj; DAllObjs *all;
/* undraw ! */ for (all = current_obj->obj_list; all; all = all->next)
draw_one_obj (obj); {
Dobject *obj = all->obj;
/* undraw ! */
draw_one_obj (obj);
update_pnts (obj, xdiff, ydiff);
/* Draw in new pos */
draw_one_obj (obj);
}
update_pnts (obj, xdiff, ydiff); *move_all_pnt = *to_pnt;
/* Draw in new pos */
draw_one_obj (obj);
all = all->next;
} }
*move_all_pnt = *to_pnt; /* Structure copy */
} }
static void static void
do_move_obj (Dobject *obj, do_move_obj (Dobject *obj,
GdkPoint *to_pnt) GdkPoint *to_pnt)
@ -6596,17 +6453,16 @@ do_move_obj (Dobject *obj,
get_diffs (obj, &xdiff, &ydiff, to_pnt); get_diffs (obj, &xdiff, &ydiff, to_pnt);
if (!xdiff && !ydiff) if (xdiff || ydiff)
return; {
/* undraw ! */
/* undraw ! */ draw_one_obj (obj);
draw_one_obj (obj);
update_pnts (obj, xdiff, ydiff);
update_pnts (obj, xdiff, ydiff);
/* Draw in new pos */
/* Draw in new pos */ draw_one_obj (obj);
draw_one_obj (obj); }
} }
static void static void
@ -6703,7 +6559,7 @@ d_copy_line (Dobject *obj)
Dobject *nl; Dobject *nl;
if (!obj) if (!obj)
return (NULL); return NULL;
g_assert (obj->type == LINE); g_assert (obj->type == LINE);
@ -6711,7 +6567,7 @@ d_copy_line (Dobject *obj)
nl->points->next = d_copy_dobjpoints (obj->points->next); nl->points->next = d_copy_dobjpoints (obj->points->next);
return (nl); return nl;
} }
/* Draw the given line -- */ /* Draw the given line -- */
@ -6772,29 +6628,19 @@ d_paint_line (Dobject *obj)
gint seg_count = 0; gint seg_count = 0;
gint i = 0; gint i = 0;
spnt = obj->points; for (spnt = obj->points; spnt; spnt = spnt->next)
seg_count++;
/* count */ if (!seg_count)
while (spnt)
{
seg_count++;
spnt = spnt->next;
}
spnt = obj->points;
if (!spnt || !seg_count)
return; /* no-line */ return; /* no-line */
line_pnts = g_new0 (gdouble, 2 * seg_count + 1); line_pnts = g_new0 (gdouble, 2 * seg_count + 1);
/* Go around all the points drawing a line from one to the next */ /* Go around all the points drawing a line from one to the next */
while (spnt) for (spnt = obj->points; spnt; spnt = spnt->next)
{ {
line_pnts[i++] = spnt->pnt.x; line_pnts[i++] = spnt->pnt.x;
line_pnts[i++] = spnt->pnt.y; line_pnts[i++] = spnt->pnt.y;
spnt = spnt->next;
} }
/* Reverse line if approp */ /* Reverse line if approp */
@ -6827,7 +6673,6 @@ d_paint_line (Dobject *obj)
g_free (line_pnts); g_free (line_pnts);
} }
/* Create a new line object. starting at the x, y point might add styles /* Create a new line object. starting at the x, y point might add styles
* later. * later.
*/ */
@ -6861,7 +6706,7 @@ d_new_line (gint x,
nobj->paintfunc = d_paint_line; nobj->paintfunc = d_paint_line;
nobj->copyfunc = d_copy_line; nobj->copyfunc = d_copy_line;
return (nobj); return nobj;
} }
/* You guessed it delete the object !*/ /* You guessed it delete the object !*/
@ -7252,10 +7097,6 @@ d_copy_circle (Dobject * obj)
{ {
Dobject *nc; Dobject *nc;
#if DEBUG
printf ("Copy circle\n");
#endif /*DEBUG*/
if (!obj) if (!obj)
return NULL; return NULL;
@ -7265,13 +7106,6 @@ d_copy_circle (Dobject * obj)
nc->points->next = d_copy_dobjpoints (obj->points->next); nc->points->next = d_copy_dobjpoints (obj->points->next);
#if DEBUG
printf ("Circle (%x,%x) to (%x,%x)\n",
nc->points->pnt.x, obj->points->pnt.y,
nc->points->next->pnt.x, obj->points->next->pnt.y);
printf ("Done copy\n");
#endif /*DEBUG*/
return nc; return nc;
} }
@ -7287,10 +7121,6 @@ d_new_circle (gint x,
/* Start point */ /* Start point */
npnt = g_new0 (DobjPoints, 1); npnt = g_new0 (DobjPoints, 1);
#if DEBUG
printf ("New circle start at (%x,%x)\n", x, y);
#endif /* DEBUG */
npnt->pnt.x = x; npnt->pnt.x = x;
npnt->pnt.y = y; npnt->pnt.y = y;
@ -7405,13 +7235,8 @@ d_save_ellipse (Dobject *obj,
fprintf (to, "<ELLIPSE>\n"); fprintf (to, "<ELLIPSE>\n");
while (spnt) for (; spnt; spnt = spnt->next)
{ fprintf (to, "%d %d\n", spnt->pnt.x, spnt->pnt.y);
fprintf (to, "%d %d\n",
spnt->pnt.x,
spnt->pnt.y);
spnt = spnt->next;
}
fprintf (to, "</ELLIPSE>\n"); fprintf (to, "</ELLIPSE>\n");
} }
@ -7604,8 +7429,7 @@ d_paint_approx_ellipse (Dobject *obj)
if (first) if (first)
{ {
first_pnt.x = calc_pnt.x; first_pnt = calc_pnt;
first_pnt.y = calc_pnt.y;
first = 0; first = 0;
} }
} }
@ -7732,10 +7556,6 @@ d_copy_ellipse (Dobject * obj)
{ {
Dobject *nc; Dobject *nc;
#if DEBUG
printf ("Copy ellipse\n");
#endif /*DEBUG*/
if (!obj) if (!obj)
return (NULL); return (NULL);
@ -7745,14 +7565,7 @@ d_copy_ellipse (Dobject * obj)
nc->points->next = d_copy_dobjpoints (obj->points->next); nc->points->next = d_copy_dobjpoints (obj->points->next);
#if DEBUG return nc;
printf ("Ellipse (%x,%x) to (%x,%x)\n",
nc->points->pnt.x, obj->points->pnt.y,
nc->points->next->pnt.x, obj->points->next->pnt.y);
printf ("Done copy\n");
#endif /* DEBUG */
return (nc);
} }
static Dobject * static Dobject *
@ -7913,7 +7726,6 @@ d_save_poly (Dobject * obj, FILE *to)
fprintf (to, "<EXTRA>\n"); fprintf (to, "<EXTRA>\n");
fprintf (to, "%d\n</EXTRA>\n", obj->type_data); fprintf (to, "%d\n</EXTRA>\n", obj->type_data);
fprintf (to, "</POLY>\n"); fprintf (to, "</POLY>\n");
} }
/* Load a circle from the specified stream */ /* Load a circle from the specified stream */
@ -8597,7 +8409,7 @@ dist (gdouble x1,
double s1 = x1 - x2; double s1 = x1 - x2;
double s2 = y1 - y2; double s2 = y1 - y2;
return (sqrt ((s1*s1) + (s2*s2))); return sqrt (s1 * s1 + s2 * s2);
} }
/* Mid point of line returned */ /* Mid point of line returned */
@ -8625,10 +8437,7 @@ line_grad (gdouble x1,
dx = x1 - x2; dx = x1 - x2;
dy = y1 - y2; dy = y1 - y2;
if (dx == 0.0) return (dx == 0.0) ? 0.0 : dy / dx;
return (0.0); /* Infinite ! */
return (dy/dx);
} }
/* Constant of line that goes through x, y with grad lgrad */ /* Constant of line that goes through x, y with grad lgrad */
@ -8637,7 +8446,7 @@ line_cons (gdouble x,
gdouble y, gdouble y,
gdouble lgrad) gdouble lgrad)
{ {
return (y - lgrad*x); return y - lgrad * x;
} }
/*Get grad & const for perpend. line to given points */ /*Get grad & const for perpend. line to given points */
@ -9145,8 +8954,7 @@ d_paint_arc (Dobject *obj)
if (first) if (first)
{ {
first_pnt.x = calc_pnt.x; first_pnt = calc_pnt;
first_pnt.y = calc_pnt.y;
first = 0; first = 0;
} }
} }
@ -9328,7 +9136,7 @@ static void
d_save_star (Dobject *obj, d_save_star (Dobject *obj,
FILE *to) FILE *to)
{ {
DobjPoints * spnt; DobjPoints *spnt;
spnt = obj->points; spnt = obj->points;
@ -9671,8 +9479,7 @@ d_paint_star (Dobject *obj)
if (first) if (first)
{ {
first_pnt.x = calc_pnt.x; first_pnt = calc_pnt;
first_pnt.y = calc_pnt.y;
first = 0; first = 0;
} }
} }
@ -9734,7 +9541,7 @@ d_copy_star (Dobject * obj)
printf ("Done star copy\n"); printf ("Done star copy\n");
#endif /* DEBUG */ #endif /* DEBUG */
return (np); return np;
} }
static Dobject * static Dobject *
@ -9767,7 +9574,7 @@ d_new_star (gint x,
nobj->paintfunc = d_paint_star; nobj->paintfunc = d_paint_star;
nobj->copyfunc = d_copy_star; nobj->copyfunc = d_copy_star;
return (nobj); return nobj;
} }
static void static void
@ -10555,28 +10362,20 @@ d_draw_bezier (Dobject *obj)
spnt = obj->points; spnt = obj->points;
/* First count the number of points */ /* First count the number of points */
for (spnt = obj->points; spnt; spnt = spnt->next)
seg_count++;
/* count */ if (!seg_count)
while (spnt)
{
seg_count++;
spnt = spnt->next;
}
spnt = obj->points;
if (!spnt || !seg_count)
return; /* no-line */ return; /* no-line */
line_pnts = (fp_pnt) g_new0 (gdouble, 2 * seg_count + 1); line_pnts = (fp_pnt) g_new0 (gdouble, 2 * seg_count + 1);
/* Go around all the points drawing a line from one to the next */ /* Go around all the points drawing a line from one to the next */
while (spnt) for (spnt = obj->points; spnt; spnt = spnt->next)
{ {
draw_sqr (&spnt->pnt); draw_sqr (&spnt->pnt);
line_pnts[i][0] = spnt->pnt.x; line_pnts[i][0] = spnt->pnt.x;
line_pnts[i++][1] = spnt->pnt.y; line_pnts[i++][1] = spnt->pnt.y;
spnt = spnt->next;
} }
/* Generate an array of doubles which are the control points */ /* Generate an array of doubles which are the control points */
@ -10603,33 +10402,22 @@ d_paint_bezier (Dobject *obj)
gdouble (*bz_line_pnts)[2]; gdouble (*bz_line_pnts)[2];
DobjPoints *spnt; DobjPoints *spnt;
gint seg_count = 0; gint seg_count = 0;
gint i = 0; gint i = 0;
spnt = obj->points;
/* First count the number of points */ /* First count the number of points */
for (spnt = obj->points; spnt; spnt = spnt->next)
seg_count++;
/* count */ if (!seg_count)
while (spnt)
{
seg_count++;
spnt = spnt->next;
}
spnt = obj->points;
if (!spnt || !seg_count)
return; /* no-line */ return; /* no-line */
bz_line_pnts = (fp_pnt) g_new0 (gdouble, 2 * seg_count + 1); bz_line_pnts = (fp_pnt) g_new0 (gdouble, 2 * seg_count + 1);
/* Go around all the points drawing a line from one to the next */ /* Go around all the points drawing a line from one to the next */
while (spnt) for (spnt = obj->points; spnt; spnt = spnt->next)
{ {
bz_line_pnts[i][0] = spnt->pnt.x; bz_line_pnts[i][0] = spnt->pnt.x;
bz_line_pnts[i++][1] = spnt->pnt.y; bz_line_pnts[i++][1] = spnt->pnt.y;
spnt = spnt->next;
} }
fp_pnt_start (); fp_pnt_start ();
@ -10723,7 +10511,7 @@ d_new_bezier (gint x, gint y)
nobj->paintfunc = d_paint_bezier; nobj->paintfunc = d_paint_bezier;
nobj->copyfunc = d_copy_bezier; nobj->copyfunc = d_copy_bezier;
return (nobj); return nobj;
} }
static void static void

File diff suppressed because it is too large Load Diff