home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / prolog.ps < prev    next >
Text File  |  1996-06-03  |  5KB  |  283 lines

  1. %---------------------------------------------------------------------------
  2. %
  3. % Copyright (c) 1995 by Westmount Technology B.V., Delft, The Netherlands.
  4. %
  5. % This software is furnished under a license and may be used only in
  6. % accordance with the terms of such license and with the inclusion of
  7. % the above copyright notice. This software or any other copies thereof
  8. % may not be provided or otherwise made available to any other person.
  9. % No title to and ownership of the software is hereby transferred.
  10. %
  11. % The information in this software is subject to change without notice
  12. % and should not be construed as a commitment by Westmount Technology B.V.
  13. %
  14. %---------------------------------------------------------------------------
  15. %
  16. %    File          : @(#)prolog.ps    1.1
  17. %    Authors       : (Known at wmt)
  18. %    Original date : 5-7-95
  19. %    History       : 
  20. %    See also      : 
  21. %    Description   : prolog file for PostScript files generated by topost
  22. %
  23. %---------------------------------------------------------------------------
  24. % SccsId = @(#)prolog.ps    1.1    28 Jul 1995 Copyright 1995 Westmount Technology
  25.  
  26.  
  27. %draw a string
  28. /DrawString {
  29.     /str exch def
  30.     /y exch def
  31.     /x exch def
  32.  
  33.     newpath
  34.     x y moveto
  35.     str show
  36. } def
  37.  
  38. % draw a line
  39. /DrawLine {
  40.     /y2 exch def
  41.     /x2 exch def
  42.     /y1 exch def
  43.     /x1 exch def
  44.  
  45.     newpath
  46.     x1 y1 moveto 
  47.     x2 y2 lineto
  48.     stroke
  49. } def
  50.  
  51. % draw an arc
  52. /DrawArc {
  53.     /ang2 exch def
  54.     /ang1 exch def
  55.     /ry exch def
  56.     /rx exch def
  57.     /y exch def
  58.     /x exch def
  59.  
  60.     newpath
  61.     /arcsave matrix currentmatrix def
  62.     x y translate
  63.     rx ry scale
  64.     0 0 1 ang1 ang2 arc
  65.     arcsave setmatrix
  66.     stroke
  67. } def
  68.  
  69.  
  70. % draw a filled arc
  71. /FillArc {
  72.     /ang2 exch def
  73.     /ang1 exch def
  74.     /r exch def
  75.     /y exch def
  76.     /x exch def
  77.  
  78.     newpath
  79.     x y r ang1 ang2 arc
  80.     fill
  81. } def
  82.  
  83. % draw a filled polygon
  84. /FillPolygon {
  85.     newpath
  86.     arrpoints
  87.     fill
  88. } def
  89.  
  90. % draw a filled rectangle
  91. /FillRectangle {
  92.     /height exch def
  93.     /width exch def
  94.     /y exch def
  95.     /x exch def
  96.     
  97.     newpath
  98.     x y moveto
  99.     width 0 rlineto
  100.     0 height rlineto
  101.     width neg 0 rlineto
  102.     0 height neg rlineto
  103.  
  104.     closepath
  105.     fill
  106. } def
  107.  
  108. % define a clipped rectangle
  109. /ClipRectangle {
  110.     /height exch def
  111.     /width exch def
  112.     /y exch def
  113.     /x exch def
  114.     
  115.     gsave
  116.     newpath
  117.     x y moveto
  118.     width 0 rlineto
  119.     0 height rlineto
  120.     width neg 0 rlineto
  121.     0 height neg rlineto
  122.  
  123.     closepath
  124.     % gsave stroke grestore
  125.     clip
  126.     newpath
  127. } def
  128.  
  129. % Draw lines which are connected.
  130. /DrawLines {
  131.     newpath
  132.     arrpoints
  133.     stroke
  134. } def
  135.  
  136. % draw a point
  137. /DrawPoint {
  138.     /y exch def
  139.     /x exch def
  140.  
  141.     newpath
  142.     x y moveto    
  143.     stroke
  144. } def
  145.  
  146. % draw several points
  147. /DrawPoints {
  148.     newpath
  149.     arrpoints
  150.     stroke
  151. } def
  152.  
  153. % draw a rectangle
  154. /DrawRectangle {
  155.     /height exch def
  156.     /width exch def
  157.     /y exch def
  158.     /x exch def
  159.     
  160.     x y moveto
  161.     width 0 rlineto
  162.     0 height rlineto
  163.     width neg 0 rlineto
  164.     0 height neg rlineto
  165.  
  166.     closepath
  167.     stroke
  168. } def
  169.  
  170. % draw several segment which may not be connected.
  171. /DrawSegments {
  172.     /arrlen exch def
  173.     /arrlen arrlen 4 mul def    % length of array to be defined
  174.     /points exch def        % array of points
  175.     /nr 0 def
  176.     
  177.     0 4 arrlen 1 sub {
  178.         pop
  179.         /x points nr get def
  180.         /nr nr 1 add def
  181.         /y points nr get def
  182.         /nr nr 1 add def
  183.  
  184.         x y moveto
  185.  
  186.         /x points nr get def
  187.         /nr nr 1 add def
  188.         /y points nr get def
  189.         /nr nr 1 add def
  190.  
  191.         x y lineto
  192.         stroke
  193.     } for
  194. } def
  195.  
  196. %draw several rectangles
  197. /DrawRectangles {
  198.     /arrlen exch def
  199.     /arrlen arrlen 4 mul def    % length of array to be defined
  200.     /points exch def        % array of points
  201.     /nr 0 def
  202.     
  203.     0 4 arrlen 1 sub {
  204.         pop
  205.         /x points nr get def
  206.         /nr nr 1 add def
  207.         /y points nr get def
  208.         /nr nr 1 add def
  209.         /width points nr get def
  210.         /nr nr 1 add def
  211.         /height points nr get def
  212.         /nr nr 1 add def
  213.  
  214.         x y width height DrawRectangle
  215.     } for
  216. } def
  217.  
  218. % walk through array of points
  219. /arrpoints {
  220.     /arrlen exch def
  221.     /arrlen arrlen 2 mul def    % length of array to be defined
  222.     /points exch def        % array of points
  223.     
  224.     /x points 0 get def
  225.     /y points 1 get def
  226.  
  227.     x y moveto
  228.  
  229.     2 2 arrlen 2 sub {        % for (i = 2; i <= arrlen - 2; i + 2)
  230.         /loopvar exch def
  231.         /x points loopvar get def
  232.         /y points loopvar 1 add get def
  233.         x y lineto    
  234.     } for
  235. } def
  236.  
  237. /undo_clip {
  238.     grestore
  239. } def
  240.  
  241. /reencodedict 5 dict def
  242. /ReEncode {
  243.     reencodedict begin
  244.                 /newencodingdict exch def
  245.                 /newfontname exch def
  246.                 /basefontname exch def
  247.  
  248.                 /basefontdict basefontname findfont def
  249.                 /newfont basefontdict maxlength dict def
  250.  
  251.                 basefontdict
  252.                 {exch dup dup /FID ne exch /Encoding ne and
  253.                         {exch newfont 3 1 roll put}
  254.                         {pop pop}
  255.                         ifelse
  256.                 }forall
  257.                 newfont /FontName newfontname put
  258.                 newfont /Encoding newencodingdict put
  259.                 newfontname newfont definefont pop
  260.         end
  261. } def
  262.  
  263. /strcat {
  264.     /s2 exch def
  265.     /s1 exch def
  266.     s1 length s2 length add string
  267.     dup 0 s1 putinterval
  268.     dup s1 length s2 putinterval
  269. } def
  270.  
  271. /selectEncodedScaledFont {
  272.     /fontname exch def
  273.     /scaleY exch def
  274.     /scaleX exch def
  275.  
  276.     /encfontname fontname dup length string cvs
  277.     (-ISOLATIN1) strcat cvlit def
  278.     fontname encfontname ISOLATIN1 ReEncode
  279.     encfontname findfont
  280.     scaleX 0 0 scaleY neg 0 0 6 array astore
  281.     makefont setfont
  282. } def
  283.