Having said I don't want to get sidetracked.... I managed to convert most of the example, to python, but I couldn't work out where to find 'blit', it's probably not missing, but I did # import Gegl # dir(Gegl.Node) ['__class__', '__cmp__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__doc__', '__format__', '__gdoc__', '__getattribute__', '__getitem__', '__gobject_init__', '__grefcount__', '__gtype__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rrshift__', '__rshift__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'chain', 'connect', 'connect_after', 'connect_from', 'connect_object', 'connect_object_after', 'connect_to', 'create_child', 'detect', 'disconnect', 'disconnect_by_func', 'emit', 'emit_stop_by_name', 'find_property', 'freeze_notify', 'get_bounding_box', 'get_children', 'get_consumer', 'get_consumers', 'get_data', 'get_input_proxy', 'get_operation', 'get_output_proxy', 'get_producer', 'get_properties', 'get_property', 'handler_block', 'handler_block_by_func', 'handler_disconnect', 'handler_is_connected', 'handler_unblock', 'handler_unblock_by_func', 'link', 'lookup', 'new_child', 'new_processor', 'notify', 'process', 'props', 'render', 'set_data', 'set_properties', 'set_property', 'stop_emission', 'thaw_notify', 'to_dot', 'to_xml', 'weak_ref'] Heres how far I got: import cairo import Gegl gegl = Gegl.Node() load = gegl.new_child("gegl:load", path="test.png") size = load.get_bounding_box() image = cairo.ImageSurface(cairo.FORMAT_ARGB32, size.width, size.height) #gegl_node_blit (load, # 1.0 /*scale*/, # &size, # babl_format ("R'G'B'A u8"), # cairo_image_surface_get_data (image), # GEGL_AUTO_ROWSTRIDE, # GEGL_BLIT_DEFAULT); image.write_to_png('/tmp/output.png') _______________________________________________ Gegl-developer mailing list Gegl-developer@xxxxxxxxxxxxxxxxxxxxxx https://lists.XCF.Berkeley.EDU/mailman/listinfo/gegl-developer