/* gcc gegl-sampler-demystify.c $(pkg-config --cflags --libs gegl-0.4) */ #include gint main (void) { GeglBuffer *buffer; GeglNode *crop; GeglNode *graph; GeglNode *scale; GeglNode *src; GeglNode *sink; GeglRectangle bbox; gegl_init (NULL, NULL); graph = gegl_node_new (); src = gegl_node_new_child (graph, "operation", "gegl:checkerboard", "x", 8, "y", 8, NULL); crop = gegl_node_new_child (graph, "operation", "gegl:crop", "height", 16.0, "width", 16.0, NULL); scale = gegl_node_new_child (graph, "operation", "gegl:scale-ratio", "x", 0.5, "y", 0.5, NULL); sink = gegl_node_new_child (graph, "operation", "gegl:buffer-sink", NULL); gegl_node_link_many (src, crop, scale, sink, NULL); gegl_node_set (sink, "buffer", &buffer, NULL); gegl_node_process (sink); bbox = *gegl_buffer_get_extent (buffer); g_message ("buffer: (%d, %d), %dx%d", bbox.x, bbox.y, bbox.width, bbox.height); g_object_unref (buffer); g_object_unref (graph); gegl_exit (); return 0; }