Can you provide the stack trace? (with debug symbols) On 28 Dec 2016 11:34 p.m., "Vincent" <debian-si...@free-astro.vinvin.tf> wrote:
> Hello, > I'm evaluating gegl to replace the image display part of siril, a free > astronomy image processor [1]. Siril is a GTK+3 application, so I > naturally tried gegl-gtk which seems to have be abandonned for some > time. I have updated it to compile with gegl 3.10, and examples are > apparently working, if someone is interested the code is available [2]. > > I have a hard time understanding the basic concepts of GEGL, in > particular the graph. I could not find a clear documentation for GEGL so > my knowledge comes mainly from the gegl-gtk examples, so please tell me > if the following is right: some nodes of the graph are data producers, > some are data processors, some are data consumers like saving to disk or > displaying. In general, there's one data producer and one data consumer > in the graph, and there can be many data processors, the image > processing operations. The fact that there seems to be a root to all > graphs, from which all other nodes are instantiated as children with > gegl_node_new_child() is very disturbing because that would mean that it > is a tree, not a graph, so I assumed that nodes are automatically > connected from parent to child, which doesn't seem to be the case at > all. > > That being said, I tried to make a simple application that takes a > 16-bit integer pixel buffer and display it in gegl-gtk. I figured that > would make a graph such as: > > gegl:buffer_source -> insert here some -> gegl-gtk widget > | brightness mapping > buffer| or other operations > | > gegl_buffer --| > > The code I'm using is the following, without any operation in the middle: > const Babl* format = babl_format("Y u16"); > GeglBuffer *buf = gegl_buffer_new(&_rect, format); > gegl_buffer_set(buf, &_rect, 1, format, image_buffer, > GEGL_AUTO_ROWSTRIDE); > /* create the graph that displays this buffer */ > GeglNode *bufnode = gegl_node_new_child(gegl, > "operation", "gegl:buffer-source", "buffer", buf, > NULL); > gegl_node_process(bufnode); > > // Get the GtkWindow from glade and add gegl-gtk to it > GtkWidget *box = lookup_widget("a_window"); > view = GTK_WIDGET(gegl_gtk_view_new_for_node(bufnode)); > gtk_container_add(GTK_CONTAINER(box), view); > > Of course _rect is set to the correct 0,0,width,height of the buffer. > > The problem is that all I get from this code is segfaults. What did I > miss? Isn't gegl-gtk supposed to display the image data given by the > output port of a node? Is something required to transform the gegl > buffer data to a format that the gegl-gtk widget can understand? > > I will need two types of graphs for image data display: one for grey > images channels display with at least a basic brightness/contrast > control duplicated for each of the R G and B channels, one that displays > colour images recombined from the three greys. Anybody has an idea about > how I can recombine the resulting images from the three grey graphs and > display it into a new gegl-gtk widget? > > Thank you > > [1] https://free-astro.org/index.php/Siril > [2] https://free-astro.org/svn/siril/trunk/deps/gegl-gtk/ > > _______________________________________________ > gegl-developer-list mailing list > List address: gegl-developer-list@gnome.org > List membership: https://mail.gnome.org/mailman/listinfo/gegl- > developer-list > >
_______________________________________________ gegl-developer-list mailing list List address: gegl-developer-list@gnome.org List membership: https://mail.gnome.org/mailman/listinfo/gegl-developer-list