Lines Matching refs:dsc

69 #define DSC_START(dsc)  ((dsc)->data_offset + (dsc)->data_index - (dsc)->line_length)  argument
70 #define DSC_END(dsc) ((dsc)->data_offset + (dsc)->data_index) argument
83 dsc_private void * dsc_memalloc(CDSC *dsc, size_t size);
84 dsc_private void dsc_memfree(CDSC*dsc, void *ptr);
85 dsc_private CDSC * dsc_init2(CDSC *dsc);
86 dsc_private void dsc_reset(CDSC *dsc);
88 dsc_private int dsc_read_line(CDSC *dsc);
89 dsc_private int dsc_read_doseps(CDSC *dsc);
90 dsc_private char * dsc_alloc_string(CDSC *dsc, const char *str, int len);
91 dsc_private char * dsc_add_line(CDSC *dsc, const char *line, unsigned int len);
99 dsc_private void dsc_unknown(CDSC *dsc);
101 dsc_private int dsc_parse_pages(CDSC *dsc);
102 dsc_private int dsc_parse_bounding_box(CDSC *dsc, CDSCBBOX** pbbox, int offset);
103 dsc_private int dsc_parse_float_bounding_box(CDSC *dsc, CDSCFBBOX** pfbbox, int offset);
104 dsc_private int dsc_parse_orientation(CDSC *dsc, unsigned int *porientation,
106 dsc_private int dsc_parse_order(CDSC *dsc);
107 dsc_private int dsc_parse_media(CDSC *dsc, const CDSCMEDIA **page_media);
108 dsc_private int dsc_parse_document_media(CDSC *dsc);
109 dsc_private int dsc_parse_viewing_orientation(CDSC *dsc, CDSCCTM **pctm);
110 dsc_private int dsc_parse_page(CDSC *dsc);
111 dsc_private void dsc_save_line(CDSC *dsc);
112 dsc_private int dsc_scan_type(CDSC *dsc);
113 dsc_private int dsc_scan_comments(CDSC *dsc);
114 dsc_private int dsc_scan_preview(CDSC *dsc);
115 dsc_private int dsc_scan_defaults(CDSC *dsc);
116 dsc_private int dsc_scan_prolog(CDSC *dsc);
117 dsc_private int dsc_scan_setup(CDSC *dsc);
118 dsc_private int dsc_scan_page(CDSC *dsc);
119 dsc_private int dsc_scan_trailer(CDSC *dsc);
120 dsc_private int dsc_error(CDSC *dsc, unsigned int explanation,
122 dsc_private int dsc_dcs2_fixup(CDSC *dsc);
123 dsc_private int dsc_parse_platefile(CDSC *dsc);
124 dsc_private int dsc_parse_dcs1plate(CDSC *dsc);
125 dsc_private CDSCCOLOUR * dsc_find_colour(CDSC *dsc, const char *colourname);
126 dsc_private int dsc_parse_process_colours(CDSC *dsc);
127 dsc_private int dsc_parse_custom_colours(CDSC *dsc);
128 dsc_private int dsc_parse_cmyk_custom_colour(CDSC *dsc);
129 dsc_private int dsc_parse_rgb_custom_colour(CDSC *dsc);
208 CDSC *dsc = (CDSC *)malloc(sizeof(CDSC)); in dsc_init() local
209 if (dsc == NULL) in dsc_init()
211 memset(dsc, 0, sizeof(CDSC)); in dsc_init()
212 dsc->caller_data = caller_data; in dsc_init()
213 dsc->ref_count = 0; in dsc_init()
214 dsc_ref(dsc); in dsc_init()
216 return dsc_init2(dsc); in dsc_init()
227 CDSC *dsc = (CDSC *)memalloc(sizeof(CDSC), closure_data); in dsc_init_with_alloc() local
228 if (dsc == NULL) in dsc_init_with_alloc()
230 memset(dsc, 0, sizeof(CDSC)); in dsc_init_with_alloc()
231 dsc->caller_data = caller_data; in dsc_init_with_alloc()
233 dsc->memalloc = memalloc; in dsc_init_with_alloc()
234 dsc->memfree = memfree; in dsc_init_with_alloc()
235 dsc->mem_closure_data = closure_data; in dsc_init_with_alloc()
236 dsc->ref_count = 0; in dsc_init_with_alloc()
237 dsc_ref(dsc); in dsc_init_with_alloc()
239 return dsc_init2(dsc); in dsc_init_with_alloc()
246 dsc_free(CDSC *dsc) in dsc_free() argument
248 if (dsc == NULL) in dsc_free()
250 dsc_reset(dsc); in dsc_free()
251 dsc_memfree(dsc, dsc); in dsc_free()
262 dsc_ref(CDSC *dsc) in dsc_ref() argument
264 return ++(dsc->ref_count); in dsc_ref()
268 dsc_unref(CDSC *dsc) in dsc_unref() argument
270 if (dsc->ref_count <= 0) in dsc_unref()
272 dsc->ref_count--; in dsc_unref()
273 if (dsc->ref_count == 0) { in dsc_unref()
274 dsc_free(dsc); in dsc_unref()
277 return dsc->ref_count; in dsc_unref()
285 dsc_set_length(CDSC *dsc, DSC_OFFSET len) in dsc_set_length() argument
287 dsc->file_length = len; in dsc_set_length()
298 dsc_scan_data(CDSC *dsc, const char *data, int length) in dsc_scan_data() argument
303 if (dsc == NULL) in dsc_scan_data()
306 if (dsc->id == CDSC_NOTDSC) in dsc_scan_data()
308 dsc->id = CDSC_OK; in dsc_scan_data()
309 if (dsc->eof) in dsc_scan_data()
314 dsc->eof = TRUE; in dsc_scan_data()
318 if (dsc->id == CDSC_NOTDSC) in dsc_scan_data()
323 if (dsc->data_length > CDSC_DATA_LENGTH/2) { in dsc_scan_data()
324 memmove(dsc->data, dsc->data + dsc->data_index, in dsc_scan_data()
325 dsc->data_length - dsc->data_index); in dsc_scan_data()
326 dsc->data_offset += dsc->data_index; in dsc_scan_data()
327 dsc->data_length -= dsc->data_index; in dsc_scan_data()
328 dsc->data_index = 0; in dsc_scan_data()
331 bytes_read = min(length, (int)(CDSC_DATA_LENGTH - dsc->data_length)); in dsc_scan_data()
332 memcpy(dsc->data + dsc->data_length, data, bytes_read); in dsc_scan_data()
333 dsc->data_length += bytes_read; in dsc_scan_data()
337 if (dsc->scan_section == scan_none) { in dsc_scan_data()
338 code = dsc_scan_type(dsc); in dsc_scan_data()
344 dsc->id = code; in dsc_scan_data()
348 dsc->id = CDSC_NOTDSC; in dsc_scan_data()
352 while ((code = dsc_read_line(dsc)) > 0) { in dsc_scan_data()
353 if (dsc->id == CDSC_NOTDSC) in dsc_scan_data()
355 if (dsc->file_length && in dsc_scan_data()
356 (dsc->data_offset + dsc->data_index > dsc->file_length)) { in dsc_scan_data()
360 if (dsc->doseps_end && in dsc_scan_data()
361 (dsc->data_offset + dsc->data_index > dsc->doseps_end)) { in dsc_scan_data()
365 if (dsc->eof) in dsc_scan_data()
367 if (dsc->skip_document) in dsc_scan_data()
369 if (dsc->skip_lines) in dsc_scan_data()
371 if (IS_DSC(dsc->line, "%%BeginData:")) in dsc_scan_data()
373 if (IS_DSC(dsc->line, "%%BeginBinary:")) in dsc_scan_data()
375 if (IS_DSC(dsc->line, "%%EndDocument")) in dsc_scan_data()
377 if (IS_DSC(dsc->line, "%%EndData")) in dsc_scan_data()
379 if (IS_DSC(dsc->line, "%%EndBinary")) in dsc_scan_data()
383 switch (dsc->scan_section) { in dsc_scan_data()
385 code = dsc_scan_comments(dsc); in dsc_scan_data()
389 code = dsc_scan_preview(dsc); in dsc_scan_data()
393 code = dsc_scan_defaults(dsc); in dsc_scan_data()
397 code = dsc_scan_prolog(dsc); in dsc_scan_data()
401 code = dsc_scan_setup(dsc); in dsc_scan_data()
405 code = dsc_scan_page(dsc); in dsc_scan_data()
409 code = dsc_scan_trailer(dsc); in dsc_scan_data()
427 dsc->id = CDSC_NOTDSC; in dsc_scan_data()
433 return (code < 0) ? code : dsc->id; in dsc_scan_data()
438 dsc_fixup(CDSC *dsc) in dsc_fixup() argument
444 if (dsc->id == CDSC_NOTDSC) in dsc_fixup()
448 dsc_scan_data(dsc, NULL, 0); in dsc_fixup()
452 if (dsc->eof && in dsc_fixup()
453 (dsc->skip_lines || dsc->skip_bytes || dsc->skip_document)) { in dsc_fixup()
454 switch (dsc->scan_section) { in dsc_fixup()
456 dsc->endcomments = DSC_END(dsc); in dsc_fixup()
459 dsc->endpreview = DSC_END(dsc); in dsc_fixup()
462 dsc->enddefaults = DSC_END(dsc); in dsc_fixup()
465 dsc->endprolog = DSC_END(dsc); in dsc_fixup()
468 dsc->endsetup = DSC_END(dsc); in dsc_fixup()
471 if (dsc->page_count) in dsc_fixup()
472 dsc->page[dsc->page_count-1].end = DSC_END(dsc); in dsc_fixup()
476 dsc->endtrailer = DSC_END(dsc); in dsc_fixup()
482 if (dsc->page_count && (dsc->page[0].begin != dsc->endsetup) in dsc_fixup()
483 && (dsc->endsetup != dsc->beginsetup)) { in dsc_fixup()
484 dsc->endsetup = dsc->page[0].begin; in dsc_fixup()
485 dsc_debug_print(dsc, "Warning: code included between setup and first page\n"); in dsc_fixup()
490 if (dsc->page_count && (dsc->begintrailer != 0) && in dsc_fixup()
491 (dsc->page[dsc->page_count-1].end != dsc->begintrailer)) { in dsc_fixup()
492 dsc_debug_print(dsc, "Ignoring earlier misplaced trailer\n"); in dsc_fixup()
493 dsc_debug_print(dsc, "and extending last page to start of trailer\n"); in dsc_fixup()
494 dsc->page[dsc->page_count-1].end = dsc->begintrailer; in dsc_fixup()
502 last = &dsc->endcomments; in dsc_fixup()
503 dsc_section_join(dsc->beginpreview, &dsc->endpreview, &last); in dsc_fixup()
504 dsc_section_join(dsc->begindefaults, &dsc->enddefaults, &last); in dsc_fixup()
505 dsc_section_join(dsc->beginprolog, &dsc->endprolog, &last); in dsc_fixup()
506 dsc_section_join(dsc->beginsetup, &dsc->endsetup, &last); in dsc_fixup()
507 for (i=0; i<dsc->page_count; i++) in dsc_fixup()
508 dsc_section_join(dsc->page[i].begin, &dsc->page[i].end, &last); in dsc_fixup()
509 if (dsc->begintrailer) in dsc_fixup()
510 *last = dsc->begintrailer; in dsc_fixup()
512 if ((dsc->page_pages == 0) && (dsc->page_count == 1)) { in dsc_fixup()
515 dsc->page_pages = dsc->page_count; in dsc_fixup()
519 if ((dsc->page_count != dsc->page_pages)) { in dsc_fixup()
520 int rc = dsc_error(dsc, CDSC_MESSAGE_PAGES_WRONG, NULL, 0); in dsc_fixup()
524 dsc->page_pages = dsc->page_count; in dsc_fixup()
533 if (dsc->epsf && (dsc->bbox == (CDSCBBOX *)NULL)) { in dsc_fixup()
535 int rc = dsc_error(dsc, CDSC_MESSAGE_EPS_NO_BBOX, NULL, 0); in dsc_fixup()
542 dsc->epsf = FALSE; in dsc_fixup()
548 if (dsc->epsf && ((dsc->page_count > 1) || (dsc->page_pages > 1))) { in dsc_fixup()
549 int rc = dsc_error(dsc, CDSC_MESSAGE_EPS_PAGES, NULL, 0); in dsc_fixup()
556 dsc->epsf = FALSE; in dsc_fixup()
564 dsc_dcs2_fixup(dsc); in dsc_fixup()
566 if ((dsc->media_count == 1) && (dsc->page_media == NULL)) { in dsc_fixup()
569 dsc->page_media = dsc->media[0]; in dsc_fixup()
572 if ((dsc->media_count != 0) && (dsc->page_media == NULL)) { in dsc_fixup()
573 int rc = dsc_error(dsc, CDSC_MESSAGE_NO_MEDIA, NULL, 0); in dsc_fixup()
577 dsc->page_media = dsc->media[0]; in dsc_fixup()
588 for (i=0; i<dsc->page_count; i++) { in dsc_fixup()
589 if (strlen(dsc->page[i].label) == 0) { in dsc_fixup()
591 if ((dsc->page[i].label = dsc_alloc_string(dsc, buf, (int)strlen(buf))) in dsc_fixup()
604 dsc_set_error_function(CDSC *dsc, in dsc_set_error_function() argument
605 int (*fn)(void *caller_data, CDSC *dsc, in dsc_set_error_function()
608 dsc->dsc_error_fn = fn; in dsc_set_error_function()
615 dsc_set_debug_function(CDSC *dsc, in dsc_set_debug_function() argument
618 dsc->debug_print_fn = debug_fn; in dsc_set_debug_function()
624 dsc_add_page(CDSC *dsc, int ordinal, char *label) in dsc_add_page() argument
626 dsc->page[dsc->page_count].ordinal = ordinal; in dsc_add_page()
627 dsc->page[dsc->page_count].label = in dsc_add_page()
628 dsc_alloc_string(dsc, label, (int)strlen(label)+1); in dsc_add_page()
629 dsc->page[dsc->page_count].begin = 0; in dsc_add_page()
630 dsc->page[dsc->page_count].end = 0; in dsc_add_page()
631 dsc->page[dsc->page_count].orientation = CDSC_ORIENT_UNKNOWN; in dsc_add_page()
632 dsc->page[dsc->page_count].media = NULL; in dsc_add_page()
633 dsc->page[dsc->page_count].bbox = NULL; in dsc_add_page()
634 dsc->page[dsc->page_count].viewing_orientation = NULL; in dsc_add_page()
635 dsc->page[dsc->page_count].crop_box = NULL; in dsc_add_page()
637 dsc->page_count++; in dsc_add_page()
638 if (dsc->page_count >= dsc->page_chunk_length) { in dsc_add_page()
639 CDSCPAGE *new_page = (CDSCPAGE *)dsc_memalloc(dsc, in dsc_add_page()
640 (CDSC_PAGE_CHUNK+dsc->page_count) * sizeof(CDSCPAGE)); in dsc_add_page()
643 memcpy(new_page, dsc->page, in dsc_add_page()
644 dsc->page_count * sizeof(CDSCPAGE)); in dsc_add_page()
645 dsc_memfree(dsc, dsc->page); in dsc_add_page()
646 dsc->page= new_page; in dsc_add_page()
647 dsc->page_chunk_length = CDSC_PAGE_CHUNK+dsc->page_count; in dsc_add_page()
655 dsc_add_media(CDSC *dsc, CDSCMEDIA *media) in dsc_add_media() argument
661 newmedia_array = (CDSCMEDIA **)dsc_memalloc(dsc, in dsc_add_media()
662 (dsc->media_count + 1) * sizeof(CDSCMEDIA *)); in dsc_add_media()
665 if (dsc->media != NULL) { in dsc_add_media()
666 memcpy(newmedia_array, dsc->media, in dsc_add_media()
667 dsc->media_count * sizeof(CDSCMEDIA *)); in dsc_add_media()
668 dsc_memfree(dsc, dsc->media); in dsc_add_media()
670 dsc->media = newmedia_array; in dsc_add_media()
673 newmedia = dsc->media[dsc->media_count] = in dsc_add_media()
674 (CDSCMEDIA *)dsc_memalloc(dsc, sizeof(CDSCMEDIA)); in dsc_add_media()
685 dsc->media_count++; in dsc_add_media()
688 newmedia->name = dsc_alloc_string(dsc, media->name, in dsc_add_media()
697 newmedia->colour = dsc_alloc_string(dsc, media->colour, in dsc_add_media()
703 newmedia->type = dsc_alloc_string(dsc, media->type, in dsc_add_media()
711 newmedia->mediabox = (CDSCBBOX *)dsc_memalloc(dsc, sizeof(CDSCBBOX)); in dsc_add_media()
722 dsc_set_page_bbox(CDSC *dsc, unsigned int page_number, in dsc_set_page_bbox() argument
726 if (page_number >= dsc->page_count) in dsc_set_page_bbox()
728 bbox = dsc->page[page_number].bbox; in dsc_set_page_bbox()
730 dsc->page[page_number].bbox = bbox = in dsc_set_page_bbox()
731 (CDSCBBOX *)dsc_memalloc(dsc, sizeof(CDSCBBOX)); in dsc_set_page_bbox()
747 dsc_memalloc(CDSC *dsc, size_t size) in dsc_memalloc() argument
749 if (dsc->memalloc) in dsc_memalloc()
750 return dsc->memalloc(size, dsc->mem_closure_data); in dsc_memalloc()
755 dsc_memfree(CDSC*dsc, void *ptr) in dsc_memfree() argument
757 if (dsc->memfree) in dsc_memfree()
758 dsc->memfree(ptr, dsc->mem_closure_data); in dsc_memfree()
765 dsc_init2(CDSC *dsc) in dsc_init2() argument
767 dsc_reset(dsc); in dsc_init2()
769 dsc->string_head = (CDSCSTRING *)dsc_memalloc(dsc, sizeof(CDSCSTRING)); in dsc_init2()
770 if (dsc->string_head == NULL) { in dsc_init2()
771 dsc_free(dsc); in dsc_init2()
774 dsc->string = dsc->string_head; in dsc_init2()
775 dsc->string->next = NULL; in dsc_init2()
776 dsc->string->data = (char *)dsc_memalloc(dsc, CDSC_STRING_CHUNK); in dsc_init2()
777 if (dsc->string->data == NULL) { in dsc_init2()
778 dsc_free(dsc); in dsc_init2()
781 dsc->string->index = 0; in dsc_init2()
782 dsc->string->length = CDSC_STRING_CHUNK; in dsc_init2()
784 dsc->page = (CDSCPAGE *)dsc_memalloc(dsc, CDSC_PAGE_CHUNK * sizeof(CDSCPAGE)); in dsc_init2()
785 if (dsc->page == NULL) { in dsc_init2()
786 dsc_free(dsc); in dsc_init2()
789 dsc->page_chunk_length = CDSC_PAGE_CHUNK; in dsc_init2()
790 dsc->page_count = 0; in dsc_init2()
792 dsc->line = NULL; in dsc_init2()
793 dsc->data_length = 0; in dsc_init2()
794 dsc->data_index = dsc->data_length; in dsc_init2()
796 return dsc; in dsc_init2()
801 dsc_reset(CDSC *dsc) in dsc_reset() argument
805 dsc->dsc = FALSE; in dsc_reset()
806 dsc->ctrld = FALSE; in dsc_reset()
807 dsc->pjl = FALSE; in dsc_reset()
808 dsc->epsf = FALSE; in dsc_reset()
809 dsc->pdf = FALSE; in dsc_reset()
810 dsc->epsf = FALSE; in dsc_reset()
811 dsc->preview = CDSC_NOPREVIEW; in dsc_reset()
812 dsc->dsc_version = NULL; /* stored in dsc->string */ in dsc_reset()
813 dsc->language_level = 0; in dsc_reset()
814 dsc->document_data = CDSC_DATA_UNKNOWN; in dsc_reset()
815 dsc->begincomments = 0; in dsc_reset()
816 dsc->endcomments = 0; in dsc_reset()
817 dsc->beginpreview = 0; in dsc_reset()
818 dsc->endpreview = 0; in dsc_reset()
819 dsc->begindefaults = 0; in dsc_reset()
820 dsc->enddefaults = 0; in dsc_reset()
821 dsc->beginprolog = 0; in dsc_reset()
822 dsc->endprolog = 0; in dsc_reset()
823 dsc->beginsetup = 0; in dsc_reset()
824 dsc->endsetup = 0; in dsc_reset()
825 dsc->begintrailer = 0; in dsc_reset()
826 dsc->endtrailer = 0; in dsc_reset()
828 for (i=0; i<dsc->page_count; i++) { in dsc_reset()
832 if (dsc->page[i].bbox) in dsc_reset()
833 dsc_memfree(dsc, dsc->page[i].bbox); in dsc_reset()
834 if (dsc->page[i].viewing_orientation) in dsc_reset()
835 dsc_memfree(dsc, dsc->page[i].viewing_orientation); in dsc_reset()
836 if (dsc->page[i].crop_box) in dsc_reset()
837 dsc_memfree(dsc, dsc->page[i].crop_box); in dsc_reset()
839 if (dsc->page) in dsc_reset()
840 dsc_memfree(dsc, dsc->page); in dsc_reset()
841 dsc->page = NULL; in dsc_reset()
843 dsc->page_count = 0; in dsc_reset()
844 dsc->page_pages = 0; in dsc_reset()
845 dsc->page_order = CDSC_ORDER_UNKNOWN; in dsc_reset()
846 dsc->page_orientation = CDSC_ORIENT_UNKNOWN; in dsc_reset()
847 if (dsc->viewing_orientation) in dsc_reset()
848 dsc_memfree(dsc, dsc->viewing_orientation); in dsc_reset()
849 dsc->viewing_orientation = NULL; in dsc_reset()
851 if (dsc->media) { in dsc_reset()
852 for (i=0; i<dsc->media_count; i++) { in dsc_reset()
853 if (dsc->media[i]) { in dsc_reset()
854 if (dsc->media[i]->mediabox) in dsc_reset()
855 dsc_memfree(dsc, dsc->media[i]->mediabox); in dsc_reset()
856 dsc_memfree(dsc, dsc->media[i]); in dsc_reset()
859 dsc_memfree(dsc, dsc->media); in dsc_reset()
861 dsc->media_count = 0; in dsc_reset()
862 dsc->media = NULL; in dsc_reset()
866 dsc->page_media = NULL; in dsc_reset()
868 if (dsc->bbox) in dsc_reset()
869 dsc_memfree(dsc, dsc->bbox); in dsc_reset()
870 dsc->bbox = NULL; in dsc_reset()
871 if (dsc->page_bbox) in dsc_reset()
872 dsc_memfree(dsc, dsc->page_bbox); in dsc_reset()
873 dsc->page_bbox = NULL; in dsc_reset()
874 if (dsc->doseps) in dsc_reset()
875 dsc_memfree(dsc, dsc->doseps); in dsc_reset()
876 dsc->doseps = NULL; in dsc_reset()
878 dsc->dsc_title = NULL; in dsc_reset()
879 dsc->dsc_creator = NULL; in dsc_reset()
880 dsc->dsc_date = NULL; in dsc_reset()
881 dsc->dsc_for = NULL; in dsc_reset()
884 dsc->max_error = DSC_MAX_ERROR; in dsc_reset()
885 dsc->severity = dsc_severity; in dsc_reset()
889 dsc->id = CDSC_OK; in dsc_reset()
890 dsc->scan_section = scan_none; in dsc_reset()
891 dsc->doseps_end = 0; in dsc_reset()
892 dsc->page_chunk_length = 0; in dsc_reset()
893 dsc->file_length = 0; in dsc_reset()
894 dsc->skip_document = 0; in dsc_reset()
895 dsc->skip_bytes = 0; in dsc_reset()
896 dsc->skip_lines = 0; in dsc_reset()
897 dsc->skip_pjl = 0; in dsc_reset()
898 dsc->begin_font_count = 0; in dsc_reset()
899 dsc->begin_feature_count = 0; in dsc_reset()
900 dsc->begin_resource_count = 0; in dsc_reset()
901 dsc->begin_procset_count = 0; in dsc_reset()
903 dsc->data_length = 0; in dsc_reset()
904 dsc->data_index = 0; in dsc_reset()
905 dsc->data_offset = 0; in dsc_reset()
907 dsc->eof = 0; in dsc_reset()
909 dsc->line = 0; in dsc_reset()
910 dsc->line_length = 0; in dsc_reset()
911 dsc->eol = 0; in dsc_reset()
912 dsc->last_cr = FALSE; in dsc_reset()
913 dsc->line_count = 1; in dsc_reset()
914 dsc->long_line = FALSE; in dsc_reset()
915 memset(dsc->last_line, 0, sizeof(dsc->last_line)); in dsc_reset()
917 dsc->string = dsc->string_head; in dsc_reset()
918 while (dsc->string != (CDSCSTRING *)NULL) { in dsc_reset()
919 if (dsc->string->data) in dsc_reset()
920 dsc_memfree(dsc, dsc->string->data); in dsc_reset()
921 dsc->string_head = dsc->string; in dsc_reset()
922 dsc->string = dsc->string->next; in dsc_reset()
923 dsc_memfree(dsc, dsc->string_head); in dsc_reset()
925 dsc->string_head = NULL; in dsc_reset()
926 dsc->string = NULL; in dsc_reset()
931 if (dsc->hires_bbox) in dsc_reset()
932 dsc_memfree(dsc, dsc->hires_bbox); in dsc_reset()
933 dsc->hires_bbox = NULL; in dsc_reset()
934 if (dsc->crop_box) in dsc_reset()
935 dsc_memfree(dsc, dsc->crop_box); in dsc_reset()
936 dsc->crop_box = NULL; in dsc_reset()
938 if (dsc->dcs2) { in dsc_reset()
940 this_dcs = dsc->dcs2; in dsc_reset()
944 dsc_memfree(dsc, this_dcs); in dsc_reset()
947 dsc->dcs2 = NULL; in dsc_reset()
949 if (dsc->colours) { in dsc_reset()
951 this_colour = dsc->colours; in dsc_reset()
955 dsc_memfree(dsc, this_colour); in dsc_reset()
958 dsc->colours = NULL; in dsc_reset()
982 dsc_read_line(CDSC *dsc) in dsc_read_line() argument
985 dsc->line = NULL; in dsc_read_line()
987 if (dsc->eof) { in dsc_read_line()
989 dsc->line = dsc->data + dsc->data_index; in dsc_read_line()
990 dsc->line_length = dsc->data_length - dsc->data_index; in dsc_read_line()
991 dsc->data_index = dsc->data_length; in dsc_read_line()
992 return dsc->line_length; in dsc_read_line()
995 if (dsc->file_length && in dsc_read_line()
996 (dsc->data_offset + dsc->data_index >= dsc->file_length)) { in dsc_read_line()
999 dsc->line = dsc->data + dsc->data_index; in dsc_read_line()
1000 dsc->line_length = dsc->data_length - dsc->data_index; in dsc_read_line()
1001 dsc->data_index = dsc->data_length; in dsc_read_line()
1002 return dsc->line_length; in dsc_read_line()
1005 if (dsc->doseps_end && in dsc_read_line()
1006 (dsc->data_offset + dsc->data_index >= dsc->doseps_end)) { in dsc_read_line()
1009 dsc->line = dsc->data + dsc->data_index; in dsc_read_line()
1010 dsc->line_length = dsc->data_length - dsc->data_index; in dsc_read_line()
1011 dsc->data_index = dsc->data_length; in dsc_read_line()
1012 return dsc->line_length; in dsc_read_line()
1016 if (dsc->skip_bytes) { in dsc_read_line()
1017 int cnt = min(dsc->skip_bytes, in dsc_read_line()
1018 (int)(dsc->data_length - dsc->data_index)); in dsc_read_line()
1019 dsc->skip_bytes -= cnt; in dsc_read_line()
1020 dsc->data_index += cnt; in dsc_read_line()
1021 if (dsc->skip_bytes != 0) in dsc_read_line()
1026 dsc->line = dsc->data + dsc->data_index; in dsc_read_line()
1027 last = dsc->data + dsc->data_length; in dsc_read_line()
1028 if (dsc->data_index == dsc->data_length) { in dsc_read_line()
1029 dsc->line_length = 0; in dsc_read_line()
1032 if (dsc->eol) { in dsc_read_line()
1034 dsc->line_count++; in dsc_read_line()
1035 if (dsc->skip_lines) in dsc_read_line()
1036 dsc->skip_lines--; in dsc_read_line()
1040 if (dsc->last_cr && dsc->line[0] == '\n') { in dsc_read_line()
1041 dsc->data_index++; in dsc_read_line()
1042 dsc->line++; in dsc_read_line()
1044 dsc->last_cr = FALSE; in dsc_read_line()
1047 dsc->eol = FALSE; in dsc_read_line()
1048 for (p = dsc->line; p < last; p++) { in dsc_read_line()
1054 dsc->last_cr = TRUE; /* we might need to skip \n */ in dsc_read_line()
1055 dsc->eol = TRUE; /* dsc->line is a complete line */ in dsc_read_line()
1060 dsc->eol = TRUE; /* dsc->line is a complete line */ in dsc_read_line()
1064 dsc->eol = TRUE; in dsc_read_line()
1067 if (dsc->eol == FALSE) { in dsc_read_line()
1069 if (dsc->data_length - dsc->data_index < sizeof(dsc->data)/2) { in dsc_read_line()
1071 dsc->line_length = 0; in dsc_read_line()
1075 dsc->data_index += dsc->line_length = (int)(p - dsc->line); in dsc_read_line()
1076 } while (dsc->skip_lines && dsc->line_length); in dsc_read_line()
1078 if (dsc->line_length == 0) in dsc_read_line()
1081 if ((dsc->line[0]=='%') && (dsc->line[1]=='%')) { in dsc_read_line()
1083 if ((dsc->skip_document) && dsc->line_length && in dsc_read_line()
1084 COMPARE(dsc->line, "%%EndDocument")) { in dsc_read_line()
1085 dsc->skip_document--; in dsc_read_line()
1089 if (COMPARE(dsc->line, "%%BeginData:")) { in dsc_read_line()
1098 cnt = dsc->line_length; in dsc_read_line()
1099 if (dsc->line_length > sizeof(begindata)-1) in dsc_read_line()
1101 memcpy(begindata, dsc->line, cnt); in dsc_read_line()
1112 int rc = dsc_error(dsc, CDSC_MESSAGE_INCORRECT_USAGE, in dsc_read_line()
1113 dsc->line, dsc->line_length); in dsc_read_line()
1127 if (dsc->skip_lines == 0) { in dsc_read_line()
1129 dsc->skip_lines = cnt+1; in dsc_read_line()
1136 if (dsc->skip_bytes == 0) { in dsc_read_line()
1138 dsc->skip_bytes = cnt; in dsc_read_line()
1145 else if (COMPARE(dsc->line, "%%BeginBinary:")) { in dsc_read_line()
1147 int cnt = dsc_get_int(dsc->line + 14, in dsc_read_line()
1148 dsc->line_length - 14, NULL); in dsc_read_line()
1149 if (dsc->skip_bytes == 0) { in dsc_read_line()
1151 dsc->skip_bytes = cnt; in dsc_read_line()
1156 if ((dsc->line[0]=='%') && (dsc->line[1]=='%') && in dsc_read_line()
1157 COMPARE(dsc->line, "%%BeginDocument:") ) { in dsc_read_line()
1159 dsc->skip_document++; in dsc_read_line()
1162 if (!dsc->long_line && (dsc->line_length > DSC_LINE_LENGTH)) { in dsc_read_line()
1163 dsc_error(dsc, CDSC_MESSAGE_LONG_LINE, dsc->line, dsc->line_length); in dsc_read_line()
1164 dsc->long_line = TRUE; in dsc_read_line()
1167 return dsc->line_length; in dsc_read_line()
1173 dsc_save_line(CDSC *dsc) in dsc_save_line() argument
1175 int len = min(sizeof(dsc->last_line), dsc->line_length); in dsc_save_line()
1176 memcpy(dsc->last_line, dsc->line, len); in dsc_save_line()
1181 dsc_unknown(CDSC *dsc) in dsc_unknown() argument
1183 if (dsc->debug_print_fn) { in dsc_unknown()
1185 unsigned int length = min(DSC_LINE_LENGTH-1, dsc->line_length); in dsc_unknown()
1187 dsc_scan_section_name[dsc->scan_section], dsc->line_count); in dsc_unknown()
1188 dsc_debug_print(dsc, line); in dsc_unknown()
1189 strncpy(line, dsc->line, length); in dsc_unknown()
1191 dsc_debug_print(dsc, line); in dsc_unknown()
1192 dsc_debug_print(dsc, "\n"); in dsc_unknown()
1241 dsc_read_doseps(CDSC *dsc) in dsc_read_doseps() argument
1243 unsigned char *line = (unsigned char *)dsc->line; in dsc_read_doseps()
1244 if ((dsc->doseps = (CDSCDOSEPS *)dsc_memalloc(dsc, sizeof(CDSCDOSEPS))) == NULL) in dsc_read_doseps()
1247 dsc->doseps->ps_begin = dsc_get_dword(line+4); in dsc_read_doseps()
1248 dsc->doseps->ps_length = dsc_get_dword(line+8); in dsc_read_doseps()
1249 dsc->doseps->wmf_begin = dsc_get_dword(line+12); in dsc_read_doseps()
1250 dsc->doseps->wmf_length = dsc_get_dword(line+16); in dsc_read_doseps()
1251 dsc->doseps->tiff_begin = dsc_get_dword(line+20); in dsc_read_doseps()
1252 dsc->doseps->tiff_length = dsc_get_dword(line+24); in dsc_read_doseps()
1253 dsc->doseps->checksum = dsc_get_word(line+28); in dsc_read_doseps()
1255 if (dsc->file_length && in dsc_read_doseps()
1256 (dsc->doseps->ps_begin + dsc->doseps->ps_length > dsc->file_length)) { in dsc_read_doseps()
1262 dsc->doseps->ps_length = in dsc_read_doseps()
1263 (GSDWORD)(dsc->file_length - dsc->doseps->ps_begin); in dsc_read_doseps()
1266 dsc->doseps_end = dsc->doseps->ps_begin + dsc->doseps->ps_length; in dsc_read_doseps()
1269 dsc->data_index -= dsc->line_length - 30; in dsc_read_doseps()
1271 dsc->line_count = 0; in dsc_read_doseps()
1273 dsc->skip_bytes = dsc->doseps->ps_begin - 30; in dsc_read_doseps()
1275 if (dsc->doseps->tiff_begin) in dsc_read_doseps()
1276 dsc->preview = CDSC_TIFF; in dsc_read_doseps()
1277 if (dsc->doseps->wmf_begin) in dsc_read_doseps()
1278 dsc->preview = CDSC_WMF; in dsc_read_doseps()
1286 dsc_parse_pages(CDSC *dsc) in dsc_parse_pages() argument
1292 if ((dsc->page_pages != 0) && (dsc->scan_section == scan_comments)) { in dsc_parse_pages()
1293 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_pages()
1294 dsc->line_length); in dsc_parse_pages()
1303 if ((dsc->page_pages != 0) && (dsc->scan_section == scan_trailer)) { in dsc_parse_pages()
1304 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_TRAILER, dsc->line, in dsc_parse_pages()
1305 dsc->line_length); in dsc_parse_pages()
1315 n = IS_DSC(dsc->line, "%%+") ? 3 : 8; in dsc_parse_pages()
1316 while (IS_WHITE(dsc->line[n])) in dsc_parse_pages()
1318 p = dsc->line + n; in dsc_parse_pages()
1320 int rc = dsc_error(dsc, CDSC_MESSAGE_ATEND, dsc->line, dsc->line_length); in dsc_parse_pages()
1338 ip = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_pages()
1341 dsc->page_pages = ip; in dsc_parse_pages()
1342 io = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_pages()
1346 if (dsc->page_order == CDSC_ORDER_UNKNOWN) in dsc_parse_pages()
1349 dsc->page_order = CDSC_DESCEND; in dsc_parse_pages()
1352 dsc->page_order = CDSC_SPECIAL; in dsc_parse_pages()
1355 dsc->page_order = CDSC_ASCEND; in dsc_parse_pages()
1361 int rc = dsc_error(dsc, CDSC_MESSAGE_INCORRECT_USAGE, dsc->line, in dsc_parse_pages()
1362 dsc->line_length); in dsc_parse_pages()
1377 dsc_parse_bounding_box(CDSC *dsc, CDSCBBOX** pbbox, int offset) in dsc_parse_bounding_box() argument
1384 if ((*pbbox != NULL) && (dsc->scan_section == scan_comments)) { in dsc_parse_bounding_box()
1385 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_bounding_box()
1386 dsc->line_length); in dsc_parse_bounding_box()
1395 if ((*pbbox != NULL) && (dsc->scan_section == scan_pages)) { in dsc_parse_bounding_box()
1396 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_bounding_box()
1397 dsc->line_length); in dsc_parse_bounding_box()
1406 if ((*pbbox != NULL) && (dsc->scan_section == scan_trailer)) { in dsc_parse_bounding_box()
1407 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_TRAILER, dsc->line, in dsc_parse_bounding_box()
1408 dsc->line_length); in dsc_parse_bounding_box()
1418 dsc_memfree(dsc, *pbbox); in dsc_parse_bounding_box()
1424 while (IS_WHITE(dsc->line[offset])) in dsc_parse_bounding_box()
1426 p = dsc->line + offset; in dsc_parse_bounding_box()
1429 int rc = dsc_error(dsc, CDSC_MESSAGE_ATEND, dsc->line, in dsc_parse_bounding_box()
1430 dsc->line_length); in dsc_parse_bounding_box()
1450 llx = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1453 lly = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1456 urx = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1459 ury = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1461 *pbbox = (CDSCBBOX *)dsc_memalloc(dsc, sizeof(CDSCBBOX)); in dsc_parse_bounding_box()
1470 int rc = dsc_error(dsc, CDSC_MESSAGE_BBOX, dsc->line, in dsc_parse_bounding_box()
1471 dsc->line_length); in dsc_parse_bounding_box()
1477 fllx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1480 flly = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1483 furx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1486 fury = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_bounding_box()
1488 *pbbox = (CDSCBBOX *)dsc_memalloc(dsc, sizeof(CDSCBBOX)); in dsc_parse_bounding_box()
1508 dsc_parse_float_bounding_box(CDSC *dsc, CDSCFBBOX** pbbox, int offset) in dsc_parse_float_bounding_box() argument
1516 if ((*pbbox != NULL) && (dsc->scan_section == scan_comments)) { in dsc_parse_float_bounding_box()
1517 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_float_bounding_box()
1518 dsc->line_length); in dsc_parse_float_bounding_box()
1527 if ((*pbbox != NULL) && (dsc->scan_section == scan_pages)) { in dsc_parse_float_bounding_box()
1528 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_float_bounding_box()
1529 dsc->line_length); in dsc_parse_float_bounding_box()
1538 if ((*pbbox != NULL) && (dsc->scan_section == scan_trailer)) { in dsc_parse_float_bounding_box()
1539 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_TRAILER, dsc->line, in dsc_parse_float_bounding_box()
1540 dsc->line_length); in dsc_parse_float_bounding_box()
1550 dsc_memfree(dsc, *pbbox); in dsc_parse_float_bounding_box()
1556 while (IS_WHITE(dsc->line[offset])) in dsc_parse_float_bounding_box()
1558 p = dsc->line + offset; in dsc_parse_float_bounding_box()
1561 int rc = dsc_error(dsc, CDSC_MESSAGE_ATEND, dsc->line, in dsc_parse_float_bounding_box()
1562 dsc->line_length); in dsc_parse_float_bounding_box()
1582 fllx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_float_bounding_box()
1585 flly = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_float_bounding_box()
1588 furx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_float_bounding_box()
1591 fury = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_float_bounding_box()
1593 *pbbox = (CDSCFBBOX *)dsc_memalloc(dsc, sizeof(CDSCFBBOX)); in dsc_parse_float_bounding_box()
1606 dsc_parse_orientation(CDSC *dsc, unsigned int *porientation, int offset) in dsc_parse_orientation() argument
1609 if ((dsc->page_orientation != CDSC_ORIENT_UNKNOWN) && in dsc_parse_orientation()
1610 (dsc->scan_section == scan_comments)) { in dsc_parse_orientation()
1611 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_orientation()
1612 dsc->line_length); in dsc_parse_orientation()
1621 if ((dsc->page_orientation != CDSC_ORIENT_UNKNOWN) && in dsc_parse_orientation()
1622 (dsc->scan_section == scan_trailer)) { in dsc_parse_orientation()
1623 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_TRAILER, dsc->line, in dsc_parse_orientation()
1624 dsc->line_length); in dsc_parse_orientation()
1633 p = dsc->line + offset; in dsc_parse_orientation()
1637 int rc = dsc_error(dsc, CDSC_MESSAGE_ATEND, dsc->line, dsc->line_length); in dsc_parse_orientation()
1661 dsc_unknown(dsc); in dsc_parse_orientation()
1667 dsc_parse_order(CDSC *dsc) in dsc_parse_order() argument
1670 if ((dsc->page_order != CDSC_ORDER_UNKNOWN) && in dsc_parse_order()
1671 (dsc->scan_section == scan_comments)) { in dsc_parse_order()
1672 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_COMMENT, dsc->line, in dsc_parse_order()
1673 dsc->line_length); in dsc_parse_order()
1682 if ((dsc->page_order != CDSC_ORDER_UNKNOWN) && in dsc_parse_order()
1683 (dsc->scan_section == scan_trailer)) { in dsc_parse_order()
1684 int rc = dsc_error(dsc, CDSC_MESSAGE_DUP_TRAILER, dsc->line, in dsc_parse_order()
1685 dsc->line_length); in dsc_parse_order()
1695 p = dsc->line + (IS_DSC(dsc->line, "%%+") ? 3 : 13); in dsc_parse_order()
1699 int rc = dsc_error(dsc, CDSC_MESSAGE_ATEND, dsc->line, in dsc_parse_order()
1700 dsc->line_length); in dsc_parse_order()
1718 dsc->page_order = CDSC_ASCEND; in dsc_parse_order()
1721 dsc->page_order = CDSC_DESCEND; in dsc_parse_order()
1724 dsc->page_order = CDSC_SPECIAL; in dsc_parse_order()
1727 dsc_unknown(dsc); in dsc_parse_order()
1734 dsc_parse_media(CDSC *dsc, const CDSCMEDIA **page_media) in dsc_parse_media() argument
1737 int n = IS_DSC(dsc->line, "%%+") ? 3 : 12; /* %%PageMedia: */ in dsc_parse_media()
1741 dsc->line+n, dsc->line_length-n, NULL)) { in dsc_parse_media()
1742 for (i=0; i<dsc->media_count; i++) { in dsc_parse_media()
1743 if (dsc->media[i]->name && in dsc_parse_media()
1744 (dsc_stricmp(media_name, dsc->media[i]->name) == 0)) { in dsc_parse_media()
1745 *page_media = dsc->media[i]; in dsc_parse_media()
1750 dsc_unknown(dsc); in dsc_parse_media()
1757 dsc_parse_document_media(CDSC *dsc) in dsc_parse_document_media() argument
1763 if (IS_DSC(dsc->line, "%%DocumentMedia:")) in dsc_parse_document_media()
1765 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_document_media()
1772 for (i=n; i<dsc->line_length; i++) { in dsc_parse_document_media()
1773 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_document_media()
1787 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1790 lmedia.width = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1793 lmedia.height = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1796 lmedia.weight = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1800 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1804 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_document_media()
1807 dsc_unknown(dsc); /* we didn't get all fields */ in dsc_parse_document_media()
1809 if (dsc_add_media(dsc, &lmedia)) in dsc_parse_document_media()
1820 dsc_parse_viewing_orientation(CDSC *dsc, CDSCCTM **pctm) in dsc_parse_viewing_orientation() argument
1826 dsc_memfree(dsc, *pctm); in dsc_parse_viewing_orientation()
1830 n = IS_DSC(dsc->line, "%%+") ? 3 : 21; /* %%ViewingOrientation: */ in dsc_parse_viewing_orientation()
1831 while (IS_WHITE(dsc->line[n])) in dsc_parse_viewing_orientation()
1835 ctm.xx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_viewing_orientation()
1838 ctm.xy = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_viewing_orientation()
1841 ctm.yx = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_viewing_orientation()
1844 ctm.yy = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_viewing_orientation()
1846 dsc_unknown(dsc); /* we didn't get all fields */ in dsc_parse_viewing_orientation()
1849 *pctm = (CDSCCTM *)dsc_memalloc(dsc, sizeof(CDSCCTM)); in dsc_parse_viewing_orientation()
1863 dsc_scan_type(CDSC *dsc) in dsc_scan_type() argument
1866 unsigned char *line = (unsigned char *)(dsc->data + dsc->data_index); in dsc_scan_type()
1867 int length = dsc->data_length - dsc->data_index; in dsc_scan_type()
1887 if (dsc->skip_bytes) { in dsc_scan_type()
1888 int cnt = min(dsc->skip_bytes, in dsc_scan_type()
1889 (int)(dsc->data_length - dsc->data_index)); in dsc_scan_type()
1890 dsc->skip_bytes -= cnt; in dsc_scan_type()
1891 dsc->data_index += cnt; in dsc_scan_type()
1894 if (dsc->skip_bytes != 0) in dsc_scan_type()
1898 if (dsc->skip_pjl) { in dsc_scan_type()
1904 dsc->data_index++; in dsc_scan_type()
1910 dsc->data_index++; in dsc_scan_type()
1918 dsc->data_index++; in dsc_scan_type()
1920 dsc->skip_pjl = FALSE; in dsc_scan_type()
1925 dsc->data_index++; in dsc_scan_type()
1929 if (dsc->skip_pjl) in dsc_scan_type()
1938 dsc->data_index++; in dsc_scan_type()
1940 dsc->ctrld = TRUE; in dsc_scan_type()
1948 dsc->skip_pjl = TRUE; /* skip until first PostScript comment */ in dsc_scan_type()
1949 dsc->pjl = TRUE; in dsc_scan_type()
1950 dsc->data_index += 9; in dsc_scan_type()
1951 return dsc_scan_type(dsc); in dsc_scan_type()
1963 dsc->line = (char *)line; in dsc_scan_type()
1964 if (dsc_read_doseps(dsc)) in dsc_scan_type()
1974 dsc->pdf = TRUE; in dsc_scan_type()
1975 dsc->scan_section = scan_comments; in dsc_scan_type()
1983 if (dsc_read_line(dsc) <= 0) in dsc_scan_type()
1986 dsc->dsc_version = dsc_add_line(dsc, dsc->line, dsc->line_length); in dsc_scan_type()
1987 if (COMPARE(dsc->line, "%!PS-Adobe")) { in dsc_scan_type()
1988 dsc->dsc = TRUE; in dsc_scan_type()
1989 dsc->begincomments = DSC_START(dsc); in dsc_scan_type()
1990 if (dsc->dsc_version == NULL) in dsc_scan_type()
1992 p = (unsigned char *)dsc->line + 14; in dsc_scan_type()
1996 dsc->epsf = TRUE; in dsc_scan_type()
1997 dsc->scan_section = scan_comments; in dsc_scan_type()
2000 if (COMPARE(dsc->line, "%!")) { in dsc_scan_type()
2001 dsc->scan_section = scan_comments; in dsc_scan_type()
2005 dsc->scan_section = scan_comments; in dsc_scan_type()
2012 dsc_scan_comments(CDSC *dsc) in dsc_scan_comments() argument
2020 char *line = dsc->line; in dsc_scan_comments()
2022 dsc->id = CDSC_OK; in dsc_scan_comments()
2024 dsc->id = CDSC_ENDCOMMENTS; in dsc_scan_comments()
2025 dsc->endcomments = DSC_END(dsc); in dsc_scan_comments()
2026 dsc->scan_section = scan_pre_preview; in dsc_scan_comments()
2031 dsc->id = CDSC_BEGINCOMMENTS; in dsc_scan_comments()
2034 dsc->endcomments = DSC_START(dsc); in dsc_scan_comments()
2035 dsc->scan_section = scan_pre_preview; in dsc_scan_comments()
2039 dsc->endcomments = DSC_START(dsc); in dsc_scan_comments()
2040 dsc->scan_section = scan_pre_preview; in dsc_scan_comments()
2044 dsc->id = CDSC_OK; in dsc_scan_comments()
2045 dsc->endcomments = DSC_START(dsc); in dsc_scan_comments()
2046 dsc->scan_section = scan_pre_preview; in dsc_scan_comments()
2050 dsc->endcomments = DSC_START(dsc); in dsc_scan_comments()
2051 dsc->scan_section = scan_pre_preview; in dsc_scan_comments()
2064 line = dsc->last_line; in dsc_scan_comments()
2068 dsc_save_line(dsc); in dsc_scan_comments()
2071 dsc->id = CDSC_PAGES; in dsc_scan_comments()
2072 if (dsc_parse_pages(dsc) != 0) in dsc_scan_comments()
2076 dsc->id = CDSC_CREATOR; in dsc_scan_comments()
2077 dsc->dsc_creator = dsc_add_line(dsc, dsc->line+10, dsc->line_length-10); in dsc_scan_comments()
2078 if (dsc->dsc_creator==NULL) in dsc_scan_comments()
2082 dsc->id = CDSC_CREATIONDATE; in dsc_scan_comments()
2083 dsc->dsc_date = dsc_add_line(dsc, dsc->line+15, dsc->line_length-15); in dsc_scan_comments()
2084 if (dsc->dsc_date==NULL) in dsc_scan_comments()
2088 dsc->id = CDSC_TITLE; in dsc_scan_comments()
2089 dsc->dsc_title = dsc_add_line(dsc, dsc->line+8, dsc->line_length-8); in dsc_scan_comments()
2090 if (dsc->dsc_title==NULL) in dsc_scan_comments()
2094 dsc->id = CDSC_FOR; in dsc_scan_comments()
2095 dsc->dsc_for = dsc_add_line(dsc, dsc->line+6, dsc->line_length-6); in dsc_scan_comments()
2096 if (dsc->dsc_for==NULL) in dsc_scan_comments()
2103 dsc->id = CDSC_LANGUAGELEVEL; in dsc_scan_comments()
2104 ll = dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_scan_comments()
2107 dsc->language_level = ll; in dsc_scan_comments()
2109 dsc_unknown(dsc); in dsc_scan_comments()
2113 dsc_unknown(dsc); in dsc_scan_comments()
2116 dsc->id = CDSC_BOUNDINGBOX; in dsc_scan_comments()
2117 if (dsc_parse_bounding_box(dsc, &(dsc->bbox), continued ? 3 : 14)) in dsc_scan_comments()
2121 dsc->id = CDSC_HIRESBOUNDINGBOX; in dsc_scan_comments()
2122 if (dsc_parse_float_bounding_box(dsc, &(dsc->hires_bbox), in dsc_scan_comments()
2127 dsc->id = CDSC_CROPBOX; in dsc_scan_comments()
2128 if (dsc_parse_float_bounding_box(dsc, &(dsc->crop_box), in dsc_scan_comments()
2133 dsc->id = CDSC_ORIENTATION; in dsc_scan_comments()
2134 if (dsc_parse_orientation(dsc, &(dsc->page_orientation), in dsc_scan_comments()
2139 dsc->id = CDSC_PAGEORDER; in dsc_scan_comments()
2140 if (dsc_parse_order(dsc)) in dsc_scan_comments()
2144 dsc->id = CDSC_DOCUMENTMEDIA; in dsc_scan_comments()
2145 if (dsc_parse_document_media(dsc)) in dsc_scan_comments()
2155 dsc->id = CDSC_DOCUMENTPAPERSIZES; in dsc_scan_comments()
2156 while (i && (dsc->line[n]!='\r') && (dsc->line[n]!='\n')) { in dsc_scan_comments()
2158 dsc->line+n, dsc->line_length-n, &i); in dsc_scan_comments()
2161 if (count >= dsc->media_count) { in dsc_scan_comments()
2171 if (dsc_add_media(dsc, &lmedia)) in dsc_scan_comments()
2175 dsc->media[count]->name = in dsc_scan_comments()
2176 dsc_alloc_string(dsc, p, (int)strlen(p)); in dsc_scan_comments()
2180 dsc->media[count]->width = m->width; in dsc_scan_comments()
2181 dsc->media[count]->height = m->height; in dsc_scan_comments()
2198 dsc->id = CDSC_DOCUMENTPAPERFORMS; in dsc_scan_comments()
2199 while (i && (dsc->line[n]!='\r') && (dsc->line[n]!='\n')) { in dsc_scan_comments()
2201 dsc->line+n, dsc->line_length-n, &i); in dsc_scan_comments()
2203 if (count >= dsc->media_count) { in dsc_scan_comments()
2213 if (dsc_add_media(dsc, &lmedia)) in dsc_scan_comments()
2217 dsc->media[count]->type = in dsc_scan_comments()
2218 dsc_alloc_string(dsc, p, (int)strlen(p)); in dsc_scan_comments()
2231 dsc->id = CDSC_DOCUMENTPAPERCOLORS; in dsc_scan_comments()
2232 while (i && (dsc->line[n]!='\r') && (dsc->line[n]!='\n')) { in dsc_scan_comments()
2234 dsc->line+n, dsc->line_length-n, &i); in dsc_scan_comments()
2236 if (count >= dsc->media_count) { in dsc_scan_comments()
2246 if (dsc_add_media(dsc, &lmedia)) in dsc_scan_comments()
2250 dsc->media[count]->colour = in dsc_scan_comments()
2251 dsc_alloc_string(dsc, p, (int)strlen(p)); in dsc_scan_comments()
2263 dsc->id = CDSC_DOCUMENTPAPERWEIGHTS; in dsc_scan_comments()
2264 while (i && (dsc->line[n]!='\r') && (dsc->line[n]!='\n')) { in dsc_scan_comments()
2265 w = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_scan_comments()
2267 if (count >= dsc->media_count) { in dsc_scan_comments()
2277 if (dsc_add_media(dsc, &lmedia)) in dsc_scan_comments()
2281 dsc->media[count]->weight = w; in dsc_scan_comments()
2289 char *p = dsc->line + n; in dsc_scan_comments()
2292 dsc->id = CDSC_DOCUMENTDATA; in dsc_scan_comments()
2294 dsc->document_data = CDSC_CLEAN7BIT; in dsc_scan_comments()
2296 dsc->document_data = CDSC_CLEAN8BIT; in dsc_scan_comments()
2298 dsc->document_data = CDSC_BINARY; in dsc_scan_comments()
2300 dsc_unknown(dsc); in dsc_scan_comments()
2303 dsc->id = CDSC_REQUIREMENTS; in dsc_scan_comments()
2307 dsc->id = CDSC_DOCUMENTNEEDEDFONTS; in dsc_scan_comments()
2311 dsc->id = CDSC_DOCUMENTSUPPLIEDFONTS; in dsc_scan_comments()
2315 dsc->id = CDSC_PLATEFILE; in dsc_scan_comments()
2316 if (dsc_parse_platefile(dsc) != CDSC_OK) in dsc_scan_comments()
2317 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2323 dsc->id = CDSC_PLATEFILE; in dsc_scan_comments()
2324 if (dsc_parse_dcs1plate(dsc) != CDSC_OK) in dsc_scan_comments()
2325 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2328 dsc->id = CDSC_DOCUMENTPROCESSCOLORS; in dsc_scan_comments()
2329 if (dsc_parse_process_colours(dsc) != CDSC_OK) in dsc_scan_comments()
2330 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2333 dsc->id = CDSC_DOCUMENTCUSTOMCOLORS; in dsc_scan_comments()
2334 if (dsc_parse_custom_colours(dsc) != CDSC_OK) in dsc_scan_comments()
2335 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2338 dsc->id = CDSC_CMYKCUSTOMCOLOR; in dsc_scan_comments()
2339 if (dsc_parse_cmyk_custom_colour(dsc) != CDSC_OK) in dsc_scan_comments()
2340 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2343 dsc->id = CDSC_RGBCUSTOMCOLOR; in dsc_scan_comments()
2344 if (dsc_parse_rgb_custom_colour(dsc) != CDSC_OK) in dsc_scan_comments()
2345 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2347 else if (dsc->line[0] == '%' && IS_WHITE_OR_EOL(dsc->line[1])) { in dsc_scan_comments()
2348 dsc->id = CDSC_OK; in dsc_scan_comments()
2352 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_comments()
2353 dsc_unknown(dsc); in dsc_scan_comments()
2356 dsc->endcomments = DSC_END(dsc); in dsc_scan_comments()
2362 dsc_scan_preview(CDSC *dsc) in dsc_scan_preview() argument
2368 char *line = dsc->line; in dsc_scan_preview()
2369 dsc->id = CDSC_OK; in dsc_scan_preview()
2371 if (dsc->scan_section == scan_pre_preview) { in dsc_scan_preview()
2375 dsc->id = CDSC_BEGINPREVIEW; in dsc_scan_preview()
2376 dsc->beginpreview = DSC_START(dsc); in dsc_scan_preview()
2377 dsc->endpreview = DSC_END(dsc); in dsc_scan_preview()
2378 dsc->scan_section = scan_preview; in dsc_scan_preview()
2380 if (dsc->preview == CDSC_NOPREVIEW) in dsc_scan_preview()
2381 dsc->preview = CDSC_EPSI; in dsc_scan_preview()
2385 dsc->scan_section = scan_pre_defaults; in dsc_scan_preview()
2394 dsc->endpreview = DSC_START(dsc); in dsc_scan_preview()
2395 dsc->scan_section = scan_pre_defaults; in dsc_scan_preview()
2399 dsc->id = CDSC_ENDPREVIEW; in dsc_scan_preview()
2400 dsc->endpreview = DSC_END(dsc); in dsc_scan_preview()
2401 dsc->scan_section = scan_pre_defaults; in dsc_scan_preview()
2408 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_preview()
2410 dsc_unknown(dsc); in dsc_scan_preview()
2413 dsc->endpreview = DSC_END(dsc); in dsc_scan_preview()
2418 dsc_scan_defaults(CDSC *dsc) in dsc_scan_defaults() argument
2424 char *line = dsc->line; in dsc_scan_defaults()
2425 dsc->id = CDSC_OK; in dsc_scan_defaults()
2427 if (dsc->scan_section == scan_pre_defaults) { in dsc_scan_defaults()
2431 dsc->id = CDSC_BEGINDEFAULTS; in dsc_scan_defaults()
2432 dsc->begindefaults = DSC_START(dsc); in dsc_scan_defaults()
2433 dsc->enddefaults = DSC_END(dsc); in dsc_scan_defaults()
2434 dsc->scan_section = scan_defaults; in dsc_scan_defaults()
2438 dsc->scan_section = scan_pre_prolog; in dsc_scan_defaults()
2453 dsc->enddefaults = DSC_START(dsc); in dsc_scan_defaults()
2454 dsc->scan_section = scan_pre_prolog; in dsc_scan_defaults()
2458 dsc->id = CDSC_ENDDEFAULTS; in dsc_scan_defaults()
2459 dsc->enddefaults = DSC_END(dsc); in dsc_scan_defaults()
2460 dsc->scan_section = scan_pre_prolog; in dsc_scan_defaults()
2464 dsc->id = CDSC_PAGEMEDIA; in dsc_scan_defaults()
2465 dsc_parse_media(dsc, &dsc->page_media); in dsc_scan_defaults()
2468 dsc->id = CDSC_PAGEORIENTATION; in dsc_scan_defaults()
2470 if (dsc_parse_orientation(dsc, &(dsc->page_orientation), 18)) in dsc_scan_defaults()
2474 dsc->id = CDSC_PAGEBOUNDINGBOX; in dsc_scan_defaults()
2475 if (dsc_parse_bounding_box(dsc, &(dsc->page_bbox), 18)) in dsc_scan_defaults()
2479 dsc->id = CDSC_VIEWINGORIENTATION; in dsc_scan_defaults()
2480 if (dsc_parse_viewing_orientation(dsc, &dsc->viewing_orientation)) in dsc_scan_defaults()
2484 dsc->id = CDSC_PAGECROPBOX; in dsc_scan_defaults()
2485 if (dsc_parse_float_bounding_box(dsc, &dsc->crop_box, 14)) in dsc_scan_defaults()
2489 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_defaults()
2491 dsc_unknown(dsc); in dsc_scan_defaults()
2493 dsc->enddefaults = DSC_END(dsc); in dsc_scan_defaults()
2500 dsc_check_match_prompt(CDSC *dsc, const char *str, int count) in dsc_check_match_prompt() argument
2504 if (dsc->line_length < (unsigned int)(sizeof(buf)/2-1)) { in dsc_check_match_prompt()
2505 strncpy(buf, dsc->line, dsc->line_length); in dsc_check_match_prompt()
2506 buf[dsc->line_length] = '\0'; in dsc_check_match_prompt()
2509 return dsc_error(dsc, CDSC_MESSAGE_BEGIN_END, buf, (int)strlen(buf)); in dsc_check_match_prompt()
2515 dsc_check_match_type(CDSC *dsc, const char *str, int count) in dsc_check_match_type() argument
2517 if (dsc_check_match_prompt(dsc, str, count) == CDSC_RESPONSE_IGNORE_ALL) in dsc_check_match_type()
2525 dsc_check_match(CDSC *dsc) in dsc_check_match() argument
2534 rc = dsc_check_match_type(dsc, font, dsc->begin_font_count); in dsc_check_match()
2536 rc = dsc_check_match_type(dsc, feature, dsc->begin_feature_count); in dsc_check_match()
2538 rc = dsc_check_match_type(dsc, resource, dsc->begin_resource_count); in dsc_check_match()
2540 rc = dsc_check_match_type(dsc, procset, dsc->begin_procset_count); in dsc_check_match()
2542 dsc->begin_font_count = 0; in dsc_check_match()
2543 dsc->begin_feature_count = 0; in dsc_check_match()
2544 dsc->begin_resource_count = 0; in dsc_check_match()
2545 dsc->begin_procset_count = 0; in dsc_check_match()
2551 dsc_scan_prolog(CDSC *dsc) in dsc_scan_prolog() argument
2557 char *line = dsc->line; in dsc_scan_prolog()
2558 dsc->id = CDSC_OK; in dsc_scan_prolog()
2560 if (dsc->scan_section == scan_pre_prolog) { in dsc_scan_prolog()
2562 dsc->scan_section = scan_pre_setup; in dsc_scan_prolog()
2565 dsc->id = CDSC_BEGINPROLOG; in dsc_scan_prolog()
2566 dsc->beginprolog = DSC_START(dsc); in dsc_scan_prolog()
2567 dsc->endprolog = DSC_END(dsc); in dsc_scan_prolog()
2568 dsc->scan_section = scan_prolog; in dsc_scan_prolog()
2586 dsc->endprolog = DSC_START(dsc); in dsc_scan_prolog()
2587 dsc->scan_section = scan_pre_setup; in dsc_scan_prolog()
2588 if (dsc_check_match(dsc)) in dsc_scan_prolog()
2593 dsc->id = CDSC_ENDPROLOG; in dsc_scan_prolog()
2594 dsc->endprolog = DSC_END(dsc); in dsc_scan_prolog()
2595 dsc->scan_section = scan_pre_setup; in dsc_scan_prolog()
2596 if (dsc_check_match(dsc)) in dsc_scan_prolog()
2601 dsc->id = CDSC_BEGINFONT; in dsc_scan_prolog()
2604 dsc->begin_font_count++; in dsc_scan_prolog()
2607 dsc->id = CDSC_ENDFONT; in dsc_scan_prolog()
2608 dsc->begin_font_count--; in dsc_scan_prolog()
2611 dsc->id = CDSC_BEGINFEATURE; in dsc_scan_prolog()
2614 dsc->begin_feature_count++; in dsc_scan_prolog()
2617 dsc->id = CDSC_ENDFEATURE; in dsc_scan_prolog()
2618 dsc->begin_feature_count--; in dsc_scan_prolog()
2621 dsc->id = CDSC_BEGINRESOURCE; in dsc_scan_prolog()
2624 dsc->begin_resource_count++; in dsc_scan_prolog()
2627 dsc->id = CDSC_ENDRESOURCE; in dsc_scan_prolog()
2628 dsc->begin_resource_count--; in dsc_scan_prolog()
2631 dsc->id = CDSC_BEGINPROCSET; in dsc_scan_prolog()
2634 dsc->begin_procset_count++; in dsc_scan_prolog()
2637 dsc->id = CDSC_ENDPROCSET; in dsc_scan_prolog()
2638 dsc->begin_procset_count--; in dsc_scan_prolog()
2642 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_prolog()
2643 dsc_unknown(dsc); in dsc_scan_prolog()
2646 dsc->endprolog = DSC_END(dsc); in dsc_scan_prolog()
2651 dsc_scan_setup(CDSC *dsc) in dsc_scan_setup() argument
2658 char *line = dsc->line; in dsc_scan_setup()
2659 dsc->id = CDSC_OK; in dsc_scan_setup()
2661 if (dsc->scan_section == scan_pre_setup) { in dsc_scan_setup()
2665 dsc->id = CDSC_BEGINSETUP; in dsc_scan_setup()
2666 dsc->beginsetup = DSC_START(dsc); in dsc_scan_setup()
2667 dsc->endsetup = DSC_END(dsc); in dsc_scan_setup()
2668 dsc->scan_section = scan_setup; in dsc_scan_setup()
2672 dsc->scan_section = scan_pre_pages; in dsc_scan_setup()
2693 dsc->endsetup = DSC_START(dsc); in dsc_scan_setup()
2694 dsc->scan_section = scan_pre_pages; in dsc_scan_setup()
2695 if (dsc_check_match(dsc)) in dsc_scan_setup()
2700 dsc->id = CDSC_ENDSETUP; in dsc_scan_setup()
2701 dsc->endsetup = DSC_END(dsc); in dsc_scan_setup()
2702 dsc->scan_section = scan_pre_pages; in dsc_scan_setup()
2703 if (dsc_check_match(dsc)) in dsc_scan_setup()
2708 dsc->id = CDSC_BEGINFEATURE; in dsc_scan_setup()
2711 dsc->begin_feature_count++; in dsc_scan_setup()
2714 dsc->id = CDSC_ENDFEATURE; in dsc_scan_setup()
2715 dsc->begin_feature_count--; in dsc_scan_setup()
2718 dsc->id = CDSC_FEATURE; in dsc_scan_setup()
2722 dsc->id = CDSC_BEGINRESOURCE; in dsc_scan_setup()
2725 dsc->begin_resource_count++; in dsc_scan_setup()
2728 dsc->id = CDSC_ENDRESOURCE; in dsc_scan_setup()
2729 dsc->begin_resource_count--; in dsc_scan_setup()
2732 dsc->id = CDSC_PAPERCOLOR; in dsc_scan_setup()
2736 dsc->id = CDSC_PAPERFORM; in dsc_scan_setup()
2740 dsc->id = CDSC_PAPERWEIGHT; in dsc_scan_setup()
2750 dsc->id = CDSC_PAPERSIZE; in dsc_scan_setup()
2751 dsc_copy_string(buf, sizeof(buf)-1, dsc->line+n, dsc->line_length-n, in dsc_scan_setup()
2753 for (i=0; i<(int)dsc->media_count; i++) { in dsc_scan_setup()
2754 if (dsc->media[i] && dsc->media[i]->name && in dsc_scan_setup()
2755 (dsc_stricmp(buf, dsc->media[i]->name)==0)) { in dsc_scan_setup()
2756 dsc->page_media = dsc->media[i]; in dsc_scan_setup()
2767 dsc->page_media = m; in dsc_scan_setup()
2773 dsc_unknown(dsc); in dsc_scan_setup()
2778 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_setup()
2779 dsc_unknown(dsc); in dsc_scan_setup()
2782 dsc->endsetup = DSC_END(dsc); in dsc_scan_setup()
2787 dsc_scan_page(CDSC *dsc) in dsc_scan_page() argument
2793 char *line = dsc->line; in dsc_scan_page()
2794 dsc->id = CDSC_OK; in dsc_scan_page()
2796 if (dsc->scan_section == scan_pre_pages) { in dsc_scan_page()
2798 dsc->scan_section = scan_pages; in dsc_scan_page()
2807 if (dsc->endsetup != 0) in dsc_scan_page()
2808 last = &dsc->endsetup; in dsc_scan_page()
2809 else if (dsc->endprolog != 0) in dsc_scan_page()
2810 last = &dsc->endprolog; in dsc_scan_page()
2811 else if (dsc->enddefaults != 0) in dsc_scan_page()
2812 last = &dsc->enddefaults; in dsc_scan_page()
2813 else if (dsc->endpreview != 0) in dsc_scan_page()
2814 last = &dsc->endpreview; in dsc_scan_page()
2815 else if (dsc->endcomments != 0) in dsc_scan_page()
2816 last = &dsc->endcomments; in dsc_scan_page()
2818 last = &dsc->begincomments; in dsc_scan_page()
2819 *last = DSC_START(dsc); in dsc_scan_page()
2821 dsc->scan_section = scan_pre_trailer; in dsc_scan_page()
2824 *last = DSC_END(dsc); in dsc_scan_page()
2834 dsc->id = CDSC_PAGE; in dsc_scan_page()
2835 if (dsc->page_count) { in dsc_scan_page()
2836 dsc->page[dsc->page_count-1].end = DSC_START(dsc); in dsc_scan_page()
2837 if (dsc_check_match(dsc)) in dsc_scan_page()
2841 if ( (code = dsc_parse_page(dsc)) != CDSC_OK) in dsc_scan_page()
2843 if (dsc->page_count == 0) in dsc_scan_page()
2844 dsc->scan_section = scan_pre_pages; in dsc_scan_page()
2860 if (dsc->page_count) in dsc_scan_page()
2861 dsc->page[dsc->page_count-1].end = DSC_START(dsc); in dsc_scan_page()
2862 if (dsc->file_length) { in dsc_scan_page()
2863 if ((!dsc->doseps && in dsc_scan_page()
2864 ((DSC_END(dsc) + 32768) < dsc->file_length)) || in dsc_scan_page()
2865 ((dsc->doseps) && in dsc_scan_page()
2866 ((DSC_END(dsc) + 32768) < dsc->doseps_end))) { in dsc_scan_page()
2867 int rc = dsc_error(dsc, CDSC_MESSAGE_EARLY_TRAILER, in dsc_scan_page()
2868 dsc->line, dsc->line_length); in dsc_scan_page()
2875 dsc->scan_section = scan_pre_trailer; in dsc_scan_page()
2876 if (dsc_check_match(dsc)) in dsc_scan_page()
2884 dsc->scan_section = scan_pre_trailer; in dsc_scan_page()
2885 if (dsc_check_match(dsc)) in dsc_scan_page()
2891 dsc->scan_section = scan_pre_trailer; in dsc_scan_page()
2892 if (dsc_check_match(dsc)) in dsc_scan_page()
2898 if (dsc->page_count) in dsc_scan_page()
2899 dsc->page[dsc->page_count-1].end = DSC_START(dsc); in dsc_scan_page()
2900 if (dsc->file_length) { in dsc_scan_page()
2901 if ((DSC_END(dsc)+100 < dsc->file_length) || in dsc_scan_page()
2902 (dsc->doseps && (DSC_END(dsc) + 100 < dsc->doseps_end))) { in dsc_scan_page()
2903 int rc = dsc_error(dsc, CDSC_MESSAGE_EARLY_EOF, in dsc_scan_page()
2904 dsc->line, dsc->line_length); in dsc_scan_page()
2911 dsc->scan_section = scan_eof; in dsc_scan_page()
2912 dsc->eof = TRUE; in dsc_scan_page()
2913 if (dsc_check_match(dsc)) in dsc_scan_page()
2923 if (dsc_check_match(dsc)) in dsc_scan_page()
2931 int rc = dsc_error(dsc, CDSC_MESSAGE_BAD_SECTION, in dsc_scan_page()
2932 dsc->line, dsc->line_length); in dsc_scan_page()
2938 dsc->id = CDSC_PAGETRAILER; in dsc_scan_page()
2942 dsc->id = CDSC_BEGINPAGESETUP; in dsc_scan_page()
2946 dsc->id = CDSC_ENDPAGESETUP; in dsc_scan_page()
2950 dsc->id = CDSC_PAGEMEDIA; in dsc_scan_page()
2951 if (dsc->page_count) in dsc_scan_page()
2952 dsc_parse_media(dsc, &(dsc->page[dsc->page_count-1].media)); in dsc_scan_page()
2955 dsc->id = CDSC_PAPERCOLOR; in dsc_scan_page()
2959 dsc->id = CDSC_PAPERFORM; in dsc_scan_page()
2963 dsc->id = CDSC_PAPERWEIGHT; in dsc_scan_page()
2973 dsc_copy_string(buf, sizeof(buf)-1, dsc->line+n, in dsc_scan_page()
2974 dsc->line_length-n, NULL); in dsc_scan_page()
2975 for (i=0; i<(int)dsc->media_count; i++) { in dsc_scan_page()
2976 if (dsc->media[i] && dsc->media[i]->name && in dsc_scan_page()
2977 (dsc_stricmp(buf, dsc->media[i]->name)==0)) { in dsc_scan_page()
2978 if (dsc->page_count) in dsc_scan_page()
2979 dsc->page[dsc->page_count-1].media = dsc->media[i]; in dsc_scan_page()
2990 if (dsc->page_count) in dsc_scan_page()
2991 dsc->page[dsc->page_count-1].media = m; in dsc_scan_page()
2997 dsc_unknown(dsc); in dsc_scan_page()
3001 if (dsc->page_count) { in dsc_scan_page()
3002 dsc->id = CDSC_PAGEORIENTATION; in dsc_scan_page()
3003 if (dsc_parse_orientation(dsc, in dsc_scan_page()
3004 &(dsc->page[dsc->page_count-1].orientation) ,18)) in dsc_scan_page()
3009 if (dsc->page_count) { in dsc_scan_page()
3010 dsc->id = CDSC_PAGEBOUNDINGBOX; in dsc_scan_page()
3011 if (dsc_parse_bounding_box(dsc, in dsc_scan_page()
3012 &dsc->page[dsc->page_count-1].bbox, 18)) in dsc_scan_page()
3017 if (dsc->page_count) { in dsc_scan_page()
3018 dsc->id = CDSC_VIEWINGORIENTATION; in dsc_scan_page()
3019 if (dsc_parse_viewing_orientation(dsc, in dsc_scan_page()
3020 &dsc->page[dsc->page_count-1].viewing_orientation)) in dsc_scan_page()
3025 if (dsc->page_count) { in dsc_scan_page()
3026 dsc->id = CDSC_PAGECROPBOX; in dsc_scan_page()
3027 if (dsc_parse_float_bounding_box(dsc, in dsc_scan_page()
3028 &(dsc->page[dsc->page_count-1].crop_box), 14)) in dsc_scan_page()
3033 dsc->id = CDSC_BEGINFONT; in dsc_scan_page()
3036 dsc->begin_font_count++; in dsc_scan_page()
3039 dsc->id = CDSC_BEGINFONT; in dsc_scan_page()
3040 dsc->begin_font_count--; in dsc_scan_page()
3043 dsc->id = CDSC_BEGINFEATURE; in dsc_scan_page()
3046 dsc->begin_feature_count++; in dsc_scan_page()
3049 dsc->id = CDSC_ENDFEATURE; in dsc_scan_page()
3050 dsc->begin_feature_count--; in dsc_scan_page()
3053 dsc->id = CDSC_BEGINRESOURCE; in dsc_scan_page()
3056 dsc->begin_resource_count++; in dsc_scan_page()
3059 dsc->id = CDSC_ENDRESOURCE; in dsc_scan_page()
3060 dsc->begin_resource_count--; in dsc_scan_page()
3063 dsc->id = CDSC_BEGINPROCSET; in dsc_scan_page()
3066 dsc->begin_procset_count++; in dsc_scan_page()
3069 dsc->id = CDSC_ENDPROCSET; in dsc_scan_page()
3070 dsc->begin_procset_count--; in dsc_scan_page()
3073 dsc->id = CDSC_INCLUDEFONT; in dsc_scan_page()
3078 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_page()
3079 dsc_unknown(dsc); in dsc_scan_page()
3082 if (dsc->page_count) in dsc_scan_page()
3083 dsc->page[dsc->page_count-1].end = DSC_END(dsc); in dsc_scan_page()
3130 dsc_scan_trailer(CDSC *dsc) in dsc_scan_trailer() argument
3136 char *line = dsc->line; in dsc_scan_trailer()
3138 dsc->id = CDSC_OK; in dsc_scan_trailer()
3140 if (dsc->scan_section == scan_pre_trailer) { in dsc_scan_trailer()
3142 dsc->id = CDSC_TRAILER; in dsc_scan_trailer()
3143 dsc->begintrailer = DSC_START(dsc); in dsc_scan_trailer()
3144 dsc->endtrailer = DSC_END(dsc); in dsc_scan_trailer()
3145 dsc->scan_section = scan_trailer; in dsc_scan_trailer()
3149 dsc->id = CDSC_EOF; in dsc_scan_trailer()
3150 dsc->begintrailer = DSC_START(dsc); in dsc_scan_trailer()
3151 dsc->endtrailer = DSC_END(dsc); in dsc_scan_trailer()
3152 dsc->scan_section = scan_trailer; in dsc_scan_trailer()
3162 if (dsc->beginsetup) in dsc_scan_trailer()
3163 dsc->endsetup = DSC_END(dsc); in dsc_scan_trailer()
3164 else if (dsc->beginprolog) in dsc_scan_trailer()
3165 dsc->endprolog = DSC_END(dsc); in dsc_scan_trailer()
3178 line = dsc->last_line; in dsc_scan_trailer()
3182 dsc_save_line(dsc); in dsc_scan_trailer()
3187 else if (IS_DSC(dsc->line, "%%EOF")) { in dsc_scan_trailer()
3189 dsc->id = CDSC_EOF; in dsc_scan_trailer()
3191 else if (IS_DSC(dsc->line, "%%Trailer")) { in dsc_scan_trailer()
3194 dsc->id = CDSC_TRAILER; in dsc_scan_trailer()
3195 dsc->begintrailer = DSC_START(dsc); in dsc_scan_trailer()
3198 dsc->id = CDSC_PAGES; in dsc_scan_trailer()
3199 if (dsc_parse_pages(dsc) != 0) in dsc_scan_trailer()
3203 dsc->id = CDSC_BOUNDINGBOX; in dsc_scan_trailer()
3204 if (dsc_parse_bounding_box(dsc, &(dsc->bbox), continued ? 3 : 14)) in dsc_scan_trailer()
3208 dsc->id = CDSC_HIRESBOUNDINGBOX; in dsc_scan_trailer()
3209 if (dsc_parse_float_bounding_box(dsc, &(dsc->hires_bbox), in dsc_scan_trailer()
3214 dsc->id = CDSC_CROPBOX; in dsc_scan_trailer()
3215 if (dsc_parse_float_bounding_box(dsc, &(dsc->crop_box), in dsc_scan_trailer()
3220 dsc->id = CDSC_ORIENTATION; in dsc_scan_trailer()
3221 if (dsc_parse_orientation(dsc, &(dsc->page_orientation), continued ? 3 : 14)) in dsc_scan_trailer()
3225 dsc->id = CDSC_PAGEORDER; in dsc_scan_trailer()
3226 if (dsc_parse_order(dsc)) in dsc_scan_trailer()
3230 dsc->id = CDSC_DOCUMENTMEDIA; in dsc_scan_trailer()
3231 if (dsc_parse_document_media(dsc)) in dsc_scan_trailer()
3234 else if (IS_DSC(dsc->line, "%%Page:")) { in dsc_scan_trailer()
3238 int rc = dsc_error(dsc, CDSC_MESSAGE_PAGE_IN_TRAILER, in dsc_scan_trailer()
3239 dsc->line, dsc->line_length); in dsc_scan_trailer()
3244 dsc->scan_section = scan_pre_pages; in dsc_scan_trailer()
3245 if (dsc->page_count) in dsc_scan_trailer()
3246 dsc->page[dsc->page_count-1].end = DSC_START(dsc); in dsc_scan_trailer()
3256 dsc->id = CDSC_DOCUMENTNEEDEDFONTS; in dsc_scan_trailer()
3260 dsc->id = CDSC_DOCUMENTSUPPLIEDFONTS; in dsc_scan_trailer()
3265 dsc->id = CDSC_UNKNOWNDSC; in dsc_scan_trailer()
3266 dsc_unknown(dsc); in dsc_scan_trailer()
3269 dsc->endtrailer = DSC_END(dsc); in dsc_scan_trailer()
3275 dsc_alloc_string(CDSC *dsc, const char *str, int len) in dsc_alloc_string() argument
3278 if (dsc->string_head == NULL) { in dsc_alloc_string()
3279 dsc->string_head = (CDSCSTRING *)dsc_memalloc(dsc, sizeof(CDSCSTRING)); in dsc_alloc_string()
3280 if (dsc->string_head == NULL) in dsc_alloc_string()
3282 dsc->string = dsc->string_head; in dsc_alloc_string()
3283 dsc->string->next = NULL; in dsc_alloc_string()
3284 dsc->string->data = (char *)dsc_memalloc(dsc, CDSC_STRING_CHUNK); in dsc_alloc_string()
3285 if (dsc->string->data == NULL) { in dsc_alloc_string()
3286 dsc_reset(dsc); in dsc_alloc_string()
3289 dsc->string->index = 0; in dsc_alloc_string()
3290 dsc->string->length = CDSC_STRING_CHUNK; in dsc_alloc_string()
3292 if ( dsc->string->index + len + 1 > dsc->string->length) { in dsc_alloc_string()
3294 CDSCSTRING *newstring = (CDSCSTRING *)dsc_memalloc(dsc, sizeof(CDSCSTRING)); in dsc_alloc_string()
3296 dsc_debug_print(dsc, "Out of memory\n"); in dsc_alloc_string()
3302 newstring->data = (char *)dsc_memalloc(dsc, CDSC_STRING_CHUNK); in dsc_alloc_string()
3304 dsc_memfree(dsc, newstring); in dsc_alloc_string()
3305 dsc_debug_print(dsc, "Out of memory\n"); in dsc_alloc_string()
3309 dsc->string->next = newstring; in dsc_alloc_string()
3310 dsc->string = newstring; in dsc_alloc_string()
3312 if ( dsc->string->index + len + 1 > dsc->string->length) in dsc_alloc_string()
3314 p = dsc->string->data + dsc->string->index; in dsc_alloc_string()
3317 dsc->string->index += len + 1; in dsc_alloc_string()
3323 dsc_add_line(CDSC *dsc, const char *line, unsigned int len) in dsc_add_line() argument
3331 newline = dsc_alloc_string(dsc, line, len); in dsc_add_line()
3514 dsc_parse_page(CDSC *dsc) in dsc_parse_page() argument
3523 p = dsc->line + 7; in dsc_parse_page()
3524 pl = dsc_copy_string(page_label, sizeof(page_label), p, dsc->line_length-7, &i); in dsc_parse_page()
3528 if (dsc->line_length - 7 - i == 0) { in dsc_parse_page()
3544 page_ordinal = dsc_get_int(p, dsc->line_length - 7 - i, NULL); in dsc_parse_page()
3547 (dsc->page_count && in dsc_parse_page()
3548 (page_ordinal != dsc->page[dsc->page_count-1].ordinal+1)) ) { in dsc_parse_page()
3549 int rc = dsc_error(dsc, CDSC_MESSAGE_PAGE_ORDINAL, dsc->line, in dsc_parse_page()
3550 dsc->line_length); in dsc_parse_page()
3563 page_number = dsc->page_count; in dsc_parse_page()
3564 dsc_add_page(dsc, page_ordinal, page_label); in dsc_parse_page()
3565 dsc->page[page_number].begin = DSC_START(dsc); in dsc_parse_page()
3566 dsc->page[page_number].end = DSC_START(dsc); in dsc_parse_page()
3568 if (dsc->page[page_number].label == NULL) in dsc_parse_page()
3579 dsc_debug_print(CDSC *dsc, const char *str) in dsc_debug_print() argument
3581 if (dsc->debug_print_fn) in dsc_debug_print()
3582 dsc->debug_print_fn(dsc->caller_data, str); in dsc_debug_print()
3599 dsc_error(CDSC *dsc, unsigned int explanation, in dsc_error() argument
3603 if (dsc->dsc_error_fn) in dsc_error()
3604 return dsc->dsc_error_fn(dsc->caller_data, dsc, in dsc_error()
3614 dsc_dcs2_fixup(CDSC *dsc) in dsc_dcs2_fixup() argument
3621 if (dsc->dcs2) { in dsc_dcs2_fixup()
3627 CDCS2 *pdcs = dsc->dcs2; in dsc_dcs2_fixup()
3631 if (dsc->page_count == 0) in dsc_dcs2_fixup()
3632 code = dsc_add_page(dsc, 1, composite); in dsc_dcs2_fixup()
3633 else if (dsc->page_count == 1) in dsc_dcs2_fixup()
3634 dsc->page[0].label = in dsc_dcs2_fixup()
3635 dsc_alloc_string(dsc, composite, (int)strlen(composite)+1); in dsc_dcs2_fixup()
3638 page_number = dsc->page_count - 1; in dsc_dcs2_fixup()
3639 pbegin = &dsc->page[page_number].begin; in dsc_dcs2_fixup()
3640 pend = &dsc->page[page_number].end; in dsc_dcs2_fixup()
3647 if (dsc->begincomments != dsc->endcomments) { in dsc_dcs2_fixup()
3648 *pbegin = min(dsc->begincomments, *pbegin); in dsc_dcs2_fixup()
3649 dsc->begincomments = 0; in dsc_dcs2_fixup()
3650 *pend = max(dsc->endcomments, *pend); in dsc_dcs2_fixup()
3651 dsc->endcomments = 0; in dsc_dcs2_fixup()
3654 if (dsc->beginpreview != dsc->endpreview) { in dsc_dcs2_fixup()
3655 *pbegin = min(dsc->beginpreview, *pbegin); in dsc_dcs2_fixup()
3656 dsc->beginpreview = 0; in dsc_dcs2_fixup()
3657 *pend = max(dsc->endpreview, *pend); in dsc_dcs2_fixup()
3658 dsc->endpreview = 0; in dsc_dcs2_fixup()
3661 if (dsc->begindefaults != dsc->enddefaults) { in dsc_dcs2_fixup()
3662 *pbegin = min(dsc->begindefaults, *pbegin); in dsc_dcs2_fixup()
3663 dsc->begindefaults = 0; in dsc_dcs2_fixup()
3664 *pend = max(dsc->enddefaults, *pend); in dsc_dcs2_fixup()
3665 dsc->enddefaults = 0; in dsc_dcs2_fixup()
3668 if (dsc->beginprolog != dsc->endprolog) { in dsc_dcs2_fixup()
3669 *pbegin = min(dsc->beginprolog, *pbegin); in dsc_dcs2_fixup()
3670 dsc->beginprolog = 0; in dsc_dcs2_fixup()
3671 *pend = max(dsc->endprolog, *pend); in dsc_dcs2_fixup()
3672 dsc->endprolog = 0; in dsc_dcs2_fixup()
3675 if (dsc->beginsetup != dsc->endsetup) { in dsc_dcs2_fixup()
3676 *pbegin = min(dsc->beginsetup, *pbegin); in dsc_dcs2_fixup()
3677 dsc->beginsetup = 0; in dsc_dcs2_fixup()
3678 *pend = max(dsc->endsetup, *pend); in dsc_dcs2_fixup()
3679 dsc->endsetup = 0; in dsc_dcs2_fixup()
3682 if (dsc->begintrailer != dsc->endtrailer) { in dsc_dcs2_fixup()
3683 *pbegin = min(dsc->begintrailer, *pbegin); in dsc_dcs2_fixup()
3684 dsc->begintrailer = 0; in dsc_dcs2_fixup()
3685 *pend = max(dsc->endtrailer, *pend); in dsc_dcs2_fixup()
3686 dsc->endtrailer = 0; in dsc_dcs2_fixup()
3694 page_number = dsc->page_count; in dsc_dcs2_fixup()
3697 code = dsc_add_page(dsc, page_number+1, pdcs->colourname); in dsc_dcs2_fixup()
3700 dsc->page[page_number].begin = pdcs->begin; in dsc_dcs2_fixup()
3701 dsc->page[page_number].end = pdcs->end; in dsc_dcs2_fixup()
3715 code = dsc_add_page(dsc, page_number+1, pdcs->colourname); in dsc_dcs2_fixup()
3718 dsc->page[page_number].begin = 0; in dsc_dcs2_fixup()
3719 dsc->page[page_number].end = 0; in dsc_dcs2_fixup()
3733 dsc_parse_platefile(CDSC *dsc) in dsc_parse_platefile() argument
3745 if (IS_DSC(dsc->line, "%%PlateFile:")) in dsc_parse_platefile()
3747 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_platefile()
3760 for (i=n; i<dsc->line_length; i++) { in dsc_parse_platefile()
3761 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_platefile()
3769 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_platefile()
3773 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_platefile()
3775 while (IS_WHITE_OR_EOL(dsc->line[n])) in dsc_parse_platefile()
3777 if (dsc->line[n] == '#') { in dsc_parse_platefile()
3782 dcs2.begin= dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_platefile()
3786 dsc_get_int(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_platefile()
3792 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_platefile()
3795 filename = dsc->line+n; in dsc_parse_platefile()
3796 filename_length = dsc->line_length-n; in dsc_parse_platefile()
3800 dsc_unknown(dsc); /* we didn't get all fields */ in dsc_parse_platefile()
3804 dcs2.colourname = dsc_alloc_string(dsc, in dsc_parse_platefile()
3807 dcs2.filetype = dsc_alloc_string(dsc, in dsc_parse_platefile()
3810 dcs2.location = dsc_alloc_string(dsc, in dsc_parse_platefile()
3813 dcs2.filename = dsc_add_line(dsc, filename, filename_length); in dsc_parse_platefile()
3817 dsc->file_length = min(dsc->file_length, dcs2.begin); in dsc_parse_platefile()
3819 pdcs2 = (CDCS2 *)dsc_memalloc(dsc, sizeof(CDCS2)); in dsc_parse_platefile()
3824 if (dsc->dcs2 == NULL) in dsc_parse_platefile()
3825 dsc->dcs2 = pdcs2; in dsc_parse_platefile()
3827 CDCS2 *this_dcs2 = dsc->dcs2; in dsc_parse_platefile()
3839 dsc_parse_dcs1plate(CDSC *dsc) in dsc_parse_dcs1plate() argument
3848 char *line = dsc->line; in dsc_parse_dcs1plate()
3855 line = dsc->last_line; in dsc_parse_dcs1plate()
3884 for (i=n; i<dsc->line_length; i++) { in dsc_parse_dcs1plate()
3885 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_dcs1plate()
3893 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_dcs1plate()
3895 dsc_unknown(dsc); /* we didn't get all fields */ in dsc_parse_dcs1plate()
3898 dcs2.colourname = dsc_alloc_string(dsc, in dsc_parse_dcs1plate()
3900 dcs2.filetype = dsc_alloc_string(dsc, "EPS", 3); in dsc_parse_dcs1plate()
3901 dcs2.location = dsc_alloc_string(dsc, "Local", 5); in dsc_parse_dcs1plate()
3903 dcs2.filename = dsc_alloc_string(dsc, in dsc_parse_dcs1plate()
3906 pdcs2 = (CDCS2 *)dsc_memalloc(dsc, sizeof(CDCS2)); in dsc_parse_dcs1plate()
3911 if (dsc->dcs2 == NULL) in dsc_parse_dcs1plate()
3912 dsc->dcs2 = pdcs2; in dsc_parse_dcs1plate()
3914 CDCS2 *this_dcs2 = dsc->dcs2; in dsc_parse_dcs1plate()
3932 dsc_find_platefile(CDSC *dsc, int page) in dsc_find_platefile() argument
3934 CDCS2 *pdcs = dsc->dcs2; in dsc_find_platefile()
3954 dsc_find_colour(CDSC *dsc, const char *colourname) in dsc_find_colour() argument
3956 CDSCCOLOUR *colour = dsc->colours; in dsc_find_colour()
3966 dsc_parse_process_colours(CDSC *dsc) in dsc_parse_process_colours() argument
3972 if (IS_DSC(dsc->line, "%%DocumentProcessColors:")) in dsc_parse_process_colours()
3974 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_process_colours()
3983 for (i=n; i<dsc->line_length; i++) { in dsc_parse_process_colours()
3984 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_process_colours()
3993 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_process_colours()
3996 if ((pcolour = dsc_find_colour(dsc, colourname)) == NULL) { in dsc_parse_process_colours()
4002 pcolour->name = dsc_alloc_string(dsc, in dsc_parse_process_colours()
4004 if (dsc->colours == NULL) in dsc_parse_process_colours()
4005 dsc->colours = pcolour; in dsc_parse_process_colours()
4007 CDSCCOLOUR *this_colour = dsc->colours; in dsc_parse_process_colours()
4021 dsc_parse_custom_colours(CDSC *dsc) in dsc_parse_custom_colours() argument
4027 if (IS_DSC(dsc->line, "%%DocumentCustomColors:")) in dsc_parse_custom_colours()
4029 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_custom_colours()
4038 for (i=n; i<dsc->line_length; i++) { in dsc_parse_custom_colours()
4039 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_custom_colours()
4048 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_custom_colours()
4051 if ((pcolour = dsc_find_colour(dsc, colourname)) == NULL) { in dsc_parse_custom_colours()
4056 pcolour->name = dsc_alloc_string(dsc, in dsc_parse_custom_colours()
4059 if (dsc->colours == NULL) in dsc_parse_custom_colours()
4060 dsc->colours = pcolour; in dsc_parse_custom_colours()
4062 CDSCCOLOUR *this_colour = dsc->colours; in dsc_parse_custom_colours()
4077 dsc_parse_cmyk_custom_colour(CDSC *dsc) in dsc_parse_cmyk_custom_colour() argument
4084 if (IS_DSC(dsc->line, "%%CMYKCustomColor:")) in dsc_parse_cmyk_custom_colour()
4086 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_cmyk_custom_colour()
4097 for (i=n; i<dsc->line_length; i++) { in dsc_parse_cmyk_custom_colour()
4098 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_cmyk_custom_colour()
4107 cyan = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_cmyk_custom_colour()
4110 magenta = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_cmyk_custom_colour()
4113 yellow = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_cmyk_custom_colour()
4116 black = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_cmyk_custom_colour()
4120 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_cmyk_custom_colour()
4123 if ((pcolour = dsc_find_colour(dsc, colourname)) == NULL) { in dsc_parse_cmyk_custom_colour()
4128 pcolour->name = dsc_alloc_string(dsc, in dsc_parse_cmyk_custom_colour()
4131 if (dsc->colours == NULL) in dsc_parse_cmyk_custom_colour()
4132 dsc->colours = pcolour; in dsc_parse_cmyk_custom_colour()
4134 CDSCCOLOUR *this_colour = dsc->colours; in dsc_parse_cmyk_custom_colour()
4152 dsc_parse_rgb_custom_colour(CDSC *dsc) in dsc_parse_rgb_custom_colour() argument
4159 if (IS_DSC(dsc->line, "%%RGBCustomColor:")) in dsc_parse_rgb_custom_colour()
4161 else if (IS_DSC(dsc->line, "%%+")) in dsc_parse_rgb_custom_colour()
4172 for (i=n; i<dsc->line_length; i++) { in dsc_parse_rgb_custom_colour()
4173 if (!IS_WHITE_OR_EOL(dsc->line[i])) { in dsc_parse_rgb_custom_colour()
4182 red = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_rgb_custom_colour()
4185 green = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_rgb_custom_colour()
4188 blue = dsc_get_real(dsc->line+n, dsc->line_length-n, &i); in dsc_parse_rgb_custom_colour()
4192 dsc->line+n, dsc->line_length-n, &i); in dsc_parse_rgb_custom_colour()
4195 if ((pcolour = dsc_find_colour(dsc, colourname)) == NULL) { in dsc_parse_rgb_custom_colour()
4200 pcolour->name = dsc_alloc_string(dsc, in dsc_parse_rgb_custom_colour()
4203 if (dsc->colours == NULL) in dsc_parse_rgb_custom_colour()
4204 dsc->colours = pcolour; in dsc_parse_rgb_custom_colour()
4206 CDSCCOLOUR *this_colour = dsc->colours; in dsc_parse_rgb_custom_colour()