home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / util / unix / ps2eps11.sha / ps2eps-mac < prev    next >
Encoding:
Text File  |  1992-11-05  |  8.7 KB  |  256 lines

  1. #!/bin/csh -f
  2. #creates a macintosh "postscript with pict preview" file
  3. #in macbinary format. ( transfer to a mac in binary/macbinary enabled mode )
  4. #
  5. ###options, change defaults by uncommenting "#" lines  _SEE_README_
  6. ###_any_ of these options may be 'unset' or commented out
  7. #set ps2epsdir =  ( /usr/new/bin )     # add to search path
  8. #set notranslate           #do not translate any line endings
  9. #set notransfile           #put mac line ending on only first two lines
  10. #set havemacps             #pass through macps if necessary
  11. #set noshowpage            #undefine showpage in eps file
  12. #set density = 72          #dont change this, it doesn't work :-(
  13. set widenbox = 1           #add n points extra white space around image
  14. #set bbinfo                #do not look for existing bounding box
  15. set widenboxbb = 0         #widenbox used when using existing bounding box
  16. set error = er_echo        #turn on error reporting
  17. #set log = ps2eps.log      #write to log rather than stderr
  18. set debuglev = 1           #default debug level ( 0 = none, 5 = all )
  19. #set quiet                  #make -q on by default
  20. ###end of options, end of even mildly interesting notes
  21. if($?debuglev == 0)set debuglev = 0
  22. set destdir = '.'
  23. while( $#argv >  0  )
  24.  switch ( $1 )
  25.  case -widen
  26.   set widenbox = $2
  27.   if( $widenbox == unset )unset widenbox
  28.   shift
  29.  breaksw
  30.  case -q
  31.  case -batch
  32.   set quiet
  33.  breaksw
  34.  case -d
  35.   set destdir = $2
  36.   shift
  37.  breaksw
  38.  case -pipe
  39.   set destdir = stdout
  40.  case -debug
  41.   set debuglev = $2
  42.   shift
  43.  breaksw
  44.  case -log
  45.   set logfile = $2
  46.   shift
  47.  breaksw
  48.  default
  49.   set source = $1 #full path name of original ps file
  50.  breaksw
  51.  endsw
  52.  shift
  53. end
  54. if( $destdir == stdout )then
  55.  set quiet
  56.  if( $?logfile == 0 )set logfile = ps2eps-mac.log  
  57. endif
  58. if( $?error == 1 && $?logfile == 1 )then
  59. rm -f $logfile
  60. set error = ( $error -log $logfile )
  61. endif
  62. if( $?error == 0 )set error = er_echo                 ##debug
  63. if( -x $error[1] )goto errorok                        ##debug
  64. echo error, $error[1] is not on your path
  65. if( -x st_echo )then
  66. set error = st_echo 
  67. else
  68. echo fatal error, st_echo is not on your path either
  69. exit
  70. endif                                                 ##debug
  71. errorok:
  72. set error = ( $error -off $debuglev )
  73. if( $debuglev >= 4 )then                           ##debug
  74.  $error -level 4 shell variables...         ##debug
  75.  set | $error -cat -level 4                  ##debug
  76.  $error -level 4  environment variables...   ##debug
  77.  printenv | $error -cat -level 4             ##debug
  78.  $error -level 4  directory listing...       ##debug
  79.  /bin/ls -l | $error -cat -level 4           ##debug
  80. endif                                                 ##debug
  81. if( $?ps2epsdir == 1 )then
  82.  set path = ( $ps2epsdir $path )
  83. endif
  84. set psfile =  $source:t #original file without pathname
  85. set name = $psfile:r    #root name ( .ps removed )
  86. $error -level 2  reading $source to create ${name}.eps.bin ##debug
  87. set ppm = ${name}.ppm   #ghostscript output
  88. set eps =  ${name}.eps  #name of mac file to be created
  89. set pict = ${eps}.pict  #pict data output by ppmtopict
  90. set dat = ${eps}.ps     #data fork, %%boundin box added and line ends changed
  91. set bin = ${eps}.bin    #macbinary file
  92. set save = ${pict}-save #temporary copy of original
  93. set fls = (  $eps $ppm $pict $dat $bin $save )
  94. set np = 1
  95. while( -f ${name}.${np}ppm || $np < 4 )
  96. set fls = (  $fls ${name}.${np}ppm )
  97. @ np = $np + 1
  98. end
  99. set destroy
  100. foreach i ( $fls )
  101.  if( -f $i )then
  102.   if( $?quiet == 0 )echo $i will be over written or deleted
  103.   set destroy = ( $destroy $i )
  104.  endif
  105. end
  106. set q = y
  107. if( "$destroy" != "" && $?quiet ==  0 )then
  108.  echo -n "continue y/n? "
  109.  set q = $<
  110. endif
  111. if( $q != y )exit
  112. foreach i ( $destroy )
  113.  $error -level 1 removing $i -level 3 "`/bin/ls -l $i`" ##debug
  114.  rm -f $i
  115. end
  116. if( $psfile != $source )cp $source $psfile
  117. if( $?widenbox == 1 )then
  118.  switch ( $?bbinfo )
  119.  case 0
  120. # do we need to look further than 20 lines?
  121.   set bbinfo = `head -20 $psfile | grep '%%BoundingBox:' | head -1`
  122.   if( $#bbinfo ==  0 )goto nobbox
  123.   $error -level 1  using bounding box information from source file $bbinfo ##debug
  124.   if( $?widenboxbb == 0 )set widenboxbb =  $widenbox
  125.   set widenbox = $widenboxbb
  126.   if( $widenbox != 0)$error -level 1  widened by $widenbox ##debug
  127.   nobbox:
  128.  breaksw
  129.  endsw
  130. endif
  131. if( $?havemacps == 1 && `grep '%%IncludeProcSet: "(AppleDict md)"' $psfile | wc -l` != 0 )then
  132.  mv $psfile $save
  133.  $error -level 1  running macps on file -- only for ghostscript ##debug
  134.  macps $save > $psfile
  135.  set macpsed
  136. endif
  137. if( $?density == 0 )set density = 72
  138. $error -level 1  running ghostscript.... ##debug
  139. gs -q -dNODISPLAY pstoppm.ps << DGC | $error -cat -level 3
  140. $density $density ppmsetdensity
  141. ($name) ppm1run
  142. DGC
  143. if( -f $ppm )goto gsdone
  144. if( -f ${name}.1ppm )then
  145. set npages = ( ${name}.*ppm )
  146. $error -level 0 sorry, this file apparently contains $#npages pages
  147. $error -level 0 you can not create multi page eps-pict files
  148. rm -f $npages
  149. else
  150. $error -level 0 fatal error, no output from ghostscript
  151. $error -level 0 re-run using -debug 3 or higher to see ghostscript errors
  152. endif
  153. exit
  154. gsdone:
  155. $error -level 1  ghostscript done ##debug
  156. if ( $?macpsed == 1)mv $save $psfile
  157. set translate =  "tr '\012' '\015'"
  158. if( $?notranslate == 1)set translate = "cat -"
  159. switch ( $?widenbox )
  160.  case 1
  161.   touch $dat
  162.    if( $#bbinfo == 0 || $widenbox != 0 )then
  163.    echo "%\!PS-Adobe-2.0 EPSF-1.2" | $translate > $dat
  164.    echo -n "%%BoundingBox: " >> $dat
  165.    set append
  166.    $error -level 2  will append bounding box info to postscipt ##debug
  167.   else
  168.    $error -level 2  postscipt bounding box left alone ##debug
  169.   endif
  170.   if( $#bbinfo != 0 )goto ownbb
  171.   $error -level 1  getting bounding box info from pbmtoepsi ##debug
  172.   set bbinfo  = ( `pbmtoepsi $ppm | head -2 | tail -1`  )
  173.   $error -level 2 pbmtoepsi says $bbinfo ##debug
  174.   @ bbinfo[3] = $bbinfo[3] - 1   # I think the pbmtoepsi box is 
  175.   @ bbinfo[4] = $bbinfo[4] + 1   # not quite correct   
  176.   $error -level 2  "'fixed' to be " $bbinfo ##debug
  177. #_____note the location of the 'shift bbinfo' line###
  178.   ownbb:
  179.   shift bbinfo
  180.   if( $widenbox != 0 )$error -level 1  widening bounding box by $widenbox ##debug
  181.   while( $widenbox > 0 && ( $bbinfo[1] - $widenbox < 0 || $bbinfo[2] - $widenbox < 0 ) )
  182.    $error -level 1  -n cant widen box by $widenbox ##debug
  183.    @ widenbox = $widenbox - 1
  184.    $error -level 1  .... using $widenbox ##debug
  185.   end
  186.   @ bbinfo[1] = $bbinfo[1] - $widenbox
  187.   @ bbinfo[2] = $bbinfo[2] - $widenbox
  188.   @ bbinfo[3] = $bbinfo[3] + $widenbox
  189.   @ bbinfo[4] = $bbinfo[4] + $widenbox
  190.   if( $?append == 1)echo $bbinfo | $translate >> $dat
  191.  breaksw
  192.  default
  193.   $error -level 1  writing eps header using pbmtoepsi directly ##debug
  194.   pbmtoepsi $ppm | head -2 | $translate > $dat
  195.  breaksw
  196. endsw
  197. if( $?noshowpage == 1 )then
  198.  echo "/showpage {} def" | $translate >> $dat
  199.  $error -level 1   "/showpage {} def" added to postscript  ##debug
  200. endif
  201. if( $?notransfile == 1)set translate = "cat -"
  202. if( "$translate" != "cat -")$error -level 1  translating line endings on postscript file ##debug
  203. cat $psfile  | $translate >> $dat
  204. if( $psfile != $source )rm -f $psfile
  205. if( $?widenbox == 1 )then
  206.  @ xwide =  $bbinfo[3] - $bbinfo[1] 
  207.  @ yhi = $bbinfo[4] - $bbinfo[2]
  208.  set xcut = $bbinfo[1]
  209.  @ ycut = - $yhi + $bbinfo[2]
  210.  $error -level 2  pict bounding box $bbinfo ##debug
  211.  set bber = "fatal bounding box error:" ##debug
  212.  if( $xcut < 0 )set bber = ( $bber "x = $xcut out of bounds " ) ##debug
  213.  if( $xwide < 8 )set bber = ( $bber "xwidth = $xwide less than 8 is too small" )  ##debug
  214.  if( $yhi + $ycut > 0 )set bber = ( $bber "y out of bounds" ) ##debug
  215.  if( $#bber > 1 )$error -level 0  $bber ##debug
  216.  if( $#bber > 1 )exit  ##debug
  217.  $error -level 1  writing pict file using pnmcut,ppmtopict ##debug
  218.  $error -level 2  pnmcut $xcut $ycut $xwide $yhi $ppm ##debug
  219.  ( pnmcut $xcut $ycut $xwide $yhi $ppm | ppmtopict - > $pict ) |& \
  220.     $error -cat -level 2
  221. else
  222.  $error -level 1  writing pict file using pnmcrop,ppmtopict ##debug
  223.  pnmcrop $ppm | ppmtopict - > $pict 
  224. endif
  225. if($debuglev >= 3)$error -level 3  removing "`/bin/ls -l $ppm`" ##debug
  226. rm -f $ppm
  227. set iftype ifcreator
  228. if( $?EPSTYPE != 0 )then
  229.  set iftype = ( -type $EPSTYPE )
  230. endif
  231. if( $?EPSCREATOR != 0 )then
  232.  set ifcreator = ( -creator $EPSCREATOR )
  233. endif
  234. $error -level 1  writing macbinary file ##debug
  235. ps-pict2macb $eps $iftype $ifcreator |& $error -cat -level 2 
  236. if($debuglev >= 3)then ##debug
  237.  $error -level 3  removing "`/bin/ls -l $pict`" ##debug
  238.  $error -level 3  removing "`/bin/ls -l $dat`" ##debug
  239. endif ##debug
  240. rm -f $pict $dat
  241. switch ( $destdir )
  242.  case .
  243.   $error -level 1  macbinary file $bin saved in current directory ##debug
  244.  breaksw
  245.  case stdout
  246.   cat $bin
  247.   if($debuglev >= 3)$error -level 3  removing "`/bin/ls -l $bin`" ##debug
  248.   rm -f $bin
  249.   $error -level 1  macbinary written to stdout          ##debug
  250.  breaksw
  251.  default
  252.   mv $bin $destdir
  253.   $error -level 1  output macbinary file is $destdir    ##debug
  254.  breaksw
  255. endsw
  256.