a cairo_write_func_t to accept the output data, may be NULL to indicate a no-op write_func. With a no-op write_func, the surface may be queried or used as a source without generating any temporary files.
the closure argument for write_func
width of the surface, in points (1 point == 1/72.0 inch)
height of the surface, in points (1 point == 1/72.0 inch)
a pointer to the newly created surface. The caller owns the surface and should call Surface.destroy when done with it. This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory occurs. You can use Surface.status to check for this.
Creates a PostScript surface of the specified size in points to be written incrementally to the stream represented by write_func and closure. See cairo_ps_surface_create() for a more convenient way to simply direct the PostScript output to a named file. Note that the size of individual pages of the PostScript output can vary. See cairo_ps_surface_set_size(). Since 1.2