home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1998 May / dpcb0598.iso / Business / Draw8 / Programs / Data / resource.ps < prev    next >
Text File  |  1997-02-27  |  32KB  |  1,079 lines

  1. % resource.ps
  2. % version 2002.001/3
  3. % requires modified version (6/7/94) of resop.c
  4. % new version of resources on 4/14/94 requires resop.c as of 3/29/94 or later
  5.  
  6. % initialize resources
  7. $resource begin
  8. /initialize true def
  9. /$resscratch1 128 string def
  10. /$resscratch2 128 string def
  11. userdict begin /EncodingDirectory 5 dict def end
  12. true setglobal
  13.  
  14. % resource error handler
  15. % does an end on the resource category dictionary pushed in resop.c
  16. /err {
  17.     currentdict /key undef
  18.     false setglobal
  19.     $error begin
  20.     /newerror true def
  21.     /errorname exch def
  22.     /command exch cvx def 
  23.     end end stop
  24. } def
  25.  
  26. % convert resource name into file name (string)
  27. /genericresourcefile {
  28.     $resource begin
  29.       /$rescategory exch def 
  30.       exch =string cvs dup 
  31.       length 
  32.       3 1 roll exch 
  33.       dup $rescategory dup length 
  34.       6 1 roll 
  35.       0 exch putinterval 
  36.       dup 3 1 roll exch 4 index exch 
  37.       =string cvs putinterval 
  38.       3 1 roll add 0 exch getinterval 
  39.       currentdict /$rescategory undef 
  40.     end
  41. } def
  42.  
  43. % Generic resourcestatus procedure; searches dictionaries and disk
  44. /GenResourceStatus {
  45.     count 2 lt {
  46.         /resourcestatus /stackunderflow $resource /err get exec
  47.     } if
  48.     $resource /ResourceFileName? currentdict /ResourceFileName known put
  49.     $resource begin
  50.  
  51.     /category exch def
  52.     /key exch def
  53.     currentglobal {        % global, look only in global stat dict
  54.         currentdict /GlobalSDicts get category get /sdict exch def
  55.         sdict key known not ResourceFileName? and {
  56.             key //$resscratch1 ResourceFileName
  57.             % push 2 size true onto stack if file is found
  58.             status {pop pop exch pop 2 exch true} {false} ifelse
  59.         } {
  60.             sdict key known {
  61.                 sdict key get {} forall
  62.             }
  63.             {
  64.                 false
  65.             } ifelse
  66.         } ifelse
  67.     } {            % look in the local first, then the global dict
  68.         currentdict /LocalSDicts get category get /sdict exch def
  69.         sdict key known not {        % not in the local stat dict
  70.             currentdict /GlobalSDicts get category get begin
  71.                 currentdict key known not ResourceFileName? and {        % not in global stat dict
  72.                     % search for file on disk
  73.                     key //$resscratch1 ResourceFileName
  74.                     % push 2 size true onto stack if file is found
  75.                     status {pop pop exch pop 2 exch true} {false} ifelse
  76.                 }{
  77.                     currentdict key known {
  78.                         currentdict key get {} forall
  79.                     }
  80.                     {
  81.                         false
  82.                     } ifelse
  83.                 } ifelse
  84.             end
  85.         } {    % found in the local dict
  86.             sdict key get {} forall
  87.         } ifelse
  88.     } ifelse
  89.     $resource /key undef $resource /sdict undef
  90.     $resource /category undef
  91.     end
  92. } def
  93.  
  94. % Generic resourceforall procedure; searches dictionaries and disk
  95. /GenResourceForAll {
  96.     % look up ResourceFileName
  97.     currentdict /ResourceFileName known
  98.     {
  99.         % build the directory name for this resource
  100.         () //$resscratch1 ResourceFileName
  101.         end    % int_end() was removed from resop.c
  102.         % look up resources on the disk
  103.         $resource begin
  104.         /fname exch def
  105.         5 copy pop pop /scratch exch def /proc exch def /match exch def
  106.         end
  107.         genericresourceforall
  108.         $resource /match get //$resscratch2 $resource /fname get
  109.         $resource /genericresourcefile get exec
  110.         % {dup length 6 sub 6 exch getinterval $resource /proc get exec}
  111.         {
  112.             dup length
  113.             $resource /fname get length sub $resource /fname get length
  114.             exch getinterval $resource /proc get exec
  115.         }
  116.         $resource /scratch get
  117.         filenameforall
  118.     } {
  119.         end    % int_end() was removed from resop.c
  120.         % couldn't find ResourceFileName; just run generic forall
  121.         genericresourceforall
  122.     } ifelse
  123. } def
  124.  
  125. % Generic undefineresource procedure; searches dictionaries and disk
  126. /GenUndefineResource {
  127.     count 2 lt {
  128.         /undefineresource /stackunderflow $resource /err get exec
  129.     } if
  130.  
  131.     $resource begin
  132.     /category exch def
  133.     /key exch def
  134.  
  135.     % check to see if resource is writable
  136.     $resource /LocalRDicts get dup category known
  137.     {category get wcheck} {true pop} ifelse
  138.     $resource /GlobalRDicts get dup category known
  139.     {category get wcheck} {true pop} ifelse and not
  140.     {
  141.         key category
  142.         end  % $resource
  143.         /undefineresource /invalidaccess $resource /err get exec
  144.     } if
  145.  
  146.     % always delete from local vm dictionary
  147.     $resource /LocalRDicts get dup category known {category get key undef} if
  148.     $resource /LocalSDicts get dup category known {category get key undef} if
  149.  
  150.     currentglobal {                          % if global vm, delete
  151.         % delete category entry for Category resources
  152.         category /Category eq
  153.         { $resource /CategoryDICT get currentdict /key get undef } if
  154.         $resource /GlobalSDicts get category get key undef
  155.         $resource /GlobalRDicts get category get key undef
  156.     } if
  157.     currentdict dup /key undef /category undef
  158.     end
  159. } def
  160.  
  161. % Dictionary to hold resource category implementations
  162. /CategoryDICT 25 dict def
  163.  
  164. % Dictionary to hold the global resources
  165. /GlobalRDicts
  166. <<
  167. % /dname (GlobalRDicts)
  168.     /Category        25 dict
  169.     /Font            GlobalFontDirectory
  170.     /Encoding        5 dict
  171.     /Form            5 dict
  172.     /Pattern        5 dict
  173.     /ProcSet        5 dict
  174.     /ColorSpace        10 dict
  175.     /Halftone        5 dict
  176.     /ColorRendering        5 dict
  177.     /Filter            14 dict
  178.     /ColorSpaceFamily    5 dict
  179.     /Emulator        5 dict
  180.     /IODevice        5 dict
  181.     /ColorRenderingType    5 dict
  182.     /FMapType        5 dict
  183.     /FontType        5 dict
  184.     /FormType        5 dict
  185.     /HalftoneType        5 dict
  186.     /ImageType        5 dict
  187.     /PatternType        2 dict
  188.     /Generic        20 dict
  189. >> def
  190.  
  191. % Dictionary to hold the info returned by ResourceStatus for global resources
  192. /GlobalSDicts
  193. <<
  194. % /dname (GlobalSDicts)
  195.     /Category        25 dict
  196.     /Font            40 dict
  197.     /Encoding        5 dict
  198.     /Form            5 dict
  199.     /Pattern        5 dict
  200.     /ProcSet        5 dict
  201.     /ColorSpace        10 dict
  202.     /Halftone        5 dict
  203.     /ColorRendering        5 dict
  204.     /Filter            14 dict
  205.     /ColorSpaceFamily    5 dict
  206.     /Emulator        5 dict
  207.     /IODevice        5 dict
  208.     /ColorRenderingType    5 dict
  209.     /FMapType        5 dict
  210.     /FontType        5 dict
  211.     /FormType        5 dict
  212.     /HalftoneType        5 dict
  213.     /ImageType        5 dict
  214.     /PatternType        2 dict
  215.     /Generic        20 dict
  216. >> def
  217.  
  218. % Dictionary to hold the local resources
  219. false setglobal
  220. /LocalRDicts
  221. <<
  222. % /dname (LocalRDicts)
  223.     /Category        25 dict
  224.     /Font            FontDirectory
  225.     /Encoding        EncodingDirectory
  226.     /Form            5 dict
  227.     /Pattern        5 dict
  228.     /ProcSet        5 dict
  229.     /ColorSpace        10 dict
  230.     /Halftone        5 dict
  231.     /ColorRendering        5 dict
  232.     /Generic        20 dict
  233. >> def
  234.  
  235. % Dictionary to hold the info returned by ResourceStatus for local resources
  236. /LocalSDicts
  237. <<
  238. % /dname (LocalSDicts)
  239.     /Category        25 dict
  240.     /Font            40 dict
  241.     /Encoding        5 dict
  242.     /Form            5 dict
  243.     /Pattern        5 dict
  244.     /ProcSet        5 dict
  245.     /ColorSpace        10 dict
  246.     /Halftone        5 dict
  247.     /ColorRendering        5 dict
  248.     /Generic        20 dict
  249. >> def
  250.  
  251. /KeyAccessTest {
  252.     $resource begin
  253.     /matched false def
  254.     [/arraytype /stringtype /packedarraytype /dicttype /filetype]
  255.     {key type eq matched or /matched exch def } forall
  256.     matched {
  257.         $resource /key get rcheck not {
  258.             currentdict /matched undef
  259.             $resource key $resource /key undef
  260.             end  % $resource
  261.             /findresource /invalidaccess $resource /err get exec
  262.         } if
  263.     } if
  264.     currentdict /matched undef
  265.     end
  266. } def
  267.  
  268. true setglobal
  269. %% CATEGORY -- resource to handle resource categories
  270. /Category
  271. <<
  272. /InstanceType /dicttype /Category /Category
  273.  
  274. /ResourceForAll /GenResourceForAll load
  275.  
  276. /ResourceStatus /GenResourceStatus load
  277.  
  278. /ResourceFileName { (Resource/Category/)
  279.         $resource /genericresourcefile get exec }
  280.  
  281. /UndefineResource /GenUndefineResource load
  282.  
  283. /FindResource {
  284.     count 2 lt {
  285.         /findresource /stackunderflow $resource /err get exec
  286.     } if
  287.     $resource begin 
  288.         /category exch def
  289.         /key exch def
  290.         currentdict /GlobalRDicts get /Category get /rdict exch def
  291.         rdict key known not {
  292.             % here we will later insert code to search for files containing
  293.             % the stuff.
  294.             key category
  295.             end /findresource /undefinedresource $resource /err get exec
  296.         } if
  297.         rdict key get
  298.  
  299.     currentdict dup dup /key undef /category undef /rdict undef
  300.     end 
  301. }
  302.  
  303. /DefineResource {
  304.     currentglobal not {
  305.         /defineresource /invalidaccess $resource /err get exec
  306.     } if
  307.     count 3 lt {
  308.         /defineresource /stackunderflow $resource /err get exec
  309.     } if
  310.     currentdict /InstanceType get
  311.     $resource begin
  312.  
  313.     /insttype exch def
  314.     /category exch def
  315.     /inst exch def 
  316.     /key exch def 
  317.  
  318.     $resource /CategoryDICT get key known not /newcategory exch def
  319.     currentglobal {
  320.         currentdict /GlobalRDicts get category get /rrdict exch def
  321.         currentdict /GlobalSDicts get category get /sdict exch def
  322.         currentdict /GlobalRDicts get /rdict exch def
  323.     } {
  324.         currentdict /LocalRDicts get category get /rrdict exch def
  325.         currentdict /LocalSDicts get category get /sdict exch def
  326.         currentdict /LocalRDicts get /rdict exch def
  327.     } ifelse
  328.     inst type currentdict /insttype get ne {
  329.         end /defineresource /typecheck $resource /err get exec
  330.     } if
  331.     inst /Validate where {
  332.         /Validate get exec
  333.     } {
  334.         end /defineresource /typecheck $resource /err get exec
  335.     } ifelse
  336.     currentglobal {
  337.         currentdict /inst get gcheck not { % can't store local instance into global
  338.             end /defineresource /invalidaccess $resource /err get exec
  339.         } if
  340.     } if 
  341.     % put it into the global dictionary in the resource dictionary
  342.     $resource /CategoryDICT get key inst put
  343.  
  344.     % store a copy of the dict in the Category dict in GlobalRDict so that
  345.     % resourceforall can grab it.
  346.     currentdict /rrdict get key inst put
  347.     currentdict /GlobalSDicts get /Category get $resource /key get [0 -1 true] put
  348.     newcategory {        % make global/local status/resource dict entries
  349.         rdict key known not {rdict key 10 dict put} if
  350.         currentdict /GlobalSDicts get /sdict exch def
  351.         currentdict /GlobalRDicts get /rdict exch def
  352.         rdict key known not {rdict key 10 dict put} if
  353.         sdict key known not {sdict key 10 dict put} if
  354.         currentdict /GlobalSDicts get /Category get $resource /key get [0 -1 true] put
  355.     } if
  356.     inst
  357.     $resource /initialize known not {
  358.         readonly
  359.     } if
  360.     currentdict /inst undef currentdict /key undef
  361.     currentdict /rdict undef currentdict /sdict undef
  362.     currentdict /insttype undef currentdict /newcategory undef
  363.     currentdict /rrdict undef
  364.     end
  365. }
  366.  
  367. /Validate {
  368.     [/DefineResource /UndefineResource /FindResource /ResourceStatus
  369.     /ResourceForAll /Category ] {
  370.         1 index exch known not {
  371.             /defineresource /typecheck $resource /err get exec
  372.         } if
  373.     } forall
  374.     pop
  375. }
  376. >>
  377. def
  378.  
  379. CategoryDICT /Category Category put
  380. % CategoryDICT /dname (CategoryDICT) put
  381. $resource /GlobalRDicts get /Category CategoryDICT put
  382.  
  383. %% GENERIC -- all other resources based on this one
  384. /Generic 
  385. <<
  386. /Category /Generic 
  387.  
  388. /ResourceForAll /GenResourceForAll load
  389.  
  390. /ResourceStatus /GenResourceStatus load
  391.  
  392. /ResourceFileName { (Resource/Generic/)
  393.         $resource /genericresourcefile get exec }
  394.  
  395. /UndefineResource /GenUndefineResource load
  396.  
  397. /FindResource {
  398.     count 2 lt {            % too few arguments
  399.         /findresource /stackunderflow $resource /err get exec
  400.     } if
  401.     exch $resource exch
  402.     /frkey exch dup type /arraytype eq {  % get the key.  If it's a proc,
  403.         dup xcheck {                    % stuff the array into another array
  404.             1 array astore cvx          % before defining key
  405.         } if
  406.     } if
  407.     put
  408.  
  409.     $resource /frkey get type /nulltype eq {    % generate a complaint if null
  410.         $resource /frkey get
  411.         /findresource /typecheck $resource /err get exec
  412.     } if
  413.     $resource /key $resource /frkey get put
  414.     $resource /KeyAccessTest get exec % check the access of key if composite
  415.     $resource begin
  416.     /frcategory exch def
  417.  
  418.     currentglobal {      % global vm, only search global resources
  419.         currentdict /GlobalRDicts get frcategory get /frrdict exch def
  420.         frrdict frkey known not {
  421.             % load from disk
  422.             currentdict /CategoryDICT get frcategory get /ResourceFileName known {
  423.                 frkey //$resscratch1
  424.                 currentdict /CategoryDICT get frcategory get
  425.                     /ResourceFileName get exec
  426.                 dup status {pop pop pop pop mark exch run cleartomark} {pop} ifelse
  427.             } if
  428.         } if
  429.     } {
  430.         % local vm, search local, then global
  431.         currentdict /LocalRDicts get frcategory get /frrdict exch def
  432.         frrdict frkey known not {
  433.             currentdict /GlobalRDicts get frcategory get /frrdict exch def
  434.             frrdict frkey known not {
  435.                 % load from disk
  436.                 currentdict /CategoryDICT get frcategory get /ResourceFileName known {
  437.                     frkey //$resscratch1
  438.                     currentdict /CategoryDICT get frcategory get
  439.                         /ResourceFileName get exec
  440.                     /frglobal currentglobal def
  441.                     true setglobal
  442.                     dup status {pop pop pop pop mark exch run cleartomark} {pop} ifelse
  443.                     frglobal setglobal
  444.                 } if
  445.                 % search local again
  446.                 currentdict /LocalRDicts get frcategory get /frrdict exch def
  447.                 % now search global
  448.                 frrdict frkey known not {
  449.                     currentdict /GlobalRDicts get frcategory get /frrdict exch def
  450.                 } if
  451.             } if
  452.         } if
  453.     } ifelse
  454.     frrdict frkey known not {
  455.         frkey frcategory
  456.         end /findresource /undefinedresource $resource /err get exec
  457.     } if
  458.  
  459.     frrdict frkey get
  460.     currentdict /frkey undef
  461.     currentdict /frrdict undef
  462.     currentdict /frcategory undef
  463.     end % $resource
  464. }
  465.  
  466. /DefineResource { 
  467.     count 3 lt {          % check for enough args
  468.         /defineresource /stackunderflow $resource /err get exec
  469.     } if 
  470.     currentdict /InstanceType known not {
  471.         $resource /instflag false put
  472.     } {
  473.         $resource /insttype currentdict /InstanceType get put
  474.         $resource /instflag true put
  475.     } ifelse
  476.     $resource begin
  477.  
  478.     /category exch def
  479.     /inst exch def   % save the instance
  480.  
  481.     % make key read only if it's a composite
  482.     /matched false def
  483.     [/arraytype /stringtype /packedarraytype /dicttype /filetype]
  484.     {currentdict /inst get type eq matched or /matched exch def } forall
  485.     matched {
  486.         /inst currentdict /inst get readonly def
  487.     } if
  488.     /key exch def
  489.  
  490.     % check to see if resource is writable
  491.     $resource /LocalRDicts get dup category known
  492.     {category get wcheck} {pop true} ifelse
  493.     $resource /GlobalRDicts get dup category known
  494.     {category get wcheck} {pop true} ifelse and not
  495.     {
  496.         key inst category
  497.         end    % $resource
  498.         /undefineresource /invalidaccess $resource /err get exec
  499.     } if
  500.  
  501.     currentglobal {
  502.         currentdict /GlobalRDicts get category get /rdict exch def
  503.         currentdict /GlobalSDicts get category get /sdict exch def
  504.          currentdict /LocalRDicts get category known not {
  505.              currentdict /LocalRDicts get category 10 dict put
  506.              currentdict /LocalSDicts get category 10 dict put
  507.          } if
  508.         currentdict /LocalRDicts get category get /lrdict exch def
  509.         currentdict /LocalSDicts get category get /lsdict exch def
  510.     } {
  511.         currentdict /LocalRDicts get category known not {
  512.             currentdict /LocalRDicts get category 10 dict put
  513.             currentdict /LocalSDicts get category 10 dict put
  514.         } if
  515.         currentdict /LocalRDicts get category get /rdict exch def
  516.         currentdict /LocalSDicts get category get /sdict exch def
  517.     } ifelse
  518.  
  519.     instflag { % check for correct datatype
  520.         currentdict /inst get type currentdict /insttype get ne {
  521.         end /defineresource /typecheck $resource /err get exec
  522.         } if 
  523.     } if
  524.     currentglobal {           % if true vm
  525.         currentdict /inst get gcheck not { % can't store local instance into global
  526.             end /defineresource /invalidaccess $resource /err get exec
  527.         } if
  528.         %currentdict /lrdict get /nulltype ne {     % if local dict exists
  529.         %    currentdict /lrdict get key undef  % delete any entry with
  530.         %    currentdict /lsdict get key undef  % this key
  531.         %} if
  532.     } if
  533.     currentdict /rdict get key currentdict /inst get put   % store key, inst
  534.     currentdict /sdict get key [0 -1 true] put   % set status
  535.     currentdict /inst get                        % put instance back on stack
  536.     currentdict /inst undef currentdict /key undef  % ditch local variables
  537.     currentdict /lrdict undef currentdict /lsdict undef
  538.     currentdict /rdict undef currentdict /sdict undef
  539.     currentdict /category undef currentdict /insttype undef
  540.     currentdict /matched undef currentdict /instflag undef
  541.     end
  542. }
  543. >> /Category defineresource pop
  544.  
  545. %% FONT resource (handled separately due to findfont)
  546. /Font
  547. <<
  548. /InstanceType /dicttype /Category /Font
  549.  
  550. /ResourceForAll /GenResourceForAll load
  551.  
  552. /ResourceFileName { (fonts/)
  553.         $resource /genericresourcefile get exec }
  554.  
  555. /ResourceStatus /GenResourceStatus load
  556.  
  557. /UndefineResource {
  558.     pop
  559.     dup $resource exch /key exch put
  560.     undefinefont
  561.     % undefinefont deletes the font from the local and global RDicts
  562.     $resource /LocalSDicts get /Font get $resource /key get undef
  563.     currentglobal {             % if global vm, delete
  564.         $resource /GlobalSDicts get /Font get $resource /key get undef
  565.     } if
  566.     $resource /key undef
  567. }
  568.  
  569. /FindResource {
  570.     count 2 lt {
  571.         /findresource /stackunderflow $resource /err get exec
  572.     } if
  573.     pop
  574.     5 dict begin
  575.     /_kkeeyy exch def
  576.  
  577.     $resource /LocalRDicts get /Font FontDirectory put
  578.     /rdict FontDirectory def
  579.     $resource /LocalSDicts get /Font get /sdict exch def
  580.  
  581.     % check to see if global font was lost from FontDirectory
  582.     % but still retained in GlobalFontDirectory (due to save/restore)
  583.     % note definefont done below to reinstall font in FontDirectory
  584.     rdict _kkeeyy known not GlobalFontDirectory _kkeeyy known and {
  585.         $resource /GlobalRDicts get /Font GlobalFontDirectory put
  586.         /rdict GlobalFontDirectory def
  587.         $resource /GlobalSDicts get /Font get /sdict exch def
  588.     } if
  589.  
  590.     % check to see if font is not known and we're in global VM
  591.     rdict _kkeeyy known not currentglobal and {
  592.         $resource /GlobalRDicts get /Font GlobalFontDirectory put
  593.         /rdict GlobalFontDirectory def
  594.         $resource /GlobalSDicts get /Font get /sdict exch def
  595.     } if
  596.  
  597.     % if the font isn't in the FontDirectory
  598.     rdict _kkeeyy known not {
  599.         /global currentglobal def
  600.         % try to find the font out on disk
  601.         mark
  602.         { _kkeeyy userdict begin _findfont } stopped pop
  603.         end
  604.         cleartomark
  605.         % did we find it?
  606.         rdict _kkeeyy known not {
  607.             % use default font
  608.             _kkeeyy =string cvs print 
  609.             ( not found; using ) print
  610.             statusdict /defaultfont known {
  611.                 statusdict /defaultfont get
  612.             } {
  613.                 /Times-Roman
  614.             } ifelse
  615.             dup =string cvs print
  616.             (\r\n) print flush
  617.             _findfont 
  618.         } {
  619.             rdict _kkeeyy get
  620.         } ifelse
  621.  
  622.         global setglobal
  623.         % only do this when an explicit findfont is done!!
  624.         sdict _kkeeyy [1 -1 true] put 
  625.     } {
  626.         rdict _kkeeyy get
  627.     } ifelse
  628.  
  629.     % all fonts should be installed in FontDirectory
  630.     FontDirectory _kkeeyy known not {
  631.         _kkeeyy exch definefont
  632.     } if
  633.  
  634.     end
  635. }
  636.  
  637. /DefineResource { 
  638.     pop        % the name of the category needs to be popped off
  639.     1 index exch
  640.     { xdefinefont } stopped { 
  641.         end % on the dictionary defineresource began
  642.         /defineresource /definefont $resource /err get exec
  643.     } if
  644.     exch
  645.     AddStatusInfo
  646. }
  647.  
  648. /AddStatusInfo {
  649.     /key exch dup type /stringtype eq {cvn} if def
  650.     currentglobal {
  651.         $resource /GlobalSDicts get /Font get key [0 -1 true] put 
  652.     } if
  653.     $resource /LocalSDicts get /Font get key [0 -1 true] put 
  654. }
  655. >> /Category 
  656. defineresource pop
  657. end    % $resource
  658.  
  659. %% create implicit resources
  660.  
  661. % Filter
  662. /Generic /Category findresource
  663. dup length 1 add dict copy
  664. dup /InstanceType /nametype put
  665. dup /ResourceFileName undef
  666. /Filter exch /Category defineresource pop
  667.  
  668. % ColorSpaceFamily
  669. /Generic /Category findresource
  670. dup length 1 add dict copy
  671. dup /InstanceType /nametype put
  672. dup /ResourceFileName undef
  673. /ColorSpaceFamily exch /Category defineresource pop
  674.  
  675. % Emulator
  676. /Generic /Category findresource
  677. dup length 1 add dict copy
  678. dup /InstanceType /nametype put
  679. dup /ResourceFileName undef
  680. /Emulator exch /Category defineresource pop
  681.  
  682. % IODevice
  683. /Generic /Category findresource
  684. dup length 1 add dict copy
  685. dup /InstanceType /stringtype put
  686. dup /ResourceFileName undef
  687. /IODevice exch /Category defineresource pop
  688.  
  689. % ColorRenderingType
  690. /Generic /Category findresource
  691. dup length 1 add dict copy
  692. dup /InstanceType /integertype put
  693. dup /ResourceFileName undef
  694. dup /ResourceForAll {implicitresourceforall} put
  695. /ColorRenderingType exch /Category defineresource pop
  696.  
  697. % FMapType
  698. /Generic /Category findresource
  699. dup length 1 add dict copy
  700. dup /InstanceType /integertype put
  701. dup /ResourceFileName undef
  702. dup /ResourceForAll {implicitresourceforall} put
  703. /FMapType exch /Category defineresource pop
  704.  
  705. % FontType
  706. /Generic /Category findresource
  707. dup length 1 add dict copy
  708. dup /InstanceType /integertype put
  709. dup /ResourceFileName undef
  710. dup /ResourceForAll {implicitresourceforall} put
  711. /FontType exch /Category defineresource pop
  712.  
  713. % FormType
  714. /Generic /Category findresource
  715. dup length 1 add dict copy
  716. dup /InstanceType /integertype put
  717. dup /ResourceFileName undef
  718. dup /ResourceForAll {implicitresourceforall} put
  719. /FormType exch /Category defineresource pop
  720.  
  721. % HalftoneType
  722. /Generic /Category findresource
  723. dup length 1 add dict copy
  724. dup /InstanceType /integertype put
  725. dup /ResourceFileName undef
  726. dup /ResourceForAll {implicitresourceforall} put
  727. /HalftoneType exch /Category defineresource pop
  728.  
  729. % ImageType
  730. /Generic /Category findresource
  731. dup length 1 add dict copy
  732. dup /InstanceType /integertype put
  733. dup /ResourceFileName undef
  734. dup /ResourceForAll {implicitresourceforall} put
  735. /ImageType exch /Category defineresource pop
  736.  
  737. % PatternType
  738. /Generic /Category findresource
  739. dup length 1 add dict copy
  740. dup /InstanceType /integertype put
  741. dup /ResourceFileName undef
  742. dup /ResourceForAll {implicitresourceforall} put
  743. /PatternType exch /Category defineresource pop
  744.  
  745. %% create regular resources
  746.  
  747. % Encoding
  748. /Generic /Category findresource
  749. dup length 1 add dict copy
  750. dup /InstanceType /arraytype put
  751. dup /ResourceFileName {(encodings/)
  752.         $resource /genericresourcefile get exec} put
  753. /Encoding exch /Category defineresource pop
  754.  
  755. % Form
  756. /Generic /Category findresource
  757. dup length 1 add dict copy
  758. dup /InstanceType /dicttype put
  759. dup /ResourceFileName {(Resource/Form/)
  760.         $resource /genericresourcefile get exec } put
  761. /Form exch /Category defineresource pop
  762.  
  763. % Pattern
  764. /Generic /Category findresource
  765. dup length 1 add dict copy
  766. dup /InstanceType /dicttype put
  767. dup /ResourceFileName {(Resource/Pattern/)
  768.         $resource /genericresourcefile get exec } put
  769. /Pattern exch /Category defineresource pop
  770.  
  771. % ProcSet
  772. /Generic /Category findresource
  773. dup length 1 add dict copy
  774. dup /InstanceType /dicttype put
  775. dup /ResourceFileName {(Resource/ProcSet/)
  776.         $resource /genericresourcefile get exec } put
  777. /ProcSet exch /Category defineresource pop
  778.  
  779. % ColorSpace
  780. /Generic /Category findresource
  781. dup length 1 add dict copy
  782. dup /InstanceType /arraytype put
  783. dup /ResourceFileName {(Resource/ColorSpace/)
  784.         $resource /genericresourcefile get exec } put
  785. /ColorSpace exch /Category defineresource pop
  786.  
  787. % Halftone
  788. /Generic /Category findresource
  789. dup length 1 add dict copy
  790. dup /InstanceType /dicttype put
  791. dup /ResourceFileName {(Resource/Halftone/)
  792.         $resource /genericresourcefile get exec } put
  793. /Halftone exch /Category defineresource pop
  794.  
  795. % ColorRendering
  796. /Generic /Category findresource
  797. dup length 1 add dict copy
  798. dup /InstanceType /dicttype put
  799. dup /ResourceFileName {(Resource/ColorRendering/)
  800.         $resource /genericresourcefile get exec } put
  801. /ColorRendering exch /Category defineresource pop
  802.  
  803. %% Kanji printer resources
  804.  
  805. % Charstring
  806. true setglobal
  807. /Generic /Category findresource
  808. dup length 1 add dict copy
  809. dup /InstanceType /dicttype put
  810. dup /ResourceFileName {(charstrings/)
  811.         $resource /genericresourcefile get exec } put
  812. /Charstring exch /Category defineresource pop
  813.  
  814. %% Initialize a few resources
  815. false setglobal
  816. /DefaultColorRendering currentcolorrendering /ColorRendering defineresource pop
  817. /DefaultHalftone currenthalftone /Halftone defineresource pop
  818. /DefaultColorSpace currentcolorspace /ColorSpace defineresource pop
  819.  
  820. (%Serial%) (%Serial%) /IODevice defineresource pop
  821. (%Parallel%) (%Parallel%) /IODevice defineresource pop
  822. serverdict begin /__Initialize_ 12 def end
  823. (%Serial%) <<
  824.     /Password () /StopBits 1 /Enabled true /Baud 9600 /CheckParity false
  825.     /Type (Communications) /FlowControl (XonXoff) /HasNames false
  826.     /On true /Parity 0 /Protocol (Normal) /DataBits 8
  827. >> setdevparams
  828. (%Serial_NV%) <<
  829.     /Interpreter (PostScript)
  830.     /Password () /StopBits 1 /Enabled true /Baud 9600 /CheckParity false
  831.     /Type (Communications) /FlowControl (XonXoff) /HasNames false
  832.     /On true /Parity 0 /Protocol (Normal) /DataBits 8
  833. >> setdevparams
  834. (%Serial_NV2%) <<
  835.     /Interpreter (PostScript)
  836.     /Password () /StopBits 1 /Enabled true /Baud 9600 /CheckParity false
  837.     /Type (Communications) /FlowControl (XonXoff) /HasNames false
  838.     /On true /Parity 0 /Protocol (Normal) /DataBits 8
  839. >> setdevparams
  840. (%Serial_NV3%) <<
  841.     /Interpreter (PostScript)
  842.     /Password () /StopBits 1 /Enabled true /Baud 9600 /CheckParity false
  843.     /Type (Communications) /FlowControl (XonXoff) /HasNames false
  844.     /On true /Parity 0 /Protocol (Normal) /DataBits 8
  845. >> setdevparams
  846. (%Serial_NV4%) <<
  847.     /Interpreter (PostScript)
  848.     /Password () /StopBits 1 /Enabled true /Baud 9600 /CheckParity false
  849.     /Type (Communications) /FlowControl (XonXoff) /HasNames false
  850.     /On true /Parity 0 /Protocol (Normal) /DataBits 8
  851. >> setdevparams
  852. (%Parallel%) <<
  853.     /Password () /Enabled true /CheckParity false
  854.     /Type (Communications) /HasNames false
  855.     /On true /Protocol (Normal) /DataBits 8
  856. >> setdevparams
  857. (%LocalTalk%) <<
  858.     /Enabled true /NodeID 128
  859.     /Interpreter (PostScript)
  860.     /Type (Communications) /HasNames false
  861.     /On true /Protocol (Binary) /DataBits 8
  862. >> setdevparams
  863. (%LocalTalk_NV%) <<
  864.     /Enabled true
  865.     /Interpreter (PostScript)
  866.     /Type (Communications) /HasNames false
  867.     /On true /Protocol (Binary) /DataBits 8
  868. >> setdevparams
  869. (%LocalTalk_NV2%) <<
  870.     /Enabled true
  871.     /Interpreter (PostScript)
  872.     /Type (Communications) /HasNames false
  873.     /On true /Protocol (Binary) /DataBits 8
  874. >> setdevparams
  875. (%LocalTalk_NV3%) <<
  876.     /Enabled true
  877.     /Interpreter (PostScript)
  878.     /Type (Communications) /HasNames false
  879.     /On true /Protocol (Binary) /DataBits 8
  880. >> setdevparams
  881. (%LocalTalk_NV4%) <<
  882.     /Enabled true
  883.     /Interpreter (PostScript)
  884.     /Type (Communications) /HasNames false
  885.     /On true /Protocol (Binary) /DataBits 8
  886. >> setdevparams
  887. serverdict /__Initialize_ undef
  888.  
  889. /ASCIIHexEncode /ASCIIHexEncode /Filter defineresource pop
  890. /ASCIIHexDecode /ASCIIHexDecode /Filter defineresource pop
  891. /ASCII85Encode  /ASCII85Encode /Filter defineresource pop
  892. /ASCII85Decode  /ASCII85Decode /Filter defineresource pop
  893. /CCITTFaxEncode /CCITTFaxEncode /Filter defineresource pop
  894. /CCITTFaxDecode /CCITTFaxDecode /Filter defineresource pop
  895. /DCTEncode /DCTEncode /Filter defineresource pop
  896. /DCTDecode      /DCTDecode /Filter defineresource pop
  897. /LZWEncode /LZWEncode /Filter defineresource pop
  898. /LZWDecode      /LZWDecode /Filter defineresource pop
  899. /RunLengthEncode /RunLengthEncode /Filter defineresource pop
  900. /RunLengthDecode        /RunLengthDecode /Filter defineresource pop
  901. /SubFileDecode  /SubFileDecode /Filter defineresource pop
  902. /NullEncode     /NullEncode /Filter defineresource pop
  903.  
  904. /Separation /Separation /ColorSpaceFamily defineresource pop
  905. /Pattern /Pattern /ColorSpaceFamily defineresource pop
  906. /Indexed /Indexed /ColorSpaceFamily defineresource pop
  907. /CIEBasedABC /CIEBasedABC /ColorSpaceFamily defineresource pop
  908. /CIEBasedA /CIEBasedA /ColorSpaceFamily defineresource pop
  909. /DeviceGray /DeviceGray /ColorSpaceFamily defineresource pop
  910. /DeviceRGB /DeviceRGB /ColorSpaceFamily defineresource pop
  911. /DeviceCMYK /DeviceCMYK /ColorSpaceFamily defineresource pop
  912.  
  913. 2 2 /FMapType defineresource pop
  914. 3 3 /FMapType defineresource pop
  915. 4 4 /FMapType defineresource pop
  916. 5 5 /FMapType defineresource pop
  917. 6 6 /FMapType defineresource pop
  918. 7 7 /FMapType defineresource pop
  919. 8 8 /FMapType defineresource pop
  920.  
  921. 1 1 /PatternType defineresource pop
  922. 1 1 /ImageType defineresource pop
  923. 1 1 /FormType defineresource pop
  924. 1 1 /ColorRenderingType defineresource pop
  925. 1 1 /HalftoneType defineresource pop
  926. 2 2 /HalftoneType defineresource pop
  927. 3 3 /HalftoneType defineresource pop
  928. 4 4 /HalftoneType defineresource pop
  929. 5 5 /HalftoneType defineresource pop
  930. 6 6 /HalftoneType defineresource pop
  931.  
  932. /Type0  0 /FontType defineresource pop
  933. /Type1  1 /FontType defineresource pop
  934. /Type3  3 /FontType defineresource pop
  935. /Type4  4 /FontType defineresource pop
  936. /Type5  5 /FontType defineresource pop
  937.  
  938. true setglobal
  939. /StandardEncoding StandardEncoding /Encoding defineresource pop
  940. /ISOLatin1Encoding ISOLatin1Encoding /Encoding defineresource pop
  941. false setglobal
  942.  
  943. % make implicit resources read-only and set status to [true 0 0]
  944. $resource begin
  945.     LocalSDicts /Filter get dup begin {pop [0 0 true] def} forall end
  946.     LocalSDicts /ColorSpaceFamily get dup begin {pop [0 0 true] def} forall end
  947.     LocalSDicts /ColorRenderingType get dup begin {pop [0 0 true] def} forall end
  948.     LocalSDicts /FMapType get dup begin {pop [0 0 true] def} forall end
  949.     LocalSDicts /FontType get dup begin {pop [0 0 true] def} forall end
  950.     LocalSDicts /FormType get dup begin {pop [0 0 true] def} forall end
  951.     LocalSDicts /HalftoneType get dup begin {pop [0 0 true] def} forall end
  952.     LocalSDicts /ImageType get dup begin {pop [0 0 true] def} forall end
  953.     LocalSDicts /PatternType get dup begin {pop [0 0 true] def} forall end
  954.     GlobalRDicts /Filter get readonly pop
  955.     GlobalRDicts /ColorSpaceFamily get readonly pop
  956.     GlobalRDicts /Emulator get readonly pop
  957.     GlobalRDicts /IODevice get readonly pop
  958.     GlobalRDicts /ColorRenderingType get readonly pop
  959.     GlobalRDicts /FMapType get readonly pop
  960.     GlobalRDicts /FontType get readonly pop
  961.     GlobalRDicts /FormType get readonly pop
  962.     GlobalRDicts /HalftoneType get readonly pop
  963.     GlobalRDicts /ImageType get readonly pop
  964.     GlobalRDicts /PatternType get readonly pop
  965. end
  966.  
  967. $resource /initialize undef
  968. % end resource.ps
  969.  
  970. % the following belongs in the startup2.ps file; however I put it here
  971. % so everyone will get it.  Note that the .6 below is completely arbitrary!
  972. % This setvmthreshold should be done after the frame is allocated.
  973. % (SGK) 4/25/94
  974. % vmstatus sub neg exch pop .6 mul cvi setvmthreshold
  975. % setpage.ps
  976. % Setup for the page device 
  977. % version 2001.004 4/14/94
  978. % still need to integrate "build" code into this version
  979.  
  980. true setglobal
  981. statusdict begin /defaultpddict1
  982. <<
  983.     /Policies <<
  984.     /PolicyNotFound 1
  985.     /MediaColor 1
  986.     /MediaType 1
  987.     /MediaWeight 0
  988.     /PageSize 7
  989.     /PolicyReport {pop}
  990.     >>
  991. >> def
  992.  
  993. /defaultpddict2
  994. << 
  995. %    /PageSize =string (PAPERSIZE) getenv {cvn} {/letter} ifelse 
  996. %        statusdict /pagedict get exch get 
  997. %    /HWResolution [hres vres] 
  998.     /NumCopies null
  999.     /ManualFeed false
  1000.     /ImagingBBox null
  1001.     /PageMargins [0 0 0 0] 
  1002.     /GrayScale 0
  1003.     /ImagingModel 0
  1004.     /Policies <<
  1005.         /PolicyNotFound 1
  1006.         /MediaColor 1
  1007.         /MediaType 1
  1008.         /MediaWeight 0
  1009.         /PageSize 7
  1010.         /PolicyReport {pop}
  1011.     >>
  1012.     /PageSize [612 792]
  1013.     /InputAttributes <<
  1014.         0 <</PageSize [612 792] >>  % A
  1015.         1 <</PageSize [792 612] >>  % A
  1016.         1 <</PageSize [612 864] >>  % Along
  1017.         2 <</PageSize [595 842] >>  % A4
  1018.         3 <</PageSize [612 864] >>  % A4long
  1019.         4 <</PageSize [842 1191] >> % A3
  1020.         5 <</PageSize [629 1008] >> % SuperA
  1021.         6 <</PageSize [612 1008] >> % Legal
  1022.         7 <</PageSize [792 1224] >> % B
  1023.         8 <</PageSize [864 1380] >> % SuperB
  1024.         /Priority [0 1 2 3 4 5 6 7 8]
  1025.     >>
  1026.     /OutputAttributes <<
  1027.         /Separations false
  1028.     >>
  1029.     /Install {}
  1030.      /BeginPage {pop }
  1031.     /EndPage {exch pop 2 ne }
  1032.     /OutputProc
  1033.         {=string (PAGE) getenv
  1034.             { (bin) writepage    }
  1035.             {    MEMdict /outputpage get exec} ifelse
  1036.         }
  1037. >> def
  1038. false setglobal
  1039.  
  1040. statusdict begin
  1041. /gentray {
  1042.     << /Policies << /PageSize 0 >> >> setpagedevice
  1043.     statusdict begin 
  1044.         /trayname exch def
  1045.         /traydict 5 dict def
  1046.         traydict begin
  1047.             /PageMargins exch def
  1048.             /ImagingBBox exch def
  1049.             /PageSize exch def
  1050.         end
  1051.         traydict { setpagedevice } stopped {
  1052.             $error begin
  1053.                 /newerror true def
  1054.                 /errorname /rangecheck def
  1055.                 /command trayname cvs def
  1056.             end stop
  1057.         } if
  1058.     end
  1059. } def
  1060.  
  1061. /genpaper {
  1062.     << /Policies << /PageSize 7>> >> setpagedevice
  1063.     statusdict begin 
  1064.         /traydict 5 dict def
  1065.         traydict begin
  1066.             /PageMargins exch def
  1067.             /Margins exch def
  1068.             /ImagingBBox exch def
  1069.             /PageSize exch def
  1070.         end
  1071.         traydict  setpagedevice 
  1072.     end
  1073. } def
  1074. end
  1075.  
  1076. /setuppd { statusdict /defaultpddict1 get setpagedevice statusdict /defaultpddict2 get setpagedevice} def
  1077. end
  1078. statusdict /setuppd get exec
  1079.