plug-ins/common/mapcolor.c ported to GimpPreviewArea.

* plug-ins/common/mapcolor.c
* plug-ins/common/sample_colorize.c: ported to GimpPreviewArea.

* plug-ins/common/newsprint.c: ported to GimpPreviewArea, even though
  it should use some pngs instead.
This commit is contained in:
David Odin
2004-08-01 17:16:42 +00:00
parent 471a565b88
commit 65776cd25a
4 changed files with 678 additions and 735 deletions

View File

@ -1,3 +1,11 @@
2004-08-01 DindinX <david@dindinx.org>
* plug-ins/common/mapcolor.c
* plug-ins/common/sample_colorize.c: ported to GimpPreviewArea.
* plug-ins/common/newsprint.c: ported to GimpPreviewArea, even though
it should use some pngs instead.
2004-08-01 Michael Schumacher <schumaml@cvs.gnome.org>
* configure.in: modified the checks. hopefully it works on all

View File

@ -40,11 +40,6 @@ static char ident[] = "@(#) GIMP mapcolor plug-in v1.03 22-May-00";
#include <string.h>
#include <time.h>
#ifdef __GNUC__
#warning GTK_DISABLE_DEPRECATED
#endif
#undef GTK_DISABLE_DEPRECATED
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
@ -514,12 +509,11 @@ update_img_preview (void)
*(dst++) = bluemap[*(src++)];
}
for (j = 0; j < dst_ip->height; j++)
gtk_preview_draw_row (GTK_PREVIEW (preview),
dst_ip->img + dst_ip->width*3*j,
0, j, dst_ip->width);
gtk_widget_queue_draw (preview);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, dst_ip->width, dst_ip->height,
GIMP_RGB_IMAGE,
dst_ip->img,
dst_ip->width*3);
}
static gboolean
@ -571,9 +565,9 @@ dialog (gint32 drawable_ID)
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
preview = gtk_preview_new (GTK_PREVIEW_COLOR);
preview = gimp_preview_area_new ();
plinterface.preview = preview;
gtk_preview_size (GTK_PREVIEW (preview), ip->width, ip->height);
gtk_widget_set_size_request (preview, ip->width, ip->height);
gtk_container_add (GTK_CONTAINER (frame), preview);
gtk_widget_show (preview);
}
@ -596,10 +590,10 @@ dialog (gint32 drawable_ID)
add_color_button (j * 2 + 1, 2, 0, table);
}
update_img_preview ();
gtk_widget_show (dlg);
update_img_preview ();
run = (gimp_dialog_run (GIMP_DIALOG (dlg)) == GTK_RESPONSE_OK);
if (run)

View File

@ -53,11 +53,6 @@
#include <stdlib.h>
#include <string.h>
#ifdef __GNUC__
#warning GTK_DISABLE_DEPRECATED
#endif
#undef GTK_DISABLE_DEPRECATED
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
@ -85,6 +80,7 @@ static char rcsid[] = "$Id$";
#define SCALE_WIDTH 125
#define DEF_OVERSAMPLE 1 /* default for how much to oversample by */
#define SPOT_PREVIEW_SZ 16
#define PREVIEW_SIZE (2 * SPOT_PREVIEW_SZ + 1)
#define PREVIEW_OVERSAMPLE 3
@ -484,6 +480,7 @@ static void newsprint (GimpDrawable *drawable);
static guchar * spot2thresh (gint type,
gint width);
static void preview_update (channel_st *st);
GimpPlugInInfo PLUG_IN_INFO =
{
@ -686,10 +683,12 @@ new_preview (gint *sfn)
/* make the preview widgets */
for (i = 0; i < 3; i++)
{
preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (preview),
SPOT_PREVIEW_SZ*2 + 1, SPOT_PREVIEW_SZ*2 + 1);
preview = gimp_preview_area_new ();
gtk_widget_set_size_request (preview,
PREVIEW_SIZE, PREVIEW_SIZE);
gtk_widget_show (preview);
g_signal_connect_swapped (preview, "size_allocate",
G_CALLBACK (preview_update), st);
label = gtk_label_new ("");
gtk_widget_show (label);
@ -718,8 +717,7 @@ preview_update (channel_st *st)
guchar *thresh;
gchar pct[12];
guchar value;
guchar row[3 * (2 * SPOT_PREVIEW_SZ + 1)];
guchar rgb[3 * PREVIEW_SIZE * PREVIEW_SIZE ];
/* If we don't yet have a preview threshold matrix for this spot
* function, generate one now. */
if (!spotfn_list[sfn].prev_thresh)
@ -736,9 +734,9 @@ preview_update (channel_st *st)
value = spotfn_list[sfn].prev_lvl[i] * 0xff;
for (y = 0; y <= SPOT_PREVIEW_SZ*2; y++)
for (y = 0; y < PREVIEW_SIZE ; y++)
{
for (x = 0; x <= SPOT_PREVIEW_SZ*2; x++)
for (x = 0; x < PREVIEW_SIZE ; x++)
{
guint32 sum = 0;
gint sx, sy;
@ -767,24 +765,25 @@ preview_update (channel_st *st)
if ((x % SPOT_PREVIEW_SZ) == 0 ||
(y % SPOT_PREVIEW_SZ) == 0)
{
row[x*3+0] = 0;
row[x*3+1] = 0;
row[x*3+2] = 0xff;
rgb[(y*PREVIEW_SIZE+x)*3+0] = 0;
rgb[(y*PREVIEW_SIZE+x)*3+1] = 0;
rgb[(y*PREVIEW_SIZE+x)*3+2] = 0xff;
}
else
{
row[x*3+0] = sum;
row[x*3+1] = sum;
row[x*3+2] = sum;
rgb[(y*PREVIEW_SIZE+x)*3+0] = sum;
rgb[(y*PREVIEW_SIZE+x)*3+1] = sum;
rgb[(y*PREVIEW_SIZE+x)*3+2] = sum;
}
}
gtk_preview_draw_row (GTK_PREVIEW (prev->widget),
row, 0, y, SPOT_PREVIEW_SZ*2+1);
}
/* redraw preview widget */
gtk_widget_queue_draw (prev->widget);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (prev->widget),
0, 0, PREVIEW_SIZE, PREVIEW_SIZE,
GIMP_RGB_IMAGE,
rgb,
PREVIEW_SIZE * 3);
g_snprintf (pct, sizeof (pct), "%2d%%",
(int) RINT (spotfn_list[sfn].prev_lvl[i] * 100));
@ -1395,6 +1394,8 @@ newsprint_dialog (GimpDrawable *drawable)
gtk_widget_show (st.dlg);
preview_update(st.chst[pvals.colourspace][0]);
run = (gimp_dialog_run (GIMP_DIALOG (st.dlg)) == GTK_RESPONSE_OK);
gtk_widget_destroy (st.dlg);
@ -1447,6 +1448,7 @@ newsprint_cspace_update (GtkWidget *widget,
gtk_widget_show (st->channel_notebook[new_cs]);
gtk_notebook_set_current_page (GTK_NOTEBOOK (st->channel_notebook[new_cs]), 0);
preview_update (st->chst[new_cs][0]);
}
}

View File

@ -26,11 +26,6 @@
#include <stdlib.h>
#include <string.h>
#ifdef __GNUC__
#warning GTK_DISABLE_DEPRECATED
#endif
#undef GTK_DISABLE_DEPRECATED
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
@ -666,7 +661,7 @@ static void
p_refresh_dst_preview (GtkWidget *preview,
guchar *src_buffer)
{
guchar l_rowbuf[4 * PREVIEW_SIZE_X];
guchar l_allrowsbuf[3 * PREVIEW_SIZE_X * PREVIEW_SIZE_Y];
guchar *l_ptr;
guchar *l_src_ptr;
guchar l_lum;
@ -678,9 +673,10 @@ p_refresh_dst_preview (GtkWidget *preview,
l_preview_bpp = PREVIEW_BPP;
l_src_bpp = PREVIEW_BPP +1; /* 3 colors + 1 maskbyte */
l_src_ptr = src_buffer;
l_ptr = l_allrowsbuf;
for(l_y = 0; l_y < PREVIEW_SIZE_Y; l_y++)
{
l_ptr = &l_rowbuf[0];
for(l_x = 0; l_x < PREVIEW_SIZE_X; l_x++)
{
if((l_maskbyte = l_src_ptr[3]) == 0)
@ -718,37 +714,20 @@ p_refresh_dst_preview (GtkWidget *preview,
l_ptr += l_preview_bpp;
l_src_ptr += l_src_bpp;
}
gtk_preview_draw_row (GTK_PREVIEW (preview),
&l_rowbuf[0], 0, l_y, PREVIEW_SIZE_X);
}
gtk_widget_queue_draw (preview);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, PREVIEW_SIZE_X, PREVIEW_SIZE_Y,
GIMP_RGB_IMAGE,
l_allrowsbuf,
PREVIEW_SIZE_X * 3);
} /* end p_refresh_dst_preview */
static void
p_clear_preview (GtkWidget *preview)
{
gint l_x, l_y;
guchar l_rowbuf[4 * PREVIEW_SIZE_X];
guchar *l_ptr;
l_ptr = &l_rowbuf[0];
for (l_x = 0; l_x < PREVIEW_SIZE_X; l_x++)
{
l_ptr[0] = 170;
l_ptr[1] = 170;
l_ptr[2] = 170;
l_ptr += PREVIEW_BPP;
}
for (l_y = 0; l_y < PREVIEW_SIZE_Y; l_y++)
{
gtk_preview_draw_row (GTK_PREVIEW(preview),
&l_rowbuf[0], 0, l_y, PREVIEW_SIZE_X);
}
gtk_widget_queue_draw (preview);
gimp_preview_area_fill (GIMP_PREVIEW_AREA (preview),
0, 0, PREVIEW_SIZE_X, PREVIEW_SIZE_Y,
170, 170, 170);
} /* end p_clear_preview */
static void
@ -758,7 +737,7 @@ p_update_pv (GtkWidget *preview,
guchar *dst_buffer,
gint is_color)
{
guchar l_rowbuf[4 * PREVIEW_SIZE_X];
guchar l_allrowsbuf[4 * PREVIEW_SIZE_X * PREVIEW_SIZE_Y];
guchar l_pixel[4];
guchar *l_ptr;
gint l_x, l_y;
@ -770,7 +749,6 @@ p_update_pv (GtkWidget *preview,
guchar l_dummy[4];
guchar l_maskbytes[4];
gint l_dstep;
guchar l_check;
guchar l_alpha;
@ -827,10 +805,9 @@ p_update_pv (GtkWidget *preview,
/* render preview */
l_ptr = l_allrowsbuf;
for (l_y = 0; l_y < PREVIEW_SIZE_Y; l_y++)
{
l_ptr = &l_rowbuf[0];
for(l_x = 0; l_x < PREVIEW_SIZE_X; l_x++)
{
if (gdrw->drawable)
@ -852,9 +829,6 @@ p_update_pv (GtkWidget *preview,
}
l_alpha = l_pixel[gdrw->index_alpha];
if ((gdrw->index_alpha == 0) /* has no alpha channel */
|| (l_alpha == 255)) /* or is full opaque */
{
if (is_color && (gdrw->bpp > 2))
{
l_buf_ptr[0] = l_ptr[0] = l_pixel[0];
@ -870,62 +844,23 @@ p_update_pv (GtkWidget *preview,
l_buf_ptr[1] = l_ptr[1] = *l_ptr;
l_buf_ptr[2] = l_ptr[2] = *l_ptr;
}
l_buf_ptr[3] = l_maskbytes[0];
}
if (gdrw->index_alpha == 0) /* has no alpha channel */
l_buf_ptr[3] = l_ptr[3] = 255;
else
{
if( ( l_y % (GIMP_CHECK_SIZE*2) < GIMP_CHECK_SIZE ) ^
( l_x % (GIMP_CHECK_SIZE*2) < GIMP_CHECK_SIZE ) )
{
l_check = GIMP_CHECK_LIGHT * 255;
}
else
{
l_check = GIMP_CHECK_DARK * 255;
}
if (l_alpha == 0)
{
/* full transparent */
*l_buf_ptr = *l_ptr = l_check;
l_buf_ptr[1] = l_ptr[1] = l_check;
l_buf_ptr[2] = l_ptr[2] = l_check;
}
else
{
/* more or less transparent */
if (is_color && (gdrw->bpp > 2))
{
*l_buf_ptr = *l_ptr = MIX_CHANNEL(l_pixel[0], l_check, l_alpha);
l_buf_ptr[1] = l_ptr[1] = MIX_CHANNEL(l_pixel[1], l_check, l_alpha);
l_buf_ptr[2] = l_ptr[2] = MIX_CHANNEL(l_pixel[2], l_check, l_alpha);
}
else
{
if(gdrw->bpp > 2) *l_ptr = MIX_CHANNEL(LUMINOSITY_1(l_pixel), l_check, l_alpha);
else *l_ptr = MIX_CHANNEL(l_pixel[0], l_check, l_alpha);
*l_buf_ptr = *l_ptr;
l_buf_ptr[1] = l_ptr[1] = *l_ptr;
l_buf_ptr[2] = l_ptr[2] = *l_ptr;
}
}
l_buf_ptr[3] = MIN(l_maskbytes[0], l_alpha);
}
l_buf_ptr[3] = l_ptr[3] = MIN(l_maskbytes[0], l_alpha);
l_buf_ptr += l_dstep; /* advance (or stay at dummy byte) */
l_ptr += PREVIEW_BPP;
}
if (dst_buffer == NULL)
{
gtk_preview_draw_row (GTK_PREVIEW(preview),
&l_rowbuf[0], 0, l_y, PREVIEW_SIZE_X);
}
l_ptr += 4;
}
}
if (dst_buffer == NULL)
{
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, PREVIEW_SIZE_X, PREVIEW_SIZE_Y,
GIMP_RGBA_IMAGE,
l_allrowsbuf,
PREVIEW_SIZE_X * 4);
gtk_widget_queue_draw (preview);
}
} /* end p_update_pv */
@ -1009,6 +944,7 @@ static void
p_smp_get_colors (GtkWidget *dialog)
{
gint i;
guchar buffer[3 * DA_WIDTH * GRADIENT_HEIGHT];
p_update_preview (&g_values.sample_id);
@ -1022,12 +958,15 @@ p_smp_get_colors (GtkWidget *dialog)
}
for (i = 0; i < GRADIENT_HEIGHT; i++)
{
gtk_preview_draw_row (GTK_PREVIEW (g_di.sample_colortab_preview),
g_sample_color_tab, 0, i, DA_WIDTH);
memcpy (buffer+i*3*DA_WIDTH, g_sample_color_tab, 3*DA_WIDTH);
}
p_update_preview (&g_values.dst_id);
gtk_widget_queue_draw (g_di.sample_colortab_preview);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (g_di.sample_colortab_preview),
0, 0, DA_WIDTH, GRADIENT_HEIGHT,
GIMP_RGB_IMAGE,
buffer,
DA_WIDTH * 3);
}
@ -1073,16 +1012,16 @@ p_levels_update (gint update)
}
if (update & INPUT_LEVELS)
{
guchar buffer[DA_WIDTH * GRADIENT_HEIGHT];
for (i = 0; i < GRADIENT_HEIGHT; i++)
{
gtk_preview_draw_row (GTK_PREVIEW (g_di.in_lvl_gray_preview),
&g_lvl_trans_tab[0], 0, i, DA_WIDTH);
}
if (update & DRAW)
{
gtk_widget_queue_draw (g_di.in_lvl_gray_preview);
memcpy (buffer+DA_WIDTH*i, g_lvl_trans_tab, DA_WIDTH);
}
gimp_preview_area_draw (GIMP_PREVIEW_AREA (g_di.in_lvl_gray_preview),
0, 0, DA_WIDTH, GRADIENT_HEIGHT,
GIMP_GRAY_IMAGE,
buffer,
DA_WIDTH);
}
if (update & INPUT_SLIDERS)
@ -1503,8 +1442,8 @@ p_smp_dialog (void)
frame, 0, 2, l_ty, l_ty + 1, 0, 0, 0, 0);
gtk_widget_show (frame);
g_di.dst_preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (g_di.dst_preview),
g_di.dst_preview = gimp_preview_area_new ();
gtk_widget_set_size_request (g_di.dst_preview,
PREVIEW_SIZE_X, PREVIEW_SIZE_Y);
gtk_container_add (GTK_CONTAINER (frame), g_di.dst_preview);
gtk_widget_show (g_di.dst_preview);
@ -1517,8 +1456,8 @@ p_smp_dialog (void)
frame, 3, 5, l_ty, l_ty + 1, 0, 0, 0, 0);
gtk_widget_show (frame);
g_di.sample_preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (g_di.sample_preview),
g_di.sample_preview = gimp_preview_area_new ();
gtk_widget_set_size_request (g_di.sample_preview,
PREVIEW_SIZE_X, PREVIEW_SIZE_Y);
gtk_container_add (GTK_CONTAINER (frame), g_di.sample_preview);
gtk_widget_show (g_di.sample_preview);
@ -1533,8 +1472,8 @@ p_smp_dialog (void)
gtk_table_attach (GTK_TABLE (table),
frame, 0, 2, l_ty, l_ty + 1, 0, 0, 0, 0);
g_di.in_lvl_gray_preview = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
gtk_preview_size (GTK_PREVIEW (g_di.in_lvl_gray_preview),
g_di.in_lvl_gray_preview = gimp_preview_area_new ();
gtk_widget_set_size_request (g_di.in_lvl_gray_preview,
DA_WIDTH, GRADIENT_HEIGHT);
gtk_widget_set_events (g_di.in_lvl_gray_preview, LEVELS_DA_MASK);
gtk_box_pack_start (GTK_BOX (vbox2), g_di.in_lvl_gray_preview, FALSE, TRUE, 0);
@ -1567,8 +1506,8 @@ p_smp_dialog (void)
gtk_table_attach (GTK_TABLE (table),
frame, 3, 5, l_ty, l_ty + 1, 0, 0, 0, 0);
g_di.sample_colortab_preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (g_di.sample_colortab_preview),
g_di.sample_colortab_preview = gimp_preview_area_new ();
gtk_widget_set_size_request (g_di.sample_colortab_preview,
DA_WIDTH, GRADIENT_HEIGHT);
gtk_box_pack_start (GTK_BOX (vbox2), g_di.sample_colortab_preview, FALSE, TRUE, 0);
gtk_widget_show (g_di.sample_colortab_preview);