terom@13: #ifndef RENDER_RAW_H terom@13: #define RENDER_RAW_H terom@13: terom@13: #include "render.h" terom@13: terom@13: /* terom@13: * For rendering raw pixel data terom@13: */ terom@13: struct render_raw; terom@13: terom@13: /* terom@13: * Build and return a render_raw that can be used to handle the raw rendered pixel data. terom@13: * terom@13: * If render's I/O was set up with render_io_stream, the raw pixels will simply terom@13: * be fwritten to that stream (and fflushed at the end). If I/O was set up with terom@13: * render_io_custom, write_fn will be called with a row of pixel data (a buffer terom@13: * img_w bytes long) for every row that's written. Flush_fn will be called once terom@13: * all the pixels have been "written". terom@13: * terom@13: * returns NULL on failure. terom@13: */ terom@17: struct render_raw *render_raw_alloc (struct render *render); terom@13: terom@13: /* terom@13: * Feed a full row of raw pixel data to be handled terom@13: * terom@13: * buf must be render.img_w bytes wide. terom@13: */ terom@13: int render_raw_row (struct render_raw *ctx, unsigned char *rowbuf); terom@13: terom@13: /* terom@13: * Mark the render as complete and free the render_raw, flushing out any remaining data. terom@13: */ terom@13: int render_raw_done (struct render_raw *ctx); terom@13: terom@13: /* terom@13: * Abort the render, free the render_raw, and discard any remaining data. terom@13: */ terom@13: int render_raw_abort (struct render_raw *ctx); terom@13: terom@13: #endif /* RENDER_RAW_H */