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; }
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_openrbuffer(fz_stream **stmp, fz_buffer *buf) { fz_stream *stm; stm = newstm(FZ_SBUFFER); if (!stm) return fz_rethrow(-1, "out of memory: stream struct"); stm->buffer = fz_keepbuffer(buf); stm->buffer->eof = 1; *stmp = stm; return fz_okay; }
static fz_error * openbuffer(fz_stream **stmp, fz_buffer *buf, int mode) { fz_stream *stm; stm = newstm(FZ_SBUFFER, mode); if (!stm) return fz_throw("outofmem: stream struct"); stm->buffer = fz_keepbuffer(buf); if (mode == FZ_SREAD) stm->buffer->eof = 1; *stmp = stm; return fz_okay; }
fz_stream * fz_openbuffer(fz_buffer *buf) { fz_stream *stm; stm = fz_newstream(fz_keepbuffer(buf), readbuffer, closebuffer); stm->seek = seekbuffer; stm->bp = buf->data; stm->rp = buf->data; stm->wp = buf->data + buf->len; stm->ep = buf->data + buf->len; stm->pos = buf->len; return stm; }