Output Devices and Window Systems

Window System Features

How Is Backing Store Handled?


UNIX and OpenVMS Users: Re-exposing the window causes the X server to fill the missing data with the default background color for that window, and request the application to redraw the missing data. Applications can request a backing store for their windows, but servers are not required to provide it. Most current X servers do not provide backing store, and even those that do cannot necessarily provide it for all requesting windows. Therefore, requesting backing store from the server might help, but there is no certainty.

Windows Users: Re-exposing the window causes the Microsoft Windows to fill the missing data with the default background color for that window, and request the application to redraw the missing data.
Possible Values for the Retain Keyword

Value Description
0 No backing store.
1 (The Default) The server or window system is requested to retain the window.
2 PV-WAVE should provide a backing pixmap and handle the backing store directly (X Window System only).


UNIX Users: Some IBM AIX systems do not have backing store enabled in the X server. For this reason, DEVICE, Retain=2 is set by the Standard Library procedure SETDEMO_RS6000.pro. With backing store enabled, you can achieve increased performance by setting DEVICE, Retain=1. Your system administrator can help you determine whether or not backing store is enabled on your system. To enable backing store, kill your workstation's X server and restart with:

CGM Output

Setting Default Value
Output file name wave.cgm
File status Closed
Metafile type Clear Text
Number of colors in color table 254
Color table offset 1
Clip to VDC range ON
Horizontal offset 0 Coordinates
Vertical offset 0 Coordinates
Scale factor None
Standard Cell Array Standard


TIP: If you want to send a CGM file to a hardcopy printer, and you want to modify the color table, it is a good idea to modify the color table before sending CGM graphics output to the file. For more information about modifying color tables, see the PV-WAVE User's Guide.

TIP: Run the MSWORD_CGM_SETUP
procedure before importing a CGM file into Microsoft Word. For example:
Controlling CGM Output with DEVICE Keywords

Using the CGM Driver








Using Color with CGM Output

Changing the Image Background Color

Changing the CGM Background Color

Binary CGM Output for VAX/OpenVMS Machines

HPGL Output

Setting Default Value
Output file name wave.hp
Orientation portrait
Erase no action
Polygon fill software
Turn plotter logically on/off no
Specify xon/xoff flow control yes
Horizontal offset .3175 cm (.125 in.)
Vertical offset 11.43 cm (4.5 in.)
Width 17.78 cm (7 in.)
Height 12.7 cm (5 in.)

Controlling HPGL Output with DEVICE Keywords


CAUTION: Under UNIX, if you close the output file with the Close_File DEVICE keyword, and then execute a command (such as PLOT) that creates more output, PV-WAVE reopens the same file, erasing the previous contents. To avoid losing the contents of an output file, use the Filename keyword to specify a different filename, or use SET_PLOT to switch to a different graphics driver, or be sure to print the closed output file before creating more output.

NOTE: See the discussion of printing output files in the PV-WAVE User's Guide for more information on this topic.

Value Meaning
0 (Default) 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.
1 Use the sheet feeder to load the next page.
2 Put the plotter off-line at the beginning of each page, except the first.


NOTE: If you have trouble with plots not completing and you have a plotter that allows you to set switches to enable pen buffering, make sure that this switch is set. If it is not, turn the plotter off, set the switch, and send your plot to the plotter again.
Supported Features of HPGL

Specifying Linestyles in HPGL Output


TIP: If your HPGL plotter is connected to an HP-IB interface, you must run PV-WAVE's HPGL output through a filter before you can plot it. The following UNIX command accomplishes this task:

PCL Output


NOTE: When printing from VDA Tools to a PCL device, all output that appears in black in the VDA Tool will appear in white on the printed page (i.e., it will not be visible).

Setting Default Value
Output file name wave.pcl
Mode Portrait
Optimization Level 0 (None)
Dither Method Floyd-Steinberg
Resolution 300 dpi
Horizontal Offset 1.27 cm (1/2 in.)
Vertical Offset 2.54 cm (1 in.)
Width 17.78 cm (7 in.)
Height 12.7 cm (5 in.)


UNIX Users: When you print files to a PCL device from a UNIX system, you may need to specify the -v option in the print command. This option indicates that a raster image is being transmitted. For example:

OpenVMS Users: Use the PASSALL parameter. For example:
Controlling PCL Output with DEVICE Keywords


CAUTION: Under UNIX, if you close the output file with the Close_File DEVICE keyword, and then execute a command (such as PLOT) that creates more output, PV-WAVE reopens the same file, erasing the previous contents. To avoid losing the contents of an output file, use the Filename keyword to specify a different filename, or use SET_PLOT to switch to a different graphics driver, or be sure to print the closed output file before creating more output.

NOTE: For more information on this topic, see the discussion of printing output files in the PV-WAVE User's Guide.

NOTE: Level 2 optimization can be very slow on some devices (such as the DeskJet PLUS). On such devices, it is best to avoid this optimization level.
PCL Image Background Color

Pixel Map Output

Controlling PM buffer Output with DEVICE Keywords

Example 1










PostScript Output


NOTE: The default PostScript fonts changed with PV-WAVE 6.21. The previous default PostScript font was 12 point Helvetica. The new default PostScript font is 14 point Times Roman. You can change the default font by editing the file fontmap_ps, which is discussed in the chapter Using Fonts in the PV-WAVE User's Guide. To see which

NOTE: Unlike monitors where white is the most visible color, PostScript writes black on white paper. Setting the output color index to 0, the default when PostScript output is selected, writes black. A color index of 255 writes white which is invisible on white paper. Color tables are not used with PostScript unless the color mode has been enabled using the DEVICE procedure. See below for information on using PV-WAVE with color PostScript.

NOTE: All
PostScript printers impose a limit on the number of vertices a polygon may contain. This limit (750 vertices for most printers) is checked, and an error message is printed if it is exceeded.

TIP: Use INFO, /Device to view the driver's current settings.

NOTE: PostScript hardware fonts can be rotated and transformed by general 3D transforms in PV-WAVE.

Additional Text Formatting Commands

Controlling PostScript Output with DEVICE Keywords


CAUTION: Under UNIX, if you close the output file with the Close_File DEVICE keyword, and then execute a command (such as PLOT) that creates more output, PV-WAVE reopens the same file, erasing the previous contents. To avoid losing the contents of an output file, use the Filename keyword to specify a different filename, or use SET_PLOT to switch to a different graphics driver, or be sure to print the closed output file before creating more output.

NOTE: You cannot reposition encapsulated output (including EPSI output) via Xoffset or Yoffset keywords. This allows full positioning control for the including product, such as MS Word.

TIP: EPSI images sometimes appear
differently when printed than they do in windows on the screen. This occurs because the driver's EPSI bitmap size is fixed no matter what the size of the original PV-WAVE image, and the PV-WAVE image is scaled into this bitmap. In addition, printed PostScript files can take advantage of scalable pixels, while pixels on the screen are static. Try experimenting with the other DEVICE keywords when you specify /Epsi to see which combination gives the best results with your particular size image. The driver's EPSI bitmap size (888-by-635 pixels) works well in many cases.

NOTE: You can print EPSI files directly, but only when the file is generated in portrait mode (see the description of the Portrait keyword below).

TIP: In both portrait and landscape mode, the x offset is measured as a displacement along the page's short dimension, and y offset is measured as a displacement along the page's long dimension. This may cause you some confusion when you are trying to orient graphics on a landscape page. The following figure demonstrates the correct way to specify offset for PostScript's landscape mode.
Figure B-1 This figure illustrates the way in which the Xoffset and Yoffset keywords are used to position graphics on a page in both portrait and landscape orientation. Assume that the page size is 8.5 x 11 inches. Portrait orientation is shown in A. The graphic is oriented with its origin (o) in the lower-left corner of the page. The x offset is 1 inch and the y offset is 1 inch. The graphic's x-axis falls along the page's short dimension. The same graphic shown in B is, in effect, rotated 90 degrees clockwise and offset 10 inches vertically (y offset) to produce the landscape orientation shown in C. The important point to note is that the y offset needed to position the graphic as shown in C is 10 inches, not 1 inch as you might expect.


NOTE: For 11x17 output, you must be using a PostScript Level 2-compliant device.

TIP: The PostScript driver does not automatically scale up for 11x17 output. You may want to adjust the Xsize, Ysize, Xoffset, Yoffset keywords accordingly.

NOTE: A default font mapping is defined in a configuration file that is read when the PS driver is initialized. For information on this configuration file, see the Using Fonts chapter in the PV-WAVE User's Guide.
Using PostScript Fonts


NOTE: When generating three-dimensional plots, it is best to use the software fonts, because PV-WAVE can draw them in perspective with the rest of the plot. For details on software fonts, see the PV-WAVE User's Guide.
PostScript Fonts

PostScript Fonts

PostScript Font DEVICE Keywords
Courier /Courier
Courier Bold /Courier, /Bold
Courier Oblique /Courier, /Oblique
Courier Bold Oblique /Courier, /Bold, /Oblique
Helvetica /Helvetica
Helvetica Bold /Helvetica, /Bold
Helvetica Oblique /Helvetica, /Oblique
Helvetica Bold Oblique /Helvetica, /Bold, /Oblique
Helvetica Narrow /Helvetica, /Narrow
Helvetica Narrow Bold /Helvetica, /Narrow, /Bold
Helvetica Narrow Oblique /Helvetica, /Narrow, /Oblique
Helvetica Narrow Bold Oblique /Helvetica, /Narrow, /Bold, /Oblique
ITC Avant Garde Gothic Book /Avantgarde, /Book
ITC Avant Garde Gothic Book Oblique /Avantgarde, /Book, /Oblique
ITC Avant Garde Gothic Demi /Avantgarde, /Demi
ITC Avant Garde Gothic Demi Oblique /Avantgarde, /Demi, /Oblique
ITC Bookman Demi /Bkman, /Demi
ITC Bookman Demi Italic /Bkman, /Demi, /Italic
ITC Bookman Light /Bkman, /Light
ITC Bookman Light Italic /Bkman, /Light, /Italic
ITC Zapf Chancery Medium Italic /Zapfchancery, /Medium, /Italic
ITC Zapf Dingbats /Zapfdingbats
New Century Schoolbook /Schoolbook
New Century Schoolbook Bold /Schoolbook, /Bold
New Century Schoolbook Italic /Schoolbook, /Italic
New Century Schoolbook Bold Italic /Schoolbook, /Bold, /Italic
Palatino /Palatino
Palatino Bold /Palatino, /Bold
Palatino Italic /Palatino, /Italic
Palatino Bold Italic /Palatino, /Bold, /Italic
Symbol /Symbol
Times /Times
Times Bold /Times, /Bold
Times Italic /Times, /Italic
Times Bold Italic /Times, /Bold, /Italic

Using Color PostScript Devices

PostScript Supports Color Images

Changing the Image Background Color

Creating Publication-quality Documents

Inserting PV-WAVE Plots into LATEX Documents








Figure B-2 Sample PostScript plot using Helvetica font.








Figure B-3 1, 2, 4, and 8-bit PostScript images.

The LATEX Insertplot Macro

Regis Output

Controlling Regis Output with DEVICE Keywords


CAUTION: Under UNIX, if you close the output file with the Close_File DEVICE keyword, and then execute a command (such as PLOT) that creates more output, PV-WAVE reopens the same file, erasing the previous contents. To avoid losing the contents of an output file, use the Filename keyword to specify a different filename, or use SET_PLOT to switch to a different graphics driver, or be sure to print the closed output file before creating more output.

NOTE: See the discussion of printing output files in the the PV-WAVE User's Guide.
Limitations of REGIS Output

Tektronix Terminals

Controlling Tektronix Output with DEVICE Keywords


NOTE: The 4014 and the 4100 modes may be used together. The coordinate system PV-WAVE 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.
Notes on the Tektronix Driver

Limitations of Tektronix and Tektronix-compatible Terminals


CAUTION: If you try to display images produced with the SHADE_SURF and SHOW3 procedures, PV-WAVE may abort. Because of a limitation in the range of image coordinates available on Tektronix devices, they are not well suited to the display of images.

WIN32 Driver


NOTE: If you are running a Windows NT system, WIN32 hardware fonts can be rotated and transformed by general 3D transforms in PV-WAVE.
Selecting the WIN32 Driver


NOTE: WIN32 is the default device for Windows, so selecting WIN32 as the current graphics device is not necessary unless you have previously selected some other device and want to return to WIN32.
Listing the Current Settings for the WIN32 Driver

Additional Text Formatting Commands

Controlling the WIN32 Driver with DEVICE Keywords


NOTE: The size of the font selected also affects the size of software-drawn text (e.g., the Hershey fonts). The "!" commands accepted for software fonts for subscripts and superscripts do not work for hardware fonts.

NOTE: The line caching feature may affect some PV-WAVE behavior that is familiar to you. In general, this applies to any operation that depends on the order in which lines are drawn. For example, using OPLOT with the color set to the background color to erase drawn lines may not work as expected. This is because some or all of the second set of lines may be drawn before the first set they were intended to overwrite. To avoid this, use the EMPTY procedure to force the driver to empty the line cache first.

NOTE: A default font mapping is defined in a configuration file that is read when the WIN32 driver is initialized. For information on this configuration file, see the Fonts chapter in the PV-WAVE User's Guide.
Logical Function Code Definition Windows ROP Code
GXclear 0 0 R2_BLACK
GXand 1 src AND dst R2_MASKPEN
GXandReverse 2 src AND (NOT dst) R2_MASKPENNOT
GXcopy 3 src R2_COPYPEN
GXandInverted 4 (NOT src) AND dst R2_MASKNOTOPEN
GXnoop 5 dst R2_NOP
GXxor 6 src XOR dst R2_XORPEN
GXor 7 src OR dst R2_MERGEPEN
GXnor 8 (NOT src) AND (NOT dst) R2_NOTMASKPEN
GXequiv 9 (NOT src) XOR dst R2_NOTXORPEN
GXinvert 10 (NOT dst) R2_NOT
GXorReverse 11 src OR (NOT dst) R2_MERGEPENNOT
GXcopyInverted 12 (NOT src) R2_NOTCOPYPEN
GXorInverted 13 (NOT src) OR dst R2_MERGENOTPEN
GXnand 14 (NOT src) OR (NOT dst) R2_NOTMERGEPEN
GXset 15 1 R2_WHITE


Resizing Graphics

Windows Metafile Limitations

Resolution Dependency for Plots

Disappearing "Dots"

Graphics Window Commands


TIP: You can also use the graphics window Control menu to import, export, and print graphics.
Use of Color in the WIN32 Driver


NOTE: The color model used by the WIN32 driver in PV-WAVE Version 6.0 has changed from previous releases of PV-WAVE. Earlier releases, specifically version 4.2 and PV-WAVE Personal Edition, used a color model that was very similar to that used by the X Windows X11 driver. For PV-WAVE 6.0, changes to the WIN32 driver were made to support high-color Windows video drivers and required a simplification of the way color tables and palettes are handled.

Windows Video Modes

PV-WAVE Color Model

Interaction Between PV-WAVE and the Video Driver

256 Color Drivers and Palettes

The PV-WAVE WIN32 Driver in 256 Color Mode

Using Bitmaps

Creating a Bitmap

Example Animating a Series of Bitmap Images











Using the Write Mask and Graphics Functions to Manipulate Color

Using Graphics Functions to Manipulate Color



Interaction Between the Set_Write_Mask and the Set_Graphics_Function Keywords

Interaction Between the Set_Graphics_Function Keyword and and Colors

Window IDs

WMF Driver


NOTE: If you are running a Windows NT system, WMF hardware fonts can be rotated and transformed by general 3D transforms in PV-WAVE.
Selecting the WMF Driver

Listing the Current Settings for the WMF Driver

Sending PV-WAVE Output Directly to a Printer

Step 1 Select the WMF driver:

Step 2 Indicate output should be sent directly to the printer:

Step 3 Select the printer to send output to (if other than the default printer):

Step 4 Execute graphics commands (PLOT, SURFACE, XYOUTS, etc.)

Step 5 Close the Windows Metafile and the output is sent to the printer:

Handling 24-bit Color

Additional Text Formatting Commands

Controlling the WMF Driver with DEVICE Keywords


TIP: To avoid typing the font name, use the WIN32_PICK_FONT function to select a font interactively from a dialog box. For example, if you enter this command:

NOTE: The line caching feature may affect some PV-WAVE behavior that is familiar to you. In general, this applies to any operation that depends on the order in which lines are drawn. For example, using OPLOT with the color set to the background color to erase drawn lines may not work as expected. This is because some or all of the second set of lines may be drawn before the first set they were intended to overwrite. To avoid this, use the EMPTY procedure to force the driver to empty the line cache first.

NOTE: A default font mapping is defined in a configuration file that is read when the WMF driver is initialized. For information on this configuration file, see the Fonts chapter in the PV-WAVE User's Guide.

X Window System


NOTE: If you are running an X11R6 system, X Windows fonts can be rotated and transformed by general 3D transforms in PV-WAVE.
Controlling Where Graphics are Displayed

Selecting the X Driver

Listing the Current Settings for the X Driver

Graphical User Interfaces (GUIs) for PV-WAVE Applications Running Under X


UNIX and OpenVMS Users: For more details on interapplication communication, refer to the
PV-WAVE GUI Application Developer's Guide.

NOTE: All the options listed above are fully compatible with the X Window System and can be used to facilitate access to your application. However, you are not required to use any of them your application can still run under X, even though it does not have a Motif GUI.
Additional Text Formatting Commands

Controlling the X Driver with DEVICE Keywords

Index Description
0 Visual ID
1 Visual class
2 Depth
3 Size of colormap
4 Red mask
5 Green mask
6 Blue mask
7 Significant bits in the specification

Visual Class Value
StaticGray 0
GrayScale 1
StaticColor 2
PseudoColor 3
TrueColor 4
DirectColor 5


NOTE: X11R5 systems support scalable fonts. You can return the names of all scalable fonts by specifying a complete font name (one with all 14 fields separated by dashes) with a zero (0) in fields 7, 8, and 12 (the fields for pixel size, point size, and average width). To list all scalable fonts, enter the command:

NOTE: X11R6 systems allow fonts to be rotated and transformed by a general 3D transform. (This is accomplished using the X Logical Font Description (XLFD) extensions and does not include perspective.) You can return the names of all fonts that support 3D transformation by specifying a matrix in either the pixel size or point size fields (fields 7 or 8). To list all fonts capable of 3D transformation, enter the command:

NOTE: A default font mapping is defined in a configuration file that is read when the X driver is initialized. For information on this configuration file, see the Fonts chapter in the PV-WAVE User's Guide.
Graphics Function Codes (Continued)

Logical Graphics Functions and Values

Logical Function Code Definition Windows ROP Code
GXclear 0 0 R2_BLACK
GXand 1 src AND dst R2_MASKPEN
GXandReverse 2 src AND (NOT dst) R2_MASKPENNOT
GXcopy 3 src R2_COPYPEN
GXandInverted 4 (NOT src) AND dst R2_MASKNOTOPEN
GXnoop 5 dst R2_NOP
GXxor 6 src XOR dst R2_XORPEN
GXor 7 src OR dst R2_MERGEPEN
GXnor 8 (NOT src) AND (NOT dst) R2_NOTMASKPEN
GXequiv 9 (NOT src) XOR dst R2_NOTXORPEN
GXinvert 10 (NOT dst) R2_NOT
GXorReverse 11 src OR (NOT dst) R2_MERGEPENNOT
GXcopyInverted 12 (NOT src) R2_NOTCOPYPEN
GXorInverted 13 (NOT src) OR dst R2_MERGENOTPEN
GXnand 14 (NOT src) OR (NOT dst) R2_NOTMERGEPEN
GXset 15 1 R2_WHITE


NOTE: To acquire visual class ID numbers use the X library client program xdpyinfo, or use the command DEVICE, /Get_Visuals.

X Window Visuals

X Window System Visual Classes

Visual Class Name Writable Description
StaticGray no Gray scale
GrayScale yes Gray scale
StaticColor no Undecomposed color
PseudoColor yes Undecomposed color
TrueColor no Decomposed color
DirectColor yes Decomposed color


NOTE: For more information on the differences between pseudo color and 24-bit ("true") color, see PV-WAVE User's Guide.

TIP: For more detailed information about X visual classes, refer to Volume 1 of the Xlib Programming Manual, Second Edition, O'Reilly & Associates, Inc., Sebastopol, CA, 1990.

Selecting a Visual Class


NOTE: If a visual type and depth is specified, using the DEVICE procedure, and it does not match the default visual class of the screen, a new colormap is created.
Colormapped Graphics

8-bit Graphics Primer

24-bit Graphics Primer


NOTE: To see a formula for calculating how many colors a display is capable of displaying, given the number of bits it has for describing each pixel, refer to the PV-WAVE User's Guide.
How PV-WAVE Allocates the Colormap

Shared Colormaps

Advantages

Disadvantages

Private Colormaps

Advantages

Disadvantages

When Color Characteristics are Determined

Closing the Connection to the X Server to Reset Colors


TIP: Another way to close the connection to the X server is to delete every PV-WAVE graphics window that is currently open; this automatically closes the connection.

How Many Colors PV-WAVE Maps into the Color Table

Reserving Colors for Other Applications' Use

Color Translation Table


TIP: In the case of a private colormap, each element of the translation vector contains its own index value, because private colormaps start at zero and are contiguous.
Using Pixmaps to Improve Application Performance

Creating a Pixmap

Example Animating a Series of Pixmap Images











24-bit Visual Classes

DirectColor Mode

TrueColor Mode

Example Using PV-WAVE in TrueColor Mode






PV-WAVE Does Not Inherit the X Visual Class


NOTE: Windows that are created with calls to WAVE Widgets or Widget Toolbox functions and procedures are treated differently. These windows do inherit the X visual class from their top-level shell, which in turn, inherits the X visual class from the root window. In this sense, windows that are part of a graphical user interface (GUI) are different from ordinary PV-WAVE graphics windows.
Understanding 24-bit Graphics Displays

Specifying 24-bit Colors in Hexadecimal Notation

Figure B-4 Hexadecimal notation can be used to represent 24-bit numbers; each two digits describes either the red, green, or blue intensity. The top color shown in this figure is a light gray, since the red, green, and blue components are all set to an equal intensity. The lower color shown is the color magenta, where red and green are both set to full intensity (f f), but the color green is essentially turned "off" by setting it equal to zero (00).

Hexadecimal Notation for Comonly used Colors

Color Hexadecimal Notation
Black '000000'x
White 'f f f f f f'x
Red '0000f f'x
Green '00f f00'x
Blue 'f f0000'x
Cyan 'f f f f 00'x
Magenta 'f f00f f'x
Yellow '00f f f f'x
Medium Gray '7f7f7f'x


NOTE: When programming with WAVE Widgets or Widget Toolbox, you can only enter colors using color names. The hexadecimal form is not recognizable by the WAVE Widgets or Widget Toolbox routines. For more information about how to select colors for widgets in a graphical user interface (GUI), refer to the PV-WAVE GUI Application Developer's Guide.

Specifying 24-bit Plot Colors

Example Plotting with 24-bit Colors








NOTE: The system variable !D.N_Colors must still be initialized properly prior to opening the graphics window. For more information about how to initialize color characteristics, refer to
When Color Characteristics are Determined on page -73.
Using the Write Mask and Graphics Functions to Manipulate Color


TIP: For best results when using the write mask, use a color table that uses all 256 available colors, and bypass the translation table to make sure the color table starts at zero (0). Unfortunately, a side effect of letting PV-WAVE allocate all 256 colors is that you may see "window flashing" when using your application, as explained in
Private Colormaps on page -72.

Using the Write Mask to Create Special Effects

Using Graphics Functions to Manipulate Color




Interaction Between the Set_Write_Mask and the Set_Graphics_Function Keywords

Interaction Between the Set_Graphics_Function Keyword and Hardware Pixel Values

Example Understanding the Colors that are Produced by the GX Graphics Functions

Figure B-5 An example color translation table.






TIP: You can check the values in the current translation table using the Translation keyword; this keyword specifies the name of a variable to receive the translation vector. To read the translation table, enter this command:
X Window IDs


NOTE: If the X Window ID is from another program, PV-WAVE color table changes may not affect the window.

CAUTION: The WDELETE procedure will delete all
windows sharing a common X Window ID. For example:

Z-buffer Output

Controlling Z-buffer Output with DEVICE Keywords

Z-buffer Examples

Example 1

Figure B-6 Resulting image from Example 1.

Figure B-7

Example 2








Figure B-8 Resulting image from Example 2.

Example 3







Figure B-9 Resulting image from Example 3.

Figure B-10




doc@boulder.vni.com
Copyright © 1999, Visual Numerics, Inc. All rights reserved.