⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gs_statd.ps

📁 GhostScript的源代码
💻 PS
字号:
%    Copyright (C) 1989, 1996, 1997, 1998 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.

% $Id: gs_statd.ps $
% 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 .forcedef		% statusdict is local, sys'dict global
	% To support the Level 2 job control features,
	% serverdict must also be in local VM.
 /serverdict 10 dict .forcedef		% serverdict is local, sys'dict global
 .setglobal
end

% 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 { /statusdict .systemvar begin .setpagesize end } bind def
userdict begin
		% Page sizes defined by Adobe documentation
 /11x17 {792 1224 //.setpagesize exec} bind def  % 11x17 portrait
 /a3 {842 1190 //.setpagesize exec} bind def
 /a4 {595 842 //.setpagesize exec} bind def
% a4small should be a4 with an ImagingBBox of [25 25 570 817].
 /a4small /a4 load def
 /b5 {501 709 //.setpagesize exec} bind def
 /ledger {1224 792 //.setpagesize exec} bind def  % 11x17 landscape
 /legal {612 1008 //.setpagesize exec} bind def
 /letter {612 792 //.setpagesize exec} bind def
% lettersmall should be letter with an ImagingBBox of [25 25 587 767].
 /lettersmall /letter load def
% note should be letter (or some other size) with the ImagingBBox
% shrunk by 25 units on all 4 sides.
 /note /letter load def
		% End of Adobe-defined page sizes
STRICT { (%END) .skipeof } if
		% Other page sizes
	% ISO standard paper sizes
 /a0 {2380 3368 //.setpagesize exec} bind def
 /a1 {1684 2380 //.setpagesize exec} bind def
 /a2 {1190 1684 //.setpagesize exec} bind def
% /a3 {842 1190 //.setpagesize exec} bind def	% defined by Adobe
% /a4 {595 842 //.setpagesize exec} bind def	% defined by Adobe
 /a5 {421 595 //.setpagesize exec} bind def
 /a6 {297 421 //.setpagesize exec} bind def
 /a7 {210 297 //.setpagesize exec} bind def
 /a8 {148 210 //.setpagesize exec} bind def
 /a9 {105 148 //.setpagesize exec} bind def
 /a10 {74 105 //.setpagesize exec} bind def
 /b0 {2836 4008 //.setpagesize exec} bind def
 /b1 {2004 2836 //.setpagesize exec} bind def
 /b2 {1418 2004 //.setpagesize exec} bind def
 /b3 {1002 1418 //.setpagesize exec} bind def
 /b4 {709 1002 //.setpagesize exec} bind def
% /b5 {501 709 //.setpagesize exec} bind def	% defined by Adobe
 /c0 {2600 3677 //.setpagesize exec} bind def
 /c1 {1837 2600 //.setpagesize exec} bind def
 /c2 {1298 1837 //.setpagesize exec} bind def
 /c3 {918 1298 //.setpagesize exec} bind def
 /c4 {649 918 //.setpagesize exec} bind def
 /c5 {459 649 //.setpagesize exec} bind def
 /c6 {323 459 //.setpagesize exec} bind def
	% U.S. CAD standard paper sizes
 /archE {2592 3456 //.setpagesize exec} bind def
 /archD {1728 2592 //.setpagesize exec} bind def
 /archC {1296 1728 //.setpagesize exec} bind def
 /archB {864 1296 //.setpagesize exec} bind def
 /archA {648 864 //.setpagesize exec} bind def
	% Other paper sizes
 /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
% /tabloid {792 1224 //.setpagesize exec} bind def  % 11x17 portrait
% /csheet {1224 1584 //.setpagesize exec} bind def % ANSI C 17x22
% /dsheet {1584 2448 //.setpagesize exec} bind def % ANSI D 22x34
% /esheet {2448 3168 //.setpagesize exec} bind def % ANSI E 34x44
%END SIZES
end
currentdict /.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
% We don't implement the (undocumented by Adobe) papersize 'operator',
% because it's very awkward to make it interact properly with all the
% different ways of setting the paper size.
%/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, and subsequent 'compatibility'
%%%%%% documentation from Adobe.

 /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 {mark /Duplex 3 -1 roll currentdevice putdeviceprops} 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

% The following compatibility operators are only documented by Adobe in a
% supplement to the Red Book.
%
%	- pagemargin <offset>
%	- pageparams <width> <height> <offset> <orientation>
%	<width> <height> <orientation> setpage -
%	<offset> setpagemargin -
%	<width> <height> <offset> <orientation> setpageparams -
%
% width and height are in default units (and if orientation is odd, 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 convention that ORIENT1 determines the orientation value
% that means portait: false means 0, true means 1.

 /pagemargin { 0 } bind def
 /pageparams
  { currentdevice 1 dict dup /.MediaSize dup put .getdeviceparams
    exch pop exch pop aload pop 0 ORIENT1 { 1 } { 0 } ifelse
  } bind def
 /setpage
  { ORIENT1 { 1 } { 0 } ifelse ne {exch} if
    statusdict /.setpagesize get exec
  } bind def
 /setpagemargin {pop} bind def	% can't do better without setpagedevice
 /setpageparams
  { exch pop ORIENT1 { 1 } { 0 } ifelse ne {exch} if
    statusdict /.setpagesize get exec
  } 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.
%
%	<pixels_per_inch> setresolution -
%
% sets the resolution of the device.

 /setresolution
  { mark /HWResolution [ 4 -1 roll dup ] currentdevice putdeviceprops pop
    initmatrix erasepage
  } bind def
 /setsccbatch {pop pop pop} bind def
 /setsccinteractive {pop pop pop} bind def
 /settumble {pop} bind def
 /waittimeout 300 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] def
true setdostartpage
mark setidlefonts
0 setjobtimeout
0 0 setmargins
product 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -