mirror of https://github.com/GNOME/gimp.git
use even more GimpPreviewArea's facilities.
* plug-ins/common/despeckle.c: use even more GimpPreviewArea's facilities. * plug-ins/common/destripe.c: ported to GimpPreviewArea.
This commit is contained in:
parent
c93287fea3
commit
19134bce88
|
@ -1,3 +1,10 @@
|
||||||
|
2004-07-31 DindinX <david@dindinx.org>
|
||||||
|
|
||||||
|
* plug-ins/common/despeckle.c: use even more GimpPreviewArea's
|
||||||
|
facilities.
|
||||||
|
|
||||||
|
* plug-ins/common/destripe.c: ported to GimpPreviewArea.
|
||||||
|
|
||||||
2004-07-31 Shlomi Fish <shlomif@iglu.org.il>
|
2004-07-31 Shlomi Fish <shlomif@iglu.org.il>
|
||||||
|
|
||||||
* plug-ins/gflare/gflare.c: ported to GimpPreviewArea.
|
* plug-ins/gflare/gflare.c: ported to GimpPreviewArea.
|
||||||
|
|
|
@ -27,11 +27,6 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#warning GTK_DISABLE_DEPRECATED
|
|
||||||
#endif
|
|
||||||
#undef GTK_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include <libgimp/gimp.h>
|
#include <libgimp/gimp.h>
|
||||||
|
@ -840,9 +835,10 @@ 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 rgba[PREVIEW_SIZE * PREVIEW_SIZE * 4], /* Output image */
|
guchar *rgba, /* Output image */
|
||||||
*rgba_ptr; /* Pixel pointer for output */
|
*rgba_ptr; /* Pixel pointer for output */
|
||||||
|
|
||||||
|
rgba = g_new (guchar, PREVIEW_SIZE * PREVIEW_SIZE * img_bpp);
|
||||||
/*
|
/*
|
||||||
* Setup for filter...
|
* Setup for filter...
|
||||||
*/
|
*/
|
||||||
|
@ -965,46 +961,7 @@ preview_update (void)
|
||||||
* Draw this row...
|
* Draw this row...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rgba_ptr = rgba + y * preview_width * 4;
|
memcpy (rgba + y * width, preview_dst, width);
|
||||||
|
|
||||||
switch (img_bpp)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
for (x = preview_width, dst_ptr = preview_dst;
|
|
||||||
x > 0;
|
|
||||||
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, rgba_ptr += 4)
|
|
||||||
{
|
|
||||||
rgba_ptr[0] = rgba_ptr[1] = rgba_ptr[2] = dst_ptr[0];
|
|
||||||
rgba_ptr[3] = dst_ptr[1];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 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:
|
|
||||||
memcpy (rgba_ptr, preview_dst, preview_width * 4);
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1013,9 +970,10 @@ preview_update (void)
|
||||||
|
|
||||||
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
||||||
0, 0, preview_width, preview_height,
|
0, 0, preview_width, preview_height,
|
||||||
GIMP_RGBA_IMAGE,
|
gimp_drawable_type (drawable->drawable_id),
|
||||||
rgba,
|
rgba,
|
||||||
preview_height * 4);
|
width);
|
||||||
|
g_free (rgba);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -27,11 +27,6 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#warning GTK_DISABLE_DEPRECATED
|
|
||||||
#endif
|
|
||||||
#undef GTK_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include <libgimp/gimp.h>
|
#include <libgimp/gimp.h>
|
||||||
|
@ -271,46 +266,6 @@ run (const gchar *name,
|
||||||
gimp_drawable_detach (drawable);
|
gimp_drawable_detach (drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
|
||||||
preview_draw_row (gint x,
|
|
||||||
gint y,
|
|
||||||
gint w,
|
|
||||||
guchar *row)
|
|
||||||
{
|
|
||||||
guchar *rgb = g_new (guchar, w * 3);
|
|
||||||
guchar *rgb_ptr;
|
|
||||||
gint i;
|
|
||||||
|
|
||||||
switch (img_bpp)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += img_bpp, rgb_ptr += 3)
|
|
||||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *row;
|
|
||||||
|
|
||||||
gtk_preview_draw_row (GTK_PREVIEW (preview), rgb, x, y, w);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
gtk_preview_draw_row (GTK_PREVIEW (preview), row, x, y, w);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += 4, rgb_ptr += 3)
|
|
||||||
{
|
|
||||||
rgb_ptr[0] = row[0];
|
|
||||||
rgb_ptr[1] = row[1];
|
|
||||||
rgb_ptr[2] = row[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_preview_draw_row (GTK_PREVIEW (preview), rgb, x, y, w);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (rgb);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destripe_rect (gint sel_x1,
|
destripe_rect (gint sel_x1,
|
||||||
gint sel_y1,
|
gint sel_y1,
|
||||||
|
@ -318,15 +273,16 @@ destripe_rect (gint sel_x1,
|
||||||
gint sel_y2,
|
gint sel_y2,
|
||||||
gboolean do_preview)
|
gboolean do_preview)
|
||||||
{
|
{
|
||||||
GimpPixelRgn src_rgn; /* source image region */
|
GimpPixelRgn src_rgn; /* source image region */
|
||||||
GimpPixelRgn dst_rgn; /* destination image region */
|
GimpPixelRgn dst_rgn; /* destination image region */
|
||||||
guchar *src_rows; /* image data */
|
guchar *src_rows; /* image data */
|
||||||
double progress, progress_inc;
|
guchar *dest_rgba = NULL;
|
||||||
int sel_width = sel_x2 - sel_x1;
|
double progress, progress_inc;
|
||||||
int sel_height = sel_y2 - sel_y1;
|
int sel_width = sel_x2 - sel_x1;
|
||||||
long *hist, *corr; /* "histogram" data */
|
int sel_height = sel_y2 - sel_y1;
|
||||||
int tile_width = gimp_tile_width ();
|
long *hist, *corr; /* "histogram" data */
|
||||||
int i, x, y, ox, cols;
|
int tile_width = gimp_tile_width ();
|
||||||
|
int i, x, y, ox, cols;
|
||||||
|
|
||||||
/* initialize */
|
/* initialize */
|
||||||
|
|
||||||
|
@ -343,6 +299,9 @@ destripe_rect (gint sel_x1,
|
||||||
|
|
||||||
progress = 0;
|
progress = 0;
|
||||||
progress_inc = 0.5 * tile_width / sel_width;
|
progress_inc = 0.5 * tile_width / sel_width;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
dest_rgba = g_new(guchar, img_bpp * preview_width * preview_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -486,7 +445,8 @@ destripe_rect (gint sel_x1,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_preview)
|
if (do_preview)
|
||||||
preview_draw_row (ox - sel_x1, y, cols, rows - cols * img_bpp);
|
memcpy (dest_rgba + img_bpp * (y * preview_width+ox-sel_x1),
|
||||||
|
rows - cols * img_bpp, cols * img_bpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!do_preview)
|
if (!do_preview)
|
||||||
|
@ -505,7 +465,12 @@ destripe_rect (gint sel_x1,
|
||||||
|
|
||||||
if (do_preview)
|
if (do_preview)
|
||||||
{
|
{
|
||||||
gtk_widget_queue_draw (preview);
|
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
|
||||||
|
0, 0, preview_width, preview_height,
|
||||||
|
gimp_drawable_type (drawable->drawable_id),
|
||||||
|
dest_rgba,
|
||||||
|
img_bpp * preview_width);
|
||||||
|
g_free (dest_rgba);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -576,8 +541,8 @@ destripe_dialog (void)
|
||||||
preview_width = MIN (sel_x2 - sel_x1, PREVIEW_SIZE);
|
preview_width = MIN (sel_x2 - sel_x1, PREVIEW_SIZE);
|
||||||
preview_height = MIN (sel_y2 - sel_y1, PREVIEW_SIZE);
|
preview_height = MIN (sel_y2 - sel_y1, 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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue