From 6979982ba2900f451c801d35bb7e52413a89d26e Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Thu, 23 Mar 2017 18:55:45 -0400 Subject: Add fz_new_writer function. Moves document_writers into the same style as fz_new_{image,document,page} etc. --- source/fitz/output-cbz.c | 15 ++------------- source/fitz/output-svg.c | 7 +------ source/fitz/writer.c | 13 +++++++++++++ 3 files changed, 16 insertions(+), 19 deletions(-) (limited to 'source/fitz') diff --git a/source/fitz/output-cbz.c b/source/fitz/output-cbz.c index 7268a805..73cc1195 100644 --- a/source/fitz/output-cbz.c +++ b/source/fitz/output-cbz.c @@ -66,13 +66,7 @@ cbz_drop_writer(fz_context *ctx, fz_document_writer *wri_) fz_document_writer * fz_new_cbz_writer(fz_context *ctx, const char *path, const char *options) { - fz_cbz_writer *wri; - - wri = fz_malloc_struct(ctx, fz_cbz_writer); - wri->super.begin_page = cbz_begin_page; - wri->super.end_page = cbz_end_page; - wri->super.close_writer = cbz_close_writer; - wri->super.drop_writer = cbz_drop_writer; + fz_cbz_writer *wri = fz_new_writer(ctx, fz_cbz_writer, cbz_begin_page, cbz_end_page, cbz_close_writer, cbz_drop_writer); fz_try(ctx) { @@ -139,12 +133,7 @@ fz_new_pixmap_writer(fz_context *ctx, const char *path, const char *options, const char *default_path, int n, void (*save)(fz_context *ctx, fz_pixmap *pix, const char *filename)) { - fz_pixmap_writer *wri; - - wri = fz_malloc_struct(ctx, fz_pixmap_writer); - wri->super.begin_page = pixmap_begin_page; - wri->super.end_page = pixmap_end_page; - wri->super.drop_writer = pixmap_drop_writer; + fz_pixmap_writer *wri = fz_new_writer(ctx, fz_pixmap_writer, pixmap_begin_page, pixmap_end_page, NULL, pixmap_drop_writer); fz_try(ctx) { diff --git a/source/fitz/output-svg.c b/source/fitz/output-svg.c index f8711031..0758b843 100644 --- a/source/fitz/output-svg.c +++ b/source/fitz/output-svg.c @@ -58,13 +58,8 @@ svg_drop_writer(fz_context *ctx, fz_document_writer *wri_) fz_document_writer * fz_new_svg_writer(fz_context *ctx, const char *path, const char *args) { - fz_svg_writer *wri; const char *val; - - wri = fz_malloc_struct(ctx, fz_svg_writer); - wri->super.begin_page = svg_begin_page; - wri->super.end_page = svg_end_page; - wri->super.drop_writer = svg_drop_writer; + fz_svg_writer *wri = fz_new_writer(ctx, fz_svg_writer, svg_begin_page, svg_end_page, NULL, svg_drop_writer); wri->text_format = FZ_SVG_TEXT_AS_PATH; wri->reuse_images = 1; diff --git a/source/fitz/writer.c b/source/fitz/writer.c index 3c53f633..c89ee4e0 100644 --- a/source/fitz/writer.c +++ b/source/fitz/writer.c @@ -48,6 +48,19 @@ fz_option_eq(const char *a, const char *b) return !strncmp(a, b, n) && (a[n] == ',' || a[n] == 0); } +fz_document_writer *fz_new_writer_of_size(fz_context *ctx, size_t size, fz_document_writer_begin_page_fn *begin_page, + fz_document_writer_end_page_fn *end_page, fz_document_writer_close_writer_fn *close, fz_document_writer_drop_writer_fn *drop) +{ + fz_document_writer *wri = Memento_label(fz_calloc(ctx, 1, size), "fz_document_writer"); + + wri->begin_page = begin_page; + wri->end_page = end_page; + wri->close_writer = close; + wri->drop_writer = drop; + + return wri; +} + fz_document_writer * fz_new_document_writer(fz_context *ctx, const char *path, const char *format, const char *options) { -- cgit v1.2.3