summaryrefslogtreecommitdiff
path: root/devices/gdevpdfimg.h
diff options
context:
space:
mode:
Diffstat (limited to 'devices/gdevpdfimg.h')
-rw-r--r--devices/gdevpdfimg.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/devices/gdevpdfimg.h b/devices/gdevpdfimg.h
new file mode 100644
index 000000000..819ee020c
--- /dev/null
+++ b/devices/gdevpdfimg.h
@@ -0,0 +1,104 @@
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+#ifndef gdevpdfimg_h_INCLUDED
+#define gdevpdfimg_h_INCLUDED
+
+#include "gdevprn.h"
+
+typedef struct pdfimage_page_s {
+ int ImageObjectNumber;
+ gs_offset_t ImageOffset;
+ int LengthObjectNumber;
+ gs_offset_t LengthOffset;
+ int PageStreamObjectNumber;
+ gs_offset_t PageStreamOffset;
+ int PageDictObjectNumber;
+ gs_offset_t PageDictOffset;
+ void *next;
+} pdfimage_page;
+
+typedef struct PCLm_temp_file_s {
+ char file_name[gp_file_name_sizeof];
+ gp_file *file;
+ stream *strm;
+ stream *save;
+ byte *strm_buf;
+} PCLm_temp_file_t;
+
+#define OCR_MAX_FILE_OBJECTS 8
+
+typedef struct gx_device_pdf_image_s {
+ gx_device_common;
+ gx_prn_device_common;
+ unsigned char Compression;
+ gx_downscaler_params downscale;
+ int StripHeight;
+ float QFactor;
+ int JPEGQ;
+ gsicc_link_t *icclink;
+ stream *strm;
+ byte *strm_buf;
+ int NumPages;
+ gs_offset_t RootOffset;
+ gs_offset_t PagesOffset;
+ gs_offset_t xrefOffset;
+ pdfimage_page *Pages;
+ PCLm_temp_file_t xref_stream;
+ PCLm_temp_file_t temp_stream;
+ int NextObject;
+
+ /* OCR data */
+ struct {
+ char language[1024];
+ void *state;
+
+ /* Number of "file level" objects - i.e. the number of objects
+ * required to define the font. */
+ int file_objects;
+ gs_offset_t file_object_offset[OCR_MAX_FILE_OBJECTS];
+ int w;
+ int h;
+ int y;
+ int xres;
+ int yres;
+ float cur_x;
+ float cur_y;
+ float cur_size;
+ float cur_scale;
+ float wordbox[4];
+ int *word_chars;
+ int word_len;
+ int word_max;
+ void *data;
+ /* Write the font definition. */
+ int (*file_init)(struct gx_device_pdf_image_s *dev);
+ int (*begin_page)(struct gx_device_pdf_image_s *dev, int w, int h, int bpp);
+ void (*line)(struct gx_device_pdf_image_s *dev, void *row);
+ int (*end_page)(struct gx_device_pdf_image_s *dev);
+ } ocr;
+} gx_device_pdf_image;
+
+int pdf_image_open(gx_device *pdev);
+int pdf_image_close(gx_device * pdev);
+int pdf_image_put_params_downscale(gx_device * dev, gs_param_list * plist);
+int pdf_image_put_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
+int pdf_image_put_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
+dev_proc_print_page(pdf_image_print_page);
+
+#endif