ported to GimpPreviewArea.
* plug-ins/common/despeckle.c: ported to GimpPreviewArea.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2004-07-31 DindinX <david@dindinx.org>
|
||||||
|
|
||||||
|
* plug-ins/common/despeckle.c: ported to GimpPreviewArea.
|
||||||
|
|
||||||
2004-07-31 Shlomi Fish <shlomif@iglu.org.il>
|
2004-07-31 Shlomi Fish <shlomif@iglu.org.il>
|
||||||
|
|
||||||
* plug-ins/gimpressionist/brush.c
|
* plug-ins/gimpressionist/brush.c
|
||||||
|
@ -631,8 +631,8 @@ despeckle_dialog (void)
|
|||||||
preview_width = MIN (sel_width, PREVIEW_SIZE);
|
preview_width = MIN (sel_width, PREVIEW_SIZE);
|
||||||
preview_height = MIN (sel_height, PREVIEW_SIZE);
|
preview_height = MIN (sel_height, PREVIEW_SIZE);
|
||||||
|
|
||||||
preview = gtk_preview_new (GTK_PREVIEW_COLOR);
|
preview = gimp_preview_area_new ();
|
||||||
gtk_preview_size (GTK_PREVIEW (preview), preview_width, preview_height);
|
gtk_widget_set_size_request (preview, preview_width, preview_height);
|
||||||
gtk_container_add (GTK_CONTAINER (frame), preview);
|
gtk_container_add (GTK_CONTAINER (frame), preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
|
|
||||||
@ -798,7 +798,7 @@ preview_init (void)
|
|||||||
g_free (preview_sort);
|
g_free (preview_sort);
|
||||||
}
|
}
|
||||||
|
|
||||||
preview_src = (guchar *) g_new (guchar *, width * preview_height);
|
preview_src = g_new (guchar, width * preview_height);
|
||||||
preview_dst = g_new (guchar, width);
|
preview_dst = g_new (guchar, width);
|
||||||
preview_sort = g_new (guchar, size * size);
|
preview_sort = g_new (guchar, size * size);
|
||||||
}
|
}
|
||||||
@ -840,10 +840,8 @@ preview_update (void)
|
|||||||
radius, /* Current radius */
|
radius, /* Current radius */
|
||||||
hist0, /* Histogram count for 0 values */
|
hist0, /* Histogram count for 0 values */
|
||||||
hist255; /* Histogram count for 255 values */
|
hist255; /* Histogram count for 255 values */
|
||||||
guchar check, /* Checkerboard pattern */
|
guchar rgba[PREVIEW_SIZE * PREVIEW_SIZE * 4], /* Output image */
|
||||||
rgb[PREVIEW_SIZE * PREVIEW_SIZE * 3],
|
*rgba_ptr; /* Pixel pointer for output */
|
||||||
/* Output image */
|
|
||||||
*rgb_ptr; /* Pixel pointer for output */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup for filter...
|
* Setup for filter...
|
||||||
@ -967,71 +965,44 @@ preview_update (void)
|
|||||||
* Draw this row...
|
* Draw this row...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rgb_ptr = rgb + y * preview_width * 3;
|
rgba_ptr = rgba + y * preview_width * 4;
|
||||||
|
|
||||||
switch (img_bpp)
|
switch (img_bpp)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
for (x = preview_width, dst_ptr = preview_dst;
|
for (x = preview_width, dst_ptr = preview_dst;
|
||||||
x > 0;
|
x > 0;
|
||||||
x --, dst_ptr ++, rgb_ptr += 3)
|
x --, dst_ptr ++, rgba_ptr += 4)
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *dst_ptr;
|
{
|
||||||
|
rgba_ptr[0] = rgba_ptr[1] = rgba_ptr[2] = *dst_ptr;
|
||||||
|
rgba_ptr[3] = 255;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
for (x = preview_width, dst_ptr = preview_dst;
|
for (x = preview_width, dst_ptr = preview_dst;
|
||||||
x > 0;
|
x > 0;
|
||||||
x --, dst_ptr += 2, rgb_ptr += 3)
|
x --, dst_ptr += 2, rgba_ptr += 4)
|
||||||
if (dst_ptr[1] == 255)
|
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *dst_ptr;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if ((y & GIMP_CHECK_SIZE) ^ (x & GIMP_CHECK_SIZE))
|
rgba_ptr[0] = rgba_ptr[1] = rgba_ptr[2] = dst_ptr[0];
|
||||||
check = GIMP_CHECK_LIGHT * 255;
|
rgba_ptr[3] = dst_ptr[1];
|
||||||
else
|
}
|
||||||
check = GIMP_CHECK_DARK * 255;
|
|
||||||
|
|
||||||
if (dst_ptr[1] == 0)
|
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = check;
|
|
||||||
else
|
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] =
|
|
||||||
check + ((dst_ptr[0] - check) * dst_ptr[1]) / 255;
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
memcpy (rgb_ptr, preview_dst, preview_width * 3);
|
for (x = preview_width, dst_ptr = preview_dst;
|
||||||
|
x > 0;
|
||||||
|
x --, dst_ptr += 3, rgba_ptr += 4)
|
||||||
|
{
|
||||||
|
rgba_ptr[0] = dst_ptr[0];
|
||||||
|
rgba_ptr[1] = dst_ptr[1];
|
||||||
|
rgba_ptr[2] = dst_ptr[2];
|
||||||
|
rgba_ptr[3] = 255;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
for (x = preview_width, dst_ptr = preview_dst;
|
memcpy (rgba_ptr, preview_dst, preview_width * 4);
|
||||||
x > 0;
|
|
||||||
x --, dst_ptr += 4, rgb_ptr += 3)
|
|
||||||
if (dst_ptr[3] == 255)
|
|
||||||
{
|
|
||||||
rgb_ptr[0] = dst_ptr[0];
|
|
||||||
rgb_ptr[1] = dst_ptr[1];
|
|
||||||
rgb_ptr[2] = dst_ptr[2];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((y & GIMP_CHECK_SIZE) ^ (x & GIMP_CHECK_SIZE))
|
|
||||||
check = GIMP_CHECK_LIGHT * 255;
|
|
||||||
else
|
|
||||||
check = GIMP_CHECK_DARK * 255;
|
|
||||||
|
|
||||||
if (dst_ptr[3] == 0)
|
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = check;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rgb_ptr[0] =
|
|
||||||
check + ((dst_ptr[0] - check) * dst_ptr[3]) / 255;
|
|
||||||
rgb_ptr[1] =
|
|
||||||
check + ((dst_ptr[1] - check) * dst_ptr[3]) / 255;
|
|
||||||
rgb_ptr[2] =
|
|
||||||
check + ((dst_ptr[2] - check) * dst_ptr[3]) / 255;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -1040,12 +1011,11 @@ preview_update (void)
|
|||||||
* Update the screen...
|
* Update the screen...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (y = 0, rgb_ptr = rgb;
|
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
||||||
y < preview_height;
|
0, 0, preview_width, preview_height,
|
||||||
y ++, rgb_ptr += preview_width * 3)
|
GIMP_RGBA_IMAGE,
|
||||||
gtk_preview_draw_row (GTK_PREVIEW (preview), rgb_ptr, 0, y, preview_width);
|
rgba,
|
||||||
|
preview_height * 4);
|
||||||
gtk_widget_queue_draw (preview);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Reference in New Issue
Block a user