>
> 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@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

Reply via email to