chimera/util/pstopxm.script
2025-03-12 01:30:36 +09:00

36 lines
1.2 KiB
Bash

#!/bin/sh
# pstoppm
# pstoppm converts postscript to ppm using ghostscript
# Benno Blumenthal benno@ldgo.columbia.edu
#
# modified very very little by John Kilburg john@cs.unlv.edu
# basically I turned it into pstopxm.
#
# $1 = should be one of pbmraw, pgmraw, ppmraw
# $2 == postscript file
#
# first we pull the bounding box comment out of the file
# if there is no bounding box then GEOM will be empty, if there is one
# it will be lx###ly###ux###uy###.
GEOM=`sed -n -e '/^%%BoundingBox: *[0-9][0-9]* *[0-9]* *[0-9]* *[0-9]*/s/%%BoundingBox: *\([0-9]*\) *\([0-9]*\) *\([0-9]*\) *\([0-9]*\)/lx\1ly\2ux\3uy\4/p' $2`
if [ .$GEOM = "." ]; then
# if no bounding box, we just feed it to gs
(cat $2; echo "showpage") | gs -q -dSAFER -dNOPAUSE -sDEVICE=$1 -sOutputFile=- -
else
# there was a bounding box
# pull off each number
lx=`expr $GEOM : "lx\([0-9]*\)"`
ly=`expr $GEOM : ".*ly\([0-9]*\)"`
ux=`expr $GEOM : ".*ux\([0-9]*\)"`
uy=`expr $GEOM : ".*uy\([0-9]*\)"`
# compute the size
ysize=`expr $uy - $ly`
xsize=`expr $ux - $lx`
GEOMC=-g${xsize}x${ysize}
# send the plot to gs shifted and the geometry shrunk to fit.
(echo "-${lx} -${ly} translate" ; cat $2; echo "showpage") | gs -q -dSAFER -dNOPAUSE -sDEVICE=$1 $GEOMC -sOutputFile=- -
fi
# eof