From: CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX" 13-JUL-1990 05:20:13.10 To: MRGATE::"ARISIA::EVERHART" CC: Subj: Re: Mail server for VMS port of PBMPLUS Received: by crdgw1.ge.com (5.57/GE 1.70) id AA09290; Fri, 13 Jul 90 04:46:33 EDT Received: From UCBVAX.BERKELEY.EDU by CRVAX.SRI.COM with TCP; Thu, 12 JUL 90 15:15:57 PDT Received: by ucbvax.Berkeley.EDU (5.63/1.41) id AA21807; Thu, 12 Jul 90 15:05:37 -0700 Received: from USENET by ucbvax.Berkeley.EDU with netnews for info-vax@kl.sri.com (info-vax@kl.sri.com) (contact usenet@ucbvax.Berkeley.EDU if you have questions) Date: 12 Jul 90 15:19:12 GMT From: swrinde!zaphod.mps.ohio-state.edu!maverick.ksu.ksu.edu!deimos.cis.ksu.edu!mccall!tp@ucsd.edu Organization: The McCall Pattern Co., Manhattan, KS, USA Subject: Re: Mail server for VMS port of PBMPLUS Message-Id: <3113.269c94f0@mccall.com> References: <3061.26933e04@mccall.com>, <435@fryeten.uucp> Sender: info-vax-request@kl.sri.com To: info-vax@kl.sri.com In article <435@fryeten.uucp>, doug@fryeten.uucp (FRONT OFFICE VERMIN) writes: > Can someone summarize what PBMPLUS is? Here is the descriptive part of the README file, followed by the interesting parts of the README.VMS file. ----------- README. Extended Portable Bitmap Toolkit Distribution of 22nov89 Previous distribution 13sep89 Modified for VMS 19jun90 Included are a number of programs for converting various image formats to and from portable formats; plus some tools for manipulating the portable formats. The package is broken up into four parts (five parts if you count this one, the zeroth part). First is PBM, for bitmaps (1 bit per pixel). Then there is PGM, for grayscale images. Next is PPM, for full-color images. Last, there is PNM, which does content-independent manipulations on any of the three formats. These parts are semi-independent; if you're only going to deal with bitmaps, you don't have to install PGM and PPM, and this makes PNM run faster; if you want PGM, you must install PBM but can leave PPM out; but if you want PPM, you must install both PGM and PBM. PNM is optional but recommended. To install: (For VMS installation, see README.VMS) [omitted -- tp] Jef Poskanzer jef@well.sf.ca.us {ucbvax, lll-crg, sun!pacbell, apple, hplabs}!well!jef Files [I've just listed the actual programs -- tp] brushtopbm.c convert Xerox doodle brushes to portable bitmap cmuwmtopbm.c convert CMU window manager format to portable bitmap g3topbm.c convert Group 3 FAX to portable bitmap icontopbm.c convert Sun icon to portable bitmap gemtopbm.c convert GEM .img format to portable bitmap macptopbm.c convert MacPaint to portable bitmap mgrtopbm.c convert MGR format to portable bitmap pcxtopbm.c convert PC paintbrush format to portable bitmap picttopbm.c convert PICT to portable bitmap rasttopbm.c convert Sun raster to portable bitmap xbmtopbm.c convert X10 or X11 bitmap to portable bitmap xwdtopbm.c convert X10 or X11 window dump to portable bitmap pbmtoascii.c convert portable bitmap to ASCII graphic form pbmtobbnbg.c convert portable bitmap to BBN BitGraph graphics pbmtocmuwm.c convert portable bitmap to CMU window manager format pbmtog3.c convert portable bitmap to Group 3 FAX pbmtogo.c convert portable bitmap to GraphOn graphics pbmtoicon.c convert portable bitmap to Sun icon pbmtolj.c convert portable bitmap to HP LaserJet pbmtomacp.c convert portable bitmap to MacPaint pbmtomgr.c convert portable bitmap to MGR format pbmtoptx.c convert portable bitmap to Printronix pbmtorast.c convert portable bitmap to Sun raster pbmtoxbm.c convert portable bitmap to X11 bitmap pbmtox10bm.c convert portable bitmap to X10 bitmap pbmtoxwd.c convert portable bitmap to X11 window dump pbmlife.c apply Conway's rules of Life to a portable bitmap pbmmake.c create a blank bitmap of a specified size pbmmask.c create a mask bitmap from a regular bitmap pbmpaste.c paste a rectangle into a portable bitmap pbmreduce.c reduce a portable bitmap N times, using Floyd-Steinberg pbmupc.c create a Universal Product Code bitmap fitstopgm.c convert FITS format to portable graymap fstopgm.c convert Usenix FaceSaver file to portable graymap hipstopgm.c convert HIPS format to portable graymap psidtopgm.c convert PostScript "image" data to portable graymap rawtopgm.c convert raw grayscale bytes to portable graymap tifftopgm.c convert TIFF format to portable graymap pgmtofits.c convert portable graymap to FITS format pgmtopbm.c convert portable graymap to portable bitmap pgmtops.c convert portable graymap to Encapsulated PostScript pgmenhance.c edge-enhance a portable graymap pgmhist.c print a histogram of the values in a portable graymap pgmnorm.c normalize contrast in a portable graymap giftoppm.c convert GIF to portable pixmap ilbmtoppm.c convert Amiga IFF ILBM to portable pixmap imgtoppm.c convert Img-whatnot to portable pixmap mtvtoppm.c convert MTV ray-tracer output to portable pixmap qrttoppm.c convert QRT ray-tracer output to portable pixmap rasttoppm.c convert Sun raster file to portable pixmap tgatoppm.c convert TrueVision Targa file to portable pixmap xwdtoppm.c convert color X10 or X11 window dump to portable pixmap ppmtogif.c convert portable pixmap to GIF ppmtoilbm.c convert portable pixmap to Amiga IFF ILBM ppmtopgm.c convert portable pixmap to portable graymap ppmtops.c convert portable pixmap to color Encapsulated PostScript ppmtorast.c convert portable pixmap to Sun raster file ppmtoxwd.c convert portable pixmap to color X11 window dump ppmarith.c perform arithmetic on two portable pixmaps ppmconvol.c general MxN convolution on a portable pixmap ppmcscale.c scale the colors in a portable pixmap ppmpat.c create a pretty pixmap ppmquant.c quantize colors down to a specified number ppmrotate.c rotate a portable pixmap ppmscale.c scale a portable pixmap ppmshear.c shear a portable pixmap ppmhist.c print a histogram of a portable pixmap pnmcat.c concatenate portable anymaps pnmcrop.c crop all like-colored borders off a portable anymap pnmcut.c select a rectangular region from a portable anymap pnmenlarge.c enlarge a portable anymap N times pnmflip.c perform one or more flip operations on a portable anymap pnminvert.c invert a portable anymap pnmpaste.c paste a rectangle into a portable anymap pnmtile.c replicate a portable anymap into a specified size ----------- README.VMS Some notes on the VMS implementation of PBMPLUS. Building it: [omitted, suffice to say that mms is supported, but not required -- tp] Defining the command symbols: A command procedure is provided to define symbols for all the PBMPLUS commands. Be sure that the SYMBOLS.COM file is in the top of the directory tree containing the executables, and just execute it by @dev:[dir]symbols using the appropriate device and directory. It will find all the exectutables in the tree and define them as foreign commands. Documentation: I can't help you much here. The unix man pages are included (they are the files *.1, *.3, and *.5). I don't have an automatic way to convert these to anything useful on VMS, and am not about to do it manually. You'll just have to read around the formatting commands, same as I do. Using the commands: These utilities are made to be used together. The VMS port supports the normal unix piping and file redirection. Briefly, this works as follows: command1 inputfile | command2 | command3 >outputfile What the above means is run command1 using inputfile as input (assuming that the command takes a filename argument). Make the output of this command the input of command2. Make the output of command2 the input of command3. Send the output of command3 to outputfile. Note that the utilities don't have filename arguments for output files, so you have to use the > construct to store the output in a file. As an example, say you want to convert a macpaint image to an X11 bitmap. Furthermore, you want to remove any constant color borders from the image in the process. This can be done as follows: macptopbm image.mac |pnmcrop | pbmtoxbm >image.xbm Note that all the commands run simultaneously, with all after the first being run in subprocesses. Be sure your subprocess quota is high enough. Of course, you can always use intermediate files. However, don't try to use the same filename as both input and output. Rather than creating a new version, it will attempt to use the same file and fail. Without subprocesses, the above command would be macptopbm image.mac >image.pbm pnmcrop image.pbm >image2.pbm pbmtoxbm image2.pbm >image.xbm delete image*.pbm;* A command or multi-command pipeline can be run entirely in one or more subprocesses by putting a "&" at the end of the line (with a space in front of it). What has been tested: fstopgm, giftoppm, macptopbm, pbmmake, pbmtomacp, pbmtoxbm, pgmenhance, pgmhist, pgmnorm, pgmtopbm, pnmcrop, pnmenlarge, pnmunraw, ppmconvol, ppmscale, ppmtogif, ppmtopgm, tgatoppm, xbmtopbm. I only have monocrome and 4-plane grayscale systems, so I couldn't test any of the actual color operations, which is why most of the ppm programs haven't been tested. I also don't have most of the data formats supported and couldn't test the converters. Since I didn't have to make ANY program specific changes, I suspect most of it works. All changes were include files, other than dealing with include files VMS doesn't support, and adding the getredirection call to each program to handle pipes and redirection. Known bugs: There is only one at this time. I tried to convert a Targa file to a GIF file. The Targa file had more than 256 colors. I tried to use ppmquant to reduce it to 256 colors, but it aborted with an integer divide by zero. Converting to pgm format and then to gif worked, so I don't think there is any problem with the Targa format per se, just ppmquant. -- Terry Poot The McCall Pattern Company (uucp: ...!rutgers!ksuvax1!mccall!tp) 615 McCall Road (800)255-2762, in KS (913)776-4041 Manhattan, KS 66502, USA