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