plug-ins/gimpressionist/brush.c plug-ins/gimpressionist/orientmap.c

* plug-ins/gimpressionist/brush.c
* plug-ins/gimpressionist/orientmap.c
* plug-ins/gimpressionist/paper.c
* plug-ins/gimpressionist/preview.c
* plug-ins/gimpressionist/size.c:
Converted the code from using GtkPreview to GimpPreviewArea.
This commit is contained in:
Shlomi Fish 2004-07-31 08:42:44 +00:00
parent 6696cb7743
commit 5ab2ac02dd
6 changed files with 113 additions and 70 deletions

View File

@ -1,3 +1,12 @@
2004-07-31 Shlomi Fish <shlomif@iglu.org.il>
* plug-ins/gimpressionist/brush.c
* plug-ins/gimpressionist/orientmap.c
* plug-ins/gimpressionist/paper.c
* plug-ins/gimpressionist/preview.c
* plug-ins/gimpressionist/size.c:
Converted the code from using GtkPreview to GimpPreviewArea.
2004-07-30 Seth Burgess <sjburges@gimp.org>
* plug-ins/common/gauss.c: added some non-interactive modes (if called

View File

@ -294,16 +294,15 @@ static void
update_brush_preview (const gchar *fn)
{
gint i, j;
guchar buf[100];
guchar *preview_image;
if(fn)
brush_from_file = 1;
preview_image = g_new0(guchar, 100*100);
if (!fn && brush_from_file) {
memset(buf, 0, 100);
for(i = 0; i < 100; i++) {
gtk_preview_draw_row (GTK_PREVIEW (brush_preview), buf, 0, i, 100);
}
/* preview_image is already initialized to our liking. */
} else {
double sc;
ppm_t p = {0,0,NULL};
@ -332,21 +331,29 @@ update_brush_preview (const gchar *fn)
padbrush (&p, 100, 100);
for(i = 0; i < 100; i++) {
int k = i * p.width * 3;
memset(buf,0,100);
if(i < p.height)
for(j = 0; j < p.width; j++)
buf[j] = gammatable[p.col[k + j * 3]];
gtk_preview_draw_row (GTK_PREVIEW (brush_preview), buf, 0, i, 100);
preview_image[i*100+j] = gammatable[p.col[k + j * 3]];
}
ppm_kill(&p);
}
gtk_widget_queue_draw (brush_preview);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (brush_preview),
0, 0, 100, 100,
GIMP_GRAY_IMAGE,
preview_image,
100);
g_free (preview_image);
}
static gboolean brush_dont_update = FALSE;
/*
* "force" implies here to change the brush even if it was the same.
* It is used for the initialization of the preview.
* */
static void
brush_select (GtkTreeSelection *selection)
brush_select (GtkTreeSelection *selection, gboolean force)
{
GtkTreeIter iter;
GtkTreeModel *model;
@ -377,7 +384,12 @@ brush_select (GtkTreeSelection *selection)
else
{
if (!strcmp (last_selected_brush, brush))
goto cleanup;
{
if (!force)
{
goto cleanup;
}
}
else
{
g_free (last_selected_brush);
@ -413,7 +425,15 @@ brush_select_file (GtkTreeSelection *selection, gpointer data)
{
brush_from_file = 1;
preset_save_button_set_sensitive (TRUE);
brush_select (selection);
brush_select (selection, FALSE);
}
static void
brush_preview_size_allocate (GtkWidget *preview)
{
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (brush_list));
brush_select (selection, TRUE);
}
static void
@ -460,10 +480,12 @@ create_brushpage(GtkNotebook *notebook)
gtk_box_pack_start(GTK_BOX (box2), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
brush_preview = tmpw = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
gtk_preview_size (GTK_PREVIEW (tmpw), 100, 100);
brush_preview = tmpw = gimp_preview_area_new ();
gtk_widget_set_size_request (brush_preview, 100, 100);
gtk_container_add (GTK_CONTAINER (frame), tmpw);
gtk_widget_show (tmpw);
g_signal_connect (brush_preview, "size-allocate",
G_CALLBACK(brush_preview_size_allocate), NULL);
box3 = gtk_vbox_new (FALSE, 2);
gtk_box_pack_end (GTK_BOX (box2), box3, FALSE, FALSE,0);
@ -548,7 +570,7 @@ create_brushpage(GtkNotebook *notebook)
G_CALLBACK (gimp_double_adjustment_update),
&pcvals.brush_relief);
brush_select (selection);
brush_select (selection, FALSE);
readdirintolist ("Brushes", view, pcvals.selected_brush);
/*

View File

@ -151,11 +151,11 @@ static void update_orient_map_preview_prev (void)
ppm_put_rgb (&update_om_preview_nbuffer, x-xo, y-yo, white);
}
for (y = 0; y < OMHEIGHT; y++)
gtk_preview_draw_row (GTK_PREVIEW (orient_map_preview_prev),
(guchar *) update_om_preview_nbuffer.col +
y * OMWIDTH * 3, 0, y,
OMWIDTH);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (orient_map_preview_prev),
0, 0, OMWIDTH, OMHEIGHT,
GIMP_RGB_IMAGE,
(guchar *)update_om_preview_nbuffer.col,
OMWIDTH * 3);
gtk_widget_queue_draw (orient_map_preview_prev);
@ -213,13 +213,11 @@ static void update_vector_prev(void)
ppm_put_rgb (&update_vector_preview_buffer, x-xo, y-yo, white);
}
for (y = 0; y < OMHEIGHT; y++)
gtk_preview_draw_row (GTK_PREVIEW (vector_preview),
(guchar *) update_vector_preview_buffer.col +
y * OMWIDTH * 3,
0, y, OMWIDTH);
gtk_widget_queue_draw (vector_preview);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (vector_preview),
0, 0, OMWIDTH, OMHEIGHT,
GIMP_RGB_IMAGE,
(guchar *)update_vector_preview_buffer.col,
OMWIDTH * 3);
}
void orientation_map_free_resources()
@ -475,8 +473,8 @@ void create_orientmap_dialog(void)
"Middle-click to add a new vector."), NULL);
gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0);
tmpw = vector_preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (tmpw), OMWIDTH, OMHEIGHT);
tmpw = vector_preview = gimp_preview_area_new ();
gtk_widget_set_size_request (tmpw, OMWIDTH, OMHEIGHT);
gtk_container_add (GTK_CONTAINER (ebox), tmpw);
gtk_widget_show (tmpw);
gtk_widget_add_events (ebox, GDK_BUTTON_PRESS_MASK);
@ -498,8 +496,8 @@ void create_orientmap_dialog(void)
gtk_table_attach(GTK_TABLE(table1), tmpw, 1,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0);
gtk_widget_show(tmpw);
tmpw = orient_map_preview_prev = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size(GTK_PREVIEW(tmpw), OMWIDTH, OMHEIGHT);
tmpw = orient_map_preview_prev = gimp_preview_area_new ();
gtk_widget_set_size_request (tmpw, OMWIDTH, OMHEIGHT);;
gtk_container_add(GTK_CONTAINER(tmpw2), tmpw);
gtk_widget_show(tmpw);

View File

@ -29,7 +29,7 @@ static GtkWidget *paper_overlay = NULL;
static void paper_update_preview(void)
{
gint i, j;
guchar buf[100];
guchar *buf,*paper_preview_buffer;
gdouble sc;
ppm_t p = {0,0,NULL};
@ -37,9 +37,9 @@ static void paper_update_preview(void)
sc = p.width > p.height ? p.width : p.height;
sc = 100.0 / sc;
resize(&p, p.width*sc,p.height*sc);
for (i = 0; i < 100; i++) {
paper_preview_buffer = g_new0 (guchar, 100*100);
for (i = 0, buf = paper_preview_buffer; i < 100; i++, buf += 100) {
int k = i * p.width * 3;
memset(buf, 0, 100);
if(i < p.height) {
for(j = 0; j < p.width; j++)
buf[j] = p.col[k + j * 3];
@ -47,9 +47,15 @@ static void paper_update_preview(void)
for (j = 0; j < p.width; j++)
buf[j] = 255 - buf[j];
}
gtk_preview_draw_row (GTK_PREVIEW (paper_preview), buf, 0, i, 100);
}
gimp_preview_area_draw (GIMP_PREVIEW_AREA (paper_preview),
0, 0, 100, 100,
GIMP_GRAY_IMAGE,
paper_preview_buffer,
100);
ppm_kill(&p);
g_free (paper_preview_buffer);
gtk_widget_queue_draw (paper_preview);
}
@ -129,8 +135,8 @@ void create_paperpage(GtkNotebook *notebook)
gtk_box_pack_start(GTK_BOX (box2), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
paper_preview = tmpw = gtk_preview_new (GTK_PREVIEW_GRAYSCALE);
gtk_preview_size(GTK_PREVIEW (tmpw), 100, 100);
paper_preview = tmpw = gimp_preview_area_new ();
gtk_widget_set_size_request (tmpw, 100, 100);
gtk_container_add (GTK_CONTAINER (frame), tmpw);
gtk_widget_show(tmpw);

View File

@ -68,8 +68,6 @@ void preview_free_resources (void)
void
updatepreview (GtkWidget *wg, gpointer d)
{
gint i;
/* This portion is remmed out because of the remming out of the
* code below.
* -- Shlomi Fish
@ -88,13 +86,17 @@ updatepreview (GtkWidget *wg, gpointer d)
* */
#if 0
if (!PPM_IS_INITED (&infile) && !d) {
guchar *buffer;
memset(buf, 0, sizeof(buf));
for(i = 0; i < PREVIEWSIZE; i++)
{
gtk_preview_draw_row (GTK_PREVIEW(preview), buf, 0, i, PREVIEWSIZE);
}
}
buffer = g_new0 (guchar, 3*PREVIEWSIZE*PREVIEWSIZE);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, PREVIEWSIZE, PREVIEWSIZE,
GIMP_RGB_IMAGE,
buffer,
PREVIEWSIZE * 3);
g_free (buffer);
}
else
#endif
{
@ -126,18 +128,22 @@ updatepreview (GtkWidget *wg, gpointer d)
if(img_has_alpha)
drawalpha(&preview_ppm, &alpha_ppm);
for(i = 0; i < PREVIEWSIZE; i++)
{
gtk_preview_draw_row(GTK_PREVIEW(preview),
(guchar*) &preview_ppm.col[i * PREVIEWSIZE * 3], 0, i,
PREVIEWSIZE);
}
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, PREVIEWSIZE, PREVIEWSIZE,
GIMP_RGB_IMAGE,
preview_ppm.col,
PREVIEWSIZE * 3);
ppm_kill(&preview_ppm);
if(img_has_alpha)
ppm_kill(&alpha_ppm);
}
}
gtk_widget_queue_draw (preview);
static void
preview_size_allocate (GtkWidget *preview)
{
updatepreview (preview, GINT_TO_POINTER (0));
}
GtkWidget *
@ -155,10 +161,14 @@ create_preview (void)
gtk_box_pack_start(GTK_BOX (vbox), frame, FALSE, FALSE, 5);
gtk_widget_show (frame);
preview = gtk_preview_new (GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (preview), PREVIEWSIZE, PREVIEWSIZE);
preview = gimp_preview_area_new ();
gtk_widget_set_size_request (preview, PREVIEWSIZE, PREVIEWSIZE);
gtk_container_add (GTK_CONTAINER (frame), preview);
gtk_widget_show (preview);
/* This is so the preview will be displayed when the dialog is invoked. */
g_signal_connect (preview, "size-allocate",
G_CALLBACK (preview_size_allocate), NULL);
hbox = gtk_hbox_new (TRUE, 6);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);

View File

@ -78,12 +78,12 @@ static void updatesmpreviewprev(void)
}
}
for (y = 0; y < OMHEIGHT; y++)
gtk_preview_draw_row (GTK_PREVIEW(smpreviewprev),
nsbuffer.col + y * nsbuffer.width * 3,
0, y, OMWIDTH);
gtk_widget_queue_draw (smpreviewprev);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (smpreviewprev),
0, 0, OMWIDTH, OMHEIGHT,
GIMP_RGB_IMAGE,
nsbuffer.col,
OMWIDTH * 3);
}
static gint selectedsmvector = 0;
@ -139,13 +139,11 @@ static void updatesmvectorprev(void)
ppm_put_rgb (&update_vector_preview_sbuffer, x, y, white);
}
for (y = 0; y < OMHEIGHT; y++)
gtk_preview_draw_row (GTK_PREVIEW(smvectorprev),
update_vector_preview_sbuffer.col +
y * update_vector_preview_sbuffer.width * 3,
0, y, OMWIDTH);
gtk_widget_queue_draw (smvectorprev);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (smvectorprev),
0, 0, OMWIDTH, OMHEIGHT,
GIMP_RGB_IMAGE,
update_vector_preview_sbuffer.col,
OMWIDTH * 3);
gtk_widget_set_sensitive (prev_button, (numsmvect > 1));
gtk_widget_set_sensitive (next_button, (numsmvect > 1));
@ -397,8 +395,8 @@ void create_sizemap_dialog(void)
gtk_box_pack_start(GTK_BOX(hbox), tmpw, FALSE, FALSE, 0);
tmpw2 = tmpw;
tmpw = smvectorprev = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size(GTK_PREVIEW(tmpw), OMWIDTH, OMHEIGHT);
tmpw = smvectorprev = gimp_preview_area_new ();
gtk_widget_set_size_request (tmpw, OMWIDTH, OMHEIGHT);
gtk_container_add(GTK_CONTAINER(tmpw2), tmpw);
gtk_widget_show(tmpw);
gtk_widget_add_events (tmpw2, GDK_BUTTON_PRESS_MASK);
@ -420,8 +418,8 @@ void create_sizemap_dialog(void)
gtk_table_attach(GTK_TABLE(table1), tmpw, 1,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0);
gtk_widget_show(tmpw);
tmpw = smpreviewprev = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size(GTK_PREVIEW(tmpw), OMWIDTH, OMHEIGHT);
tmpw = smpreviewprev = gimp_preview_area_new ();
gtk_widget_set_size_request (tmpw, OMWIDTH, OMHEIGHT);
gtk_container_add(GTK_CONTAINER(tmpw2), tmpw);
gtk_widget_show(tmpw);