diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/mupdf/fitz/output-pcl.h | 16 | ||||
-rw-r--r-- | include/mupdf/fitz/output-png.h | 10 | ||||
-rw-r--r-- | include/mupdf/fitz/output-pnm.h | 16 | ||||
-rw-r--r-- | include/mupdf/fitz/output-ps.h | 8 | ||||
-rw-r--r-- | include/mupdf/fitz/output.h | 33 |
5 files changed, 47 insertions, 36 deletions
diff --git a/include/mupdf/fitz/output-pcl.h b/include/mupdf/fitz/output-pcl.h index 309bfc23..338d7553 100644 --- a/include/mupdf/fitz/output-pcl.h +++ b/include/mupdf/fitz/output-pcl.h @@ -90,25 +90,13 @@ void fz_pcl_preset(fz_context *ctx, fz_pcl_options *opts, const char *preset); */ void fz_pcl_option(fz_context *ctx, fz_pcl_options *opts, const char *option, int val); -typedef struct fz_mono_pcl_output_context_s fz_mono_pcl_output_context; - -fz_mono_pcl_output_context *fz_write_mono_pcl_header(fz_context *ctx, fz_output *out, int w, int h, int xres, int yres, int pagenum, const fz_pcl_options *options); - -void fz_write_mono_pcl_band(fz_context *ctx, fz_output *out, fz_mono_pcl_output_context *poc, const fz_bitmap *bitmap); - -void fz_write_mono_pcl_trailer(fz_context *ctx, fz_output *out, fz_mono_pcl_output_context *pcoc); +fz_band_writer *fz_new_mono_pcl_band_writer(fz_context *ctx, fz_output *out, const fz_pcl_options *options); void fz_write_bitmap_as_pcl(fz_context *ctx, fz_output *out, const fz_bitmap *bitmap, const fz_pcl_options *pcl); void fz_save_bitmap_as_pcl(fz_context *ctx, fz_bitmap *bitmap, char *filename, int append, const fz_pcl_options *pcl); -typedef struct fz_color_pcl_output_context_s fz_color_pcl_output_context; - -fz_color_pcl_output_context *fz_write_color_pcl_header(fz_context *ctx, fz_output *out, int w, int h, int n, int xres, int yres, int pagenum, const fz_pcl_options *options); - -void fz_write_color_pcl_band(fz_context *ctx, fz_output *out, fz_color_pcl_output_context *poc, int w, int h, int n, int stride, int band_start, int bandheight, unsigned char *samples); - -void fz_write_color_pcl_trailer(fz_context *ctx, fz_output *out, fz_color_pcl_output_context *pcoc); +fz_band_writer *fz_new_color_pcl_band_writer(fz_context *ctx, fz_output *out, const fz_pcl_options *options); void fz_write_pixmap_as_pcl(fz_context *ctx, fz_output *out, const fz_pixmap *pixmap, const fz_pcl_options *pcl); diff --git a/include/mupdf/fitz/output-png.h b/include/mupdf/fitz/output-png.h index d98d7c7f..60283c7c 100644 --- a/include/mupdf/fitz/output-png.h +++ b/include/mupdf/fitz/output-png.h @@ -20,11 +20,11 @@ void fz_save_pixmap_as_png(fz_context *ctx, fz_pixmap *pixmap, const char *filen */ void fz_write_pixmap_as_png(fz_context *ctx, fz_output *out, const fz_pixmap *pixmap); -typedef struct fz_png_output_context_s fz_png_output_context; - -fz_png_output_context *fz_write_png_header(fz_context *ctx, fz_output *out, int w, int h, int n, int alpha); -void fz_write_png_band(fz_context *ctx, fz_output *out, fz_png_output_context *poc, int stride, int band_start, int bandheight, unsigned char *samples); -void fz_write_png_trailer(fz_context *ctx, fz_output *out, fz_png_output_context *poc); +/* + fz_new_png_band_writer: Obtain a fz_band_writer instance + for producing PNG output. +*/ +fz_band_writer *fz_new_png_band_writer(fz_context *ctx, fz_output *out); /* Create a new buffer containing the image/pixmap in PNG format. diff --git a/include/mupdf/fitz/output-pnm.h b/include/mupdf/fitz/output-pnm.h index 09cad4ef..66198325 100644 --- a/include/mupdf/fitz/output-pnm.h +++ b/include/mupdf/fitz/output-pnm.h @@ -13,8 +13,8 @@ void fz_save_pixmap_as_pnm(fz_context *ctx, fz_pixmap *pixmap, char *filename); void fz_write_pixmap_as_pnm(fz_context *ctx, fz_output *out, fz_pixmap *pixmap); -void fz_write_pnm_header(fz_context *ctx, fz_output *out, int w, int h, int n, int alpha); -void fz_write_pnm_band(fz_context *ctx, fz_output *out, int w, int h, int n, int alpha, int stride, int band_start, int bandheight, unsigned char *p); + +fz_band_writer *fz_new_pnm_band_writer(fz_context *ctx, fz_output *out); /* fz_save_pixmap_as_pam: Save a pixmap as a PAM image file. @@ -22,8 +22,8 @@ void fz_write_pnm_band(fz_context *ctx, fz_output *out, int w, int h, int n, int void fz_save_pixmap_as_pam(fz_context *ctx, fz_pixmap *pixmap, char *filename); void fz_write_pixmap_as_pam(fz_context *ctx, fz_output *out, fz_pixmap *pixmap); -void fz_write_pam_header(fz_context *ctx, fz_output *out, int w, int h, int n, int alpha); -void fz_write_pam_band(fz_context *ctx, fz_output *out, int w, int h, int n, int alpha, int stride, int band_start, int bandheight, unsigned char *sp); + +fz_band_writer *fz_new_pam_band_writer(fz_context *ctx, fz_output *out); /* fz_save_bitmap_as_pbm: Save a bitmap as a PBM image file. @@ -32,9 +32,7 @@ void fz_save_bitmap_as_pbm(fz_context *ctx, fz_bitmap *bitmap, char *filename); void fz_write_bitmap_as_pbm(fz_context *ctx, fz_output *out, fz_bitmap *bitmap); -void fz_write_pbm_header(fz_context *ctx, fz_output *out, int w, int h); - -void fz_write_pbm_band(fz_context *ctx, fz_output *out, fz_bitmap *bitmap); +fz_band_writer *fz_new_pbm_band_writer(fz_context *ctx, fz_output *out); /* fz_save_bitmap_as_pkm: Save a 4bpp cmyk bitmap as a PAM image file. @@ -43,8 +41,6 @@ void fz_save_bitmap_as_pkm(fz_context *ctx, fz_bitmap *bitmap, char *filename); void fz_write_bitmap_as_pkm(fz_context *ctx, fz_output *out, fz_bitmap *bitmap); -void fz_write_pkm_header(fz_context *ctx, fz_output *out, int w, int h); - -void fz_write_pkm_band(fz_context *ctx, fz_output *out, fz_bitmap *bitmap); +fz_band_writer *fz_new_pkm_band_writer(fz_context *ctx, fz_output *out); #endif diff --git a/include/mupdf/fitz/output-ps.h b/include/mupdf/fitz/output-ps.h index 7caed53b..1f187663 100644 --- a/include/mupdf/fitz/output-ps.h +++ b/include/mupdf/fitz/output-ps.h @@ -6,8 +6,6 @@ #include "mupdf/fitz/output.h" #include "mupdf/fitz/pixmap.h" -typedef struct fz_ps_output_context_s fz_ps_output_context; - /* PS (image) output */ @@ -17,11 +15,7 @@ void fz_save_pixmap_as_ps(fz_context *ctx, fz_pixmap *pixmap, char *filename, in void fz_write_ps_file_header(fz_context *ctx, fz_output *out); -fz_ps_output_context *fz_write_ps_header(fz_context *ctx, fz_output *out, int w, int h, int n, int xres, int yres, int pagenum); - -void fz_write_ps_band(fz_context *ctx, fz_output *out, fz_ps_output_context *psoc, int w, int h, int n, int stride, int band_start, int bandheight, unsigned char *samples); - -void fz_write_ps_trailer(fz_context *ctx, fz_output *out, fz_ps_output_context *psoc); +fz_band_writer *fz_new_ps_band_writer(fz_context *ctx, fz_output *out); void fz_write_ps_file_trailer(fz_context *ctx, fz_output *out, int pages); diff --git a/include/mupdf/fitz/output.h b/include/mupdf/fitz/output.h index d4abd712..ffa140f9 100644 --- a/include/mupdf/fitz/output.h +++ b/include/mupdf/fitz/output.h @@ -164,4 +164,37 @@ void fz_new_output_context(fz_context *ctx); void fz_drop_output_context(fz_context *ctx); fz_output_context *fz_keep_output_context(fz_context *ctx); +/* + fz_band_writer +*/ +typedef struct fz_band_writer_s fz_band_writer; + +typedef void (fz_write_header_fn)(fz_context *ctx, fz_band_writer *writer); +typedef void (fz_write_band_fn)(fz_context *ctx, fz_band_writer *writer, int stride, int band_start, int bandheight, const unsigned char *samples); +typedef void (fz_write_trailer_fn)(fz_context *ctx, fz_band_writer *writer); +typedef void (fz_drop_band_writer_fn)(fz_context *ctx, fz_band_writer *writer); + +struct fz_band_writer_s +{ + fz_drop_band_writer_fn *drop; + fz_write_header_fn *header; + fz_write_band_fn *band; + fz_write_trailer_fn *trailer; + fz_output *out; + int w; + int h; + int n; + int alpha; + int xres; + int yres; + int pagenum; +}; + +fz_band_writer *fz_new_band_writer_of_size(fz_context *ctx, size_t size, fz_output *out); +#define fz_new_band_writer(C,M,O) ((M *)Memento_label(fz_new_band_writer_of_size(ctx, sizeof(M), O), #M)) +void fz_write_header(fz_context *ctx, fz_band_writer *writer, int w, int h, int n, int alpha, int xres, int yres, int pagenum); +void fz_write_band(fz_context *ctx, fz_band_writer *writer, int stride, int band_start, int bandheight, const unsigned char *samples); +void fz_write_trailer(fz_context *ctx, fz_band_writer *writer); +void fz_drop_band_writer(fz_context *ctx, fz_band_writer *writer); + #endif |