Implementing cairo_read_func_t/cairo_write_func_t properly
Bernhard Fischer <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <1637769.RnC2PDkWQS@winnie> |
Hi! According to the documentation (http://www.cairographics.org/manual/cairo-PNG-Support.html#cairo-read-func-t) the cairo_read_func_t shall return either CAIRO_STATUS_SUCCESS if everything is ok or CAIRO_STATUS_READ_ERROR in case of error. Unfortunately, in reality there is a 3rd case: truncated, i.e. EOF reached. The problem now is that if EOF (i.e. a truncated read happens) occurs and I would return STATUS_SUCCESS, then the calling function can never detect that EOF occured thus looping forever. In the other case when I would return STATUS_READ_ERROR, then the calling function cannot detect how many bytes then actually have been read except in the case that I read 1 byte after the other. Is there any suggestion on how to implement a such stream functions properly? Bernhard PS: I'm trying to implement cairo_image_surface_create_from_jpeg_stream() with the same prototype as cairo_image_surface_create_from_png_stream() and not willing to call the read function byte-by-byte. -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo