[comp.lang.idl-pvwave] SIXEL Driver Available

rivers@bnlls1.nsls.bnl.gov (Mark Rivers) (10/26/90)

I have written a SIXEL driver for PV-WAVE/IDL which I would be happy to share.
SIXEL is a simple protocol for sending bitmap images to printers and display
terminals. It is used by DEC in their LN03 and LA100 printers and in their 
newer terminals. The dirver is very useful for sending images to the LN03+
laser printer. The Tektronix driver can be used for sending VECTOR graphics to
the LN03+, but the SIXEl driver can be used to send greyscale images, such as
those generated by the TV, SHADE_SURF, SHADE_VOLUME, etc. The driver supports
the following keywords


The SIXEL driver supports all of the standard graphics and imaging routines. It
can display greyscale images via "dithering", i.e. turning off and on pixels in
a pattern to achieve shades of grey.

The Sixel driver works as follows:

  1) A bitmap image of your plot is constructed in the VAX memory.

  2) When the ERASE or DEVICE,/CLOSE command is issued the internal bitmap is
     converted into sixels and written to a disk file. This also done when 
     PV-WAVE is exited.

  3) The file can then be printed or displayed on a terminal.

The SIXEL driver is selected by the command

   SET_PLOT, 'SIXEL'

The following keywords are supported by the Sixel driver

FILE=file
This changes the name of the output file. The default is WAVE.SXL in the
current default directory.

/CLOSE
Performs an ERASE command and then closes the current output file.  It is
necessary to close the file before trying to print it or type it from within
PV-WAVE. Any open file will be closed automatically when PV-WAVE exits.

/LANDSCAPE
Prints the file in landscape orientation, i.e. with the X axis along the 11"
dimension of the paper.

/PORTRAIT
Prints the file in portrait orientation, i.e. with the X axis along the 8.5"
dimension of the paper. This is the default.

/FLOYD
Sets the dithering method to Floyd-Steinberg. This is the default.
Floyd-Steinberg dithering produces nicer looking greyscales than /ORDERED
dithering, but requires more compute time.

/ORDERED
Sets the dithering method to /ORDERED. This generally produces a less pleasing
greyscale than /FLOYD, but it runs faster.

/THRESHOLD
Sets the dithering method to /THRESHOLD. This prints all pixels in the range
0-127 as black and pixels in the range 128-255 as white.

RESOLUTION=[xres, yres]
This sets the resolution of the output in pixels/inch.  The default is
[150,150]. Each "sixel" in your plot may be printed as one or more "pixels" on
the output device. The LN03+ printer has 300 pixels per inch resolution. Thus
the default value prints each sixel as a 2x2 array of pixels. For a given size
plot decreasing the RESOLUTION values decreases the memory, computer time and
disk space required, at the expense of output quality.

SIZE=[xsize, ysize]
Sets the size of the output image in inches. The default is [6,6]. The size of
the bitmap is the product of the RESOLUTION and the SIZE. The result is
truncated to be a multiple of 8 bits horizontally and 6 bits vertically. The
default bitmap size is thus 896x900 (RESOLUTION=[150,150] and SIZE=[6,6].

The current version of the software ASSUMES that the output device has an
intrinsic resolution of 300 pixels/inch in each direction. This is true for the
LN03 laser printer. It is not true for other devices. In the future I will try
to support accurate size and resolution on other devices.

For more information:

Mark Rivers                              (516) 282-7708 or 5626
Building 815                             rivers@bnlx26.nsls.bnl.gov (Internet) 
Brookhaven National Laboratory           rivers@bnl (Bitnet)                   
Upton, NY 11973                          BNLX26::RIVERS  (Physnet)             
Mark Rivers                              (516) 282-7708 or 5626
Building 815                             rivers@bnlx26.nsls.bnl.gov (Internet) 
Brookhaven National Laboratory           rivers@bnl (Bitnet)                   
Upton, NY 11973                          BNLX26::RIVERS  (Physnet)             

rivers@bnlls1.nsls.bnl.gov (Mark Rivers) (03/02/91)

(This is basically a repost of an article posted a few months ago for those
who may not have seen it then.)

I have written a PV-WAVE and IDL driver for SIXEL devices. SIXEL stands for
"six pixels" and is DEC's protocol for sending bit-mapped images to
printers and terminals. It is supported by devices like the LN03 printer,
some newer VT terminals and dot matrix printers.

For the LN03+ printer the PV-WAVE/IDL Tektronix driver can be used for
vector graphics. However, the Tektronix driver does not support grey-scale
images, while my SIXEL driver does. The SIXEL driver is a full-blown
PV-WAVE/IDL device driver and supports all of the graphics and imaging
routines.

Note that Precision Visuals has said that they will be distributing the
driver I wrote with future releases of PV-WAVE. 

Anyone who would like to get a copy of the source code and documentation
for this driver can send me e-mail at the address below.

Mark Rivers                              (516) 282-7708 or 5626
Building 815                             rivers@bnlx26.nsls.bnl.gov (Internet) 
Brookhaven National Laboratory           rivers@bnl (Bitnet)                   
Upton, NY 11973                          BNLX26::RIVERS  (Physnet)