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