mirror of https://github.com/GNOME/gimp.git
plug-ins/common/neon.c plug-ins/common/noisify.c plug-ins/common/sobel.c
2004-09-02 Michael Natterer <mitch@gimp.org> * plug-ins/common/neon.c * plug-ins/common/noisify.c * plug-ins/common/sobel.c * plug-ins/common/softglow.c * plug-ins/common/spread.c * plug-ins/common/unsharp.c: fixed various coding style and naming issues and added some missing signal connections to update the new previews.
This commit is contained in:
parent
6d69fae5d8
commit
67f7f1dbea
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2004-09-02 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* plug-ins/common/neon.c
|
||||
* plug-ins/common/noisify.c
|
||||
* plug-ins/common/sobel.c
|
||||
* plug-ins/common/softglow.c
|
||||
* plug-ins/common/spread.c
|
||||
* plug-ins/common/unsharp.c: fixed various coding style and naming
|
||||
issues and added some missing signal connections to update the new
|
||||
previews.
|
||||
|
||||
2004-09-02 DindinX <david@dindinx.org>
|
||||
|
||||
* plug-ins/common/despeckle.c: don't assume the preview has always the
|
||||
|
|
|
@ -706,28 +706,31 @@ neon_dialog (GimpDrawable *drawable)
|
|||
preview = gimp_drawable_preview_new (drawable, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
|
||||
gtk_widget_show (preview);
|
||||
|
||||
g_signal_connect (preview, "invalidated",
|
||||
G_CALLBACK (neon_preview_update), NULL);
|
||||
G_CALLBACK (neon_preview_update),
|
||||
NULL);
|
||||
|
||||
table = gtk_table_new (2, 3, FALSE);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 6);
|
||||
gtk_box_pack_start_defaults (GTK_BOX (vbox), table);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
|
||||
gtk_widget_show (table);
|
||||
|
||||
/* Label, scale, entry for evals.radius */
|
||||
scale_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||
_("_Radius:"), 100, 8,
|
||||
evals.radius, 0.0,
|
||||
/* [DindinX] this value seems insane */
|
||||
evals.radius, 0.0, 64.0, 1, 10, 2,
|
||||
FALSE, 0.0,
|
||||
8 * MAX (drawable->width, drawable->height),
|
||||
1, 10, 2,
|
||||
TRUE, 0, 0,
|
||||
NULL, NULL);
|
||||
|
||||
g_signal_connect (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&evals.radius);
|
||||
g_signal_connect_swapped (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
/* Label, scale, entry for evals.amount */
|
||||
scale_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
|
@ -739,6 +742,9 @@ neon_dialog (GimpDrawable *drawable)
|
|||
g_signal_connect (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&evals.amount);
|
||||
g_signal_connect_swapped (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
|
@ -757,4 +763,3 @@ neon_preview_update (GtkWidget *preview)
|
|||
evals.amount,
|
||||
preview);
|
||||
}
|
||||
|
||||
|
|
|
@ -229,9 +229,8 @@ run (const gchar *name,
|
|||
gimp_displays_flush ();
|
||||
|
||||
/* Store data */
|
||||
if (run_mode == GIMP_RUN_INTERACTIVE) {
|
||||
if (run_mode == GIMP_RUN_INTERACTIVE)
|
||||
gimp_set_data ("plug_in_noisify", &nvals, sizeof (NoisifyVals));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -250,10 +249,11 @@ noisify_func (const guchar *src,
|
|||
gint bpp,
|
||||
gpointer data)
|
||||
{
|
||||
GRand *gr = (GRand*) data;
|
||||
gint noise = 0, b;
|
||||
GRand *gr = data;
|
||||
gint noise = 0;
|
||||
gint b;
|
||||
|
||||
if (!nvals.independent)
|
||||
if (! nvals.independent)
|
||||
noise = (gint) (nvals.noise[0] * gauss (gr) * 127);
|
||||
|
||||
for (b = 0; b < bpp; b++)
|
||||
|
@ -282,39 +282,41 @@ noisify (GimpDrawable *drawable,
|
|||
GRand *gr = g_rand_new ();
|
||||
|
||||
if (preview_mode)
|
||||
{
|
||||
guchar *preview_src, *preview_dst;
|
||||
GimpPixelRgn src_rgn;
|
||||
gint i;
|
||||
{
|
||||
guchar *preview_src, *preview_dst;
|
||||
GimpPixelRgn src_rgn;
|
||||
gint i;
|
||||
|
||||
preview_src = g_new (guchar, preview_width * preview_height * preview_bpp);
|
||||
preview_dst = g_new (guchar, preview_width * preview_height * preview_bpp);
|
||||
preview_src = g_new (guchar, preview_width * preview_height * preview_bpp);
|
||||
preview_dst = g_new (guchar, preview_width * preview_height * preview_bpp);
|
||||
|
||||
gimp_pixel_rgn_init (&src_rgn, drawable,
|
||||
preview_x1, preview_y1,
|
||||
preview_width, preview_height,
|
||||
FALSE, FALSE);
|
||||
gimp_pixel_rgn_get_rect (&src_rgn, preview_src,
|
||||
preview_x1, preview_y1,
|
||||
preview_width, preview_height);
|
||||
gimp_pixel_rgn_init (&src_rgn, drawable,
|
||||
preview_x1, preview_y1,
|
||||
preview_width, preview_height,
|
||||
FALSE, FALSE);
|
||||
gimp_pixel_rgn_get_rect (&src_rgn, preview_src,
|
||||
preview_x1, preview_y1,
|
||||
preview_width, preview_height);
|
||||
|
||||
for (i=0 ; i<preview_width * preview_height ; i++)
|
||||
noisify_func (preview_src + i * preview_bpp,
|
||||
preview_dst + i * preview_bpp,
|
||||
preview_bpp,
|
||||
gr);
|
||||
for (i = 0; i < preview_width * preview_height; i++)
|
||||
noisify_func (preview_src + i * preview_bpp,
|
||||
preview_dst + i * preview_bpp,
|
||||
preview_bpp,
|
||||
gr);
|
||||
|
||||
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
||||
0, 0, preview_width, preview_height,
|
||||
gimp_drawable_type (drawable->drawable_id),
|
||||
preview_dst,
|
||||
preview_width * preview_bpp);
|
||||
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
||||
0, 0, preview_width, preview_height,
|
||||
gimp_drawable_type (drawable->drawable_id),
|
||||
preview_dst,
|
||||
preview_width * preview_bpp);
|
||||
|
||||
g_free (preview_src);
|
||||
g_free (preview_dst);
|
||||
}
|
||||
g_free (preview_src);
|
||||
g_free (preview_dst);
|
||||
}
|
||||
else
|
||||
gimp_rgn_iterate2 (drawable, run_mode, noisify_func, gr);
|
||||
{
|
||||
gimp_rgn_iterate2 (drawable, run_mode, noisify_func, gr);
|
||||
}
|
||||
|
||||
g_rand_free (gr);
|
||||
}
|
||||
|
@ -331,7 +333,9 @@ preview_scroll_callback (GimpDrawable *drawable)
|
|||
}
|
||||
|
||||
static void
|
||||
noisify_add_channel (GtkWidget *table, gint channel, gchar *name,
|
||||
noisify_add_channel (GtkWidget *table,
|
||||
gint channel,
|
||||
gchar *name,
|
||||
GimpDrawable *drawable)
|
||||
{
|
||||
GtkObject *adj;
|
||||
|
@ -352,8 +356,10 @@ noisify_add_channel (GtkWidget *table, gint channel, gchar *name,
|
|||
}
|
||||
|
||||
static void
|
||||
noisify_add_alpha_channel (GtkWidget *table, gint channel, gchar *name,
|
||||
GimpDrawable *drawable)
|
||||
noisify_add_alpha_channel (GtkWidget *table,
|
||||
gint channel,
|
||||
gchar *name,
|
||||
GimpDrawable *drawable)
|
||||
{
|
||||
GtkObject *adj;
|
||||
|
||||
|
@ -374,7 +380,7 @@ noisify_add_alpha_channel (GtkWidget *table, gint channel, gchar *name,
|
|||
|
||||
static gint
|
||||
noisify_dialog (GimpDrawable *drawable,
|
||||
gint channels)
|
||||
gint channels)
|
||||
{
|
||||
GtkWidget *dlg;
|
||||
GtkWidget *vbox;
|
||||
|
@ -543,7 +549,7 @@ noisify_dialog (GimpDrawable *drawable,
|
|||
static gdouble
|
||||
gauss (GRand *gr)
|
||||
{
|
||||
gint i;
|
||||
gint i;
|
||||
gdouble sum = 0.0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
|
@ -569,20 +575,20 @@ noisify_double_adjustment_update (GtkAdjustment *adjustment,
|
|||
{
|
||||
gint i;
|
||||
switch (noise_int.channels)
|
||||
{
|
||||
case 1:
|
||||
n = 1;
|
||||
break;
|
||||
case 2:
|
||||
n = 1;
|
||||
break;
|
||||
case 3:
|
||||
n = 3;
|
||||
break;
|
||||
default:
|
||||
n = 3;
|
||||
break;
|
||||
}
|
||||
{
|
||||
case 1:
|
||||
n = 1;
|
||||
break;
|
||||
case 2:
|
||||
n = 1;
|
||||
break;
|
||||
case 3:
|
||||
n = 3;
|
||||
break;
|
||||
default:
|
||||
n = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
if (adjustment != GTK_ADJUSTMENT (noise_int.channel_adj[i]))
|
||||
|
|
|
@ -59,7 +59,7 @@ static void sobel (GimpDrawable *drawable,
|
|||
* Sobel interface
|
||||
*/
|
||||
static gboolean sobel_dialog (GimpDrawable *drawable);
|
||||
static void sobel_update_preview (GtkWidget *preview);
|
||||
static void sobel_preview_update (GtkWidget *preview);
|
||||
|
||||
/*
|
||||
* Sobel helper functions
|
||||
|
@ -237,7 +237,7 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
/* parameter settings */
|
||||
vbox = gtk_vbox_new (FALSE, 12);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
/* preview */
|
||||
|
@ -248,8 +248,10 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
preview = gimp_drawable_preview_new (drawable, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
|
||||
gtk_widget_show (preview);
|
||||
|
||||
g_signal_connect (preview, "invalidated",
|
||||
G_CALLBACK (sobel_update_preview), NULL);
|
||||
G_CALLBACK (sobel_preview_update),
|
||||
NULL);
|
||||
|
||||
toggle = gtk_check_button_new_with_mnemonic (_("Sobel _Horizontally"));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||
|
@ -260,7 +262,8 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_toggle_button_update),
|
||||
&bvals.horizontal);
|
||||
g_signal_connect_swapped (toggle, "toggled",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
toggle = gtk_check_button_new_with_mnemonic (_("Sobel _Vertically"));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||
|
@ -271,9 +274,11 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_toggle_button_update),
|
||||
&bvals.vertical);
|
||||
g_signal_connect_swapped (toggle, "toggled",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
toggle = gtk_check_button_new_with_mnemonic (_("_Keep sign of result (one direction only)"));
|
||||
toggle = gtk_check_button_new_with_mnemonic (_("_Keep sign of result "
|
||||
"(one direction only)"));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), bvals.keep_sign);
|
||||
gtk_widget_show (toggle);
|
||||
|
@ -282,7 +287,8 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_toggle_button_update),
|
||||
&bvals.keep_sign);
|
||||
g_signal_connect_swapped (toggle, "toggled",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
|
@ -294,7 +300,7 @@ sobel_dialog (GimpDrawable *drawable)
|
|||
}
|
||||
|
||||
static void
|
||||
sobel_update_preview (GtkWidget *preview)
|
||||
sobel_preview_update (GtkWidget *preview)
|
||||
{
|
||||
sobel (GIMP_DRAWABLE_PREVIEW (preview)->drawable,
|
||||
bvals.horizontal,
|
||||
|
|
|
@ -54,16 +54,16 @@ typedef struct
|
|||
* Function prototypes.
|
||||
*/
|
||||
|
||||
static void query (void);
|
||||
static void run (const gchar *name,
|
||||
gint nparams,
|
||||
const GimpParam *param,
|
||||
gint *nreturn_vals,
|
||||
GimpParam **return_vals);
|
||||
static void query (void);
|
||||
static void run (const gchar *name,
|
||||
gint nparams,
|
||||
const GimpParam *param,
|
||||
gint *nreturn_vals,
|
||||
GimpParam **return_vals);
|
||||
|
||||
static void softglow (GimpDrawable *drawable,
|
||||
GtkWidget *preview);
|
||||
static gboolean softglow_dialog (GimpDrawable *drawable);
|
||||
static void softglow (GimpDrawable *drawable,
|
||||
GtkWidget *preview);
|
||||
static gboolean softglow_dialog (GimpDrawable *drawable);
|
||||
|
||||
/*
|
||||
* Gaussian blur helper functions
|
||||
|
@ -530,11 +530,11 @@ transfer_pixels (gdouble *src1,
|
|||
gint i;
|
||||
gdouble sum;
|
||||
|
||||
for(i = 0; i < width; i++)
|
||||
for (i = 0; i < width; i++)
|
||||
{
|
||||
sum = src1[i] + src2[i];
|
||||
if (sum > 255) sum = 255;
|
||||
else if (sum < 0) sum = 0;
|
||||
|
||||
sum = CLAMP0255 (sum);
|
||||
|
||||
*dest = (guchar) sum;
|
||||
dest += jump;
|
||||
|
@ -668,7 +668,7 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
|
||||
vbox = gtk_vbox_new (FALSE, 12);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
|
||||
gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox);
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 12);
|
||||
|
@ -678,8 +678,10 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
preview = gimp_drawable_preview_new (drawable, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
|
||||
gtk_widget_show (preview);
|
||||
|
||||
g_signal_connect_swapped (preview, "invalidated",
|
||||
G_CALLBACK (softglow), drawable);
|
||||
G_CALLBACK (softglow),
|
||||
drawable);
|
||||
|
||||
table = gtk_table_new (3, 3, FALSE);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
|
||||
|
@ -698,7 +700,8 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&svals.glow_radius);
|
||||
g_signal_connect_swapped (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
/* Label, scale, entry for svals.amount */
|
||||
scale_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
|
@ -711,7 +714,8 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&svals.brightness);
|
||||
g_signal_connect_swapped (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
/* Label, scale, entry for svals.amount */
|
||||
scale_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||
|
@ -724,7 +728,8 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&svals.sharpness);
|
||||
g_signal_connect_swapped (scale_data, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
|
@ -734,4 +739,3 @@ softglow_dialog (GimpDrawable *drawable)
|
|||
|
||||
return run;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,19 +37,19 @@ typedef struct
|
|||
|
||||
/* Declare local functions.
|
||||
*/
|
||||
static void query (void);
|
||||
static void run (const gchar *name,
|
||||
gint nparams,
|
||||
const GimpParam *param,
|
||||
gint *nreturn_vals,
|
||||
GimpParam **return_vals);
|
||||
static void query (void);
|
||||
static void run (const gchar *name,
|
||||
gint nparams,
|
||||
const GimpParam *param,
|
||||
gint *nreturn_vals,
|
||||
GimpParam **return_vals);
|
||||
|
||||
static void spread (GimpDrawable *drawable);
|
||||
static void spread (GimpDrawable *drawable);
|
||||
|
||||
static gboolean spread_dialog (gint32 image_ID,
|
||||
GimpDrawable *drawable);
|
||||
static void spread_updating_preview (GimpPreview *preview,
|
||||
GtkWidget *size);
|
||||
static void spread_preview_update (GimpPreview *preview,
|
||||
GtkWidget *size);
|
||||
static gboolean spread_dialog (gint32 image_ID,
|
||||
GimpDrawable *drawable);
|
||||
|
||||
/***** Local vars *****/
|
||||
|
||||
|
@ -204,7 +204,8 @@ run (const gchar *name,
|
|||
gimp_drawable_detach (drawable);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
GimpPixelFetcher *pft;
|
||||
GRand *gr;
|
||||
gint x_amount;
|
||||
|
@ -236,9 +237,9 @@ spread_func (gint x,
|
|||
gpointer data)
|
||||
{
|
||||
SpreadParam_t *param = (SpreadParam_t*) data;
|
||||
gdouble angle;
|
||||
gint xdist, ydist;
|
||||
gint xi, yi;
|
||||
gdouble angle;
|
||||
gint xdist, ydist;
|
||||
gint xi, yi;
|
||||
|
||||
/* get random angle, x distance, and y distance */
|
||||
xdist = (param->x_amount > 0
|
||||
|
@ -269,36 +270,37 @@ spread (GimpDrawable *drawable)
|
|||
GimpRgnIterator *iter;
|
||||
SpreadParam_t param;
|
||||
|
||||
param.pft = gimp_pixel_fetcher_new (drawable, FALSE);
|
||||
param.gr = g_rand_new ();
|
||||
param.pft = gimp_pixel_fetcher_new (drawable, FALSE);
|
||||
param.gr = g_rand_new ();
|
||||
param.x_amount = (spvals.spread_amount_x + 1) / 2;
|
||||
param.y_amount = (spvals.spread_amount_y + 1) / 2;
|
||||
param.width = drawable->width;
|
||||
param.height = drawable->height;
|
||||
param.width = drawable->width;
|
||||
param.height = drawable->height;
|
||||
|
||||
iter = gimp_rgn_iterator_new (drawable, 0);
|
||||
gimp_rgn_iterator_dest (iter, spread_func, ¶m);
|
||||
gimp_rgn_iterator_free (iter);
|
||||
|
||||
g_rand_free (param.gr);
|
||||
}
|
||||
|
||||
static void
|
||||
spread_updating_preview (GimpPreview *preview,
|
||||
GtkWidget *size)
|
||||
spread_preview_update (GimpPreview *preview,
|
||||
GtkWidget *size)
|
||||
{
|
||||
SpreadParam_t param;
|
||||
gint x, y, bpp;
|
||||
guchar *buffer, *dest;
|
||||
gint x_off, y_off;
|
||||
gint width, height;
|
||||
GimpDrawablePreview *drawable_preview = GIMP_DRAWABLE_PREVIEW (preview);
|
||||
SpreadParam_t param;
|
||||
gint x, y, bpp;
|
||||
guchar *buffer, *dest;
|
||||
gint x_off, y_off;
|
||||
gint width, height;
|
||||
|
||||
param.pft = gimp_pixel_fetcher_new (drawable_preview->drawable, FALSE);
|
||||
param.gr = g_rand_new ();
|
||||
param.x_amount =
|
||||
(gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (size), 0) + 1) / 2;
|
||||
param.y_amount =
|
||||
(gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (size), 1) + 1) / 2;
|
||||
param.x_amount = (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (size),
|
||||
0) + 1) / 2;
|
||||
param.y_amount = (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (size),
|
||||
1) + 1) / 2;
|
||||
param.width = drawable_preview->drawable->width;
|
||||
param.height = drawable_preview->drawable->height;
|
||||
|
||||
|
@ -314,6 +316,7 @@ spread_updating_preview (GimpPreview *preview,
|
|||
spread_func (x + x_off, y + y_off, dest, bpp, ¶m);
|
||||
dest += bpp;
|
||||
}
|
||||
|
||||
gimp_drawable_preview_draw (drawable_preview, buffer);
|
||||
|
||||
g_free (buffer);
|
||||
|
@ -361,8 +364,7 @@ spread_dialog (gint32 image_ID,
|
|||
gtk_widget_show (preview);
|
||||
|
||||
frame = gimp_frame_new (_("Spread Amount"));
|
||||
gtk_container_set_border_width (GTK_CONTAINER (frame), 12);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), frame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
/* Get the image resolution and unit */
|
||||
|
@ -385,13 +387,17 @@ spread_dialog (gint32 image_ID,
|
|||
0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), size);
|
||||
gtk_widget_show (size);
|
||||
|
||||
g_signal_connect (preview, "invalidated",
|
||||
G_CALLBACK (spread_updating_preview), size);
|
||||
g_signal_connect_swapped (size, "value_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate), preview);
|
||||
G_CALLBACK (spread_preview_update),
|
||||
size);
|
||||
g_signal_connect_swapped (size, "refval_changed",
|
||||
G_CALLBACK (gimp_preview_invalidate),
|
||||
preview);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
spread_updating_preview (GIMP_PREVIEW(preview), size);
|
||||
spread_preview_update (GIMP_PREVIEW (preview), size);
|
||||
|
||||
run = (gimp_dialog_run (GIMP_DIALOG (dlg)) == GTK_RESPONSE_OK);
|
||||
|
||||
|
@ -407,4 +413,3 @@ spread_dialog (gint32 image_ID,
|
|||
|
||||
return run;
|
||||
}
|
||||
|
||||
|
|
|
@ -253,9 +253,9 @@ unsharp_mask (GimpDrawable *drawable,
|
|||
gdouble amount)
|
||||
{
|
||||
GimpPixelRgn srcPR, destPR;
|
||||
glong width, height;
|
||||
glong bytes;
|
||||
gint x1, y1, x2, y2;
|
||||
glong width, height;
|
||||
glong bytes;
|
||||
gint x1, y1, x2, y2;
|
||||
|
||||
/* Get the input */
|
||||
gimp_drawable_mask_bounds (drawable->drawable_id, &x1, &y1, &x2, &y2);
|
||||
|
@ -272,9 +272,9 @@ unsharp_mask (GimpDrawable *drawable,
|
|||
unsharp_region (srcPR, destPR, width, height, bytes, radius, amount,
|
||||
x1, x2, y1, y2, TRUE);
|
||||
|
||||
gimp_drawable_flush(drawable);
|
||||
gimp_drawable_merge_shadow(drawable->drawable_id, TRUE);
|
||||
gimp_drawable_update(drawable->drawable_id, x1, y1, (x2-x1), (y2-y1));
|
||||
gimp_drawable_flush (drawable);
|
||||
gimp_drawable_merge_shadow (drawable->drawable_id, TRUE);
|
||||
gimp_drawable_update (drawable->drawable_id, x1, y1, (x2-x1), (y2-y1));
|
||||
}
|
||||
|
||||
/* perform an unsharp mask on the region, given a source region, dest.
|
||||
|
@ -344,12 +344,12 @@ unsharp_region (GimpPixelRgn srcPR,
|
|||
for (row = 0; row < y; row++)
|
||||
{
|
||||
gimp_pixel_rgn_get_row (&srcPR, cur_row, x1, y1+row, x);
|
||||
gimp_pixel_rgn_get_row( &destPR, dest_row, x1, y1+row, x);
|
||||
gimp_pixel_rgn_get_row (&destPR, dest_row, x1, y1+row, x);
|
||||
blur_line (ctable, cmatrix, cmatrix_length, cur_row, dest_row, x, bytes);
|
||||
gimp_pixel_rgn_set_row (&destPR, dest_row, x1, y1+row, x);
|
||||
|
||||
if (show_progress && row % 5 == 0)
|
||||
gimp_progress_update ((gdouble) row / (3*y));
|
||||
gimp_progress_update ((gdouble) row / (3 * y));
|
||||
}
|
||||
|
||||
/* allocate column buffers */
|
||||
|
@ -404,21 +404,21 @@ unsharp_region (GimpPixelRgn srcPR,
|
|||
}
|
||||
/* update progress bar every five rows */
|
||||
if (show_progress && row%5 == 0)
|
||||
gimp_progress_update ((gdouble) row / (3*y) + 0.67);
|
||||
gimp_progress_update ((gdouble) row / (3 * y) + 0.67);
|
||||
|
||||
gimp_pixel_rgn_set_row(&destPR, dest_row, x1, y1+row, x);
|
||||
gimp_pixel_rgn_set_row (&destPR, dest_row, x1, y1+row, x);
|
||||
}
|
||||
|
||||
if (show_progress)
|
||||
gimp_progress_update (0.0);
|
||||
|
||||
/* free the memory we took */
|
||||
g_free(cmatrix);
|
||||
g_free(ctable);
|
||||
g_free(dest_col);
|
||||
g_free(cur_col);
|
||||
g_free(dest_row);
|
||||
g_free(cur_row);
|
||||
g_free (cmatrix);
|
||||
g_free (ctable);
|
||||
g_free (dest_col);
|
||||
g_free (cur_col);
|
||||
g_free (dest_row);
|
||||
g_free (cur_row);
|
||||
}
|
||||
|
||||
/* this function is written as if it is blurring a column at a time,
|
||||
|
@ -436,9 +436,10 @@ blur_line (gdouble *ctable,
|
|||
{
|
||||
gdouble scale;
|
||||
gdouble sum;
|
||||
gint i=0, j=0;
|
||||
gint row;
|
||||
gint cmatrix_middle = cmatrix_length/2;
|
||||
gint i = 0;
|
||||
gint j = 0;
|
||||
gint row;
|
||||
gint cmatrix_middle = cmatrix_length / 2;
|
||||
|
||||
gdouble *cmatrix_p;
|
||||
guchar *cur_col_p;
|
||||
|
@ -544,12 +545,12 @@ static gint
|
|||
gen_convolve_matrix (gdouble radius,
|
||||
gdouble **cmatrix_p)
|
||||
{
|
||||
gint matrix_length;
|
||||
gint matrix_midpoint;
|
||||
gdouble* cmatrix;
|
||||
gint i,j;
|
||||
gdouble std_dev;
|
||||
gdouble sum;
|
||||
gint matrix_length;
|
||||
gint matrix_midpoint;
|
||||
gdouble *cmatrix;
|
||||
gint i,j;
|
||||
gdouble std_dev;
|
||||
gdouble sum;
|
||||
|
||||
/* we want to generate a matrix that goes out a certain radius
|
||||
* from the center, so we have to go out ceil(rad-0.5) pixels,
|
||||
|
@ -602,7 +603,7 @@ gen_convolve_matrix (gdouble radius,
|
|||
/* find center val -- calculate an odd number of quanta to make it symmetric,
|
||||
* even if the center point is weighted slightly higher than others. */
|
||||
sum = 0;
|
||||
for (j=0; j<=50; j++)
|
||||
for (j = 0; j <= 50; j++)
|
||||
{
|
||||
sum += exp (-(0.5+0.02*j)*(0.5+0.02*j) /
|
||||
(2*std_dev*std_dev));
|
||||
|
@ -632,9 +633,9 @@ gen_lookup_table (gdouble *cmatrix,
|
|||
gdouble* lookup_table_p = lookup_table;
|
||||
gdouble* cmatrix_p = cmatrix;
|
||||
|
||||
for (i=0; i<cmatrix_length; i++)
|
||||
for (i = 0; i < cmatrix_length; i++)
|
||||
{
|
||||
for (j=0; j<256; j++)
|
||||
for (j = 0; j < 256; j++)
|
||||
{
|
||||
*(lookup_table_p++) = *cmatrix_p * (gdouble)j;
|
||||
}
|
||||
|
@ -668,8 +669,7 @@ unsharp_mask_dialog (GimpDrawable *drawable)
|
|||
|
||||
vbox = gtk_vbox_new (FALSE, 12);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 12);
|
||||
|
@ -680,8 +680,10 @@ unsharp_mask_dialog (GimpDrawable *drawable)
|
|||
&unsharp_params.update_preview);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
|
||||
gtk_widget_show (preview);
|
||||
|
||||
g_signal_connect (preview, "invalidated",
|
||||
G_CALLBACK (preview_update), NULL);
|
||||
G_CALLBACK (preview_update),
|
||||
NULL);
|
||||
|
||||
table = gtk_table_new (3, 3, FALSE);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
|
||||
|
@ -807,9 +809,9 @@ preview_update (GimpPreview *preview)
|
|||
preview_buf_y1, preview_buf_y2,
|
||||
FALSE);
|
||||
|
||||
gimp_pixel_rgn_get_rect(&destPR, render_buffer,
|
||||
preview_buf_x1, preview_buf_y1,
|
||||
preview_buf_width, preview_buf_height);
|
||||
gimp_pixel_rgn_get_rect (&destPR, render_buffer,
|
||||
preview_buf_x1, preview_buf_y1,
|
||||
preview_buf_width, preview_buf_height);
|
||||
|
||||
/*
|
||||
* Draw the preview image on the screen...
|
||||
|
@ -827,4 +829,3 @@ preview_update (GimpPreview *preview)
|
|||
|
||||
g_free (render_buffer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue