Import sources from 2011-03-30 iso image - sys/lib
This commit is contained in:
parent
b41b903422
commit
e463eb4036
1144 changed files with 388460 additions and 0 deletions
221
sys/lib/ghostscript/pphs.ps
Executable file
221
sys/lib/ghostscript/pphs.ps
Executable file
|
@ -0,0 +1,221 @@
|
|||
% Copyright (C) 2001 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: pphs.ps,v 1.6 2003/08/08 18:45:05 ray Exp $
|
||||
% Print Linearized PDF hint streams
|
||||
|
||||
% Utilities
|
||||
/read1 { % <file> read1 <value>
|
||||
read not {
|
||||
(**** Unexpected EOF) = flush quit
|
||||
} if
|
||||
} bind def
|
||||
/read2 { % <file> read2 <value>
|
||||
dup read1 8 bitshift exch read1 add
|
||||
} bind def
|
||||
/read4 { % <file> read4 <value>
|
||||
dup read2 16 bitshift exch read2 add
|
||||
} bind def
|
||||
% Free variables: Bits, Bitsleft
|
||||
/readninit { % - <readninit> -
|
||||
/Bits 0 def
|
||||
/Bitsleft 0 def
|
||||
} bind def
|
||||
|
||||
/pdftoken { % <file> pdftoken <token>
|
||||
dup token pop
|
||||
dup type /nametype eq 1 index xcheck and {
|
||||
dup dup (<<) cvn eq exch ([) eq or {
|
||||
exec exch {
|
||||
dup pdftoken dup dup (>>) cvn eq exch (]) eq or {
|
||||
exch pop exec exit
|
||||
} if exch
|
||||
} loop
|
||||
} {
|
||||
exch pop
|
||||
} ifelse
|
||||
} {
|
||||
exch pop
|
||||
} ifelse
|
||||
} bind def
|
||||
/makemask { % <nbits> makemask <mask>
|
||||
1 exch bitshift 1 sub
|
||||
} bind def
|
||||
/readn { % <file> <nbits> readn <value>
|
||||
dup Bitsleft le {
|
||||
exch pop
|
||||
/Bitsleft Bitsleft 2 index sub def
|
||||
makemask Bits Bitsleft neg bitshift and
|
||||
} {
|
||||
Bitsleft makemask Bits and
|
||||
exch Bitsleft sub exch 1 index bitshift 3 1 roll
|
||||
/Bits 2 index read1 def /Bitsleft 8 def
|
||||
readn add
|
||||
} ifelse
|
||||
} bind def
|
||||
/sread { % <string> sread <file>
|
||||
0 () /SubFileDecode filter
|
||||
} bind def
|
||||
|
||||
/ptag { % <pre-tag> <proc> <post-tag> ptag -
|
||||
3 -1 roll print (: ) print
|
||||
exch exec
|
||||
( % ) print =
|
||||
} bind def
|
||||
|
||||
% Print the linearization parameters dictionary.
|
||||
/plpkeys <<
|
||||
/E (end of p. 1 objects)
|
||||
/L (total file length)
|
||||
/H (PHS start + length)
|
||||
/N (# of pages)
|
||||
/O (p. 1 object #)
|
||||
/T (offset of first main xref entry)
|
||||
>> def
|
||||
/plpdict { % <dict> plpdict -
|
||||
(<<) = plpkeys {
|
||||
2 index 2 index .knownget {
|
||||
% Stack: dict key label value
|
||||
( ) print 3 -1 roll ===only ( ) print ===only
|
||||
( % ) print =
|
||||
} {
|
||||
pop pop
|
||||
} ifelse
|
||||
} forall {
|
||||
plpkeys 2 index known {
|
||||
pop pop
|
||||
} {
|
||||
( ) print exch ===only ( ) print ===
|
||||
} ifelse
|
||||
} forall (>>) =
|
||||
} bind def
|
||||
|
||||
% Print the Page Offset Hint Table.
|
||||
/ppoht { % <npages> <file> ppoht -
|
||||
|
||||
20 dict begin
|
||||
/f exch def
|
||||
/npages exch def
|
||||
readninit
|
||||
|
||||
(1) { f read4 =only } (least # objs/page) ptag
|
||||
(2) { f read4 =only } (offset of p. 1 object (+PHS length if beyond PHS)) ptag
|
||||
(3) { f read2 dup =only /nb3 exch def } (# bits for # objs/page delta) ptag
|
||||
(4) { f read4 =only } (least # bytes/page) ptag
|
||||
(5) { f read2 dup =only /nb5 exch def } (# bits for # bytes/page delta) ptag
|
||||
(6) { f read4 =only } (least content stream offset-in-page) ptag
|
||||
(7) { f read2 dup =only /nb7 exch def } (# bits for content stream offset delta) ptag
|
||||
(8) { f read4 =only } (least content stream length) ptag
|
||||
(9) { f read2 dup =only /nb9 exch def } (# bits for content stream length delta) ptag
|
||||
(10) { f read2 dup =only /nb10 exch def } (# bits for # of shared obj refs) ptag
|
||||
(11) { f read2 dup =only /nb11 exch def } (# bits for shared obj indices) ptag
|
||||
(12) { f read2 dup =only /nb12 exch def } (# bits for shared obj ref pos numerators) ptag
|
||||
(13) { f read2 =only } (shared obj ref pos denominator) ptag
|
||||
|
||||
(*1) { [ npages { f nb3 readn } repeat ] ==only } (# objs/page deltas (see 1,3)) ptag
|
||||
(*2) { [ npages { f nb5 readn } repeat ] ==only } (# bytes/page deltas (see 4,5)) ptag
|
||||
(*3) { [ npages { f nb10 readn } repeat ] dup ==only /nso exch def } (# of shared obj refs (see 10)) ptag
|
||||
(*4) { [ nso { [ exch { f nb11 readn } repeat ] } forall ] ==only } (shared obj indices (see 11)) ptag
|
||||
(*5) { [ nso { [ exch { f nb12 readn } repeat ] } forall ] ==only } (shared obj ref pos numerators (see 12)) ptag
|
||||
(*6) { [ npages { f nb7 readn } repeat ] ==only } (content stream offset-in-page deltas (see 6,7)) ptag
|
||||
(*7) { [ npages { f nb9 readn } repeat ] ==only } (content stream length deltas (see 8,9)) ptag
|
||||
|
||||
end % temp dict
|
||||
|
||||
} bind def
|
||||
|
||||
% Print the Shared Objects Hint Table.
|
||||
/psoht { % <file> psoht -
|
||||
|
||||
20 dict begin
|
||||
/f exch def
|
||||
readninit
|
||||
|
||||
(1) { f read4 =only } (first shared obj #) ptag
|
||||
(2) { f read4 =only } (first shared obj offset (+PHS length if beyond PHS)) ptag
|
||||
(3) { f read4 dup =only /n3 exch def } (# of p. 1 shared objs) ptag
|
||||
(4) { f read4 dup =only /n4 exch def } (total # of shared objs) ptag
|
||||
(5) { f read2 dup =only /nb5 exch def } (# bits for # of shared objs/group) ptag
|
||||
(6) { f read4 =only } (least shared obj group length) ptag
|
||||
(7) { f read2 dup =only /nb7 exch def } (# bits for shared obj group length delta) ptag
|
||||
|
||||
/nse n4 def
|
||||
(*1) { [ nse { f nb7 readn } repeat ] ==only } (shared obj group length deltas (see 6,7)) ptag
|
||||
(*2) { [ nse { f 1 readn } repeat ] dup ==only /md5s exch def } (MD5 present?) ptag
|
||||
(*3:) = md5s {
|
||||
0 ne {
|
||||
( ) print f 16 string readstring pop
|
||||
(%stdout) (w) file dup 3 -1 roll writehexstring closefile () =
|
||||
} if
|
||||
} forall
|
||||
(*4) { [ nse { f nb5 readn } repeat ] ==only } (# objs/group (see 5)) ptag
|
||||
|
||||
end % temp dict
|
||||
|
||||
} bind def
|
||||
|
||||
% Print the Primary Hint Stream of a PDF file.
|
||||
/pphs { % <file> pphs -
|
||||
/pdf exch def
|
||||
|
||||
% Read the linearization parameter dictionary.
|
||||
{ pdf pdftoken /obj eq { exit } if } loop
|
||||
pdf pdftoken /lpdict exch def
|
||||
/lpdict type /dicttype eq { lpdict /Linearized known } { false } ifelse {
|
||||
(Not a linearized PDF file.) = stop
|
||||
} if
|
||||
|
||||
lpdict plpdict flush
|
||||
|
||||
% Read the primary hint stream.
|
||||
null {
|
||||
pdf pdftoken dup /stream eq { pop exit } if
|
||||
exch pop
|
||||
} loop
|
||||
/phsdict exch def
|
||||
% Remove Length if indirect reference.
|
||||
phsdict 0 known {
|
||||
phsdict 0 undef phsdict /Length undef
|
||||
} if
|
||||
(PHS: ) print phsdict === flush
|
||||
pdf 0 (endstream) /SubFileDecode filter
|
||||
dup 64000 string readstring pop exch closefile
|
||||
sread /phsdata exch def
|
||||
|
||||
% Decode the hint stream data if necessary.
|
||||
phsdict /Filter .knownget {
|
||||
phsdata exch filter
|
||||
dup 5000 string readstring pop exch closefile
|
||||
sread /phsdata exch def
|
||||
} if
|
||||
|
||||
% Adobe says we can assume /P = 0.
|
||||
(Page Offset Hint Table:) =
|
||||
lpdict /N get
|
||||
phsdata phsdict /S get string readstring pop sread
|
||||
ppoht
|
||||
(Shared Objects Hint Table:) =
|
||||
phsdata psoht
|
||||
} bind def
|
||||
|
||||
% Check for command line arguments.
|
||||
[ shellarguments
|
||||
{ ] dup length 1 eq
|
||||
{ 0 get (r) file dup pphs closefile }
|
||||
{ (Usage: pphs filename.pdf\n) print flush }
|
||||
ifelse
|
||||
}
|
||||
{ pop }
|
||||
ifelse
|
Loading…
Add table
Add a link
Reference in a new issue