Use a GimpPreviewArea instead of GtkPreview.

* plug-ins/common/curve_bend.c: Use a GimpPreviewArea instead of
  GtkPreview.
This commit is contained in:
David Odin
2004-07-30 21:29:45 +00:00
parent 421486b4fe
commit ceffa32114
2 changed files with 574 additions and 595 deletions

View File

@ -1,3 +1,8 @@
2004-07-30 DindinX <david@dindinx.org>
* plug-ins/common/curve_bend.c: Use a GimpPreviewArea instead of
GtkPreview.
2004-07-30 Sven Neumann <sven@gimp.org>
Applied a bunch of small changes contributed by Tim Mooney to fix

View File

@ -41,11 +41,6 @@
#include <string.h>
#include <errno.h>
#ifdef __GNUC__
#warning GTK_DISABLE_DEPRECATED
#endif
#undef GTK_DISABLE_DEPRECATED
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
@ -92,9 +87,7 @@
#define PV_IMG_HEIGHT 128
#define RADIUS 3
#define MIN_DISTANCE 8
#define PREVIEW_BPP 3
#define PREVIEW_BG_GRAY1 108
#define PREVIEW_BG_GRAY2 156
#define PREVIEW_BPP 4
#define SMOOTH 0
#define GFREE 1
@ -1293,8 +1286,8 @@ bender_new_dialog (GimpDrawable *drawable)
gtk_container_add (GTK_CONTAINER (abox), frame);
gtk_widget_show (frame);
cd->pv_widget = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (cd->pv_widget),
cd->pv_widget = gimp_preview_area_new ();
gtk_widget_set_size_request (cd->pv_widget,
PREVIEW_SIZE_X, PREVIEW_SIZE_Y);
gtk_widget_set_events (cd->pv_widget, RANGE_MASK);
gtk_container_add (GTK_CONTAINER (frame), cd->pv_widget);
@ -1379,7 +1372,7 @@ bender_new_dialog (GimpDrawable *drawable)
G_CALLBACK (bender_antialias_callback),
cd);
/* The wor_on_copy toggle */
/* The work_on_copy toggle */
toggle = gtk_check_button_new_with_mnemonic (_("Work on cop_y"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), cd->work_on_copy);
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
@ -2370,19 +2363,17 @@ static void
p_render_preview (BenderDialog *cd,
gint32 layer_id)
{
guchar l_rowbuf[PREVIEW_BPP * PREVIEW_SIZE_X];
guchar l_pixel[4];
guchar *l_ptr;
guchar *l_buf, *l_ptr;
GimpDrawable *l_pv_drawable;
gint l_x, l_y;
gint l_ofx, l_ofy;
gint l_idx;
guchar l_bg_gray;
t_GDRW l_gdrw;
t_GDRW *gdrw;
l_pv_drawable = gimp_drawable_get (layer_id);
l_ptr = l_buf = g_new (guchar, PREVIEW_BPP * PREVIEW_SIZE_X * PREVIEW_SIZE_Y);
gdrw = &l_gdrw;
p_init_gdrw(gdrw, l_pv_drawable, FALSE, FALSE);
@ -2393,50 +2384,33 @@ p_render_preview (BenderDialog *cd,
/* render preview */
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++)
{
p_get_pixel(gdrw, l_x + l_ofx, l_y + l_ofy, &l_pixel[0]);
if (l_pixel[gdrw->index_alpha] < 255)
{
/* for transparent pixels: mix with preview background color */
if ((l_x % 32) < 16)
{
l_bg_gray = PREVIEW_BG_GRAY1;
if ((l_y % 32) < 16) l_bg_gray = PREVIEW_BG_GRAY2;
}
else
{
l_bg_gray = PREVIEW_BG_GRAY2;
if ((l_y % 32) < 16) l_bg_gray = PREVIEW_BG_GRAY1;
}
for (l_idx = 0; l_idx < gdrw->index_alpha ; l_idx++)
{
l_pixel[l_idx] = MIX_CHANNEL(l_pixel[l_idx], l_bg_gray, l_pixel[gdrw->index_alpha]);
}
}
if (cd->color)
{
*l_ptr = l_pixel[0];
l_ptr[0] = l_pixel[0];
l_ptr[1] = l_pixel[1];
l_ptr[2] = l_pixel[2];
}
else
{
*l_ptr = l_pixel[0];
l_ptr[0] = l_pixel[0];
l_ptr[1] = l_pixel[0];
l_ptr[2] = l_pixel[0];
}
l_ptr[3] = l_pixel[gdrw->index_alpha];
l_ptr += PREVIEW_BPP;
}
gtk_preview_draw_row(GTK_PREVIEW(cd->pv_widget), &l_rowbuf[0], 0, l_y, PREVIEW_SIZE_X);
}
gimp_preview_area_draw (GIMP_PREVIEW_AREA (cd->pv_widget),
0, 0, PREVIEW_SIZE_X, PREVIEW_SIZE_Y,
GIMP_RGBA_IMAGE,
l_buf,
PREVIEW_BPP * PREVIEW_SIZE_X);
g_free (l_buf);
p_end_gdrw(gdrw);
} /* end p_render_preview */