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> 2004-07-30 Sven Neumann <sven@gimp.org>
Applied a bunch of small changes contributed by Tim Mooney to fix Applied a bunch of small changes contributed by Tim Mooney to fix

View File

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