# Keywords Accepted by the IDL Devices

The following indicates which keywords are accepted by the DEVICE procedure. The NULL device is not listed as it accepts no keywords. Click on a keyword to see detailed information about that keyword.

Note: Most keywords to the DEVICE procedure are sticky — that is, once you set them, they remain in effect until you explicitly change them again, or end your IDL session. The exceptions are keywords used to return a value from the system (GET_FONTNAMES, for example) and those that perform a one-time-only operation (CLOSE_FILE, for example).

AVANTGARDE (PS)

AVERAGE_LINES (REGIS)

BINARY (CGM)

BITS_PER_PIXEL (PS)

BKMAN (PS)

BOLD (PS)

BOOK (PS)

BYPASS_TRANSLATION (WIN, X)

CLOSE (Z)

CLOSE_DOCUMENT (PRINTER)

CLOSE_FILE (CGM, HP, METAFILE, PCL, PS, REGIS, TEK)

CMYK (PS)

COLOR (PCL, PS)

COLORS (CGM, TEK)

COPY (WIN, X)

COURIER (PS)

CURSOR_CROSSHAIR (WIN, X)

CURSOR_IMAGE (WIN, X)

CURSOR_MASK (WIN, X)

CURSOR_ORIGINAL (WIN, X)

CURSOR_STANDARD (WIN, X)

CURSOR_XY (WIN, X)

DECOMPOSED (PS, WIN, X, Z)

DEMI (PS)

DIRECT_COLOR (X)

EJECT (HP)

ENCAPSULATED (PS)

ENCODING (CGM)

FILENAME (CGM, HP, METAFILE, PCL, PS, REGIS, TEK)

FLOYD (PCL, X)

FONT_INDEX (PS)

FONT_SIZE (PS)

GET_CURRENT_FONT (METAFILE, PRINTER, WIN, X)

GET_DECOMPOSED (PS, WIN, X, Z)

GET_FONTNAMES (METAFILE, PRINTER, WIN, X)

GET_FONTNUM (METAFILE, PRINTER, WIN, X)

GET_GRAPHICS_FUNCTION (WIN, X, Z)

GET_PAGE_SIZE (PRINTER)

GET_PIXEL_DEPTH (Z)

GET_SCREEN_SIZE (WIN, X)

GET_VISUAL_DEPTH (WIN, X)

GET_VISUAL_NAME (WIN, X)

GET_WINDOW_POSITION (WIN, X)

GET_WRITE_MASK (WIN, X, Z)

GIN_CHARS (TEK)

GLYPH_CACHE (METAFILE, PRINTER, PS, WIN, Z)

HELVETICA (PS)

INCHES (HP, METAFILE, PCL, PRINTER, PS)

INDEX_COLOR (METAFILE, PRINTER)

ISOLATIN1 (PS)

ITALIC (PS)

LANDSCAPE (HP, PCL, PRINTER, PS)

LANGUAGE_LEVEL (PS)

LIGHT (PS)

MEDIUM (PS)

NARROW (PS)

NCAR (CGM)

OBLIQUE (PS)

OPTIMIZE (PCL)

ORDERED (PCL, X)

OUTPUT (HP, PS)

PALATINO (PS)

PIXELS (PCL)

PLOT_TO (REGIS, TEK)

PLOTTER_ON_OFF (HP)

POLYFILL (HP)

PORTRAIT (HP, PCL, PRINTER, PS)

PRE_DEPTH

PRE_XSIZE

PRE_YSIZE

PREVIEW (PS)

PRINT_FILE (WIN)

PSEUDO_COLOR (X)

RESET_STRING (TEK)

RESOLUTION (PCL)

RETAIN (WIN, X)

SCALE_FACTOR (PRINTER, PS)

SCHOOLBOOK (PS)

SET_CHARACTER_SIZE (CGM, HP, METAFILE, PCL, PS, REGIS, TEK, WIN, X, Z)

SET_COLORMAP (PCL)

SET_COLORS (Z)

SET_FONT (METAFILE, PRINTER, PS, WIN, X, Z)

SET_GRAPHICS_FUNCTION (WIN, X, Z)

SET_PIXEL_DEPTH (Z)

SET_RESOLUTION (Z)

SET_STRING (TEK)

SET_TRANSLATION (X)

SET_WRITE_MASK (WIN, X, Z)

STATIC_COLOR (X)

STATIC_GRAY (X)

SYMBOL (PS)

TEK4014 (TEK)

TEK4100 (TEK)

TEXT (CGM)

THRESHOLD (PCL, X)

TIMES (PS)

TRANSLATION (WIN, X)

TRUE_COLOR (METAFILE, PRINTER, X)

TT_FONT (METAFILE, PRINTER, WIN, X, Z)

TTY (REGIS, TEK)

USER_FONT (PS)

VT240 (REGIS)

VT340 (REGIS)

WINDOW_STATE (WIN, X)

XOFFSET (HP, PCL, PRINTER, PS)

XON_XOFF (HP)

XSIZE (HP, METAFILE, PCL, PRINTER, PS)

YOFFSET (HP, PCL, PRINTER, PS)

YSIZE (HP, PCL, METAFILE, PRINTER, PS)

ZAPFCHANCERY (PS)

ZAPFDINGBATS (PS)

Z_BUFFERING (Z)

Keywords | Devices
CGM | HP | METAFILE | PCL | PRINTER | PS | REGIS | TEK | WIN | X | Z
AVANTGARDE |  |  |  |  |  | x |  |  |  |  |
AVERAGE_LINES |  |  |  |  |  |  | x |  |  |  |
BINARY | x |  |  |  |  |  |  |  |  |  |
BITS_PER_PIXEL |  |  |  |  |  | x |  |  |  |  |
BKMAN |  |  |  |  |  | x |  |  |  |  |
BOLD |  |  |  |  |  | x |  |  |  |  |
BOOK |  |  |  |  |  | x |  |  |  |  |
BYPASS_TRANSLATION |  |  |  |  |  |  |  |  | x | x |
CLOSE |  |  |  |  |  |  |  |  |  |  | x
CLOSE_DOCUMENT |  |  |  |  | x |  |  |  |  |  |
CLOSE_FILE | x | x | x | x |  | x | x | x |  |  |
CMYK |  |  |  |  |  | x |  |  |  |  |
COLOR |  |  |  | x |  | x |  |  |  |  |
COLORS | x |  |  |  |  |  |  | x |  |  |
COPY |  |  |  |  |  |  |  |  | x | x |
COURIER |  |  |  |  |  | x |  |  |  |  |
CURSOR_CROSSHAIR |  |  |  |  |  |  |  |  | x | x |
CURSOR_IMAGE |  |  |  |  |  |  |  |  | x | x |
CURSOR_MASK |  |  |  |  |  |  |  |  | x | x |
CURSOR_ORIGINAL |  |  |  |  |  |  |  |  | x | x |
CURSOR_STANDARD |  |  |  |  |  |  |  |  | x | x |
CURSOR_XY |  |  |  |  |  |  |  |  | x | x |
DECOMPOSED |  |  |  |  |  | x |  |  | x | x | x
DEMI |  |  |  |  |  | x |  |  |  |  |
DIRECT_COLOR |  |  |  |  |  |  |  |  |  | x |
EJECT |  | x |  |  |  |  |  |  |  |  |
ENCAPSULATED |  |  |  |  |  | x |  |  |  |  |
ENCODING | x |  |  |  |  |  |  |  |  |  |
FILENAME | x | x | x | x |  | x | x | x |  |  |
FLOYD |  |  |  | x |  |  |  |  |  | x |
FONT_INDEX |  |  |  |  |  | x |  |  |  |  |
FONT_SIZE |  |  |  |  |  | x |  |  |  |  |
GET_CURRENT_FONT |  |  | x |  | x |  |  |  | x | x |
GET_DECOMPOSED |  |  |  |  |  | x |  |  | x | x | x
GET_FONTNAMES |  |  | x |  | x |  |  |  | x | x |
GET_FONTNUM |  |  | x |  | x |  |  |  | x | x |
GET_GRAPHICS_FUNCTION |  |  |  |  |  |  |  |  | x | x | x
GET_PAGE_SIZE |  |  |  |  | x |  |  |  |  |  |
GET_PIXEL_DEPTH |  |  |  |  |  |  |  |  |  |  | x
GET_SCREEN_SIZE |  |  |  |  |  |  |  |  | x | x |
GET_VISUAL_DEPTH |  |  |  |  |  |  |  |  | x | x |
GET_VISUAL_NAME |  |  |  |  |  |  |  |  | x | x |
GET_WINDOW_POSITION |  |  |  |  |  |  |  |  | x | x |
GET_WRITE_MASK |  |  |  |  |  |  |  |  | x | x | x
GIN_CHARS |  |  |  |  |  |  |  | x |  |  |
GLYPH_CACHE |  |  | x |  | x | x |  |  | x |  | x
HELVETICA |  |  |  |  |  | x |  |  |  |  |
INCHES |  | x | x | x | x | x |  |  |  |  |
INDEX_COLOR |  |  | x |  | x |  |  |  |  |  |
ISOLATIN1 |  |  |  |  |  | x |  |  |  |  |
ITALIC |  |  |  |  |  | x |  |  |  |  |
LANDSCAPE |  | x |  | x | x | x |  |  |  |  |
LANGUAGE_LEVEL |  |  |  |  |  | x |  |  |  |  |
LIGHT |  |  |  |  |  | x |  |  |  |  |
MEDIUM |  |  |  |  |  | x |  |  |  |  |
NARROW |  |  |  |  |  | x |  |  |  |  |
NCAR | x |  |  |  |  |  |  |  |  |  |
OBLIQUE |  |  |  |  |  | x |  |  |  |  |
OPTIMIZE |  |  |  | x |  |  |  |  |  |  |
ORDERED |  |  |  | x |  |  |  |  |  | x |
OUTPUT |  | x |  |  |  | x |  |  |  |  |
PALATINO |  |  |  |  |  | x |  |  |  |  |
PIXELS |  |  |  | x |  |  |  |  |  |  |
PLOT_TO |  |  |  |  |  |  | x | x |  |  |
PLOTTER_ON_OFF |  | x |  |  |  |  |  |  |  |  |
POLYFILL |  | x |  |  |  |  |  |  |  |  |
PORTRAIT |  | x |  | x | x | x |  |  |  |  |
PRE_DEPTH |  |  |  |  |  | x |  |  |  |  |
PRE_XSIZE |  |  |  |  |  | x |  |  |  |  |
PRE_YSIZE |  |  |  |  |  | x |  |  |  |  |
PREVIEW |  |  |  |  |  | x |  |  |  |  |
PRINT_FILE |  |  |  |  |  |  |  |  | x |  |
PSEUDO_COLOR |  |  |  |  |  |  |  |  |  | x |
RESET_STRING |  |  |  |  |  |  |  | x |  |  |
RESOLUTION |  |  |  | x |  |  |  |  |  |  |
RETAIN |  |  |  |  |  |  |  |  | x | x |
SCALE_FACTOR |  |  |  |  | x | x |  |  |  |  |
SCHOOLBOOK |  |  |  |  |  | x |  |  |  |  |
SET_CHARACTER_SIZE | x | x | x | x | x | x | x | x | x | x | x
SET_COLORMAP |  |  |  | x |  |  |  |  |  |  |
SET_COLORS |  |  |  |  |  |  |  |  |  |  | x
SET_FONT |  |  | x |  | x | x |  |  | x | x | x
SET_GRAPHICS_FUNCTION |  |  |  |  |  |  |  |  | x | x | x
SET_PIXEL_DEPTH |  |  |  |  |  |  |  |  |  |  | x
SET_RESOLUTION |  |  |  |  |  |  |  |  |  |  | x
SET_STRING |  |  |  |  |  |  |  | x |  |  |
SET_TRANSLATION |  |  |  |  |  |  |  |  |  | x |
SET_WRITE_MASK |  |  |  |  |  |  |  |  | x | x | x
STATIC_COLOR |  |  |  |  |  |  |  |  |  | x |
STATIC_GRAY |  |  |  |  |  |  |  |  |  | x |
SYMBOL |  |  |  |  |  | x |  |  |  |  |
TEK4014 |  |  |  |  |  |  |  | x |  |  |
TEK4100 |  |  |  |  |  |  |  | x |  |  |
TEXT | x |  |  |  |  |  |  |  |  |  |
THRESHOLD |  |  |  | x |  |  |  |  |  | x |
TIMES |  |  |  |  |  | x |  |  |  |  |
TRANSLATION |  |  |  |  |  |  |  |  | x | x |
TRUE_COLOR |  |  | x |  | x |  |  |  |  | x |
TT_FONT |  |  | x |  | x | x |  |  | x | x | x
TTY |  |  |  |  |  |  | x | x |  |  |
USER_FONT |  |  |  |  |  | x |  |  |  |  |
VT240 |  |  |  |  |  |  | x |  |  |  |
VT340 |  |  |  |  |  |  | x |  |  |  |
WINDOW_STATE |  |  |  |  |  |  |  |  | x | x |
XOFFSET |  | x |  | x | x | x |  |  |  |  |
XON_XOFF |  | x |  |  |  |  |  |  |  |  |
XSIZE |  | x | x | x | x | x |  |  |  |  |
YOFFSET |  | x |  | x | x | x |  |  |  |  |
YSIZE |  | x | x | x | x | x |  |  |  |  |
ZAPFCHANCERY |  |  |  |  |  | x |  |  |  |  |
ZAPFDINGBATS |  |  |  |  |  | x |  |  |  |  |
Z_BUFFERING |  |  |  |  |  |  |  |  |  |  | x

Keywords accepted by the DEVICE command are described below. A list of devices that accept the keyword is included in parentheses below the keyword name.

### AVANTGARDE

(PS)

Set this keyword to select the ITC Avant Garde PostScript font.

### AVERAGE_LINES

(REGIS)

Controls the method of writing images to the VT240. If this keyword is set, (default setting), even and odd pairs of image lines are averaged and written to a single line. If clear, each image line is written to the screen. See the discussion below. This keyword has no effect when using a VT300 series terminal.

### BINARY

(CGM)

Set this keyword to set the encoding type for the CGM output file to binary.

### BITS_PER_PIXEL

(PS)

Set this keyword to an integer that specifies the number of bits used to represent a pixel in a bitmap image included in a PostScript file. Allowed values are 1, 2, 4, or 8 bits per pixel, representing 2, 4, 16, or 256 shades. By default, BITS_PER_PIXEL is set to 4.

Note: Using more bits per pixel gives higher resolution at the cost of generating larger files.

When writing TrueColor images to a PostScript file, the BITS_PER_PIXEL value applies to each channel of the image. Thus, to write a 24-bit image, which consists of three 8-bit image planes, set BITS_PER_PIXEL=8.

### BKMAN

(PS)

Set this keyword to select the ITC Bookman PostScript font.

### BOLD

(PS)

Set this keyword to specify that the bold version of the current PostScript font should be used.

### BOOK

(PS)

Set this keyword to specify that the book version of the current PostScript font should be used.

### BYPASS_TRANSLATION

(WIN, X)

Set this keyword to bypass the translation tables, allowing direct specification of color indices. Pixel values read via the TVRD function are not translated if this keyword is set, and the result contains the byte value of the actual pixel values present in the display.

By default, the color translation tables are bypassed if the visual type is TrueColor or the visual type is DirectColor with a private colormap.

This keyword is accepted by the WIN device (for compatibility with the X device), but has no effect when set.

### CLOSE

(Z)

Set this keyword to deallocate the memory used by the Z-buffer. The Z-buffer device is reinitialized if subsequent graphics operations are directed to the device.

### CLOSE_DOCUMENT

(PRINTER)

Set this keyword to have IDL send any buffered output to the currently selected printer. This keyword is applicable only when the printer device is selected.

### CLOSE_FILE

(CGM, HP, METAFILE, PCL, PS, REGIS, TEK)

Set this keyword to have IDL output any buffered commands and close the current graphics file.

Caution: If you close the output file and then cause IDL to produce more output (e.g., by executing a new PLOT command), IDL will open the file again, causing the contents of the recently closed file to be lost. To avoid this, use the FILENAME keyword to specify a different file name or use SET_PLOT to disable the graphics driver, or be sure to print the closed output file before creating more output.

### CMYK

(PS)

Set this keyword to generate PostScript output using the CMYK (cyan, magenta, yellow, and black) color model. The default PostScript color model is RGB (red, green, blue). PostScript CMYK files require a PostScript Language Level 2 interpreter. Therefore, when this keyword is set, the LANGUAGE_LEVEL keyword value is set to 2.

### COLOR

(PCL, PS)

Set this keyword to enable color PCL or PostScript output.

### COLORS

(CGM, TEK)

This keyword specifies the maximum number of colors and the size of the color table used for output. The value of the system variable fields !D.N_COLORS and !D.TABLE_SIZE are set to this value and !P.COLOR is set to one less than this value.

#### For Tektronix Terminals Only

This keyword sets the number of colors supported by a 4100 series terminal. For example, if your terminal has 4-bit planes, the number of colors is 24 = 16:

DEVICE, COLORS = 16

Valid values of this parameter are: 2, 4, 8, 16, or 64; other values will cause problems. Some Tektronix terminals will not operate properly if this parameter does not exactly match the number of colors available in the terminal hardware.

This parameter sets the field !D.N_COLORS, which affects the loading of color tables, the scaling used by the TVSCL procedure, and the number of bits output by the TV procedure to the terminal. It also changes the default color, !P.COLOR to the number of colors minus one.

### COPY

(WIN, X)

Use this keyword to copy a rectangular area of pixels from one region of a window to another. COPY should be set a six or seven element array: [Xs, Ys, Nx, Ny, Xd, Yd, W], where: (Xs, Ys) is the lower left corner of the source rectangle, (Nx, Ny) are the number of columns and rows in the rectangle, and (Xd, Yd) is the coordinate of the destination rectangle. Optionally, W is the index of the window from which the pixels should be copied to the current window. If it is not supplied, the current window is used as both the source and destination.

### COURIER

(PS)

Set this keyword to select the Courier PostScript font.

### CURSOR_CROSSHAIR

(WIN, X)

Set this keyword to select the crosshair cursor type. This is the IDL default.

### CURSOR_IMAGE

(WIN, X)

Specifies the cursor pattern. The value of this keyword must be a 16-line by 16-column bitmap, contained in a 16-element short integer vector. The offset from the upper left pixel to the point that is considered the hot spot can be provided via the CURSOR_XY keyword.

### CURSOR_MASK

(WIN, X)

When the CURSOR_IMAGE keyword is used to specify a cursor bitmap, the CURSOR_MASK keyword can be used to simultaneously specify the mask that should be used. In the mask, bits that are set indicate bits in the CURSOR_IMAGE that should be seen and bits that are not set are masked out.

By default, the CURSOR_IMAGE bitmap is used for both the image and the mask. This can cause the cursor to be invisible on a black background (because only black pixels are allowed to be displayed).

### CURSOR_ORIGINAL

(WIN, X)

Set this keyword to select the window system’s default cursor. Under X Windows, it is the cursor in use by the root window when IDL starts. For the Microsoft Windows device, it is the arrow pointer.

### CURSOR_STANDARD

(WIN, X)

This keyword can be used to change the cursor appearance in IDL graphics windows.

#### For X Windows

This keyword selects one of the predefined cursors provided by the X Window system. The available cursors shapes are defined in the file `cursorfont.h` in the directory `/usr/include/X11`. In order to use one of these cursors, you select the number of the cursor and provide it as the value of the CURSOR_STANDARD keyword. For example, the file gives the value of XC_CROSS as being 30. In order to make that the current cursor, use the statement:

DEVICE, CURSOR_STANDARD=30

#### For Microsoft Windows

The table below shows the values for CURSOR_STANDARD that result in different cursor shapes. For example, to change the cursor to an “I-beam” when the cursor is in an IDL graphics window, use the command:

DEVICE, CURSOR_STANDARD = 32513

Value | Cursor Shape
32512 | Arrow
32513 | I-Beam
32514 | Hourglass
32515 | Black Crosshair
32516 | Up Arrow
32640 | Size
32641 | Icon
32642 | Size NW-SE
32643 | Size NE-SW
32644 | Size E-W
32645 | Size N-S
32646 | Size All
32648 | Not Allowed
32649 | Pointing Hand
32650 | Arrow Hourglass
32651 | Help

### CURSOR_XY

(WIN, X)

A two element integer vector giving the (X, Y) pixel offset of the cursor hot spot, the point which is considered to be the mouse position, from the lower left corner of the cursor image. This parameter is only applicable if CURSOR_IMAGE is provided. The cursor image is displayed top-down—the first row is displayed at the top.

### DECOMPOSED

(PS, WIN, X, Z)

Set this keyword to control how color values are interpreted when using displays with decomposed color (TrueColor or DirectColor visuals). This keyword has no effect on indexed-color devices, which generally specify color using 8 bits per pixel.

Set this keyword to 1 to cause color values to be interpreted as 24-bit color specifications. IDL interprets the specified value as three 8‑bit color values, where the least-significant 8 bits contain the red value, the next 8 bits contain the green value, and the most-significant 8 bits contain the blue value. For example, the following lines draw a plot in purple on a device capable of rendering 24-bit color:

DEVICE, DECOMPOSED=1, COLOR=1

PLOT, INDGEN(10), COLOR='FF00FF'x

Here, the color value `'FF00FF'x` is hexadecimal notation for the RGB triple `[255,0,255]`.

Note: Unlike IDL object graphics, IDL’s direct graphics devices do not accept RGB triples as color specifications. Hexadecimal notation is generally the easiest way to specify 24-bit color values to direct graphics devices.

Set this keyword to 0 to cause color values to be interpreted as indices into a color lookup table. IDL interprets the least-significant 8 bits of the color value as the color table index. This setting allows users with decomposed color displays to use IDL programs written for indexed-color displays without modification.

DEVICE, DECOMPOSED=0, COLOR=1

LOADCT, 7

PLOT, INDGEN(10), COLOR=180

Here, the color value `180` is interpreted as an index into color table 7 (Red-Purple). Note that specifying `COLOR='0000B4'x` would produce the same result, since `B4` is the hexadecimal notation of decimal `180`.

In older versions of IDL, color index values higher than !D.N_COLORS-1 were clipped to !D.N_COLORS-1 in the higher level graphics routines. In some cases, this clipping caused the exclusive-OR graphics mode to malfunction with raster displays. This clipping has been removed. Programs that incorrectly specified color indices higher than !D.N_COLORS-1 will now probably exhibit different behavior.

The value of the DECOMPOSED keyword remains in effect until changed or until the IDL session ends. Use the GET_DECOMPOSED keyword to DEVICE to retrieve the current value.

### DEMI

(PS)

Set this keyword to specify that the demi version of the current PostScript font should be used.

### DIRECT_COLOR

(X)

Set this keyword to select the DirectColor visual. The value of the keyword represents the number of bits per pixel. This keyword has effect only if no windows have been created.

### EJECT

(HP)

In order to perform an erase operation on a plotter, it is necessary to remove the current sheet of paper and load a fresh sheet. The ability of various plotters to do this varies, so the EJECT keyword allows you to specify what should be done. The following table describes the possible values.

Value | Meaning
0 | Do nothing. Note that this is likely to cause one page to plot over the previous one, so you should limit yourself to one page of output per file. This is the default.
1 | Use the sheet feeder to load the next page.
2 | Put the plotter off-line at the beginning of each page after the first.

Many HP-GL plotters lack a sheet feeder, and require the user to load the next page manually. Therefore, the default action is for IDL to not issue any page eject instructions. In this case, you must restrict yourself to generating only a single plot at a time. If your plotter has a sheet feeder, you will want to issue the command:

DEVICE, /EJECT

to tell IDL that it should use the sheet feeder instead of placing the plotter off-line.

If your plotter does not have a sheet feeder, but it does understand the HP-GL NR command, use the command:

DEVICE, EJECT=2

to place the plotter off-line at the start of every plot except the first one. This causes the plotter to wait between plots for the user to replace the paper. When the user puts the plotter back on-line, the graphics commands for the new page are executed by the plotter. Consult the programming manual for your plotter to determine if this instruction is provided.

### ENCAPSULATED

(PS)

Set this keyword to create an encapsulated PostScript file, suitable for importing into another document (e.g., a LaTeX or FrameMaker document).

Note: You must explicitly set this keyword to zero to create “regular” PostScript output after creating encapsulated output. (That is, like most keyword settings to the DEVICE procedure, the setting “sticks” until you change it, or until you quit IDL.)

Note: IDL uses the value of this keyword to determine what type of output to generate when it starts writing to a file. Changing this keyword has no effect until a new file is started.

Normally, IDL assumes that its PostScript-generated output will be sent directly to a printer. It therefore includes PostScript commands to position the plot on the page and to eject the page from the printer. These commands are undesirable if the output is going to be inserted into the middle of another PostScript document. If ENCAPSULATED is present and non-zero, IDL does not generate these commands.

IDL follows the standard PostScript convention for encapsulated files. It assumes the standard PostScript scaling is in effect (72 points per inch), In addition, it declares the size, or bounding box of the plotting region at the top of the output file. This size is determined when the output file is opened (when the first graphics command is given), by multiplying the size of the plotting region (as specified with the XSIZE and YSIZE keywords) by the current scale factor (as specified by the SCALE_FACTOR keyword).

Changing the size of the plotting region or scale factor once graphics have been output will not be reflected in the declared bounding box, and will confuse programs that attempt to import the resulting graphics. Therefore, when generating encapsulated PostScript, do not change the plot region size or scaling factor once any graphics commands have been issued. If you need to change these parameters, use the FILENAME keyword to start a new file.

### ENCODING

(CGM)

Set this keyword to set the CGM encoding type for the output file. Valid values are:

Value | Description
1 | Binary encoding - the default.
2 | Text encoding.
3 | NCAR binary encoding.

The encoding type can only be changed when no CGM file is open.

### FILENAME

(CGM, HP, METAFILE, PCL, PS, REGIS, TEK)

Normally, all generated output is sent to a file named `idl.xxx`. The FILENAME keyword can be used to change these defaults. If FILENAME is specified:

1. If the file is already open (as happens if plotting commands have been directed to the file since the call to SET_PLOT), then the file is completed and closed as if CLOSE_FILE had been specified.
2. The specified file is opened for subsequent graphics output.

#### HP-GL Only

Under UNIX, if you wish to send HP-GL output directly to a plotter without generating an intermediate file, you should specify the device special file for the plotter as the argument to FILENAME. For example, if your plotter is connected to a serial input/output port known on your system as `/dev/ttya`, you would issue the command:

DEVICE, FILENAME='/dev/ttya'

All subsequent HP-GL output is sent directly to the plotter connected to serial port `/dev/ttya`.

### FLOYD

(PCL, X)

Set this keyword to select the Floyd-Steinberg method of dithering. This algorithm distributes the error, due to displaying intermediate shades in either black or white, to surrounding pixels. This method generally gives the most pleasing results but requires the most computer time.

### FONT_INDEX

(PS)

An integer representing the font index to be mapped to the current PostScript font.

Normally the font specification keywords (AVANTGARDE, etc.) take effect immediately to change the current font. The FONT_INDEX keyword alters this behavior. The current font is not changed. Instead, the specified font is mapped to the specified font index. This mapping can then be used within text strings to change the font in the middle of the string.

### FONT_SIZE

(PS)

The default height used for displayed text. FONT_SIZE is given in points (a common typesetting unit of measure). The default size is 12 point text.

### GET_CURRENT_FONT

(METAFILE, PRINTER, WIN, X)

Set this keyword to a named variable in which the name of the current font is returned as a scalar string. An empty string is returned if the Windows font is the default font. If the current device is PRINTER or METAFILE, the current font is returned.

### GET_DECOMPOSED

(PS, WIN, X, Z)

Set this keyword to a named variable in which is returned the current state of the decomposed flag in the current direct graphics device.

### GET_FONTNAMES

(METAFILE, PRINTER, WIN, X)

Set this keyword to a named variable in which a string array containing the names of available fonts is returned. If no fonts are found, a null scalar string is returned. This keyword must be used in conjunction with the SET_FONT keyword. Set the SET_FONT keyword to a scalar string containing the name of the desired font or to a wildcard. For example, the following command will return in the variable `fnames` the names of all available fonts:

DEVICE, GET_FONTNAMES=fnames, SET_FONT='*'

### GET_FONTNUM

(METAFILE, PRINTER, WIN, X)

Set this keyword to a named variable in which the number of fonts available to your installation is returned. This keyword must be used in conjunction with the SET_FONT keyword. Set the SET_FONT keyword to a scalar string containing the name of the desired font or a wildcard. For example, the following command will return in the variable `numfonts` the number of available fonts:

DEVICE, GET_FONTNUM=numfonts, SET_FONT='*'

### GET_GRAPHICS_FUNCTION

(WIN, X, Z)

Set this keyword to a named variable that will contain the value of the current graphics function (which is set with the SET_GRAPHICS_FUNCTION keyword). This can be used to remember the current graphics function, change it temporarily, and then restore it. See the SET_GRAPHICS_FUNCTION keyword for an example.

### GET_PAGE_SIZE

(PRINTER)

Set this keyword to a named variable that will contain a two-element vector that contains the width and height of the page size in pixels.

### GET_PIXEL_DEPTH

(Z)

Set this keyword to a named variable that will contain the current pixel depth of the current direct graphics device.

### GET_SCREEN_SIZE

(WIN, X)

Set this keyword to a named variable in which to return a two-word array that contains the width and height of the server’s screen, in pixels.

### GET_VISUAL_DEPTH

(WIN, X)

Set this keyword to a named variable into which a long integer is returned containing the depth of the visual associated with this device. Under X, if the X server is not connected when you call the DEVICE procedure with this keyword set, a new connection is made.

### GET_VISUAL_NAME

(WIN, X)

Set this keyword equal to a named variable in which a string containing the name of the current visual class IDL is using is returned. Possible return values are:

- StaticGray (X only)
- GrayScale (X only)
- StaticColor (X only)
- PseudoColor
- TrueColor
- DirectColor (X only)

Under X, if no connection to the X server has been established when the DEVICE procedure is called with this keyword set, a new connection is made.

### GET_WINDOW_POSITION

(WIN, X)

Set this keyword to a named variable that returns a two-element array containing the (X,Y) position of the lower left corner of the current window on the screen. The origin is also in the lower left corner of the screen.

### GET_WRITE_MASK

(WIN, X, Z)

Specifies the name of a variable that will contain the current value of the write mask.

### GIN_CHARS

(TEK)

The number of characters IDL is to read when accepting a GIN (Graphics INput) report. The default is 5. If your terminal is configured to send a carriage return at the end of each GIN report, set this parameter to 6. If the number of GIN characters is too large, the IDL CURSOR procedure will not respond until two or more keys are struck. If it is too small, the extra characters sent by the terminal will appear as input to the next IDL prompt.

### GLYPH_CACHE

(METAFILE, PRINTER, PS, WIN, Z)

Set this keyword to a scalar specifying the maximum number of glyphs to cache at any given time. The first time a glyph from a TrueType font is used, it is tessellated into triangles. These triangles are cached so that the tessellation step is not repeated for each use of that glyph. If the glyph cache fills, the least used glyph will be released before a new glyph is generated and cached. The default is 256.

### HELVETICA

(PS)

Set this keyword to select the Helvetica PostScript font.

### INCHES

(HP, METAFILE, PCL, PRINTER, PS)

Normally, the XOFFSET, XSIZE, YOFFSET, and YSIZE keywords are specified in centimeters. However, if INCHES is present and non-zero, they are taken to be in inches instead.

### INDEX_COLOR

(METAFILE, PRINTER)

Set this keyword to place the printer or MetaFile device in index color mode. This is the default. This keyword is applicable only when the printer or MetaFile device is selected.

### ISOLATIN1

(PS)

Set this keyword to use Adobe ISO Latin 1 font encoding with any font that supports such coding. Use of this keyword allows access to many commonly-used foreign characters.

### ITALIC

(PS)

Set this keyword to specify that the italic version of the current PostScript font should be used.

### LANDSCAPE

(HP, PCL, PRINTER, PS)

IDL normally generates plots with portrait orientation (the abscissa is along the short dimension of the page). If the LANDSCAPE keyword is set, landscape orientation (abscissa along the long dimension of the page) is used instead. Note that explicitly setting LANDSCAPE=0 is the same as setting the PORTRAIT keyword.

If the current device is PRINTER, and a page is open in the printer, it is closed and a new page set to landscape layout is started.

Note: The ability to set a printer to landscape mode is printer-driver dependent. Your printer may not support this functionality; use the system native print setup dialog to set the orientation of the print job.

Note: This keyword is ignored when generating Encapsulated PostScript output. See ENCAPSULATED for details.

### LANGUAGE_LEVEL

(PS)

Set this keyword to indicate the language level of the PostScript output that is to be generated by the device. Valid values include 1 (the default) and 2 (required for some features, such as filled patterns for polygons).

### LIGHT

(PS)

Set this keyword to specify that the light version of the current PostScript font should be used.

### MEDIUM

(PS)

Set this keyword to specify that the medium version of the current PostScript font should be used.

### NARROW

(PS)

Set this keyword to specify that the narrow version of the current PostScript font should be used.

### NCAR

(CGM)

Set this keyword to set the encoding type for the CGM output file to NCAR binary.

#### The NCAR Binary Encoding

The NCAR binary encoding is used exclusively by the NCAR graphics package. Version 3.01 of NCAR View (`ctrans`, `ictrans`, and `cgm2ncgm`) does not correctly handle the following graphic elements:

- Cell arrays (raster images) with an odd number of pixels in the X dimension. Solution: specify an even number of pixels for the X dimension or make the image one column wider and fill with zeros.
- Raster images drawn in top down order. Solution: invert the image prior to using TV or TVSCL and do not use the /ORDER keyword. For example:

TV, image

; Draw image top to bottom:

TV, ROTATE(image, 7)

### OBLIQUE

(PS)

Set this keyword to specify that the oblique version of the current PostScript font should be used.

### OPTIMIZE

(PCL)

It is desirable, though not always possible, to compress the size of the PCL output file. Such optimization reduces the size of the output file, and improves I/O speed to the printer. There are three levels of optimization:

Value | Description
0 | No optimization is performed. This is the default because it will work with any PCL device. However, users of devices which can support optimization should use one of the other optimization levels.
1 | Optimization is performed using PCL optimization primitives. This gives the best output compression and printing speed. Unfortunately, not all PCL devices support it. On those that can’t, the result will be garbage printed on the page. Consult the programmers manual for your printer to determine if it supports the required escape sequences. The required sequences are: `<ESC>*b0M` (select full graphics mode), `<ESC>*b1M` (select compacted graphics mode 1), and `<ESC>*b2M` (select compacted graphics mode 2). The HP LaserJet II does not support this optimization level. The DeskJet PLUS does.
2 | IDL attempts to optimize the output by explicitly moving the left margin and then outputting non-blank sections of the page. This is primarily intended for use with the LaserJet II, which does not support optimization level 1. Note: This optimization can be very slow on some devices (such as the DeskJet PLUS). On such devices, it is best to avoid this optimization level.

### ORDERED

(PCL, X)

Set this keyword to select the ordered dither method. This introduces a pseudo-random error into the display by using a 4 by 4 “dither” matrix, yielding 16 apparent intensities. This is the default method.

### OUTPUT

(HP, PS)

Specifies a scalar string that is sent directly to the graphics output file without any processing, allowing the user to send arbitrary commands to the file. Since IDL does not examine the string, it is the user’s responsibility to ensure that the string is correct for the target device.

### PALATINO

(PS)

Set this keyword to select the Palatino PostScript font.

### PIXELS

(PCL)

Normally, the XOFFSET, XSIZE, YOFFSET, and YSIZE keywords are specified in centimeters. However, if the PIXELS keyword is set, they are taken to be in pixels instead. Note that the selected resolution will determine how large a region is actually written on the page.

### PLOT_TO

(REGIS, TEK)

Directs the Tektronix graphic output that would normally go to the user’s terminal to the specified I/O unit. The logical unit specified should be open with write access to a device or file. Graphic output may be saved in files for later playback, redirected to other terminals, or to devices that can accept Textronix graphic commands.

Do not use the interactive graphics cursor when graphic output is not directed to your terminal.

To direct the graphic data to both the terminal and the file, set the unit to the negative of the actual unit number. Alternatively, you can use the TTY keyword, described below.

If the specified unit number is zero then Tektronix output to the file is stopped.

### PLOTTER_ON_OFF

(HP)

There are some configurations in which a HP-GL plotter is connected between the computer and a terminal. In this mode (known as eavesdrop mode), the plotter ignores everything it is sent and passes it through to the terminal—the plotter is logically off. This state continues until an escape sequence is sent that turns the plotter logically on. At this point the plotter interprets and executes all input as HP-GL commands. Another escape sequence is sent at the end of the HP-GL commands to return the plotter to the logically off state.

Most configurations do not use eavesdrop mode, and the plotter is always logically on. However, if you are using this style of connection, you must use PLOTTER_ON_OFF to instruct IDL to generate the necessary on/off commands. If present and non-zero, PLOTTER_ON_OFF causes each output page to be bracketed by device control commands that turn the plotter logically on and off. Specifying a value of zero stops the issuing of such commands. You should only use this keyword before any output has been generated.

### POLYFILL

(HP)

Some plotters (e.g., HP7550A) can perform polygon filling in hardware, while others (e.g., HP7475) cannot. IDL therefore assumes that the plotter cannot, and generates all polygon operations in software using line drawing. Specifying a non-zero value for the POLYFILL keyword causes IDL to use the hardware polygon filling. Setting it to zero reverts to software filling.

Different implementations of HP-GL plotters may have different limits for the number of vertices that can be specified for a polygon region before the plotter runs out of internal memory. Since this limit can vary, the HP-GL driver cannot check for calls to POLYFILL that specify too many points. Therefore, it is possible for the user to produce HP-GL output that causes an error when sent to the plotter. To avoid this situation, minimize the number of points used. On the HP7550A, the limit is about 127 points. If you do generate output that exceeds the limit imposed by your plotter, you will have to break that polygon filling operation into multiple smaller operations.

### PORTRAIT

(HP, PCL, PRINTER, PS)

Set the PORTRAIT keyword to generate plots using portrait orientation. Portrait orientation is the default. Note that explicitly setting PORTRAIT=0 is the same as setting the LANDSCAPE keyword.

If the current device is PRINTER, and a page is open in the printer, it is closed and a new page set to portrait layout is started.

Note: The ability to set a printer to portrait mode is printer-driver dependent. Your printer may not support this functionality; use the system native print setup dialog to set the orientation of the print job.

Note: This keyword is ignored when generating Encapsulated PostScript output. See ENCAPSULATED for details.

### PRE_DEPTH

(PS)

Set this keyword to a value indicating the bit depth to be used for the preview in the PostScript file. Valid values are 1 (for black and white preview) and 8 (for 8-bit grayscale preview). This keyword applies only if the PREVIEW keyword is nonzero. The default depth is 8.

### PRE_XSIZE

(PS)

Set this keyword to the width to be used for the preview in the PostScript file. PRE_XSIZE is specified in centimeters, unless the INCHES keyword is set. This keyword applies only if the PREVIEW keyword value is nonzero. The default is 1.77778 inches (128 pixels at 72dpi).

Also see the note below, A Note About Preview Dimensions.

### PRE_YSIZE

(PS)

Set this keyword to the height to be used for the preview in the PostScript file. PRE_YSIZE is specified in centimeters, unless the INCHES keyword is set. This keyword applies only if the PREVIEW keyword value is nonzero. The default is 1.77778 inches (128 pixels at 72dpi).

Also see the note below, A Note About Preview Dimensions.

### PREVIEW

(PS)

Set this keyword to 1 to add a platform-independent preview to the PostScript output file in encapsulated PostScript interchange format (EPSI). EPSI is an ASCII format. Set this keyword to 2 to write the EPS file in EPSF format, including an on-screen preview that is supported by many Windows applications, e.g. MSWord. The default (0) is to not include a preview.

Note: EPSF is not an ASCII format and cannot be sent directly to a Postscript printer, unlike the EPSI format. It must be imported into an application for printing.

#### A Note About Preview Dimensions

Different applications may utilize the information within a PostScript file in different ways when displaying a screen preview. Some applications will ignore the preview contents entirely, and simply use the primary PostScript contents to generate a screen preview. Other applications will use the preview data and its corresponding dimensions for screen display. Still others will use the preview data and stretch it to the dimensions of the primary PostScript contents. It is therefore recommended that the target application (into which the encapsulated PostScript file is to be loaded) be considered when selecting an appropriate XSIZE, YSIZE, PRE_XSIZE, and PRE_YSIZE.

### PRINT_FILE

(WIN)

Set this keyword to the name of a file (e.g., PostScript or PCL) to be sent to the currently-selected Windows printer. IDL performs no type checking on this file before sending it to the printer. Therefore, if you have a PostScript printer selected and you send a file that contains no valid PostScript information, you’ll simply get text output.

To send the file `myfile.ps` to the currently-selected Windows printer, enter:

DEVICE, PRINT_FILE='myfile.ps'

### PSEUDO_COLOR

(X)

If this keyword is present, the PseudoColor visual is used. The value of the keyword represents the number of bits per pixel to be used. This keyword has effect only if no windows have been created.

### RESET_STRING

(TEK)

The string used to place the terminal back into the normal interactive mode after drawing graphics. Use this parameter, in conjunction with the SET_STRING keyword, to control the mode switching of your terminal.

For example, the GraphON 200 series terminals require the string `<ESC>2` to activate the alphanumeric window after drawing graphics. The call to set this is:

DEVICE, RESET = string(27b) + '2'

If the 4100 series mode switch is set, using the keyword TEK4100, the default mode resetting string is `<ESC>%!1`, which selects the ANSI code mode.

### RESOLUTION

(PCL)

#### PCL Only

The resolution at which the PCL printer will work. PCL supports resolutions of 75, 100, 150, and 300 dots per inch. The default is 300 dpi. Lower resolution gives smaller output files, while higher resolution gives superior quality.

### RETAIN

(WIN, X)

Use this keyword to specify the default method used for backing store when creating new windows. This is the method used when the RETAIN keyword is not specified with the WINDOW procedure. If RETAIN is not used to specify the default method, method 1 (server-supplied backing store) is used.

The initial value of this parameter is taken from the IDL_GR_WIN_RETAIN preference (Microsoft Windows) or the IDL_GR_X_RETAIN preference (UNIX).

#### A Note on Reading Data from Windows

On some systems, when backing store is provided by the window system (RETAIN=1), reading data from a window using TVRD may cause unexpected results. For example, data may be improperly read from the window even when the image displayed on screen is correct. Having IDL provide the backing store (RETAIN=2) ensures that the window contents will be read properly. These types of problems are described in more detail in the documentation for TVRD. See Unexpected Results Using TVRD with X Windows.

### SCALE_FACTOR

(PRINTER, PS)

Specifies a scale factor applied to the entire plot. The default value is 1.0, allowing output to appear at its normal size. SCALE_FACTOR is used to magnify or shrink the resulting output.

The SCALE_FACTOR keyword behaves slightly differently in the context of the PRINTER device than it does in the context of the PS device.

When the current device is PRINTER, the SCALE_FACTOR keyword is designed to emulate a scalable resolution setting on the printer. For example, if you have a 300 x 300 pixel image—stored in the variable image—the following IDL commands will print image in a 0.5 inch square on a 600 dpi printer:

SET_PLOT, 'printer'

TV, image

Setting SCALE_FACTOR to 2 will scale the image to a 1 inch square on the same 600 dpi printer:

SET_PLOT, 'printer'

DEVICE, SCALE_FACTOR=2

TV, image

The output of IDL’s Direct Graphics routines (CONTOUR, PLOT, SURFACE, etc.) is automatically scaled to fill the available drawing area. As a result, the following IDL commands will produce two identical copies of the same output on any printer:

SET_PLOT, 'printer'

PLOT, data

DEVICE, SCALE_FACTOR=2

PLOT, data

### SCHOOLBOOK

(PS)

Set this keyword to select the New Century Schoolbook PostScript font.

### SET_CHARACTER_SIZE

(CGM, HP, METAFILE, PCL, PRINTER, PS, REGIS, TEK, WIN, X, Z)

Set this keyword equal to a two-element vector to specify the font size and line spacing (leading) of vector and TrueType fonts, and the line spacing of device fonts. The way that the value of this vector determines character size is not completely intuitive.

The vector specified to the SET_CHARACTER_SIZE keyword sets the values of the X_CH_SIZE and Y_CH_SIZE fields in the !D structure. These values describe the size of the rectangle that contains the “average” character in the current font. (It is not important what the “average” character is; it is used only to calculate a scaling factor that will be applied to all of the characters in the font.) The first element specifies the width of the rectangle in device units (usually pixels), and the second element specifies the height.

For vector and TrueType fonts, the height of the “average” character is determined by the width of the rectangle. The aspect ratio of the “average” character remains fixed; the character is scaled so that its width fits in the specified rectangle. The resulting scale factor is then applied to all of the characters in the font. The amount of spacing between lines (baseline to baseline) is determined explicitly by the height of the rectangle.

For device fonts, the character size is fixed. When the device font system is in use, the first element of the vector specified to SET_CHARACTER_SIZE is silently ignored, and only the line-spacing value is used.

Note: Changing between font systems (and sometimes changing from one font to another within the same font system) can also change the !D structure, so do not assume that the character size you have set is preserved when you change fonts.

### SET_COLORMAP

(PCL)

Set this keyword to a 14,739 (= 3 • 173) element byte vector containing the RGB-to-printer color translation table for a color PCL printer. The default table is for an HP Deskjet 500C printer.

The translation table is divided into red, green, and blue planes of 4913 (=173) elements each. For a given RGB triple, the offset into each plane is calculated as follows:

Offset = (Red/16)*289 + (Green/16)*17 + (Blue/16)

Thus, if the RGB triple is [16,32,160], the offset into each plane is 333. The printer will use the value at element 332 of the translation table as the red value, the value at element 5245 (=4913+332) as the green value, and the value at element 10158 (=9826+332) as the blue value.

The following example shows how to scale an existing colortable for use by a PCL printer.

; Set the plot window to the X device:

SET_PLOT, 'X'

; Create a window:

WINDOW,0,XS=300,YS=300

; Load a color table:

LOADCT,13

; Read color table values into variables:

TVLCT,r,g,b,/GET

; Re-size color table variables:

r2=CONGRID(r,4913)

g2=CONGRID(g,4913)

b2=CONGRID(b,4913)

; Create 14,739-element color map:

colormap=[r2,g2,b2]

; Change to the PCL device:

SET_PLOT, 'PCL'

; Set file name, resolution, color, and color map:

DEVICE, FILE = 'pcl.pcl', RESOLUTION = 300, $

/COLOR, SET_COLORMAP = colormap

; Display an image:

TVSCL,DIST(900)

; Close the device:

DEVICE,/CLOSE

Note: The color table used need not be one of IDL’s predefined tables.

### SET_COLORS

(Z)

Sets the number of pixel values, !D.N_COLORS and !D.TABLE_SIZE. This value is used by a number of IDL routines to determine the scaling of pixel data and the default drawing index. Allowable values range from 2 to 256, and the default value is 256. Use this parameter to make the Z-buffer device compatible with devices with fewer than 256 colors indices.

### SET_FONT

(METAFILE, PRINTER, PS, WIN, X, Z)

Set this keyword to a scalar string specifying the name of the font used when a hardware or TrueType font is selected. Note that hardware fonts cannot be rotated, scaled, or projected, and that the “!” commands for formatting may not work. When generating three-dimensional plots, it is best to use the vector-drawn or TrueType characters.

Note: On some platforms, GET_FONT returns an empty string. When SET_FONT is passed an empty string, the first font that can be successfully loaded will be used. This is the first available font found in the user's resource file (`$HOME/.Xdefaults`) or the app-defaults file (`$IDL_DIR``/resource/X11/lib/app-defaults/Idl`).

#### Note on the FONT Keyword

The SET_FONT keyword was introduced with IDL version 5.1 and replaces the FONT and USER_FONT keywords used in previous versions.

#### Using TrueType Fonts

For TrueType fonts, the specified font name must exactly match one of the names in the first column of the `ttfont.map` file in the `resource/fonts/tt` directory or (on Windows platforms) the name of an installed font. Note that you must include the TT_FONT keyword to indicate that the font specified is a TrueType font. For example, the following sets the font to the font to the TrueType font Helvetica Bold Italic:

DEVICE, SET_FONT='Helvetica Bold Italic', /TT_FONT

Note: You can append additional TrueType fonts to the `ttfont.map` file if desired; on Windows platforms, additional fonts can also be added via the normal font installation procedures for your system. There is no guarantee that TrueType fonts you add will be satisfactorily tessellated or displayed.

#### Using Hardware Fonts

Because device fonts are specified differently on different platforms, the syntax of the fontname string depends on which platform you are using.

#### UNIX

Usually, the window system provides a directory of font files that can be used by all applications. List the contents of that directory to find the fonts available on your system. The size of the font selected also affects the size of vector drawn text. X Windows users can use the `xlsfonts` command to list available X Windows fonts.

On some machines, fonts are kept in subdirectories of `/usr/lib/X11/fonts`.

For example, to select the font 8X13:

!P.FONT = 0

DEVICE, SET_FONT = '8X13'

#### Microsoft Windows

The SET_FONT keyword should be set to a string with the following form:

DEVICE, SET_FONT='font*modifier1*modifier2*...modifiern'

where the asterisk (*) acts as a delimiter between the font’s name (font) and any modifiers. The string is not case sensitive. Modifiers are simply “keywords” that change aspects of the selected font. Valid modifiers are:

- For font weight: THIN, LIGHT, BOLD, HEAVY
- For font quality: DRAFT, PROOF
- For font pitch: FIXED, VARIABLE
- For font angle: ITALIC
- For strikeout text: STRIKEOUT
- For underlined text: UNDERLINE
- For font size: Any number is interpreted as the font height in pixels.

For example, if you have Garamond installed as one of your Windows fonts, you could select 24-pixel cell height Garamond italic as the font to use in plotting. The following commands tell IDL to use hardware fonts, change the font, and then make a simple plot:

!P.FONT = 0

DEVICE, SET_FONT = 'GARAMOND*ITALIC*24'

PLOT, FINDGEN(10), TITLE = 'IDL Plot'

This feature is compatible with TrueType and Adobe Type Manager (and, possibly, other type scaling programs for Windows). If you have TrueType or ATM installed, the TrueType or PostScript outline fonts are used so that text looks good at any size.

Note: If you set the output device to PostScript (`SET_PLOT, 'PS')`, attempting to use the (*) delimiter with SET_PLOT will cause an error.

### SET_GRAPHICS_FUNCTION

(WIN, X, Z)

Most window systems allow applications to specify the graphics function. This is a logical function which specifies how the source pixel values generated by a graphics operation are combined with the pixel values already present on the screen. The complete list of possible values is given in the following table:

Logical Function | Code | Definition
GXclear | 0 | 0
GXand | 1 | source AND destination
GXandReverse | 2 | source AND (NOT destination)
GXcopy | 3 | source
GXandInverted | 4 | (NOT source) AND destination
GXnoop | 5 | destination
GXxor | 6 | source XOR destination
GXor | 7 | source OR destination
GXnor | 8 | (NOT source) AND (NOT destination)
GXequiv | 9 | (NOT source) XOR destination
GXinvert | 10 | (NOT destination)
GXorReverse | 11 | source OR (NOT destination)
GXcopyInverted | 12 | (NOT source)
GXorInverted | 13 | (NOT source) OR destination
GXnand | 14 | (NOT source) OR (NOT destination)
GXset | 15 | 1

The default graphics function is GXcopy, which causes new pixels to completely overwrite any previous pixels. Not all functions are available on all window systems.

For example, the following code segment inverts the bottom bit in the rectangle defined by its diagonal corners (x0, y0) and (x1, y1):

; Set graphics function to exclusive or (GXor), and save the

; old function:

DEVICE, GET_GRAPHICS_FUNCTION = oldg, SET_GRAPHICS_FUNCTION = 6

; Use POLYFILL to select the area to be inverted. The source

; pixel value is 1:

POLYFILL, [[x0,y0], [x0,y1], [x1,y1], [x1,y0]], $

/DEVICE, COLOR=1

; Restore the previous graphics function:

DEVICE, SET_GRAPHICS_FUNCTION=oldg

### SET_PIXEL_DEPTH

(Z)

Set this keyword equal to a value specifying the desired pixel depth. Allowed values are 8 (the default) and 24. IDL clears the frame and depth buffers when the value of this keyword changes.

### SET_RESOLUTION

(Z)

Set this keyword to a two-element vector that specifies the width and height of the Z-buffers. The default size is 640 by 480. If this size is not the same as the existing buffers, the current buffers are destroyed and the device is reinitialized.

### SET_STRING

(TEK)

The string used to place the terminal into the graphics mode from the normal interactive terminal mode. If the 4100 series mode switch is set, using the keyword TEK4100, the default graphic mode setting string is `<ESC>%!0`, which selects the Tektronix code mode.

### SET_TRANSLATION

(X)

This keyword can be used to allow multiple, simultaneous IDL sessions to use the same colors from a shared colormap. Use this keyword before the X connection is established (i.e., before a window is created), IDL will use the shared color map without allocating any additional colors, and will not load a grayscale ramp as is usually done when the X server starts up. The following example shows two cooperating IDL processes sharing the same colormap:

Execute the following commands in the first IDL session:

WINDOW, GET_X_ID = a
DEVICE, TRANSLATION = t
OPENW, 1, 'junk.dat'
WRITEU, 1, a, !D.N_COLORS, t[0:!D.N_COLORS-1]
CLOSE, 1
LOADCT, 3

Execute the following commands in the second IDL session:

OPENR, 1, 'junk.dat'
a=0L
n=0L
READU,1, a, n
t = BYTARR(n)
READU, 1, t
CLOSE, 1
DEVICE, SET_TRANSLATION = t
WINDOW, COLORS=n, SET_X_ID=a
TV, DIST(256)

### SET_WRITE_MASK

(WIN, X, Z)

Sets the write mask to the specified value. For an n-bit system, the write mask can range from 0 to 2n-1.

### STATIC_COLOR

(X)

Use this keyword to select the X Windows StaticColor visual. The value of the keyword represents the number of bits per pixel to be used. This keyword has effect only if no windows have been created.

### STATIC_GRAY

(X)

Use this keyword to select the X Windows StaticGray visual. The value of the keyword represents the number of bits per pixel to be used. This keyword has effect only if no windows have been created.

### SYMBOL

(PS)

Set this keyword to select the Symbol PostScript font.

### TEK4014

(TEK)

Set this keyword to specify that coordinates are to be output with full 12-bit resolution. If this keyword is not present or is zero, 10-bit coordinates are output. Normally, IDL sends 10-bit coordinates. 12-bit coordinates are compatible with most terminals, even those without the full resolution, but require more characters to send.

Note: The 4014 and the 4100 modes can be used together. The coordinate system IDL uses for the Tektronix is 0 to 4095 in the X direction and 0 to 3120 in the Y direction, even when not in the 4014 mode. In the 10-bit case the internal coordinates are divided by 4 prior to output.

### TEK4100

(TEK)

Set this keyword to indicate that the terminal is a 4100 or 4200 series terminal. The use of color, ANSI and Tektronix mode switching, hardware line styles, and pixel output with the TV procedure is supported with these terminals. Also, text is output differently.

### TEXT

(CGM)

Set this keyword to set the encoding type for the CGM output file to text.

### THRESHOLD

(PCL, X)

Set this keyword to select the threshold algorithm—the simplest dithering method. The value of this keyword is the threshold to be used. This algorithm simply compares each pixel against the given threshold, usually 128. If the pixel equals or exceeds the threshold the display pixel is set to white, otherwise it is black.

### TIMES

(PS)

Set this keyword to select the Times-Roman PostScript font.

### TRANSLATION

(WIN, X)

Using the shared colormap (normally recommended) causes IDL to translate between IDL color indices (which always start with zero and are contiguous) and the pixel values actually present in the display. The TRANSLATION keyword specifies the name of a variable to receive the translation vector. To read the translation table, use the command:

DEVICE, TRANSLATION=TRANSARR

where TRANSARR is a named variable into which the translation array is stored. The result is a 256-element byte vector. Element zero of the vector contains the pixel value allocated for the first color in the IDL colormap, and so forth.

#### Microsoft Windows Only

This keyword is accepted by the WIN device, for compatibility with the X Windows driver, but simply returns a 256-element vector where each element has the value of its subscript (0 to 255).

### TRUE_COLOR

(METAFILE, PRINTER, X)

Use this keyword to select TrueColor visuals for the output device.

#### For the METAFILE and PRINTER Devices:

Set this keyword to a value greater than zero to place the output device in in RGB or 24-bit TrueColor mode. The number of bits per pixel specified is ignored.

#### For the X Device:

Set this keyword equal to the number of bits per pixel to be used. This keyword has effect only if no windows have been created.

### TT_FONT

(METAFILE, PRINTER, PS, WIN, X, Z)

Set this keyword to indicate that the font set via the SET_FONT keyword (either to set the fontname or to retrieve fontnames in conjunction with the GET_FONTNAMES or GET_FONTNUM keywords) should be treated as a TrueType font.

### TTY

(REGIS, TEK)

Set this keyword to specify that output should be sent to the terminal at the same time that it is being sent to a file due to the FILENAME or PLOT_TO keywords. A zero value causes output to go only to the file. If no output file is in use, this keyword has no effect.

### USER_FONT

(PS)

This keyword is now obsolete and has been replaced by the SET_FONT keyword. Code that uses the USER_FONT keyword will continue to function as before, but we suggest that all new code use SET_FONT.

### VT240

### VT241

(REGIS)

Set this keyword to configure the REGIS device for VT240 series terminals.

### VT340

### VT341

(REGIS)

Set this keyword to configure the REGIS device for VT340 series terminals.

### WINDOW_STATE

(WIN, X)

Set this keyword to a named variable that returns an array containing one element for each possible window. Array element i contains a 1 if window i is open, otherwise it contains a 0.

### XOFFSET

(HP, PCL, PRINTER, PS)

Specifies the X position, on the page, of the lower left corner of output generated by IDL. XOFFSET is specified in centimeters, unless INCHES is specified.

#### PostScript Only

SCALE does not affect the value of XOFFSET.

Note: This keyword is ignored when generating Encapsulated PostScript output. See ENCAPSULATED for details.

### XON_XOFF

(HP)

If present and non-zero, XON_XOFF causes each output page to start with device control commands that instruct the plotter to obey xon/xoff (^S/^Q) style flow control. Specifying a value of zero stops the issuing of such commands. You should only use this keyword before any output has been generated.

Such handshaking is the default. To turn it off, use the command

DEVICE, XON_XOFF=0

Often, it is not necessary to tell the plotter to obey flow control because the printing facilities on the system handle such details for you, but it is usually harmless.

### XSIZE

(HP, METAFILE, PCL, PRINTER, PS)

Specifies the width of output generated by IDL. XSIZE is specified in centimeters, unless INCHES is specified.

Note: For PCL and PS devices, this keyword’s value is effectively limited to a maximum of 11 inches due to the size of the memory map employed to render the graphics information.

#### PostScript Only

SCALE modifies the value of XSIZE. Hence, the following statement:

DEVICE,/INCHES,XSIZE=7.0,SCALE_FACTOR=0.5

results in a real width of 3.5 inches.

Also see A Note About Preview Dimensions.

### YOFFSET

(HP, PCL, PRINTER, PS)

Specifies the Y position, on the page, of the lower left corner of output generated by IDL. YOFFSET is specified in centimeters, unless INCHES is specified.

Note: The corner of the page from which the Y offset is measured (lower or upper left) differs on various devices. Read the device specific information in the following sections to determine how this is handled for your device.

#### PostScript Only

SCALE does not affect the value of YOFFSET.

Note: This keyword is ignored when generating Encapsulated PostScript output. See ENCAPSULATED for details.

### YSIZE

(HP, METAFILE, PCL, PRINTER, PS)

Specifies the height of output generated by IDL. YSIZE is specified in centimeters, unless INCHES is specified.

Note: For PCL and PS devices, this keyword’s value is effectively limited to a maximum of 11 inches due to the size of the memory map employed to render the graphics information.

#### PostScript Only

SCALE modifies the value of YSIZE. Hence, the following statement:

DEVICE,/INCHES,YSIZE=5.0,SCALE_FACTOR=0.5

results in a real width of 2.5 inches.

### ZAPFCHANCERY

(PS)

Set this keyword to select the ITC Zapf Chancery PostScript font.

### ZAPFDINGBATS

(PS)

Set this keyword to select the ITC Zapf Dingbats PostScript font.

### Z_BUFFERING

(Z)

This keyword enables and disables the Z-buffering. If this keyword is specified with a zero value, the driver operates as a standard 2-D device, the Z-buffering is disabled, and the Z-buffer (if any) is deallocated. Setting this keyword to one (the default value), enables the Z-buffering.

To disable Z-buffering enter:

DEVICE, Z_BUFFERING = 0