>
> Can you show us some example code?
>
Of course!
-----------------------------------------------------------
(When the plugin dialog appears it creates a layer that changes when
you are changing the options. This layer has variable size and I use
GimpDrawablePreview in order to see it at it's real size.
....
/* clear the current preview and get the new line adjusted drawable */
gimp_image_remove_layer(m->image_id,*(m->layer));
gimp_drawable_detach(*(m->d));
*(m->layer) = gimp_layer_copy(m->back_layer);
gimp_image_add_layer(m->image_id,*(m->layer),-1);
width = x2-x1; height = (y2-y1;
gimp_layer_resize(*(m->layer),width,height,-x1,-y1);
d_id = gimp_image_get_active_drawable(m->image_id);
*(m->d) = gimp_drawable_get(d_id);
refresh_preview((GimpPreviewArea *) m->preview,*(m->d));
}
void refresh_preview(GimpPreviewArea *p, GimpDrawable *d){
gint width, height; GimpPixelRgn rgn_input; guchar *buf;
width = gimp_drawable_width(d->drawable_id);
height = gimp_drawable_height(d->drawable_id);
buf = g_new(guchar,width*height*3);
gimp_pixel_rgn_init (&rgn_input,
d,
0,0,
width, height,
FALSE, FALSE);
gimp_pixel_rgn_get_rect(&rgn_input,buf,0,0,width,height);
gtk_widget_set_size_request((GtkWidget *) p,width,height);
gimp_preview_area_draw(p,0,0,width,
height,GIMP_RGB_IMAGE,buf,3*width); /* always RGB */
g_free(buf);
}
--------------------------------------
As I commented if the size of drawable shown changes it isn't
refreshed. On the other hand if immediately after a layer of the same
size is shown it's refreshed (or if you minimize the dialog window).
_______________________________________________
Gimp-developer mailing list
Gimp-developer@...
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer