fz_error * fz_chainpipeline(fz_filter **fp, fz_filter *head, fz_filter *tail, fz_buffer *buf) { FZ_NEWFILTER(fz_pipeline, p, pipeline); p->head = fz_keepfilter(head); p->tail = fz_keepfilter(tail); p->tailneedsin = 1; p->buffer = fz_keepbuffer(buf); return nil; }
fz_error * fz_newpipeline(fz_filter **fp, fz_filter *head, fz_filter *tail) { fz_error *error; FZ_NEWFILTER(fz_pipeline, p, pipeline); p->head = fz_keepfilter(head); p->tail = fz_keepfilter(tail); p->tailneedsin = 1; error = fz_newbuffer(&p->buffer, FZ_BUFSIZE); if (error) { fz_free(p); return error; } return nil; }
void fz_unchainpipeline(fz_filter *filter, fz_filter **oldfp, fz_buffer **oldbp) { fz_pipeline *p = (fz_pipeline*)filter; *oldfp = fz_keepfilter(p->head); *oldbp = fz_keepbuffer(p->buffer); fz_dropfilter(filter); }
fz_error fz_openrfilter(fz_stream **stmp, fz_filter *flt, fz_stream *src) { fz_error error; fz_stream *stm; stm = newstm(FZ_SFILTER); if (!stm) return fz_rethrow(-1, "out of memory: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->chain = fz_keepstream(src); stm->filter = fz_keepfilter(flt); *stmp = stm; return fz_okay; }
static fz_error * openfilter(fz_stream **stmp, fz_filter *flt, fz_stream *src, int mode) { fz_error *error; fz_stream *stm; stm = newstm(FZ_SFILTER, mode); if (!stm) return fz_throw("outofmem: stream struct"); error = fz_newbuffer(&stm->buffer, FZ_BUFSIZE); if (error) { fz_free(stm); return fz_rethrow(error, "cannot create buffer"); } stm->chain = fz_keepstream(src); stm->filter = fz_keepfilter(flt); *stmp = stm; return fz_okay; }