1 /*
2  * Private image library definitions for CUPS.
3  *
4  * Copyright © 2007-2019 by Apple Inc.
5  * Copyright © 1993-2006 by Easy Software Products.
6  *
7  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
8  * information.
9  */
10 
11 #ifndef _CUPS_RASTER_PRIVATE_H_
12 #  define _CUPS_RASTER_PRIVATE_H_
13 
14 /*
15  * Include necessary headers...
16  */
17 
18 #  include "raster.h"
19 #  include <cups/cups.h>
20 #  include <cups/debug-private.h>
21 #  include <cups/string-private.h>
22 #  ifdef _WIN32
23 #    include <io.h>
24 #    include <winsock2.h>		/* for htonl() definition */
25 #  else
26 #    include <unistd.h>
27 #    include <fcntl.h>
28 #  endif /* _WIN32 */
29 
30 #  ifdef __cplusplus
31 extern "C" {
32 #  endif /* __cplusplus */
33 
34 
35 /*
36  * Structure...
37  */
38 
39 struct _cups_raster_s			/**** Raster stream data ****/
40 {
41   unsigned		sync;		/* Sync word from start of stream */
42   void			*ctx;		/* File descriptor */
43   cups_raster_iocb_t	iocb;		/* IO callback */
44   cups_mode_t		mode;		/* Read/write mode */
45   cups_page_header2_t	header;		/* Raster header for current page */
46   unsigned		rowheight,	/* Row height in lines */
47 			count,		/* Current row run-length count */
48 			remaining,	/* Remaining rows in page image */
49 			bpp;		/* Bytes per pixel/color */
50   unsigned char		*pixels,	/* Pixels for current row */
51 			*pend,		/* End of pixel buffer */
52 			*pcurrent;	/* Current byte in pixel buffer */
53   int			compressed,	/* Non-zero if data is compressed */
54 			swapped;	/* Non-zero if data is byte-swapped */
55   unsigned char		*buffer,	/* Read/write buffer */
56 			*bufptr,	/* Current (read) position in buffer */
57 			*bufend;	/* End of current (read) buffer */
58   size_t		bufsize;	/* Buffer size */
59 #  ifdef DEBUG
60   size_t		iostart,	/* Start of read/write buffer */
61 			iocount;	/* Number of bytes read/written */
62 #  endif /* DEBUG */
63   unsigned		apple_page_count;/* Apple raster page count */
64 };
65 
66 
67 #if 0
68 /*
69  * min/max macros...
70  */
71 
72 #  ifndef max
73 #    define 	max(a,b)	((a) > (b) ? (a) : (b))
74 #  endif /* !max */
75 #  ifndef min
76 #    define 	min(a,b)	((a) < (b) ? (a) : (b))
77 #  endif /* !min */
78 #endif // 0
79 
80 
81 /*
82  * Prototypes...
83  */
84 
85 extern void		_cupsRasterAddError(const char *f, ...) _CUPS_FORMAT(1,2) _CUPS_PRIVATE;
86 extern void		_cupsRasterClearError(void) _CUPS_PRIVATE;
87 extern const char	*_cupsRasterColorSpaceString(cups_cspace_t cspace) _CUPS_PRIVATE;
88 extern void		_cupsRasterDelete(cups_raster_t *r) _CUPS_PRIVATE;
89 extern const char	*_cupsRasterErrorString(void) _CUPS_PRIVATE;
90 extern int		_cupsRasterInitPWGHeader(cups_page_header2_t *h, pwg_media_t *media, const char *type, int xdpi, int ydpi, const char *sides, const char *sheet_back) _CUPS_PRIVATE;
91 extern cups_raster_t	*_cupsRasterNew(cups_raster_iocb_t iocb, void *ctx, cups_mode_t mode) _CUPS_PRIVATE;
92 extern unsigned		_cupsRasterReadHeader(cups_raster_t *r) _CUPS_PRIVATE;
93 extern unsigned		_cupsRasterReadPixels(cups_raster_t *r, unsigned char *p, unsigned len) _CUPS_PRIVATE;
94 extern unsigned		_cupsRasterWriteHeader(cups_raster_t *r) _CUPS_PRIVATE;
95 extern unsigned		_cupsRasterWritePixels(cups_raster_t *r, unsigned char *p, unsigned len) _CUPS_PRIVATE;
96 
97 #  ifdef __cplusplus
98 }
99 #  endif /* __cplusplus */
100 
101 #endif /* !_CUPS_RASTER_PRIVATE_H_ */
102