home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume17 / pps / slide.pro < prev    next >
Text File  |  1989-02-06  |  2KB  |  130 lines

  1. % $Header: slide.pro,v 0.0 88/06/22 05:22:44 on Rel $
  2. % General macros
  3. /curx { currentpoint pop } def
  4. /cury { currentpoint exch pop } def
  5. /min { 2 copy gt { exch } if pop } def
  6. /max { 2 copy lt { exch } if pop } def
  7.  
  8. /vecop {
  9. % [ v1x v1y ] [ v2x v2y ] { op } vecop [ v1x v2x { op } v1y v2y { op } ]
  10.     3 1 roll aload pop
  11.     3 2 roll aload pop
  12.     3 2 roll
  13.     5 -1 roll dup 6 1 roll exec
  14.     exch 4 2 roll exch exec
  15.     exch
  16.     [ 3 1 roll ]
  17. } def
  18.  
  19. % Automatic stretching
  20. /pagedim { % - pagedim [ llx lly ] [ urx ury ]
  21.     initclip clippath pathbbox
  22.     [ 3 1 roll ]
  23.     3 1 roll
  24.     [ 3 1 roll ]
  25. } def
  26.  
  27. /ndim { % - ndim [ nx ny ]
  28.     [ I setfont (n) stringwidth pop dy ]
  29. } def
  30.  
  31. /stretch { % w h stretch -
  32.     dup
  33.     % How much can we magnify?
  34.     pagedim { sub } vecop margin { sub } vecop    % page space
  35.     exch { div } vecop
  36.     aload pop min exch
  37.     % How much can we magnify on rotated page?
  38.     [ pagedim { sub } vecop margin { sub } vecop aload pop exch ]
  39.     exch { div } vecop
  40.     aload pop min exch
  41.  
  42.     gsave
  43.     2 copy
  44.     gt {    % landscape
  45.         pagedim exch pop
  46.         margin [ 2 2 ] { div } vecop { add } vecop
  47.         aload pop translate
  48.         90 rotate
  49.         pop dup scale
  50.     } {    % portrait
  51.         [ pagedim 0 get exch 1 get ]
  52.         margin [ 2 -2 ] { div } vecop { add } vecop
  53.         aload pop translate
  54.         dup scale pop
  55.     } ifelse
  56.     /txfrm matrix currentmatrix def
  57.     grestore
  58. } def
  59.  
  60. % pps instructions
  61. /fname {    % string fname -
  62.     /filename exch def
  63.     /pageno 0 def
  64.     1 f
  65. } def
  66.  
  67. /fdate { /date exch def } def
  68. /funct { pop } def
  69.  
  70. /t {    % ntabs t -
  71.     { 
  72.         curx 1 add
  73.         tabwidth div ceiling
  74.         tabwidth mul
  75.         cury moveto
  76.     } repeat
  77. } def
  78.  
  79. /n {    % nlines n -
  80.     { 0 cury dy sub moveto } repeat
  81. } def
  82.  
  83. /f {    % npages f -
  84.     {
  85.         totalpage 0 gt {
  86.             showpage
  87.         } if
  88.         /totalpage totalpage 1 add def
  89.         /pageno pageno 1 add def
  90.     } repeat
  91.  
  92.     txfrm setmatrix
  93.     0 0 moveto
  94.     1 n
  95. } def
  96.     
  97. /s {    % string font s -
  98.     setfont
  99.     show
  100. } def
  101.  
  102. /ppsinit { % width ht ppsinit -
  103.     fonts {
  104.         findfont ppoints scalefont def
  105.     } forall
  106.     [ 3 1 roll ] ndim { mul } vecop stretch
  107.     /tabwidth ndim 0 get tabstop mul def
  108.     /totalpage 0 def
  109. } def
  110.  
  111. /ppsdone {    % - ppsdone -
  112.     1 f
  113. } def
  114.  
  115. % Fonts -- should better be fixed pitch.
  116. /fonts 4 dict def
  117. fonts begin
  118.     /C /NewCenturySchlbk-Roman def    % Comments
  119.     /K /Courier-Bold def        % Keywords
  120.     /S /Courier-Oblique def        % Strings
  121.     /I /Courier def            % The rest
  122. end
  123.  
  124. % Page parameters
  125. /margin [ 60 60 ] def        % x, y margin in points
  126. /ppoints 10 def            % pointsize -- do not change!
  127. /dy ppoints def            % line spacing, >= ppoints
  128. /tabstop 8 def            % ens per tabstop
  129. %%EndProlog
  130.