henesyinit from p9fce6d0435 years agoHistory
234 lines · 8.8 KB · Text
RawDownload
%    Copyright (C) 1989, 90, 91, 92, 93, 94 Aladdin Enterprises.  All rights reserved.% % This file is part of Aladdin Ghostscript.% % Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author% or distributor accepts any responsibility for the consequences of using it,% or for whether it serves any particular purpose or works at all, unless he% or she says so in writing.  Refer to the Aladdin Ghostscript Free Public% License (the "License") for full details.% % Every copy of Aladdin Ghostscript must include a copy of the License,% normally in a plain ASCII text file named PUBLIC.  The License grants you% the right to copy, modify and redistribute Aladdin Ghostscript, but only% under certain conditions described in the License.  Among other things, the% License requires that the copyright notice and this notice be preserved on% all copies. % This file provides statusdict, serverdict, and assorted LaserWriter% operators, mostly for the benefit of poorly designed PostScript programs% that 'know' they are running on a LaserWriter. systemdict begin	% We make statusdict a little larger for Level 2 stuff.	% Note that it must be allocated in local VM. .currentglobal false .setglobal /statusdict 89 dict def	% To support the Level 2 job control features,	% serverdict must also be in local VM. /serverdict 10 dict def		% ditto .setglobalend % Define various paper formats.  The Adobe documentation defines only these:% 11x17, a3, a4, a4small, b5, ledger, legal, letter, lettersmall, note.% These procedures are also accessed as data structures during initialization,% so the page dimensions must be the first two elements of the procedure. /.setpagesize { //systemdict /statusdict get begin .setpagesize end } bind defuserdict begin /letter {612 792 //.setpagesize exec} bind def /note {540 720 //.setpagesize exec} bind def /legal {612 1008 //.setpagesize exec} bind def /a0 {2380 3368 //.setpagesize exec} bind def  % ISO standard /a1 {1684 2380 //.setpagesize exec} bind def  % ISO standard /a2 {1190 1684 //.setpagesize exec} bind def  % ISO standard /a3 {842 1190 //.setpagesize exec} bind def  % ISO standard /a4 {595 842 //.setpagesize exec} bind def  % ISO standard /a5 {421 595 //.setpagesize exec} bind def  % ISO standard /a6 {297 421 //.setpagesize exec} bind def  % ISO standard /a7 {210 297 //.setpagesize exec} bind def  % ISO standard /a8 {148 210 //.setpagesize exec} bind def  % ISO standard /a9 {105 148 //.setpagesize exec} bind def  % ISO standard /a10 {74 105 //.setpagesize exec} bind def  % ISO standard /b0 {2836 4008 //.setpagesize exec} bind def  % ISO standard /b1 {2004 2836 //.setpagesize exec} bind def  % ISO standard /b2 {1418 2004 //.setpagesize exec} bind def  % ISO standard /b3 {1002 1418 //.setpagesize exec} bind def  % ISO standard /b4 {709 1002 //.setpagesize exec} bind def  % ISO standard /b5 {501 709 //.setpagesize exec} bind def  % ISO standard /archE {2592 3456 //.setpagesize exec} bind def % U.S. CAD std /archD {1728 2592 //.setpagesize exec} bind def % U.S. CAD std /archC {1296 1728 //.setpagesize exec} bind def % U.S. CAD std /archB {864 1296 //.setpagesize exec} bind def  % U.S. CAD std /archA {648 864 //.setpagesize exec} bind def  % U.S. CAD std /flsa {612 936 //.setpagesize exec} bind def  % U.S. foolscap /flse {612 936 //.setpagesize exec} bind def  % European foolscap /halfletter {396 612 //.setpagesize exec} bind def /11x17 {792 1224 //.setpagesize exec} bind def  % 11x17 portrait /ledger {1224 792 //.setpagesize exec} bind def  % 11x17 landscapeendcurrentdict /.setpagesize undef statusdict begin % Define the pagetype values for the known page formats.% The values for all but letter and note are arbitrary./.pagetypenames { /letter /note /legal    /a0 /a1 /a2 /a3 /a4 /a5 /a6 /a7 /a8 /a9 /a10   /b0 /b1 /b2 /b3 /b4 /b5 /archE /archD /archC /archB /archA   /flsa /flse /halfletter /11x17 /ledger } cvlit readonly def %%%%%% The following items were suggested by a user as useful. % Permanent definitions /ramsize         4194304 def/hardwareiomode        0 def	/sethardwareiomode     {pop} bind def/softwareiomode        0 def	/setsoftwareiomode     {pop} bind def/dosysstart        false def	/setdosysstart         {pop} bind def/allowjobreset      true def	/setallowjobreset      {pop} bind def/defaultpaperfamily    0 def	/setdefaultpaperfamily {pop} bind def/defaultpapertray      0 def	/setdefaultpapertray   {pop} bind def/defaulttrayswitch false def	/setdefaulttrayswitch  {pop} bind def % Tray and format selection  /11x17tray userdict /11x17 get def /a3tray userdict /a3 get def /a4tray userdict /a4 get def /a5tray userdict /a5 get def /a6tray userdict /a6 get def /b4tray userdict /b4 get def /flsatray userdict /flsa get def /flsetray userdict /flse get def /halflettertray userdict /halfletter get def /ledgertray userdict /ledger get def /legaltray userdict /legal get def /lettertray userdict /letter get def % Per-job parameters /paperfamily 0 def	% 0 is US, 1 is European/papertray 1 def	/setpapertray {statusdict exch /papertray exch put} bind def /trayswitch false def	% paperout feeds from another tray/papersize {/letter true} bind def	% <name of paper size>, <short-edge-first-p>/appletalktype (LaserWriter) def %%%%%% The following items are defined in the PostScript Language%%%%%% Reference Manual, First Edition.  /checkpassword {statusdict begin .password eq end} bind def /defaulttimeouts {statusdict begin .timeouts aload pop end} bind def%/dostartpage /eescratch {pop 0} bind def /idlefonts {statusdict begin mark .idlefonts aload pop end} bind def /jobname () def%/jobtimeout /manualfeed false def /manualfeedtimeout 60 def /margins {statusdict begin .topmargin .leftmargin end} bind def /pagecount {4711} bind def /pagestackorder {false} bind def /pagetype 0 def /prefeed false def /printererror {pop pop} bind def /printername {statusdict /.printername get exch copy} bind def /processcolors /processcolors load def		% defined in systemdict /product product def		% product is defined in systemdict /revision revision def		% revision is defined in systemdict /sccbatch {pop 9600 0} bind def /sccinteractive {pop 9600 0} bind def /setdefaulttimeouts {statusdict begin .timeouts astore pop end} bind def /setdostartpage {statusdict exch /dostartpage exch put} bind def /setduplexmode {pop} bind def /seteescratch {pop pop} bind def /setidlefonts {] statusdict exch /.idlefonts exch put} bind def /setjobtimeout {statusdict exch /jobtimeout exch put} bind def /setmargins  { statusdict begin    /.leftmargin exch def /.topmargin exch def    end  } bind def /setpagetype  { statusdict begin      dup .pagetypenames exch get systemdict exch get exec      /pagetype exch def    end  } bind def /setpassword  {exch checkpassword    {statusdict exch /.password exch put true}    {pop false}   ifelse} bind def /setprintername  {dup length string copy statusdict exch /.printername exch put} bind def	% setresolution is not documented by Adobe, but some applications	% use it anyway, without testing whether or not it is present. /setresolution { pop } bind def /setsccbatch {pop pop pop} bind def /setsccinteractive {pop pop pop} bind def /waittimeout 300 def %%%%%% The following items are defined in subsequent%%%%%% documentation from Adobe. % setpage and setpageparams aren't properly documented by Adobe.%%	<width> <height> <orientation> setpage -%	<width> <height> <offset> <orientation> setpageparams -%% width and height are in default units (and if orientation is 1, are% exchanged!).  offset is the x margin, also in default units.% Unfortunately, because orientation is relative to the device paper feed,% it does not have a consistent meaning in terms of image orientation.% We follow the AGFA convention that orientation = 1 means portait.  /setpage {1 ne {exch} if .setpagesize} bind def /setpageparams {exch pop 1 ne {exch} if .setpagesize} bind def /settumble {pop} bind def %%%%%% End of documented items. /.setpagesize { mark /HWSize [     4 index 4 index matrix defaultmatrix dtransform     abs ceiling cvi exch abs ceiling cvi exch   ] currentdevice putdeviceprops pop pop pop   initmatrix initclip erasepage } bind def/.password 0 def/.timeouts [0 60 30] deftrue setdostartpagemark setidlefonts0 setjobtimeout0 0 setmarginsproduct setprintername end	% statusdict % The following contents of serverdict are a complete guess,% based on some observed LaserWriter boilerplate. serverdict begin  /execjob { } bind def% The Red Book implies that something like the following is% an appropriate definition of exitserver. /exitserver { clear stop } bind def% However, this interacts badly with our standard error handler,% so we override it with the following less appropriate definition. /exitserver { 0 ne { clear cleardictstack } if } bind def /setrealdevice { } bind def end	% serverdict