home *** CD-ROM | disk | FTP | other *** search
- #!/bin/csh -f
- #creates a macintosh "postscript with pict preview" file
- #in macbinary format. ( transfer to a mac in binary/macbinary enabled mode )
- #
- ###options, change defaults by uncommenting "#" lines _SEE_README_
- ###_any_ of these options may be 'unset' or commented out
- #set ps2epsdir = ( /usr/new/bin ) # add to search path
- #set notranslate #do not translate any line endings
- #set notransfile #put mac line ending on only first two lines
- #set havemacps #pass through macps if necessary
- #set noshowpage #undefine showpage in eps file
- #set density = 72 #dont change this, it doesn't work :-(
- set widenbox = 1 #add n points extra white space around image
- #set bbinfo #do not look for existing bounding box
- set widenboxbb = 0 #widenbox used when using existing bounding box
- set error = er_echo #turn on error reporting
- #set log = ps2eps.log #write to log rather than stderr
- set debuglev = 1 #default debug level ( 0 = none, 5 = all )
- #set quiet #make -q on by default
- ###end of options, end of even mildly interesting notes
- if($?debuglev == 0)set debuglev = 0
- set destdir = '.'
- while( $#argv > 0 )
- switch ( $1 )
- case -widen
- set widenbox = $2
- if( $widenbox == unset )unset widenbox
- shift
- breaksw
- case -q
- case -batch
- set quiet
- breaksw
- case -d
- set destdir = $2
- shift
- breaksw
- case -pipe
- set destdir = stdout
- case -debug
- set debuglev = $2
- shift
- breaksw
- case -log
- set logfile = $2
- shift
- breaksw
- default
- set source = $1 #full path name of original ps file
- breaksw
- endsw
- shift
- end
- if( $destdir == stdout )then
- set quiet
- if( $?logfile == 0 )set logfile = ps2eps-mac.log
- endif
- if( $?error == 1 && $?logfile == 1 )then
- rm -f $logfile
- set error = ( $error -log $logfile )
- endif
- if( $?error == 0 )set error = er_echo ##debug
- if( -x $error[1] )goto errorok ##debug
- echo error, $error[1] is not on your path
- if( -x st_echo )then
- set error = st_echo
- else
- echo fatal error, st_echo is not on your path either
- exit
- endif ##debug
- errorok:
- set error = ( $error -off $debuglev )
- if( $debuglev >= 4 )then ##debug
- $error -level 4 shell variables... ##debug
- set | $error -cat -level 4 ##debug
- $error -level 4 environment variables... ##debug
- printenv | $error -cat -level 4 ##debug
- $error -level 4 directory listing... ##debug
- /bin/ls -l | $error -cat -level 4 ##debug
- endif ##debug
- if( $?ps2epsdir == 1 )then
- set path = ( $ps2epsdir $path )
- endif
- set psfile = $source:t #original file without pathname
- set name = $psfile:r #root name ( .ps removed )
- $error -level 2 reading $source to create ${name}.eps.bin ##debug
- set ppm = ${name}.ppm #ghostscript output
- set eps = ${name}.eps #name of mac file to be created
- set pict = ${eps}.pict #pict data output by ppmtopict
- set dat = ${eps}.ps #data fork, %%boundin box added and line ends changed
- set bin = ${eps}.bin #macbinary file
- set save = ${pict}-save #temporary copy of original
- set fls = ( $eps $ppm $pict $dat $bin $save )
- set np = 1
- while( -f ${name}.${np}ppm || $np < 4 )
- set fls = ( $fls ${name}.${np}ppm )
- @ np = $np + 1
- end
- set destroy
- foreach i ( $fls )
- if( -f $i )then
- if( $?quiet == 0 )echo $i will be over written or deleted
- set destroy = ( $destroy $i )
- endif
- end
- set q = y
- if( "$destroy" != "" && $?quiet == 0 )then
- echo -n "continue y/n? "
- set q = $<
- endif
- if( $q != y )exit
- foreach i ( $destroy )
- $error -level 1 removing $i -level 3 "`/bin/ls -l $i`" ##debug
- rm -f $i
- end
- if( $psfile != $source )cp $source $psfile
- if( $?widenbox == 1 )then
- switch ( $?bbinfo )
- case 0
- # do we need to look further than 20 lines?
- set bbinfo = `head -20 $psfile | grep '%%BoundingBox:' | head -1`
- if( $#bbinfo == 0 )goto nobbox
- $error -level 1 using bounding box information from source file $bbinfo ##debug
- if( $?widenboxbb == 0 )set widenboxbb = $widenbox
- set widenbox = $widenboxbb
- if( $widenbox != 0)$error -level 1 widened by $widenbox ##debug
- nobbox:
- breaksw
- endsw
- endif
- if( $?havemacps == 1 && `grep '%%IncludeProcSet: "(AppleDict md)"' $psfile | wc -l` != 0 )then
- mv $psfile $save
- $error -level 1 running macps on file -- only for ghostscript ##debug
- macps $save > $psfile
- set macpsed
- endif
- if( $?density == 0 )set density = 72
- $error -level 1 running ghostscript.... ##debug
- gs -q -dNODISPLAY pstoppm.ps << DGC | $error -cat -level 3
- $density $density ppmsetdensity
- ($name) ppm1run
- DGC
- if( -f $ppm )goto gsdone
- if( -f ${name}.1ppm )then
- set npages = ( ${name}.*ppm )
- $error -level 0 sorry, this file apparently contains $#npages pages
- $error -level 0 you can not create multi page eps-pict files
- rm -f $npages
- else
- $error -level 0 fatal error, no output from ghostscript
- $error -level 0 re-run using -debug 3 or higher to see ghostscript errors
- endif
- exit
- gsdone:
- $error -level 1 ghostscript done ##debug
- if ( $?macpsed == 1)mv $save $psfile
- set translate = "tr '\012' '\015'"
- if( $?notranslate == 1)set translate = "cat -"
- switch ( $?widenbox )
- case 1
- touch $dat
- if( $#bbinfo == 0 || $widenbox != 0 )then
- echo "%\!PS-Adobe-2.0 EPSF-1.2" | $translate > $dat
- echo -n "%%BoundingBox: " >> $dat
- set append
- $error -level 2 will append bounding box info to postscipt ##debug
- else
- $error -level 2 postscipt bounding box left alone ##debug
- endif
- if( $#bbinfo != 0 )goto ownbb
- $error -level 1 getting bounding box info from pbmtoepsi ##debug
- set bbinfo = ( `pbmtoepsi $ppm | head -2 | tail -1` )
- $error -level 2 pbmtoepsi says $bbinfo ##debug
- @ bbinfo[3] = $bbinfo[3] - 1 # I think the pbmtoepsi box is
- @ bbinfo[4] = $bbinfo[4] + 1 # not quite correct
- $error -level 2 "'fixed' to be " $bbinfo ##debug
- #_____note the location of the 'shift bbinfo' line###
- ownbb:
- shift bbinfo
- if( $widenbox != 0 )$error -level 1 widening bounding box by $widenbox ##debug
- while( $widenbox > 0 && ( $bbinfo[1] - $widenbox < 0 || $bbinfo[2] - $widenbox < 0 ) )
- $error -level 1 -n cant widen box by $widenbox ##debug
- @ widenbox = $widenbox - 1
- $error -level 1 .... using $widenbox ##debug
- end
- @ bbinfo[1] = $bbinfo[1] - $widenbox
- @ bbinfo[2] = $bbinfo[2] - $widenbox
- @ bbinfo[3] = $bbinfo[3] + $widenbox
- @ bbinfo[4] = $bbinfo[4] + $widenbox
- if( $?append == 1)echo $bbinfo | $translate >> $dat
- breaksw
- default
- $error -level 1 writing eps header using pbmtoepsi directly ##debug
- pbmtoepsi $ppm | head -2 | $translate > $dat
- breaksw
- endsw
- if( $?noshowpage == 1 )then
- echo "/showpage {} def" | $translate >> $dat
- $error -level 1 "/showpage {} def" added to postscript ##debug
- endif
- if( $?notransfile == 1)set translate = "cat -"
- if( "$translate" != "cat -")$error -level 1 translating line endings on postscript file ##debug
- cat $psfile | $translate >> $dat
- if( $psfile != $source )rm -f $psfile
- if( $?widenbox == 1 )then
- @ xwide = $bbinfo[3] - $bbinfo[1]
- @ yhi = $bbinfo[4] - $bbinfo[2]
- set xcut = $bbinfo[1]
- @ ycut = - $yhi + $bbinfo[2]
- $error -level 2 pict bounding box $bbinfo ##debug
- set bber = "fatal bounding box error:" ##debug
- if( $xcut < 0 )set bber = ( $bber "x = $xcut out of bounds " ) ##debug
- if( $xwide < 8 )set bber = ( $bber "xwidth = $xwide less than 8 is too small" ) ##debug
- if( $yhi + $ycut > 0 )set bber = ( $bber "y out of bounds" ) ##debug
- if( $#bber > 1 )$error -level 0 $bber ##debug
- if( $#bber > 1 )exit ##debug
- $error -level 1 writing pict file using pnmcut,ppmtopict ##debug
- $error -level 2 pnmcut $xcut $ycut $xwide $yhi $ppm ##debug
- ( pnmcut $xcut $ycut $xwide $yhi $ppm | ppmtopict - > $pict ) |& \
- $error -cat -level 2
- else
- $error -level 1 writing pict file using pnmcrop,ppmtopict ##debug
- pnmcrop $ppm | ppmtopict - > $pict
- endif
- if($debuglev >= 3)$error -level 3 removing "`/bin/ls -l $ppm`" ##debug
- rm -f $ppm
- set iftype ifcreator
- if( $?EPSTYPE != 0 )then
- set iftype = ( -type $EPSTYPE )
- endif
- if( $?EPSCREATOR != 0 )then
- set ifcreator = ( -creator $EPSCREATOR )
- endif
- $error -level 1 writing macbinary file ##debug
- ps-pict2macb $eps $iftype $ifcreator |& $error -cat -level 2
- if($debuglev >= 3)then ##debug
- $error -level 3 removing "`/bin/ls -l $pict`" ##debug
- $error -level 3 removing "`/bin/ls -l $dat`" ##debug
- endif ##debug
- rm -f $pict $dat
- switch ( $destdir )
- case .
- $error -level 1 macbinary file $bin saved in current directory ##debug
- breaksw
- case stdout
- cat $bin
- if($debuglev >= 3)$error -level 3 removing "`/bin/ls -l $bin`" ##debug
- rm -f $bin
- $error -level 1 macbinary written to stdout ##debug
- breaksw
- default
- mv $bin $destdir
- $error -level 1 output macbinary file is $destdir ##debug
- breaksw
- endsw
-