summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2020-09-10 18:10:49 +0200
committerThomas Deutschmann <whissi@gentoo.org>2020-09-11 20:06:36 +0200
commitacfc02c1747065fe450c7cfeb6f1844b62335f08 (patch)
tree5887806a2e6b99bbb0255e013a9028810e230a7f /devices
parentImport Ghostscript 9.52 (diff)
downloadghostscript-gpl-patches-acfc02c1747065fe450c7cfeb6f1844b62335f08.tar.gz
ghostscript-gpl-patches-acfc02c1747065fe450c7cfeb6f1844b62335f08.tar.bz2
ghostscript-gpl-patches-acfc02c1747065fe450c7cfeb6f1844b62335f08.zip
Import Ghostscript 9.53ghostscript-9.53
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'devices')
-rw-r--r--devices/dcontrib.mak (renamed from devices/contrib.mak)312
-rw-r--r--devices/devs.mak2611
-rw-r--r--devices/gdev3852.c2
-rw-r--r--devices/gdev4081.c2
-rw-r--r--devices/gdev8510.c2
-rw-r--r--devices/gdev8bcm.c2
-rw-r--r--devices/gdev8bcm.h2
-rw-r--r--devices/gdevatx.c2
-rw-r--r--devices/gdevbit.c12
-rw-r--r--devices/gdevbj10.c2
-rw-r--r--devices/gdevbjc.h2
-rw-r--r--devices/gdevbjcl.c2
-rw-r--r--devices/gdevbjcl.h2
-rw-r--r--devices/gdevbmp.c2
-rw-r--r--devices/gdevbmp.h2
-rw-r--r--devices/gdevbmpc.c2
-rw-r--r--devices/gdevccr.c2
-rw-r--r--devices/gdevcdj.c8
-rw-r--r--devices/gdevcfax.c2
-rw-r--r--devices/gdevchameleon.c25
-rw-r--r--devices/gdevcif.c2
-rw-r--r--devices/gdevclj.c2
-rw-r--r--devices/gdevcljc.c2
-rw-r--r--devices/gdevcmykog.c4
-rw-r--r--devices/gdevcslw.c2
-rw-r--r--devices/gdevdfax.c2
-rw-r--r--devices/gdevdjet.c2
-rw-r--r--devices/gdevdjtc.c2
-rw-r--r--devices/gdevdljm.c2
-rw-r--r--devices/gdevdljm.h2
-rw-r--r--devices/gdevdm24.c6
-rw-r--r--devices/gdevdsp.c854
-rw-r--r--devices/gdevdsp.h182
-rw-r--r--devices/gdevdsp2.h11
-rw-r--r--devices/gdevepsc.c2
-rw-r--r--devices/gdevepsn.c2
-rw-r--r--devices/gdevescp.c2
-rw-r--r--devices/gdevfax.c14
-rw-r--r--devices/gdevfax.h2
-rw-r--r--devices/gdevfpng.c2
-rw-r--r--devices/gdevhl7x.c2
-rw-r--r--devices/gdevicov.c2
-rw-r--r--devices/gdevijs.c4
-rw-r--r--devices/gdevimgn.c2
-rw-r--r--devices/gdevjbig2.c2
-rw-r--r--devices/gdevjpeg.c10
-rw-r--r--devices/gdevjpx.c2
-rw-r--r--devices/gdevl31s.c2
-rw-r--r--devices/gdevlbp8.c2
-rw-r--r--devices/gdevlj56.c2
-rw-r--r--devices/gdevlp8k.c2
-rw-r--r--devices/gdevlxm.c2
-rw-r--r--devices/gdevmeds.c2
-rw-r--r--devices/gdevmeds.h2
-rw-r--r--devices/gdevmgr.c9
-rw-r--r--devices/gdevmgr.h2
-rw-r--r--devices/gdevmiff.c2
-rw-r--r--devices/gdevn533.c2
-rw-r--r--devices/gdevo182.c2
-rw-r--r--devices/gdevocr.c265
-rw-r--r--devices/gdevokii.c2
-rw-r--r--devices/gdevpbm.c2
-rw-r--r--devices/gdevpcl.c2
-rw-r--r--devices/gdevpcl.h2
-rw-r--r--devices/gdevpcx.c2
-rw-r--r--devices/gdevpdfimg.c241
-rw-r--r--devices/gdevpdfimg.h105
-rw-r--r--devices/gdevpdfocr.c727
-rw-r--r--devices/gdevpe.c2
-rw-r--r--devices/gdevperm.c2
-rw-r--r--devices/gdevphex.c2
-rw-r--r--devices/gdevpjet.c2
-rw-r--r--devices/gdevplan.c2
-rw-r--r--devices/gdevplib.c2
-rw-r--r--devices/gdevplib.h2
-rw-r--r--devices/gdevpm.h2
-rw-r--r--devices/gdevpng.c65
-rw-r--r--devices/gdevpsd.c13
-rw-r--r--devices/gdevpsd.h2
-rw-r--r--devices/gdevpsim.c2
-rw-r--r--devices/gdevpxut.c2
-rw-r--r--devices/gdevpxut.h2
-rw-r--r--devices/gdevrinkj.c2
-rw-r--r--devices/gdevsj48.c2
-rw-r--r--devices/gdevsnfb.c2
-rw-r--r--devices/gdevsppr.c2
-rw-r--r--devices/gdevstc.c2
-rw-r--r--devices/gdevstc.h2
-rw-r--r--devices/gdevstc1.c2
-rw-r--r--devices/gdevstc2.c2
-rw-r--r--devices/gdevstc3.c2
-rw-r--r--devices/gdevstc4.c2
-rw-r--r--devices/gdevtfax.c2
-rw-r--r--devices/gdevtfax.h2
-rw-r--r--devices/gdevtfnx.c4
-rw-r--r--devices/gdevtifs.c56
-rw-r--r--devices/gdevtifs.h8
-rw-r--r--devices/gdevtknk.c2
-rw-r--r--devices/gdevtrac.c2
-rw-r--r--devices/gdevtsep.c71
-rw-r--r--devices/gdevupd.c6
-rw-r--r--devices/gdevwpr2.c2
-rw-r--r--devices/gdevx.c6
-rw-r--r--devices/gdevx.h2
-rw-r--r--devices/gdevxalt.c2
-rw-r--r--devices/gdevxcf.c2
-rw-r--r--devices/gdevxcmp.c2
-rw-r--r--devices/gdevxcmp.h2
-rw-r--r--devices/gdevxini.c2
-rw-r--r--devices/gdevxres.c2
-rw-r--r--devices/gxfcopy.c39
-rw-r--r--devices/gxfcopy.h2
-rw-r--r--devices/minftrsz.c2
-rw-r--r--devices/minftrsz.h2
-rw-r--r--devices/rinkj/evenbetter-rll.c2
-rw-r--r--devices/rinkj/evenbetter-rll.h7
-rw-r--r--devices/rinkj/rinkj-byte-stream.c2
-rw-r--r--devices/rinkj/rinkj-byte-stream.h7
-rw-r--r--devices/rinkj/rinkj-config.c2
-rw-r--r--devices/rinkj/rinkj-config.h7
-rw-r--r--devices/rinkj/rinkj-device.c2
-rw-r--r--devices/rinkj/rinkj-device.h6
-rw-r--r--devices/rinkj/rinkj-dither.c2
-rw-r--r--devices/rinkj/rinkj-dither.h6
-rw-r--r--devices/rinkj/rinkj-epson870.c2
-rw-r--r--devices/rinkj/rinkj-epson870.h6
-rw-r--r--devices/rinkj/rinkj-screen-eb.c2
-rw-r--r--devices/rinkj/rinkj-screen-eb.h7
-rw-r--r--devices/vector/gdevagl.c2
-rw-r--r--devices/vector/gdevagl.h7
-rw-r--r--devices/vector/gdevpdf.c56
-rw-r--r--devices/vector/gdevpdfb.c2
-rw-r--r--devices/vector/gdevpdfb.h2
-rw-r--r--devices/vector/gdevpdfc.c11
-rw-r--r--devices/vector/gdevpdfc.h2
-rw-r--r--devices/vector/gdevpdfd.c146
-rw-r--r--devices/vector/gdevpdfe.c2
-rw-r--r--devices/vector/gdevpdfg.c13
-rw-r--r--devices/vector/gdevpdfg.h6
-rw-r--r--devices/vector/gdevpdfi.c20
-rw-r--r--devices/vector/gdevpdfj.c2
-rw-r--r--devices/vector/gdevpdfk.c24
-rw-r--r--devices/vector/gdevpdfm.c2
-rw-r--r--devices/vector/gdevpdfo.c6
-rw-r--r--devices/vector/gdevpdfo.h2
-rw-r--r--devices/vector/gdevpdfp.c2
-rw-r--r--devices/vector/gdevpdfr.c2
-rw-r--r--devices/vector/gdevpdft.c13
-rw-r--r--devices/vector/gdevpdfu.c67
-rw-r--r--devices/vector/gdevpdfv.c2
-rw-r--r--devices/vector/gdevpdfx.h15
-rw-r--r--devices/vector/gdevpdt.c2
-rw-r--r--devices/vector/gdevpdt.h2
-rw-r--r--devices/vector/gdevpdtb.c4
-rw-r--r--devices/vector/gdevpdtb.h2
-rw-r--r--devices/vector/gdevpdtc.c2
-rw-r--r--devices/vector/gdevpdtd.c2
-rw-r--r--devices/vector/gdevpdtd.h2
-rw-r--r--devices/vector/gdevpdte.c4
-rw-r--r--devices/vector/gdevpdtf.c3
-rw-r--r--devices/vector/gdevpdtf.h12
-rw-r--r--devices/vector/gdevpdti.c6
-rw-r--r--devices/vector/gdevpdti.h2
-rw-r--r--devices/vector/gdevpdts.c47
-rw-r--r--devices/vector/gdevpdts.h2
-rw-r--r--devices/vector/gdevpdtt.c2
-rw-r--r--devices/vector/gdevpdtt.h2
-rw-r--r--devices/vector/gdevpdtv.c2
-rw-r--r--devices/vector/gdevpdtv.h2
-rw-r--r--devices/vector/gdevpdtw.c6
-rw-r--r--devices/vector/gdevpdtw.h2
-rw-r--r--devices/vector/gdevpdtx.h2
-rw-r--r--devices/vector/gdevpsdf.h7
-rw-r--r--devices/vector/gdevpsdi.c8
-rw-r--r--devices/vector/gdevpsdp.c93
-rw-r--r--devices/vector/gdevpsds.c8
-rw-r--r--devices/vector/gdevpsds.h2
-rw-r--r--devices/vector/gdevpsdu.c2
-rw-r--r--devices/vector/gdevpsf.h2
-rw-r--r--devices/vector/gdevpsf1.c2
-rw-r--r--devices/vector/gdevpsf2.c4
-rw-r--r--devices/vector/gdevpsfm.c2
-rw-r--r--devices/vector/gdevpsft.c2
-rw-r--r--devices/vector/gdevpsfu.c2
-rw-r--r--devices/vector/gdevpsfx.c2
-rw-r--r--devices/vector/gdevpsu.c2
-rw-r--r--devices/vector/gdevpsu.h2
-rw-r--r--devices/vector/gdevpx.c2
-rw-r--r--devices/vector/gdevtxtw.c199
-rw-r--r--devices/vector/gdevxps.c4
-rw-r--r--devices/vector/opdfread.ps202
-rw-r--r--devices/vector/whitelst.c2
-rw-r--r--devices/vector/whitelst.h2
193 files changed, 4495 insertions, 2474 deletions
diff --git a/devices/contrib.mak b/devices/dcontrib.mak
index 7f1cf863..975c68bd 100644
--- a/devices/contrib.mak
+++ b/devices/dcontrib.mak
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2019 Artifex Software, Inc.
+# Copyright (C) 2001-2020 Artifex Software, Inc.
# All Rights Reserved.
#
# This software is provided AS-IS with no warranty, either express or
@@ -16,7 +16,7 @@
# makefile for contributed device drivers.
# Define the name of this makefile.
-DCONTRIB_MAK=$(DEVSRC)contrib.mak $(TOP_MAKEFILES)
+DCONTRIB_MAK=$(DEVSRC)dcontrib.mak $(TOP_MAKEFILES)
###### --------------------------- Catalog -------------------------- ######
@@ -82,7 +82,7 @@ DCONTRIB_MAK=$(DEVSRC)contrib.mak $(TOP_MAKEFILES)
# okiibm Okidata MicroLine IBM-compatible printers
# paintjet alternate H-P PaintJet color printer
# photoex Epson Stylus Color Photo, Photo EX, Photo 700
-# pj H-P PaintJet XL driver
+# pj H-P PaintJet XL driver
# pjetxl alternate H-P PaintJet XL driver
# pjxl H-P PaintJet XL color printer
# pjxl300 H-P PaintJet XL300 color printer;
@@ -427,7 +427,7 @@ $(DD)paintjet.dev : $(PJET) $(DD)page.dev $(DCONTRIB_MAK) $(MAKEDIRS)
$(DD)pjetxl.dev : $(PJET) $(DD)page.dev $(DCONTRIB_MAK) $(MAKEDIRS)
$(SETPDEV) $(DD)pjetxl $(PJET)
-###--------------------- The Brother HL 7x0 printer --------------------- ###
+###--------------------- The Brother HL 7x0 printer --------------------- ###
### Note: this driver was contributed by users: please contact ###
### Pierre-Olivier Gaillard (pierre.gaillard@hol.fr) ###
### for questions about the basic driver; ###
@@ -754,305 +754,305 @@ $(DEVSRC)gdevmeds.h:$(GLSRC)gxclthrd.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxline.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxline.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevmeds.h:$(GLSRC)math_.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gx.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsht.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gp.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)memento.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)memory_.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)memento.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevmeds.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)scommon.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevmeds.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevmeds.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevmeds.h:$(GLSRC)std.h
$(DEVSRC)gdevmeds.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)std.h
$(DEVSRC)gdevmeds.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevmeds.h:$(GLGEN)arch.h
+$(DEVSRC)gdevmeds.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevstc.h:$(GLSRC)gdevprn.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsstate.h
$(DEVSRC)gdevstc.h:$(GLSRC)string_.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsstrtok.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsovrc.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsstate.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxclthrd.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsovrc.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxline.h
$(DEVSRC)gdevstc.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxline.h
$(DEVSRC)gdevstc.h:$(GLSRC)gscolor.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsline.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevstc.h:$(GLSRC)math_.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevstc.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevstc.h:$(GLSRC)gx.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsline.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevstc.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevstc.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsht.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevstc.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevstc.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevstc.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevstc.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevstc.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevstc.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevstc.h:$(GLSRC)gp.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevstc.h:$(GLSRC)memento.h
+$(DEVSRC)gdevstc.h:$(GLSRC)memory_.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevstc.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevstc.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevstc.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevstc.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevstc.h:$(GLSRC)memento.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevstc.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevstc.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevstc.h:$(GLSRC)scommon.h
$(DEVSRC)gdevstc.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevstc.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevstc.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevstc.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevstc.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevstc.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevstc.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevstc.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevstc.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevstc.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevstc.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevstc.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevstc.h:$(GLSRC)std.h
$(DEVSRC)gdevstc.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevstc.h:$(GLSRC)std.h
$(DEVSRC)gdevstc.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevstc.h:$(GLGEN)arch.h
+$(DEVSRC)gdevstc.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxdevcli.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gstext.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxrplane.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxfmap.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxftype.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsgstate.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsdsrc.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gp.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)memento.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevmgr.h:$(GLSRC)srdline.h
$(DEVSRC)gdevmgr.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)memento.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gscsel.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gsbitmap.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevmgr.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevmgr.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevmgr.h:$(GLSRC)std.h
$(DEVSRC)gdevmgr.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)std.h
$(DEVSRC)gdevmgr.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevmgr.h:$(GLGEN)arch.h
+$(DEVSRC)gdevmgr.h:$(GLSRC)gs_dll_call.h
diff --git a/devices/devs.mak b/devices/devs.mak
index a9c6ec18..5526a907 100644
--- a/devices/devs.mak
+++ b/devices/devs.mak
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2019 Artifex Software, Inc.
+# Copyright (C) 2001-2020 Artifex Software, Inc.
# All Rights Reserved.
#
# This software is provided AS-IS with no warranty, either express or
@@ -295,7 +295,7 @@ $(DD)display.dev : $(display_) $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
$(DEVOBJ)gdevdsp.$(OBJ) : $(DEVSRC)gdevdsp.c $(string__h) $(gdevkrnlsclass_h)\
$(gp_h) $(gpcheck_h) $(gdevpccm_h) $(gsparam_h) $(gsdevice_h)\
$(GDEVH) $(gxdevmem_h) $(gdevdevn_h) $(gsequivc_h) $(gdevdsp_h) $(gdevdsp2_h) \
- $(DEVS_MAK) $(MAKEDIRS)
+ $(gsicc_manage_h) $(DEVS_MAK) $(MAKEDIRS)
$(DEVCC) $(DEVO_)gdevdsp.$(OBJ) $(C_) $(DEVSRC)gdevdsp.c
### -------------------------- The X11 device -------------------------- ###
@@ -1455,6 +1455,28 @@ $(DD)pamcmyk32.dev : $(pxm_) $(GLD)page.dev $(GDEV) \
$(DD)pam.dev : $(pxm_) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
$(SETPDEV2) $(DD)pam $(pxm_)
+### --------------- OCR device --------------- ###
+
+ocr_=$(DEVOBJ)gdevocr.$(OBJ)
+libocr_dev=$(DEVOBJ)libocr.dev
+ocr_i_=-include $(DEVOBJ)libocr
+
+$(DEVOBJ)gdevocr.$(OBJ) : $(DEVSRC)gdevocr.c\
+ $(gdevprn_h) $(gdevpccm_h) $(gscdefs_h) $(ocr__h) $(DEVS_MAK) $(MAKEDIRS)
+ $(CC_) $(I_)$(DEVI_) $(II)$(PI_)$(_I) $(PCF_) $(GLF_) $(DEVO_)gdevocr.$(OBJ) $(C_) $(DEVSRC)gdevocr.c
+
+$(DD)ocr.dev : $(libocr_dev) $(ocr_) $(GLD)page.dev $(GDEV) \
+ $(DEVS_MAK) $(MAKEDIRS)
+ $(SETPDEV2) $(DD)ocr $(ocr_)
+ $(ADDMOD) $(DD)ocr $(ocr_i_)
+
+### --------------- OCR device --------------- ###
+
+$(DD)hocr.dev : $(libocr_dev) $(hocr_) $(GLD)page.dev $(GDEV) \
+ $(DEVS_MAK) $(MAKEDIRS)
+ $(SETPDEV2) $(DD)hocr $(hocr_)
+ $(ADDMOD) $(DD)hocr $(hocr_i_)
+
### --------------- Portable Network Graphics file format --------------- ###
### Requires libpng 0.81 and zlib 0.95 (or more recent versions). ###
### See png.mak and zlib.mak for more details. ###
@@ -1464,7 +1486,7 @@ libpng_dev=$(PNGGENDIR)$(D)libpng.dev
png_i_=-include $(PNGGENDIR)$(D)libpng
$(DEVOBJ)gdevpng.$(OBJ) : $(DEVSRC)gdevpng.c\
- $(gdevprn_h) $(gdevpccm_h) $(gscdefs_h) $(png__h) $(DEVS_MAK) $(MAKEDIRS)
+ $(gdevprn_h) $(gdevpccm_h) $(gscdefs_h) $(png__h) $(gxdevsop_h) $(DEVS_MAK) $(MAKEDIRS)
$(CC_) $(I_)$(DEVI_) $(II)$(PI_)$(_I) $(PCF_) $(GLF_) $(DEVO_)gdevpng.$(OBJ) $(C_) $(DEVSRC)gdevpng.c
$(DD)pngmono.dev : $(libpng_dev) $(png_) $(GLD)page.dev $(GDEV) \
@@ -1915,6 +1937,9 @@ $(DEVOBJ)gdevcmykog.$(OBJ) : $(DEVSRC)gdevcmykog.c $(GDEV) \
$(DEVCC) $(DEVO_)gdevcmykog.$(OBJ) $(C_) $(DEVSRC)gdevcmykog.c
### -------- PDF as an image downscaled device --------------------- ###
+
+gdevpdfimg_h=$(DEVSRC)gdevpdfimg.h
+
$(DD)pdfimage8.dev : $(DEVOBJ)gdevpdfimg.$(OBJ) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
$(SETPDEV2) $(DD)pdfimage8 $(DEVOBJ)gdevpdfimg.$(OBJ)
$(ADDMOD) $(DD)pdfimage8 -include $(GLD)page
@@ -1932,11 +1957,31 @@ $(DD)PCLm.dev : $(DEVOBJ)gdevpdfimg.$(OBJ) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(
$(ADDMOD) $(DD)PCLm -include $(GLD)page
$(DEVOBJ)gdevpdfimg.$(OBJ) : $(DEVSRC)gdevpdfimg.c $(AK) $(gdevkrnlsclass_h) \
- $(DEVS_MAK) $(MAKEDIRS) $(arch_h) $(stdint__h) $(gdevprn_h) $(gxdownscale_h) \
+ $(DEVS_MAK) $(arch_h) $(stdint__h) $(gdevprn_h) $(gxdownscale_h) \
$(stream_h) $(spprint_h) $(time__h) $(smd5_h) $(sstring_h) $(strimpl_h) \
- $(slzwx_h) $(szlibx_h) $(jpeglib__h) $(sdct_h) $(srlx_h) $(gsicc_cache_h) $(sjpeg_h)
+ $(slzwx_h) $(szlibx_h) $(jpeglib__h) $(sdct_h) $(srlx_h) $(gsicc_cache_h) $(sjpeg_h) $(gdevpdfimg_h) $(MAKEDIRS)
$(DEVCC) $(DEVO_)gdevpdfimg.$(OBJ) $(C_) $(DEVSRC)gdevpdfimg.c
+### -------- PDF image with OCRd text overlay --------------------- ###
+
+$(DD)pdfocr8.dev : $(DEVOBJ)gdevpdfocr.$(OBJ) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
+ $(SETPDEV2) $(DD)pdfocr8 $(DEVOBJ)gdevpdfocr.$(OBJ)
+ $(ADDMOD) $(DD)pdfocr8 -include $(GLD)page
+
+$(DD)pdfocr24.dev : $(DEVOBJ)gdevpdfocr.$(OBJ) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
+ $(SETPDEV2) $(DD)pdfocr24 $(DEVOBJ)gdevpdfocr.$(OBJ)
+ $(ADDMOD) $(DD)pdfocr24 -include $(GLD)page
+
+$(DD)pdfocr32.dev : $(DEVOBJ)gdevpdfocr.$(OBJ) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
+ $(SETPDEV2) $(DD)pdfocr32 $(DEVOBJ)gdevpdfocr.$(OBJ)
+ $(ADDMOD) $(DD)pdfocr32 -include $(GLD)page
+
+$(DEVOBJ)gdevpdfocr.$(OBJ) : $(DEVSRC)gdevpdfocr.c $(AK) $(gdevkrnlsclass_h) \
+ $(DEVS_MAK) $(MAKEDIRS) $(arch_h) $(stdint__h) $(gdevprn_h) $(gxdownscale_h) \
+ $(stream_h) $(spprint_h) $(time__h) $(smd5_h) $(sstring_h) $(strimpl_h) \
+ $(slzwx_h) $(szlibx_h) $(jpeglib__h) $(sdct_h) $(srlx_h) $(gsicc_cache_h) $(sjpeg_h) $(gdevpdfimg_h)
+ $(DEVCC) $(DEVO_)gdevpdfocr.$(OBJ) $(C_) $(DEVSRC)gdevpdfocr.c
+
### -------- URF device --------------------- ###
urf=$(DEVOBJ)gdevurf.$(OBJ)
$(DD)urfgray.dev : $(urf) $(GLD)page.dev $(GDEV) $(DEVS_MAK) $(MAKEDIRS)
@@ -1958,227 +2003,227 @@ $(DEVOBJ)gdevurf.$(OBJ) : $(URFSRCDIR)$(D)gdevurf.c $(AK) $(PDEVH) \
# Dependencies:
$(DEVSRC)gxfcopy.h:$(GLSRC)gsfont.h
+$(DEVSRC)gxfcopy.h:$(GLSRC)gsgstate.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gsmatrix.h
$(DEVSRC)gxfcopy.h:$(GLSRC)scommon.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gsstype.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gsmemory.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gslibctx.h
-$(DEVSRC)gxfcopy.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gxfcopy.h:$(GLSRC)stdio_.h
-$(DEVSRC)gxfcopy.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gxfcopy.h:$(GLSRC)gsccode.h
$(DEVSRC)gxfcopy.h:$(GLSRC)stdint_.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gxfcopy.h:$(GLSRC)gsccode.h
-$(DEVSRC)gxfcopy.h:$(GLSRC)std.h
$(DEVSRC)gxfcopy.h:$(GLSRC)gstypes.h
+$(DEVSRC)gxfcopy.h:$(GLSRC)std.h
$(DEVSRC)gxfcopy.h:$(GLSRC)stdpre.h
$(DEVSRC)gxfcopy.h:$(GLGEN)arch.h
+$(DEVSRC)gxfcopy.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdev8bcm.h:$(GLSRC)gxcvalue.h
$(DEVSRC)gdev8bcm.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxdevcli.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gstext.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxrplane.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxfmap.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxftype.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsgstate.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsdsrc.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gp.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)memento.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevpcl.h:$(GLSRC)srdline.h
$(DEVSRC)gdevpcl.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)memento.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gscsel.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gsbitmap.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevpcl.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevpcl.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevpcl.h:$(GLSRC)std.h
$(DEVSRC)gdevpcl.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)std.h
$(DEVSRC)gdevpcl.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevpcl.h:$(GLGEN)arch.h
+$(DEVSRC)gdevpcl.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsgstate.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsmatrix.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsparam.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)scommon.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsstype.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gslibctx.h
-$(DEVVECSRC)gdevpsu.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpsu.h:$(GLSRC)gsgstate.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpsu.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpsu.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsu.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpsu.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpsu.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gdevprn.h
$(DEVSRC)gdevdljm.h:$(GLSRC)string_.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsstrtok.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxclthrd.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxclist.h
-$(DEVSRC)gdevdljm.h:$(DEVSRC)gdevpcl.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxline.h
+$(DEVSRC)gdevdljm.h:$(DEVSRC)gdevpcl.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxline.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevdljm.h:$(GLSRC)math_.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gx.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsht.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gp.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)memento.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)memory_.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)memento.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevdljm.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)scommon.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevdljm.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevdljm.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevdljm.h:$(GLSRC)std.h
$(DEVSRC)gdevdljm.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)std.h
$(DEVSRC)gdevdljm.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevdljm.h:$(GLGEN)arch.h
+$(DEVSRC)gdevdljm.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevxcmp.h:$(GLSRC)gxcvalue.h
$(DEVSRC)gdevxcmp.h:$(GLSRC)x_.h
$(DEVSRC)gdevxcmp.h:$(GLSRC)std.h
@@ -2187,78 +2232,79 @@ $(DEVSRC)gdevxcmp.h:$(GLGEN)arch.h
$(DEVSRC)gdevx.h:$(GLSRC)gdevbbox.h
$(DEVSRC)gdevx.h:$(DEVSRC)gdevxcmp.h
$(DEVSRC)gdevx.h:$(GLSRC)gxdevcli.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevx.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevx.h:$(GLSRC)gstext.h
$(DEVSRC)gdevx.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevx.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevx.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevx.h:$(GLSRC)gxrplane.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevx.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevx.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevx.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevx.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxfmap.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxftype.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevx.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevx.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevx.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevx.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxhttile.h
-$(DEVSRC)gdevx.h:$(GLSRC)x_.h
$(DEVSRC)gdevx.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevx.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevx.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevx.h:$(GLSRC)x_.h
+$(DEVSRC)gdevx.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsgstate.h
$(DEVSRC)gdevx.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevx.h:$(GLSRC)gsdsrc.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevx.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevx.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevx.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevx.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevx.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevx.h:$(GLSRC)gp.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevx.h:$(GLSRC)memento.h
+$(DEVSRC)gdevx.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevx.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevx.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevx.h:$(GLSRC)srdline.h
$(DEVSRC)gdevx.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevx.h:$(GLSRC)memento.h
-$(DEVSRC)gdevx.h:$(GLSRC)gscsel.h
$(DEVSRC)gdevx.h:$(GLSRC)gsbitmap.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevx.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevx.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevx.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevx.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevx.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevx.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevx.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevx.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevx.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevx.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevx.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevx.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevx.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevx.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevx.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevx.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevx.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevx.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevx.h:$(GLSRC)std.h
$(DEVSRC)gdevx.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevx.h:$(GLSRC)std.h
$(DEVSRC)gdevx.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevx.h:$(GLGEN)arch.h
+$(DEVSRC)gdevx.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevpxut.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevpxut.h:$(GLSRC)gsgstate.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gxfixed.h
+$(DEVSRC)gdevpxut.h:$(GLSRC)gsmatrix.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gsparam.h
$(DEVSRC)gdevpxut.h:$(GLSRC)scommon.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gdevpxat.h
@@ -2267,1102 +2313,1101 @@ $(DEVSRC)gdevpxut.h:$(GLSRC)gdevpxop.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gsstype.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gslibctx.h
-$(DEVSRC)gdevpxut.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevpxut.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevpxut.h:$(GLSRC)gsgstate.h
$(DEVSRC)gdevpxut.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevpxut.h:$(GLSRC)std.h
$(DEVSRC)gdevpxut.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevpxut.h:$(GLSRC)std.h
$(DEVSRC)gdevpxut.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevpxut.h:$(GLGEN)arch.h
+$(DEVSRC)gdevpxut.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gstrans.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcomp.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcolor2.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)spsdf.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)spsdf.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsequivc.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcomp.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxmatrix.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)shc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscolor2.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpsdf.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsdf.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpsdf.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpsdf.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)strimpl.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsgstate.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsiparam.h
-$(DEVVECSRC)gdevpsds.h:$(GLSRC)gxbitmap.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsmatrix.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsparam.h
-$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsccolor.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsstruct.h
+$(DEVVECSRC)gdevpsds.h:$(GLSRC)gxbitmap.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)scommon.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsccolor.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsstype.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gslibctx.h
-$(DEVVECSRC)gdevpsds.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpsds.h:$(GLSRC)gsgstate.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpsds.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpsds.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsds.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpsds.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpsds.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdfc.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdfc.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdfc.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdfc.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdfc.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdfc.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdfg.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdfg.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdfg.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdfg.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdfg.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdfg.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdfo.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdfo.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)spprint.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)smd5.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)smd5.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsrect.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmd5.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmd5.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdfo.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdfo.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdfo.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdfo.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdfx.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdfx.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdfx.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdfx.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdfx.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfcid.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gstype1.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfont42.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxcid.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsnotify.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gstext.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfcache.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsdcolor.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsfont.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsdcolor.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsnotify.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsxfont.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxcid.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsiparam.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gscpm.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsparam.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxbitmap.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)memento.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxarith.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gpsync.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsstype.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsmemory.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gpsync.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gslibctx.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)stdio_.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpsf.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpsf.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpsf.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpsf.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdt.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdt.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdt.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdt.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdt.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdt.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtx.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdtx.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtx.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtx.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtx.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtx.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtx.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtb.h:$(DEVVECSRC)gdevpdtx.h
$(DEVVECSRC)gdevpdtb.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdtb.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtb.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtb.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtb.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtb.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtb.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtd.h:$(DEVVECSRC)gdevpdtb.h
$(DEVVECSRC)gdevpdtd.h:$(DEVVECSRC)gdevpdtx.h
$(DEVVECSRC)gdevpdtd.h:$(DEVVECSRC)gdevpdt.h
@@ -3370,516 +3415,516 @@ $(DEVVECSRC)gdevpdtd.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtd.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtd.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtd.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtd.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtd.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtf.h:$(DEVVECSRC)gdevpdtx.h
$(DEVVECSRC)gdevpdtf.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdtf.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtf.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtf.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtf.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtf.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtf.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdti.h:$(DEVVECSRC)gdevpdtx.h
$(DEVVECSRC)gdevpdti.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdti.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdti.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdti.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdti.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdti.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdti.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdts.h:$(DEVVECSRC)gdevpdtx.h
$(DEVVECSRC)gdevpdts.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdts.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdts.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdts.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdts.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdts.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdts.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtt.h:$(DEVVECSRC)gdevpdts.h
$(DEVVECSRC)gdevpdtt.h:$(DEVVECSRC)gdevpdtf.h
$(DEVVECSRC)gdevpdtt.h:$(DEVVECSRC)gdevpdtx.h
@@ -3888,367 +3933,367 @@ $(DEVVECSRC)gdevpdtt.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtt.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtt.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtt.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtt.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtt.h:$(GLSRC)gs_dll_call.h
$(DEVVECSRC)gdevpdtw.h:$(DEVVECSRC)gdevpdtx.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfcmap.h
$(DEVVECSRC)gdevpdtw.h:$(DEVVECSRC)gdevpdt.h
$(DEVVECSRC)gdevpdtw.h:$(DEVVECSRC)gdevpdfx.h
$(DEVVECSRC)gdevpdtw.h:$(DEVVECSRC)gdevpsdf.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevvec.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxgstate.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gstrans.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)sarc4.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxline.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsht1.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfont.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevbbox.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcomp.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)sarc4.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)math_.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)scfx.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevp14.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevbbox.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcolor2.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxpcolor.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)spprint.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)spsdf.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxpcolor.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdevmem.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfont.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gdevdevn.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gspath.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxclipsr.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcomp.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdcolor.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcid.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsgdata.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfcmap.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdcolor.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxblend.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)shc.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsgcache.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscolor2.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxmatrix.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfapi.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscindex.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsnotify.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdevice.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsht.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfcmap.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcpath.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsht.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxiparam.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)sa85x.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsequivc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)sa85d.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdevmem.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdevcli.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxpcache.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscindex.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcmap.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsptype1.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscie.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxtext.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gstext.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsnamecl.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gstparam.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxstate.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gspcolor.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfmap.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stream.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcspace.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsropt.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfunc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsmalloc.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfunc.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcspace.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxctable.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxiodev.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsuid.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcmap.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxhldevc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)strimpl.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxrplane.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscsel.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfcache.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfont.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsimage.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsdcolor.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdda.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcvalue.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfont.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfmap.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbcache.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsropt.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxdda.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxpath.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxiclass.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfrac.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxtmap.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxftype.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscms.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscspace.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxpath.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbcache.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsdevice.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxarith.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxstdio.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gspenum.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsrect.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gslparam.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsdevice.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbitfmt.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsgcache.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscspace.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsnotify.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxstdio.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsxfont.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsiparam.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcid.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsdsrc.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsio.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbitmap.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsmatrix.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscpm.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsiparam.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxfixed.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsrefct.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscompt.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsmatrix.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gspenum.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxhttile.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsparam.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsrefct.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gp.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)memento.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsuid.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsstruct.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxsync.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxbitmap.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)vmsmath.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)srdline.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)scommon.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)memento.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)vmsmath.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscsel.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsbitmap.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsfname.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsbitmap.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsccolor.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxarith.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stat_.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxtmap.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gpsync.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)memory_.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsstype.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsmemory.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gpgetenv.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscdefs.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gs_dll_call.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stdio_.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gscompt.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsbittab.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gslibctx.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gxcindex.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsgstate.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stdio_.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsccode.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stdint_.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gssprintf.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsccode.h
-$(DEVVECSRC)gdevpdtw.h:$(GLSRC)std.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gsbittab.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gstypes.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)std.h
$(DEVVECSRC)gdevpdtw.h:$(GLSRC)stdpre.h
$(DEVVECSRC)gdevpdtw.h:$(GLGEN)arch.h
+$(DEVVECSRC)gdevpdtw.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxline.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxline.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevbmp.h:$(GLSRC)math_.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsequivc.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxdcolor.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsht.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gp.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)memento.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxbitmap.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)vmsmath.h
$(DEVSRC)gdevbmp.h:$(GLSRC)srdline.h
$(DEVSRC)gdevbmp.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)memento.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsbitmap.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevbmp.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevbmp.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevbmp.h:$(GLSRC)std.h
$(DEVSRC)gdevbmp.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)std.h
$(DEVSRC)gdevbmp.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevbmp.h:$(GLGEN)arch.h
+$(DEVSRC)gdevbmp.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gdevdevnprn.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gdevprn.h
$(DEVSRC)gdevpsd.h:$(GLSRC)string_.h
@@ -4257,117 +4302,117 @@ $(DEVSRC)gdevpsd.h:$(GLSRC)gxclthrd.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxline.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxline.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevpsd.h:$(GLSRC)math_.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gx.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsht.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gp.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)memento.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)memory_.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)memento.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevpsd.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)scommon.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevpsd.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevpsd.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevpsd.h:$(GLSRC)std.h
$(DEVSRC)gdevpsd.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)std.h
$(DEVSRC)gdevpsd.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevpsd.h:$(GLGEN)arch.h
+$(DEVSRC)gdevpsd.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)minftrsz.h:$(GLSRC)std.h
$(DEVSRC)minftrsz.h:$(GLSRC)stdpre.h
$(DEVSRC)minftrsz.h:$(GLGEN)arch.h
@@ -4378,239 +4423,239 @@ $(DEVSRC)gdevfax.h:$(GLSRC)gxclthrd.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxline.h
$(DEVSRC)gdevfax.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxline.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevfax.h:$(GLSRC)math_.h
$(DEVSRC)gdevfax.h:$(GLSRC)scfx.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevfax.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevfax.h:$(GLSRC)gx.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevfax.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevfax.h:$(GLSRC)shc.h
$(DEVSRC)gdevfax.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsht.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevfax.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevfax.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevfax.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevfax.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevfax.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevfax.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevfax.h:$(GLSRC)gp.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevfax.h:$(GLSRC)memento.h
+$(DEVSRC)gdevfax.h:$(GLSRC)memory_.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevfax.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevfax.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevfax.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevfax.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevfax.h:$(GLSRC)memento.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxbitmap.h
$(DEVSRC)gdevfax.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevfax.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevfax.h:$(GLSRC)scommon.h
$(DEVSRC)gdevfax.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevfax.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevfax.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevfax.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevfax.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevfax.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gs_dll_call.h
-$(DEVSRC)gdevfax.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gscompt.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsbittab.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevfax.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevfax.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevfax.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevfax.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevfax.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevfax.h:$(GLSRC)std.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gsbittab.h
$(DEVSRC)gdevfax.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevfax.h:$(GLSRC)std.h
$(DEVSRC)gdevfax.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevfax.h:$(GLGEN)arch.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gdevprn.h
+$(DEVSRC)gdevfax.h:$(GLSRC)gs_dll_call.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxdownscale.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gdevprn.h
$(DEVSRC)gdevtifs.h:$(GLSRC)string_.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsstrtok.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxclthrd.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxclpage.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxclist.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxgstate.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxline.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gstrans.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gdevp14.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxline.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxgetbit.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsht1.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxcomp.h
$(DEVSRC)gdevtifs.h:$(GLSRC)math_.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gdevp14.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxcolor2.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxpcolor.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxdevmem.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gdevdevn.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gx.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxclipsr.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxcomp.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gdebug.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxmatrix.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxbitfmt.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxdevbuf.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxdcolor.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxband.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxblend.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gscolor2.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxmatrix.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxdevice.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsht.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxcpath.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxdevmem.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsht.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsequivc.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxdevcli.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxpcache.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gscindex.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxcmap.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsptype1.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gscie.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxtext.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gstext.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsnamecl.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gstparam.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxstate.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gspcolor.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxfcache.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxcspace.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsropt.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxfmap.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsmalloc.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsfunc.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxcspace.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxctable.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsuid.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxcmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxrplane.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gscsel.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxfcache.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsfont.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsimage.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsdcolor.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxdda.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxcvalue.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsfont.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxfmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxbcache.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsropt.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxdda.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxpath.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxiclass.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxfrac.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxtmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxftype.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gscms.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gscspace.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxpath.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxbcache.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsdevice.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxarith.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxstdio.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gspenum.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsrect.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gslparam.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsdevice.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxbitfmt.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gscspace.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxstdio.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsxfont.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxclio.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsdsrc.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsio.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxbitmap.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsmatrix.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gscpm.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsiparam.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxfixed.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsrefct.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxclio.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gscompt.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsmatrix.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gspenum.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxhttile.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsparam.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsrefct.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gp.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsccolor.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsstruct.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxsync.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)memento.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)memory_.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsutil.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsuid.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsstrl.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsstruct.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gdbflags.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)srdline.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)claptrap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxsync.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gserrors.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)scommon.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)memento.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxbitmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)claptrap.h
$(DEVSRC)gdevtifs.h:$(GLSRC)vmsmath.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gscsel.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)srdline.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)scommon.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gsfname.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsbitmap.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsccolor.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gxarith.h
$(DEVSRC)gdevtifs.h:$(GLSRC)stat_.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gxtmap.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gpsync.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)memory_.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsstype.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsmemory.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gpgetenv.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gscdefs.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gs_dll_call.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gslibctx.h
$(DEVSRC)gdevtifs.h:$(GLSRC)ctype_.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)stdio_.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gscompt.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gxcindex.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsgstate.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)stdio_.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gsccode.h
$(DEVSRC)gdevtifs.h:$(GLSRC)stdint_.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gssprintf.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)gsccode.h
-$(DEVSRC)gdevtifs.h:$(GLSRC)std.h
$(DEVSRC)gdevtifs.h:$(GLSRC)gstypes.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)std.h
$(DEVSRC)gdevtifs.h:$(GLSRC)stdpre.h
$(DEVSRC)gdevtifs.h:$(GLGEN)arch.h
+$(DEVSRC)gdevtifs.h:$(GLSRC)gs_dll_call.h
diff --git a/devices/gdev3852.c b/devices/gdev3852.c
index 84388357..32649bd1 100644
--- a/devices/gdev3852.c
+++ b/devices/gdev3852.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdev4081.c b/devices/gdev4081.c
index bd5c52d8..6a715b8b 100644
--- a/devices/gdev4081.c
+++ b/devices/gdev4081.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdev8510.c b/devices/gdev8510.c
index a7b16b54..ad5c6978 100644
--- a/devices/gdev8510.c
+++ b/devices/gdev8510.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdev8bcm.c b/devices/gdev8bcm.c
index 5f5addc6..0adb7963 100644
--- a/devices/gdev8bcm.c
+++ b/devices/gdev8bcm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdev8bcm.h b/devices/gdev8bcm.h
index cc7b98ce..4b30675a 100644
--- a/devices/gdev8bcm.h
+++ b/devices/gdev8bcm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevatx.c b/devices/gdevatx.c
index aa5462ce..aaf22a5e 100644
--- a/devices/gdevatx.c
+++ b/devices/gdevatx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbit.c b/devices/gdevbit.c
index d0c7711e..86786fb9 100644
--- a/devices/gdevbit.c
+++ b/devices/gdevbit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -347,7 +347,7 @@ const gx_device_bit gs_bitrgbtags_device =
gx_default_end_page
}, /* page_procs */
{ 0 }, /* procs */
- { 0 }, /* skip */
+ GX_CLIST_MUTATABLE_DEVICE_DEFAULTS,
{
bittags_print_page,
gx_default_print_page_copies,
@@ -364,17 +364,11 @@ const gx_device_bit gs_bitrgbtags_device =
-1, /* Duplex_set */
false, /* file_is_new */
NULL, /* file */
- 0, /* buffer_space */
- NULL, /* buf */
- NULL, /* buffer_memory */
- NULL, /* bandlist_memory */
- 0, /* clist_disable_mask */
false, /* bg_print_requested */
{0}, /* bg_print */
0, /* num_render_threads_requested */
NULL, /* saved_pages_list */
- {0}, /* save_procs_while_delaying_erasepage */
- {0} /* orig_procs */
+ {0} /* save_procs_while_delaying_erasepage */
};
static void
diff --git a/devices/gdevbj10.c b/devices/gdevbj10.c
index 3423ebc5..cbb9c469 100644
--- a/devices/gdevbj10.c
+++ b/devices/gdevbj10.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbjc.h b/devices/gdevbjc.h
index fbf676aa..9d58211e 100644
--- a/devices/gdevbjc.h
+++ b/devices/gdevbjc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbjcl.c b/devices/gdevbjcl.c
index 4034aef9..4692266b 100644
--- a/devices/gdevbjcl.c
+++ b/devices/gdevbjcl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbjcl.h b/devices/gdevbjcl.h
index 05c3d1ed..a3bc9987 100644
--- a/devices/gdevbjcl.h
+++ b/devices/gdevbjcl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbmp.c b/devices/gdevbmp.c
index f8ce596e..14033dca 100644
--- a/devices/gdevbmp.c
+++ b/devices/gdevbmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbmp.h b/devices/gdevbmp.h
index b7cb97f9..aec8f12c 100644
--- a/devices/gdevbmp.h
+++ b/devices/gdevbmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevbmpc.c b/devices/gdevbmpc.c
index 4741d55e..81b2abd6 100644
--- a/devices/gdevbmpc.c
+++ b/devices/gdevbmpc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevccr.c b/devices/gdevccr.c
index 2080d785..5c9b7098 100644
--- a/devices/gdevccr.c
+++ b/devices/gdevccr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevcdj.c b/devices/gdevcdj.c
index 50a1d62c..ce74cc29 100644
--- a/devices/gdevcdj.c
+++ b/devices/gdevcdj.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -2150,7 +2150,7 @@ hp_colour_print_page(gx_device_printer * pdev, gp_file * prn_stream, int ptype)
ep_p += plane_size;
}
/* Make a sentinel and align to word size. */
- eg.print_buf = (byte *)((word)(ep_p + sizeof(word)) & ~(sizeof(word)-1));
+ eg.print_buf = (byte *)((intptr_t)(ep_p + sizeof(word)) & ~(sizeof(word)-1));
}
eg.num_comps = num_comps;
}
@@ -3312,8 +3312,8 @@ cdj_set_bpp(gx_device *pdev, int bpp, int ccomps)
gs_closedevice(pdev);
}
if (pdev->is_open) {
- int code; /* Return code */
- gdev_prn_space_params sp; /* Space parameter data */
+ int code; /* Return code */
+ gdev_space_params sp; /* Space parameter data */
/* Reallocate memory for device */
sp = ((gx_device_printer *)pdev)->space_params;
diff --git a/devices/gdevcfax.c b/devices/gdevcfax.c
index 6f6419ae..a6d0db44 100644
--- a/devices/gdevcfax.c
+++ b/devices/gdevcfax.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevchameleon.c b/devices/gdevchameleon.c
index 1a470972..74421244 100644
--- a/devices/gdevchameleon.c
+++ b/devices/gdevchameleon.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -636,19 +636,16 @@ chameleon_print_page(gx_device_printer * pdev, gp_file * prn_stream)
return gs_error_rangecheck;
}
- code = gx_downscaler_init_trapped_cm_halftone
- (&ds,
- (gx_device *)pdev,
- pcdev->bpc,
- pcdev->dst_bpc,
- pcdev->num_components,
- pcdev->downscale.downscale_factor,
- pcdev->downscale.min_feature_size,
- NULL, 0, /* Adjust width */
- 0, 0, NULL, /* Trapping w/h/comp_order */
- col_convert, col_convert_arg, /* Color Management */
- pcdev->dst_num_components,
- default_ht);
+ code = gx_downscaler_init_cm_halftone(&ds,
+ (gx_device *)pdev,
+ pcdev->bpc,
+ pcdev->dst_bpc,
+ pcdev->num_components,
+ &pcdev->downscale,
+ NULL, 0, /* Adjust width */
+ col_convert, col_convert_arg, /* Color Management */
+ pcdev->dst_num_components,
+ default_ht);
if (code < 0)
goto cleanup;
diff --git a/devices/gdevcif.c b/devices/gdevcif.c
index 66f61ce3..d2e09b79 100644
--- a/devices/gdevcif.c
+++ b/devices/gdevcif.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevclj.c b/devices/gdevclj.c
index 542bb8ed..4c5ffb7b 100644
--- a/devices/gdevclj.c
+++ b/devices/gdevclj.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevcljc.c b/devices/gdevcljc.c
index 65933260..15405cbd 100644
--- a/devices/gdevcljc.c
+++ b/devices/gdevcljc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevcmykog.c b/devices/gdevcmykog.c
index d2f0442a..4330258e 100644
--- a/devices/gdevcmykog.c
+++ b/devices/gdevcmykog.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -225,7 +225,7 @@ cmykog_dev_spec_op(gx_device *dev_, int op, void *data, int datasize)
if (code != gs_error_undefined)
return code;
}
- if (op == gxdso_supports_devn) {
+ if (op == gxdso_supports_devn || op == gxdso_skip_icc_component_validation) {
return true;
}
return gdev_prn_dev_spec_op(dev_, op, data, datasize);
diff --git a/devices/gdevcslw.c b/devices/gdevcslw.c
index 471a82e4..4ded7ccd 100644
--- a/devices/gdevcslw.c
+++ b/devices/gdevcslw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdfax.c b/devices/gdevdfax.c
index cfd2a696..3d2a579f 100644
--- a/devices/gdevdfax.c
+++ b/devices/gdevdfax.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdjet.c b/devices/gdevdjet.c
index 3ea96599..ea81dead 100644
--- a/devices/gdevdjet.c
+++ b/devices/gdevdjet.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdjtc.c b/devices/gdevdjtc.c
index 5fb1a4ba..a0ffe625 100644
--- a/devices/gdevdjtc.c
+++ b/devices/gdevdjtc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdljm.c b/devices/gdevdljm.c
index 876b1dbb..fa859164 100644
--- a/devices/gdevdljm.c
+++ b/devices/gdevdljm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdljm.h b/devices/gdevdljm.h
index 1481b827..679bd561 100644
--- a/devices/gdevdljm.h
+++ b/devices/gdevdljm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevdm24.c b/devices/gdevdm24.c
index 62b7ba89..42706eee 100644
--- a/devices/gdevdm24.c
+++ b/devices/gdevdm24.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -150,7 +150,7 @@ dot24_print_page (gx_device_printer *pdev, gp_file *prn_stream, char *init_strin
if (code == 0)
{
/* Pad with lines of zeros. */
- memset (inp, 0, (24 - lcnt) * line_size);
+ memset (inp, 0, (size_t)(24 - lcnt) * line_size);
break;
}
}
@@ -162,7 +162,7 @@ dot24_print_page (gx_device_printer *pdev, gp_file *prn_stream, char *init_strin
if (code == 0)
{
/* Pad with lines of zeros. */
- memset (inp, 0, (24 - lcnt) * line_size);
+ memset (inp, 0, (size_t)(24 - lcnt) * line_size);
break;
}
}
diff --git a/devices/gdevdsp.c b/devices/gdevdsp.c
index 8ac211d4..0a66a027 100644
--- a/devices/gdevdsp.c
+++ b/devices/gdevdsp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -54,6 +54,12 @@
#include "gsequivc.h"
#include "gdevdsp.h"
#include "gdevdsp2.h"
+#include "gxclist.h"
+#include "gxdevbuf.h"
+#include "gxgetbit.h"
+#include "gdevmpla.h"
+#include "gdevprn.h" /* For gdev_create_buf_device */
+#include "gsicc_manage.h"
#include "gdevkrnlsclass.h" /* 'standard' built in subclasses, currently First/Last Page and obejct filter */
@@ -108,12 +114,12 @@ static const gx_device_procs display_procs =
display_close,
gx_default_w_b_map_rgb_color,
gx_default_w_b_map_color_rgb,
- display_fill_rectangle,
+ NULL, /* display_fill_rectangle - will be inserted later */
NULL, /* tile rectangle */
- display_copy_mono,
- display_copy_color,
+ NULL, /* display_copy_mono - will be inserted later */
+ NULL, /* display_copy_color - will be inserted later */
NULL, /* draw line */
- display_get_bits,
+ NULL, /* display_get_bits - will be inserted later */
display_get_params,
display_put_params,
gx_default_cmyk_map_cmyk_color, /* map_cmyk_color */
@@ -175,24 +181,16 @@ public_st_device_display();
static
ENUM_PTRS_WITH(display_enum_ptrs, gx_device_display *ddev)
- if (index == 0) {
- if (ddev->mdev) {
- return ENUM_OBJ(gx_device_enum_ptr((gx_device *)ddev->mdev));
- }
- return 0;
- }
- else if (index-1 < ddev->devn_params.separations.num_separations)
- ENUM_RETURN(ddev->devn_params.separations.names[index-1].data);
+ if (index < ddev->devn_params.separations.num_separations)
+ ENUM_RETURN(ddev->devn_params.separations.names[index].data);
else
- return 0;
+ ENUM_PREFIX(st_device_clist_mutatable, ddev->devn_params.separations.num_separations);
+ return 0;
ENUM_PTRS_END
static
RELOC_PTRS_WITH(display_reloc_ptrs, gx_device_display *ddev)
- if (ddev->mdev) {
- ddev->mdev = (gx_device_memory *)
- gx_device_reloc_ptr((gx_device *)ddev->mdev, gcst);
- }
+ RELOC_PREFIX(st_device_clist_mutatable);
{ int i;
for (i = 0; i < ddev->devn_params.separations.num_separations; ++i) {
RELOC_PTR(gx_device_display, devn_params.separations.names[i].data);
@@ -207,12 +205,13 @@ const gx_device_display gs_display_device =
INITIAL_WIDTH, INITIAL_HEIGHT,
INITIAL_RESOLUTION, INITIAL_RESOLUTION),
{0}, /* std_procs */
- NULL, /* mdev */
+ GX_CLIST_MUTATABLE_DEVICE_DEFAULTS,
NULL, /* callback */
NULL, /* pHandle */
+ 0, /* pHandle_set */
0, /* nFormat */
NULL, /* pBitmap */
- 0, /* ulBitmapSize */
+ 0, /* zBitmapSize */
0, /* HWResolution_set */
{ /* devn_params specific parameters */
@@ -242,11 +241,34 @@ display_open(gx_device * dev)
{
gx_device_display *ddev = (gx_device_display *) dev;
int ccode;
+ gs_display_get_callback_t data;
/* Erase these, in case we are opening a copied device. */
- ddev->mdev = NULL;
ddev->pBitmap = NULL;
- ddev->ulBitmapSize = 0;
+ ddev->zBitmapSize = 0;
+
+ ddev->orig_procs = ddev->procs;
+
+ /* Fetch our callback procedures. */
+ data.callback = NULL;
+ data.caller_handle = NULL;
+ ccode = gx_callout(dev, DISPLAY_CALLOUT_GET_CALLBACK, sizeof(data), &data);
+ if (ccode < 0) {
+ ccode = gx_callout(dev, DISPLAY_CALLOUT_GET_CALLBACK_LEGACY, sizeof(data), &data);
+ if (ccode < 0) {
+ ddev->callback = NULL;
+ ddev->pHandle = NULL;
+ if (ccode != gs_error_unknownerror)
+ return ccode;
+ } else {
+ ddev->callback = data.callback;
+ ddev->pHandle_set = 0;
+ }
+ } else {
+ ddev->callback = data.callback;
+ ddev->pHandle = data.caller_handle;
+ ddev->pHandle_set = 1;
+ }
/* Allow device to be opened "disabled" without a callback. */
/* The callback will be set later and the device re-opened. */
@@ -290,9 +312,11 @@ display_open(gx_device * dev)
}
/* Tell caller the device parameters */
- ccode = (*(ddev->callback->display_size)) (ddev->pHandle, dev,
- dev->width, dev->height, display_raster(ddev), ddev->nFormat,
- ddev->mdev->base);
+ ccode = (*(ddev->callback->display_size))(ddev->pHandle, dev,
+ dev->width, dev->height,
+ display_raster(ddev), ddev->nFormat,
+ CLIST_MUTATABLE_HAS_MUTATED(ddev) ?
+ NULL : ((gx_device_memory *)ddev)->base);
if (ccode < 0) {
display_free_bitmap(ddev);
(*(ddev->callback->display_close))(ddev->pHandle, dev);
@@ -335,6 +359,10 @@ display_output_page(gx_device * dev, int copies, int flush)
{
gx_device_display *ddev = (gx_device_display *) dev;
int code;
+ int is_planar = (ddev->nFormat & (DISPLAY_PLANAR |
+ DISPLAY_PLANAR_INTERLEAVED)) &&
+ (ddev->color_info.num_components > 1);
+
if (ddev->callback == NULL)
return gs_error_Fatal;
display_set_separations(ddev);
@@ -342,8 +370,72 @@ display_output_page(gx_device * dev, int copies, int flush)
while(dev->parent)
dev = dev->parent;
- code = (*(ddev->callback->display_page))
+ if (CLIST_MUTATABLE_HAS_MUTATED(ddev)) {
+ /* Rectangle request mode! */
+ gs_get_bits_options_t options;
+
+ options = GB_RETURN_COPY | GB_ALIGN_STANDARD |
+ GB_OFFSET_SPECIFIED | GB_RASTER_SPECIFIED |
+ GB_COLORS_NATIVE;
+ switch (ddev->nFormat & DISPLAY_ALPHA_MASK) {
+ default:
+ case DISPLAY_ALPHA_NONE:
+ break;
+ case DISPLAY_ALPHA_FIRST:
+ case DISPLAY_UNUSED_FIRST:
+ options |= GB_ALPHA_FIRST;
+ break;
+ case DISPLAY_ALPHA_LAST:
+ case DISPLAY_UNUSED_LAST:
+ options |= GB_ALPHA_LAST;
+ break;
+ }
+ if (is_planar)
+ options |= GB_PACKING_PLANAR;
+ else
+ options |= GB_PACKING_CHUNKY;
+
+ while (1) {
+ void *mem = NULL;
+ int ox, oy, x, y, w, h, i, raster, plane_raster;
+ gs_int_rect rect;
+ gs_get_bits_params_t params;
+
+ code = ddev->callback->display_rectangle_request
+ (ddev->pHandle, dev,
+ &mem, &ox, &oy,
+ &raster, &plane_raster,
+ &x, &y, &w, &h);
+ if (w == 0 || h == 0)
+ break;
+ if (mem == NULL) {
+ code = gs_note_error(gs_error_VMerror);
+ break;
+ }
+ rect.p.x = x;
+ rect.p.y = y;
+ rect.q.x = x + w;
+ rect.q.y = y + h;
+ params.options = options;
+ if (is_planar) {
+ for (i = 0; i < ddev->color_info.num_components; i++)
+ params.data[i] = (byte *)mem + i * plane_raster;
+ } else {
+ params.data[0] = (byte *)mem;
+ }
+ params.x_offset = ox;
+ params.original_y = oy;
+ params.raster = raster;
+ code = dev_proc(ddev, get_bits_rectangle)((gx_device *)ddev,
+ &rect, &params, NULL);
+ if (code < 0)
+ break;
+ }
+ } else {
+ /* Full page mode. Just claim completion! */
+ code = (*(ddev->callback->display_page))
(ddev->pHandle, dev, copies, flush);
+ }
if (code >= 0)
code = gx_finish_output_page(dev, copies, flush);
@@ -358,19 +450,24 @@ display_close(gx_device * dev)
if (ddev->callback == NULL)
return 0; /* ignore the call since we were never properly opened */
+ while(dev->parent)
+ dev = dev->parent;
+
/* Tell caller that device is about to be closed. */
(*(ddev->callback->display_preclose))(ddev->pHandle, dev);
/* Release memory. */
display_free_bitmap(ddev);
- while(dev->parent)
- dev = dev->parent;
-
/* Tell caller that device is closed. */
/* This is always the last callback */
(*(ddev->callback->display_close))(ddev->pHandle, dev);
+ /* Reset device proc vector to default */
+ if (ddev->orig_procs.open_device != NULL)
+ ddev->procs = ddev->orig_procs;
+ ddev->orig_procs.open_device = NULL; /* prevent uninit'd restore of procs */
+
return 0;
}
@@ -726,13 +823,12 @@ display_map_color_rgb_bgr24(gx_device * dev, gx_color_index color,
/* Fill a rectangle */
static int
display_fill_rectangle(gx_device * dev, int x, int y, int w, int h,
- gx_color_index color)
+ gx_color_index color)
{
gx_device_display *ddev = (gx_device_display *) dev;
if (ddev->callback == NULL)
return 0; /* ignore -- needed for fillpage when device wasn't really opened */
- dev_proc(ddev->mdev, fill_rectangle)((gx_device *)ddev->mdev,
- x, y, w, h, color);
+ ddev->mutated_procs.fill_rectangle(dev, x, y, w, h, color);
while(dev->parent)
dev = dev->parent;
@@ -745,15 +841,15 @@ display_fill_rectangle(gx_device * dev, int x, int y, int w, int h,
/* Copy a monochrome bitmap */
static int
display_copy_mono(gx_device * dev,
- const byte * base, int sourcex, int raster, gx_bitmap_id id,
- int x, int y, int w, int h,
- gx_color_index zero, gx_color_index one)
+ const byte * base, int sourcex, int raster,
+ gx_bitmap_id id, int x, int y, int w, int h,
+ gx_color_index zero, gx_color_index one)
{
gx_device_display *ddev = (gx_device_display *) dev;
if (ddev->callback == NULL)
return gs_error_Fatal;
- dev_proc(ddev->mdev, copy_mono)((gx_device *)ddev->mdev,
- base, sourcex, raster, id, x, y, w, h, zero, one);
+ ddev->mutated_procs.copy_mono(dev, base, sourcex, raster, id,
+ x, y, w, h, zero, one);
while(dev->parent)
dev = dev->parent;
@@ -766,14 +862,13 @@ display_copy_mono(gx_device * dev,
/* Copy a color pixel map */
static int
display_copy_color(gx_device * dev,
- const byte * base, int sourcex, int raster, gx_bitmap_id id,
- int x, int y, int w, int h)
+ const byte * base, int sourcex, int raster,
+ gx_bitmap_id id, int x, int y, int w, int h)
{
gx_device_display *ddev = (gx_device_display *) dev;
if (ddev->callback == NULL)
return gs_error_Fatal;
- dev_proc(ddev->mdev, copy_color)((gx_device *)ddev->mdev,
- base, sourcex, raster, id, x, y, w, h);
+ ddev->mutated_procs.copy_color(dev, base, sourcex, raster, id, x, y, w, h);
while(dev->parent)
dev = dev->parent;
@@ -789,8 +884,7 @@ display_get_bits(gx_device * dev, int y, byte * str, byte ** actual_data)
gx_device_display *ddev = (gx_device_display *) dev;
if (ddev->callback == NULL)
return gs_error_Fatal;
- return dev_proc(ddev->mdev, get_bits)((gx_device *)ddev->mdev,
- y, str, actual_data);
+ return ddev->mutated_procs.get_bits(dev, y, str, actual_data);
}
static int
@@ -805,27 +899,31 @@ display_get_params(gx_device * dev, gs_param_list * plist)
size_t dptr;
char buf[64];
- idx = ((int)sizeof(size_t)) * 8 - 4;
- buf[i++] = '1';
- buf[i++] = '6';
- buf[i++] = '#';
- dptr = (size_t)(ddev->pHandle);
- while (idx >= 0) {
- val = (int)(dptr >> idx) & 0xf;
- if (val <= 9)
- buf[i++] = '0' + val;
- else
- buf[i++] = 'a' - 10 + val;
- idx -= 4;
- }
- buf[i] = '\0';
+ code = gx_default_get_params(dev, plist);
+ if (code < 0)
+ return code;
+
+ if (!ddev->pHandle_set) {
+ idx = ((int)sizeof(size_t)) * 8 - 4;
+ buf[i++] = '1';
+ buf[i++] = '6';
+ buf[i++] = '#';
+ dptr = (size_t)(ddev->pHandle);
+ while (idx >= 0) {
+ val = (int)(dptr >> idx) & 0xf;
+ if (val <= 9)
+ buf[i++] = '0' + val;
+ else
+ buf[i++] = 'a' - 10 + val;
+ idx -= 4;
+ }
+ buf[i] = '\0';
- param_string_from_transient_string(dhandle, buf);
+ param_string_from_transient_string(dhandle, buf);
+ code = param_write_string(plist, "DisplayHandle", &dhandle);
+ }
- code = gx_default_get_params(dev, plist);
(void)(code < 0 ||
- (code = param_write_string(plist,
- "DisplayHandle", &dhandle)) < 0 ||
(code = param_write_int(plist,
"DisplayFormat", &ddev->nFormat)) < 0 ||
(code = param_write_float(plist,
@@ -890,96 +988,98 @@ display_put_params(gx_device * dev, gs_param_list * plist)
break;
}
- /* 64-bit systems need to use DisplayHandle as a string */
- switch (code = param_read_string(plist, "DisplayHandle", &dh)) {
- case 0:
- found_string_handle = 1;
- break;
- default:
- if ((code == gs_error_typecheck) && (sizeof(size_t) <= 4)) {
- /* 32-bit systems can use the older long type */
- switch (code = param_read_long(plist, "DisplayHandle",
- (long *)(&handle))) {
- case 0:
- if (dev->is_open) {
- if (ddev->pHandle != handle)
- ecode = gs_error_rangecheck;
- else
+ if (!ddev->pHandle_set) {
+ /* 64-bit systems need to use DisplayHandle as a string */
+ switch (code = param_read_string(plist, "DisplayHandle", &dh)) {
+ case 0:
+ found_string_handle = 1;
+ break;
+ default:
+ if ((code == gs_error_typecheck) && (sizeof(size_t) <= 4)) {
+ /* 32-bit systems can use the older long type */
+ switch (code = param_read_long(plist, "DisplayHandle",
+ (long *)(&handle))) {
+ case 0:
+ if (dev->is_open) {
+ if (ddev->pHandle != handle)
+ ecode = gs_error_rangecheck;
+ else
+ break;
+ }
+ else {
+ ddev->pHandle = handle;
break;
- }
- else {
- ddev->pHandle = handle;
+ }
+ goto hdle;
+ default:
+ ecode = code;
+ hdle:param_signal_error(plist, "DisplayHandle", ecode);
+ case 1:
break;
- }
- goto hdle;
- default:
- ecode = code;
- hdle:param_signal_error(plist, "DisplayHandle", ecode);
- case 1:
- break;
+ }
+ break;
}
+ ecode = code;
+ param_signal_error(plist, "DisplayHandle", ecode);
+ /* fall through */
+ case 1:
+ dh.data = 0;
break;
- }
- ecode = code;
- param_signal_error(plist, "DisplayHandle", ecode);
- /* fall through */
- case 1:
- dh.data = 0;
- break;
- }
- if (found_string_handle) {
- /*
- * Convert from a string to a pointer.
- * It is assumed that size_t has the same size as a pointer.
- * Allow formats (1234), (10#1234) or (16#04d2).
- */
- size_t ptr = 0;
- int i;
- int base = 10;
- int val;
- code = 0;
- for (i=0; i<dh.size; i++) {
- val = dh.data[i];
- if ((val >= '0') && (val <= '9'))
- val = val - '0';
- else if ((val >= 'A') && (val <= 'F'))
- val = val - 'A' + 10;
- else if ((val >= 'a') && (val <= 'f'))
- val = val - 'a' + 10;
- else if (val == '#') {
- base = (int)ptr;
- ptr = 0;
- if ((base != 10) && (base != 16)) {
+ }
+ if (found_string_handle) {
+ /*
+ * Convert from a string to a pointer.
+ * It is assumed that size_t has the same size as a pointer.
+ * Allow formats (1234), (10#1234) or (16#04d2).
+ */
+ size_t ptr = 0;
+ int i;
+ int base = 10;
+ int val;
+ code = 0;
+ for (i=0; i<dh.size; i++) {
+ val = dh.data[i];
+ if ((val >= '0') && (val <= '9'))
+ val = val - '0';
+ else if ((val >= 'A') && (val <= 'F'))
+ val = val - 'A' + 10;
+ else if ((val >= 'a') && (val <= 'f'))
+ val = val - 'a' + 10;
+ else if (val == '#') {
+ base = (int)ptr;
+ ptr = 0;
+ if ((base != 10) && (base != 16)) {
+ code = gs_error_rangecheck;
+ break;
+ }
+ continue;
+ }
+ else {
code = gs_error_rangecheck;
break;
}
- continue;
- }
- else {
- code = gs_error_rangecheck;
- break;
- }
- if (base == 10)
- ptr = ptr * 10 + val;
- else if (base == 16)
- ptr = ptr * 16 + val;
- else {
- code = gs_error_rangecheck;
- break;
- }
- }
- if (code == 0) {
- if (dev->is_open) {
- if (ddev->pHandle != (void *)ptr)
+ if (base == 10)
+ ptr = ptr * 10 + val;
+ else if (base == 16)
+ ptr = ptr * 16 + val;
+ else {
code = gs_error_rangecheck;
+ break;
+ }
+ }
+ if (code == 0) {
+ if (dev->is_open) {
+ if (ddev->pHandle != (void *)ptr)
+ code = gs_error_rangecheck;
+ }
+ else
+ ddev->pHandle = (void *)ptr;
+ }
+ if (code < 0) {
+ ecode = code;
+ param_signal_error(plist, "DisplayHandle", ecode);
}
- else
- ddev->pHandle = (void *)ptr;
- }
- if (code < 0) {
- ecode = code;
- param_signal_error(plist, "DisplayHandle", ecode);
}
}
@@ -1094,19 +1194,20 @@ display_put_params(gx_device * dev, gs_param_list * plist)
/* tell caller about the new size */
if ((*ddev->callback->display_size)(ddev->pHandle, dev,
- dev->width, dev->height, display_raster(ddev),
- ddev->nFormat, ddev->mdev->base) < 0)
+ dev->width, dev->height, display_raster(ddev), ddev->nFormat,
+ CLIST_MUTATABLE_HAS_MUTATED(ddev) ? NULL :
+ ((gx_device_memory *)ddev)->base) < 0)
return_error(gs_error_rangecheck);
}
- /*
- * Make the color_info.depth correct for the bpc and num_components since
- * devn mode always has the display bitmap set up for 64-bits, but others,
- * such as pdf14 compositor expect it to match (for "deep" detection).
- */
- if (ddev->icc_struct && ddev->icc_struct->supports_devn) {
- ddev->color_info.depth = ddev->devn_params.bitspercomponent *
- ddev->color_info.num_components;
- }
+ /*
+ * Make the color_info.depth correct for the bpc and num_components since
+ * devn mode always has the display bitmap set up for 64-bits, but others,
+ * such as pdf14 compositor expect it to match (for "deep" detection).
+ */
+ if (ddev->icc_struct && ddev->icc_struct->supports_devn) {
+ ddev->color_info.depth = ddev->devn_params.bitspercomponent *
+ ddev->color_info.num_components;
+ }
return 0;
}
@@ -1120,9 +1221,8 @@ display_finish_copydevice(gx_device *dev, const gx_device *from_dev)
ddev->is_open = false;
/* Clear pointers */
- ddev->mdev = NULL;
ddev->pBitmap = NULL;
- ddev->ulBitmapSize = 0;
+ ddev->zBitmapSize = 0;
return 0;
}
@@ -1245,10 +1345,23 @@ display_ret_devn_params(gx_device * dev)
static int
display_spec_op(gx_device *dev, int op, void *data, int datasize)
{
+ gx_device_display *ddev = (gx_device_display *)dev;
- if (op == gxdso_supports_devn) {
+ if (op == gxdso_supports_devn || op == gxdso_skip_icc_component_validation) {
return (dev_proc(dev, fill_rectangle_hl_color) == display_fill_rectangle_hl_color);
}
+ if (op == gxdso_reopen_after_init) {
+ return 1;
+ }
+ if (op == gxdso_adjust_bandheight)
+ {
+ if (ddev->callback->display_adjust_band_height)
+ return ddev->callback->display_adjust_band_height(ddev->pHandle,
+ ddev,
+ datasize);
+ return 0;
+ }
+
return gx_default_dev_spec_op(dev, op, data, datasize);
}
@@ -1269,8 +1382,8 @@ display_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect,
if (pdcolor->type != gx_dc_type_devn && pdcolor->type != &gx_dc_devn_masked) {
return gx_fill_rectangle_device_rop( x, y, w, h, pdcolor, dev, lop_default);
}
- pure_color = display_separation_encode_color(dev, pdcolor->colors.devn.values);
- return display_fill_rectangle(dev, x, y, w, h, pure_color);
+ pure_color = dev_proc(dev, encode_color)(dev, pdcolor->colors.devn.values);
+ return dev_proc(dev, fill_rectangle)(dev, x, y, w, h, pure_color);
}
/*
@@ -1303,7 +1416,7 @@ display_separation_get_color_comp_index(gx_device * dev,
/* Return 0 on success, gs_error_rangecheck on failure */
static int display_check_structure(gx_device_display *ddev)
{
- if (ddev->callback == 0)
+ if (ddev->callback == NULL)
return_error(gs_error_rangecheck);
if (ddev->callback->size == sizeof(struct display_callback_v1_s)) {
@@ -1315,11 +1428,23 @@ static int display_check_structure(gx_device_display *ddev)
if (ddev->callback->version_minor > DISPLAY_VERSION_MINOR_V1)
return_error(gs_error_rangecheck);
}
- else {
+ else if (ddev->callback->size == sizeof(struct display_callback_v2_s)) {
/* V2 structure with added display_separation callback */
if (ddev->callback->size != sizeof(display_callback))
return_error(gs_error_rangecheck);
+ if (ddev->callback->version_major != DISPLAY_VERSION_MAJOR_V2)
+ return_error(gs_error_rangecheck);
+
+ /* complain if caller asks for newer features */
+ if (ddev->callback->version_minor > DISPLAY_VERSION_MINOR_V2)
+ return_error(gs_error_rangecheck);
+ }
+ else {
+ /* V3 structure with added display_separation callback */
+ if (ddev->callback->size != sizeof(display_callback))
+ return_error(gs_error_rangecheck);
+
if (ddev->callback->version_major != DISPLAY_VERSION_MAJOR)
return_error(gs_error_rangecheck);
@@ -1362,13 +1487,33 @@ display_free_bitmap(gx_device_display * ddev)
ddev->pBitmap, "display_free_bitmap");
}
ddev->pBitmap = NULL;
- if (ddev->mdev)
- ddev->mdev->base = NULL;
+ if (!CLIST_MUTATABLE_HAS_MUTATED(ddev))
+ ((gx_device_memory *)ddev)->base = NULL;
}
- if (ddev->mdev) {
- dev_proc(ddev->mdev, close_device)((gx_device *)ddev->mdev);
- gx_device_retain((gx_device *)(ddev->mdev), false);
- ddev->mdev = NULL;
+
+ if (CLIST_MUTATABLE_HAS_MUTATED(ddev)) {
+ gx_device_clist *const pclist_dev = (gx_device_clist *)ddev;
+ gx_device_clist_common * const pcldev = &pclist_dev->common;
+ gx_device_clist_reader * const pcrdev = &pclist_dev->reader;
+ /* Close cmd list device & point to the storage */
+ (*gs_clist_device_procs.close_device)( (gx_device *)pcldev );
+ ddev->buf = NULL;
+ ddev->buffer_space = 0;
+
+ gs_free_object(pcldev->memory->non_gc_memory, pcldev->cache_chunk, "free tile cache for clist");
+ pcldev->cache_chunk = 0;
+
+ rc_decrement(pcldev->icc_cache_cl, "gdev_prn_tear_down");
+ pcldev->icc_cache_cl = NULL;
+
+ clist_free_icc_table(pcldev->icc_table, pcldev->memory);
+ pcldev->icc_table = NULL;
+
+ /* If the clist is a reader clist, free any color_usage_array
+ * memory used by same.
+ */
+ if (!CLIST_IS_WRITER(pclist_dev))
+ gs_free_object(pcrdev->memory, pcrdev->color_usage_array, "clist_color_usage_array");
}
}
@@ -1377,7 +1522,9 @@ static int
display_raster(gx_device_display *dev)
{
int align = 0;
- int bytewidth = ((dev->width * dev->color_info.depth) + 7) /8;
+ int n = (dev->nFormat & (DISPLAY_PLANAR | DISPLAY_PLANAR_INTERLEAVED)) ?
+ dev->color_info.num_components : 1;
+ int bytewidth = ((dev->width * dev->color_info.depth / n) + 7) /8;
switch (dev->nFormat & DISPLAY_ROW_ALIGN_MASK) {
case DISPLAY_ROW_ALIGN_4:
align = 4;
@@ -1399,79 +1546,340 @@ display_raster(gx_device_display *dev)
align = ARCH_ALIGN_PTR_MOD;
align -= 1;
bytewidth = (bytewidth + align) & (~align);
+ if (dev->nFormat & DISPLAY_PLANAR_INTERLEAVED)
+ bytewidth *= n;
return bytewidth;
}
-/* Allocate the backing bitmap. */
+/* Set the buffer device to planar mode. */
static int
-display_alloc_bitmap(gx_device_display * ddev, gx_device * param_dev)
+set_planar(gx_device_memory *mdev, const gx_device *tdev, int interleaved)
{
- int ccode;
- const gx_device_memory *mdproto;
+ int num_comp = tdev->color_info.num_components;
+ gx_render_plane_t planes[GX_DEVICE_COLOR_MAX_COMPONENTS];
+ int depth = tdev->color_info.depth / num_comp;
+ int k;
- if (ddev->callback == NULL)
- return gs_error_Fatal;
+ if (num_comp < 1 || num_comp > GX_DEVICE_COLOR_MAX_COMPONENTS)
+ return_error(gs_error_rangecheck);
+ /* Round up the depth per plane to a power of 2. */
+ while (depth & (depth - 1))
+ --depth, depth = (depth | (depth >> 1)) + 1;
+
+ /* We want the most significant plane to come out first. */
+ planes[num_comp-1].shift = 0;
+ planes[num_comp-1].depth = depth;
+ for (k = (num_comp - 2); k >= 0; k--) {
+ planes[k].depth = depth;
+ planes[k].shift = planes[k + 1].shift + depth;
+ }
+ return gdev_mem_set_planar_interleaved(mdev, num_comp, planes,
+ interleaved);
+}
- /* free old bitmap (if any) */
- display_free_bitmap(ddev);
+static int
+display_create_buf_device(gx_device **pbdev, gx_device *target, int y,
+ const gx_render_plane_t *render_plane,
+ gs_memory_t *mem, gx_color_usage_t *color_usage)
+{
+ int depth;
+ const gx_device_memory *mdproto;
+ gx_device_memory *mdev;
+ gx_device_display *ddev = (gx_device_display *)target;
+
+ depth = target->color_info.depth;
+ if (target->is_planar)
+ depth /= target->color_info.num_components;
- /* allocate a memory device for rendering */
- mdproto = gdev_mem_device_for_bits(ddev->color_info.depth);
- if (mdproto == 0)
+ mdproto = gdev_mem_device_for_bits(depth);
+ if (mdproto == NULL)
return_error(gs_error_rangecheck);
+ if (mem) {
+ mdev = gs_alloc_struct(mem, gx_device_memory, &st_device_memory,
+ "create_buf_device");
+ if (mdev == NULL)
+ return_error(gs_error_VMerror);
+ } else {
+ mdev = (gx_device_memory *)*pbdev;
+ }
+ if (target == (gx_device *)mdev) {
+ dev_t_proc_dev_spec_op((*orig_dso), gx_device) = dev_proc(mdev, dev_spec_op);
+ /* The following is a special hack for setting up printer devices. */
+ assign_dev_procs(mdev, mdproto);
+ /* Do not override the dev_spec_op! */
+ dev_proc(mdev, dev_spec_op) = orig_dso;
+ check_device_separable((gx_device *)mdev);
+ gx_device_fill_in_procs((gx_device *)mdev);
+ } else {
+ gs_make_mem_device(mdev, mdproto, mem, (color_usage == NULL ? 1 : 0),
+ target);
+ if (ddev->nFormat & DISPLAY_COLORS_SEPARATION)
+ mdev->procs.fill_rectangle_hl_color = display_fill_rectangle_hl_color;
+ }
+ mdev->width = target->width;
+ mdev->band_y = y;
+ mdev->log2_align_mod = target->log2_align_mod;
+ mdev->pad = target->pad;
+ mdev->is_planar = target->is_planar;
+ /*
+ * The matrix in the memory device is irrelevant,
+ * because all we do with the device is call the device-level
+ * output procedures, but we may as well set it to
+ * something halfway reasonable.
+ */
+ gs_deviceinitialmatrix(target, &mdev->initial_matrix);
+ /****** QUESTIONABLE, BUT BETTER THAN OMITTING ******/
+ if (&mdev->color_info != &target->color_info) /* Pacify Valgrind */
+ mdev->color_info = target->color_info;
+ *pbdev = (gx_device *)mdev;
+
+ if (ddev->nFormat & (DISPLAY_PLANAR | DISPLAY_PLANAR_INTERLEAVED)) {
+ int interleaved = (ddev->nFormat & DISPLAY_PLANAR_INTERLEAVED);
+ if (gs_device_is_memory(*pbdev) /* == render_plane->index < 0 */) {
+ return set_planar((gx_device_memory *)*pbdev, *pbdev, interleaved);
+ }
+ }
+
+ return 0;
+}
- ddev->mdev = gs_alloc_struct(gs_memory_stable(ddev->memory),
- gx_device_memory, &st_device_memory, "display_memory_device");
- if (ddev->mdev == 0)
+static int
+display_size_buf_device(gx_device_buf_space_t *space, gx_device *target,
+ const gx_render_plane_t *render_plane,
+ int height, bool for_band)
+{
+ gx_device_display *ddev = (gx_device_display *)target;
+ gx_device_memory mdev;
+ int code;
+ int planar = ddev->nFormat & (DISPLAY_PLANAR | DISPLAY_PLANAR_INTERLEAVED);
+ int interleaved = (ddev->nFormat & DISPLAY_PLANAR_INTERLEAVED);
+
+ if (!planar || (render_plane && render_plane->index >= 0))
+ return gx_default_size_buf_device(space, target, render_plane,
+ height, for_band);
+
+ /* Planar case */
+ mdev.color_info = target->color_info;
+ mdev.pad = target->pad;
+ mdev.log2_align_mod = target->log2_align_mod;
+ mdev.is_planar = target->is_planar;
+ code = set_planar(&mdev, target, interleaved);
+ if (code < 0)
+ return code;
+ if (gdev_mem_bits_size(&mdev, target->width, height, &(space->bits)) < 0)
return_error(gs_error_VMerror);
+ space->line_ptrs = gdev_mem_line_ptrs_size(&mdev, target->width, height);
+ space->raster = display_raster(ddev);
+ return 0;
+}
- gs_make_mem_device(ddev->mdev, mdproto, gs_memory_stable(ddev->memory),
- 0, (gx_device *) NULL);
- check_device_separable((gx_device *)(ddev->mdev));
- gx_device_fill_in_procs((gx_device *)(ddev->mdev));
- /* Mark the memory device as retained. When the bitmap is closed,
- * we will clear this and the memory device will be then be freed.
- */
- gx_device_retain((gx_device *)(ddev->mdev), true);
+static gx_device_buf_procs_t display_buf_procs = {
+ display_create_buf_device,
+ display_size_buf_device,
+ gx_default_setup_buf_device,
+ gx_default_destroy_buf_device
+};
- /* Memory device width may be larger than device width
- * if row alignment is not 4.
- */
- ddev->mdev->width = param_dev->width;
- ddev->mdev->width = display_raster(ddev) * 8 / ddev->color_info.depth;
- ddev->mdev->height = param_dev->height;
+static int /* returns 0 ok, else -ve error cde */
+setup_as_clist(gx_device_display *ddev, gs_memory_t *buffer_memory)
+{
+ gdev_space_params space_params = ddev->space_params;
+ gx_device *target = (gx_device *)ddev;
+ uint space;
+ int code;
+ gx_device_clist *const pclist_dev = (gx_device_clist *)ddev;
+ gx_device_clist_common * const pcldev = &pclist_dev->common;
+ byte *base;
+ bool save_is_open = ddev->is_open; /* Save around temporary failure in open_c loop */
+
+ while (target->parent != NULL) {
+ target = target->parent;
+ gx_update_from_subclass(target);
+ }
- /* Tell the memory device to allocate the line pointers separately
- * so we can place the bitmap in special memory.
- */
- ddev->mdev->line_pointer_memory = ddev->mdev->memory;
- if (gdev_mem_bits_size(ddev->mdev, ddev->mdev->width, ddev->mdev->height,
- &(ddev->ulBitmapSize)) < 0)
+ /* Try to allocate based simply on param-requested buffer size */
+ for ( space = space_params.BufferSpace; ; ) {
+ base = gs_alloc_bytes(buffer_memory, space,
+ "cmd list buffer");
+ if (base != NULL)
+ break;
+ if ((space >>= 1) < MIN_BUFFER_SPACE)
+ break;
+ }
+ if (base == NULL)
return_error(gs_error_VMerror);
+ /* Try opening the command list, to see if we allocated */
+ /* enough buffer space. */
+open_c:
+ ddev->buf = base;
+ ddev->buffer_space = space;
+ pclist_dev->common.orig_spec_op = ddev->orig_procs.dev_spec_op;
+ clist_init_io_procs(pclist_dev, ddev->BLS_force_memory);
+ clist_init_params(pclist_dev, base, space, target,
+ display_buf_procs,
+ space_params.band,
+ false, /* do_not_open_or_close_bandfiles */
+ (ddev->bandlist_memory == NULL ?
+ ddev->memory->non_gc_memory:
+ ddev->bandlist_memory),
+ ddev->clist_disable_mask,
+ ddev->page_uses_transparency);
+ code = (*gs_clist_device_procs.open_device)( (gx_device *)pcldev );
+ if (code < 0) {
+ /* If there wasn't enough room, and we haven't */
+ /* already shrunk the buffer, try enlarging it. */
+ if (code == gs_error_rangecheck &&
+ space >= space_params.BufferSpace) {
+ space += space / 8;
+ gs_free_object(buffer_memory, base,
+ "cmd list buf(retry open)");
+ base = gs_alloc_bytes(buffer_memory, space,
+ "cmd list buf(retry open)");
+ ddev->buf = base;
+ if (base != NULL) {
+ ddev->is_open = save_is_open; /* allow for success when we loop */
+ goto open_c;
+ }
+ }
+ /* Failure. */
+ gs_free_object(buffer_memory, base, "cmd list buf");
+ ddev->buffer_space = 0;
+ }
+ return code;
+}
+
+/* Allocate the backing bitmap. */
+static int
+display_alloc_bitmap(gx_device_display * ddev, gx_device * param_dev)
+{
+ int ccode;
+ gx_device_buf_space_t buf_space;
+
+ if (ddev->callback == NULL)
+ return gs_error_Fatal;
+
+ /* free old bitmap (if any) */
+ display_free_bitmap(ddev);
+
+ /* Initialise the clist/memory device specific fields. */
+ memset(ddev->skip, 0, sizeof(ddev->skip));
+ /* Calculate the size required for the a memory device. */
+ display_size_buf_device(&buf_space, (gx_device *)ddev,
+ NULL, ddev->height, false);
+ ddev->zBitmapSize = buf_space.bits + buf_space.line_ptrs;
+
+ if (ddev->callback->version_major > DISPLAY_VERSION_MAJOR_V2 ||
+ ddev->callback->display_rectangle_request != NULL) {
+ /* Clist mode is a possibility. Maybe check in here whether
+ * we want to suggest clist? */
+ /* FIXME: For now, we'll just assume that the memalloc callback
+ * is smart enough to make a sensible decision. */
+ }
+
/* allocate bitmap using an allocator not subject to GC */
if (ddev->callback->display_memalloc
&& ddev->callback->display_memfree) {
- ddev->pBitmap = (*ddev->callback->display_memalloc)(ddev->pHandle,
- ddev, ddev->ulBitmapSize);
+ /* Note: For Planar buffers, we allocate the linepointers
+ * as part of this allocation, just after the bitmap. Maybe we
+ * want to allocate them ourselves, so they aren't exposed to
+ * the caller? (Or the caller can pass in a pointer to a
+ * structure of it's own without having to allow for these
+ * pointers?)*/
+ if (ddev->callback->version_major > DISPLAY_VERSION_MAJOR_V2)
+ ddev->pBitmap = (*ddev->callback->display_memalloc)(ddev->pHandle,
+ ddev, ddev->zBitmapSize);
+ else if (ddev->zBitmapSize > ARCH_MAX_ULONG)
+ ddev->pBitmap = NULL;
+ else {
+ struct display_callback_v2_s *v2;
+ v2 = (struct display_callback_v2_s *)(ddev->callback);
+ ddev->pBitmap = (v2->display_memalloc)(ddev->pHandle,
+ ddev, (unsigned long)ddev->zBitmapSize);
+ }
}
else {
ddev->pBitmap = gs_alloc_byte_array_immovable(ddev->memory->non_gc_memory,
- (uint)ddev->ulBitmapSize, 1, "display_alloc_bitmap");
+ ddev->zBitmapSize, 1, "display_alloc_bitmap");
}
if (ddev->pBitmap == NULL) {
- ddev->mdev->width = 0;
- ddev->mdev->height = 0;
- return_error(gs_error_VMerror);
+ /* Bitmap failed to allocate. Can we recover by using rectangle
+ * request mode? */
+ if (ddev->callback->version_major <= DISPLAY_VERSION_MAJOR_V2 ||
+ ddev->callback->display_rectangle_request == NULL) {
+ /* No. Hard fail. */
+ ddev->width = 0;
+ ddev->height = 0;
+ return_error(gs_error_VMerror);
+ }
+ /* Let's set up as a clist. */
+ ccode = setup_as_clist(ddev, ddev->memory->non_gc_memory);
+ if (ccode >= 0)
+ ddev->procs = gs_clist_device_procs;
+ } else {
+ /* Set up as PageMode. */
+ gx_device *bdev = (gx_device *)ddev;
+
+ /* Ensure we're not seen as a clist device. */
+ ddev->buffer_space = 0;
+ if ((ccode = gdev_create_buf_device
+ (display_create_buf_device,
+ &bdev, bdev, 0, NULL, NULL, NULL)) < 0 ||
+ (ccode = gx_default_setup_buf_device
+ (bdev, ddev->pBitmap, buf_space.raster,
+ (byte **)((byte *)ddev->pBitmap + buf_space.bits), 0, ddev->height,
+ ddev->height)) < 0
+ ) {
+ /* Catastrophic. Shouldn't ever happen */
+ display_free_bitmap(ddev);
+ return_error(ccode);
+ }
}
- ddev->mdev->base = (byte *) ddev->pBitmap;
- ddev->mdev->foreign_bits = true;
+#define COPY_PROC(p) set_dev_proc(ddev, p, ddev->orig_procs.p)
+ COPY_PROC(get_initial_matrix);
+ COPY_PROC(output_page);
+ COPY_PROC(close_device);
+ COPY_PROC(map_rgb_color);
+ COPY_PROC(map_color_rgb);
+ COPY_PROC(get_params);
+ COPY_PROC(put_params);
+ COPY_PROC(map_cmyk_color);
+ COPY_PROC(get_xfont_procs);
+ COPY_PROC(get_xfont_device);
+ COPY_PROC(map_rgb_alpha_color);
+ set_dev_proc(ddev, get_page_device, gx_page_device_get_page_device);
+ COPY_PROC(get_clipping_box);
+ COPY_PROC(map_color_rgb_alpha);
+ COPY_PROC(get_hardware_params);
+ COPY_PROC(get_color_mapping_procs);
+ COPY_PROC(get_color_comp_index);
+ COPY_PROC(encode_color);
+ COPY_PROC(decode_color);
+ COPY_PROC(update_spot_equivalent_colors);
+ COPY_PROC(ret_devn_params);
+ /* This can be set from the memory device (planar) or target */
+ if ( dev_proc(ddev, put_image) == gx_default_put_image )
+ set_dev_proc(ddev, put_image, ddev->orig_procs.put_image);
+#undef COPY_PROC
+
+ /* Now, we want to hook various procs to give the callbacks
+ * progress reports. But only in non-clist mode. */
+ if (!CLIST_MUTATABLE_HAS_MUTATED(ddev)) {
+ ddev->mutated_procs = ddev->procs;
+ ddev->procs.fill_rectangle = display_fill_rectangle;
+ ddev->procs.copy_mono = display_copy_mono;
+ ddev->procs.copy_color = display_copy_color;
+ ddev->procs.get_bits = display_get_bits;
+ }
- ccode = dev_proc(ddev->mdev, open_device)((gx_device *)ddev->mdev);
- if (ccode < 0)
- display_free_bitmap(ddev);
+ /* In command list mode, we've already opened the device. */
+ if (!CLIST_MUTATABLE_HAS_MUTATED(ddev)) {
+ ccode = dev_proc(ddev, open_device)((gx_device *)ddev);
+ if (ccode < 0)
+ display_free_bitmap(ddev);
+ }
/* erase bitmap - before display gets redrawn */
/*
@@ -1741,21 +2149,30 @@ display_set_color_format(gx_device_display *ddev, int nFormat)
switch (ddev->nFormat & DISPLAY_ROW_ALIGN_MASK) {
case DISPLAY_ROW_ALIGN_DEFAULT:
align = ARCH_ALIGN_PTR_MOD;
+ if (sizeof(void *) == 4)
+ ddev->log2_align_mod = 2;
+ else
+ ddev->log2_align_mod = 3;
break;
case DISPLAY_ROW_ALIGN_4:
align = 4;
+ ddev->log2_align_mod = 2;
break;
case DISPLAY_ROW_ALIGN_8:
align = 8;
+ ddev->log2_align_mod = 3;
break;
case DISPLAY_ROW_ALIGN_16:
align = 16;
+ ddev->log2_align_mod = 4;
break;
case DISPLAY_ROW_ALIGN_32:
align = 32;
+ ddev->log2_align_mod = 5;
break;
case DISPLAY_ROW_ALIGN_64:
align = 64;
+ ddev->log2_align_mod = 6;
break;
default:
align = 0; /* not permitted */
@@ -1867,6 +2284,11 @@ display_set_color_format(gx_device_display *ddev, int nFormat)
maxvalue, maxvalue);
if ((nFormat & DISPLAY_DEPTH_MASK) == DISPLAY_DEPTH_8) {
ddev->devn_params.bitspercomponent = bpc;
+ if (ddev->icc_struct == NULL) {
+ ddev->icc_struct = gsicc_new_device_profile_array(ddev->memory);
+ if (ddev->icc_struct == NULL)
+ return_error(gs_error_VMerror);
+ }
ddev->icc_struct->supports_devn = true;
set_color_procs(pdev,
display_separation_encode_color,
@@ -1882,6 +2304,16 @@ display_set_color_format(gx_device_display *ddev, int nFormat)
return_error(gs_error_rangecheck);
}
+ switch (nFormat & (DISPLAY_PLANAR | DISPLAY_PLANAR_INTERLEAVED))
+ {
+ case DISPLAY_CHUNKY:
+ ddev->is_planar = 0;
+ break;
+ default:
+ ddev->is_planar = 1;
+ break;
+ }
+
/* restore old anti_alias info */
dci.anti_alias = ddev->color_info.anti_alias;
ddev->color_info = dci;
diff --git a/devices/gdevdsp.h b/devices/gdevdsp.h
index e8ddd9af..a062374b 100644
--- a/devices/gdevdsp.h
+++ b/devices/gdevdsp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -19,30 +19,45 @@
# define gdevdsp_INCLUDED
/*
- * The callback structure must be provided by calling the
- * Ghostscript APIs in the following order:
+ * There are 2 mechanisms to provide the callback structure to
+ * Ghostscript. A legacy one, and a modern one. The legacy one is
+ * deprecated and should not be used in new code - at some point it may
+ * be removed.
+ *
+ * Modern method: Call the Ghostscript APIs in the following order:
* gsapi_new_instance(&minst);
- * gsapi_set_display_callback(minst, callback);
+ * gsapi_register_callout(minst, callout, callout_handle);
* gsapi_init_with_args(minst, argc, argv);
*
+ * The callout handler should look for a callout from the 'display'
+ * device, with id=DISPLAY_CALLOUT_GET_CALLBACK and respond by filling
+ * in the supplied gs_display_get_callback_t structure.
+ *
* Supported parameters and default values are:
+ * -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.
+ *
+ * Legacy method: Call the Ghostscript APIs in the following order:
+ * gsapi_new_instance(&minst);
+ * gsapi_set_display_callback(minst, callback);
+ * gsapi_init_with_args(minst, argc, argv);
+ *
+ * An additional parameter is supported, with default value NULL:
* -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
+ * A typical sequence of callbacks (when running without a
+ * display_choose_mode) would be:
* open, presize, memalloc, size, sync, page
* presize, memfree, memalloc, size, sync, page
* preclose, memfree, close
@@ -53,14 +68,43 @@
* If opening the device fails, you might see the following:
* open, presize, memalloc, memfree, close
*
+ * A typical sequence of callbacks (when running with a
+ * display_choose_mode) will depend upon whether display_choose_mode
+ * selects pagemode or request-rectangle mode:
+ *
+ * In the pagemode case:
+ * open, presize, display_choose_mode, memalloc, size, sync, page
+ * presize, display_choose_mode, 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
+ *
+ * In the request-rectangle mode:
+ * open, presize, display_choose_mode, {rectangle_request}*
+ * presize, display_choose_mode, {rectangle_request}*
+ * preclose, close
+ *
+ * In a run that mixed request-rectangle and pagemode:
+ * open, presize, display_choose_mode, memalloc, size, sync, page
+ * presize, display_choose_mode, memfree, {rectangle_request}*
+ * presize, display_choose_mode, {rectangle_request}*
+ * presize, display_choose_mode, memalloc, size, sync, page
+ * preclose, memfree, close
*/
-#define DISPLAY_VERSION_MAJOR 2
+#define DISPLAY_VERSION_MAJOR 3
#define DISPLAY_VERSION_MINOR 0
#define DISPLAY_VERSION_MAJOR_V1 1 /* before separation format was added */
#define DISPLAY_VERSION_MINOR_V1 0
+#define DISPLAY_VERSION_MAJOR_V2 2 /* before planar and banding were added */
+#define DISPLAY_VERSION_MINOR_V2 0
+
/* The display format is set by a combination of the following bitfields */
/* Define the color space alternatives */
@@ -144,6 +188,14 @@ typedef enum {
} DISPLAY_FORMAT_ROW_ALIGN;
#define DISPLAY_ROW_ALIGN_MASK 0x00700000L
+/* Define whether we are using chunky, planar or planar interleaved
+ * representation. */
+typedef enum {
+ DISPLAY_CHUNKY = (0<<23),
+ DISPLAY_PLANAR = (1<<23),
+ DISPLAY_PLANAR_INTERLEAVED = (2<<23),
+} DISPLAY_FORMAT_PLANARNESS;
+
#ifndef display_callback_DEFINED
#define display_callback_DEFINED
typedef struct display_callback_s display_callback;
@@ -204,6 +256,10 @@ struct display_callback_s {
/* 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.
+ * NOTE: This is actually a really bad thing to work on. It may well
+ * end up not being called back at all during the rendering process,
+ * in particular if transparency is in use, or if rectangle request
+ * mode is used.
*/
int (*display_update)(void *handle, void *device, int x, int y,
int w, int h);
@@ -214,8 +270,14 @@ struct display_callback_s {
* 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.
+ *
+ * In the event of this callback returning NULL, Ghostscript will
+ * look for a display_rectangle_request callback. If one is not
+ * supplied, then this will be reported as memory exhaustion. If
+ * one is supplied, then Ghostscript will switch to working in
+ * rectangle request mode.
*/
- void *(*display_memalloc)(void *handle, void *device, unsigned long size);
+ void *(*display_memalloc)(void *handle, void *device, size_t size);
/* Free memory for bitmap */
/* If this is NULL, the Ghostscript memory device will free the bitmap */
@@ -238,13 +300,80 @@ struct display_callback_s {
int component, const char *component_name,
unsigned short c, unsigned short m,
unsigned short y, unsigned short k);
+
+ /* Added in V3 */
+ /* If non NULL, then this gives the callback provider a chance to
+ * a) be informed of and b) control the bandheight used by the
+ * display device. If a call to allocate the page mode bitmap fails
+ * (either an internal allocation or a display_memalloc call), then
+ * Ghostscript will look for the presence of a
+ * display_rectangle_request callback. If it exists, then it will
+ * attempt to use retangle request mode.
+ *
+ * As part of this, it will pick an appropriate bandheight. If
+ * this callback exists, it will be called so the callback provider
+ * can know (and, optionally, tweak) the bandheight to be used.
+ * This is purely for performance. The callback should only ever
+ * *reduce* the bandheight given here.
+ *
+ * Return the adjusted bandheight (or 0 for no change).
+ */
+ int (*display_adjust_band_height)(void *handle, void *device,
+ int bandheight);
+
+ /* Ask the callback for a rectangle to render (and a block to render
+ * it in). Each subsequent call tells the caller that any previous
+ * call has finished. To signal 'no more rectangles' return with
+ * *w or *h = 0.
+ *
+ * On entry: *raster and *plane_raster are set to the standard
+ * values. All other values are undefined.
+ * On return: *memory should point to a block of memory to use.
+ * Pixel (*ox,*oy) is the first pixel represented in that block.
+ * *raster = the number of bytes difference between the address of
+ * component 0 of Pixel(*ox,*oy) and the address of component 0 of
+ * Pixel(*ox,1+*oy).
+ * *plane_raster = the number of bytes difference between the
+ * address of component 0 of Pixel(*ox,*oy) and the address of
+ * component 1 of Pixel(*ox,*oy), if in planar mode, 0 otherwise.
+ * *x, *y, *w, *h = rectangle requested within that memory block.
+ *
+ */
+ int (*display_rectangle_request)(void *handle, void *device,
+ void **memory, int *ox, int *oy,
+ int *raster, int *plane_raster,
+ int *x, int *y, int *w, int *h);
+};
+
+/* This is the V2 structure, before banding and planar support was added */
+struct display_callback_v2_s {
+ int size; /* sizeof(struct display_callback_v2) */
+ int version_major; /* DISPLAY_VERSION_MAJOR_V2 */
+ int version_minor; /* DISPLAY_VERSION_MINOR_V2 */
+ 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);
+ 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 size; /* sizeof(struct display_callback_v1) */
+ int version_major; /* DISPLAY_VERSION_MAJOR_V1 */
+ int version_minor; /* DISPLAY_VERSION_MINOR_V1 */
int (*display_open)(void *handle, void *device);
int (*display_preclose)(void *handle, void *device);
int (*display_close)(void *handle, void *device);
@@ -262,4 +391,27 @@ struct display_callback_v1_s {
#define DISPLAY_CALLBACK_V1_SIZEOF sizeof(struct display_callback_v1_s)
+#define DISPLAY_CALLOUT_GET_CALLBACK 0
+#define DISPLAY_CALLOUT_GET_CALLBACK_LEGACY 1
+
+typedef struct {
+ display_callback *callback;
+ void *caller_handle;
+} gs_display_get_callback_t;
+
+/* The display device calls a callout to find the callback structure
+ * and caller_handle from the environment (the DLL caller/user of the
+ * API).
+ * It passes:
+ * id = DISPLAY_CALLOUT_GET_CALLBACK.
+ * size = sizeof(gs_display_get_callback_t) (or larger);
+ * data = pointer to gs_display_get_callback_t instance for callout
+ * handler to fill in.
+ *
+ * In order to support the old gsapi_set_display_callback we have a
+ * related callout, DISPLAY_CALLOUT_GET_CALLBACK_LEGACY. Do not use
+ * this!
+ */
+
+
#endif /* gdevdsp_INCLUDED */
diff --git a/devices/gdevdsp2.h b/devices/gdevdsp2.h
index 4dddbf58..3a098873 100644
--- a/devices/gdevdsp2.h
+++ b/devices/gdevdsp2.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -20,23 +20,26 @@
#include "gdevdevn.h"
#include "gdevdsp.h"
+#include "gxclist.h"
typedef struct gx_device_display_s gx_device_display;
#define gx_device_display_common\
- gx_device_memory *mdev;\
display_callback *callback;\
void *pHandle;\
+ int pHandle_set;\
int nFormat;\
void *pBitmap;\
- unsigned long ulBitmapSize;\
+ size_t zBitmapSize;\
int HWResolution_set;\
gs_devn_params devn_params;\
- equivalent_cmyk_color_params equiv_cmyk_colors
+ equivalent_cmyk_color_params equiv_cmyk_colors;\
+ gx_device_procs mutated_procs
/* The device descriptor */
struct gx_device_display_s {
gx_device_common;
+ gx_device_clist_mutatable_common;
gx_device_display_common;
};
diff --git a/devices/gdevepsc.c b/devices/gdevepsc.c
index f6fa2b30..830d7668 100644
--- a/devices/gdevepsc.c
+++ b/devices/gdevepsc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevepsn.c b/devices/gdevepsn.c
index c69e4b53..7b77b998 100644
--- a/devices/gdevepsn.c
+++ b/devices/gdevepsn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevescp.c b/devices/gdevescp.c
index 005fa58a..14e420b5 100644
--- a/devices/gdevescp.c
+++ b/devices/gdevescp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevfax.c b/devices/gdevfax.c
index dd783239..27b3c888 100644
--- a/devices/gdevfax.c
+++ b/devices/gdevfax.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -239,14 +239,14 @@ gdev_fax_print_strip(gx_device_printer * pdev, gp_file * prn_stream,
int status;
if_debug7m('w', mem,
- "[w]lnum=%d r=0x%lx,0x%lx,0x%lx w=0x%lx,0x%lx,0x%lx\n", lnum,
- (ulong)in, (ulong)r.ptr, (ulong)r.limit,
- (ulong)out, (ulong)w.ptr, (ulong)w.limit);
+ "[w]lnum=%d r="PRI_INTPTR","PRI_INTPTR","PRI_INTPTR" w="PRI_INTPTR","PRI_INTPTR","PRI_INTPTR"\n", lnum,
+ (intptr_t)in, (intptr_t)r.ptr, (intptr_t)r.limit,
+ (intptr_t)out, (intptr_t)w.ptr, (intptr_t)w.limit);
status = temp->process(ss, &r, &w, lnum == row_end);
if_debug7m('w', mem,
- "...%d, r=0x%lx,0x%lx,0x%lx w=0x%lx,0x%lx,0x%lx\n", status,
- (ulong)in, (ulong)r.ptr, (ulong)r.limit,
- (ulong)out, (ulong)w.ptr, (ulong)w.limit);
+ "...%d, r="PRI_INTPTR","PRI_INTPTR","PRI_INTPTR" w="PRI_INTPTR","PRI_INTPTR","PRI_INTPTR"\n", status,
+ (intptr_t)in, (intptr_t)r.ptr, (intptr_t)r.limit,
+ (intptr_t)out, (intptr_t)w.ptr, (intptr_t)w.limit);
switch (status) {
case 0: /* need more input data */
if (lnum == row_end)
diff --git a/devices/gdevfax.h b/devices/gdevfax.h
index ca989269..b0419d31 100644
--- a/devices/gdevfax.h
+++ b/devices/gdevfax.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevfpng.c b/devices/gdevfpng.c
index cc91f672..74cfac70 100644
--- a/devices/gdevfpng.c
+++ b/devices/gdevfpng.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevhl7x.c b/devices/gdevhl7x.c
index 1a3e5949..66d1db29 100644
--- a/devices/gdevhl7x.c
+++ b/devices/gdevhl7x.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevicov.c b/devices/gdevicov.c
index 517ca4ff..355be240 100644
--- a/devices/gdevicov.c
+++ b/devices/gdevicov.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevijs.c b/devices/gdevijs.c
index 3d337c5d..42e1e916 100644
--- a/devices/gdevijs.c
+++ b/devices/gdevijs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -78,7 +78,7 @@
/* This should go into gdevprn.h, or, better yet, gdevprn should
acquire an API for changing resolution. */
int gdev_prn_maybe_realloc_memory(gx_device_printer *pdev,
- gdev_prn_space_params *old_space,
+ gdev_space_params *old_space,
int old_width, int old_height,
bool old_page_uses_transparency);
diff --git a/devices/gdevimgn.c b/devices/gdevimgn.c
index 7c707bda..c6e291a4 100644
--- a/devices/gdevimgn.c
+++ b/devices/gdevimgn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevjbig2.c b/devices/gdevjbig2.c
index a0dda91f..d6b4ef96 100644
--- a/devices/gdevjbig2.c
+++ b/devices/gdevjbig2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevjpeg.c b/devices/gdevjpeg.c
index 229e6ccb..7162acdb 100644
--- a/devices/gdevjpeg.c
+++ b/devices/gdevjpeg.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -437,7 +437,8 @@ jpeg_print_page(gx_device_printer * pdev, gp_file * prn_stream)
goto fail;
}
code = gx_downscaler_init(&ds, (gx_device *)jdev, 8, 8,
- jdev->color_info.depth/8, jdev->downscale.downscale_factor, 0, NULL, 0);
+ jdev->color_info.depth/8,
+ &jdev->downscale, NULL, 0);
if (code < 0) {
gs_free_object(mem, jcdp, "jpeg_print_page(jpeg_compress_data)");
jcdp = NULL;
@@ -462,8 +463,9 @@ jpeg_print_page(gx_device_printer * pdev, gp_file * prn_stream)
state.data.compress = jcdp;
/* Add in ICC profile */
state.icc_profile = NULL; /* In case it is not set here */
- if (pdev->icc_struct != NULL && pdev->icc_struct->device_profile[0] != NULL) {
- cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[0];
+ if (pdev->icc_struct != NULL &&
+ pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE] != NULL) {
+ cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE];
if (icc_profile->num_comps == pdev->color_info.num_components &&
!(pdev->icc_struct->usefastcolor)) {
state.icc_profile = icc_profile;
diff --git a/devices/gdevjpx.c b/devices/gdevjpx.c
index e38f5402..b3c3690b 100644
--- a/devices/gdevjpx.c
+++ b/devices/gdevjpx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevl31s.c b/devices/gdevl31s.c
index b21b18c8..a3225ea9 100644
--- a/devices/gdevl31s.c
+++ b/devices/gdevl31s.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevlbp8.c b/devices/gdevlbp8.c
index 3136772a..ca96b69c 100644
--- a/devices/gdevlbp8.c
+++ b/devices/gdevlbp8.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevlj56.c b/devices/gdevlj56.c
index 6199e5be..a3314e03 100644
--- a/devices/gdevlj56.c
+++ b/devices/gdevlj56.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevlp8k.c b/devices/gdevlp8k.c
index 58ae0702..60d3c6e3 100644
--- a/devices/gdevlp8k.c
+++ b/devices/gdevlp8k.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevlxm.c b/devices/gdevlxm.c
index fe577c32..6e557ede 100644
--- a/devices/gdevlxm.c
+++ b/devices/gdevlxm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevmeds.c b/devices/gdevmeds.c
index c7899ea3..9435fed3 100644
--- a/devices/gdevmeds.c
+++ b/devices/gdevmeds.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevmeds.h b/devices/gdevmeds.h
index 8400f5d8..2c247299 100644
--- a/devices/gdevmeds.h
+++ b/devices/gdevmeds.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevmgr.c b/devices/gdevmgr.c
index 79c299d5..d0b81b11 100644
--- a/devices/gdevmgr.c
+++ b/devices/gdevmgr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -218,10 +218,11 @@ mgrN_print_page(gx_device_printer *pdev, gp_file *pstream)
}
}
- if ( bdev->mgr_depth != 8 )
+ if ( bdev->mgr_depth != 8 ) {
data = (byte *)gs_malloc(pdev->memory, mgr_line_size, 1, "mgrN_print_page");
- if (data == NULL)
- return_error(gs_error_VMerror);
+ if (data == NULL)
+ return_error(gs_error_VMerror);
+ }
while ( !(code = mgr_next_row(&cur)) )
{
diff --git a/devices/gdevmgr.h b/devices/gdevmgr.h
index 6b8056a5..483237ec 100644
--- a/devices/gdevmgr.h
+++ b/devices/gdevmgr.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevmiff.c b/devices/gdevmiff.c
index ed45474d..c1d56496 100644
--- a/devices/gdevmiff.c
+++ b/devices/gdevmiff.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevn533.c b/devices/gdevn533.c
index 35720364..c697d441 100644
--- a/devices/gdevn533.c
+++ b/devices/gdevn533.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevo182.c b/devices/gdevo182.c
index 713596a0..ec26205c 100644
--- a/devices/gdevo182.c
+++ b/devices/gdevo182.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevocr.c b/devices/gdevocr.c
new file mode 100644
index 00000000..ddfaa809
--- /dev/null
+++ b/devices/gdevocr.c
@@ -0,0 +1,265 @@
+/* Copyright (C) 2001-2020 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 the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+
+#include "gdevprn.h"
+#include "gdevmem.h"
+#include "gdevpccm.h"
+#include "gscdefs.h"
+#include "gxgetbit.h"
+#include "tessocr.h"
+#include "gxdownscale.h"
+
+/* ------ The device descriptors ------ */
+
+/*
+ * Default X and Y resolution.
+ */
+#define X_DPI 72
+#define Y_DPI 72
+
+static dev_proc_print_page(ocr_print_page);
+static dev_proc_print_page(hocr_print_page);
+static dev_proc_get_params(ocr_get_params);
+static dev_proc_put_params(ocr_put_params);
+static dev_proc_open_device(hocr_open);
+static dev_proc_close_device(hocr_close);
+
+typedef struct gx_device_ocr_s gx_device_ocr;
+struct gx_device_ocr_s {
+ gx_device_common;
+ gx_prn_device_common;
+ gx_downscaler_params downscale;
+ char language[1024];
+ int page_count;
+};
+
+/* 8-bit gray bitmap -> UTF8 OCRd text */
+
+static const gx_device_procs ocr_procs =
+prn_color_params_procs(gdev_prn_open, gdev_prn_bg_output_page, gdev_prn_close,
+ gx_default_gray_map_rgb_color,
+ gx_default_gray_map_color_rgb,
+ ocr_get_params, ocr_put_params);
+const gx_device_ocr gs_ocr_device =
+{
+ prn_device_body(gx_device_ocr, ocr_procs, "ocr",
+ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ X_DPI, Y_DPI,
+ 0, 0, 0, 0, /* margins */
+ 1, 8, 255, 0, 256, 0, ocr_print_page),
+ GX_DOWNSCALER_PARAMS_DEFAULTS
+};
+
+/* 8-bit gray bitmap -> HTML OCRd text */
+
+static const gx_device_procs hocr_procs =
+prn_color_params_procs(hocr_open, gdev_prn_bg_output_page, hocr_close,
+ gx_default_gray_map_rgb_color,
+ gx_default_gray_map_color_rgb,
+ ocr_get_params, ocr_put_params);
+const gx_device_ocr gs_hocr_device =
+{
+ prn_device_body(gx_device_ocr, hocr_procs, "hocr",
+ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ X_DPI, Y_DPI,
+ 0, 0, 0, 0, /* margins */
+ 1, 8, 255, 0, 256, 0, hocr_print_page),
+ GX_DOWNSCALER_PARAMS_DEFAULTS
+};
+
+/* ------ Private definitions ------ */
+
+#define HOCR_HEADER "<html>\n <body>\n"
+#define HOCR_TRAILER " </body>\n</html>\n"
+
+static int
+hocr_open(gx_device *pdev)
+{
+ gx_device_ocr *dev = (gx_device_ocr *)pdev;
+
+ dev->page_count = 0;
+
+ return gdev_prn_open(pdev);
+}
+
+static int
+hocr_close(gx_device *pdev)
+{
+ gx_device_ocr *dev = (gx_device_ocr *)pdev;
+ gx_device_printer * const ppdev = (gx_device_printer *)pdev;
+
+ if (dev->page_count > 0 && dev->file != NULL) {
+ gp_fwrite(HOCR_TRAILER, 1, sizeof(HOCR_TRAILER)-1, dev->file);
+ }
+
+ return gdev_prn_close(pdev);
+}
+
+static int
+ocr_get_params(gx_device * dev, gs_param_list * plist)
+{
+ gx_device_ocr *pdev = (gx_device_ocr *)dev;
+ int code, ecode = 0;
+ gs_param_string langstr;
+
+ if (pdev->language[0]) {
+ langstr.data = (const byte *)pdev->language;
+ langstr.size = strlen(pdev->language);
+ langstr.persistent = false;
+ } else {
+ langstr.data = (const byte *)"eng";
+ langstr.size = 3;
+ langstr.persistent = false;
+ }
+ if ((code = param_write_string(plist, "OCRLanguage", &langstr)) < 0)
+ ecode = code;
+
+ if ((code = gx_downscaler_write_params(plist, &pdev->downscale,
+ GX_DOWNSCALER_PARAMS_MFS)) < 0)
+ ecode = code;
+
+ code = gdev_prn_get_params(dev, plist);
+ if (code < 0)
+ ecode = code;
+
+ return ecode;
+}
+
+static int
+ocr_put_params(gx_device *dev, gs_param_list *plist)
+{
+ gx_device_ocr *pdev = (gx_device_ocr *)dev;
+ int code, ecode = 0;
+ gs_param_string langstr;
+ const char *param_name;
+ size_t len;
+
+ switch (code = param_read_string(plist, (param_name = "OCRLanguage"), &langstr)) {
+ case 0:
+ len = langstr.size;
+ if (len >= sizeof(pdev->language))
+ len = sizeof(pdev->language)-1;
+ memcpy(pdev->language, langstr.data, len);
+ pdev->language[len] = 0;
+ break;
+ case 1:
+ break;
+ default:
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ code = gx_downscaler_read_params(plist, &pdev->downscale,
+ GX_DOWNSCALER_PARAMS_MFS);
+ if (code < 0)
+ {
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ code = gdev_prn_put_params(dev, plist);
+ if (code < 0)
+ ecode = code;
+
+ return ecode;
+}
+
+/* OCR a page and write it out. */
+static int
+do_ocr_print_page(gx_device_ocr * pdev, gp_file * file, int hocr)
+{
+ gs_memory_t *mem = pdev->memory;
+ int row;
+ byte *data = NULL;
+ char *out;
+ int factor = pdev->downscale.downscale_factor;
+ int height = gx_downscaler_scale(pdev->height, factor);
+ int width = gx_downscaler_scale(pdev->width, factor);
+ int raster = bitmap_raster(width*8);
+ gx_downscaler_t ds;
+ int code;
+
+ code = gx_downscaler_init(&ds,
+ (gx_device *)pdev,
+ 8, /* src_bpc */
+ 8, /* dst_bpc */
+ 1, /* num_comps */
+ &pdev->downscale,
+ NULL, 0); /* adjust_width_proc, width */
+ if (code < 0)
+ return code;
+
+ data = gs_alloc_bytes(pdev->memory,
+ raster * height,
+ "do_ocr_print_page");
+ if (data == NULL) {
+ gx_downscaler_fin(&ds);
+ code = gs_error_VMerror;
+ goto done;
+ }
+
+ for (row = 0; row < height && code >= 0; row++) {
+ code = gx_downscaler_getbits(&ds, data + row * raster, row);
+ }
+ gx_downscaler_fin(&ds);
+ if (code < 0)
+ goto done;
+
+ if (hocr)
+ code = ocr_image_to_hocr(pdev->memory,
+ width, height,
+ 8, raster,
+ (int)pdev->HWResolution[0],
+ (int)pdev->HWResolution[1],
+ data, 0, pdev->page_count,
+ "eng", &out);
+ else
+ code = ocr_image_to_utf8(pdev->memory,
+ width, height,
+ 8, raster,
+ (int)pdev->HWResolution[0],
+ (int)pdev->HWResolution[1],
+ data, 0, "eng", &out);
+ if (code < 0)
+ goto done;
+ if (out)
+ {
+ if (hocr && pdev->page_count == 0) {
+ gp_fwrite(HOCR_HEADER, 1, sizeof(HOCR_HEADER)-1, file);
+ }
+ gp_fwrite(out, 1, strlen(out), file);
+ gs_free_object(pdev->memory, out, "ocr_image_to_utf8");
+ }
+
+ done:
+ if (data)
+ gs_free_object(pdev->memory, data, "do_ocr_print_page");
+ pdev->page_count++;
+
+ return code;
+}
+
+static int
+ocr_print_page(gx_device_printer * pdev, gp_file * file)
+{
+ return do_ocr_print_page((gx_device_ocr *)pdev, file, 0);
+}
+
+static int
+hocr_print_page(gx_device_printer * pdev, gp_file * file)
+{
+ return do_ocr_print_page((gx_device_ocr *)pdev, file, 1);
+}
diff --git a/devices/gdevokii.c b/devices/gdevokii.c
index 3350f6d9..62fe616c 100644
--- a/devices/gdevokii.c
+++ b/devices/gdevokii.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpbm.c b/devices/gdevpbm.c
index 412d0109..fd9b2619 100644
--- a/devices/gdevpbm.c
+++ b/devices/gdevpbm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpcl.c b/devices/gdevpcl.c
index befb1bf2..be196663 100644
--- a/devices/gdevpcl.c
+++ b/devices/gdevpcl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpcl.h b/devices/gdevpcl.h
index 24496cf2..3d167ae4 100644
--- a/devices/gdevpcl.h
+++ b/devices/gdevpcl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpcx.c b/devices/gdevpcx.c
index 91de4abb..137955cb 100644
--- a/devices/gdevpcx.c
+++ b/devices/gdevpcx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpdfimg.c b/devices/gdevpdfimg.c
index 998574c8..313d714f 100644
--- a/devices/gdevpdfimg.c
+++ b/devices/gdevpdfimg.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -30,6 +30,8 @@
#include "gsicc_cache.h"
#include "sjpeg.h"
+#include "gdevpdfimg.h"
+
#define COMPRESSION_NONE 1 /* dump mode */
#define COMPRESSION_LZW 2 /* Lempel-Ziv & Welch */
#define COMPRESSION_FLATE 3
@@ -48,58 +50,9 @@ static struct compression_string {
{ 0, NULL }
};
-int pdf_image_open(gx_device *pdev);
int PCLm_open(gx_device *pdev);
-int pdf_image_close(gx_device * pdev);
int PCLm_close(gx_device * pdev);
-int pdf_image_put_params_downscale(gx_device * dev, gs_param_list * plist);
-int pdf_image_put_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
-int pdf_image_put_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
-int pdf_image_get_params_downscale(gx_device * dev, gs_param_list * plist);
-int pdf_image_get_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
-int pdf_image_get_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
-
-typedef struct pdfimage_page_s {
- int ImageObjectNumber;
- gs_offset_t ImageOffset;int LengthObjectNumber;
- gs_offset_t LengthOffset;
- int PageStreamObjectNumber;
- gs_offset_t PageStreamOffset;
- int PageDictObjectNumber;
- gs_offset_t PageDictOffset;
- void *next;
-} pdfimage_page;
-
-typedef struct PCLm_temp_file_s {
- char file_name[gp_file_name_sizeof];
- gp_file *file;
- stream *strm;
- stream *save;
- byte *strm_buf;
-} PCLm_temp_file_t;
-
-typedef struct gx_device_pdf_image_s {
- gx_device_common;
- gx_prn_device_common;
- unsigned char Compression;
- gx_downscaler_params downscale;
- int StripHeight;
- float QFactor;
- int JPEGQ;
- gsicc_link_t *icclink;
- stream *strm;
- byte *strm_buf;
- int NumPages;
- gs_offset_t RootOffset;
- gs_offset_t PagesOffset;
- gs_offset_t xrefOffset;
- pdfimage_page *Pages;
- PCLm_temp_file_t xref_stream;
- PCLm_temp_file_t temp_stream;
- int NextObject;
-} gx_device_pdf_image;
-
-static dev_proc_print_page(pdf_image_print_page);
+
/* ------ The pdfimage8 device ------ */
@@ -268,7 +221,7 @@ static int gdev_pdf_image_begin_page(gx_device_pdf_image *pdf_dev,
&rendering_params);
} else {
pdf_dev->icclink = gsicc_alloc_link_dev(pdev->memory,
- profile_struct->device_profile[0], profile_struct->postren_profile,
+ profile_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE], profile_struct->postren_profile,
&rendering_params);
}
if (pdf_dev->icclink == NULL) {
@@ -291,11 +244,11 @@ static int gdev_pdf_image_begin_page(gx_device_pdf_image *pdf_dev,
}
pdf_dev->strm_buf = gs_alloc_bytes(pdf_dev->memory->non_gc_memory, pdf_dev->width * (pdf_dev->color_info.depth / 8),
"pdfimage_open_temp_stream(strm_buf)");
- if (pdf_dev->strm_buf == 0) {
+ if (pdf_dev->strm_buf == NULL) {
pdf_dev->strm->file = NULL; /* Don't close underlying file when we free the stream */
gs_free_object(pdf_dev->memory->non_gc_memory, pdf_dev->strm,
"pdfimage_open_temp_stream(strm)");
- pdf_dev->strm = 0;
+ pdf_dev->strm = NULL;
gs_free_object(pdf_dev->memory->non_gc_memory, page, "pdfimage create new page");
return_error(gs_error_VMerror);
}
@@ -303,6 +256,20 @@ static int gdev_pdf_image_begin_page(gx_device_pdf_image *pdf_dev,
stream_puts(pdf_dev->strm, "%PDF-1.3\n");
stream_puts(pdf_dev->strm, "%\307\354\217\242\n");
+
+ if (pdf_dev->ocr.file_init) {
+ code = pdf_dev->ocr.file_init(pdf_dev);
+ if (code < 0) {
+ gs_free_object(pdf_dev->memory->non_gc_memory, pdf_dev->strm_buf, "pdfimage_open_temp_stream(strm_buf)");
+ pdf_dev->strm->file = NULL; /* Don't close underlying file when we free the stream */
+ gs_free_object(pdf_dev->memory->non_gc_memory, pdf_dev->strm,
+ "pdfimage_open_temp_stream(strm)");
+ pdf_dev->strm = NULL;
+ gs_free_object(pdf_dev->memory->non_gc_memory, page, "pdfimage create new page");
+ return code;
+ }
+ }
+
pdfimage_write_args_comment(pdf_dev, pdf_dev->strm);
pdf_dev->Pages = page;
} else {
@@ -311,7 +278,7 @@ static int gdev_pdf_image_begin_page(gx_device_pdf_image *pdf_dev,
current = current->next;
current->next = page;
}
- page->ImageObjectNumber = (pdf_dev->NumPages * 4) + 3;
+ page->ImageObjectNumber = (pdf_dev->NumPages * 4) + 3 + pdf_dev->ocr.file_objects;
page->LengthObjectNumber = page->ImageObjectNumber + 1;
page->PageStreamObjectNumber = page->LengthObjectNumber + 1;
page->PageDictObjectNumber = page->PageStreamObjectNumber + 1;
@@ -449,19 +416,19 @@ encode(gx_device *pdev, stream **s, const stream_template *t, gs_memory_t *mem)
}
static int
-pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
- int mfs, int bpc, int num_comps,
- int trap_w, int trap_h, const int *trap_order,
- int ets)
+pdf_image_downscale_and_print_page(gx_device_printer *dev,
+ gx_downscaler_params *params,
+ int bpc, int num_comps)
{
gx_device_pdf_image *const pdf_dev = (gx_device_pdf_image *)dev;
int code = 0;
byte *data = NULL;
int size = gdev_mem_bytes_per_scan_line((gx_device *)dev);
- int max_size =size;
+ int max_size = size;
int row;
- int height = dev->height/factor;
- int width = dev->width/factor;
+ int factor = params->downscale_factor;
+ int height = gx_downscaler_scale(dev->height, factor);
+ int width = gx_downscaler_scale(dev->width, factor);
gx_downscaler_t ds;
gs_offset_t stream_pos = 0;
pdfimage_page *page = pdf_dev->Pages;
@@ -474,24 +441,23 @@ pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
while(page->next)
page = page->next;
- if (num_comps == 4) {
- if (pdf_dev->icclink == NULL) {
- code = gx_downscaler_init_trapped_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ trap_w, trap_h, trap_order, ets);
- } else {
- code = gx_downscaler_init_trapped_cm_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ trap_w, trap_h, trap_order,
- pdf_image_chunky_post_cm, pdf_dev->icclink, pdf_dev->icclink->num_output, ets);
- }
+ if (num_comps != 4)
+ params->trap_w = params->trap_h = 0;
+ if (pdf_dev->icclink == NULL) {
+ code = gx_downscaler_init(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ NULL, /*&fax_adjusted_width*/
+ 0 /*aw*/);
} else {
- if (pdf_dev->icclink == NULL) {
- code = gx_downscaler_init_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ ets);
- } else {
- code = gx_downscaler_init_cm_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ pdf_image_chunky_post_cm, pdf_dev->icclink,
- pdf_dev->icclink->num_output, ets);
- }
+ code = gx_downscaler_init_cm(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ NULL, /*&fax_adjusted_width*/
+ 0, /*aw*/
+ pdf_image_chunky_post_cm,
+ pdf_dev->icclink,
+ pdf_dev->icclink->num_output);
}
if (code < 0)
return code;
@@ -502,6 +468,16 @@ pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
return_error(gs_error_VMerror);
}
+ if (pdf_dev->ocr.begin_page) {
+ code = pdf_dev->ocr.begin_page(pdf_dev, width, height, num_comps*8);
+ if (code < 0)
+ {
+ gs_free_object(dev->memory, data, "pdf_image_print_page(data)");
+ gx_downscaler_fin(&ds);
+ return code;
+ }
+ }
+
pprintd1(pdf_dev->strm, "%d 0 obj\n", page->ImageObjectNumber);
pprintd1(pdf_dev->strm, "<<\n/Length %d 0 R\n", page->LengthObjectNumber);
stream_puts(pdf_dev->strm, "/Subtype /Image\n");
@@ -558,13 +534,15 @@ pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
code = gx_downscaler_getbits(&ds, data, row);
if (code < 0)
break;
+ if (pdf_dev->ocr.line)
+ pdf_dev->ocr.line(pdf_dev, data);
stream_write(pdf_dev->strm, data, width * num_comps);
}
if (code < 0) {
gs_free_object(dev->memory, data, "pdf_image_print_page(data)");
gx_downscaler_fin(&ds);
- return code;;
+ return code;
}
switch(pdf_dev->Compression) {
@@ -588,9 +566,26 @@ pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
page->PageStreamOffset = stell(pdf_dev->strm);
pprintd1(pdf_dev->strm, "%d 0 obj\n", page->PageStreamObjectNumber);
- gs_sprintf(Buffer, "%f 0 0 %f 0 0 cm\n/Im1 Do", (width / (pdf_dev->HWResolution[0] / 72)) * factor, (height / (pdf_dev->HWResolution[1] / 72)) * factor);
- pprintd1(pdf_dev->strm, "<<\n/Length %d\n>>\nstream\n", strlen(Buffer));
- stream_puts(pdf_dev->strm, Buffer);
+ stream_puts(pdf_dev->strm, "<<\n/Filter/FlateDecode/Length \n>>\nstream\n");
+ stream_pos = stell(pdf_dev->strm);
+ encode((gx_device *)pdf_dev, &pdf_dev->strm, &s_zlibE_template, pdf_dev->memory->non_gc_memory);
+ if (pdf_dev->ocr.end_page)
+ stream_puts(pdf_dev->strm, "q\n");
+ pprintd2(pdf_dev->strm, "%d 0 0 %d 0 0 cm\n/Im1 Do",
+ (int)((width / (pdf_dev->HWResolution[0] / 72)) * factor),
+ (int)((height / (pdf_dev->HWResolution[1] / 72)) * factor));
+ if (pdf_dev->ocr.end_page) {
+ stream_puts(pdf_dev->strm, "\nQ");
+ pdf_dev->ocr.end_page(pdf_dev);
+ }
+ s_close_filters(&pdf_dev->strm, s);
+ {
+ gs_offset_t pos = stell(pdf_dev->strm);
+ gs_offset_t len = pos - stream_pos;
+ sseek(pdf_dev->strm, stream_pos - 21);
+ pprintd1(pdf_dev->strm, "%d", (int)len);
+ sseek(pdf_dev->strm, pos);
+ }
stream_puts(pdf_dev->strm, "\nendstream\nendobj\n");
page->PageDictOffset = stell(pdf_dev->strm);
@@ -599,8 +594,10 @@ pdf_image_downscale_and_print_page(gx_device_printer *dev, int factor,
stream_puts(pdf_dev->strm, "/Type /Page\n/Parent 2 0 R\n");
gs_sprintf(Buffer, "/MediaBox [0 0 %f %f]\n", ((double)pdf_dev->width / pdf_dev->HWResolution[0]) * 72, ((double)pdf_dev->height / pdf_dev->HWResolution[1]) * 72);
stream_puts(pdf_dev->strm, Buffer);
- pprintd1(pdf_dev->strm, "/Resources <<\n/XObject <<\n/Im1 %d 0 R\n>>\n>>\n>>\n", page->ImageObjectNumber);
- stream_puts(pdf_dev->strm, "endobj\n");
+ pprintd1(pdf_dev->strm, "/Resources <<\n/XObject <<\n/Im1 %d 0 R\n>>\n", page->ImageObjectNumber);
+ if (pdf_dev->ocr.file_init)
+ stream_puts(pdf_dev->strm, "/Font <<\n/Ft0 3 0 R\n>>\n");
+ stream_puts(pdf_dev->strm, ">>\n>>\nendobj\n");
gx_downscaler_fin(&ds);
gs_free_object(dev->memory, data, "pdf_image_print_page(data)");
@@ -703,10 +700,11 @@ static void write_xref_entry (stream *s, gs_offset_t Offset)
static void
pdf_store_default_Producer(char *buf)
{
- if ((gs_revision % 100) == 0)
- gs_sprintf(buf, "(%s %1.1f)", gs_product, gs_revision / 100.0);
- else
- gs_sprintf(buf, "(%s %1.2f)", gs_product, gs_revision / 100.0);
+ int major = (int)(gs_revision / 1000);
+ int minor = (int)(gs_revision - (major * 1000)) / 10;
+ int patch = gs_revision % 10;
+
+ gs_sprintf(buf, "(%s %d.%02d.%d)", gs_product, major, minor, patch);
}
static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
@@ -761,9 +759,16 @@ static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
if (PCLm)
pprintd1(pdf_dev->strm, "xref\n0 %d\n0000000000 65536 f \n", pdf_dev->NextObject);
else
- pprintd1(pdf_dev->strm, "xref\n0 %d\n0000000000 65536 f \n", (pdf_dev->NumPages * 4) + 3);
+ pprintd1(pdf_dev->strm, "xref\n0 %d\n0000000000 65536 f \n", (pdf_dev->NumPages * 4) + 3 + pdf_dev->ocr.file_objects);
write_xref_entry(pdf_dev->strm, pdf_dev->RootOffset);
write_xref_entry(pdf_dev->strm, pdf_dev->PagesOffset);
+ if (pdf_dev->ocr.file_objects) {
+ int i;
+
+ for (i = 0; i < OCR_MAX_FILE_OBJECTS; i++)
+ if (pdf_dev->ocr.file_object_offset[i])
+ write_xref_entry(pdf_dev->strm, pdf_dev->ocr.file_object_offset[i]);
+ }
if (!PCLm) {
page = pdf_dev->Pages;
@@ -774,7 +779,7 @@ static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
write_xref_entry(pdf_dev->strm, page->PageDictOffset);
page = page->next;
}
- pprintd1(pdf_dev->strm, "trailer\n<<\n/Size %d\n/Root 1 0 R\n/ID [", (pdf_dev->NumPages * 4) + 3);
+ pprintd1(pdf_dev->strm, "trailer\n<<\n/Size %d\n/Root 1 0 R\n/ID [", (pdf_dev->NumPages * 4) + 3 + pdf_dev->ocr.file_objects);
pdf_compute_fileID(pdf_dev, fileID, CreationDate, Title, Producer);
write_fileID(pdf_dev->strm, (const byte *)&fileID, 16);
write_fileID(pdf_dev->strm, (const byte *)&fileID, 16);
@@ -844,7 +849,7 @@ static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
return 0;
}
-static int
+int
pdf_image_print_page(gx_device_printer * pdev, gp_file * file)
{
gx_device_pdf_image *const pdf_dev = (gx_device_pdf_image *)pdev;
@@ -857,11 +862,9 @@ pdf_image_print_page(gx_device_printer * pdev, gp_file * file)
return code;
code = pdf_image_downscale_and_print_page(pdev,
- pdf_dev->downscale.downscale_factor,
- pdf_dev->downscale.min_feature_size,
- 8, pdf_dev->color_info.num_components,
- 0, 0, NULL,
- pdf_dev->downscale.ets);
+ &pdf_dev->downscale,
+ 8,
+ pdf_dev->color_info.num_components);
if (code < 0)
return code;
@@ -908,6 +911,7 @@ pdf_image_open(gx_device *pdev)
}
if (ppdev->OpenOutputFile)
code = gdev_prn_open_printer_seekable(pdev, 1, true);
+
return code;
}
@@ -1209,6 +1213,7 @@ PCLm_open(gx_device *pdev)
while(pdev->child)
pdev = pdev->child;
+ memset(&ppdev->ocr, 0, sizeof(ppdev->ocr));
ppdev->file = NULL;
ppdev->Pages = NULL;
ppdev->NumPages = 0;
@@ -1280,7 +1285,7 @@ static int gdev_PCLm_begin_page(gx_device_pdf_image *pdf_dev,
&rendering_params);
} else {
pdf_dev->icclink = gsicc_alloc_link_dev(pdev->memory,
- profile_struct->device_profile[0], profile_struct->postren_profile,
+ profile_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE], profile_struct->postren_profile,
&rendering_params);
}
if (pdf_dev->icclink == NULL) {
@@ -1331,19 +1336,19 @@ static int gdev_PCLm_begin_page(gx_device_pdf_image *pdf_dev,
}
static int
-PCLm_downscale_and_print_page(gx_device_printer *dev, int factor,
- int mfs, int bpc, int num_comps,
- int trap_w, int trap_h, const int *trap_order,
- int ets)
+PCLm_downscale_and_print_page(gx_device_printer *dev,
+ int bpc, int num_comps)
{
gx_device_pdf_image *const pdf_dev = (gx_device_pdf_image *)dev;
int code = 0;
uint Read;
byte *data = NULL;
int size = gdev_mem_bytes_per_scan_line((gx_device *)dev);
- int max_size =size;
+ int max_size = size;
int row, NumStrips;
double StripDecrement;
+ const gx_downscaler_params *params = &pdf_dev->downscale;
+ int factor = params->downscale_factor;
int height = dev->height/factor;
int width = dev->width/factor;
gx_downscaler_t ds;
@@ -1358,12 +1363,20 @@ PCLm_downscale_and_print_page(gx_device_printer *dev, int factor,
page = page->next;
if (pdf_dev->icclink == NULL) {
- code = gx_downscaler_init_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ ets);
+ code = gx_downscaler_init(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ NULL, /*&fax_adjusted_width*/
+ 0 /*aw*/);
} else {
- code = gx_downscaler_init_cm_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, NULL, /*&fax_adjusted_width*/ 0, /*aw*/ pdf_image_chunky_post_cm, pdf_dev->icclink,
- pdf_dev->icclink->num_output, ets);
+ code = gx_downscaler_init_cm(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ NULL, /*&fax_adjusted_width*/
+ 0, /*aw*/
+ pdf_image_chunky_post_cm,
+ pdf_dev->icclink,
+ pdf_dev->icclink->num_output);
}
if (code < 0)
return code;
@@ -1386,7 +1399,7 @@ PCLm_downscale_and_print_page(gx_device_printer *dev, int factor,
pprintd1(pdf_dev->strm, "%d 0 obj\n", page->PageDictObjectNumber);
pprintd1(pdf_dev->strm, "<<\n/Contents %d 0 R\n", page->PageStreamObjectNumber);
stream_puts(pdf_dev->strm, "/Type /Page\n/Parent 2 0 R\n");
- gs_sprintf(Buffer, "/MediaBox [0 0 %f %f]\n", ((double)pdf_dev->width / pdf_dev->HWResolution[0]) * 72, ((double)pdf_dev->height / pdf_dev->HWResolution[1]) * 72);
+ gs_sprintf(Buffer, "/MediaBox [0 0 %.3f %.3f]\n", ((double)pdf_dev->width / pdf_dev->HWResolution[0]) * 72, ((double)pdf_dev->height / pdf_dev->HWResolution[1]) * 72);
stream_puts(pdf_dev->strm, Buffer);
stream_puts(pdf_dev->strm, "/Resources <<\n/XObject <<\n");
@@ -1405,9 +1418,9 @@ PCLm_downscale_and_print_page(gx_device_printer *dev, int factor,
double adjusted;
adjusted = height - (row * pdf_dev->StripHeight);
adjusted = adjusted / (pdf_dev->HWResolution[1] / (factor * 72));
- gs_sprintf(Buffer, "%f 0 0 %f 0 0 cm\n/Im%d Do Q\n", (width / (pdf_dev->HWResolution[0] / 72)) * factor, adjusted, row);
+ gs_sprintf(Buffer, "%.3f 0 0 %.3f 0 0 cm\n/Im%d Do Q\n", (width / (pdf_dev->HWResolution[0] / 72)) * factor, adjusted, row);
} else
- gs_sprintf(Buffer, "%f 0 0 %f 0 %f cm\n/Im%d Do Q\n", (width / (pdf_dev->HWResolution[0] / 72)) * factor, StripDecrement, ((height / (pdf_dev->HWResolution[1] / 72)) * factor) - (StripDecrement * (row + 1)), row);
+ gs_sprintf(Buffer, "%.3f 0 0 %.3f 0 %f cm\n/Im%d Do Q\n", (width / (pdf_dev->HWResolution[0] / 72)) * factor, StripDecrement, ((height / (pdf_dev->HWResolution[1] / 72)) * factor) - (StripDecrement * (row + 1)), row);
stream_puts(pdf_dev->temp_stream.strm, Buffer);
pprintd2(pdf_dev->strm, "/Im%d %d 0 R\n", row, page->ImageObjectNumber + (row * 2));
}
@@ -1660,11 +1673,7 @@ PCLm_print_page(gx_device_printer * pdev, gp_file * file)
return code;
code = PCLm_downscale_and_print_page(pdev,
- pdf_dev->downscale.downscale_factor,
- pdf_dev->downscale.min_feature_size,
- 8, pdf_dev->color_info.num_components,
- 0, 0, NULL,
- pdf_dev->downscale.ets);
+ 8, pdf_dev->color_info.num_components);
if (code < 0)
return code;
diff --git a/devices/gdevpdfimg.h b/devices/gdevpdfimg.h
new file mode 100644
index 00000000..baf8175e
--- /dev/null
+++ b/devices/gdevpdfimg.h
@@ -0,0 +1,105 @@
+/* Copyright (C) 2001-2020 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 the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+#ifndef gdevpdfimg_h_INCLUDED
+#define gdevpdfimg_h_INCLUDED
+
+#include "gdevprn.h"
+#include "gxdownscale.h"
+
+typedef struct pdfimage_page_s {
+ int ImageObjectNumber;
+ gs_offset_t ImageOffset;
+ int LengthObjectNumber;
+ gs_offset_t LengthOffset;
+ int PageStreamObjectNumber;
+ gs_offset_t PageStreamOffset;
+ int PageDictObjectNumber;
+ gs_offset_t PageDictOffset;
+ void *next;
+} pdfimage_page;
+
+typedef struct PCLm_temp_file_s {
+ char file_name[gp_file_name_sizeof];
+ gp_file *file;
+ stream *strm;
+ stream *save;
+ byte *strm_buf;
+} PCLm_temp_file_t;
+
+#define OCR_MAX_FILE_OBJECTS 8
+
+typedef struct gx_device_pdf_image_s {
+ gx_device_common;
+ gx_prn_device_common;
+ unsigned char Compression;
+ gx_downscaler_params downscale;
+ int StripHeight;
+ float QFactor;
+ int JPEGQ;
+ gsicc_link_t *icclink;
+ stream *strm;
+ byte *strm_buf;
+ int NumPages;
+ gs_offset_t RootOffset;
+ gs_offset_t PagesOffset;
+ gs_offset_t xrefOffset;
+ pdfimage_page *Pages;
+ PCLm_temp_file_t xref_stream;
+ PCLm_temp_file_t temp_stream;
+ int NextObject;
+
+ /* OCR data */
+ struct {
+ char language[1024];
+ void *state;
+
+ /* Number of "file level" objects - i.e. the number of objects
+ * required to define the font. */
+ int file_objects;
+ gs_offset_t file_object_offset[OCR_MAX_FILE_OBJECTS];
+ int w;
+ int h;
+ int y;
+ int xres;
+ int yres;
+ float cur_x;
+ float cur_y;
+ float cur_size;
+ float cur_scale;
+ float wordbox[4];
+ int *word_chars;
+ int word_len;
+ int word_max;
+ void *data;
+ /* Write the font definition. */
+ int (*file_init)(struct gx_device_pdf_image_s *dev);
+ int (*begin_page)(struct gx_device_pdf_image_s *dev, int w, int h, int bpp);
+ void (*line)(struct gx_device_pdf_image_s *dev, void *row);
+ int (*end_page)(struct gx_device_pdf_image_s *dev);
+ } ocr;
+} gx_device_pdf_image;
+
+int pdf_image_open(gx_device *pdev);
+int pdf_image_close(gx_device * pdev);
+int pdf_image_put_params_downscale(gx_device * dev, gs_param_list * plist);
+int pdf_image_put_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
+int pdf_image_put_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale_cmyk(gx_device * dev, gs_param_list * plist);
+int pdf_image_get_params_downscale_cmyk_ets(gx_device * dev, gs_param_list * plist);
+dev_proc_print_page(pdf_image_print_page);
+
+#endif
diff --git a/devices/gdevpdfocr.c b/devices/gdevpdfocr.c
new file mode 100644
index 00000000..95d358b1
--- /dev/null
+++ b/devices/gdevpdfocr.c
@@ -0,0 +1,727 @@
+/* Copyright (C) 2001-2020 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 the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+#include "stdint_.h"
+#include "gdevprn.h"
+#include "gxdownscale.h"
+#include "gdevkrnlsclass.h" /* 'standard' built in subclasses, currently First/Last Page and obejct filter */
+#include "stream.h"
+#include "spprint.h"
+#include "time_.h"
+#include "smd5.h"
+#include "sstring.h"
+#include "strimpl.h"
+#include "slzwx.h"
+#include "szlibx.h"
+#include "sdct.h"
+#include "srlx.h"
+#include "gsicc_cache.h"
+#include "sjpeg.h"
+
+#include "gdevpdfimg.h"
+
+#define COMPRESSION_NONE 1 /* dump mode */
+#define COMPRESSION_LZW 2 /* Lempel-Ziv & Welch */
+#define COMPRESSION_FLATE 3
+#define COMPRESSION_JPEG 4
+#define COMPRESSION_RLE 5
+
+static struct compression_string {
+ unsigned char id;
+ const char *str;
+} compression_strings [] = {
+ { COMPRESSION_NONE, "None" },
+ { COMPRESSION_LZW, "LZW" }, /* Not supported in PCLm */
+ { COMPRESSION_FLATE, "Flate" },
+ { COMPRESSION_JPEG, "JPEG" },
+ { COMPRESSION_RLE, "RLE" },
+ { 0, NULL }
+};
+
+int pdf_ocr_open(gx_device *pdev);
+int pdf_ocr_close(gx_device *pdev);
+
+
+static int
+pdfocr_put_some_params(gx_device * dev, gs_param_list * plist)
+{
+ gx_device_pdf_image *const pdf_dev = (gx_device_pdf_image *)dev;
+ int ecode = 0;
+ int code;
+ gs_param_string langstr;
+ const char *param_name;
+ size_t len;
+
+ switch (code = param_read_string(plist, (param_name = "OCRLanguage"), &langstr)) {
+ case 0:
+ len = langstr.size;
+ if (len >= sizeof(pdf_dev->ocr.language))
+ len = sizeof(pdf_dev->ocr.language)-1;
+ memcpy(pdf_dev->ocr.language, langstr.data, len);
+ pdf_dev->ocr.language[len] = 0;
+ break;
+ case 1:
+ break;
+ default:
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ return code;
+}
+
+static int
+pdfocr_put_params_downscale_cmyk(gx_device * dev, gs_param_list * plist)
+{
+ int code = pdfocr_put_some_params(dev, plist);
+ if (code < 0)
+ return code;
+ return pdf_image_put_params_downscale_cmyk(dev, plist);
+}
+
+static int
+pdfocr_put_params_downscale(gx_device * dev, gs_param_list * plist)
+{
+ int code = pdfocr_put_some_params(dev, plist);
+ if (code < 0)
+ return code;
+ return pdf_image_put_params_downscale(dev, plist);
+}
+
+static int
+pdfocr_get_some_params(gx_device * dev, gs_param_list * plist)
+{
+ gx_device_pdf_image *const pdf_dev = (gx_device_pdf_image *)dev;
+ int code = 0;
+ int ecode = 0;
+ gs_param_string langstr;
+
+ if (pdf_dev->ocr.language[0]) {
+ langstr.data = (const byte *)pdf_dev->ocr.language;
+ langstr.size = strlen(pdf_dev->ocr.language);
+ langstr.persistent = false;
+ } else {
+ langstr.data = (const byte *)"eng";
+ langstr.size = 3;
+ langstr.persistent = false;
+ }
+ if ((code = param_write_string(plist, "OCRLanguage", &langstr)) < 0)
+ ecode = code;
+
+ return ecode;
+}
+
+static int
+pdfocr_get_params_downscale_cmyk(gx_device * dev, gs_param_list * plist)
+{
+ int code = pdfocr_get_some_params(dev, plist);
+ if (code < 0)
+ return code;
+
+ return pdf_image_get_params_downscale_cmyk(dev, plist);
+}
+
+static int
+pdfocr_get_params_downscale(gx_device * dev, gs_param_list * plist)
+{
+ int code = pdfocr_get_some_params(dev, plist);
+ if (code < 0)
+ return code;
+
+ return pdf_image_get_params_downscale(dev, plist);
+}
+
+/* ------ The pdfocr8 device ------ */
+
+static const gx_device_procs pdfocr8_procs =
+prn_color_params_procs(pdf_ocr_open,
+ gdev_prn_output_page_seekable,
+ pdf_ocr_close,
+ gx_default_gray_map_rgb_color,
+ gx_default_gray_map_color_rgb,
+ pdfocr_get_params_downscale,
+ pdfocr_put_params_downscale);
+
+const gx_device_pdf_image gs_pdfocr8_device = {
+ prn_device_body(gx_device_pdf_image,
+ pdfocr8_procs,
+ "pdfocr8",
+ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ 600, 600, /* 600 dpi by default */
+ 0, 0, 0, 0, /* Margins */
+ 1, /* num components */
+ 8, /* bits per sample */
+ 255, 0, 256, 0,
+ pdf_image_print_page),
+ 3,
+ GX_DOWNSCALER_PARAMS_DEFAULTS,
+ 0, /* StripHeight */
+ 0.0, /* QFactor */
+ 0 /* JPEGQ */
+};
+
+/* ------ The pdfocr24 device ------ */
+
+static const gx_device_procs pdfocr24_procs =
+prn_color_params_procs(pdf_ocr_open,
+ gdev_prn_output_page_seekable,
+ pdf_ocr_close,
+ gx_default_rgb_map_rgb_color,
+ gx_default_rgb_map_color_rgb,
+ pdfocr_get_params_downscale,
+ pdfocr_put_params_downscale);
+
+const gx_device_pdf_image gs_pdfocr24_device = {
+ prn_device_body(gx_device_pdf_image,
+ pdfocr24_procs,
+ "pdfocr24",
+ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ 600, 600, /* 600 dpi by default */
+ 0, 0, 0, 0, /* Margins */
+ 3, /* num components */
+ 24, /* bits per sample */
+ 255, 255, 256, 256,
+ pdf_image_print_page),
+ 3,
+ GX_DOWNSCALER_PARAMS_DEFAULTS,
+ 0, /* StripHeight */
+ 0.0, /* QFactor */
+ 0 /* JPEGQ */
+};
+
+/* ------ The pdfocr32 device ------ */
+
+static const gx_device_procs pdfocr32_procs = {
+ pdf_ocr_open, NULL, NULL, gdev_prn_output_page_seekable, pdf_ocr_close,
+ NULL, cmyk_8bit_map_color_cmyk, NULL, NULL, NULL, NULL, NULL, NULL,
+ pdfocr_get_params_downscale_cmyk, pdfocr_put_params_downscale_cmyk,
+ cmyk_8bit_map_cmyk_color, NULL, NULL, NULL, gx_page_device_get_page_device
+};
+
+const gx_device_pdf_image gs_pdfocr32_device = {
+ prn_device_body(gx_device_pdf_image,
+ pdfocr32_procs,
+ "pdfocr32",
+ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
+ 600, 600, /* 600 dpi by default */
+ 0, 0, 0, 0, /* Margins */
+ 4, /* num components */
+ 32, /* bits per sample */
+ 255, 255, 256, 256,
+ pdf_image_print_page),
+ 3,
+ GX_DOWNSCALER_PARAMS_DEFAULTS,
+ 0, /* StripHeight */
+ 0.0, /* QFactor */
+ 0 /* JPEGQ */
+};
+
+/* Funky font */
+static const char funky_font[] =
+"3 0 obj\n<</BaseFont/GlyphLessFont/DescendantFonts[4 0 R]"
+"/Encoding/Identity-H/Subtype/Type0/ToUnicode 6 0 R/Type /Font"
+">>\nendobj\n";
+
+static const char funky_font2[] =
+"4 0 obj\n<</BaseFont/GlyphLessFont"
+"/CIDToGIDMap 5 0 R\n/CIDSystemInfo<<\n"
+"/Ordering (Identity)/Registry (Adobe)/Supplement 0>>"
+"/FontDescriptor 7 0 R/Subtype /CIDFontType2/Type/Font"
+"/DW 500>>\nendobj\n";
+
+static const char funky_font3[] =
+"5 0 obj\n<</Length 210/Filter/FlateDecode"
+">>stream\n";
+
+static const char funky_font3a[] = {
+0x78, 0x9c, 0xec, 0xc2, 0x01, 0x09, 0x00, 0x00,
+0x00, 0x02, 0xa0, 0xfa, 0x7f, 0xba, 0x21, 0x89,
+0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x7b, 0x03, 0x00, 0x00, 0xff, 0xff, 0xec,
+0xc2, 0x01, 0x0d, 0x00, 0x00, 0x00, 0xc2, 0x20,
+0xdf, 0xbf, 0xb4, 0x45, 0x18, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00,
+0x00, 0xff, 0xff, 0xec, 0xc2, 0x01, 0x0d, 0x00,
+0x00, 0x00, 0xc2, 0x20, 0xdf, 0xbf, 0xb4, 0x45,
+0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xeb, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed,
+0xc2, 0x01, 0x0d, 0x00, 0x00, 0x00, 0xc2, 0x20,
+0xdf, 0xbf, 0xb4, 0x45, 0x18, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x00, 0xff,
+0x00, 0x10
+};
+
+static const char funky_font3b[] =
+"endstream\nendobj\n";
+
+static const char funky_font4[] =
+"6 0 obj\n<</Length 353>>\nstream\n"
+"/CIDInit /ProcSet findresource begin\n"
+"12 dict begin\n"
+"begincmap\n"
+"/CIDSystemInfo\n"
+"<<\n"
+" /Registry (Adobe)\n"
+" /Ordering (UCS)\n"
+" /Supplement 0\n"
+">> def\n"
+"/CMapName /Adobe-Identify-UCS def\n"
+"/CMapType 2 def\n"
+"1 begincodespacerange\n"
+"<0000> <FFFF>\n"
+"endcodespacerange\n"
+"1 beginbfrange\n"
+"<0000> <FFFF> <0000>\n"
+"endbfrange\n"
+"endcmap\n"
+"CMapName currentdict /CMap defineresource pop\n"
+"end\n"
+"end\n"
+"endstream\n"
+"endobj\n";
+
+static const char funky_font5[] =
+"7 0 obj\n"
+"<</Ascent 1000/CapHeight 1000/Descent -1/Flags 5"
+"/FontBBox[0 0 500 1000]/FontFile2 8 0 R/FontName/GlyphLessFont"
+"/ItalicAngle 0/StemV 80/Type/FontDescriptor>>\nendobj\n";
+
+static const char funky_font6[] =
+"8 0 obj\n<</Length 572/Length1 572>>\nstream\n";
+
+static const char funky_font6a[] =
+{
+0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80,
+0x00, 0x03, 0x00, 0x20, 0x4f, 0x53, 0x2f, 0x32,
+0x56, 0xde, 0xc8, 0x94, 0x00, 0x00, 0x01, 0x28,
+0x00, 0x00, 0x00, 0x60, 0x63, 0x6d, 0x61, 0x70,
+0x00, 0x0a, 0x00, 0x34, 0x00, 0x00, 0x01, 0x90,
+0x00, 0x00, 0x00, 0x1e, 0x67, 0x6c, 0x79, 0x66,
+0x15, 0x22, 0x41, 0x24, 0x00, 0x00, 0x01, 0xb8,
+0x00, 0x00, 0x00, 0x18, 0x68, 0x65, 0x61, 0x64,
+0x0b, 0x78, 0xf1, 0x65, 0x00, 0x00, 0x00, 0xac,
+0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61,
+0x0c, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0xe4,
+0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78,
+0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88,
+0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, 0x61,
+0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0,
+0x00, 0x00, 0x00, 0x06, 0x6d, 0x61, 0x78, 0x70,
+0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x01, 0x08,
+0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65,
+0xf2, 0xeb, 0x16, 0xda, 0x00, 0x00, 0x01, 0xd0,
+0x00, 0x00, 0x00, 0x4b, 0x70, 0x6f, 0x73, 0x74,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x1c,
+0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00,
+0x00, 0x01, 0x00, 0x00, 0xb0, 0x94, 0x71, 0x10,
+0x5f, 0x0f, 0x3c, 0xf5, 0x04, 0x07, 0x08, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xcf, 0x9a, 0xfc, 0x6e,
+0x00, 0x00, 0x00, 0x00, 0xd4, 0xc3, 0xa7, 0xf2,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00,
+0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+0x08, 0x00, 0xff, 0xff, 0x00, 0x00, 0x04, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04,
+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x03, 0x00, 0x00, 0x01, 0x90, 0x00, 0x05,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x47, 0x4f, 0x4f, 0x47, 0x00, 0x40,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x14, 0x00, 0x06, 0x00, 0x0a,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x31, 0x21,
+0x11, 0x21, 0x04, 0x00, 0xfc, 0x00, 0x08, 0x00,
+0x00, 0x00, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00,
+0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x05, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x03,
+0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x16,
+0x00, 0x00, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72,
+0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e,
+0x00, 0x20, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x30,
+0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20,
+0x31, 0x2e, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00
+};
+
+static const char funky_font6b[] =
+"endstream\nendobj\n";
+
+static int
+ocr_file_init(gx_device_pdf_image *dev)
+{
+ const char *language = dev->ocr.language;
+ if (language == NULL || language[0] == 0)
+ language = "eng";
+
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font, sizeof(funky_font)-1);
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font2, sizeof(funky_font2)-1);
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font3, sizeof(funky_font3)-1);
+ stream_write(dev->strm, funky_font3a, sizeof(funky_font3a));
+ stream_write(dev->strm, funky_font3b, sizeof(funky_font3b)-1);
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font4, sizeof(funky_font4)-1);
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font5, sizeof(funky_font5)-1);
+ dev->ocr.file_object_offset[dev->ocr.file_objects++] = stell(dev->strm);
+ stream_write(dev->strm, funky_font6, sizeof(funky_font6)-1);
+ stream_write(dev->strm, funky_font6a, sizeof(funky_font6a));
+ stream_write(dev->strm, funky_font6b, sizeof(funky_font6b)-1);
+
+ return ocr_init_api(dev->memory, language, &dev->ocr.state);
+}
+
+static void
+ocr_line8(gx_device_pdf_image *dev, void *row)
+{
+ int w = dev->ocr.w;
+ int raster = (w+3)&~3;
+ char *in = (char *)row;
+ char *out = ((char *)dev->ocr.data) + raster * dev->ocr.y++;
+ int i;
+
+#if ARCH_IS_BIG_ENDIAN
+ memcpy(out, in, dev->ocr.w);
+#else
+ for (i = 0; i < w; i++)
+ out[i^3] = in[i];
+#endif
+}
+
+static void
+ocr_line24(gx_device_pdf_image *dev, void *row)
+{
+ int w = dev->ocr.w;
+ int raster = (w+3)&~3;
+ char *in = (char *)row;
+ char *out = ((char *)dev->ocr.data) + raster * dev->ocr.y++;
+ int i;
+
+#if ARCH_IS_BIG_ENDIAN
+ for (i = 0; i < w; i++) {
+ int v = *in++;
+ v += 2* *in++;
+ v += *in++;
+ out[i] = v>>2;
+ }
+#else
+ for (i = 0; i < w; i++) {
+ int v = *in++;
+ v += 2* *in++;
+ v += *in++;
+ out[i^3] = v>>2;
+ }
+#endif
+}
+
+static void
+ocr_line32(gx_device_pdf_image *dev, void *row)
+{
+ int w = dev->ocr.w;
+ int raster = (w+3)&~3;
+ char *in = (char *)row;
+ char *out = ((char *)dev->ocr.data) + raster * dev->ocr.y++;
+ int i;
+
+#if ARCH_IS_BIG_ENDIAN
+ for (i = 0; i < w; i++) {
+ int v = 255 - *in++;
+ v -= *in++;
+ v -= *in++;
+ v -= *in++;
+ if (v < 0) v = 0;
+ out[i] = v;
+ }
+#else
+ for (i = 0; i < w; i++) {
+ int v = 255 - *in++;
+ v -= *in++;
+ v -= *in++;
+ v -= *in++;
+ if (v < 0) v = 0;
+ out[i^3] = v;
+ }
+#endif
+}
+
+static int
+ocr_begin_page(gx_device_pdf_image *dev, int w, int h, int bpp)
+{
+ int raster = (w+3)&~3;
+
+ dev->ocr.data = gs_alloc_bytes(dev->memory, raster * h, "ocr_begin_page");
+ if (dev->ocr.data == NULL)
+ return_error(gs_error_VMerror);
+ dev->ocr.w = w;
+ dev->ocr.h = h;
+ dev->ocr.y = 0;
+
+ if (bpp == 32)
+ dev->ocr.line = ocr_line32;
+ else if (bpp == 24)
+ dev->ocr.line = ocr_line24;
+ else
+ dev->ocr.line = ocr_line8;
+
+ return 0;
+}
+
+static void
+flush_word(gx_device_pdf_image *dev)
+{
+ char buffer[1024];
+ float size, scale;
+ float *bbox = dev->ocr.wordbox;
+ int i, len;
+
+ len = dev->ocr.word_len;
+ if (len == 0)
+ return;
+
+ size = bbox[3]-bbox[1];
+ if (dev->ocr.cur_size != size) {
+ gs_sprintf(buffer, "/Ft0 %.3f Tf", size);
+ stream_puts(dev->strm, buffer);
+ dev->ocr.cur_size = size;
+ }
+ scale = (bbox[2]-bbox[0]) / size / len * 200;
+ if (dev->ocr.cur_scale != scale) {
+ gs_sprintf(buffer, " %.3f Tz", scale);
+ stream_puts(dev->strm, buffer);
+ dev->ocr.cur_scale = scale;
+ }
+ gs_sprintf(buffer, " 1 0 0 1 %.3f %.3f Tm[<", bbox[0], bbox[1]);
+ stream_puts(dev->strm, buffer);
+ for (i = 0; i < len; i++) {
+ gs_sprintf(buffer, "%04x", dev->ocr.word_chars[i]);
+ stream_puts(dev->strm, buffer);
+ }
+ stream_puts(dev->strm, ">]TJ\n");
+
+ dev->ocr.word_len = 0;
+}
+
+static int
+ocr_callback(void *arg, const char *rune_,
+ const int *line_bbox, const int *word_bbox,
+ const int *char_bbox, int pointsize)
+{
+ gx_device_pdf_image *ppdev = (gx_device_pdf_image *)arg;
+ int unicode;
+ const unsigned char *rune = (const unsigned char *)rune_;
+ float bbox[4];
+ int factor = ppdev->downscale.downscale_factor;
+ float scale = 72000000.0f / gx_downscaler_scale(1000000, factor);
+
+ if (rune[0] >= 0xF8)
+ return 0; /* Illegal */
+ if (rune[0] < 0x80)
+ unicode = rune[0];
+ else {
+ unicode = rune[1] & 0x7f;
+ if (rune[0] < 0xd0)
+ unicode |= ((rune[0] & 0x1f) << 6);
+ else {
+ unicode = (unicode<<6) | (rune[2] & 0x7f);
+ if (rune[0] < 0xf0)
+ unicode |= ((rune[0] & 0x0f) << 12);
+ else
+ unicode |= ((rune[0] & 0x07) << 18) | (unicode<<6) | (rune[3] & 0x7f);
+ }
+ }
+
+#if 0
+ // First attempt; match char bboxes exactly. This is bad, as the
+ // bboxes given back from tesseract are 'untrustworthy' to say the
+ // least (they overlap one another in strange ways). Trying to
+ // match those causes the font height to change repeatedly, and
+ // gives output that's hard to identify words in.
+ bbox[0] = char_bbox[0] * 72.0 / ppdev->ocr.xres;
+ bbox[1] = (ppdev->ocr.h-1 - char_bbox[3]) * 72.0 / ppdev->ocr.yres;
+ bbox[2] = char_bbox[2] * 72.0 / ppdev->ocr.xres;
+ bbox[3] = (ppdev->ocr.h-1 - char_bbox[1]) * 72.0 / ppdev->ocr.yres;
+
+ size = bbox[3]-bbox[1];
+ if (ppdev->ocr.cur_size != size) {
+ gs_sprintf(buffer, "/Ft0 %f Tf ", size);
+ stream_puts(ppdev->strm, buffer);
+ ppdev->ocr.cur_size = size;
+ }
+ scale = (bbox[2]-bbox[0]) / size * 200;
+ if (ppdev->ocr.cur_scale != scale) {
+ gs_sprintf(buffer, " %f Tz ", scale);
+ stream_puts(ppdev->strm, buffer);
+ ppdev->ocr.cur_scale = scale;
+ }
+ gs_sprintf(buffer, "1 0 0 1 %f %f Tm ", bbox[0], bbox[1]);
+ stream_puts(ppdev->strm, buffer);
+ gs_sprintf(buffer, "<%04x>Tj\n", unicode);
+ stream_puts(ppdev->strm, buffer);
+#else
+ bbox[0] = word_bbox[0] * scale / ppdev->ocr.xres;
+ bbox[1] = (ppdev->ocr.h-1 - line_bbox[3]) * scale / ppdev->ocr.yres;
+ bbox[2] = word_bbox[2] * scale / ppdev->ocr.xres;
+ bbox[3] = (ppdev->ocr.h-1 - line_bbox[1]) * scale / ppdev->ocr.yres;
+
+ /* If the word bbox differs, flush the word. */
+ if (bbox[0] != ppdev->ocr.wordbox[0] ||
+ bbox[1] != ppdev->ocr.wordbox[1] ||
+ bbox[2] != ppdev->ocr.wordbox[2] ||
+ bbox[3] != ppdev->ocr.wordbox[3]) {
+ flush_word(ppdev);
+ ppdev->ocr.wordbox[0] = bbox[0];
+ ppdev->ocr.wordbox[1] = bbox[1];
+ ppdev->ocr.wordbox[2] = bbox[2];
+ ppdev->ocr.wordbox[3] = bbox[3];
+ }
+
+ /* Add the char to the current word. */
+ if (ppdev->ocr.word_len == ppdev->ocr.word_max) {
+ int *newblock;
+ int newmax = ppdev->ocr.word_max * 2;
+ if (newmax == 0)
+ newmax = 16;
+ newblock = (int *)gs_alloc_bytes(ppdev->memory, sizeof(int)*newmax,
+ "ocr_callback(word)");
+ if (newblock == NULL)
+ return_error(gs_error_VMerror);
+ if (ppdev->ocr.word_len > 0)
+ memcpy(newblock, ppdev->ocr.word_chars,
+ sizeof(int) * ppdev->ocr.word_len);
+ gs_free_object(ppdev->memory, ppdev->ocr.word_chars,
+ "ocr_callback(word)");
+ ppdev->ocr.word_chars = newblock;
+ ppdev->ocr.word_max = newmax;
+ }
+ ppdev->ocr.word_chars[ppdev->ocr.word_len++] = unicode;
+#endif
+
+ return 0;
+}
+
+static int
+ocr_end_page(gx_device_pdf_image *dev)
+{
+ stream_puts(dev->strm, "\nBT 3 Tr\n");
+ dev->ocr.cur_x = 0;
+ dev->ocr.cur_y = 0;
+ dev->ocr.cur_size = -1;
+ dev->ocr.cur_scale = 0;
+ dev->ocr.wordbox[0] = 0;
+ dev->ocr.wordbox[1] = 0;
+ dev->ocr.wordbox[2] = -1;
+ dev->ocr.wordbox[3] = -1;
+ dev->ocr.word_len = 0;
+ dev->ocr.word_max = 0;
+ dev->ocr.word_chars = NULL;
+ ocr_recognise(dev->ocr.state,
+ dev->ocr.w,
+ dev->ocr.h,
+ dev->ocr.data,
+ dev->ocr.xres,
+ dev->ocr.yres,
+ ocr_callback,
+ dev);
+ if (dev->ocr.word_len)
+ flush_word(dev);
+ stream_puts(dev->strm, "\nET");
+
+ gs_free_object(dev->memory, dev->ocr.word_chars,
+ "ocr_callback(word)");
+ gs_free_object(dev->memory, dev->ocr.data, "ocr_end_page");
+ dev->ocr.data = NULL;
+
+ return 0;
+}
+
+int
+pdf_ocr_open(gx_device *pdev)
+{
+ gx_device_pdf_image *ppdev;
+ int code = pdf_image_open(pdev);
+
+ if (code < 0)
+ return code;
+
+ /* If we've been subclassed, find the terminal device */
+ while(pdev->child)
+ pdev = pdev->child;
+ ppdev = (gx_device_pdf_image *)pdev;
+
+ ppdev->ocr.file_init = ocr_file_init;
+ ppdev->ocr.begin_page = ocr_begin_page;
+ ppdev->ocr.end_page = ocr_end_page;
+ ppdev->ocr.xres = (int)pdev->HWResolution[0];
+ ppdev->ocr.yres = (int)pdev->HWResolution[1];
+
+ return 0;
+}
+
+int
+pdf_ocr_close(gx_device *pdev)
+{
+ gx_device_pdf_image *pdf_dev;
+ int code;
+
+ code = pdf_image_close(pdev);
+ if (code < 0)
+ return code;
+
+ /* If we've been subclassed, find the terminal device */
+ while(pdev->child)
+ pdev = pdev->child;
+ pdf_dev = (gx_device_pdf_image *)pdev;
+
+ ocr_fin_api(pdf_dev->memory, pdf_dev->ocr.state);
+ pdf_dev->ocr.state = NULL;
+
+ return code;
+}
diff --git a/devices/gdevpe.c b/devices/gdevpe.c
index 270084d6..d2590b92 100644
--- a/devices/gdevpe.c
+++ b/devices/gdevpe.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevperm.c b/devices/gdevperm.c
index f2a5e38c..e03c8cae 100644
--- a/devices/gdevperm.c
+++ b/devices/gdevperm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevphex.c b/devices/gdevphex.c
index f3ca5048..3eccb787 100644
--- a/devices/gdevphex.c
+++ b/devices/gdevphex.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpjet.c b/devices/gdevpjet.c
index d9fc76ff..bd428295 100644
--- a/devices/gdevpjet.c
+++ b/devices/gdevpjet.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevplan.c b/devices/gdevplan.c
index 313d08f8..7e5e5f0a 100644
--- a/devices/gdevplan.c
+++ b/devices/gdevplan.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevplib.c b/devices/gdevplib.c
index 67c25e78..026b4f8f 100644
--- a/devices/gdevplib.c
+++ b/devices/gdevplib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevplib.h b/devices/gdevplib.h
index 2f7290a2..e4c87345 100644
--- a/devices/gdevplib.h
+++ b/devices/gdevplib.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpm.h b/devices/gdevpm.h
index 29d9f4f2..d79b0f37 100644
--- a/devices/gdevpm.h
+++ b/devices/gdevpm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpng.c b/devices/gdevpng.c
index 73bc5bf3..a564e6c3 100644
--- a/devices/gdevpng.c
+++ b/devices/gdevpng.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -55,6 +55,7 @@
#include "gdevpccm.h"
#include "gscdefs.h"
#include "gxdownscale.h"
+#include "gxdevsop.h"
/* ------ The device descriptors ------ */
@@ -79,6 +80,7 @@ static dev_proc_get_params(png_get_params_downscale);
static dev_proc_put_params(png_put_params_downscale);
static dev_proc_get_params(png_get_params_downscale_mfs);
static dev_proc_put_params(png_put_params_downscale_mfs);
+static dev_proc_dev_spec_op(pngalpha_spec_op);
typedef struct gx_device_png_s gx_device_png;
struct gx_device_png_s {
@@ -280,7 +282,8 @@ static const gx_device_procs pngalpha_procs =
pngalpha_fillpage,
NULL, /* push_transparency_state */
NULL, /* pop_transparency_state */
- pngalpha_put_image
+ pngalpha_put_image,
+ pngalpha_spec_op /* dev_spec_op */\
};
const gx_device_pngalpha gs_pngalpha_device = {
@@ -451,8 +454,6 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
png_text text_png;
int dst_bpc, src_bpc;
bool errdiff = 0;
- int factor = pdev->downscale.downscale_factor;
- int mfs = pdev->downscale.min_feature_size;
bool invert = false, endian_swap = false, bg_needed = false;
png_byte bit_depth = 0;
@@ -468,14 +469,15 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
png_color *palettep;
png_uint_16 num_palette;
png_uint_32 valid = 0;
+ int upfactor, downfactor;
/* Sanity check params */
- if (factor < 1)
- factor = 1;
- if (mfs < 1)
- mfs = 1;
- else if (mfs > 2)
- mfs = 2;
+ if (pdev->downscale.downscale_factor < 1)
+ pdev->downscale.downscale_factor = 1;
+ if (pdev->downscale.min_feature_size < 1)
+ pdev->downscale.min_feature_size = 1;
+ else if (pdev->downscale.min_feature_size > 2)
+ pdev->downscale.min_feature_size = 2;
/* Slightly nasty, but it saves us duplicating this entire routine. */
if (monod) {
@@ -503,11 +505,13 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
png_set_write_fn(png_ptr, file, my_png_write, my_png_flush);
/* set the file information here */
+ gx_downscaler_decode_factor(pdev->downscale.downscale_factor,
+ &upfactor, &downfactor);
/* resolution is in pixels per meter vs. dpi */
x_pixels_per_unit =
- (png_uint_32) (pdev->HWResolution[0] * (100.0 / 2.54) / factor + 0.5);
+ (png_uint_32) (pdev->HWResolution[0] * upfactor * (100.0 / 2.54) / downfactor + 0.5);
y_pixels_per_unit =
- (png_uint_32) (pdev->HWResolution[1] * (100.0 / 2.54) / factor + 0.5);
+ (png_uint_32) (pdev->HWResolution[1] * upfactor * (100.0 / 2.54) / downfactor + 0.5);
phys_unit_type = PNG_RESOLUTION_METER;
valid |= PNG_INFO_pHYs;
@@ -597,8 +601,13 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
}
/* add comment */
strncpy(software_key, "Software", sizeof(software_key));
- gs_sprintf(software_text, "%s %d.%02d", gs_product,
- (int)(gs_revision / 100), (int)(gs_revision % 100));
+ {
+ int major = (int)(gs_revision / 1000);
+ int minor = (int)(gs_revision - (major * 1000)) / 10;
+ int patch = gs_revision % 10;
+
+ gs_sprintf(software_text, "%s %d.%02d.%d", gs_product, major, minor, patch);
+ }
text_png.compression = -1; /* uncompressed */
text_png.key = software_key;
text_png.text = software_text;
@@ -609,9 +618,9 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
if (errdiff)
src_bpc = 8;
else
- factor = 1;
- width = pdev->width/factor;
- height = pdev->height/factor;
+ pdev->downscale.downscale_factor = upfactor = downfactor = 1;
+ width = pdev->width * upfactor / downfactor;
+ height = pdev->height * upfactor / downfactor;
#if PNG_LIBPNG_VER_MINOR >= 5
png_set_pHYs(png_ptr, info_ptr,
@@ -627,8 +636,8 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
png_set_text(png_ptr, info_ptr, &text_png, 1);
- if (pdev->icc_struct != NULL && pdev->icc_struct->device_profile[0] != NULL) {
- cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[0];
+ if (pdev->icc_struct != NULL && pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE] != NULL) {
+ cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE];
/* PNG can only be RGB or gray. No CIELAB :( */
if (icc_profile->data_cs == gsRGB || icc_profile->data_cs == gsGRAY) {
if (icc_profile->num_comps == pdev->color_info.num_components &&
@@ -653,8 +662,8 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
info_ptr->text = &text_png;
info_ptr->num_text = 1;
/* Set up the ICC information */
- if (pdev->icc_struct != NULL && pdev->icc_struct->device_profile[0] != NULL) {
- cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[0];
+ if (pdev->icc_struct != NULL && pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE] != NULL) {
+ cmm_profile_t *icc_profile = pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE];
/* PNG can only be RGB or gray. No CIELAB :( */
if (icc_profile->data_cs == gsRGB || icc_profile->data_cs == gsGRAY) {
if (icc_profile->num_comps == pdev->color_info.num_components &&
@@ -697,7 +706,7 @@ do_png_print_page(gx_device_png * pdev, gp_file * file, bool monod)
* hit. So ensure that we only trigger downscales when we need them.
*/
code = gx_downscaler_init(&ds, (gx_device *)pdev, src_bpc, dst_bpc,
- depth/dst_bpc, factor, mfs, NULL, 0);
+ depth/dst_bpc, &pdev->downscale, NULL, 0);
if (code >= 0)
{
#ifdef CLUSTER
@@ -1072,3 +1081,15 @@ pngalpha_copy_alpha(gx_device * dev, const byte * data, int data_x,
return code;
}
}
+
+static int
+pngalpha_spec_op(gx_device* pdev, int dso, void* ptr, int size)
+{
+ switch (dso)
+ {
+ case gxdso_supports_alpha:
+ return 1;
+ }
+
+ return gdev_prn_dev_spec_op(pdev, dso, ptr, size);
+}
diff --git a/devices/gdevpsd.c b/devices/gdevpsd.c
index 03292469..27a6f262 100644
--- a/devices/gdevpsd.c
+++ b/devices/gdevpsd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -129,7 +129,7 @@ RELOC_PTRS_END
static int
psd_spec_op(gx_device *dev_, int op, void *data, int datasize)
{
- if (op == gxdso_supports_devn) {
+ if (op == gxdso_supports_devn || op == gxdso_skip_icc_component_validation) {
return true;
}
return gdev_prn_dev_spec_op(dev_, op, data, datasize);
@@ -1262,11 +1262,10 @@ psd_write_image_data(psd_write_ctx *xc, gx_device_printer *pdev)
if (sep_line == NULL)
return_error(gs_error_VMerror);
- code = gx_downscaler_init_planar_trapped(&ds, (gx_device *)pdev, &params, num_comp,
- psd_dev->downscale.downscale_factor, 0, bpc, bpc,
- psd_dev->downscale.trap_w,
- psd_dev->downscale.trap_h,
- psd_dev->downscale.trap_order);
+ code = gx_downscaler_init_planar(&ds, (gx_device *)pdev,
+ bpc, bpc, num_comp,
+ &psd_dev->downscale,
+ &params);
if (code < 0)
goto cleanup;
diff --git a/devices/gdevpsd.h b/devices/gdevpsd.h
index 3639eb72..98d2e9ae 100644
--- a/devices/gdevpsd.h
+++ b/devices/gdevpsd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpsim.c b/devices/gdevpsim.c
index 7a194c64..4e4080fe 100644
--- a/devices/gdevpsim.c
+++ b/devices/gdevpsim.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpxut.c b/devices/gdevpxut.c
index 297f6f90..08d7741a 100644
--- a/devices/gdevpxut.c
+++ b/devices/gdevpxut.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevpxut.h b/devices/gdevpxut.h
index b854264f..28f55847 100644
--- a/devices/gdevpxut.h
+++ b/devices/gdevpxut.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevrinkj.c b/devices/gdevrinkj.c
index 509edd07..d10a7a1b 100644
--- a/devices/gdevrinkj.c
+++ b/devices/gdevrinkj.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevsj48.c b/devices/gdevsj48.c
index 4ef9ece1..8b1304b9 100644
--- a/devices/gdevsj48.c
+++ b/devices/gdevsj48.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevsnfb.c b/devices/gdevsnfb.c
index fe169b07..76d5cf47 100644
--- a/devices/gdevsnfb.c
+++ b/devices/gdevsnfb.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevsppr.c b/devices/gdevsppr.c
index ee3c5813..8257aa39 100644
--- a/devices/gdevsppr.c
+++ b/devices/gdevsppr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc.c b/devices/gdevstc.c
index 951ded0e..22314777 100644
--- a/devices/gdevstc.c
+++ b/devices/gdevstc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc.h b/devices/gdevstc.h
index f2761349..7db27e9a 100644
--- a/devices/gdevstc.h
+++ b/devices/gdevstc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc1.c b/devices/gdevstc1.c
index e9650f17..dd10268c 100644
--- a/devices/gdevstc1.c
+++ b/devices/gdevstc1.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc2.c b/devices/gdevstc2.c
index ee2c6701..90dca523 100644
--- a/devices/gdevstc2.c
+++ b/devices/gdevstc2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc3.c b/devices/gdevstc3.c
index 87205663..56fea31d 100644
--- a/devices/gdevstc3.c
+++ b/devices/gdevstc3.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevstc4.c b/devices/gdevstc4.c
index 519620fd..1c7c4589 100644
--- a/devices/gdevstc4.c
+++ b/devices/gdevstc4.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevtfax.c b/devices/gdevtfax.c
index a29f06bd..b8aa7e74 100644
--- a/devices/gdevtfax.c
+++ b/devices/gdevtfax.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevtfax.h b/devices/gdevtfax.h
index 990e1f5c..deaa6516 100644
--- a/devices/gdevtfax.h
+++ b/devices/gdevtfax.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevtfnx.c b/devices/gdevtfnx.c
index d9593cd2..b3fea72e 100644
--- a/devices/gdevtfnx.c
+++ b/devices/gdevtfnx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -102,7 +102,7 @@ static void
tiff_set_rgb_fields(gx_device_tiff *tfdev)
{
/* Put in a switch statement in case we want to have others */
- switch (tfdev->icc_struct->device_profile[0]->data_cs) {
+ switch (tfdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE]->data_cs) {
case gsRGB:
TIFFSetField(tfdev->tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
break;
diff --git a/devices/gdevtifs.c b/devices/gdevtifs.c
index 2d612bac..4ecafa8b 100644
--- a/devices/gdevtifs.c
+++ b/devices/gdevtifs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -74,7 +74,7 @@ tiff_close(gx_device * pdev)
gx_device_tiff *const tfdev = (gx_device_tiff *)pdev;
if (tfdev->tif)
- TIFFCleanup(tfdev->tif);
+ TIFFClose(tfdev->tif);
if (tfdev->icclink != NULL)
{
@@ -328,8 +328,8 @@ int gdev_tiff_begin_page(gx_device_tiff *tfdev,
&rendering_params);
} else {
tfdev->icclink = gsicc_alloc_link_dev(pdev->memory,
- profile_struct->device_profile[0], profile_struct->postren_profile,
- &rendering_params);
+ profile_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE],
+ profile_struct->postren_profile, &rendering_params);
}
if (tfdev->icclink == NULL) {
return_error(gs_error_VMerror);
@@ -390,13 +390,17 @@ int tiff_set_fields_for_printer(gx_device_printer *pdev,
TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float)ypi);
{
- char revs[10];
+ char revs[32];
#define maxSoftware 40
char softwareValue[maxSoftware];
+ int revision = gs_revision_number();
+ int major = (int)(revision / 1000);
+ int minor = (int)(revision - (major * 1000)) / 10;
+ int patch = revision % 10;
strncpy(softwareValue, gs_product, maxSoftware);
softwareValue[maxSoftware - 1] = 0;
- gs_sprintf(revs, " %1.2f", gs_revision / 100.0);
+ gs_sprintf(revs, " %d.%2d.%d", major, minor, patch);
strncat(softwareValue, revs,
maxSoftware - strlen(softwareValue) - 1);
@@ -437,7 +441,7 @@ int tiff_set_fields_for_printer(gx_device_printer *pdev,
else if (pdev->icc_struct->oi_profile != NULL)
icc_profile = pdev->icc_struct->oi_profile;
else
- icc_profile = pdev->icc_struct->device_profile[0];
+ icc_profile = pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE];
if (icc_profile->num_comps == pdev->color_info.num_components &&
icc_profile->data_cs != gsCIELAB && !(pdev->icc_struct->usefastcolor)) {
@@ -536,10 +540,9 @@ static int tiff_chunky_post_cm(void *arg, byte **dst, byte **src, int w, int h,
/* Special version, called with 8 bit grey input to be downsampled to 1bpp
* output. */
int
-tiff_downscale_and_print_page(gx_device_printer *dev, TIFF *tif, int factor,
- int mfs, int aw, int bpc, int num_comps,
- int trap_w, int trap_h, const int *trap_order,
- int ets)
+tiff_downscale_and_print_page(gx_device_printer *dev, TIFF *tif,
+ gx_downscaler_params *params,
+ int aw, int bpc, int num_comps)
{
gx_device_tiff *const tfdev = (gx_device_tiff *)dev;
int code = 0;
@@ -547,6 +550,7 @@ tiff_downscale_and_print_page(gx_device_printer *dev, TIFF *tif, int factor,
int size = gdev_mem_bytes_per_scan_line((gx_device *)dev);
int max_size = max(size, TIFFScanlineSize(tif));
int row;
+ int factor = params->downscale_factor;
int height = dev->height/factor;
gx_downscaler_t ds;
@@ -554,24 +558,20 @@ tiff_downscale_and_print_page(gx_device_printer *dev, TIFF *tif, int factor,
if (code < 0)
return code;
- if (num_comps == 4) {
- if (tfdev->icclink == NULL) {
- code = gx_downscaler_init_trapped_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, &fax_adjusted_width, aw, trap_w, trap_h, trap_order, ets);
- } else {
- code = gx_downscaler_init_trapped_cm_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, &fax_adjusted_width, aw, trap_w, trap_h, trap_order,
- tiff_chunky_post_cm, tfdev->icclink, tfdev->icclink->num_output, ets);
- }
+ if (num_comps == 4)
+ params->trap_w = params->trap_h = 1;
+ if (tfdev->icclink == NULL) {
+ code = gx_downscaler_init(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ &fax_adjusted_width, aw);
} else {
- if (tfdev->icclink == NULL) {
- code = gx_downscaler_init_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, &fax_adjusted_width, aw, ets);
- } else {
- code = gx_downscaler_init_cm_ets(&ds, (gx_device *)dev, 8, bpc, num_comps,
- factor, mfs, &fax_adjusted_width, aw, tiff_chunky_post_cm, tfdev->icclink,
- tfdev->icclink->num_output, ets);
- }
+ code = gx_downscaler_init_cm(&ds, (gx_device *)dev,
+ 8, bpc, num_comps,
+ params,
+ &fax_adjusted_width, aw,
+ tiff_chunky_post_cm, tfdev->icclink,
+ tfdev->icclink->num_output);
}
if (code < 0)
return code;
diff --git a/devices/gdevtifs.h b/devices/gdevtifs.h
index cbdbb374..adc9f4ae 100644
--- a/devices/gdevtifs.h
+++ b/devices/gdevtifs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -55,10 +55,8 @@ dev_proc_put_params(tiff_put_params_downscale_cmyk_ets);
int tiff_print_page(gx_device_printer *dev, TIFF *tif, int min_feature_size);
int tiff_downscale_and_print_page(gx_device_printer *dev, TIFF *tif,
- int factor, int msf, int aw, int bpc,
- int num_comps,
- int trap_w, int trap_h, const int *trap_order,
- int ets);
+ gx_downscaler_params *params,
+ int aw, int bpc, int num_comps);
void tiff_set_handlers (void);
/*
diff --git a/devices/gdevtknk.c b/devices/gdevtknk.c
index 35d98bfe..741b5925 100644
--- a/devices/gdevtknk.c
+++ b/devices/gdevtknk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevtrac.c b/devices/gdevtrac.c
index 09116144..77b7dc93 100644
--- a/devices/gdevtrac.c
+++ b/devices/gdevtrac.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevtsep.c b/devices/gdevtsep.c
index 7fddf1c7..3dde3523 100644
--- a/devices/gdevtsep.c
+++ b/devices/gdevtsep.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -329,12 +329,9 @@ tiffscaled_print_page(gx_device_printer * pdev, gp_file * file)
return tiff_downscale_and_print_page(pdev, tfdev->tif,
- tfdev->downscale.downscale_factor,
- tfdev->downscale.min_feature_size,
+ &tfdev->downscale,
tfdev->AdjustWidth,
- 1, 1,
- 0, 0, NULL,
- tfdev->downscale.ets);
+ 1, 1);
}
static int
@@ -357,12 +354,9 @@ tiffscaled8_print_page(gx_device_printer * pdev, gp_file * file)
tfdev->MaxStripSize);
}
return tiff_downscale_and_print_page(pdev, tfdev->tif,
- tfdev->downscale.downscale_factor,
- tfdev->downscale.min_feature_size,
+ &tfdev->downscale,
tfdev->AdjustWidth,
- 8, 1,
- 0, 0, NULL,
- 0);
+ 8, 1);
}
static void
@@ -375,7 +369,7 @@ tiff_set_rgb_fields(gx_device_tiff *tfdev)
else if (tfdev->icc_struct->oi_profile != NULL)
icc_profile = tfdev->icc_struct->oi_profile;
else
- icc_profile = tfdev->icc_struct->device_profile[0];
+ icc_profile = tfdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE];
switch (icc_profile->data_cs) {
case gsRGB:
@@ -416,12 +410,9 @@ tiffscaled24_print_page(gx_device_printer * pdev, gp_file * file)
}
return tiff_downscale_and_print_page(pdev, tfdev->tif,
- tfdev->downscale.downscale_factor,
- tfdev->downscale.min_feature_size,
+ &tfdev->downscale,
tfdev->AdjustWidth,
- 8, 3,
- 0, 0, NULL,
- 0);
+ 8, 3);
}
static void
@@ -459,13 +450,9 @@ tiffscaled32_print_page(gx_device_printer * pdev, gp_file * file)
}
return tiff_downscale_and_print_page(pdev, tfdev->tif,
- tfdev->downscale.downscale_factor,
- tfdev->downscale.min_feature_size,
+ &tfdev->downscale,
tfdev->AdjustWidth,
- 8, 4,
- tfdev->downscale.trap_w, tfdev->downscale.trap_h,
- tfdev->downscale.trap_order,
- 0);
+ 8, 4);
}
static int
@@ -485,13 +472,9 @@ tiffscaled4_print_page(gx_device_printer * pdev, gp_file * file)
tfdev->MaxStripSize);
return tiff_downscale_and_print_page(pdev, tfdev->tif,
- tfdev->downscale.downscale_factor,
- tfdev->downscale.min_feature_size,
+ &tfdev->downscale,
tfdev->AdjustWidth,
- 1, 4,
- tfdev->downscale.trap_w, tfdev->downscale.trap_h,
- tfdev->downscale.trap_order,
- tfdev->downscale.ets);
+ 1, 4);
}
/* Called when the post render ICC profile is in a different color space
@@ -525,7 +508,8 @@ tiff_set_icc_color_fields(gx_device_printer *pdev)
static int
tiffsep_spec_op(gx_device *dev_, int op, void *data, int datasize)
{
- if (op == gxdso_supports_iccpostrender || op == gxdso_supports_devn) {
+ if (op == gxdso_supports_iccpostrender || op == gxdso_supports_devn
+ || op == gxdso_skip_icc_component_validation) {
return true;
}
return gdev_prn_dev_spec_op(dev_, op, data, datasize);
@@ -1791,8 +1775,8 @@ tiffsep_prn_open(gx_device * pdev)
&rendering_params);
} else {
pdev_sep->icclink = gsicc_alloc_link_dev(pdev->memory,
- profile_struct->device_profile[0], profile_struct->postren_profile,
- &rendering_params);
+ profile_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE],
+ profile_struct->postren_profile, &rendering_params);
}
if (pdev_sep->icclink == NULL) {
return_error(gs_error_VMerror);
@@ -1813,7 +1797,7 @@ tiffsep_close_sep_file(tiffsep_device *tfdev, const char *fn, int comp_num)
int code;
if (tfdev->tiff[comp_num]) {
- TIFFCleanup(tfdev->tiff[comp_num]);
+ TIFFClose(tfdev->tiff[comp_num]);
tfdev->tiff[comp_num] = NULL;
}
@@ -1832,7 +1816,7 @@ tiffsep_close_comp_file(tiffsep_device *tfdev, const char *fn)
int code;
if (tfdev->tiff_comp) {
- TIFFCleanup(tfdev->tiff_comp);
+ TIFFClose(tfdev->tiff_comp);
tfdev->tiff_comp = NULL;
}
@@ -2242,7 +2226,6 @@ tiffsep_print_page(gx_device_printer * pdev, gp_file * file)
gs_parsed_file_name_t parsed;
int plane_count = 0; /* quiet compiler */
int factor = tfdev->downscale.downscale_factor;
- int mfs = tfdev->downscale.min_feature_size;
int dst_bpc = tfdev->BitsPerComponent;
gx_downscaler_t ds;
int width = gx_downscaler_scale(tfdev->width, factor);
@@ -2481,10 +2464,10 @@ tiffsep_print_page(gx_device_printer * pdev, gp_file * file)
}
}
}
- code = gx_downscaler_init_planar_trapped(&ds, (gx_device *)pdev, &params,
- num_comp, factor, mfs, 8, dst_bpc,
- tfdev->downscale.trap_w, tfdev->downscale.trap_h,
- tfdev->downscale.trap_order);
+ code = gx_downscaler_init_planar(&ds, (gx_device *)pdev,
+ 8, dst_bpc, num_comp,
+ &tfdev->downscale,
+ &params);
if (code < 0)
goto cleanup;
byte_width = (width * dst_bpc + 7)>>3;
@@ -2577,9 +2560,7 @@ cleanup:
}
}
TIFFWriteDirectory(tfdev->tiff_comp);
- if (fmt) {
- code = tiffsep_close_comp_file(tfdev, pdev->fname);
- }
+ code = tiffsep_close_comp_file(tfdev, pdev->fname);
if (code1 < 0) {
code = code1;
}
@@ -2970,17 +2951,17 @@ tiff_open_s(gx_device *pdev)
/* Take care of any color model changes now */
if (pdev->icc_struct->postren_profile != NULL &&
- pdev->icc_struct->device_profile[0]->num_comps != pdev->color_info.num_components &&
+ pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE]->num_comps != pdev->color_info.num_components &&
pdev->color_info.depth == 8 * pdev->color_info.num_components) {
code = gx_change_color_model((gx_device*)pdev,
- pdev->icc_struct->device_profile[0]->num_comps, 8);
+ pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE]->num_comps, 8);
if (code < 0)
return code;
/* Reset the device procs */
memset(&(pdev->procs), 0, sizeof(pdev->procs));
- switch (pdev->icc_struct->device_profile[0]->num_comps) {
+ switch (pdev->icc_struct->device_profile[GS_DEFAULT_DEVICE_PROFILE]->num_comps) {
case 1:
pdev->procs = tiffscaled8_procs;
pdev->color_info.dither_colors = 0;
diff --git a/devices/gdevupd.c b/devices/gdevupd.c
index 70148905..702548d8 100644
--- a/devices/gdevupd.c
+++ b/devices/gdevupd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -1048,8 +1048,8 @@ upd_print_page(gx_device_printer *pdev, gp_file *out)
*/
if(!upd || B_OK4GO != (upd->flags & (B_OK4GO | B_ERROR))) {
#if UPD_MESSAGES & (UPD_M_ERROR | UPD_M_TOPCALLS)
- errprintf(pdev->memory, "CALL-REJECTED upd_print_page(0x%05lx,0x%05lx)\n",
- (long) udev,(long) out);
+ errprintf(pdev->memory, "CALL-REJECTED upd_print_page(" PRI_INTPTR "," PRI_INTPTR ")\n",
+ (intptr_t)udev,(intptr_t) out);
#endif
return_error(gs_error_undefined);
}
diff --git a/devices/gdevwpr2.c b/devices/gdevwpr2.c
index 29af469b..3a4b97b6 100644
--- a/devices/gdevwpr2.c
+++ b/devices/gdevwpr2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevx.c b/devices/gdevx.c
index 2539e250..cfde7543 100644
--- a/devices/gdevx.c
+++ b/devices/gdevx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -978,8 +978,8 @@ set_tile(gx_device * dev, const gx_strip_bitmap * tile)
if (gs_debug['H']) {
int i;
- dmlprintf4(xdev->memory, "[H] 0x%lx: width=%d height=%d raster=%d\n",
- (ulong) tile->data, tile->size.x, tile->size.y, tile->raster);
+ dmlprintf4(xdev->memory, "[H] "PRI_INTPTR": width=%d height=%d raster=%d\n",
+ (intptr_t)tile->data, tile->size.x, tile->size.y, tile->raster);
dmlputs(xdev->memory, "");
for (i = 0; i < tile->raster * tile->size.y; i++)
dmprintf1(xdev->memory, " %02x", tile->data[i]);
diff --git a/devices/gdevx.h b/devices/gdevx.h
index 0e97d934..4becd639 100644
--- a/devices/gdevx.h
+++ b/devices/gdevx.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxalt.c b/devices/gdevxalt.c
index 144cf3e7..4d8cc339 100644
--- a/devices/gdevxalt.c
+++ b/devices/gdevxalt.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxcf.c b/devices/gdevxcf.c
index a7e66174..c4c44bf6 100644
--- a/devices/gdevxcf.c
+++ b/devices/gdevxcf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxcmp.c b/devices/gdevxcmp.c
index 5cf5a56c..9f7e0401 100644
--- a/devices/gdevxcmp.c
+++ b/devices/gdevxcmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxcmp.h b/devices/gdevxcmp.h
index 0a71dd50..9d6fca73 100644
--- a/devices/gdevxcmp.h
+++ b/devices/gdevxcmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxini.c b/devices/gdevxini.c
index 3b46b182..ca8ca2f9 100644
--- a/devices/gdevxini.c
+++ b/devices/gdevxini.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gdevxres.c b/devices/gdevxres.c
index 485f0007..748d3c58 100644
--- a/devices/gdevxres.c
+++ b/devices/gdevxres.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/gxfcopy.c b/devices/gxfcopy.c
index d68ee8f9..c6d90c9a 100644
--- a/devices/gxfcopy.c
+++ b/devices/gxfcopy.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -209,7 +209,10 @@ struct gs_copied_font_data_s {
extern_st(st_gs_font_info);
static
ENUM_PTRS_WITH(gs_copied_font_data_enum_ptrs, gs_copied_font_data_t *cfdata)
- if (index == 12) {
+ /* See comments in gs_copy_font() below regarding the enumeration of names
+ * and the font's 'dir' member
+ */
+ if (index == 12 && cfdata->dir != NULL) {
gs_copied_glyph_name_t *names = cfdata->names;
gs_copied_glyph_extra_name_t *en = cfdata->extra_names;
int i;
@@ -2110,7 +2113,37 @@ gs_copy_font(gs_font *font, const gs_matrix *orig_matrix, gs_memory_t *mem, gs_f
goto fail;
}
cfdata->info = info;
- cfdata->dir = font->dir;
+
+ /* This is somewhat unpleasant. We use the 'glyph' as the unique ID for a number
+ * of purposes, but in particular for determining which CharStrings need to be written
+ * out by pdfwrite. The 'glyph' appears to be (sometimes) given by the index of the glyph name
+ * in the *interpreter* name table. For names in one of the standard encodings
+ * we find the name there and use its ID. However, if the glyph name is non-standard
+ * then it is added to the interpreter name table and the name index is used to
+ * identify the glyph. The problem arises if the font is restored away, and a
+ * vmreclaim causes the (now unreferenced) glyph names to be flushed. If we
+ * should then use the same font and glyph, its possible that the name table
+ * might be different, resulting in a different name index. We would then write
+ * duplicate CharStrings to the output, see Bug 687172.
+ * The GC enumeration (see top of file) marks the names in the name table to prevent
+ * them being flushed. As long as everything is in the same memory allocator this
+ * works (ugly though it is). However, if we are using the pdfi PDF interpreter
+ * inside the PostScript interpreter, then a problem arises. The pdfwrite device
+ * holds on to the font copies until the device is destroyed, by which time the
+ * PDF interpreter has already gone. The vmreclaim prior to the device destruction
+ * enumerates the name pointers. Because the font was allocated by pdfi these
+ * are no longer valid. They are also not needed, since the pdfi name table is
+ * not garbage collected..
+ * To cater for both conditions we test the memory allocator the font was using.
+ * If its a GC'ed allocater then we keep a pointer to the font 'dir' and we enumerate
+ * the names and mark them in the interpreter table. Otherwise we don't attempt to
+ * mark them. We use dir being NULL to control whether we mark the names.
+ */
+ if (font->memory != font->memory->non_gc_memory)
+ cfdata->dir = font->dir;
+ else
+ cfdata->dir = NULL;
+
if ((code = (copy_string(mem, &cfdata->info.Copyright,
"gs_copy_font(Copyright)") |
copy_string(mem, &cfdata->info.Notice,
diff --git a/devices/gxfcopy.h b/devices/gxfcopy.h
index c88d43e5..8a6efbaa 100644
--- a/devices/gxfcopy.h
+++ b/devices/gxfcopy.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/minftrsz.c b/devices/minftrsz.c
index 1822fc59..a8c5d202 100644
--- a/devices/minftrsz.c
+++ b/devices/minftrsz.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/minftrsz.h b/devices/minftrsz.h
index a24c63fd..d520a62a 100644
--- a/devices/minftrsz.h
+++ b/devices/minftrsz.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/evenbetter-rll.c b/devices/rinkj/evenbetter-rll.c
index 68f17114..5928704a 100644
--- a/devices/rinkj/evenbetter-rll.c
+++ b/devices/rinkj/evenbetter-rll.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/evenbetter-rll.h b/devices/rinkj/evenbetter-rll.h
index c8585ff3..3e1d7fa6 100644
--- a/devices/rinkj/evenbetter-rll.h
+++ b/devices/rinkj/evenbetter-rll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -16,6 +16,9 @@
/* Header file for testbed implementation of Even Better Screening. */
+#ifndef evenbetter_rll_h_INCLUDED
+#define evenbetter_rll_h_INCLUDED
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -101,3 +104,5 @@ eb_free_aligned(void *p);
#ifdef __cplusplus
}
#endif
+
+#endif
diff --git a/devices/rinkj/rinkj-byte-stream.c b/devices/rinkj/rinkj-byte-stream.c
index 6019ec18..9f84ce96 100644
--- a/devices/rinkj/rinkj-byte-stream.c
+++ b/devices/rinkj/rinkj-byte-stream.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-byte-stream.h b/devices/rinkj/rinkj-byte-stream.h
index d0cef54a..b2741088 100644
--- a/devices/rinkj/rinkj-byte-stream.h
+++ b/devices/rinkj/rinkj-byte-stream.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -14,6 +14,9 @@
*/
+#ifndef rinkj_byte_stream_h_INCLUDED
+#define rinkj_byte_stream_h_INCLUDED
+
#include "gp.h"
/* Bytestream abstraction for Rinkj driver. */
@@ -38,3 +41,5 @@ rinkj_byte_stream_close (RinkjByteStream *bs);
RinkjByteStream *
rinkj_byte_stream_file_new (gp_file *f);
+
+#endif
diff --git a/devices/rinkj/rinkj-config.c b/devices/rinkj/rinkj-config.c
index b1d563f0..4b084458 100644
--- a/devices/rinkj/rinkj-config.c
+++ b/devices/rinkj/rinkj-config.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-config.h b/devices/rinkj/rinkj-config.h
index 77595955..716caa75 100644
--- a/devices/rinkj/rinkj-config.h
+++ b/devices/rinkj/rinkj-config.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -14,6 +14,9 @@
*/
+#ifndef rinkj_config_h_INCLUDED
+#define rinkj_config_h_INCLUDED
+
/* Support for reading Rinkj config files. */
char *
@@ -24,3 +27,5 @@ rinkj_config_get (const char *config, const char *key);
char *
rinkj_config_keyval (const char *config, char **p_val, const char **p_next);
+
+#endif
diff --git a/devices/rinkj/rinkj-device.c b/devices/rinkj/rinkj-device.c
index 112ffb47..43ba6f80 100644
--- a/devices/rinkj/rinkj-device.c
+++ b/devices/rinkj/rinkj-device.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-device.h b/devices/rinkj/rinkj-device.h
index d5f9f775..c936711f 100644
--- a/devices/rinkj/rinkj-device.h
+++ b/devices/rinkj/rinkj-device.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -13,6 +13,8 @@
CA 94945, U.S.A., +1(415)492-9861, for further information.
*/
+#ifndef rinkj_device_h_INCLUDED
+#define rinkj_device_h_INCLUDED
/* The device abstraction within the Rinkj driver. */
@@ -53,3 +55,5 @@ rinkj_device_init (RinkjDevice *self, const RinkjDeviceParams *params);
int
rinkj_device_write (RinkjDevice *self, const char **data);
+
+#endif
diff --git a/devices/rinkj/rinkj-dither.c b/devices/rinkj/rinkj-dither.c
index 5e6247ee..f5a12844 100644
--- a/devices/rinkj/rinkj-dither.c
+++ b/devices/rinkj/rinkj-dither.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-dither.h b/devices/rinkj/rinkj-dither.h
index 2720d64e..815368c8 100644
--- a/devices/rinkj/rinkj-dither.h
+++ b/devices/rinkj/rinkj-dither.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -13,6 +13,8 @@
CA 94945, U.S.A., +1(415)492-9861, for further information.
*/
+#ifndef rinkj_dither_h_INCLUDED
+#define rinkj_dither_h_INCLUDED
/* The dither object abstraction within the Rinkj driver. */
@@ -28,3 +30,5 @@ rinkj_dither_line (RinkjDither *self, unsigned char *dst, const unsigned char *s
void
rinkj_dither_close (RinkjDither *self);
+
+#endif
diff --git a/devices/rinkj/rinkj-epson870.c b/devices/rinkj/rinkj-epson870.c
index 70102533..59d55f57 100644
--- a/devices/rinkj/rinkj-epson870.c
+++ b/devices/rinkj/rinkj-epson870.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-epson870.h b/devices/rinkj/rinkj-epson870.h
index 2293737a..08f135f9 100644
--- a/devices/rinkj/rinkj-epson870.h
+++ b/devices/rinkj/rinkj-epson870.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -13,8 +13,12 @@
CA 94945, U.S.A., +1(415)492-9861, for further information.
*/
+#ifndef rinkj_epson870_h_INCLUDED
+#define rinkj_epson870_h_INCLUDED
/* A Rinkj driver for a number of variable-dot Epson devices. */
RinkjDevice *
rinkj_epson870_new (RinkjByteStream *out);
+
+#endif
diff --git a/devices/rinkj/rinkj-screen-eb.c b/devices/rinkj/rinkj-screen-eb.c
index b4b98bce..e6a9f779 100644
--- a/devices/rinkj/rinkj-screen-eb.c
+++ b/devices/rinkj/rinkj-screen-eb.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/rinkj/rinkj-screen-eb.h b/devices/rinkj/rinkj-screen-eb.h
index 78044168..8b61fe35 100644
--- a/devices/rinkj/rinkj-screen-eb.h
+++ b/devices/rinkj/rinkj-screen-eb.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -14,6 +14,9 @@
*/
+#ifndef rinkj_screen_eb_h_INCLUDED
+#define rinkj_screen_eb_h_INCLUDED
+
/* A Rinkj module encapsulating ETS screening. */
RinkjDevice *
@@ -27,3 +30,5 @@ rinkj_screen_eb_set_gamma (RinkjDevice *self, int plane, double gamma, double ma
void
rinkj_screen_eb_set_lut (RinkjDevice *self, int plane, const double *lut);
+
+#endif
diff --git a/devices/vector/gdevagl.c b/devices/vector/gdevagl.c
index f9428a6e..a551bb38 100644
--- a/devices/vector/gdevagl.c
+++ b/devices/vector/gdevagl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevagl.h b/devices/vector/gdevagl.h
index e3569226..066eae76 100644
--- a/devices/vector/gdevagl.h
+++ b/devices/vector/gdevagl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -16,6 +16,9 @@
* Unicode code points.
*/
+#ifndef gdevagl_h_INCLUDED
+#define gdevagl_h_INCLUDED
+
typedef struct single_glyph_list_s {
const char *Glyph;
unsigned short Unicode;
@@ -35,3 +38,5 @@ typedef struct quad_glyph_list_s {
const char *Glyph;
unsigned short Unicode[4];
} quad_glyph_list_t;
+
+#endif
diff --git a/devices/vector/gdevpdf.c b/devices/vector/gdevpdf.c
index b25a4a6a..6752fabb 100644
--- a/devices/vector/gdevpdf.c
+++ b/devices/vector/gdevpdf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -467,6 +467,12 @@ pdf_compute_fileID(gx_device_pdf * pdev)
pdev->KeyLength = KeyLength;
if (code < 0)
return code;
+ /* Generally we would call s_close_filters() here in order to free the data buffer
+ * associated with the MD5 filter, but the data buffer we passed in to s_MD5E_make_stream()
+ * is part of the device structure, so we must *NOT* free that buffer. Therefore we must
+ * instead call sclose(). This confusion over ownership of the stream buffers causes
+ * a lot of problems......
+ */
sclose(s);
gs_free_object(mem, s, "pdf_compute_fileID");
return 0;
@@ -1410,6 +1416,11 @@ pdf_output_page(gx_device * dev, int num_copies, int flush)
gx_device_pdf *const pdev = (gx_device_pdf *) dev;
int code;
+ if (pdev->Eps2Write && pdev->next_page != 0 && !gx_outputfile_is_separate_pages(pdev->fname, dev->memory)) {
+ emprintf(pdev->memory, "\n *** EPS files may not contain multiple pages.\n *** Use of the %%d filename format is required to output pages to multiple EPS files.\n");
+ return_error(gs_error_ioerror);
+ }
+
if (pdev->ForOPDFRead) {
code = pdf_close_page(pdev, num_copies);
if (code < 0)
@@ -2555,6 +2566,7 @@ pdf_close(gx_device * dev)
int64_t start_section, end_section;
char str[256];
pdf_linearisation_t linear_params;
+ bool file_per_page = false;
if (!dev->is_open)
return_error(gs_error_undefined);
@@ -2577,26 +2589,14 @@ pdf_close(gx_device * dev)
* marks.
*/
if (pdev->next_page == 0) {
- /* If we didn't get called from pdf_output_page, and we are doign file-per-page
- * output, then the call from close_device will leave an empty file which we don't
- * want. So here we delete teh file.
- */
- if (!pdev->InOutputPage && gx_outputfile_is_separate_pages(pdev->fname, pdev->memory)) {
- code = gdev_vector_close_file((gx_device_vector *) pdev);
- if (code != 0)
- return code;
- code = pdf_close_files(pdev, 0);
+ file_per_page = !pdev->InOutputPage &&
+ gx_outputfile_is_separate_pages(pdev->fname, pdev->memory);
+ if (!file_per_page) {
+ code = pdf_open_page(pdev, PDF_IN_STREAM);
+
if (code < 0)
return code;
- code = gx_device_delete_output_file((const gx_device *)pdev, pdev->fname);
- if (code != 0)
- return gs_note_error(gs_error_ioerror);
- return code;
}
- code = pdf_open_page(pdev, PDF_IN_STREAM);
-
- if (code < 0)
- return code;
}
if (pdev->contents_id != 0)
pdf_close_page(pdev, 1);
@@ -2945,6 +2945,14 @@ pdf_close(gx_device * dev)
stream_puts(pdev->strm, "%%EOF\n");
}
+ if (pdev->params.PSPageOptions.size) {
+ int ix;
+
+ for (ix = 0; ix < pdev->params.PSPageOptions.size;ix++)
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data[ix].data, "freeing old string array copy");
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data, "freeing old string array");
+ }
+
if (pdev->Linearise) {
linear_params.LastResource = pdev->next_id - 1;
linear_params.Offsets = (gs_offset_t *)gs_alloc_bytes(pdev->pdf_memory, pdev->next_id * sizeof(gs_offset_t), "temp xref storage");
@@ -3450,6 +3458,18 @@ pdf_close(gx_device * dev)
if (code < 0)
return code;
+ /* If we didn't get called from pdf_output_page, and we are doign file-per-page
+ * output, then the call from close_device will leave an empty file which we don't
+ * want. So here we delete the file.
+ * NOTE: We needed to let it process the whole page in order to make sure everything
+ * got properly freed.
+ */
+ if (file_per_page) {
+ code = gx_device_delete_output_file((const gx_device *)pdev, pdev->fname);
+ if (code != 0)
+ code = gs_note_error(gs_error_ioerror);
+ }
+
pdf_free_pdf_font_cache(pdev);
return code;
}
diff --git a/devices/vector/gdevpdfb.c b/devices/vector/gdevpdfb.c
index e35531d7..20339038 100644
--- a/devices/vector/gdevpdfb.c
+++ b/devices/vector/gdevpdfb.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfb.h b/devices/vector/gdevpdfb.h
index 5ea7a355..16521e0d 100644
--- a/devices/vector/gdevpdfb.h
+++ b/devices/vector/gdevpdfb.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfc.c b/devices/vector/gdevpdfc.c
index 259d143c..3a3096c4 100644
--- a/devices/vector/gdevpdfc.c
+++ b/devices/vector/gdevpdfc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -643,6 +643,10 @@ pdf_indexed_color_space(gx_device_pdf *pdev, const gs_gstate * pgs, cos_value_t
}
stream_write(&es, palette, table_size);
gs_free_string(mem, palette, table_size, "pdf_color_space(palette)");
+ /* Another case where we use sclose() and not sclose_filters(), because the
+ * buffer we supplied to s_init_filter is a heap based C object, so we
+ * must not free it.
+ */
sclose(&es);
sflush(&s);
string_used = (uint)stell(&s);
@@ -874,6 +878,11 @@ pdf_color_space_named(gx_device_pdf *pdev, const gs_gstate * pgs,
if (code < 0)
return_error(gs_error_unregistered); /* Must not happen. */
serialized_size = stell(&s);
+ /* I think this is another case where we use sclose() and not sclose_filters().
+ * It seems like we don't actually write anything, but it allows us to find the
+ * length of the serialised data. No buffer hre, so we must no call
+ * s_close_filters() as that will try to free it.
+ */
sclose(&s);
if (serialized_size <= sizeof(serialized0))
serialized = serialized0;
diff --git a/devices/vector/gdevpdfc.h b/devices/vector/gdevpdfc.h
index 69770933..e9056be3 100644
--- a/devices/vector/gdevpdfc.h
+++ b/devices/vector/gdevpdfc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfd.c b/devices/vector/gdevpdfd.c
index 1e62bad1..32a6c41b 100644
--- a/devices/vector/gdevpdfd.c
+++ b/devices/vector/gdevpdfd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -181,20 +181,6 @@ pdf_dorect(gx_device_vector * vdev, fixed x0, fixed y0, fixed x1, fixed y1,
ymin -= d;
ymax += d;
}
- if (pdev->CompatibilityLevel < 1.5) {
- /*
- * Clamp coordinates to avoid tripping over Acrobat Reader's limit
- * of 32K on user coordinate values.
- */
- if (x0 < xmin)
- x0 = xmin;
- if (x1 > xmax)
- x1 = xmax;
- if (y0 < ymin)
- y0 = ymin;
- if (y1 > ymax)
- y1 = ymax;
- }
return psdf_dorect(vdev, x0, y0, x1, y1, type);
}
@@ -236,6 +222,7 @@ const gx_device_vector_procs pdf_vector_procs = {
int
pdf_remember_clip_path(gx_device_pdf * pdev, const gx_clip_path * pcpath)
{
+ int code = 0;
/* Used for skipping redundant clip paths. SF bug #624168. */
if (pdev->clip_path != 0) {
gx_path_free(pdev->clip_path, "pdf clip path");
@@ -247,7 +234,22 @@ pdf_remember_clip_path(gx_device_pdf * pdev, const gx_clip_path * pcpath)
pdev->clip_path = gx_path_alloc(pdev->pdf_memory, "pdf clip path");
if (pdev->clip_path == 0)
return_error(gs_error_VMerror);
- return gx_cpath_to_path((gx_clip_path *)pcpath, pdev->clip_path);
+
+ code = gx_cpath_to_path((gx_clip_path *)pcpath, pdev->clip_path);
+ if (code < 0)
+ return code;
+
+ /* gx_cpath_to_path above ends up going through gx_path_assign_preserve
+ * which specifically states that the segments of the paths (in this case pcpath
+ * and pdev->clip_path) must have been allocated with the same allocator.
+ * If that's not true (eg pdfi running inside GS) then we need to 'unshare'
+ * the path. Otherwise we mauy end up with pcpath being freed and discarded
+ * while the pdfwrite devcie still thinks it has a pointer to it.
+ */
+ if (pcpath->path.memory != pdev->pdf_memory)
+ code = gx_path_unshare(pdev->clip_path);
+
+ return code;
}
/* Check if same clipping path. */
@@ -778,38 +780,6 @@ pdf_put_clip_path(gx_device_pdf * pdev, const gx_clip_path * pcpath)
}
/*
- * Compute the scaling to ensure that user coordinates for a path are within
- * Acrobat's range. Return true if scaling was needed. In this case, the
- * CTM will be multiplied by *pscale, and all coordinates will be divided by
- * *pscale.
- */
-static bool
-make_rect_scaling(const gx_device_pdf *pdev, const gs_fixed_rect *bbox,
- double prescale, double *pscale)
-{
- double bmin, bmax;
-
- if (pdev->CompatibilityLevel > 1.4) {
- *pscale = 1;
- return false;
- }
-
- bmin = min(bbox->p.x / pdev->scale.x, bbox->p.y / pdev->scale.y) * prescale;
- bmax = max(bbox->q.x / pdev->scale.x, bbox->q.y / pdev->scale.y) * prescale;
- if (bmin <= int2fixed(-MAX_USER_COORD) ||
- bmax > int2fixed(MAX_USER_COORD)
- ) {
- /* Rescale the path. */
- *pscale = max(bmin / int2fixed(-MAX_USER_COORD),
- bmax / int2fixed(MAX_USER_COORD));
- return true;
- } else {
- *pscale = 1;
- return false;
- }
-}
-
-/*
* Prepare a fill with a color anc a clipping path.
* Return 1 if there is nothing to paint.
* Changes *box to the clipping box.
@@ -1652,9 +1622,6 @@ gdev_pdf_fill_path(gx_device * dev, const gs_gstate * pgs, gx_path * ppath,
return code;
{
stream *s = pdev->strm;
- double scale;
- gs_matrix smat;
- gs_matrix *psmat = NULL;
gs_path_enum cenum;
gdev_vector_dopath_state_t state;
@@ -1667,19 +1634,11 @@ gdev_pdf_fill_path(gx_device * dev, const gs_gstate * pgs, gx_path * ppath,
pprintg1(s, "%g i\n", params->flatness);
pdev->state.flatness = params->flatness;
}
- if (make_rect_scaling(pdev, &box1, 1.0, &scale)) {
- gs_make_scaling(pdev->scale.x * scale, pdev->scale.y * scale,
- &smat);
- pdf_put_matrix(pdev, "q ", &smat, "cm\n");
- psmat = &smat;
- }
- code = pdf_write_path(pdev, (gs_path_enum *)&cenum, &state, (gx_path *)ppath, 0, gx_path_type_fill | gx_path_type_optimize, psmat);
+ code = pdf_write_path(pdev, (gs_path_enum *)&cenum, &state, (gx_path *)ppath, 0, gx_path_type_fill | gx_path_type_optimize, NULL);
if (code < 0)
return code;
stream_puts(s, (params->rule < 0 ? "f\n" : "f*\n"));
- if (psmat)
- stream_puts(s, "Q\n");
}
return 0;
}
@@ -1693,10 +1652,9 @@ gdev_pdf_stroke_path(gx_device * dev, const gs_gstate * pgs,
gx_device_pdf *pdev = (gx_device_pdf *) dev;
stream *s;
int code;
- double scale, path_scale;
+ double scale;
bool set_ctm;
gs_matrix mat;
- double prescale = 1;
gs_fixed_rect bbox;
gs_path_enum cenum;
gdev_vector_dopath_state_t state;
@@ -1782,20 +1740,6 @@ gdev_pdf_stroke_path(gx_device * dev, const gs_gstate * pgs,
scale = fabs(pgs->ctm.xx + pgs->ctm.xy + pgs->ctm.yx + pgs->ctm.yy) /* Using the non-zero coeff. */
/ sqrt(2); /* Empirically from Adobe. */
}
- if (set_ctm) {
- /*
- * We want a scaling factor that will bring the largest reasonable
- * user coordinate within bounds. We choose a factor based on the
- * minor axis of the transformation. Thanks to Raph Levien for
- * the following formula.
- */
- double a = mat.xx, b = mat.xy, c = mat.yx, d = mat.yy;
- double u = fabs(a * d - b * c);
- double v = a * a + b * b + c * c + d * d;
- double minor = (sqrt(v + 2 * u) - sqrt(v - 2 * u)) * 0.5;
-
- prescale = (minor == 0 || minor > 1 ? 1 : 1 / minor);
- }
gx_path_bbox(ppath, &bbox);
{
/* Check whether a painting appears inside the clipping box.
@@ -1828,15 +1772,6 @@ gdev_pdf_stroke_path(gx_device * dev, const gs_gstate * pgs,
if (stroke_bbox.q.x < stroke_bbox.p.x || stroke_bbox.q.y < stroke_bbox.p.y)
return 0;
}
- if (make_rect_scaling(pdev, &bbox, prescale, &path_scale)) {
- scale /= path_scale;
- if (set_ctm)
- gs_matrix_scale(&mat, path_scale, path_scale, &mat);
- else {
- gs_make_scaling(path_scale, path_scale, &mat);
- set_ctm = true;
- }
- }
code = gdev_vector_prepare_stroke((gx_device_vector *)pdev, pgs, params,
pdcolor, scale);
if (code < 0)
@@ -1903,8 +1838,7 @@ gdev_pdf_fill_stroke_path(gx_device *dev, const gs_gstate *pgs, gx_path *ppath,
} else {
bool set_ctm;
gs_matrix mat;
- double scale, path_scale;
- double prescale = 1;
+ double scale;
gs_fixed_rect bbox;
gs_path_enum cenum;
gdev_vector_dopath_state_t state;
@@ -1918,7 +1852,6 @@ gdev_pdf_fill_stroke_path(gx_device *dev, const gs_gstate *pgs, gx_path *ppath,
gx_cpath_outer_box(pcpath, &cbox);
if (cbox.p.x >= cbox.q.x || cbox.p.y >= cbox.q.y)
return 1; /* empty clipping path */
-// *box = cbox;
}
code = pdf_check_soft_mask(pdev, (gs_gstate *)pgs);
if (code < 0)
@@ -1968,20 +1901,6 @@ gdev_pdf_fill_stroke_path(gx_device *dev, const gs_gstate *pgs, gx_path *ppath,
scale = fabs(pgs->ctm.xx + pgs->ctm.xy + pgs->ctm.yx + pgs->ctm.yy) /* Using the non-zero coeff. */
/ sqrt(2); /* Empirically from Adobe. */
}
- if (set_ctm) {
- /*
- * We want a scaling factor that will bring the largest reasonable
- * user coordinate within bounds. We choose a factor based on the
- * minor axis of the transformation. Thanks to Raph Levien for
- * the following formula.
- */
- double a = mat.xx, b = mat.xy, c = mat.yx, d = mat.yy;
- double u = fabs(a * d - b * c);
- double v = a * a + b * b + c * c + d * d;
- double minor = (sqrt(v + 2 * u) - sqrt(v - 2 * u)) * 0.5;
-
- prescale = (minor == 0 || minor > 1 ? 1 : 1 / minor);
- }
gx_path_bbox(ppath, &bbox);
{
/* Check whether a painting appears inside the clipping box.
@@ -2014,15 +1933,6 @@ gdev_pdf_fill_stroke_path(gx_device *dev, const gs_gstate *pgs, gx_path *ppath,
if (stroke_bbox.q.x < stroke_bbox.p.x || stroke_bbox.q.y < stroke_bbox.p.y)
return 0;
}
- if (make_rect_scaling(pdev, &bbox, prescale, &path_scale)) {
- scale /= path_scale;
- if (set_ctm)
- gs_matrix_scale(&mat, path_scale, path_scale, &mat);
- else {
- gs_make_scaling(path_scale, path_scale, &mat);
- set_ctm = true;
- }
- }
code = pdf_setfillcolor((gx_device_vector *)pdev, pgs, pdcolor_fill);
if (code == gs_error_rangecheck) {
@@ -2077,9 +1987,6 @@ gdev_pdf_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect,
int code;
gs_fixed_rect box1 = *rect, box = box1;
gx_device_pdf *pdev = (gx_device_pdf *) dev;
- double scale;
- gs_matrix smat;
- gs_matrix *psmat = NULL;
const bool convert_to_image = (pdev->CompatibilityLevel <= 1.2 &&
gx_dc_is_pattern2_color(pdcolor));
@@ -2098,16 +2005,9 @@ gdev_pdf_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect,
rect_intersect(box1, box);
if (box1.p.x > box1.q.x || box1.p.y > box1.q.y)
return 0; /* outside the clipping path */
- if (make_rect_scaling(pdev, &box1, 1.0, &scale)) {
- gs_make_scaling(pdev->scale.x * scale, pdev->scale.y * scale, &smat);
- pdf_put_matrix(pdev, "q ", &smat, "cm\n");
- psmat = &smat;
- }
pprintg4(pdev->strm, "%g %g %g %g re f\n",
- fixed2float(box1.p.x) / scale, fixed2float(box1.p.y) / scale,
- fixed2float(box1.q.x - box1.p.x) / scale, fixed2float(box1.q.y - box1.p.y) / scale);
- if (psmat)
- stream_puts(pdev->strm, "Q\n");
+ fixed2float(box1.p.x), fixed2float(box1.p.y),
+ fixed2float(box1.q.x - box1.p.x) , fixed2float(box1.q.y - box1.p.y));
if (pdev->Eps2Write) {
gs_rect *Box;
diff --git a/devices/vector/gdevpdfe.c b/devices/vector/gdevpdfe.c
index 1c540709..f9544c5d 100644
--- a/devices/vector/gdevpdfe.c
+++ b/devices/vector/gdevpdfe.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfg.c b/devices/vector/gdevpdfg.c
index 0aa93e53..39da7ea4 100644
--- a/devices/vector/gdevpdfg.c
+++ b/devices/vector/gdevpdfg.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -1467,7 +1467,7 @@ int pdf_reset_color(gx_device_pdf * pdev, const gs_gstate * pgs,
* unlike shading patterns we have no fallback.
*/
if (pdev->CompatibilityLevel < 1.2) {
- return_error(gs_error_undefined);
+ return_error(gs_error_undefined);
}
code = pdf_put_colored_pattern(pdev, pdc, pcs,
ppscc, pgs, &pres);
@@ -2426,7 +2426,8 @@ pdf_write_spot_halftone(gx_device_pdf *pdev, const gs_spot_halftone *psht,
if (compare_gx_ht_order_levels(&order,porder))
continue;
if (memcmp(order.bit_data, porder->bit_data,
- order.num_bits * porder->procs->bit_data_elt_size))
+ (size_t)order.num_bits *
+ porder->procs->bit_data_elt_size))
continue;
/* We have a match. */
break;
@@ -2609,7 +2610,7 @@ pdf_get_halftone_component_index(const gs_multiple_halftone *pmht,
return j;
}
static int
-pdf_write_multiple_halftone(gx_device_pdf *pdev,
+pdf_write_multiple_halftone(gx_device_pdf *pdev, gs_gstate *pgs,
const gs_multiple_halftone *pmht,
const gx_device_halftone *pdht, long *pid)
{
@@ -2679,7 +2680,7 @@ pdf_write_multiple_halftone(gx_device_pdf *pdev,
done_Default = true;
}
phtc = &pmht->components[code];
- if ((code = pmht->get_colorname_string(pdev->memory, phtc->cname, &str, &len)) < 0 ||
+ if ((code = pmht->get_colorname_string(pgs, phtc->cname, &str, &len)) < 0 ||
(code = pdf_string_to_cos_name(pdev, str, len, &value)) < 0)
return code;
cos_value_write(&value, pdev);
@@ -2739,7 +2740,7 @@ pdf_update_halftone(gx_device_pdf *pdev, const gs_gstate *pgs,
break;
case ht_type_multiple:
case ht_type_multiple_colorscreen:
- code = pdf_write_multiple_halftone(pdev, &pht->params.multiple,
+ code = pdf_write_multiple_halftone(pdev, (gs_gstate *)pgs, &pht->params.multiple,
pdht, &id);
break;
default:
diff --git a/devices/vector/gdevpdfg.h b/devices/vector/gdevpdfg.h
index e846b1a8..e9faa670 100644
--- a/devices/vector/gdevpdfg.h
+++ b/devices/vector/gdevpdfg.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -347,10 +347,10 @@ int pdf_copy_color_data(gx_device_pdf * pdev, const byte * base, int sourcex,
gs_image_t *pim, pdf_image_writer *piw,
int for_pattern);
-#endif /* gdevpdfg_INCLUDED */
-
/* ---------------- Exported by gdevpdfe.c ---------------- */
/* Write metadata */
int pdf_document_metadata(gx_device_pdf *pdev);
int pdf_get_docinfo_item(gx_device_pdf *pdev, const char *key, char *buf, int buf_length);
+
+#endif /* gdevpdfg_INCLUDED */
diff --git a/devices/vector/gdevpdfi.c b/devices/vector/gdevpdfi.c
index b73ed3d6..c6bdee9d 100644
--- a/devices/vector/gdevpdfi.c
+++ b/devices/vector/gdevpdfi.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -976,7 +976,7 @@ pdf_begin_typed_image(gx_device_pdf *pdev, const gs_gstate * pgs,
const gs_pixel_image_t *pim;
gs_int_rect rect;
gs_image_format_t format;
- const gs_color_space *pcs;
+ gs_color_space *pcs;
int num_components;
pdf_image_enum *pie;
const pdf_color_space_names_t *names;
@@ -1213,6 +1213,7 @@ pdf_begin_typed_image(gx_device_pdf *pdev, const gs_gstate * pgs,
}
pcs = pim->ColorSpace;
+ rc_increment_cs(pcs);
num_components = (is_mask ? 1 : gs_color_space_num_components(pcs));
code = pdf_check_soft_mask(pdev, (gs_gstate *)pgs);
@@ -1238,6 +1239,7 @@ pdf_begin_typed_image(gx_device_pdf *pdev, const gs_gstate * pgs,
* to DeviceGray here.
*/
/* {csrc} make sure this gets freed */
+ rc_decrement(pcs, "pdf_begin_typed_image(pcs)");
pcs = gs_cspace_new_DeviceGray(pdev->memory);
if (pcs == NULL)
code = gs_note_error(gs_error_VMerror);
@@ -1401,9 +1403,6 @@ pdf_begin_typed_image(gx_device_pdf *pdev, const gs_gstate * pgs,
if (pdev->params.TransferFunctionInfo == tfi_Apply && pdev->transfer_not_identity && !is_mask)
pdev->JPEG_PassThrough = 0;
-/* if (pdev->JPEG_PassThrough)
- uncompressed = pie->writer.binary[0].strm;*/
-
/* Code below here deals with setting up the multiple data stream writing.
* We can have up to 4 stream writers, which we keep in an array. We must
* always have at least one which writes the uncompressed stream. If we
@@ -1612,9 +1611,11 @@ pdf_begin_typed_image(gx_device_pdf *pdev, const gs_gstate * pgs,
gs_free(mem->non_gc_memory, image, 4, sizeof(image_union_t),
"pdf_begin_typed_image(image)");
+ rc_decrement(pcs, "pdf_begin_typed_image(pcs)");
return 0;
fail_and_fallback:
+ rc_decrement(pcs, "pdf_begin_typed_image(pcs)");
pdev->JPEG_PassThrough = 0;
gs_free(mem->non_gc_memory, image, 4, sizeof(image_union_t),
"pdf_begin_typed_image(image)");
@@ -1928,7 +1929,14 @@ pdf_image_end_image_data(gx_image_enum_common_t * info, bool draw_last,
/* Clean up any outstanding streams before freeing the enumerator */
while (pie->writer.alt_writer_count-- > 0) {
ecode = psdf_end_binary(&(pie->writer.binary[pie->writer.alt_writer_count]));
- if (ecode < 0 && code >= 0) code = ecode;
+ /* If we are skipping an image (because its clipped out or similar) then we
+ * won't have written any data to it. Some filters (notably the DCTEncode filter)
+ * throw an error (premature EOD) if we close the filter without writing any data to it.
+ * So if we are skipping the image, ignore errors when closing the stream.
+ * Unfortunately we don't set pie->skipping until after begin_typed_image()
+ * or we could avoid a lot of setup....
+ */
+ if (ecode < 0 && code >= 0 && !pie->skipping) code = ecode;
}
gx_image_free_enum(&info);
diff --git a/devices/vector/gdevpdfj.c b/devices/vector/gdevpdfj.c
index 0af81fc2..4c73e171 100644
--- a/devices/vector/gdevpdfj.c
+++ b/devices/vector/gdevpdfj.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfk.c b/devices/vector/gdevpdfk.c
index 7914c0ee..e48718d1 100644
--- a/devices/vector/gdevpdfk.c
+++ b/devices/vector/gdevpdfk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -778,9 +778,10 @@ pdf_iccbased_color_space(gx_device_pdf *pdev, const gs_gstate * pgs, cos_value_t
const gs_color_space *pcs, cos_array_t *pca)
{
cos_stream_t * pcstrm;
- int code = 0;
+ int code = 0, code1 = 0;
unsigned char major = 0, minor = 0;
bool downgrade_icc = false;
+ pdf_resource_t *pres = NULL;
/*
* This would arise only in a pdf ==> pdf translation, but we
@@ -864,13 +865,22 @@ pdf_iccbased_color_space(gx_device_pdf *pdev, const gs_gstate * pgs, cos_value_t
pcs->cmm_icc_profile_data->buffer_size);
}
- if (code >= 0)
- code = pdf_finish_iccbased(pdev, pcstrm);
/*
- * The stream has been added to the array: in case of failure, the
- * caller will free the array, so there is no need to free the stream
- * explicitly here.
+ * The stream has been added to the array: However because the stream cos object
+ * has an id (it has to be an indirect object), freeing the colour space won't
+ * free the ICC profile stream. In order to have the stream freed we must add it to
+ * a resource chain; we don't have a resource chain for ICC profiles, so add it to
+ * resourceOther instead. This means it will be among the last objects released.
*/
+ code1 = pdf_alloc_resource(pdev, resourceOther, pcstrm->id, &pres, -1);
+ if (code1 >= 0) {
+ COS_FREE(pres->object, "pdf_iccbased_color_space");
+ pres->object = (cos_object_t *)pcstrm;
+ }
+
+ if (code >= 0)
+ code = pdf_finish_iccbased(pdev, pcstrm);
+
return code;
}
diff --git a/devices/vector/gdevpdfm.c b/devices/vector/gdevpdfm.c
index 6e018aa4..18ea50c5 100644
--- a/devices/vector/gdevpdfm.c
+++ b/devices/vector/gdevpdfm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfo.c b/devices/vector/gdevpdfo.c
index 402d290c..70b66c6b 100644
--- a/devices/vector/gdevpdfo.c
+++ b/devices/vector/gdevpdfo.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -1132,6 +1132,10 @@ static int write_key_as_string_encrypted(const gx_device_pdf *pdev, const byte *
memcpy(buffer, str, size);
s_arcfour_process_buffer(&sarc4, buffer, size);
stream_write(&sout, buffer, size);
+ /* Another case where we use sclose() and not s_close_filters(), because the
+ * buffer we supplied to s_init_filter is a heap based C object, so we
+ * must not free it.
+ */
sclose(&sout); /* Writes ')'. */
gs_free_object(pdev->pdf_memory, buffer, "Free encryption buffer");
return 0;
diff --git a/devices/vector/gdevpdfo.h b/devices/vector/gdevpdfo.h
index 0b6ef201..b30e9676 100644
--- a/devices/vector/gdevpdfo.h
+++ b/devices/vector/gdevpdfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfp.c b/devices/vector/gdevpdfp.c
index 2f29dba5..d06e585c 100644
--- a/devices/vector/gdevpdfp.c
+++ b/devices/vector/gdevpdfp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfr.c b/devices/vector/gdevpdfr.c
index 6d9f7f6f..b0ee06c4 100644
--- a/devices/vector/gdevpdfr.c
+++ b/devices/vector/gdevpdfr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdft.c b/devices/vector/gdevpdft.c
index 46f4d312..a963cb51 100644
--- a/devices/vector/gdevpdft.c
+++ b/devices/vector/gdevpdft.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -107,7 +107,7 @@ pdf_make_group_dict(gx_device_pdf * pdev, const gs_pdf14trans_params_t * pparams
a group color specified.
In this case, the parent group is inherited from
the previous group or the device color space */
- if (pgs != NULL && pparams->group_color != UNKNOWN) {
+ if (pgs != NULL && pparams->group_color_type != UNKNOWN) {
const gs_color_space *cs = gs_currentcolorspace_inline(pgs);
code = pdf_color_space_named(pdev, pgs, &cs_value, NULL, cs,
@@ -274,7 +274,7 @@ pdf_begin_transparency_mask(gs_gstate * pgs, gx_device_pdf * pdev,
const gs_pdf14trans_params_t * pparams)
{
if (pparams->subtype == TRANSPARENCY_MASK_None) {
- int code, id = pgs->soft_mask_id;
+ int code;
pdf_resource_t *pres = 0L;
/* reset the soft mask ID. Apparently this is only used by pdfwrite, if we don't
@@ -284,10 +284,11 @@ pdf_begin_transparency_mask(gs_gstate * pgs, gx_device_pdf * pdev,
pgs->soft_mask_id = 0;
code = pdf_prepare_drawing(pdev, pgs, &pres, false);
if (code == gs_error_interrupt) {
- /* Not in an appropriate context, ignore it but restore
- * the old soft_mask_id. Not sure this is correct, but it works for now.
+ /* */
+ /* Not in an appropriate context. Do not restore the soft_mask_id.
+ Otherwise any group push that occurs following this will use that
+ softmask, which clearly should be NONE here.
*/
- pgs->soft_mask_id = id;
/* ignore return code, we don't care about this graphics state as we aren't
* emitting it anyway
*/
diff --git a/devices/vector/gdevpdfu.c b/devices/vector/gdevpdfu.c
index 05ea7881..e5a9df01 100644
--- a/devices/vector/gdevpdfu.c
+++ b/devices/vector/gdevpdfu.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -568,6 +568,7 @@ int ps2write_dsc_header(gx_device_pdf * pdev, int pages)
if (code < 0)
return code;
}
+ stream_puts(s, "10 dict dup begin\n");
stream_puts(s, "/DSC_OPDFREAD true def\n");
if (pdev->Eps2Write) {
stream_puts(s, "/SetPageSize false def\n");
@@ -577,6 +578,7 @@ int ps2write_dsc_header(gx_device_pdf * pdev, int pages)
stream_puts(s, "/SetPageSize true def\n");
stream_puts(s, "/EPS2Write false def\n");
}
+ stream_puts(s, "end\n");
code = copy_procsets(s, pdev->HaveTrueTypes, false);
if (code < 0)
@@ -626,6 +628,7 @@ pdfwrite_pdf_open_document(gx_device_pdf * pdev)
if (code < 0)
return code;
}
+ stream_puts(s, "10 dict dup begin\n");
stream_puts(s, "/DSC_OPDFREAD false def\n");
code = copy_procsets(s, pdev->HaveTrueTypes, true);
if (code < 0)
@@ -646,6 +649,7 @@ pdfwrite_pdf_open_document(gx_device_pdf * pdev)
stream_puts(s, "/FitPages true def\n");
if(pdev->CenterPages)
stream_puts(s, "/CenterPages true def\n");
+ stream_puts(s, "end\n");
pdev->OPDFRead_procset_length = stell(s);
}
}
@@ -1000,21 +1004,6 @@ pdf_begin_encrypt(gx_device_pdf * pdev, stream **s, gs_id object_id)
*/
}
-/* Remove the encryption filter. */
-void
-pdf_end_encrypt(gx_device_pdf * pdev)
-{
- if (pdev->KeyLength) {
- stream *s = pdev->strm;
- stream *fs = s->strm;
-
- sclose(s);
- gs_free_object(pdev->pdf_memory, s->cbuf, "encrypt buffer");
- gs_free_object(pdev->pdf_memory, s, "encrypt stream");
- pdev->strm = fs;
- }
-}
-
/* Enter stream context. */
static int
none_to_stream(gx_device_pdf * pdev)
@@ -1168,6 +1157,7 @@ stream_to_none(gx_device_pdf * pdev)
stream *s = pdev->strm;
gs_offset_t length;
int code;
+ stream *target;
if (pdev->ResourcesBeforeUsage) {
int code = pdf_exit_substream(pdev);
@@ -1180,22 +1170,16 @@ stream_to_none(gx_device_pdf * pdev)
if (code < 0)
return code;
}
- if (pdev->compression_at_page_start == pdf_compress_Flate) { /* Terminate the filters. */
- stream *fs = s->strm;
-
- if (!pdev->binary_ok) {
- sclose(s); /* Terminate the ASCII85 filter. */
- gs_free_object(pdev->pdf_memory, s->cbuf, "A85E contents buffer");
- gs_free_object(pdev->pdf_memory, s, "A85E contents stream");
- pdev->strm = s = fs;
- fs = s->strm;
- }
- sclose(s); /* Next terminate the compression filter */
- gs_free_object(pdev->pdf_memory, s->cbuf, "zlib buffer");
- gs_free_object(pdev->pdf_memory, s, "zlib stream");
- pdev->strm = fs;
- }
- pdf_end_encrypt(pdev);
+ target = pdev->strm;
+
+ if (pdev->compression_at_page_start == pdf_compress_Flate)
+ target = target->strm;
+ if (!pdev->binary_ok)
+ target = target->strm;
+ if (pdf_end_encrypt(pdev))
+ target = target->strm;
+ s_close_filters(&pdev->strm, target);
+
s = pdev->strm;
length = pdf_stell(pdev) - pdev->contents_pos;
if (pdev->PDFA != 0)
@@ -2014,13 +1998,18 @@ pdf_unclip(gx_device_pdf * pdev)
/* ------ Miscellaneous output ------ */
/* Generate the default Producer string. */
+/* This calculation is also performed for Ghostscript generally
+ * The code is in ghostpdl/base/gsmisc.c printf_program_ident().
+ * Should we change this calculation both sets of code need to be updated.
+ */
void
pdf_store_default_Producer(char buf[PDF_MAX_PRODUCER])
{
- if ((gs_revision % 100) == 0)
- gs_sprintf(buf, "(%s %1.1f)", gs_product, gs_revision / 100.0);
- else
- gs_sprintf(buf, "(%s %1.2f)", gs_product, gs_revision / 100.0);
+ int major = (int)(gs_revision / 1000);
+ int minor = (int)(gs_revision - (major * 1000)) / 10;
+ int patch = gs_revision % 10;
+
+ gs_sprintf(buf, "(%s %d.%02d.%d)", gs_product, major, minor, patch);
}
/* Write matrix values. */
@@ -2133,6 +2122,10 @@ pdf_encrypt_encoded_string(const gx_device_pdf *pdev, const byte *str, uint size
break;
}
}
+ /* Another case where we use sclose() and not sclose_filters(), because the
+ * buffer we supplied to s_init_filter is a heap based C object, so we
+ * must not free it.
+ */
sclose(&sout); /* Writes ')'. */
return (int)stell(&sinp) + 1;
}
@@ -2697,7 +2690,7 @@ pdf_function_aux(gx_device_pdf *pdev, const gs_function_t *pfn,
stream_write(writer.strm, ptr, count);
}
code = psdf_end_binary(&writer);
- sclose(s);
+ s_close_filters(&s, s->strm);
}
pdev->strm = save;
if (code < 0)
diff --git a/devices/vector/gdevpdfv.c b/devices/vector/gdevpdfv.c
index 2f71d86a..dd7d4c7c 100644
--- a/devices/vector/gdevpdfv.c
+++ b/devices/vector/gdevpdfv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdfx.h b/devices/vector/gdevpdfx.h
index 0e43a028..c8b44b46 100644
--- a/devices/vector/gdevpdfx.h
+++ b/devices/vector/gdevpdfx.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -41,7 +41,11 @@
* Windows and Linux fail with coordinates outside +/- 16383. Hence, we
* limit coordinates to 16k, with a little slop.
*/
-#define MAX_USER_COORD 16300
+/* 28/05/2020 This was only being applied to text and a subset of paths. Since
+ * Acrobat 4 is now more than 20 years old, lets just drop support for it. The
+ * PDF specification never had this limit, just Adobe's software.
+ */
+/* #define MAX_USER_COORD 16300 */
/* ---------------- Statically allocated sizes ---------------- */
/* These should really be dynamic.... */
@@ -1168,7 +1172,12 @@ int pdf_copy_data_safe(stream *s, gp_file *file, gs_offset_t position, long coun
/* Add the encryption filter. */
int pdf_begin_encrypt(gx_device_pdf * pdev, stream **s, gs_id object_id);
/* Remove the encryption filter. */
-void pdf_end_encrypt(gx_device_pdf * pdev);
+static int inline pdf_end_encrypt(gx_device_pdf *pdev)
+{
+ if (pdev->KeyLength)
+ return 1;
+ return 0;
+}
/* Initialize encryption. */
int pdf_encrypt_init(const gx_device_pdf * pdev, gs_id object_id, stream_arcfour_state *psarc4);
diff --git a/devices/vector/gdevpdt.c b/devices/vector/gdevpdt.c
index 6a3b5a7f..970dd76a 100644
--- a/devices/vector/gdevpdt.c
+++ b/devices/vector/gdevpdt.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdt.h b/devices/vector/gdevpdt.h
index a4e736db..ee7a1c1e 100644
--- a/devices/vector/gdevpdt.h
+++ b/devices/vector/gdevpdt.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtb.c b/devices/vector/gdevpdtb.c
index 9caa640e..61961c4a 100644
--- a/devices/vector/gdevpdtb.c
+++ b/devices/vector/gdevpdtb.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -359,7 +359,7 @@ pdf_base_font_alloc(gx_device_pdf *pdev, pdf_base_font_t **ppbfont,
font_name.size -= SUBSET_PREFIX_SIZE;
}
} else {
- gs_sprintf(fnbuf, ".F%lx", (ulong)copied);
+ gs_sprintf(fnbuf, ".F" PRI_INTPTR, (intptr_t)copied);
font_name.data = (byte *)fnbuf;
font_name.size = strlen(fnbuf);
}
diff --git a/devices/vector/gdevpdtb.h b/devices/vector/gdevpdtb.h
index 1e160eb1..8753aa98 100644
--- a/devices/vector/gdevpdtb.h
+++ b/devices/vector/gdevpdtb.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtc.c b/devices/vector/gdevpdtc.c
index 95af86ff..5c6da535 100644
--- a/devices/vector/gdevpdtc.c
+++ b/devices/vector/gdevpdtc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtd.c b/devices/vector/gdevpdtd.c
index 45e2888e..ce6efa05 100644
--- a/devices/vector/gdevpdtd.c
+++ b/devices/vector/gdevpdtd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtd.h b/devices/vector/gdevpdtd.h
index 9c3078e2..92e64758 100644
--- a/devices/vector/gdevpdtd.h
+++ b/devices/vector/gdevpdtd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdte.c b/devices/vector/gdevpdte.c
index 3e7e2237..6f0eb158 100644
--- a/devices/vector/gdevpdte.c
+++ b/devices/vector/gdevpdte.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -160,6 +160,8 @@ pdf_add_ToUnicode(gx_device_pdf *pdev, gs_font *font, pdf_font_resource_t *pdfon
if (pdfont->cmap_ToUnicode != NULL)
gs_cmap_ToUnicode_add_pair(pdfont->cmap_ToUnicode, ch, unicode, length);
+ if (length > 2 && pdfont->u.simple.Encoding != NULL)
+ pdfont->TwoByteToUnicode = 0;
}
if (unicode)
gs_free_object(pdev->memory, unicode, "temporary Unicode array");
diff --git a/devices/vector/gdevpdtf.c b/devices/vector/gdevpdtf.c
index d14fa346..c823b18c 100644
--- a/devices/vector/gdevpdtf.c
+++ b/devices/vector/gdevpdtf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -572,6 +572,7 @@ font_resource_simple_alloc(gx_device_pdf *pdev, pdf_font_resource_t **ppfres,
pfres->u.simple.BaseEncoding = -1;
pfres->u.simple.preferred_encoding_index = -1;
pfres->u.simple.last_reserved_char = -1;
+ pfres->TwoByteToUnicode = 1;
*ppfres = pfres;
return 0;
}
diff --git a/devices/vector/gdevpdtf.h b/devices/vector/gdevpdtf.h
index 4a9e8961..f0006641 100644
--- a/devices/vector/gdevpdtf.h
+++ b/devices/vector/gdevpdtf.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -203,6 +203,15 @@ struct pdf_font_resource_s {
gs_cmap_t *cmap_ToUnicode; /* CMap (not used for CIDFonts) */
gs_glyph_mark_proc_t mark_glyph;
void *mark_glyph_data; /* closure data */
+
+ /* We use this when determining whether we should use an existing ToUnicode
+ * CMap or just use the Encoding, for s aimple font. Even if the Encoding
+ * only uses named glyphs, with names we can understand, the original
+ * ToUnicode may have mapped these in a non-standard way.
+ * See Bug #702201 where the ffi ligature is mapped to 3 code points
+ */
+ int TwoByteToUnicode;
+
union {
struct /*type0*/ {
@@ -253,7 +262,6 @@ struct pdf_font_resource_s {
gs_point *v; /* [256], glyph origin for WMode 1 */
int last_reserved_char; /* Except for synthesised Type 3,
which stores such data in LastChar */
-
gs_glyph standard_glyph_code_for_notdef;
union {
diff --git a/devices/vector/gdevpdti.c b/devices/vector/gdevpdti.c
index 7ba56fd6..0205604a 100644
--- a/devices/vector/gdevpdti.c
+++ b/devices/vector/gdevpdti.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -479,7 +479,9 @@ pdf_end_char_proc(gx_device_pdf * pdev, pdf_stream_position_t * ppos)
stream *s;
gs_offset_t start_pos, end_pos, length;
- pdf_end_encrypt(pdev);
+ if (pdf_end_encrypt(pdev))
+ s_close_filters(&pdev->strm, pdev->strm->strm);
+
s = pdev->strm;
start_pos = ppos->start_pos;
end_pos = stell(s);
diff --git a/devices/vector/gdevpdti.h b/devices/vector/gdevpdti.h
index 65e1efcb..81409e67 100644
--- a/devices/vector/gdevpdti.h
+++ b/devices/vector/gdevpdti.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdts.c b/devices/vector/gdevpdts.c
index 055aeb44..aa41f516 100644
--- a/devices/vector/gdevpdts.c
+++ b/devices/vector/gdevpdts.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -81,11 +81,6 @@ append_text_move(pdf_text_state_t *pts, double dw)
rounded = floor(dw + 0.5);
if (fabs(dw - rounded) < 0.001)
dw = rounded;
- if (dw < -MAX_USER_COORD) {
- /* Acrobat reader 4.0c, 5.0 can't handle big offsets.
- Adobe Reader 6 can. */
- return -1;
- }
if (dw != 0) {
if (count == MAX_TEXT_BUFFER_MOVES)
return -1;
@@ -173,47 +168,11 @@ add_text_delta_move(gx_device_pdf *pdev, const gs_matrix *pmat)
* for the xhow and once for the Width override. Otherwise, we do
* want to use TJ as it makes for smaller files.
*/
- if (pts->can_use_TJ && dnotw == 0 && pts->buffer.count_chars > 0 &&
- /*
- * Acrobat Reader limits the magnitude of user-space
- * coordinates. Also, AR apparently doesn't handle large
- * positive movement values (negative X displacements), even
- * though the PDF Reference says this bug was fixed in AR3.
- *
- * Old revisions used the upper threshold 1000 for tdw,
- * but it appears too big when a font sets a too big
- * character width in setcachedevice. Particularly this happens
- * with a Type 3 font generated by Aldus Freehand 4.0
- * to represent a texture - see bug #687051.
- * The problem is that when the Widths is multiplied
- * to the font size, the viewer represents the result
- * with insufficient fraction bits to represent the precise width.
- * We work around that problem here restricting tdw
- * with a smaller threshold 990. Our intention is to
- * disable Tj when the real glyph width appears smaller
- * than 1% of the width specified in setcachedevice.
- * A Td instruction will be generated instead.
- * Note that the value 990 is arbitrary and may need a
- * further adjustment.
- */
- /* Revised the above. It seems unreasonable to use a fixed
- * value which is not based on the point size, when the problem is
- * caused by a large point size being multiplied by the width. The
- * original fix also caused bitmap fonts (from PCL and other sources)
- * to fail to use kerning, as these fonts are scaled to 1 point and
- * therefore use large kerning values. Instead we check the kerned value
- * multiplied by the point size of the font.
- */
- (tdw >= -MAX_USER_COORD && (tdw * pts->in.size) < MAX_USER_COORD)
- ) {
+ if (pts->can_use_TJ && dnotw == 0 && pts->buffer.count_chars > 0) {
/* Use TJ. */
int code;
- if (tdw < MAX_USER_COORD || pdev->CompatibilityLevel > 1.4)
- code = append_text_move(pts, tdw);
- else
- return -1;
-
+ code = append_text_move(pts, tdw);
if (code >= 0)
goto finish;
}
diff --git a/devices/vector/gdevpdts.h b/devices/vector/gdevpdts.h
index cde7a3c8..b3699eb2 100644
--- a/devices/vector/gdevpdts.h
+++ b/devices/vector/gdevpdts.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtt.c b/devices/vector/gdevpdtt.c
index f248e998..5884115e 100644
--- a/devices/vector/gdevpdtt.c
+++ b/devices/vector/gdevpdtt.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtt.h b/devices/vector/gdevpdtt.h
index cf3b7625..9a710151 100644
--- a/devices/vector/gdevpdtt.h
+++ b/devices/vector/gdevpdtt.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtv.c b/devices/vector/gdevpdtv.c
index eb9a18fe..a16a48d7 100644
--- a/devices/vector/gdevpdtv.c
+++ b/devices/vector/gdevpdtv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtv.h b/devices/vector/gdevpdtv.h
index 89502365..5e27ecd1 100644
--- a/devices/vector/gdevpdtv.h
+++ b/devices/vector/gdevpdtv.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtw.c b/devices/vector/gdevpdtw.c
index be3c874d..6d197bd5 100644
--- a/devices/vector/gdevpdtw.c
+++ b/devices/vector/gdevpdtw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -119,6 +119,9 @@ pdf_simple_font_needs_ToUnicode(const pdf_font_resource_t *pdfont)
In this circumstance, write the ToUnicode map to get a searchable PDF.
*/
return true;
+ if (!pdfont->TwoByteToUnicode)
+ return true;
+
for (ch = 0; ch < 256; ++ch) {
pdf_encoding_element_t *pet = &pdfont->u.simple.Encoding[ch];
gs_glyph glyph = pet->glyph;
@@ -136,6 +139,7 @@ pdf_simple_font_needs_ToUnicode(const pdf_font_resource_t *pdfont)
if( glyph > GS_C_PDF_MAX_GOOD_GLYPH ||
!(gs_c_pdf_glyph_type[glyph >> 2] & (mask << (( glyph & 3 )<<1) )))
return true;
+
}
return false;
}
diff --git a/devices/vector/gdevpdtw.h b/devices/vector/gdevpdtw.h
index 4ff32453..34feeed2 100644
--- a/devices/vector/gdevpdtw.h
+++ b/devices/vector/gdevpdtw.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpdtx.h b/devices/vector/gdevpdtx.h
index 92374aa0..d5fe6177 100644
--- a/devices/vector/gdevpdtx.h
+++ b/devices/vector/gdevpdtx.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsdf.h b/devices/vector/gdevpsdf.h
index 5047f43a..a20c61b0 100644
--- a/devices/vector/gdevpsdf.h
+++ b/devices/vector/gdevpsdf.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -194,7 +194,7 @@ extern const stream_template s_zlibE_template;
500000, /* ImageMemory */ \
0, /* LockDistillerParams (false) */ \
0, /* LZWEncodePages (false) */ \
- 1, /* Overprintmode (OPM) */ \
+ 0, /* Overprintmode (OPM) */ \
0, /* PreserveOPIComments (false) */ \
1, /* UseFlateCompression (true) */ \
/* Color processing parameters */\
@@ -332,8 +332,7 @@ extern_st(st_device_psdf);
params.MonoImage.Dict),\
GC_OBJ_ELT2(gx_device_psdf, params.AlwaysEmbed.data,\
params.NeverEmbed.data),\
- GC_CONST_STRING_ELT(gx_device_psdf, params.PSDocOptions),\
- GC_OBJ_ELT(gx_device_psdf, params.PSPageOptions.data)\
+ GC_CONST_STRING_ELT(gx_device_psdf, params.PSDocOptions)\
};\
gs_public_st_basic_super_final(st_device_psdf, gx_device_psdf,\
"gx_device_psdf", device_psdf_ptrs, device_psdf_data,\
diff --git a/devices/vector/gdevpsdi.c b/devices/vector/gdevpsdi.c
index 9c2adb72..f093edf1 100644
--- a/devices/vector/gdevpsdi.c
+++ b/devices/vector/gdevpsdi.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -529,7 +529,7 @@ setup_downsampling(psdf_binary_writer * pbw, const psdf_image_params * pdip,
ss->params.EntireWidthIn = ss->params.WidthIn = ss->params.PatchWidthIn = pim->Width;
ss->params.EntireHeightIn = ss->params.HeightIn = ss->params.PatchHeightIn = pim->Height;
ss->params.EntireWidthOut = ss->params.WidthOut = ss->params.PatchWidthOut = s_Downsample_size_out(pim->Width, factor, false);
- ss->params.EntireHeightOut = ss->params.HeightOut = s_Downsample_size_out(pim->Height, factor, false);
+ ss->params.EntireHeightOut = ss->params.HeightOut = ss->params.PatchHeightOut = ss->params.PatchHeightOut2 = s_Downsample_size_out(pim->Height, factor, false);
/* Bug #697944 The code below to apply the downsampling filter always
* resizes the input data to the filter with 8BPC and then resizes the output back to whatever
@@ -539,8 +539,8 @@ setup_downsampling(psdf_binary_writer * pbw, const psdf_image_params * pdip,
ss->params.BitsPerComponentIn = ss->params.BitsPerComponentOut = 8;
ss->params.spp_interp = ss->params.spp_decode = Colors;
- ss->params.TopMarginIn = ss->params.TopMarginOut = ss->params.LeftMarginIn = ss->params.LeftMarginOut = 0;
- ss->params.src_y_offset = 0;
+ ss->params.TopMarginIn = ss->params.TopMarginOut = ss->params.TopMarginOut2 = ss->params.LeftMarginIn = ss->params.LeftMarginOut = 0;
+ ss->params.src_y_offset = ss->params.pad_y = 0;
ss->params.early_cm = true;
ss->params.MaxValueIn = ss->params.MaxValueOut = (int)pow(2, pdip->Depth);
diff --git a/devices/vector/gdevpsdp.c b/devices/vector/gdevpsdp.c
index bda3fe2a..c8a48ee5 100644
--- a/devices/vector/gdevpsdp.c
+++ b/devices/vector/gdevpsdp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -232,7 +232,7 @@ static const gs_param_item_t psdf_param_items[] = {
/* (DefaultRenderingIntent) */
pi("DetectBlends", gs_param_type_bool, DetectBlends),
pi("DoThumbnails", gs_param_type_bool, DoThumbnails),
- pi("ImageMemory", gs_param_type_long, ImageMemory),
+ pi("ImageMemory", gs_param_type_size_t, ImageMemory),
/* (LockDistillerParams) */
pi("LZWEncodePages", gs_param_type_bool, LZWEncodePages),
pi("OPM", gs_param_type_int, OPM),
@@ -625,6 +625,10 @@ gdev_psdf_get_params(gx_device * dev, gs_param_list * plist)
if (code < 0)
return code;
+ code = param_write_string_array(plist, "PSPageOptions", &pdev->params.PSPageOptions);
+ if (code < 0)
+ return code;
+
code = psdf_write_name(plist, "CannotEmbedFontPolicy",
CannotEmbedFontPolicy_names[(int)pdev->params.CannotEmbedFontPolicy]);
@@ -1040,6 +1044,65 @@ psdf_put_image_params(const gx_device_psdf * pdev, gs_param_list * plist,
return ecode;
}
+/* This is a convenience routine. There doesn't seem to be any way to have a param_string_array
+ * enumerated for garbage collection, and we have (currently) three members of the psdf_distiller_params
+ * structure which store param_string_array. If the interpreter is using garbage collection then there
+ * is the potential for the array, or its contents, to be relocated or freed while we are still
+ * maintaining pointers to them, unless we enumerate the pointers.
+ * Instead, we'll copy the string data from the interpreter, make our own param_string_array, and
+ * manage the memory ourselves. This allows us to move the data into non-GC memory which is preferable
+ * anyway.
+ */
+static int psdf_copy_param_string_array(gs_memory_t *mem, gs_param_list * plist, gs_param_string_array *sa, gs_param_string_array *da)
+{
+ int code;
+
+ if (sa->size > 0) {
+ int ix;
+ byte **dest;
+
+ if (da->data != NULL) {
+ for (ix = 0; ix < da->size;ix++)
+ gs_free_object(mem->non_gc_memory, (byte *)da->data[ix].data, "freeing old string array copy");
+ gs_free_object(mem->non_gc_memory, (byte *)da->data, "freeing old string array");
+ }
+ da->data = (const gs_param_string *)gs_alloc_bytes(mem->non_gc_memory, sa->size * sizeof(gs_param_string), "allocate new string array");
+ if (da->data == NULL)
+ return_error(gs_note_error(gs_error_VMerror));
+ memset((byte *)da->data, 0x00, sa->size * sizeof(gs_param_string));
+ da->size = sa->size;
+ da->persistent = false;
+
+ for(ix=0;ix < sa->size;ix++) {
+ ((gs_param_string *)&da->data[ix])->data = gs_alloc_bytes(mem->non_gc_memory, sa->data[ix].size, "allocate new strings");
+ if (da->data[ix].data == NULL)
+ return_error(gs_note_error(gs_error_VMerror));
+ memcpy((byte *)(da->data[ix].data), sa->data[ix].data, sa->data[ix].size);
+ ((gs_param_string *)&da->data[ix])->size = sa->data[ix].size;
+ ((gs_param_string *)&da->data[ix])->persistent = false;
+ }
+ gs_free_object(plist->memory, (byte *)sa->data, "freeing temporary param string array");
+ sa->data = NULL;
+ sa->size = 0;
+ }
+ return 0;
+}
+
+static int psdf_read_copy_param_string_array(gs_memory_t *mem, gs_param_list * plist, char *Key, gs_param_string_array *da)
+{
+ gs_param_string_array sa;
+ int code;
+
+ code = param_read_embed_array(plist, Key, &sa);
+ if (code < 0)
+ return code;
+
+ if(sa.size)
+ code = psdf_copy_param_string_array(mem, plist, &sa, da);
+
+ return code;
+}
+
/* Put parameters. */
int
gdev_psdf_put_params(gx_device * dev, gs_param_list * plist)
@@ -1076,6 +1139,8 @@ gdev_psdf_put_params(gx_device * dev, gs_param_list * plist)
params.MonoImage.ACSDict = params.MonoImage.Dict = 0;
params.AlwaysEmbed.data = params.NeverEmbed.data = 0;
params.AlwaysEmbed.size = params.AlwaysEmbed.persistent = params.NeverEmbed.size = params.NeverEmbed.persistent = 0;
+ params.PSPageOptions.data = NULL;
+ params.PSPageOptions.size = 0;
}
/* General parameters. */
@@ -1184,6 +1249,7 @@ gdev_psdf_put_params(gx_device * dev, gs_param_list * plist)
&params.AlwaysEmbed, mem, ecode);
ecode = psdf_put_embed_param(plist, "~NeverEmbed", ".NeverEmbed",
&params.NeverEmbed, mem, ecode);
+
params.CannotEmbedFontPolicy = (enum psdf_cannot_embed_font_policy)
psdf_put_enum(plist, "CannotEmbedFontPolicy",
(int)params.CannotEmbedFontPolicy,
@@ -1199,7 +1265,7 @@ gdev_psdf_put_params(gx_device * dev, gs_param_list * plist)
if (code < 0)
goto exit;
- code = param_read_embed_array(plist, "PSPageOptions", &params.PSPageOptions);
+ code = psdf_read_copy_param_string_array(pdev->memory, plist, "PSPageOptions", &params.PSPageOptions);
if (code < 0)
goto exit;
@@ -1208,6 +1274,14 @@ gdev_psdf_put_params(gx_device * dev, gs_param_list * plist)
exit:
if (!(pdev->params.LockDistillerParams && params.LockDistillerParams)) {
/* Only update the device paramters if there was no error */
+ /* If we have any copied param_string_arrays, start by freeing them */
+ if (pdev->params.PSPageOptions.size && params.PSPageOptions.size) {
+ int ix;
+
+ for (ix = 0; ix < pdev->params.PSPageOptions.size;ix++)
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data[ix].data, "freeing old string array copy");
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data, "freeing old string array");
+ }
pdev->params = params;
} else {
/* We read a bunch of parameters and are now throwing them away. Either because there
@@ -1216,10 +1290,15 @@ exit:
*/
gs_memory_t *stable_mem = gs_memory_stable(mem);
- if (params.NeverEmbed.data != 0)
- gs_free_object(stable_mem, (void *)params.NeverEmbed.data, "free dummy param NeverEmbed");
- if (params.AlwaysEmbed.data != 0)
- gs_free_object(stable_mem, (void *)params.AlwaysEmbed.data, "free dummy param AlwaysEmbed");
+ if (params.PSPageOptions.data != NULL) {
+ int ix;
+
+ for (ix = 0; ix < pdev->params.PSPageOptions.size;ix++)
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data[ix].data, "freeing dummy PSPageOptions");
+ gs_free_object(mem->non_gc_memory, (byte *)pdev->params.PSPageOptions.data, "freeing dummy PSPageOptions");
+ params.PSPageOptions.data = NULL;
+ params.PSPageOptions.size = 0;
+ }
if (params.CalCMYKProfile.data != 0)
gs_free_string(stable_mem, (void *)params.CalCMYKProfile.data, params.CalCMYKProfile.size, "free dummy param CalCMYKProfile");
if (params.CalGrayProfile.data != 0)
diff --git a/devices/vector/gdevpsds.c b/devices/vector/gdevpsds.c
index 65bbf544..bc932902 100644
--- a/devices/vector/gdevpsds.c
+++ b/devices/vector/gdevpsds.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -822,7 +822,8 @@ s_Bicubic_data_at(stream_Bicubic_state *const ss, int x, int y, int c)
y = ss->HeightIn - 1;
y -= ss->y_in;
idx = ss->l_size * (y < 0 ? 0 : y) +
- (x < 0 ? 0 : x >= ss->WidthIn ? ss->WidthIn-1 : x) * ss->Colors + c;
+ (size_t)(x < 0 ? 0 : x >= ss->WidthIn ? ss->WidthIn-1 : x) *
+ ss->Colors + c;
return (idx < ss->d_len) ? ss->data[idx] : 0;
}
@@ -952,7 +953,8 @@ s_compr_chooser_set_dimensions(stream_compr_chooser_state * ss, int width,
ss->height = height;
ss->depth = depth;
ss->bits_per_sample = bits_per_sample;
- ss->sample = gs_alloc_bytes(ss->memory, width * depth, "s_compr_chooser_set_dimensions");
+ ss->sample = gs_alloc_bytes(ss->memory, (size_t)width * depth,
+ "s_compr_chooser_set_dimensions");
if (ss->sample == 0)
return_error(gs_error_VMerror);
return 0;
diff --git a/devices/vector/gdevpsds.h b/devices/vector/gdevpsds.h
index 35a756f0..207e54c4 100644
--- a/devices/vector/gdevpsds.h
+++ b/devices/vector/gdevpsds.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsdu.c b/devices/vector/gdevpsdu.c
index d626358a..c4be6ac0 100644
--- a/devices/vector/gdevpsdu.c
+++ b/devices/vector/gdevpsdu.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsf.h b/devices/vector/gdevpsf.h
index 275e526d..9105eb86 100644
--- a/devices/vector/gdevpsf.h
+++ b/devices/vector/gdevpsf.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsf1.c b/devices/vector/gdevpsf1.c
index 7e167b45..feed79eb 100644
--- a/devices/vector/gdevpsf1.c
+++ b/devices/vector/gdevpsf1.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsf2.c b/devices/vector/gdevpsf2.c
index 985cd25e..3c38e988 100644
--- a/devices/vector/gdevpsf2.c
+++ b/devices/vector/gdevpsf2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -703,7 +703,7 @@ cff_write_Top_fdarray(cff_writer_t *pcw, gs_font_base *pbfont,
gs_font_info_t info;
cff_get_Top_info_common(pcw, pbfont, false, &info);
- cff_write_Top_common(pcw, pbfont, false, &info);
+ cff_write_Top_common(pcw, pbfont, true, &info);
cff_put_int(pcw, Private_size);
cff_put_int_value(pcw, Private_offset, TOP_Private);
if (pfname->size == 0)
diff --git a/devices/vector/gdevpsfm.c b/devices/vector/gdevpsfm.c
index fea025ef..b38266c2 100644
--- a/devices/vector/gdevpsfm.c
+++ b/devices/vector/gdevpsfm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsft.c b/devices/vector/gdevpsft.c
index 970a3149..9bc00312 100644
--- a/devices/vector/gdevpsft.c
+++ b/devices/vector/gdevpsft.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsfu.c b/devices/vector/gdevpsfu.c
index 157c7bab..e848bdc8 100644
--- a/devices/vector/gdevpsfu.c
+++ b/devices/vector/gdevpsfu.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsfx.c b/devices/vector/gdevpsfx.c
index b839f9e8..43459327 100644
--- a/devices/vector/gdevpsfx.c
+++ b/devices/vector/gdevpsfx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsu.c b/devices/vector/gdevpsu.c
index 094ff945..5e3e5a2b 100644
--- a/devices/vector/gdevpsu.c
+++ b/devices/vector/gdevpsu.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpsu.h b/devices/vector/gdevpsu.h
index 70cceeaf..c62ed8c6 100644
--- a/devices/vector/gdevpsu.h
+++ b/devices/vector/gdevpsu.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevpx.c b/devices/vector/gdevpx.c
index a1fce1b7..5195339f 100644
--- a/devices/vector/gdevpx.c
+++ b/devices/vector/gdevpx.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/gdevtxtw.c b/devices/vector/gdevtxtw.c
index 87f9355d..d46a935e 100644
--- a/devices/vector/gdevtxtw.c
+++ b/devices/vector/gdevtxtw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -34,6 +34,7 @@
#include "gxdevsop.h"
#include "gzpath.h"
#include "gdevkrnlsclass.h" /* 'standard' built in subclasses, currently First/Last Page and obejct filter */
+#include "gxchar.h"
/* #define TRACE_TXTWRITE 1 */
@@ -73,6 +74,7 @@ typedef struct text_list_entry_s {
gs_point end;
gs_point FontBBox_bottomleft, FontBBox_topright;
float *Widths;
+ float *Advs;
unsigned short *Unicode_Text;
int Unicode_Text_Size;
int render_mode;
@@ -140,10 +142,14 @@ static dev_proc_dev_spec_op(txtwrite_dev_spec_op);
/* Define the text enumerator. */
typedef struct textw_text_enum_s {
gs_text_enum_common;
+ gs_text_enum_t *pte_fallback;
+ double d1_width;
+ bool d1_width_set;
bool charproc_accum;
bool cdevproc_callout;
double cdevproc_result[10];
float *Widths;
+ float *Advs;
unsigned short *TextBuffer;
int TextBufferIndex;
text_list_entry_t *text_state;
@@ -289,7 +295,7 @@ txtwrite_close_device(gx_device * dev)
}
#ifdef TRACE_TXTWRITE
- fclose(tdev->DebugFile);
+ gp_fclose(tdev->DebugFile);
#endif
return code;
}
@@ -339,14 +345,14 @@ static int merge_vertically(gx_device_txtwrite_t *tdev)
to = y_list->x_ordered_list;
from = next->x_ordered_list;
#ifdef TRACE_TXTWRITE
- fprintf(tdev->DebugFile, "\nConsolidating two horizontal lines, line 1:");
+ gp_fprintf(tdev->DebugFile, "\nConsolidating two horizontal lines, line 1:");
debug_x = from;
while (debug_x) {
gp_fprintf(tdev->DebugFile, "\n\t");
gp_fwrite(debug_x->Unicode_Text, sizeof(unsigned short), debug_x->Unicode_Text_Size, tdev->DebugFile);
debug_x = debug_x->next;
}
- fprintf(tdev->DebugFile, "\nConsolidating two horizontal lines, line 2");
+ gp_fprintf(tdev->DebugFile, "\nConsolidating two horizontal lines, line 2");
debug_x = to;
while (debug_x) {
gp_fprintf(tdev->DebugFile, "\n\t");
@@ -384,14 +390,14 @@ static int merge_vertically(gx_device_txtwrite_t *tdev)
}
y_list->x_ordered_list = new_order;
#ifdef TRACE_TXTWRITE
- fprintf(tdev->DebugFile, "\nAfter:");
+ gp_fprintf(tdev->DebugFile, "\nAfter:");
debug_x = new_order;
while (debug_x) {
gp_fprintf(tdev->DebugFile, "\n\t");
gp_fwrite(debug_x->Unicode_Text, sizeof(unsigned short), debug_x->Unicode_Text_Size, tdev->DebugFile);
debug_x = debug_x->next;
}
- fprintf(tdev->DebugFile, "\n");
+ gp_fprintf(tdev->DebugFile, "\n");
#endif
y_list->next = next->next;
if (next->next)
@@ -830,6 +836,46 @@ static int decorated_text_output(gx_device_txtwrite_t *tdev)
return 0;
}
+static int extract_text_output(gx_device_txtwrite_t *tdev)
+{
+ text_list_entry_t* entry;
+ gp_fprintf(tdev->file, "<page>\n");
+ for (entry = tdev->PageData.unsorted_text_list;
+ entry;
+ entry = entry->next
+ ) {
+ float x = entry->start.x;
+ int i;
+ gp_fprintf(tdev->file,
+ "<span bbox=\"%0.4f %0.4f %0.4f %0.4f\" font=\"%s\" size=\"%0.4f\">\n",
+ entry->start.x,
+ entry->start.y,
+ entry->end.x,
+ entry->end.y,
+ entry->FontName,
+ entry->size
+ );
+ for (i=0; i<entry->Unicode_Text_Size; i++) {
+ float x_next = x + entry->Widths[i];
+ char escaped[32];
+ escaped_Unicode(entry->Unicode_Text[i], escaped);
+ gp_fprintf(tdev->file,
+ "<char bbox=\"%0.4f %0.4f %0.4f %0.4f\" c=\"%s\" adv=\"%0.4f\"/>\n",
+ x,
+ entry->start.y,
+ x_next,
+ entry->end.y,
+ escaped,
+ entry->Advs[i]
+ );
+ x = x_next;
+ }
+ gp_fprintf(tdev->file, "</span>\n");
+ }
+ gp_fprintf(tdev->file, "</page>\n");
+ return 0;
+}
+
static int
txtwrite_output_page(gx_device * dev, int num_copies, int flush)
{
@@ -866,6 +912,12 @@ txtwrite_output_page(gx_device * dev, int num_copies, int flush)
return code;
break;
+ case 4:
+ code = extract_text_output(tdev);
+ if (code < 0)
+ return code;
+ break;
+
default:
return gs_note_error(gs_error_rangecheck);
break;
@@ -882,6 +934,7 @@ txtwrite_output_page(gx_device * dev, int num_copies, int flush)
while (x_entry) {
gs_free(tdev->memory, x_entry->Unicode_Text, x_entry->Unicode_Text_Size, sizeof (usnigned short), "txtwrite free text fragment text buffer");
gs_free(tdev->memory, x_entry->Widths, x_entry->Unicode_Text_Size, sizeof (float), "txtwrite free widths array");
+ gs_free(tdev->memory, x_entry->Advs, x_entry->Unicode_Text_Size, sizeof (float), "txtwrite free advs array");
gs_free(tdev->memory, x_entry->FontName, 1, strlen(x_entry->FontName) + 1, "txtwrite free Font Name");
if (x_entry->next) {
x_entry = x_entry->next;
@@ -907,6 +960,7 @@ txtwrite_output_page(gx_device * dev, int num_copies, int flush)
next_x = x_entry->next;
gs_free(tdev->memory, x_entry->Unicode_Text, x_entry->Unicode_Text_Size, sizeof (usnigned short), "txtwrite free unsorted text fragment text buffer");
gs_free(tdev->memory, x_entry->Widths, x_entry->Unicode_Text_Size, sizeof (float), "txtwrite free widths array");
+ gs_free(tdev->memory, x_entry->Advs, x_entry->Unicode_Text_Size, sizeof (float), "txtwrite free advs array");
gs_free(tdev->memory, x_entry->FontName, 1, strlen(x_entry->FontName) + 1, "txtwrite free Font Name");
gs_free(tdev->memory, x_entry, 1, sizeof(text_list_entry_t), "txtwrite free unsorted text fragment");
x_entry = next_x;
@@ -1487,6 +1541,9 @@ get_missing_width(gs_font *font, int wmode, const gs_matrix *scale_c,
FONT_INFO_MISSING_WIDTH, &finfo);
if (code < 0)
return code;
+ if (!(finfo.members & FONT_INFO_MISSING_WIDTH))
+ return_error(gs_error_undefined);
+
if (wmode) {
gs_distance_transform(0.0, -finfo.MissingWidth, scale_c, &pwidths->real_width.xy);
pwidths->Width.xy.x = 0;
@@ -1561,7 +1618,7 @@ txt_glyph_widths(gs_font *font, int wmode, gs_glyph glyph,
&& (code == gs_error_undefined || !(info.members & (GLYPH_INFO_WIDTH0 << wmode)))) {
code = get_missing_width(font, wmode, &scale_c, pwidths);
if (code < 0)
- v.y = 0;
+ return code;
else
v.y = pwidths->Width.v.y;
if (wmode && (ofont->FontType == ft_CID_encrypted ||
@@ -1812,11 +1869,11 @@ static int get_unicode(textw_text_enum_t *penum, gs_font *font, gs_glyph glyph,
#else
b = (char *)Buffer;
u = (char *)unicode;
- while (l >= 0) {
- *b++ = *(u + l);
- l--;
- }
+ for (l=0;l<length;l+=2, u+=2){
+ *b++ = *(u+1);
+ *b++ = *u;
+ }
#endif
gs_free_object(penum->dev->memory, unicode, "free temporary unicode buffer");
return length / sizeof(short);
@@ -1930,27 +1987,33 @@ txtwrite_process_plain_text(gs_text_enum_t *pte)
uint operation = pte->text.operation;
txt_glyph_widths_t widths;
gs_point wanted; /* user space */
- gs_point dpt = {0,0};
- for (i=0;i<pte->text.size;i++) {
+ for (i=pte->index;i<pte->text.size;i++) {
+ gs_point dpt = {0,0};
if (operation & (TEXT_FROM_STRING | TEXT_FROM_BYTES)) {
- ch = pte->text.data.bytes[pte->index++];
+ ch = pte->text.data.bytes[pte->index];
} else if (operation & (TEXT_FROM_CHARS | TEXT_FROM_SINGLE_CHAR)) {
- ch = pte->text.data.chars[pte->index++];
+ ch = pte->text.data.chars[pte->index];
} else if (operation & (TEXT_FROM_GLYPHS | TEXT_FROM_SINGLE_GLYPH)) {
if (operation & TEXT_FROM_GLYPHS) {
gdata = pte->text.data.glyphs + (pte->index++ * sizeof (gs_glyph));
} else {
gdata = &pte->text.data.d_glyph;
- pte->index++;
}
}
glyph = (gdata == NULL ? pte->orig_font->procs.encode_char(pte->orig_font, ch, GLYPH_SPACE_NAME)
: *gdata);
code = txt_glyph_widths(font, font->WMode, glyph, (gs_font *)font, &widths, NULL);
- if (code < 0)
- return code;
+ if (code < 0) {
+ if (penum->d1_width_set) {
+ widths.Width.w = widths.Width.xy.x = widths.real_width.w = widths.real_width.xy.x = penum->d1_width;
+ penum->d1_width = 0;
+ penum->d1_width_set = 0;
+ }
+ else
+ return code;
+ }
penum->cdevproc_callout = false;
code = txt_update_text_state(penum->text_state, (textw_text_enum_t *)pte, pte->orig_font, &font->FontMatrix);
@@ -1963,7 +2026,8 @@ txtwrite_process_plain_text(gs_text_enum_t *pte)
&penum->text_state->matrix, &wanted);
pte->returned.total_width.x += wanted.x;
pte->returned.total_width.y += wanted.y;
- penum->Widths[pte->index - 1] = wanted.x;
+ penum->Widths[penum->TextBufferIndex] = wanted.x;
+ penum->Advs[penum->TextBufferIndex] = wanted.x;
if (pte->text.operation & TEXT_ADD_TO_ALL_WIDTHS) {
gs_point tpt;
@@ -1984,8 +2048,20 @@ txtwrite_process_plain_text(gs_text_enum_t *pte)
pte->returned.total_width.x += dpt.x;
pte->returned.total_width.y += dpt.y;
- penum->TextBufferIndex += get_unicode(penum, (gs_font *)pte->orig_font, glyph, ch, &penum->TextBuffer[penum->TextBufferIndex]);
- penum->Widths[pte->index - 1] += dpt.x;
+ penum->Widths[penum->TextBufferIndex] += dpt.x;
+ code = get_unicode(penum, (gs_font *)pte->orig_font, glyph, ch, &penum->TextBuffer[penum->TextBufferIndex]);
+ /* If a single text code returned multiple Unicode values, then we need to set the
+ * 'extra' code points' widths to 0.
+ */
+ if (code > 1) {
+ memset(&penum->Widths[penum->TextBufferIndex + 1], 0x00, (code - 1) * sizeof(float));
+ memset(&penum->Advs[penum->TextBufferIndex + 1], 0x00, (code - 1) * sizeof(float));
+ }
+ penum->TextBufferIndex += code;
+/* gs_moveto_aux(penum->pgs, gx_current_path(penum->pgs),
+ fixed2float(penum->origin.x) + wanted.x + dpt.x,
+ fixed2float(penum->origin.y) + wanted.y + dpt.y);*/
+ pte->index++;
}
return 0;
}
@@ -2020,7 +2096,7 @@ txt_add_sorted_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum)
/* Already have text at this y-position */
text_list_entry_t *X_List = Y_List->x_ordered_list;
- while (X_List->next && X_List->start.x < penum->text_state->start.x)
+ while (X_List->next && X_List->start.x <= penum->text_state->start.x)
X_List = X_List->next;
if (X_List->start.x > penum->text_state->start.x) {
@@ -2095,6 +2171,20 @@ txt_add_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum)
{
text_list_entry_t *unsorted_entry, *t;
+#ifdef TRACE_TXTWRITE
+ gp_fprintf(tdev->DebugFile, "txt_add_fragment: ");
+ gp_fwrite(penum->TextBuffer, sizeof(unsigned short), penum->TextBufferIndex, tdev->DebugFile);
+ gp_fprintf(tdev->DebugFile, "\n");
+ {
+ int i=0;
+ gp_fprintf(tdev->DebugFile, "widths:");
+ for (i=0; i<penum->TextBufferIndex; ++i) {
+ gp_fprintf(tdev->DebugFile, " %f", penum->Widths[i]);
+ }
+ gp_fprintf(tdev->DebugFile, "\n");
+ }
+#endif
+
/* Create a duplicate entry for the unsorted list */
unsorted_entry = (text_list_entry_t *)gs_malloc(tdev->memory->stable_memory, 1,
sizeof(text_list_entry_t), "txtwrite alloc sorted text state");
@@ -2122,8 +2212,14 @@ txt_add_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum)
penum->TextBufferIndex, sizeof(float), "txtwrite alloc widths array");
if (!penum->text_state->Widths)
return gs_note_error(gs_error_VMerror);
+ penum->text_state->Advs = (float *)gs_malloc(tdev->memory->stable_memory,
+ penum->TextBufferIndex, sizeof(float), "txtwrite alloc widths array");
+ if (!penum->text_state->Advs)
+ return gs_note_error(gs_error_VMerror);
memset(penum->text_state->Widths, 0x00, penum->TextBufferIndex * sizeof(float));
- memcpy(penum->text_state->Widths, penum->Widths, penum->text.size * sizeof(float));
+ memcpy(penum->text_state->Widths, penum->Widths, penum->TextBufferIndex * sizeof(float));
+ memset(penum->text_state->Advs, 0x00, penum->TextBufferIndex * sizeof(float));
+ memcpy(penum->text_state->Advs, penum->Advs, penum->TextBufferIndex * sizeof(float));
unsorted_entry->Unicode_Text = (unsigned short *)gs_malloc(tdev->memory->stable_memory,
penum->TextBufferIndex, sizeof(unsigned short), "txtwrite alloc sorted text buffer");
@@ -2135,8 +2231,14 @@ txt_add_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum)
penum->TextBufferIndex, sizeof(float), "txtwrite alloc widths array");
if (!unsorted_entry->Widths)
return gs_note_error(gs_error_VMerror);
+ unsorted_entry->Advs = (float *)gs_malloc(tdev->memory->stable_memory,
+ penum->TextBufferIndex, sizeof(float), "txtwrite alloc widths array");
+ if (!unsorted_entry->Advs)
+ return gs_note_error(gs_error_VMerror);
memset(unsorted_entry->Widths, 0x00, penum->TextBufferIndex * sizeof(float));
- memcpy(unsorted_entry->Widths, penum->Widths, penum->text.size * sizeof(float));
+ memcpy(unsorted_entry->Widths, penum->Widths, penum->TextBufferIndex * sizeof(float));
+ memset(unsorted_entry->Advs, 0x00, penum->TextBufferIndex * sizeof(float));
+ memcpy(unsorted_entry->Advs, penum->Advs, penum->TextBufferIndex * sizeof(float));
unsorted_entry->FontName = (char *)gs_malloc(tdev->memory->stable_memory,
(strlen(penum->text_state->FontName) + 1), sizeof(unsigned char), "txtwrite alloc sorted text buffer");
@@ -2175,10 +2277,20 @@ textw_text_process(gs_text_enum_t *pte)
gs_font *font = pte->orig_font;
gs_font_base *font_base = (gs_font_base *)pte->current_font;
int code = 0;
+ gs_text_enum_t *pte_fallback;
if (pte->text.size == 0)
return 0;
+ pte_fallback = penum->pte_fallback;
+ if (pte_fallback) {
+ code = gx_default_text_restore_state(pte_fallback);
+ if (code < 0)
+ return code;
+ gs_text_release(pte_fallback, "txtwrite_text_process");
+ }
+ pte_fallback = penum->pte_fallback = NULL;
+
if (!penum->TextBuffer) {
/* We can get up to 4 Unicode points per glyph, and a glyph can be
* be represented by as little as one byte. So we make a very large
@@ -2192,9 +2304,13 @@ textw_text_process(gs_text_enum_t *pte)
if (!penum->TextBuffer)
return gs_note_error(gs_error_VMerror);
penum->Widths = (float *)gs_malloc(tdev->memory->stable_memory,
- pte->text.size, sizeof(float), "txtwrite temporary widths array");
+ pte->text.size * 4, sizeof(float), "txtwrite temporary widths array");
if (!penum->Widths)
return gs_note_error(gs_error_VMerror);
+ penum->Advs = (float *)gs_malloc(tdev->memory->stable_memory,
+ pte->text.size * 4, sizeof(float), "txtwrite temporary advs array");
+ if (!penum->Advs)
+ return gs_note_error(gs_error_VMerror);
}
{
switch (font->FontType) {
@@ -2217,6 +2333,8 @@ textw_text_process(gs_text_enum_t *pte)
break;
}
if (code == 0) {
+ penum->d1_width = 0;
+ penum->d1_width_set = false;
if (font_base->FontBBox.p.x != font_base->FontBBox.q.x ||
font_base->FontBBox.p.y != font_base->FontBBox.q.y) {
gs_point p0, p1, p2, p3;
@@ -2239,6 +2357,29 @@ textw_text_process(gs_text_enum_t *pte)
return code;
code = txt_add_fragment(tdev, penum);
+ } else {
+ if (code == gs_error_unregistered) /* Debug purpose only. */
+ return code;
+ if (code == gs_error_VMerror)
+ return code;
+ if (code == gs_error_invalidfont) /* Bug 688370. */
+ return code;
+ /* Fall back to the default implementation. */
+ code = gx_default_text_begin(pte->dev, pte->pgs, &pte->text, pte->current_font,
+ pte->path, pte->pdcolor, pte->pcpath, pte->memory, &pte_fallback);
+ if (code < 0)
+ return code;
+ penum->pte_fallback = pte_fallback;
+ gs_text_enum_copy_dynamic(pte_fallback, pte, false);
+
+ code = gs_text_process(pte_fallback);
+ if (code != 0) {
+ penum->returned.current_char = pte_fallback->returned.current_char;
+ penum->returned.current_glyph = pte_fallback->returned.current_glyph;
+ return code;
+ }
+ gs_text_release(pte_fallback, "txtwrite_text_process");
+ penum->pte_fallback = 0;
}
}
return code;
@@ -2271,6 +2412,11 @@ textw_text_set_cache(gs_text_enum_t *pte, const double *pw,
switch (control) {
case TEXT_SET_CHAR_WIDTH:
case TEXT_SET_CACHE_DEVICE:
+ if (penum->pte_fallback != NULL) {
+ penum->d1_width = *pw;
+ penum->d1_width_set = true;
+ return 0;
+ }
return gs_text_set_cache(pte, pw, control);
case TEXT_SET_CACHE_DEVICE2:
if (penum->cdevproc_callout) {
@@ -2355,6 +2501,9 @@ txtwrite_text_begin(gx_device * dev, gs_gstate * pgs,
penum->TextBuffer = NULL;
penum->TextBufferIndex = 0;
penum->Widths = NULL;
+ penum->pte_fallback = NULL;
+ penum->d1_width = 0;
+ penum->d1_width_set = false;
/* The enumerator's text_release method frees this memory */
penum->text_state = (text_list_entry_t *)gs_malloc(tdev->memory->stable_memory, 1,
sizeof(text_list_entry_t), "txtwrite alloc text state");
diff --git a/devices/vector/gdevxps.c b/devices/vector/gdevxps.c
index 5d98c283..8eb26196 100644
--- a/devices/vector/gdevxps.c
+++ b/devices/vector/gdevxps.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
@@ -1868,7 +1868,7 @@ xps_begin_image(gx_device *dev, const gs_gstate *pgs,
rc_increment(pcs);
code = dev_proc(dev, get_profile)(dev, &(dev_profile));
/* Just use the "default" profile for now */
- icc_profile = dev_profile->device_profile[0];
+ icc_profile = dev_profile->device_profile[GS_DEFAULT_DEVICE_PROFILE];
force8bit = true; /* Output image is 8 bit regardless of source */
} else {
/* An ICC, RGB, CMYK, Gray color space */
diff --git a/devices/vector/opdfread.ps b/devices/vector/opdfread.ps
index cff0498e..e0d6f112 100644
--- a/devices/vector/opdfread.ps
+++ b/devices/vector/opdfread.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-2.0
%
-% Copyright (C) 2001-2019 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -46,25 +46,44 @@
% ====================== Error handler =======================
% A general error handler prints an error to page.
-currentdict /DSC_OPDFREAD known {
- % See if our notification from ps2write is present. If it is
- % then pick it up. Otherwise define it as false. Used to prevent
- % use of setmatrix at start of each page. The DSC-compliant
- % output from ps2write wraps pages in a save/restore, so we don't
- % need the setmatrix, and it breaks use of psnup with the output.
-
- currentdict /DSC_OPDFREAD get
-}{
- false
+% At this point if we have been written by the (e)ps2write device, there will
+% be a dictionary on the operand stack which contains some flags controlling the
+% later behaviour of this ProcSet. Be aware that this dictionary is present until
+% it is processed by the main dictionary handling at line 155 of this file, it is
+% important to make sure this dictionary is preserved, and remains top of the stack
+% when we reach that point.
+% For safety, the code between now and that point which also uses that configuration
+% information must check to see that the operand stack has at least one operand and that
+% its a dictionary, and must preserve that dictionary if it uses it.
+
+% Determine whether to create a custom error handler.
+% Check to see there's at least one object on the stack,
+% and that said object is a dicitonary. If either is not true
+% then create a custom error handler. If there is a dictionary,
+% assume its the 'global config' dictionary written by ps2write
+% (this should always be true!) and look to see if it has a
+% EPS2Write key. If it does get it. If EPS2Write is true then
+% don't create a custom error handler. If it is false or not present
+% then do create a custom error handler.
+count 0 ne {
+ dup type /dicttype eq {
+ dup /EPS2Write known {
+ dup /EPS2Write get not
+ }
+ {
+ true
+ }ifelse
+ }
+ {
+ true
+ } ifelse
+}
+{
+ true
} ifelse
10 dict begin % A dictionary for local binding
-% This switch used to control paeg independent values, like
-% whether to use InitialMatrix in SetupPageView
-%
-/DSC_OPDFREAD exch def
-
/this currentdict def
/y 720 def
/ebuf 200 string def
@@ -79,63 +98,86 @@ currentdict /DSC_OPDFREAD known {
//this /y 2 copy get 12 sub put
} bind def
-errordict /handleerror
-{ systemdict begin
- $error begin
- newerror
- { (%%[ Error handled by opdfread.ps : ) print errorname //ebuf cvs print (; OffendingCommand: )
- print /command load //ebuf cvs print ( ]%%) = flush
- /newerror false store vmstatus pop pop 0 ne
- { grestoreall
- } if
- errorname (VMerror) ne
- { showpage
- } if
- initgraphics
- 0 720 moveto
- errorname (VMerror) eq
- { //this /ehsave known
- { clear //this /ehsave get restore 2 vmreclaim
+% We only actually create and push the custom error handler if we are not an EPS.
+{
+ errordict /handleerror
+ { systemdict begin
+ $error begin
+ newerror
+ { (%%[ Error handled by opdfread.ps : ) print errorname //ebuf cvs print (; OffendingCommand: )
+ print /command load //ebuf cvs print ( ]%%) = flush
+ /newerror false store vmstatus pop pop 0 ne
+ { grestoreall
} if
- vmstatus exch pop exch pop
- }
- /Courier 12 selectfont
- {
- (ERROR: ) //prnt exec errorname //prnt exec
- (OFFENDING COMMAND: ) //prnt exec
- /command load //prnt exec
- $error /ostack known {
- (%%[STACK:) =
- (STACK:) //prnt exec
- $error /ostack get aload length {
- //newline exec
- dup mark eq {
- (-mark-) dup = show
- } {
- dup type /nametype eq {
- dup xcheck not {
- (/) show
- (/) print
- } if
- } if
- dup = //ebuf cvs show
- } ifelse
- } repeat
+ errorname (VMerror) ne
+ { showpage
} if
- } ifelse
- (%%]%) =
- //systemdict /showpage get exec
- quit
- } if
- end
- end
-} bind readonly put
+ initgraphics
+ 0 720 moveto
+ errorname (VMerror) eq
+ { //this /ehsave known
+ { clear //this /ehsave get restore 2 vmreclaim
+ } if
+ vmstatus exch pop exch pop
+ }
+ /Courier 12 selectfont
+ {
+ (ERROR: ) //prnt exec errorname //prnt exec
+ (OFFENDING COMMAND: ) //prnt exec
+ /command load //prnt exec
+ $error /ostack known {
+ (%%[STACK:) =
+ (STACK:) //prnt exec
+ $error /ostack get aload length {
+ //newline exec
+ dup mark eq {
+ (-mark-) dup = show
+ } {
+ dup type /nametype eq {
+ dup xcheck not {
+ (/) show
+ (/) print
+ } if
+ } if
+ dup = //ebuf cvs show
+ } ifelse
+ } repeat
+ } if
+ } ifelse
+ (%%]%) =
+ //systemdict /showpage get exec
+ quit
+ } if
+ end
+ end
+ } bind readonly put
+} if
end % A dictionary for local binding
-
50 dict begin
+% Read the definitions of various global parameters from the dictionary
+% written at the head of the file by ps2write, and define the parameters
+% in this dictionary. Check first to make sure we have a dictionary on the
+% stack; if we do, assume its the 'global configuration' dictionary.
+count 0 ne {
+ dup type /dicttype eq {
+ {def} forall
+ false
+ }
+ {
+ true
+ } ifelse
+}
+{
+ true
+} ifelse
+
+{
+ ( *** Warning: global definitions dictionary not found, file may be corrupted.\n) print flush
+} if
+
% ===================== Debugging =========================================
/DefaultSwitch % <name> DefaultSwitch -
@@ -4176,7 +4218,10 @@ currentdict end readonly def
} bind def
/ShowText % <string> ShowText -
-{ //GraphicState /TextRenderingMode get 0 eq {
+{
+ //GraphicState /TextRenderingMode get dup 0 eq
+ exch 3 eq not currentfont /FontType get 3 eq and or
+ {
//GraphicState /WordSpacing get 0
32
//GraphicState /CharacterSpacing get 0
@@ -4236,13 +4281,28 @@ currentdict end readonly def
} bind def
/ShowTextBeg % - ShowTextBeg -
-{ //GraphicState /TextRenderingMode get 0 ne {
- currentpoint newpath moveto
- } if
+{
+ //GraphicState /TextRenderingMode get dup 0 ne
+ {
+ 3 ne
+ currentfont /FontType get 3 eq not and {
+ currentpoint newpath moveto
+ } if
+ }
+ {
+ pop
+ } ifelse
} bind def
/ShowTextEnd % - ShowTextEnd -
-{ //GraphicState /TextRenderingMode get
+{
+ //GraphicState /TextRenderingMode get
+ currentfont /FontType get 3 eq {
+ dup 3 ne {
+ pop 0
+ } if
+ }if
+
{ dup 1 eq {
stroke exit
} if
diff --git a/devices/vector/whitelst.c b/devices/vector/whitelst.c
index 652926f4..af4c14fc 100644
--- a/devices/vector/whitelst.c
+++ b/devices/vector/whitelst.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or
diff --git a/devices/vector/whitelst.h b/devices/vector/whitelst.h
index 2e562fd8..a566da54 100644
--- a/devices/vector/whitelst.h
+++ b/devices/vector/whitelst.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2019 Artifex Software, Inc.
+/* Copyright (C) 2001-2020 Artifex Software, Inc.
All Rights Reserved.
This software is provided AS-IS with no warranty, either express or