diff options
author | Reinhard Kotucha <reinhard.kotucha@web.de> | 2010-05-12 19:25:45 +0000 |
---|---|---|
committer | Reinhard Kotucha <reinhard.kotucha@web.de> | 2010-05-12 19:25:45 +0000 |
commit | dc55d4f5cde421a3704c183bc6ceb3fcdb6b0653 (patch) | |
tree | db0890c2f5f2714d527a42ad3fb7955ac5b1f545 /Master/tlpkg/tlgs/lib/uninfo.ps | |
parent | 053ead4487e776b05721ec15b941fe0bc1b7d513 (diff) |
tlgs: 8.70 => 8.71
git-svn-id: svn://tug.org/texlive/trunk@18215 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlgs/lib/uninfo.ps')
-rw-r--r--[-rwxr-xr-x] | Master/tlpkg/tlgs/lib/uninfo.ps | 440 |
1 files changed, 220 insertions, 220 deletions
diff --git a/Master/tlpkg/tlgs/lib/uninfo.ps b/Master/tlpkg/tlgs/lib/uninfo.ps index 49de744c08c..92a0e9e97e5 100755..100644 --- a/Master/tlpkg/tlgs/lib/uninfo.ps +++ b/Master/tlpkg/tlgs/lib/uninfo.ps @@ -1,220 +1,220 @@ -%!
-% Copyright (C) 1997 Aladdin Enterprises. 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.
-%
-% For more information about licensing, please refer to
-% http://www.ghostscript.com/licensing/. For information on
-% commercial licensing, go to http://www.artifex.com/licensing/ or
-% contact Artifex Software, Inc., 101 Lucas Valley Road #110,
-% San Rafael, CA 94903, U.S.A., +1(415)492-9861.
-
-% $Id: uninfo.ps 6300 2005-12-28 19:56:24Z giles $
-% uninfo.ps: Utilities for "printing" PostScript items, especially dictionaries
-% Usage:
-% (prefix-string) dict unprint
-
-% Maximum Print-Width
-/HSpwidth 80 def
-
-% any HScvs string
-/HScvs {
-% Number-Syntax
- dup type % stack: any /anytype
- dup /integertype eq 1 index /realtype eq or { pop
- 16 string cvs
- }{
-% Logical-Type
- dup /booleantype eq { pop
- 5 string cvs
- }{
-% Identifiers
- dup /nametype eq { pop
- dup length 1 add string
- dup 0 (/) putinterval
- exch 1 index 1 1 index length 1 sub getinterval cvs pop
- }{
-% Strings
- dup /stringtype eq { pop
-% ------- Compute Length
- 2 1 index { % stack: str len item
- dup 32 lt 1 index 126 gt or { % need 4
- pop 4 add
- }{
- dup 40 eq 1 index 41 eq or 1 index 92 eq or {
- pop 2 add
- }{
- pop 1 add
- } ifelse
- } ifelse
- } forall
-% ------- Allocate & Fill String
- string dup 0 (\() putinterval 1
- 3 -1 roll { % outstr pos item
- dup 32 lt 1 index 126 gt or {
- dup 7 le {
- 2 index 2 index (\\00) putinterval
- 8 3 index 3 index 3 add 1 getinterval cvrs
- }{
- dup 63 le {
- 2 index 2 index (\\0) putinterval
- 8 3 index 3 index 2 add 2 getinterval cvrs
- }{
- 2 index 2 index (\\) putinterval
- 8 3 index 3 index 1 add 3 getinterval cvrs
- } ifelse
- } ifelse
- pop 4 add
- }{
- dup 40 eq 1 index 41 eq or 1 index 92 eq or {
- 2 index 2 index (\\) putinterval
- exch 1 add exch
- } if
- 2 index exch 2 index exch put
- 1 add
- } ifelse
- } forall
- 1 index exch (\)) putinterval
- }{ exch pop
- dup length 1 add string
- dup 0 (-) putinterval
- exch 1 index 1 1 index length 1 sub getinterval cvs pop
- dup dup length 4 sub (-) putinterval
- 0 1 index length 3 sub getinterval
- } ifelse
- } ifelse
- } ifelse
- } ifelse
-} bind def
-
-% int HSpindent - indent-spaces
-/HSpindent {
- dup 0 gt {
- 1 1 3 -1 roll { pop ( ) print } for
- }{
- pop
- } ifelse
-} bind def
-
-% indent array HSaprint -> Print an Array
-/HSaprint {
- dup type /arraytype eq {
- ( [) print
- exch 1 add dup 1 add
- 3 -1 roll { % rind pos item
- HScvs dup length % rind pos str len
- dup 3 index add HSpwidth ge {
- (\n) print
- 3 index HSpindent
- 3 -1 roll pop
- 2 index add
- exch
- }{
- ( ) print
- 2 index add 1 add
- 3 -1 roll pop
- exch
- } ifelse
- print
- } forall
- ( ]) print
- pop pop
- }{
- ( ) print
- HScvs print pop
- } ifelse
- (\n) print
-} bind def
-
-% dict HSdnames dict names (creates sorted name-strings)
-/HSdnames {
-% Build namelist, stack: dic
- dup length 0 eq {
- []
- }{
- [ 1 index {
- pop dup type /nametype eq {
- dup length string cvs
- }{
- pop
- } ifelse
- } forall
- ]
-% Sort the namelist, stack: dic nam
- 0 1 2 index length 2 sub { % stack: dic nam I
- 2 copy get % stack: pre dic nam I nam[I]
- 1 index 1 add 1 4 index length 1 sub { % stack: dic nam I nam[I] J
- 3 index 1 index get % dic nam I S[I] J S[J]
- 2 index 1 index gt { % swap them
- 4 index 2 index 4 index put
- 4 index 4 index 2 index put
- 3 1 roll
- } if
- pop pop
- } for
- pop pop
- } for
- } ifelse
-} bind def
-
-% string:prefix dict:which unprint
-/unprint {
- HSdnames % pre dic nam
-% compute the maximum length
- 0 1 index { % pre dic nam maxlen nam[I]
- length 2 copy lt { exch } if pop
- } forall
-% Print out all the items, stack: pre dic nam maxlen
- (\n) print
- exch { % pre dic maxlen nam[I]
-% no prefix yet, -> flush right
- 3 index length 0 eq {
- dup length 2 index exch sub HSpindent
- }{
- 3 index print (/) print
- } ifelse
-% print the name
- dup print
-% prefix: fill up with blanks
- 3 index length 0 ne {
- dup length 2 index exch sub HSpindent
- } if
-% now print the item itself, stack: pre dic maxlen nam[I]
- 2 index 1 index cvn get dup type % stack: pre dic maxlen nam[i] item typ
-% Dict-Syntax
- dup /dicttype eq { pop % stack: pre dic maxlen nam[i] item
- ( ) print dup HScvs print
- 4 index length 0 eq { % brand new prefix
- 2 index string 0 1 5 index 1 sub { 1 index exch 32 put } for
- dup 4 index 4 index length sub 5 -1 roll putinterval
- }{
- 4 index length 1 add 2 index length add string
- dup 0 7 index putinterval
- dup 6 index length (/) putinterval
- dup 6 index length 1 add 5 -1 roll putinterval
- } ifelse
- exch unprint
- }{
- 3 -1 roll pop % tack: pre dic maxlen item typ
-% Array-Syntax
- dup /arraytype eq { pop % stack: pre dic maxlen item
- 3 index length dup 0 ne { 1 add } if 2 index add
- exch HSaprint
- }{ pop
- ( ) print
- HScvs print
- (\n) print
- } ifelse
- } ifelse
- } forall
- pop pop length -1 eq { (\n) print } if
-} bind def
-
-/currentpagedevice where { % check for currentpagedevice
- /currentpagedevice get exec () exch unprint
-} if
+%! +% Copyright (C) 1997 Aladdin Enterprises. 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. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id: uninfo.ps 6300 2005-12-28 19:56:24Z giles $ +% uninfo.ps: Utilities for "printing" PostScript items, especially dictionaries +% Usage: +% (prefix-string) dict unprint + +% Maximum Print-Width +/HSpwidth 80 def + +% any HScvs string +/HScvs { +% Number-Syntax + dup type % stack: any /anytype + dup /integertype eq 1 index /realtype eq or { pop + 16 string cvs + }{ +% Logical-Type + dup /booleantype eq { pop + 5 string cvs + }{ +% Identifiers + dup /nametype eq { pop + dup length 1 add string + dup 0 (/) putinterval + exch 1 index 1 1 index length 1 sub getinterval cvs pop + }{ +% Strings + dup /stringtype eq { pop +% ------- Compute Length + 2 1 index { % stack: str len item + dup 32 lt 1 index 126 gt or { % need 4 + pop 4 add + }{ + dup 40 eq 1 index 41 eq or 1 index 92 eq or { + pop 2 add + }{ + pop 1 add + } ifelse + } ifelse + } forall +% ------- Allocate & Fill String + string dup 0 (\() putinterval 1 + 3 -1 roll { % outstr pos item + dup 32 lt 1 index 126 gt or { + dup 7 le { + 2 index 2 index (\\00) putinterval + 8 3 index 3 index 3 add 1 getinterval cvrs + }{ + dup 63 le { + 2 index 2 index (\\0) putinterval + 8 3 index 3 index 2 add 2 getinterval cvrs + }{ + 2 index 2 index (\\) putinterval + 8 3 index 3 index 1 add 3 getinterval cvrs + } ifelse + } ifelse + pop 4 add + }{ + dup 40 eq 1 index 41 eq or 1 index 92 eq or { + 2 index 2 index (\\) putinterval + exch 1 add exch + } if + 2 index exch 2 index exch put + 1 add + } ifelse + } forall + 1 index exch (\)) putinterval + }{ exch pop + dup length 1 add string + dup 0 (-) putinterval + exch 1 index 1 1 index length 1 sub getinterval cvs pop + dup dup length 4 sub (-) putinterval + 0 1 index length 3 sub getinterval + } ifelse + } ifelse + } ifelse + } ifelse +} bind def + +% int HSpindent - indent-spaces +/HSpindent { + dup 0 gt { + 1 1 3 -1 roll { pop ( ) print } for + }{ + pop + } ifelse +} bind def + +% indent array HSaprint -> Print an Array +/HSaprint { + dup type /arraytype eq { + ( [) print + exch 1 add dup 1 add + 3 -1 roll { % rind pos item + HScvs dup length % rind pos str len + dup 3 index add HSpwidth ge { + (\n) print + 3 index HSpindent + 3 -1 roll pop + 2 index add + exch + }{ + ( ) print + 2 index add 1 add + 3 -1 roll pop + exch + } ifelse + print + } forall + ( ]) print + pop pop + }{ + ( ) print + HScvs print pop + } ifelse + (\n) print +} bind def + +% dict HSdnames dict names (creates sorted name-strings) +/HSdnames { +% Build namelist, stack: dic + dup length 0 eq { + [] + }{ + [ 1 index { + pop dup type /nametype eq { + dup length string cvs + }{ + pop + } ifelse + } forall + ] +% Sort the namelist, stack: dic nam + 0 1 2 index length 2 sub { % stack: dic nam I + 2 copy get % stack: pre dic nam I nam[I] + 1 index 1 add 1 4 index length 1 sub { % stack: dic nam I nam[I] J + 3 index 1 index get % dic nam I S[I] J S[J] + 2 index 1 index gt { % swap them + 4 index 2 index 4 index put + 4 index 4 index 2 index put + 3 1 roll + } if + pop pop + } for + pop pop + } for + } ifelse +} bind def + +% string:prefix dict:which unprint +/unprint { + HSdnames % pre dic nam +% compute the maximum length + 0 1 index { % pre dic nam maxlen nam[I] + length 2 copy lt { exch } if pop + } forall +% Print out all the items, stack: pre dic nam maxlen + (\n) print + exch { % pre dic maxlen nam[I] +% no prefix yet, -> flush right + 3 index length 0 eq { + dup length 2 index exch sub HSpindent + }{ + 3 index print (/) print + } ifelse +% print the name + dup print +% prefix: fill up with blanks + 3 index length 0 ne { + dup length 2 index exch sub HSpindent + } if +% now print the item itself, stack: pre dic maxlen nam[I] + 2 index 1 index cvn get dup type % stack: pre dic maxlen nam[i] item typ +% Dict-Syntax + dup /dicttype eq { pop % stack: pre dic maxlen nam[i] item + ( ) print dup HScvs print + 4 index length 0 eq { % brand new prefix + 2 index string 0 1 5 index 1 sub { 1 index exch 32 put } for + dup 4 index 4 index length sub 5 -1 roll putinterval + }{ + 4 index length 1 add 2 index length add string + dup 0 7 index putinterval + dup 6 index length (/) putinterval + dup 6 index length 1 add 5 -1 roll putinterval + } ifelse + exch unprint + }{ + 3 -1 roll pop % tack: pre dic maxlen item typ +% Array-Syntax + dup /arraytype eq { pop % stack: pre dic maxlen item + 3 index length dup 0 ne { 1 add } if 2 index add + exch HSaprint + }{ pop + ( ) print + HScvs print + (\n) print + } ifelse + } ifelse + } forall + pop pop length -1 eq { (\n) print } if +} bind def + +/currentpagedevice where { % check for currentpagedevice + /currentpagedevice get exec () exch unprint +} if |