home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / Demos / DE_FrameMaker / FrameMaker.app / fminit2.0 / next / makerprint.ps < prev    next >
Text File  |  1992-08-24  |  18KB  |  742 lines

  1. %-
  2. %- FrameMaker Postscript Prolog 3.0, for use with FrameMaker 3.0
  3. %- Copyright (c) 1986, 87, 88, 89, 90, 91 by Frame Technology, Inc.
  4. %- All rights reserved.
  5. %-
  6. %-
  7.  
  8. /landscape false def
  9.  
  10. /t300 [
  11.     0.000 0.006 0.011 0.017 0.022 0.028 0.033 0.039
  12.     0.045 0.050 0.056 0.061 0.067 0.073 0.078 0.084
  13.     0.089 0.095 0.101 0.117 0.133 0.148 0.164 0.179
  14.     0.195 0.210 0.225 0.240 0.255 0.270 0.285 0.299
  15.     0.314 0.329 0.344 0.359 0.374 0.389 0.404 0.419
  16.     0.435 0.451 0.466 0.482 0.498 0.513 0.529 0.544
  17.     0.560 0.576 0.591 0.610 0.632 0.654 0.677 0.699
  18.     0.721 0.744 0.766 0.788 0.821 0.866 0.911 0.955
  19.     1.000
  20. ] def
  21.  
  22. /t400 [
  23.     0.000 0.003 0.006 0.009 0.012 0.014 0.017 0.020
  24.     0.023 0.026 0.029 0.032 0.035 0.038 0.041 0.043
  25.     0.046 0.049 0.056 0.063 0.071 0.079 0.087 0.095
  26.     0.104 0.117 0.130 0.143 0.157 0.173 0.189 0.205
  27.     0.225 0.245 0.259 0.272 0.285 0.298 0.314 0.329
  28.     0.345 0.361 0.376 0.392 0.407 0.423 0.439 0.454
  29.     0.470 0.486 0.502 0.528 0.554 0.580 0.605 0.628
  30.     0.650 0.672 0.695 0.727 0.762 0.796 0.857 0.922
  31.     1.000
  32. ] def
  33.  
  34. /tlinear [
  35.     0.000 0.016 0.031 0.047 0.062 0.078 0.094 0.109
  36.     0.125 0.141 0.156 0.172 0.188 0.203 0.219 0.234
  37.     0.250 0.266 0.281 0.297 0.312 0.328 0.344 0.359
  38.     0.375 0.391 0.406 0.422 0.438 0.453 0.469 0.484
  39.     0.500 0.516 0.531 0.547 0.562 0.578 0.594 0.609
  40.     0.625 0.641 0.656 0.672 0.688 0.703 0.719 0.734
  41.     0.750 0.766 0.781 0.797 0.812 0.828 0.844 0.859
  42.     0.875 0.891 0.906 0.922 0.938 0.953 0.969 0.984
  43.     1.000
  44. ] def
  45.  
  46. /orgmatrix matrix def
  47. /savematrix {
  48.     orgmatrix currentmatrix pop
  49. } bind def
  50. /restorematrix {
  51.     orgmatrix setmatrix
  52. } bind def
  53.  
  54. /dmatrix matrix def
  55. /desiredpat 0 def
  56. /dpi    72 0 dmatrix defaultmatrix dtransform
  57.     dup mul exch   dup mul add   sqrt round
  58. def
  59. /freq dpi 18.75 div 8 div round dup 0 eq { pop 1 } if 8 mul dpi exch div def
  60. /sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
  61. /graymode true def
  62. /pats 16 array def
  63. /mymatrix matrix def
  64. /savedgray 0 def
  65. /F /fill load def
  66. /rc /rectclip load def
  67. /GS /gsave load def
  68. /GR /grestore load def
  69. /SL /setlinewidth load def
  70. /SC /setlinecap load def
  71. /CS { closepath S } bind def
  72. /A /strokepath load def
  73. /TR /translate load def
  74. /L /lineto load def
  75. /M /moveto load def
  76. /D /curveto load def
  77. /C /closepath load def
  78. /T { moveto show } bind def
  79. /smat { mymatrix currentmatrix pop } bind def
  80. /rmat { mymatrix setmatrix } bind def
  81. /sp { P exch get exec } bind def
  82.  
  83. systemdict /setshared known
  84.     { 300 dpi eq { /tran t300 def } { /tran t400 def } ifelse }
  85.     { /tran tlinear def }
  86.     ifelse
  87.  
  88. systemdict /xshow known not {
  89.     /xhow {
  90.         /pts exch def
  91.         /str exch def
  92.         0 1 str length 1 sub {
  93.             currentpoint 3 -1 roll str 1 index 1 getinterval show
  94.             3 1 roll moveto
  95.             pts exch get 0 rmoveto
  96.         } for
  97.     } bind def
  98. } {
  99.     /xhow {
  100.         checkink xshow
  101.     } bind def
  102. } ifelse
  103.  
  104. systemdict /xyshow known not {
  105.     /xyhow {
  106.         /pts exch def
  107.         /str exch def
  108.         0 1 str length 1 sub {
  109.             currentpoint 3 -1 roll str 1 index 1 getinterval show
  110.             3 1 roll moveto 2 mul
  111.             pts 1 index get pts 3 -1 roll 1 add get rmoveto
  112.         } for
  113.     } bind def
  114. } {
  115.     /xyhow {
  116.         checkink xyshow
  117.     } bind def
  118. } ifelse
  119.  
  120. % close clipping down to this rectangle
  121. % must be outside FrameDict
  122. /CR { % x y w h
  123.     %    4 copy errfile 5 1 roll (% % % % CR\n) fprintf
  124.     %    initclip
  125.     %    rectclip
  126.     initclip
  127.     newpath
  128.     4 2 roll M dup 0 exch rlineto exch 0 rlineto 0 exch neg rlineto
  129.     C clip newpath
  130. } bind def
  131.  
  132. %
  133. % XXX HACK -- These must live outside FrameDict, which is only active
  134. % when we are printing a page.
  135. %
  136.  
  137. /makecontextpattern { % data name index
  138.     exch pop
  139.     [null 8 1 /setpattern cvx] 4 array copy  dup % name data index array array
  140.     0 5 -1 roll put cvx                         % name index array
  141.     pats 3 1 roll put
  142. } def
  143.  
  144. %
  145. % Array of procedures which set the desired pattern number
  146. % when executed.
  147. %
  148. /P [ 0 1 15 { [ /desiredpat 3 -1 roll /store cvx ] cvx } for ] def
  149.  
  150. /patoffsetx 0 def
  151. /patoffsety 0 def
  152. /currentpat null def
  153.  
  154. /FrameDict 250 dict def    % declare FrameDict
  155.  
  156. %
  157. % Called at beginning of page.
  158. % Push FrameDict onto dictionary stack.
  159. %
  160. /FMBEGINPAGE {
  161.     FrameDict begin
  162. } def    % used infrequently, so no bind
  163. /FMENDPAGE {
  164.     end    % FrameDict -- should I assert this?
  165. } def    % used infrequently, so no bind
  166.  
  167. /FMLOCAL {
  168.     FrameDict begin
  169.     0 def % force a definition to make sure room in FrameDict for later
  170.     end % FrameDict
  171. } def % only used at startup, so no bind
  172.  
  173. % Put most defs into FrameDict.
  174. FrameDict begin
  175.  
  176. % Hack.  NXImage code generates underflows on some rotations.
  177. /NaN 0 def
  178.  
  179. /gstring 0 def
  180. /gfile 0 def
  181. /gindex 0 def
  182.  
  183. /orgxfer 0 def
  184. /yscale 0 def
  185. /xscale 0 def
  186.  
  187. %
  188. % Color Handling
  189. %
  190. %/FMPrintInColor true def
  191. /FMPrintInColor
  192.     systemdict /colorimage known
  193.     systemdict /currentcolortransfer known or
  194.     % FMwantcolorprinting is written into the PostScript stream by FrameMaker.
  195.     FMwantcolorprinting and
  196. def
  197.  
  198. FMPrintInColor {
  199.     /HUE 0 def
  200.     /SAT 0 def
  201.     /BRIGHT 0 def
  202.     % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
  203.     /Colors [
  204.         [0    0  ]    % black
  205.         [0    0  ]    % white
  206.         [0.00 1.0]    % red
  207.         [0.37 1.0]    % green
  208.         [0.60 1.0]    % blue
  209.         [0.50 1.0]    % cyan
  210.         [0.83 1.0]    % magenta
  211.         [0.16 1.0]    % comment
  212.     ] def
  213.  
  214.     /K {
  215.         Colors exch get dup
  216.         0 get /HUE exch store
  217.         1 get /BRIGHT exch store
  218.         HUE 0 eq BRIGHT 0 eq and {
  219.             1.0 SAT sub setgray
  220.         } {
  221.             HUE SAT BRIGHT sethsbcolor
  222.         } ifelse
  223.     } def
  224.     /KT /K load def
  225.     /mysetgray {
  226.         /SAT exch 1.0 exch sub store
  227.         HUE 0 eq BRIGHT 0 eq and {
  228.             1.0 SAT sub setgray
  229.         } {
  230.             HUE SAT BRIGHT sethsbcolor
  231.         } ifelse
  232.     } bind def
  233. } {
  234.     /mysetgray /setgray load def
  235.     /K /pop load def
  236.     /KT /pop load def
  237. } ifelse
  238.  
  239. %
  240. % pattern filling has to use setgray, so we keep track of what the
  241. % gray value should really be.
  242. %
  243. /G { /savedgray exch def savedgray mysetgray } def
  244.  
  245. /setpattern { % <0F1E3C78F0E1C387> 8 1
  246.     %     orgfreq organgle orgproc cvx setscreen
  247.     /bwidth  exch def
  248.     /bpside  exch def
  249.     /bstring exch def
  250.     /onbits 0 def
  251.     /offbits 0 def
  252.     freq sangle landscape {90 add} if
  253.     {
  254.         /y exch def
  255.         /x exch def
  256.         /xindex x 1 add 2 div bpside mul cvi def
  257.         /yindex y 1 add 2 div bpside mul cvi def
  258.         bstring yindex bwidth mul xindex 8 idiv add get
  259.         1 7 xindex 8 mod sub bitshift and 0 ne
  260.         {/onbits  onbits  1 add def 1}
  261.         {/offbits offbits 1 add def 0}
  262.         ifelse
  263.     } setscreen
  264.     tran offbits 64 mul offbits onbits add div cvi get mysetgray
  265. } bind def
  266.  
  267.  
  268. /myfonts [] def
  269. /procarray 30 array def
  270. 3.86 setmiterlimit
  271.  
  272. currentscreen cvlit
  273. /orgproc exch def
  274. /organgle exch def /orgfreq exch def
  275. /currentpat -1 def
  276.  
  277.  
  278. %
  279. % make sure we are setup for the current desired pattern fill
  280. %
  281. /checkpat {
  282.     graymode currentpat desiredpat ne or {
  283.         pats desiredpat get exec
  284.         /graymode false store
  285.         /currentpat desiredpat store
  286.     } if
  287. } bind def
  288.  
  289. /Z { checkpat fill } bind def
  290.  
  291. %
  292. % make sure we are setup to gray ink
  293. %
  294. /checkink {
  295.     graymode not {
  296.         orgfreq organgle orgproc cvx setscreen
  297.         /graymode true store
  298.         savedgray mysetgray
  299.     } if
  300. } bind def
  301.  
  302.  
  303. /F {
  304.     checkink fill
  305. } bind def
  306.  
  307. /dorectfill {
  308.     checkink rectfill
  309. } bind def
  310.  
  311. /dorectstroke {
  312.     checkink rectstroke
  313. } bind def
  314.  
  315. /S {
  316.     checkink stroke
  317. } bind def
  318.  
  319.  
  320. /FmEncoding [
  321. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  322. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  323. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  324. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  325. /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
  326. /numbersign /dollar /percent /ampersand /quotesingle /parenleft
  327. /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
  328. /two /three /four /five /six /seven /eight /nine /colon /semicolon
  329. /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
  330. /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
  331. /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
  332. /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
  333. /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
  334. /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
  335. /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
  336. /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
  337. /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
  338. /udieresis /dagger /.notdef /cent /sterling /section /bullet
  339. /paragraph /germandbls /registered /copyright /trademark /acute
  340. /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
  341. /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  342. /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
  343. /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
  344. /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
  345. /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
  346. /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
  347. /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
  348. /periodcentered /quotesinglbase /quotedblbase /perthousand
  349. /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
  350. /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
  351. /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
  352. /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
  353. ] def
  354.  
  355. /FmEncode {    % basefontdict => newfontdict
  356.     /basefontdict exch def
  357.     /newfontdict basefontdict maxlength 3 add dict def
  358.     basefontdict {
  359.         exch dup /FID ne {
  360.             dup /Encoding eq {
  361.                 exch pop FmEncoding
  362.             } {
  363.                 exch
  364.             } ifelse
  365.             newfontdict 3 1 roll put
  366.         } {
  367.             pop pop
  368.         } ifelse
  369.     } forall
  370.     newfontdict
  371. } def
  372.  
  373. /rrectpath { %    r x y w h  =>  -  (make a round rect path)
  374.     smat
  375.     4 2 roll TR            % r w h
  376.     /h exch def /w exch def /r exch def
  377.     mark
  378.         r 0 M
  379.         w 0 w h r arcto w h 0 h r arcto
  380.         0 h 0 0 r arcto 0 0 w 0 r arcto C
  381.     cleartomark
  382.     rmat
  383. } def
  384.  
  385. /RF { % r x y w h
  386.     rrectpath F
  387. } bind def
  388.  
  389. /RP { % r x y w h
  390.     checkpat rrectpath fill
  391. } bind def
  392.  
  393. /RS { % r x y w h
  394.     rrectpath S
  395. } bind def
  396.  
  397. /RQ { % r x y w h
  398.     checkpat rrectpath A fill
  399. } bind def
  400.  
  401. /NF { % x y w h
  402.     dorectfill
  403. } bind def
  404.  
  405. /NR { % w h x y
  406.     checkpat
  407.     4 2 roll
  408.     rectfill
  409. } bind def
  410.  
  411. /W { % x y w h
  412.     savedgray 5 1 roll 1.0 G  dorectfill G } bind def
  413.  
  414. /PP { % int n
  415.     newpath
  416.     3 1 roll M 1 sub
  417.     { lineto } repeat
  418.     } bind def
  419.  
  420. /SP { % int n
  421.     3 1 roll M 3 div cvi
  422.     { curveto } repeat
  423. } bind def
  424.  
  425. /rectpath  { % w h x y
  426.     M dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto C
  427. } def
  428.  
  429. /N { %  x y w h
  430.     dorectstroke
  431. } bind def
  432.  
  433. /NQ { % int w, int h, int x, int y
  434.     checkpat
  435.     4 2 roll
  436.     rectstroke
  437. } bind def
  438.  
  439. % fill a box with a pattern
  440. /replbox { % string datastring, string proc, int w, int h, int x, int y
  441.     M dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto C
  442.     currentgray .5 setgray fill setgray pop pop
  443. } def
  444.  
  445. /graybox { % x y w h => -
  446.     currentgray 5 1 roll
  447.     .6666666 setgray rectfill setgray
  448. } bind def
  449.  
  450. /darkgraybox { % x y w h => -
  451.     currentgray 5 1 roll
  452.     .333333 setgray rectfill setgray
  453. } bind def
  454.  
  455. /arcpath { % int th, int dth, int w, int h, int x, int y
  456.     newpath
  457.     TR
  458.     /h exch def
  459.     /w exch def
  460.     /dth exch def
  461.     /th exch def
  462.     90 th dth add sub 90 th sub       % theta1 theta2
  463.     dth 0 lt
  464.         { exch } if
  465.     1 h w div neg scale
  466.     0 0 w 2 div 5 -2 roll arc
  467. } def
  468.  
  469. /AS { % int th, int dth, int w, int h, int x, int y
  470.     smat
  471.     arcpath
  472.     rmat
  473.     S
  474. } bind def
  475.  
  476. /AP { % int th, int dth, int w, int h, int x, int y
  477.     checkpat
  478.     smat
  479.     arcpath
  480.     rmat
  481.     A fill
  482. } bind def
  483.  
  484. /AF { % int th, int dth, int w, int h, int x, int y
  485.     smat
  486.     arcpath
  487.     0 0 lineto
  488.     rmat
  489.     F
  490. } bind def
  491.  
  492. /AQ { % int th, int dth, int w, int h, int x, int y
  493.     checkpat
  494.     smat
  495.     arcpath
  496.     0 0 lineto
  497.     rmat
  498.     fill
  499. } bind def
  500.  
  501. /mymakefont { % i name size
  502.     /size exch def
  503.     /name exch def
  504.     /i exch def
  505.     /myfontdict name cvn findfont def
  506.     %
  507.     % FrameMaker provides its own encoding vector for fonts in which
  508.     % normal alphabetic characters are printed (it doesn't change the
  509.     % encoding vector for Symbol fonts).  The way we detect an
  510.     % alphabetic character font is by name: if the encoding vector
  511.     % is either StandardEncoding (Adobe's standard) or NextStepEncoding
  512.     % (the default on the NeXT system), then it's assume it's for
  513.     % alphabetic characters, and re-encode it.
  514.     %
  515.     % This first part is concerned with discovering the encoding vector's
  516.     % name and comparing it to StandardEncoding and NextStepEncoding.
  517.     % The process is complicated by the fact that not every printer
  518.     % understands NextStepEncoding.
  519.     % Leave on the stack 1 or 0, telling whether we need to re-encode.
  520.     %
  521.     % A better way to do this might be to have FrameMaker pass to
  522.     % mymakefont a flag indicating that "you need to re-encode."
  523.     %
  524.     myfontdict begin
  525.         Encoding StandardEncoding eq
  526.         /NextStepEncoding where { pop Encoding NextStepEncoding eq or } if
  527.     end % myfontdict
  528.     %
  529.     % Based on the 1 or 0 atop the stack, re-encode if necessary.
  530.     %
  531.     {
  532.         myfontdict FmEncode /gfontdict exch def
  533.         /gfontdict (F   ) dup 1 i (   ) cvs putinterval cvn
  534.                 gfontdict definefont def
  535.     } {
  536.         /gfontdict myfontdict def
  537.     } ifelse
  538.  
  539.     /myfonts [ myfonts aload pop null ] def
  540.     myfonts i  gfontdict  [size 0 0 size neg 0 0 ] makefont put
  541. } def
  542.  
  543. /mymakefontmetric { % i name size printermetrics
  544.     /BitmapWidths exch 0 eq def   % the font reencoding will add this to font
  545.     mymakefont
  546. } def
  547.  
  548. /FF { % i
  549.     myfonts exch get setfont
  550. } bind def
  551.  
  552. /cliptowindow {
  553.     initclip
  554. } def
  555.  
  556. /beginprintcode { % -x -y w h scale dx dy
  557.     GS
  558.     newpath 1 setlinewidth 0 SL 0 setlinejoin
  559.     [] 0 setdash 0 setgray 10 setmiterlimit
  560.     /FMdicttop countdictstack 1 add def % high-water mark of dict stack
  561.     /FMoptop count 7 sub def % tricky! 7 params on stack, plus "/FMoptop"
  562.     200 dict begin
  563.     /showpage {} def
  564.     TR                      % translate to bottom left
  565.     dup neg scale                % convert to postscript coordinates
  566.     0.0 0.0 M
  567. } def
  568.  
  569. /endprintcode {
  570.     count -1 FMoptop {pop pop} for % clear user junk from operand stack
  571.     countdictstack -1 FMdicttop {pop end} for % ditto for dict stack
  572.     GR
  573. } def
  574.  
  575. /beginPSInsetprintcode {
  576.     /pinsetsave save def
  577.     newpath 1 setlinewidth 0 setlinecap 0 setlinejoin
  578.     [] 0 setdash 0 setgray 10 setmiterlimit
  579.     /FMdicttop countdictstack 1 add def % high-water mark of dict stack
  580.     /FMoptop count def % tricky!           +1 in both cases for the 'for' loop.
  581.     200 dict begin
  582.     /showpage {} def
  583.     /showimage {} def
  584. } def
  585.  
  586. /endPSInsetprintcode {
  587.     count -1 FMoptop {pop pop} for % clear user junk from operand stack
  588.     countdictstack -1 FMdicttop {pop end} for % ditto for dict stack
  589.     pinsetsave restore
  590. } def
  591.  
  592. /cacheimage { % destX destY destWidth destHeight w h bps theta flip
  593.     /flip exch def
  594.     /theta exch def
  595.     /bps exch def
  596.     /h exch def
  597.     /w exch def
  598.     /destHeight exch def
  599.     /destWidth exch def
  600.     /destY exch def
  601.     /destX exch def
  602.     /rowbytes w bps mul 7 add 8 idiv def
  603.     /buffer rowbytes string def
  604.  
  605.     GS
  606.     destX destY TR
  607.     theta rotate
  608.     destWidth flip {neg} if destHeight scale
  609.     w h bps
  610.     % [w 0 0 h neg 0 h ]
  611.     [w 0 0 h 0 h ]
  612.     { currentfile buffer readhexstring pop } bind
  613.     image
  614.     GR
  615. } def
  616.  
  617. /inch{72 mul}def
  618. /paperheight 0 def /paperwidth 0 def
  619. /pagedimen {
  620.     paperheight sub abs 16 lt exch
  621.     paperwidth sub abs 16 lt and
  622.     {/papername exch def} {pop} ifelse
  623. } def
  624. /setpapername {
  625.     /papersizedict 14 dict def
  626.     papersizedict begin
  627.     /papername /unknown def
  628.     /Letter 8.5 inch 11.0 inch pagedimen
  629.     /LetterSmall 7.68 inch 10.16 inch pagedimen
  630.     /Tabloid 11.0 inch 17.0 inch pagedimen
  631.     /Ledger 17.0 inch 11.0 inch pagedimen
  632.     /Legal 8.5 inch 14.0 inch pagedimen
  633.     /Statement 5.5 inch 8.5 inch pagedimen
  634.     /Executive 7.5 inch 10.0 inch pagedimen
  635.     /A3 11.69 inch 16.5 inch pagedimen
  636.     /A4 8.26 inch 11.69 inch pagedimen
  637.     /A4Small 7.47 inch 10.85 inch pagedimen
  638.     /B4 10.125 inch 14.33 inch pagedimen
  639.     /B5 7.16 inch 10.125 inch pagedimen
  640.     end
  641. } def
  642. /papersize {
  643.     papersizedict begin
  644.     /Letter {lettertray letter} def
  645.     /LetterSmall {lettertray lettersmall} def
  646.     /Tabloid {11x17tray 11x17} def
  647.     /Ledger {ledgertray ledger} def
  648.     /Legal {legaltray legal} def
  649.     /Statement {statementtray statement} def
  650.     /Executive {executivetray executive} def
  651.     /A3 {a3tray a3} def
  652.     /A4 {a4tray a4} def
  653.     /A4Small {a4tray a4small} def
  654.     /B4 {b4tray b4} def
  655.     /B5 {b5tray b5} def
  656.     /unknown {unknown} def
  657.     papersizedict dup papername known {papername} {/unknown} ifelse get
  658.     end
  659.     /FMdicttop countdictstack 1 add def
  660.     statusdict begin stopped end
  661.     countdictstack -1 FMdicttop {pop end} for
  662. } def
  663. /manualpapersize {
  664.     papersizedict begin
  665.     /Letter {letter} def
  666.     /LetterSmall {lettersmall} def
  667.     /Tabloid {11x17} def
  668.     /Ledger {ledger} def
  669.     /Legal {legal} def
  670.     /Statement {statement} def
  671.     /Executive {executive} def
  672.     /A3 {a3} def
  673.     /A4 {a4} def
  674.     /A4Small {a4small} def
  675.     /B4 {b4} def
  676.     /B5 {b5} def
  677.     /unknown {unknown} def
  678.     papersizedict dup papername known {papername} {/unknown} ifelse get
  679.     end
  680.     stopped
  681. } def
  682. /desperatepapersize {
  683.     statusdict /setpageparams known {
  684.         paperwidth paperheight 0 1
  685.         statusdict begin
  686.         {setpageparams} stopped pop
  687.         end
  688.     } if
  689. } def
  690. /manualfeed false def
  691.  
  692. % sbs 910917
  693. /FmHorrible {
  694.     4 dict begin
  695.     /execuserobject {pop} def
  696.     /undefineuserobject {pop} def
  697.     /termwindow {} def
  698.     /currentgstate {null} def
  699. } def
  700. /FmEndHorrible {
  701.     end
  702. } def
  703.  
  704. end    % of FrameDict definitions
  705.  
  706. % This name needs to be outside FrameDict because it's called by
  707. % NeXT code outside any printable page.
  708. /FmConfigurePaper { % width height name manualfeed FmConfigurePaper -
  709.     FrameDict begin
  710.         pop % sacrifice manualfeed, for now.
  711.         pop    % sacrifice name, for now.
  712.         /paperheight exch def /paperwidth exch def
  713.         setpapername
  714.         manualfeed {true} {papersize} ifelse
  715.         {manualpapersize} {false} ifelse
  716.         {desperatepapersize} if
  717.     end
  718. } def
  719.  
  720.  
  721. %
  722. % OPI stuff
  723. %
  724. /ALDsave FMLOCAL
  725. /ALDmatrix matrix def ALDmatrix currentmatrix pop
  726.  
  727. /StartALD {
  728.     /ALDsave save def
  729.     savematrix
  730.     ALDmatrix setmatrix
  731. } bind def
  732.  
  733. /InALD {
  734.     restorematrix
  735. } bind def
  736.  
  737. /DoneALD {
  738.     ALDsave restore
  739. } bind def
  740.  
  741. % OPI end
  742.