xref: /plan9/sys/src/cmd/gs/src/gsdevice.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
13ff48bf5SDavid du Colombier /* Copyright (C) 1994, 2000 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: gsdevice.h,v 1.6 2002/06/16 08:45:42 lpd Exp $ */
187dd7cddfSDavid du Colombier /* Device and page control API */
197dd7cddfSDavid du Colombier 
207dd7cddfSDavid du Colombier #ifndef gsdevice_INCLUDED
217dd7cddfSDavid du Colombier #  define gsdevice_INCLUDED
227dd7cddfSDavid du Colombier 
237dd7cddfSDavid du Colombier #ifndef gx_device_DEFINED
247dd7cddfSDavid du Colombier #  define gx_device_DEFINED
257dd7cddfSDavid du Colombier typedef struct gx_device_s gx_device;
267dd7cddfSDavid du Colombier #endif
277dd7cddfSDavid du Colombier 
287dd7cddfSDavid du Colombier #ifndef gx_device_memory_DEFINED
297dd7cddfSDavid du Colombier #  define gx_device_memory_DEFINED
307dd7cddfSDavid du Colombier typedef struct gx_device_memory_s gx_device_memory;
317dd7cddfSDavid du Colombier #endif
327dd7cddfSDavid du Colombier 
337dd7cddfSDavid du Colombier #ifndef gs_matrix_DEFINED
347dd7cddfSDavid du Colombier #  define gs_matrix_DEFINED
357dd7cddfSDavid du Colombier typedef struct gs_matrix_s gs_matrix;
367dd7cddfSDavid du Colombier #endif
377dd7cddfSDavid du Colombier 
387dd7cddfSDavid du Colombier #ifndef gs_param_list_DEFINED
397dd7cddfSDavid du Colombier #  define gs_param_list_DEFINED
407dd7cddfSDavid du Colombier typedef struct gs_param_list_s gs_param_list;
417dd7cddfSDavid du Colombier #endif
427dd7cddfSDavid du Colombier 
437dd7cddfSDavid du Colombier /* Device procedures not involving a graphics state. */
447dd7cddfSDavid du Colombier 
45*593dc095SDavid du Colombier int gs_opendevice(gx_device *);
46*593dc095SDavid du Colombier int gs_copyscanlines(gx_device *, int, byte *, uint, int *, uint *);
47*593dc095SDavid du Colombier const gx_device *gs_getdevice(int);
48*593dc095SDavid du Colombier int gs_copydevice(gx_device **, const gx_device *, gs_memory_t *);
493ff48bf5SDavid du Colombier /*
503ff48bf5SDavid du Colombier  * If keep_open is true and dev->is_open is true, the copy *may* have
513ff48bf5SDavid du Colombier  * is_open = true; otherwise, the copy will have is_open = false.
523ff48bf5SDavid du Colombier  * copydevice is equivalent to copydevice2 with keep_open = false.
533ff48bf5SDavid du Colombier  */
54*593dc095SDavid du Colombier int gs_copydevice2(gx_device **pnew_dev, const gx_device *dev,
55*593dc095SDavid du Colombier 		   bool keep_open, gs_memory_t *mem);
567dd7cddfSDavid du Colombier 
577dd7cddfSDavid du Colombier #define gs_makeimagedevice(pdev, pmat, w, h, colors, colors_size, mem)\
587dd7cddfSDavid du Colombier   gs_makewordimagedevice(pdev, pmat, w, h, colors, colors_size, false, true, mem)
59*593dc095SDavid du Colombier int gs_makewordimagedevice(gx_device ** pnew_dev, const gs_matrix * pmat,
607dd7cddfSDavid du Colombier 			   uint width, uint height,
617dd7cddfSDavid du Colombier 			   const byte * colors, int num_colors,
627dd7cddfSDavid du Colombier 			   bool word_oriented, bool page_device,
63*593dc095SDavid du Colombier 			   gs_memory_t * mem);
647dd7cddfSDavid du Colombier 
657dd7cddfSDavid du Colombier #define gs_initialize_imagedevice(mdev, pmat, w, h, colors, colors_size, mem)\
667dd7cddfSDavid du Colombier   gs_initialize_wordimagedevice(mdev, pmat, w, h, colors, color_size, false, true, mem)
67*593dc095SDavid du Colombier int gs_initialize_wordimagedevice(gx_device_memory * new_dev,
687dd7cddfSDavid du Colombier 				  const gs_matrix * pmat,
697dd7cddfSDavid du Colombier 				  uint width, uint height,
707dd7cddfSDavid du Colombier 				  const byte * colors, int colors_size,
717dd7cddfSDavid du Colombier 				  bool word_oriented, bool page_device,
72*593dc095SDavid du Colombier 				  gs_memory_t * mem);
73*593dc095SDavid du Colombier const char *gs_devicename(const gx_device *);
74*593dc095SDavid du Colombier void gs_deviceinitialmatrix(gx_device *, gs_matrix *);
757dd7cddfSDavid du Colombier 
767dd7cddfSDavid du Colombier /* VMS limits identifiers to 31 characters. */
77*593dc095SDavid du Colombier int gs_get_device_or_hw_params(gx_device *, gs_param_list *, bool);
787dd7cddfSDavid du Colombier #define gs_getdeviceparams(dev, plist)\
797dd7cddfSDavid du Colombier   gs_get_device_or_hw_params(dev, plist, false)
807dd7cddfSDavid du Colombier #define gs_gethardwareparams(dev, plist)\
817dd7cddfSDavid du Colombier   gs_get_device_or_hw_params(dev, plist, true)
827dd7cddfSDavid du Colombier /* BACKWARD COMPATIBILITY */
837dd7cddfSDavid du Colombier #define gs_get_device_or_hardware_params gs_get_device_or_hw_params
847dd7cddfSDavid du Colombier 
85*593dc095SDavid du Colombier int gs_putdeviceparams(gx_device *, gs_param_list *);
86*593dc095SDavid du Colombier int gs_closedevice(gx_device *);
877dd7cddfSDavid du Colombier 
887dd7cddfSDavid du Colombier /* Device procedures involving an imager state. */
897dd7cddfSDavid du Colombier 
907dd7cddfSDavid du Colombier #ifndef gs_imager_state_DEFINED
917dd7cddfSDavid du Colombier #  define gs_imager_state_DEFINED
927dd7cddfSDavid du Colombier typedef struct gs_imager_state_s gs_imager_state;
937dd7cddfSDavid du Colombier #endif
947dd7cddfSDavid du Colombier 
95*593dc095SDavid du Colombier int gs_imager_putdeviceparams(gs_imager_state *pis, gx_device *dev,
96*593dc095SDavid du Colombier 			      gs_param_list *plist);
977dd7cddfSDavid du Colombier 
987dd7cddfSDavid du Colombier /* Device procedures involving a graphics state. */
997dd7cddfSDavid du Colombier 
1007dd7cddfSDavid du Colombier #ifndef gs_state_DEFINED
1017dd7cddfSDavid du Colombier #  define gs_state_DEFINED
1027dd7cddfSDavid du Colombier typedef struct gs_state_s gs_state;
1037dd7cddfSDavid du Colombier #endif
1047dd7cddfSDavid du Colombier 
105*593dc095SDavid du Colombier int gs_flushpage(gs_state *);
106*593dc095SDavid du Colombier int gs_copypage(gs_state *);
107*593dc095SDavid du Colombier int gs_output_page(gs_state *, int, int);
108*593dc095SDavid du Colombier int gs_nulldevice(gs_state *);
109*593dc095SDavid du Colombier int gs_setdevice(gs_state *, gx_device *);
110*593dc095SDavid du Colombier int gs_setdevice_no_erase(gs_state *, gx_device *);		/* returns 1 */
1117dd7cddfSDavid du Colombier 						/* if erasepage required */
112*593dc095SDavid du Colombier int gs_setdevice_no_init(gs_state *, gx_device *);
113*593dc095SDavid du Colombier gx_device *gs_currentdevice(const gs_state *);
1147dd7cddfSDavid du Colombier 
1157dd7cddfSDavid du Colombier /* gzstate.h redefines the following: */
1167dd7cddfSDavid du Colombier #ifndef gs_currentdevice_inline
1177dd7cddfSDavid du Colombier #  define gs_currentdevice_inline(pgs) gs_currentdevice(pgs)
1187dd7cddfSDavid du Colombier #endif
1197dd7cddfSDavid du Colombier 
120*593dc095SDavid du Colombier int gs_state_putdeviceparams(gs_state *pgs, gs_param_list *plist);
1217dd7cddfSDavid du Colombier 
1227dd7cddfSDavid du Colombier #endif /* gsdevice_INCLUDED */
123