svn path=/trunk/KDE/kdegraphics/okular/; revision=732863remotes/origin/KDE/4.0
parent
402c93e622
commit
360e7cd95b
3 changed files with 719 additions and 0 deletions
@ -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 */ |
||||
@ -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 */ |
||||
@ -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 */ |
||||
Loading…
Reference in new issue