📄 dscparse.h
字号:
float yy; /* float ty; */ /* float ty; */} CDSCCTM;typedef struct CDSCPAGE_S { int ordinal; const char *label; unsigned long begin; unsigned long end; unsigned int orientation; const CDSCMEDIA *media; CDSCBBOX *bbox; /* PageBoundingBox, also used by GSview for PDF CropBox */ CDSCCTM *viewing_orientation;} CDSCPAGE;/* binary DOS EPS header */typedef struct CDSCDOSEPS_S { GSDWORD ps_begin; GSDWORD ps_length; GSDWORD wmf_begin; GSDWORD wmf_length; GSDWORD tiff_begin; GSDWORD tiff_length; GSWORD checksum;} CDSCDOSEPS;/* rather than allocated every string with malloc, we allocate * chunks of 4k and place the (usually) short strings in these * chunks. */typedef struct CDSCSTRING_S CDSCSTRING;struct CDSCSTRING_S { unsigned int index; unsigned int length; char *data; CDSCSTRING *next;};/* DSC error reporting */typedef enum { CDSC_MESSAGE_BBOX = 0, CDSC_MESSAGE_EARLY_TRAILER = 1, CDSC_MESSAGE_EARLY_EOF = 2, CDSC_MESSAGE_PAGE_IN_TRAILER = 3, CDSC_MESSAGE_PAGE_ORDINAL = 4, CDSC_MESSAGE_PAGES_WRONG = 5, CDSC_MESSAGE_EPS_NO_BBOX = 6, CDSC_MESSAGE_EPS_PAGES = 7, CDSC_MESSAGE_NO_MEDIA = 8, CDSC_MESSAGE_ATEND = 9, CDSC_MESSAGE_DUP_COMMENT = 10, CDSC_MESSAGE_DUP_TRAILER = 11, CDSC_MESSAGE_BEGIN_END = 12, CDSC_MESSAGE_BAD_SECTION = 13, CDSC_MESSAGE_LONG_LINE = 14, CDSC_MESSAGE_INCORRECT_USAGE = 15} CDSC_MESSAGE_ERROR;/* severity */typedef enum { CDSC_ERROR_INFORM = 0, /* Not an error */ CDSC_ERROR_WARN = 1, /* Not a DSC error itself, */ CDSC_ERROR_ERROR = 2 /* DSC error */} CDSC_MESSAGE_SEVERITY;/* response */typedef enum { CDSC_RESPONSE_OK = 0, CDSC_RESPONSE_CANCEL = 1, CDSC_RESPONSE_IGNORE_ALL = 2} CDSC_RESPONSE;extern const char * const dsc_message[];typedef struct CDSC_S CDSC;struct CDSC_S { /* public data */ GSBOOL dsc; /* TRUE if DSC comments found */ GSBOOL ctrld; /* TRUE if has CTRLD at start of stream */ GSBOOL pjl; /* TRUE if has HP PJL at start of stream */ GSBOOL epsf; /* TRUE if EPSF */ GSBOOL pdf; /* TRUE if Portable Document Format */ unsigned int preview; /* enum CDSC_PREVIEW_TYPE */ char *dsc_version; /* first line of file */ unsigned int language_level; unsigned int document_data; /* Clean7Bit, Clean8Bit, Binary */ /* enum CDSC_DOCUMENT_DATA */ /* DSC sections */ unsigned long begincomments; unsigned long endcomments; unsigned long beginpreview; unsigned long endpreview; unsigned long begindefaults; unsigned long enddefaults; unsigned long beginprolog; unsigned long endprolog; unsigned long beginsetup; unsigned long endsetup; unsigned long begintrailer; unsigned long endtrailer; CDSCPAGE *page; unsigned int page_count; /* number of %%Page: pages in document */ unsigned int page_pages; /* number of pages in document from %%Pages: */ unsigned int page_order; /* enum CDSC_PAGE_ORDER */ unsigned int page_orientation; /* the default page orientation */ /* enum CDSC_ORIENTATION */ CDSCCTM *viewing_orientation; unsigned int media_count; /* number of media items */ CDSCMEDIA **media; /* the array of media */ const CDSCMEDIA *page_media;/* the default page media */ CDSCBBOX *bbox; /* the document bounding box */ CDSCBBOX *page_bbox; /* the default page bounding box */ CDSCDOSEPS *doseps; /* DOS binary header */ char *dsc_title; char *dsc_creator; char *dsc_date; char *dsc_for; // added 02 August 2005 char *dsc_copyright; unsigned int max_error; /* highest error number that will be reported */ const int *severity; /* array of severity values, one per error */ /* private data */ void *caller_data; /* pointer to be provided when calling */ /* error and debug callbacks */ int id; /* last DSC comment found */ int scan_section; /* section currently being scanned */ /* enum CDSC_SECTION */ unsigned long doseps_end; /* ps_begin+ps_length, otherwise 0 */ unsigned int page_chunk_length; /* number of pages allocated */ unsigned long file_length; /* length of document */ /* If provided we try to recognise %%Trailer and %%EOF */ /* incorrectly embedded inside document. */ /* Can be left set to default value of 0 */ int skip_document; /* recursion level of %%BeginDocument: */ int skip_bytes; /* #bytes to ignore from BeginData: */ /* or DOSEPS preview section */ int skip_lines; /* #lines to ignore from BeginData: */ GSBOOL skip_pjl; /* TRUE if skip PJL until first PS comment */ int begin_font_count; /* recursion level of %%BeginFont */ int begin_feature_count; /* recursion level of %%BeginFeature */ int begin_resource_count; /* recursion level of %%BeginResource */ int begin_procset_count; /* recursion level of %%BeginProcSet */ /* buffer for input */ char data[CDSC_DATA_LENGTH];/* start of buffer */ unsigned int data_length; /* length of data in buffer */ unsigned int data_index; /* offset to next char in buffer */ unsigned long data_offset; /* offset from start of document */ /* to byte in data[0] */ GSBOOL eof; /* TRUE if there is no more data */ /* information about DSC line */ char *line; /* pointer to last read DSC line */ /* not null terminated */ unsigned int line_length; /* number of characters in line */ GSBOOL eol; /* TRUE if dsc_line contains EOL */ GSBOOL last_cr; /* TRUE if last line ended in \r */ /* check next time for \n */ unsigned int line_count; /* line number */ GSBOOL long_line; /* TRUE if found a line longer than 255 characters */ char last_line[256]; /* previous DSC line, used for %%+ */ /* more efficient string storage (for short strings) than malloc */ CDSCSTRING *string_head; /* linked list head */ CDSCSTRING *string; /* current list item */ /* memory allocation routines */ void *(*memalloc)(P2(size_t size, void *closure_data)); void (*memfree)(P2(void *ptr, void *closure_data)); void *mem_closure_data; /* function for printing debug messages */ void (*debug_print_fn)(P2(void *caller_data, const char *str)); /* function for reporting errors in DSC comments */ int (*dsc_error_fn)(P5(void *caller_data, CDSC *dsc, unsigned int explanation, const char *line, unsigned int line_len)); /* public data */ /* Added 2001-10-01 */ CDSCFBBOX *hires_bbox; /* the hires document bounding box */ CDSCFBBOX *crop_box; /* the size of the trimmed page */};/* Public functions *//* Create and initialise DSC parser */CDSC *dsc_init(P1(void *caller_data));CDSC *dsc_init_with_alloc(P4( void *caller_data, void *(*memalloc)(size_t size, void *closure_data), void (*memfree)(void *ptr, void *closure_data), void *closure_data));/* Free the DSC parser */void dsc_free(P1(CDSC *dsc));/* Tell DSC parser how long document will be, to allow ignoring * of early %%Trailer and %%EOF. This is optional. */void dsc_set_length(P2(CDSC *dsc, unsigned long len));/* Process a buffer containing DSC comments and PostScript */int dsc_scan_data(P3(CDSC *dsc, const char *data, int len));/* All data has been processed, fixup any DSC errors */int dsc_fixup(P1(CDSC *dsc));/* Install error query function */void dsc_set_error_function(P2(CDSC *dsc, int (*dsc_error_fn)(P5(void *caller_data, CDSC *dsc, unsigned int explanation, const char *line, unsigned int line_len))));/* Install print function for debug messages */void dsc_set_debug_function(P2(CDSC *dsc, void (*debug_fn)(P2(void *caller_data, const char *str))));/* Print a message to debug output, if provided */void dsc_debug_print(P2(CDSC *dsc, const char *str));/* should be internal only functions, but made available to * GSview for handling PDF */int dsc_add_page(P3(CDSC *dsc, int ordinal, char *label));int dsc_add_media(P2(CDSC *dsc, CDSCMEDIA *media));int dsc_set_page_bbox(P6(CDSC *dsc, unsigned int page_number, int llx, int lly, int urx, int ury));#endif// vim:sw=4:sts=4:ts=8:noet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -