diff --git a/generators/spectre/libspectre/ghostscript/gdevdsp.h b/generators/spectre/libspectre/ghostscript/gdevdsp.h new file mode 100644 index 000000000..8273fd0b2 --- /dev/null +++ b/generators/spectre/libspectre/ghostscript/gdevdsp.h @@ -0,0 +1,266 @@ +/* Copyright (C) 2001-2006 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 that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ +/* $Id$ */ +/* gdevdsp.h - callback structure for DLL based display device */ + +#ifndef gdevdsp_INCLUDED +# define gdevdsp_INCLUDED + +/* + * The callback structure must be provided by calling the + * Ghostscript APIs in the following order: + * gsapi_new_instance(&minst); + * gsapi_set_display_callback(minst, callback); + * gsapi_init_with_args(minst, argc, argv); + * + * Supported parameters and default values are: + * -sDisplayHandle=16#04d2 or 1234 string + * Caller supplied handle as a decimal or hexadecimal number + * in a string. On 32-bit platforms, it may be set + * using -dDisplayHandle=1234 for backward compatibility. + * Included as first parameter of all callback functions. + * + * -dDisplayFormat=0 long + * Color format specified using bitfields below. + * Included as argument of display_size() and display_presize() + * These can only be changed when the device is closed. + * + * The second parameter of all callback functions "void *device" + * is the address of the Ghostscript display device instance. + * The arguments "void *handle" and "void *device" together + * uniquely identify an instance of the display device. + * + * A typical sequence of callbacks would be + * open, presize, memalloc, size, sync, page + * presize, memfree, memalloc, size, sync, page + * preclose, memfree, close + * The caller should not access the image buffer: + * - before the first sync + * - between presize and size + * - after preclose + * If opening the device fails, you might see the following: + * open, presize, memalloc, memfree, close + * + */ + +#define DISPLAY_VERSION_MAJOR 2 +#define DISPLAY_VERSION_MINOR 0 + +#define DISPLAY_VERSION_MAJOR_V1 1 /* before separation format was added */ +#define DISPLAY_VERSION_MINOR_V1 0 + +/* The display format is set by a combination of the following bitfields */ + +/* Define the color space alternatives */ +typedef enum { + DISPLAY_COLORS_NATIVE = (1<<0), + DISPLAY_COLORS_GRAY = (1<<1), + DISPLAY_COLORS_RGB = (1<<2), + DISPLAY_COLORS_CMYK = (1<<3), + DISPLAY_COLORS_SEPARATION = (1<<19) +} DISPLAY_FORMAT_COLOR; +#define DISPLAY_COLORS_MASK 0x8000fL + +/* Define whether alpha information, or an extra unused bytes is included */ +/* DISPLAY_ALPHA_FIRST and DISPLAY_ALPHA_LAST are not implemented */ +typedef enum { + DISPLAY_ALPHA_NONE = (0<<4), + DISPLAY_ALPHA_FIRST = (1<<4), + DISPLAY_ALPHA_LAST = (1<<5), + DISPLAY_UNUSED_FIRST = (1<<6), /* e.g. Mac xRGB */ + DISPLAY_UNUSED_LAST = (1<<7) /* e.g. Windows BGRx */ +} DISPLAY_FORMAT_ALPHA; +#define DISPLAY_ALPHA_MASK 0x00f0L + +/* Define the depth per component for DISPLAY_COLORS_GRAY, + * DISPLAY_COLORS_RGB and DISPLAY_COLORS_CMYK, + * or the depth per pixel for DISPLAY_COLORS_NATIVE + * DISPLAY_DEPTH_2 and DISPLAY_DEPTH_12 have not been tested. + */ +typedef enum { + DISPLAY_DEPTH_1 = (1<<8), + DISPLAY_DEPTH_2 = (1<<9), + DISPLAY_DEPTH_4 = (1<<10), + DISPLAY_DEPTH_8 = (1<<11), + DISPLAY_DEPTH_12 = (1<<12), + DISPLAY_DEPTH_16 = (1<<13) + /* unused (1<<14) */ + /* unused (1<<15) */ +} DISPLAY_FORMAT_DEPTH; +#define DISPLAY_DEPTH_MASK 0xff00L + + +/* Define whether Red/Cyan should come first, + * or whether Blue/Black should come first + */ +typedef enum { + DISPLAY_BIGENDIAN = (0<<16), /* Red/Cyan first */ + DISPLAY_LITTLEENDIAN = (1<<16) /* Blue/Black first */ +} DISPLAY_FORMAT_ENDIAN; +#define DISPLAY_ENDIAN_MASK 0x00010000L + +/* Define whether the raster starts at the top or bottom of the bitmap */ +typedef enum { + DISPLAY_TOPFIRST = (0<<17), /* Unix, Mac */ + DISPLAY_BOTTOMFIRST = (1<<17) /* Windows */ +} DISPLAY_FORMAT_FIRSTROW; +#define DISPLAY_FIRSTROW_MASK 0x00020000L + + +/* Define whether packing RGB in 16-bits should use 555 + * or 565 (extra bit for green) + */ +typedef enum { + DISPLAY_NATIVE_555 = (0<<18), + DISPLAY_NATIVE_565 = (1<<18) +} DISPLAY_FORMAT_555; +#define DISPLAY_555_MASK 0x00040000L + +/* Define the row alignment, which must be equal to or greater than + * the size of a pointer. + * The default (DISPLAY_ROW_ALIGN_DEFAULT) is the size of a pointer, + * 4 bytes (DISPLAY_ROW_ALIGN_4) on 32-bit systems or 8 bytes + * (DISPLAY_ROW_ALIGN_8) on 64-bit systems. + */ +typedef enum { + DISPLAY_ROW_ALIGN_DEFAULT = (0<<20), + /* DISPLAY_ROW_ALIGN_1 = (1<<20), */ /* not currently possible */ + /* DISPLAY_ROW_ALIGN_2 = (2<<20), */ /* not currently possible */ + DISPLAY_ROW_ALIGN_4 = (3<<20), + DISPLAY_ROW_ALIGN_8 = (4<<20), + DISPLAY_ROW_ALIGN_16 = (5<<20), + DISPLAY_ROW_ALIGN_32 = (6<<20), + DISPLAY_ROW_ALIGN_64 = (7<<20) +} DISPLAY_FORMAT_ROW_ALIGN; +#define DISPLAY_ROW_ALIGN_MASK 0x00700000L + + +#ifndef display_callback_DEFINED +#define display_callback_DEFINED +typedef struct display_callback_s display_callback; +#endif + +/* + * Note that for Windows, the display callback functions are + * cdecl, not stdcall. This differs from those in iapi.h. + */ + +struct display_callback_s { + /* Size of this structure */ + /* Used for checking if we have been handed a valid structure */ + int size; + + /* Major version of this structure */ + /* The major version number will change if this structure changes. */ + int version_major; + + /* Minor version of this structure */ + /* The minor version number will change if new features are added + * without changes to this structure. For example, a new color + * format. + */ + int version_minor; + + /* New device has been opened */ + /* This is the first event from this device. */ + int (*display_open)(void *handle, void *device); + + /* Device is about to be closed. */ + /* Device will not be closed until this function returns. */ + int (*display_preclose)(void *handle, void *device); + + /* Device has been closed. */ + /* This is the last event from this device. */ + int (*display_close)(void *handle, void *device); + + /* Device is about to be resized. */ + /* Resize will only occur if this function returns 0. */ + /* raster is byte count of a row. */ + int (*display_presize)(void *handle, void *device, + int width, int height, int raster, unsigned int format); + + /* Device has been resized. */ + /* New pointer to raster returned in pimage */ + int (*display_size)(void *handle, void *device, int width, int height, + int raster, unsigned int format, unsigned char *pimage); + + /* flushpage */ + int (*display_sync)(void *handle, void *device); + + /* showpage */ + /* If you want to pause on showpage, then don't return immediately */ + int (*display_page)(void *handle, void *device, int copies, int flush); + + /* Notify the caller whenever a portion of the raster is updated. */ + /* This can be used for cooperative multitasking or for + * progressive update of the display. + * This function pointer may be set to NULL if not required. + */ + int (*display_update)(void *handle, void *device, int x, int y, + int w, int h); + + /* Allocate memory for bitmap */ + /* This is provided in case you need to create memory in a special + * way, e.g. shared. If this is NULL, the Ghostscript memory device + * allocates the bitmap. This will only called to allocate the + * image buffer. The first row will be placed at the address + * returned by display_memalloc. + */ + void *(*display_memalloc)(void *handle, void *device, unsigned long size); + + /* Free memory for bitmap */ + /* If this is NULL, the Ghostscript memory device will free the bitmap */ + int (*display_memfree)(void *handle, void *device, void *mem); + + /* Added in V2 */ + /* When using separation color space (DISPLAY_COLORS_SEPARATION), + * give a mapping for one separation component. + * This is called for each new component found. + * It may be called multiple times for each component. + * It may be called at any time between display_size + * and display_close. + * The client uses this to map from the separations to CMYK + * and hence to RGB for display. + * GS must only use this callback if version_major >= 2. + * The unsigned short c,m,y,k values are 65535 = 1.0. + * This function pointer may be set to NULL if not required. + */ + int (*display_separation)(void *handle, void *device, + int component, const char *component_name, + unsigned short c, unsigned short m, + unsigned short y, unsigned short k); +}; + +/* This is the V1 structure, before separation format was added */ +struct display_callback_v1_s { + int size; + int version_major; + int version_minor; + int (*display_open)(void *handle, void *device); + int (*display_preclose)(void *handle, void *device); + int (*display_close)(void *handle, void *device); + int (*display_presize)(void *handle, void *device, + int width, int height, int raster, unsigned int format); + int (*display_size)(void *handle, void *device, int width, int height, + int raster, unsigned int format, unsigned char *pimage); + int (*display_sync)(void *handle, void *device); + int (*display_page)(void *handle, void *device, int copies, int flush); + int (*display_update)(void *handle, void *device, int x, int y, + int w, int h); + void *(*display_memalloc)(void *handle, void *device, unsigned long size); + int (*display_memfree)(void *handle, void *device, void *mem); +}; + +#define DISPLAY_CALLBACK_V1_SIZEOF sizeof(struct display_callback_v1_s) + +#endif /* gdevdsp_INCLUDED */ diff --git a/generators/spectre/libspectre/ghostscript/iapi.h b/generators/spectre/libspectre/ghostscript/iapi.h new file mode 100644 index 000000000..a82aad3aa --- /dev/null +++ b/generators/spectre/libspectre/ghostscript/iapi.h @@ -0,0 +1,300 @@ +/* Copyright (C) 2001-2006 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 that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ + +/* $Id$ */ + +/* + * Public API for Ghostscript interpreter + * for use both as DLL and for static linking. + * + * Should work for Windows, OS/2, Linux, Mac. + * + * DLL exported functions should be as similar as possible to imain.c + * You will need to include "ierrors.h". + * + * Current problems: + * 1. Ghostscript does not support multiple instances. + * 2. Global variables in gs_main_instance_default() + * and gsapi_instance_counter + */ + +/* Exported functions may need different prefix + * GSDLLEXPORT marks functions as exported + * GSDLLAPI is the calling convention used on functions exported + * by Ghostscript + * GSDLLCALL is used on callback functions called by Ghostscript + * When you include this header file in the caller, you may + * need to change the definitions by defining these + * before including this header file. + * Make sure you get the calling convention correct, otherwise your + * program will crash either during callbacks or soon after returning + * due to stack corruption. + */ + +#ifndef iapi_INCLUDED +# define iapi_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_WINDOWS_) || defined(__WINDOWS__) +# ifndef _Windows +# define _Windows +# endif +#endif + +#ifdef _Windows +# ifndef GSDLLEXPORT +# define GSDLLEXPORT __declspec(dllexport) +# endif +# ifndef GSDLLAPI +# define GSDLLAPI __stdcall +# endif +# ifndef GSDLLCALL +# define GSDLLCALL __stdcall +# endif +#endif /* _Windows */ + +#if defined(OS2) && defined(__IBMC__) +# ifndef GSDLLAPI +# define GSDLLAPI _System +# endif +# ifndef GSDLLCALL +# define GSDLLCALL _System +# endif +#endif /* OS2 && __IBMC */ + +#ifdef __MACOS__ +# pragma export on +#endif + +#ifndef GSDLLEXPORT +# define GSDLLEXPORT +#endif +#ifndef GSDLLAPI +# define GSDLLAPI +#endif +#ifndef GSDLLCALL +# define GSDLLCALL +#endif + +#if defined(__IBMC__) +# define GSDLLAPIPTR * GSDLLAPI +# define GSDLLCALLPTR * GSDLLCALL +#else +# define GSDLLAPIPTR GSDLLAPI * +# define GSDLLCALLPTR GSDLLCALL * +#endif + +#ifndef display_callback_DEFINED +# define display_callback_DEFINED +typedef struct display_callback_s display_callback; +#endif + +typedef struct gsapi_revision_s { + const char *product; + const char *copyright; + long revision; + long revisiondate; +} gsapi_revision_t; + + +/* Get version numbers and strings. + * This is safe to call at any time. + * You should call this first to make sure that the correct version + * of the Ghostscript is being used. + * pr is a pointer to a revision structure. + * len is the size of this structure in bytes. + * Returns 0 if OK, or if len too small (additional parameters + * have been added to the structure) it will return the required + * size of the structure. + */ +GSDLLEXPORT int GSDLLAPI +gsapi_revision(gsapi_revision_t *pr, int len); + +/* + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + * Ghostscript supports only one instance. + * The current implementation uses a global static instance + * counter to make sure that only a single instance is used. + * If you try to create two instances, the second attempt + * will return < 0 and set pinstance to NULL. + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + */ +/* Create a new instance of Ghostscript. + * This instance is passed to most other API functions. + * The caller_handle will be provided to callback functions. + */ + +GSDLLEXPORT int GSDLLAPI +gsapi_new_instance(void **pinstance, void *caller_handle); + +/* + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + * Ghostscript supports only one instance. + * The current implementation uses a global static instance + * counter to make sure that only a single instance is used. + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + */ +/* Destroy an instance of Ghostscript + * Before you call this, Ghostscript must have finished. + * If Ghostscript has been initialised, you must call gsapi_exit() + * before gsapi_delete_instance. + */ +GSDLLEXPORT void GSDLLAPI +gsapi_delete_instance(void *instance); + +/* Set the callback functions for stdio + * The stdin callback function should return the number of + * characters read, 0 for EOF, or -1 for error. + * The stdout and stderr callback functions should return + * the number of characters written. + * If a callback address is NULL, the real stdio will be used. + */ +GSDLLEXPORT int GSDLLAPI +gsapi_set_stdio(void *instance, + int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), + int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), + int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); + +/* Set the callback function for polling. + * This is used for handling window events or cooperative + * multitasking. This function will only be called if + * Ghostscript was compiled with CHECK_INTERRUPTS + * as described in gpcheck.h. + * The polling function should return 0 if all is well, + * and negative if it wants ghostscript to abort. + * The polling function must be fast. + */ +GSDLLEXPORT int GSDLLAPI gsapi_set_poll(void *instance, + int (GSDLLCALLPTR poll_fn)(void *caller_handle)); + +/* Set the display device callback structure. + * If the display device is used, this must be called + * after gsapi_new_instance() and before gsapi_init_with_args(). + * See gdevdisp.h for more details. + */ +GSDLLEXPORT int GSDLLAPI gsapi_set_display_callback( + void *instance, display_callback *callback); + + +/* Initialise the interpreter. + * This calls gs_main_init_with_args() in imainarg.c + * 1. If quit or EOF occur during gsapi_init_with_args(), + * the return value will be e_Quit. This is not an error. + * You must call gsapi_exit() and must not call any other + * gsapi_XXX functions. + * 2. If usage info should be displayed, the return value will be e_Info + * which is not an error. Do not call gsapi_exit(). + * 3. Under normal conditions this returns 0. You would then + * call one or more gsapi_run_*() functions and then finish + * with gsapi_exit(). + */ +GSDLLEXPORT int GSDLLAPI gsapi_init_with_args(void *instance, + int argc, char **argv); + +/* + * The gsapi_run_* functions are like gs_main_run_* except + * that the error_object is omitted. + * If these functions return <= -100, either quit or a fatal + * error has occured. You then call gsapi_exit() next. + * The only exception is gsapi_run_string_continue() + * which will return e_NeedInput if all is well. + */ + +GSDLLEXPORT int GSDLLAPI +gsapi_run_string_begin(void *instance, + int user_errors, int *pexit_code); + +GSDLLEXPORT int GSDLLAPI +gsapi_run_string_continue(void *instance, + const char *str, unsigned int length, int user_errors, int *pexit_code); + +GSDLLEXPORT int GSDLLAPI +gsapi_run_string_end(void *instance, + int user_errors, int *pexit_code); + +GSDLLEXPORT int GSDLLAPI +gsapi_run_string_with_length(void *instance, + const char *str, unsigned int length, int user_errors, int *pexit_code); + +GSDLLEXPORT int GSDLLAPI +gsapi_run_string(void *instance, + const char *str, int user_errors, int *pexit_code); + +GSDLLEXPORT int GSDLLAPI +gsapi_run_file(void *instance, + const char *file_name, int user_errors, int *pexit_code); + + +/* Exit the interpreter. + * This must be called on shutdown if gsapi_init_with_args() + * has been called, and just before gsapi_delete_instance(). + */ +GSDLLEXPORT int GSDLLAPI +gsapi_exit(void *instance); + +/* Visual Tracer */ +/* This function is only for debug purpose clients */ +struct vd_trace_interface_s; +GSDLLEXPORT void GSDLLAPI +gsapi_set_visual_tracer(struct vd_trace_interface_s *I); + + +/* function prototypes */ +typedef int (GSDLLAPIPTR PFN_gsapi_revision)( + gsapi_revision_t *pr, int len); +typedef int (GSDLLAPIPTR PFN_gsapi_new_instance)( + void **pinstance, void *caller_handle); +typedef void (GSDLLAPIPTR PFN_gsapi_delete_instance)( + void *instance); +typedef int (GSDLLAPIPTR PFN_gsapi_set_stdio)(void *instance, + int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len), + int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len), + int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len)); +typedef int (GSDLLAPIPTR PFN_gsapi_set_poll)(void *instance, + int(GSDLLCALLPTR poll_fn)(void *caller_handle)); +typedef int (GSDLLAPIPTR PFN_gsapi_set_display_callback)( + void *instance, display_callback *callback); +typedef int (GSDLLAPIPTR PFN_gsapi_init_with_args)( + void *instance, int argc, char **argv); +typedef int (GSDLLAPIPTR PFN_gsapi_run_string_begin)( + void *instance, int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_run_string_continue)( + void *instance, const char *str, unsigned int length, + int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_run_string_end)( + void *instance, int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_run_string_with_length)( + void *instance, const char *str, unsigned int length, + int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_run_string)( + void *instance, const char *str, + int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_run_file)(void *instance, + const char *file_name, int user_errors, int *pexit_code); +typedef int (GSDLLAPIPTR PFN_gsapi_exit)(void *instance); +typedef void (GSDLLAPIPTR PFN_gsapi_set_visual_tracer) + (struct vd_trace_interface_s *I); + + +#ifdef __MACOS__ +#pragma export off +#endif + +#ifdef __cplusplus +} /* extern 'C' protection */ +#endif + +#endif /* iapi_INCLUDED */ diff --git a/generators/spectre/libspectre/ghostscript/ierrors.h b/generators/spectre/libspectre/ghostscript/ierrors.h new file mode 100644 index 000000000..083028b8d --- /dev/null +++ b/generators/spectre/libspectre/ghostscript/ierrors.h @@ -0,0 +1,153 @@ +/* Copyright (C) 2001-2006 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 that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ + +/* $Id$ */ +/* Definition of error codes */ + +#ifndef ierrors_INCLUDED +# define ierrors_INCLUDED + +/* + * DO NOT USE THIS FILE IN THE GRAPHICS LIBRARY. + * THIS FILE IS PART OF THE POSTSCRIPT INTERPRETER. + * USE gserrors.h IN THE LIBRARY. + */ + +/* + * A procedure that may return an error always returns + * a non-negative value (zero, unless otherwise noted) for success, + * or negative for failure. + * We use ints rather than an enum to avoid a lot of casting. + */ + +/* Define the error name table */ +extern const char *const gs_error_names[]; + + /* ------ PostScript Level 1 errors ------ */ + +#define e_unknownerror (-1) /* unknown error */ +#define e_dictfull (-2) +#define e_dictstackoverflow (-3) +#define e_dictstackunderflow (-4) +#define e_execstackoverflow (-5) +#define e_interrupt (-6) +#define e_invalidaccess (-7) +#define e_invalidexit (-8) +#define e_invalidfileaccess (-9) +#define e_invalidfont (-10) +#define e_invalidrestore (-11) +#define e_ioerror (-12) +#define e_limitcheck (-13) +#define e_nocurrentpoint (-14) +#define e_rangecheck (-15) +#define e_stackoverflow (-16) +#define e_stackunderflow (-17) +#define e_syntaxerror (-18) +#define e_timeout (-19) +#define e_typecheck (-20) +#define e_undefined (-21) +#define e_undefinedfilename (-22) +#define e_undefinedresult (-23) +#define e_unmatchedmark (-24) +#define e_VMerror (-25) /* must be the last Level 1 error */ + +#define LEVEL1_ERROR_NAMES\ + "unknownerror", "dictfull", "dictstackoverflow", "dictstackunderflow",\ + "execstackoverflow", "interrupt", "invalidaccess", "invalidexit",\ + "invalidfileaccess", "invalidfont", "invalidrestore", "ioerror",\ + "limitcheck", "nocurrentpoint", "rangecheck", "stackoverflow",\ + "stackunderflow", "syntaxerror", "timeout", "typecheck", "undefined",\ + "undefinedfilename", "undefinedresult", "unmatchedmark", "VMerror" + + /* ------ Additional Level 2 errors (also in DPS) ------ */ + +#define e_configurationerror (-26) +#define e_undefinedresource (-27) +#define e_unregistered (-28) + +#define LEVEL2_ERROR_NAMES\ + "configurationerror", "undefinedresource", "unregistered" + + /* ------ Additional DPS errors ------ */ + +#define e_invalidcontext (-29) +/* invalidid is for the NeXT DPS extension. */ +#define e_invalidid (-30) + +#define DPS_ERROR_NAMES\ + "invalidcontext", "invalidid" + +#define ERROR_NAMES\ + LEVEL1_ERROR_NAMES, LEVEL2_ERROR_NAMES, DPS_ERROR_NAMES + + /* ------ Pseudo-errors used internally ------ */ + +/* + * Internal code for a fatal error. + * gs_interpret also returns this for a .quit with a positive exit code. + */ +#define e_Fatal (-100) + +/* + * Internal code for the .quit operator. + * The real quit code is an integer on the operand stack. + * gs_interpret returns this only for a .quit with a zero exit code. + */ +#define e_Quit (-101) + +/* + * Internal code for a normal exit from the interpreter. + * Do not use outside of interp.c. + */ +#define e_InterpreterExit (-102) + +/* + * Internal code that indicates that a procedure has been stored in the + * remap_proc of the graphics state, and should be called before retrying + * the current token. This is used for color remapping involving a call + * back into the interpreter -- inelegant, but effective. + */ +#define e_RemapColor (-103) + +/* + * Internal code to indicate we have underflowed the top block + * of the e-stack. + */ +#define e_ExecStackUnderflow (-104) + +/* + * Internal code for the vmreclaim operator with a positive operand. + * We need to handle this as an error because otherwise the interpreter + * won't reload enough of its state when the operator returns. + */ +#define e_VMreclaim (-105) + +/* + * Internal code for requesting more input from run_string. + */ +#define e_NeedInput (-106) + +/* + * Internal code for a normal exit when usage info is displayed. + * This allows Window versions of Ghostscript to pause until + * the message can be read. + */ +#define e_Info (-110) + +/* + * Define which error codes require re-executing the current object. + */ +#define ERROR_IS_INTERRUPT(ecode)\ + ((ecode) == e_interrupt || (ecode) == e_timeout) + +#endif /* ierrors_INCLUDED */