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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.