.NH 1 "XVGRAPHICS LIBRARY"
.XS
\s12\*(SN  XVGRAPHICS LIBRARY\s0
.XE
.sp 2
.NH 2 "INTRODUCTION TO THE XVGRAPHICS LIBRARY"
.XS
      \*(SN  INTRODUCTION
.XE
.sp 2
.PP
\fIxvgraphics\fP is the Khoros Library which contains all routines that
perform the graphics functions that are used by applications
such as the \fIxprism2\fP and \fIxprism3\fP plotting packages.
There are a great number of routines available,
to help the application programmer in plotting, displaying text, using vector
fonts, sending output to printers, and performing many other operations.
.sp 2
ALL programs that utilize these routines MUST link against:
.sp
-lXaw -lXmu -lXt -lXext -lX11
.sp 2
ALL programs that utilize these routines MUST include the statement:
.sp
#include "xvgraphics.h"
.sp 2
.PP
Descriptions of the routines in the \fIxvgraphics\fP library available to 
the user are provided here for the programmer who is interested in
writing graphics applications under X Windows, version 11, release 4.  Due to
the number of functions in the \fIxvgraphics\fP library, examples are
not given as they are in the explanations of the \fIxvforms\fP or \fIxvutils\fP
libraries.
.PP 
Note that routines in the \fIxvgraphics\fP library are divided into 2 groups:
routines used for two-dimensional operations, and routines used for three-
dimensional operations.  Routines used for two-dimensional operations only
are prefixed by "X2D_"; some routines prefixed by "X3D_" may be used either 
for only two- and three-dimensional operations, but most may be used for 
three-dimensional operations only.  Those "X3D_" routines that may be used 
for either purpose will be so noted. 
.PP
The \fIxvgraphics\fP library uses an internal data structure to identify 
and recall information about a graphics environment, or context, created by 
the application program with calls to the \fIxvgraphics\fP library.
Since this graphics structure is kept internal to the \fIxvgraphics\fP 
library, it is not seen by the calling program; instead, a \fIgraphics id\fP 
must sent as input to all \fIxvgraphics\fP routines.  This integer ID number
is a magic number that is assigned by the application programmer; it may be 
any valid integer greater than or equal to one.  Therefore, before using any 
of the other routines provided in the \fIxvgraphics\fP library, the
programmer \fIMUST\fP make a call to the X3D_init_graphics() routine to set
this ID number, and to create the graphics structure that it identifies,
for a specific instance of use by the application.  
.PP
Once the X3D_init_graphics() routine has been called, the application must
call the X3D_set_X11(). This call will set the display, the X11 window
that graphics operations will go to, and the GC's (X11 Graphics Contexts) for 
drawing and filling operations. Now, the program is ready to make use 
of the other routines in the \fIxvgraphics\fP library.  Before the 
application exits, or when the application has no further need for the graphics
environment or future calls to the \fIxvgraphics\fP library, the 
X3D_close_graphics() routine must be called to free the internal data structure
created by X3D_init_graphics.  All of these routines are described on the
following page.
.sp
.PP
The \fIxvgraphics\fP libraries use a few special data types that should be
defined here.  These are the REAL, VECTOR, and COORD data types.  These
are defined as follows:
.PP
.in +5
/*
.br
 * most numbers that are passed to xvgraphics routines
.br
 */
.br
#ifndef REAL
.br
typedef  double REAL;
.br
#endif
.sp
/*
.br
 * general utility VECTOR structure
.br
 * note: the difference between a VECTOR and the
.br
 * COORD structure that follows is that a
.br
 * VECTOR has a direction associated with it, while a
.br
 * COORD implies a mathematical point.
.br
 */
.br
typedef  struct
.br
         {
.br
                   REAL x, y, z;
.br
         }  VECTOR;
.sp
/*
.br
 * general utility point COORDinate  
.br
 */
.br
typedef  struct
.br
         {
.br
                   REAL  x, y, z;
.br
                   Index d;
.br
         }  COORD;
.sp
.in -5
.PP
Notice that the REAL data type is now defined as a \fIdouble\fP.  This is a
change from Khoros 0.9, when the REAL data type was defined as a \fIfloat\fP.
Thus, any application developed under Khoros 0.9 that uses the 
\fIxvgraphics\fP library and has hardwired \fIfloat\fP values passed to 
routines that have \fIREAL\fP parameters will have bugs unless it is modified 
to pass the same arguments in their \fIdouble\fP representations.
.bp
.NH 2 "REQUIRED CALLS"
.XS
      \*(SN  REQUIRED CALLS
.XE
.sp 2
.NH 3 " X3D_init_graphics()"
.Xs
              \*(SN   X3D_init_graphics()
.XE
.sp
.LP
A call to X3D_init_graphics() must be the first call to any \fIxvgraphics\fP
routine with a particular graphics environment, or context.
This routine creates and initializes the internal X3D graphics structure, in
preparation for future calls the the \fIxvgraphics\fP library, and associates
it with the ID number specified.  This call must be made by both 2D and 3D
graphics applications.
.sp
.B
X3D_init_graphics(id, dimension)
.sp
int id;
.br
int dimension;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
This ID is a magic number that is assigned by the application programmer; any
positive integer is acceptable.  This ID number must be provided to all future
calls to the \fIxvgraphics\fP library that will deal with the current graphics 
context.
.IP dimension:
Specifies whether future calls to the \fIxvgraphics\fP library with this ID
will be in the context of two dimensional operations or three dimensional 
operations.  Provide one of: X2D or X3D.
.sp
.LP
Note that the same application program may use call X3D_init_graphics()
more than once, in order to create multiple graphics contexts.  For instance,
the application program might have three windows, each of which having its own
graphics environment, with different types of data displayed in different ways. 
.LP
=====================================================================
.sp 3
.NH 3 " X3D_close_graphics()"
.XS
              \*(SN   X3D_close_graphics()
.XE
.sp
.LP
A call to X3D_close_graphics() must be the last call to any \fIxvgraphics\fP
routine with a particular graphics environment, or context.
This routine deletes the internal data structure used by the 
\fIxvgraphics\fP library, and frees allocated memory.  This call must be made 
by both 2D and 3D graphics applications.
.B
.sp
X3D_close_graphics(id)
.sp
int id;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.sp
.LP
Note that this routine \fIMUST\fP be called once for each call to 
X3D_init_graphics().
.LP
=====================================================================
.NH 3 " X3D_set_X11()"
.XS
              \*(SN   X3D_set_X11()
.XE
.sp
.LP
This routine sets the display, the window, and the graphics contexts, so
that graphics output will be sent to an X11 display and screen.  This call 
must be made by both 2D and 3D graphics applications.
.sp
.LP
.B
X3D_set_X11(id, display, window, widget)
.sp
int     id;
.br
Display *display;
.br
Window  window;
.br
Widget  widget;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP display:
Pointer to the current X11 Display structure (defined in Xlib.h)
.IP window:
If the workspace to which drawing is to be done is a Window (defined in X.h),
pass the window here; pass NULL for widget.
.IP widget:
If the workspace to which drawing is to be done is a Widget rather than a
window, pass the widget here;  pass NULL for window.
.sp
As implied by the arguments to this routine, before using the \fIxvgraphics\fP
library, it is necessary for the application to:
.IP
(1) set the Display properly.  If the application is also using the 
\fIxvforms\fP library, this is done with the call to \fIxvf_initialize()\fP.
.br
(2) create and display a Window or a Widget using the utilities provided 
by Xlib or the X Toolkit.  If the application is using a Workspace Widget
of the \fIxvforms\fP library via the (-w) UIS line, the Widget will be set
in the call to \fI_xvf_init_XXX()\fP where XXX is the variable name provided
on the (-F) UIS line;  the widget in question will be defined in the 
"form_init.c" file generated by \fBconductor\fP.  The Window parameter may
be set by a call to \fIXtWindow(workspace_widget)\fP.
.br
If the application does not use the \fIxvforms\fP library, the reader is 
referred to the \fIXlib- C Language X Interface, X Version 11, Release 4\fP 
document, written by James Gettys, Robert W. Scheifler, and Ron Newman, for
more information about the \fIDisplay\fP, \fIWindow\fP, and \fIWidget\fP
arguments.
.sp
.LP
Note that this routine \fIMUST\fP be called once for each call to 
X3D_init_graphics().
.sp
.LP
=====================================================================
.bp
.NH 2 "UTILITIES THAT CONTROL THE 2D VIEWING SYSTEM"
.XS
      \*(SN  UTILITIES THAT CONTROL THE 2D VIEWING SYSTEM
.XE
.sp 2
.NH 3 " X2D_set_window()"
.XS
              \*(SN   X2D_set_window()
.XE
.sp
.LP
Sets the minimum and maximum device coordinates for the current window.
.sp
.LP
.B
X2D_set_window(id, x, y, width, height)
.sp
int     id;
.br
short   x, y; 
.br
short   width; 
.br
short   height;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP "x, y:"
The (x,y) point describing the upper left corner of the window in device
coordinates 
.IP width:
The width of the window in device coordinates
.IP height:
The height of the window in device coordinates
.sp
.LP
Note that the Window here is understood; it was set by a call to X3D_set_X11().
Also notice that the x, y, width, and height arguments are in device coordinateswith respect to this Window, NOT to the root window.  Thus, if the entire window
is to be used for graphics operations, and the window is 512x512 pixels in
size, x and y would be specified as (0,0), while width and height would be
(512, 512).
.LP
=====================================================================
.sp 2
.NH 3 " X2D_set_viewport()"
.XS
              \*(SN   X2D_set_viewport()
.XE
.sp
.LP
Sets the minimum and maximum viewport values within the current window.
.sp
.LP
.B
X2D_set_viewport (id, xmin, xmax, ymin, ymax)
.sp
int     id;
.br
REAL    xmin, xmax, ymin, ymax;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP xmin:
A float value specifying x minimum viewport normalized device coordinate value.
.IP xmax:
A float value specifying x maximum viewport normalized device coordinate value.
.IP ymin:
A float value specifying y minimum viewport normalized device coordinate value.
.IP ymax:
A float value specifying y maximum viewport normalized device coordinate value.
.LP
In normalized device coordinates, the viewport is a unit square.
.LP
=====================================================================
.NH 3 " X2D_set_wc_min_max()"
.XS
              \*(SN   X2D_set_wc_min_max()
.XE
.sp
.LP
Sets the minimum and maximum world coordinate points for current window.
.sp
.LP
.B
X2D_set_wc_min_max (id, wc_min, wc_max)
.sp
int     id;
.br
COORD   wc_min, wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP wc_min:
The minimum world coordinate values that the application will be using in
this window (the Z value of the COORD is unused)
.IP wc_max:
The maximum world coordinate values that the application will be using in
this window (the Z value of the COORD is unused)
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_set_clipping()"
.XS
              \*(SN   X2D_set_clipping()
.XE
.sp
.LP
Turns clipping to the viewport on or off.
.sp
.LP
.B
X2D_set_clipping(id, on_off)
.sp
int     id;
.br
int     on_off;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP on_off:
On = 1; 0ff = 0
.sp
.LP
=====================================================================
.bp
.NH 2 "UTILITIES THAT CONTROL THE 3D VIEWING SYSTEM"
.XS
      \*(SN  UTILITIES THAT CONTROL THE 3D VIEWING SYSTEM
.XE
.sp 2
.NH 3 " X3D_set_window()"
.XS
              \*(SN   X3D_set_window()
.XE
.sp
.LP
Sets the minimum and maximum device coordinates for the current window.
.sp
.LP
.B
X3D_set_window(id, x, y, width, height)
.sp
int     id;
.br
short   x, y; 
.br
short   width; 
.br
short   height;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP "x, y:"
The (x,y) point describing the upper left hand corner of the window in device
coordinates 
.IP width:
The width of the window in device coordinates
.IP height:
The height of the window in device coordinates
.sp
.LP
Note that the Window here is understood; it was set by a call to X3D_set_X11().
Also notice that the x, y, width, and height arguments are in device coordinateswith respect to this Window, NOT to the root window.  Thus, if the entire window
is to be used for graphics operations, and the window is 512x512 pixels in
size, x and y would be specified as (0,0), while width and height would be
(512, 512).
.sp
.LP
=====================================================================
.NH 3 " X3D_set_viewport()"
.XS
              \*(SN   X3D_set_viewport()
.XE
.sp
.LP
Sets the minimum and maximum viewport values within the current window.
.sp
.LP
.B
X3D_set_viewport (id, xmin, xmax, ymin, ymax, zmin, zmax)
.sp
int     id;
.br
float    xmin, xmax; 
.br
float    ymin, ymax;
.br
float    zmin, zmax;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP xmin:
A float value specifying x minimum viewport normalized device coordinate value.
.IP xmax:
A float value specifying x maximum viewport normalized device coordinate value.
.IP ymin:
A float value specifying y minimum viewport normalized device coordinate value.
.IP ymax:
A float value specifying y maximum viewport normalized device coordinate value.
.IP zmin:
A float value specifying z minimum viewport normalized device coordinate value.
.IP zmax:
A float value specifying z maximum viewport normalized device coordinate value.
.sp
.LP
Note that normalized device coordinate values imply that the viewport must
be considered a unit cube.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_set_wc_min_max()"
.XS
              \*(SN   3D_set_wc_min_max()
.XE
.sp
.LP
Sets the minimum and maximum world coordinate points for current window.
.sp
.LP
.B
X3D_set_wc_min_max (id, wc_min, wc_max)
.sp
int     id;
.br
COORD   wc_min, wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP wc_min:
The minimum world coordinate values that the application will be using in
this window
.IP wc_max:
The maximum world coordinate values that the application will be using in
this window
.sp
.LP
=====================================================================
.NH 3 " X3D_set_projection()"
.XS
              \*(SN   X3D_set_projection()
.XE
.sp
.LP
Sets the projection type for the current graphics environment
.sp
.LP
.B
X3D_set_projection (id, projection)
.sp
int     id; 
.br
int 	projection;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP projection: 8
The type of projection; may be one of:
.IP " " 15
Perspective
.br
Orthographic
.br
Cavalier
.br
Cabinet
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_set_viewpoint()"
.XS
              \*(SN   X3D_set_viewpoint()
.XE
.sp
.LP
Sets the eye orientation for the current graphics environment
.sp
.LP
.B
X3D_set_viewpoint (id, alpha, theta, eye_distance)
.sp
int     id;
.br
REAL    alpha; 
.br
REAL    theta; 
.br
REAL    eye_distance;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP alpha:
The angle describing the position of the eye between the Z axis 
and the XY plane (in degrees)
.IP theta:
The angle describing the position of the eye around Z axis with 
respect to the XY plane
.IP eye_dist:
Distance of the eye from the viewport to the object displayed
.sp
.LP
=====================================================================
.NH 3 " X3D_set_view_distance()"
.XS
              \*(SN   X3D_set_view_distance()
.XE
.sp
.LP
Sets the distance of the eye from the viewport for the current
graphics environment
.sp
.LP
.B
X3D_set_view_distance (id, view_distance)
.sp
int     id;
.br
REAL    view_distance;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP view_distance:
Distance of the eye from the viewport
.sp
.LP
=====================================================================
.bp
.NH 2 "UTILITIES TO INQUIRE ABOUT 2D VIEWING SYSTEM
.XS
      \*(SN  UTILITIES TO INQUIRE ABOUT 2D VIEWING SYSTEM
.XE
.sp 2
.NH 3 " X2D_inquire_window()"
.XS
              \*(SN   X2D_inquire_window()
.XE
.sp
.LP
This routine returns the minimum and maximum device coordinates currently
set for the graphics environment.
.sp
.LP
.B
X2D_inquire_window (id, x, y, width, height)
.sp
int     id;
.br
short   *x, *y; 
.br
short   *width; 
.br
short   *height;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP "x, y:"
The (x,y) point describing the upper left hand corner of the window in device
coordinates 
.IP width:
The width of the window in device coordinates
.IP height:
The height of the window in device coordinates
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_inquire_viewport()"
.XS
              \*(SN   X2D_inquire_viewport()
.XE
.sp
.LP
Returns the minimum and maximum viewport values currently set for the 
graphics environment.
.sp
.LP
.B
X2D_inquire_viewport (id, xmin, xmax, ymin, ymax)
.sp
int     id;
.br
REAL    *xmin, *xmax, *ymin, *ymax;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP xmin:
A float value specifying x minimum viewport normalized device coordinate value.
.IP xmax:
A float value specifying x maximum viewport normalized device coordinate value.
.IP ymin:
A float value specifying y minimum viewport normalized device coordinate value.
.IP ymax:
A float value specifying y maximum viewport normalized device coordinate value.
.sp
.LP
=====================================================================
.NH 3 " X2D_inquire_wc_min_max()"
.XS
              \*(SN   X2D_inquire_wc_min_max()
.XE
.sp
.LP
Returns the minimum and maximum world coordinate points currently set for the
graphics environment.
.sp
.LP
.B
X2D_inquire_wc_min_max(id, wc_min, wc_max)
.sp
int id;
.br
COORD *wc_min, *wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP wc_min:
The minimum world coordinate values that the application will be using in
this window (the Z value of the COORD is invalid)
.IP wc_max:
The maximum world coordinate values that the application will be using in
this window (the Z value of the COORD is invalid)
.LP
.sp
=====================================================================
.bp
.NH 2 "UTILITIES TO INQUIRE ABOUT 3D VIEWING SYSTEM"
.XS
      \*(SN  UTILITIES TO INQUIRE ABOUT 3D VIEWING SYSTEM
.XE
.sp 2
.NH 3 " X3D_inquire_window()"
.XS
              \*(SN   X3D_inquire_window()
.XE
.sp
.LP
This routine returns the minimum and maximum device coordinates currently
set for the graphics environment.
.sp
.LP
.B
X3D_inquire_window (id, x, y, width, height)
.sp
int     id;
.br
short   *x, *y; 
.br
short   *width; 
.br
short   *height;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP "x, y:"
The (x,y) point describing the upper left hand corner of the window in device
coordinates 
.IP width:
The width of the window in device coordinates
.IP height:
The height of the window in device coordinates
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_inquire_viewport()"
.XS
              \*(SN   X3D_inquire_viewport()
.XE
.sp
.LP
Returns the minimum and maximum viewport values currently set for the 
graphics environment.
.sp
.LP
.B
X3D_inquire_viewport (id, xmin, xmax, ymin, ymax, zmin, zmax)
.sp
int     id;
.br
REAL    *xmin, *xmax, *ymin, *ymax, *zmin, *zmax;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP xmin:
A float value specifying x minimum viewport normalized device coordinate value.
.IP xmax:
A float value specifying x maximum viewport normalized device coordinate value.
.IP ymin:
A float value specifying y minimum viewport normalized device coordinate value.
.IP ymax:
A float value specifying y maximum viewport normalized device coordinate value.
.IP zmin:
A float value specifying z minimum viewport normalized device coordinate value.
.IP zmax:
A float value specifying z maximum viewport normalized device coordinate value.
.LP
=====================================================================
.NH 3 " X3D_inquire_wc_min_max()"
.XS
              \*(SN   X3D_inquire_wc_min_max()
.XE
.sp
.LP
Returns the minimum and maximum world coordinate points currently set for the
graphics environment.
.B
.sp
X3D_inquire_wc_min_max (id, wc_min, wc_max)
.sp
int     id;
.br
COORD   *wc_min; 
.br
COORD   *wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP wc_min:
The minimum world coordinate values that the application will be using in
this window 
.IP wc_max:
The maximum world coordinate values that the application will be using in
this window 
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_inquire_projection()"
.XS
              \*(SN   X3D_inquire_projection()
.XE
.sp
.LP
Returns the projection type for the current graphics environment
.sp
.LP
.B
X3D_inquire_projection (id, projection)
.sp
int     id; 
.br
int 	*projection;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP projection: 8
The type of projection; will be one of:
.IP " " 15
Perspective
.br
Orthographic
.br
Cavalier
.br
Cabinet
.sp
.LP
=====================================================================
.NH 3 " X3D_inquire_viewpoint()"
.XS
              \*(SN   X3D_inquire_viewpoint()
.XE
.sp
.R
Returns the eye orientation for the current graphics environment
.sp
.LP
.B
X3D_inquire_viewpoint (id, alpha, theta, eye_distance)
.sp
int     id;
.br
REAL    *alpha; 
.br
REAL    *theta; 
.br
REAL    *eye_distance;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP alpha:
The angle describing the position of the eye between the Z axis 
and the XY plane (in degrees)
.IP theta:
The angle describing the position of the eye around Z axis with 
respect to the XY plane
.IP eye_dist:
Distance of the eye from the viewport to the object displayed
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_inquire_view_distance()"
.XS
              \*(SN   X3D_inquire_view_distance()
.XE
.sp
.LP
Returns the distance of the eye from the viewport for the current
graphics environment
.sp
.LP
.B
X3D_inquire_view_distance (id, view_distance)
.sp
int     id;
.br
REAL    *view_distance;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP view_distance:
Distance of the eye from the viewport
.sp
.LP
=====================================================================
.bp
.NH 2 "FONT AND TEXT UTILITIES"
.XS
      \*(SN  FONT AND TEXT UTILITIES
.XE
.sp 2
.NH 3 " X3D_init_font()"
.XS
              \*(SN   X3D_init_font()
.XE
.sp
.LP
Reads a Khoros font description file, and sets up the X3DFont structure
for  each character described there, so that characters can be
drawn later using that font structure, referenced by \fIfontname\fP.
This routine may be called by by both 2D and 3D graphics applications.
.sp
.LP
.B
X3DFont *X3D_init_font(fontname, filename)
.sp
char	*fontname;
.br
char	*filename;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP fontname: 8
Name to be assigned to this font
.IP filename:
Name of the Khoros font file
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_set_font()"
.XS
              \*(SN   X3D_set_font()
.XE
.sp
.LP
Sets the font to be used when drawing text.
This routine may be called by by both 2D and 3D graphics applications.
.sp
.LP
.B
X3D_set_font (id, fontname)
.sp
int     id;
.br
char    *fontname;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP fontname:
Name of the desired font
.sp
.LP
=====================================================================
.NH 3 " X3D_set_text()"
.XS
              \*(SN   X3D_set_text()
.XE
.sp
.LP
Sets the justification, spacing, and aspect ration to be used when drawing text.
This routine may be called by by both 2D and 3D graphics applications.
.sp
.LP
.B
X3D_set_text (id, justify, spacing, aspect)
.sp
int     id;
.br
int 	justify;
.br
REAL	spacing;
.br
REAL	aspect;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP justify:
Type of justification - may be one of:
.IP " " 15
LeftJustify
.br
CenterJustify
.br
RightJustify
.IP spacing: 8
world coordinate amount of spacing between characters
.IP aspect:
width:height aspect ratio
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_inquire_fonts()"
.XS
              \*(SN   X3D_inquire_fonts()
.XE
.sp
.LP
Inquire which fonts are currently available.  Returns an array of strings 
naming available fonts, and the number of strings.
This routine may be called by by both 2D and 3D graphics applications.
.sp
.LP
.B
char **X3D_inquire_fonts(fontnum)
.sp
int     *fontnum;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP fontnum:  8
Returns the number of available fonts.
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_text()"
.XS
              \*(SN   X2D_draw_text()
.XE
.sp
.LP
Draws text into a window used for 2D graphics applications
.sp
.LP
.B
X2D_draw_text (id, coord, vector, width, height, string, size, fg)
.sp
int     id; 
.br
COORD   coord;
.br
VECTOR  vector;
.br
REAL    width, height;
.br
char    *string;
.br
int	size;
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord:
Coordinate describing the lower left hand corner of text
.IP vector:
Vector describing direction for text to be drawn
.IP width:
Width of a single character
.IP height:
Height of a single character
.IP string:
The string to be drawn
.IP size:
Number of characters in the string
.sp
.LP
=====================================================================
.NH 3 " X3D_draw_text()"
.XS
              \*(SN   X3D_draw_text()
.XE
.sp
.LP
Draws text into a window used for 3D graphics applications
.sp
.LP
.B
X3D_draw_text (id, coord, vector, width, height, depth, string, size, fg)
.sp
int     id; 
.br
COORD   coord;
.br
VECTOR  vector;
.br
REAL    width, height, depth;
.br
char    *string;
.br
int	size;
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord:
Coordinate describing the lower left hand corner of text
.IP vector:
Vector describing direction for text to be drawn
.IP width:
Width of a single character
.IP height:
Height of a single character
.IP depth:
Depth of a single character
.IP string:
The string to be drawn
.IP size:
Number of characters in the string
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X2D_clear_text()"
.XS
              \*(SN   X2D_clear_text()
.XE
.sp
.LP
Clears text from a window used for 2D graphics applications
.sp
.LP
.B
X2D_clear_text(id, coord, vector, width, height, size, bg)
.sp
int     id; 
.br
COORD   coord;
.br
VECTOR  vector;
.br
COORD   coord;
.br
REAL    width, height;
.br
int	size;
.br
XColor  *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord:
Coordinate describing the lower left hand corner of text
.IP vector:
Vector describing direction for text to be drawn
.IP width:
Width of a single character
.IP height:
Height of a single character
.IP size:
Number of characters in the string
.IP bg:
Pointer to XColor structure representing the desired background color.
.sp
.LP
=====================================================================
.NH 3 " X3D_clear_text()"
.XS
              \*(SN   X3D_clear_text()
.XE
.sp
.LP
Clears text from a window used for 3D graphics applications
.sp
.LP
.B
X3D_clear_text(id, coord, vector, width, height, depth, size, bg)
.sp
int     id; 
.br
COORD   coord;
.br
VECTOR  vector;
.br
COORD   coord;
.br
REAL    width, height, depth;
.br
int	size;
.br
XColor  *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord:
Coordinate describing the lower left hand corner of text
.IP vector:
Vector describing direction for text to be drawn
.IP width:
Width of a single character
.IP height:
Height of a single character
.IP depth:
Depth of a single character
.IP size:
Number of characters in the string to be erased
.IP bg:
Pointer to XColor structure representing the desired background color.
.sp
.LP
=====================================================================
.bp
.NH 2 "2D DRAWING UTILITIES"
.XS
      \*(SN  2D DRAWING UTILITIES
.XE
.sp 2
.NH 3 " X2D_draw_bargraph()"
.XS
              \*(SN   X2D_draw_bargraph()
.XE
.sp
.LP
Draws a bargraph in two dimensions.
.sp
.LP
.B
X2D_draw_bargraph (id, coords, size, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the bar graph
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_draw_colorline()"
.XS
              \*(SN   X2D_draw_colorline()
.XE
.sp
.LP
Draws a multi-colored line, according to the different 
color levels in two dimensions.
.sp
.LP
.B
X2D_draw_colorline(id, coords, size, levels, colors, num_levels)
.sp
int      id;
.br
COORD    *coords;
.br
int      size; 
.br
REAL     *levels;
.br
XColor   *colors;
.br
int	 num_levels;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the colorline
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP levels:
Array of level divisions at which each new color will begin
.IP colors:
Array of XColor structures representing desired foreground color for each
level 
for each level
.IP num_levels: 10
Number of levels; size of the \fIlevels\fP and \fIpixels\fP arrays
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_discrete()"
.XS
              \*(SN  X2D_draw_discrete()
.XE
.sp
.LP
Draws a discrete plot in two dimensions.
.sp
.LP
.B
X2D_draw_discrete (id, coords, size, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords: 8
Array of coordinates from which to create the discrete plot
.IP size: 8
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_histogram()"
.XS
              \*(SN  X2D_draw_histogram()
.XE
.sp
.LP
Draws a histogram plot in two dimensions.
.sp
.LP
.B
X2D_draw_histogram (id, coords, size, wcmin, wcmax, num, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
COORD   wc_min;
.br
COORD   wc_max;
.br
int     num;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords: 8
Array of coordinates from which to create the histogram plot
.IP size: 8
Number of coordinates in the \fIcoords\fP array.
.IP "wcmin, wcmax:" 8
Coordinates describing the minimum & maximum world coordinate points.
.IP num:
Currently unused
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.sp 3
.sp 3
.NH 3 " X2D_draw_line()"
.XS
              \*(SN   X2D_draw_line()
.XE
.sp
.LP
Draws a single line in two dimensions.
.sp
.LP
.B
X2D_draw_line(id, coord1, coord2, fg)
.sp
int     id; 
.br
COORD   coord1, coord2;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord1:
The first coordinate of the line
.IP coord1:
The second coordinate of the line
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_linemarker()"
.XS
              \*(SN   X2D_draw_linemarker()
.XE
.sp
.LP
Draws a two dimensional linemarker plot (a 2D plot with data points marked).
.sp
.LP
.B
X2D_draw_linemarker (id, coords, size, marker_type, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
int	marker_type;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the linemarker plot
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP marker_type:
The marker type to use, may be one of: MarkerSquare, MarkerTriangle,
MarkerCross, MarkerBowTie, MarkerArc, MarkerDiamond, MarkerCircle,
MarkerV, MarkerHexagon, MarkerX, MarkerDot, MarkerCaret, MarkerPoint
MarkerDagger, or MarkerBox.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_draw_polygon()"
.XS
              \*(SN   X2D_draw_polygon()
.XE
.sp
.LP
Draws a two dimensional polygon 
.sp
.LP
.B
X2D_draw_polygon (id, coords, size, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the polygon
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_polyline()"
.XS
              \*(SN   X2D_draw_polyline()
.XE
.sp
.LP
Draws a two dimensional polyline 
.sp
.LP
.B
X2D_draw_polyline (id, coords, size, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the polyline
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_draw_polymarker()"
.XS
              \*(SN   X2D_draw_polymarker()
.XE
.sp
.LP
Draws a two dimensional polymarker plot
.sp
.LP
.B
X2D_draw_polymarker (id, coords, size, marker_type, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
int  	marker_type;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the discrete plot
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP marker_type:
The marker type to use, may be one of: MarkerSquare, MarkerTriangle,
MarkerCross, MarkerBowTie, MarkerArc, MarkerDiamond, MarkerCircle,
MarkerV, MarkerHexagon, MarkerX, MarkerDot, MarkerCaret, MarkerPoint
MarkerDagger, or MarkerBox.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X2D_draw_rectangle()"
.XS
              \*(SN   X2D_draw_rectangle()
.XE
.sp
.LP
Draws a rectangle
.sp
.LP
.B
X2D_draw_rectangle (id, coord, width, height, fg)
.sp
int     id; 
.br
COORD   coord;
.br
int	width;
.br
int	height;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Lower left hand world coordinate of the rectangle
.IP width:
Width of the rectangle
.IP height:
Height of the rectangle
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X2D_draw_segments()"
.XS
              \*(SN   X2D_draw_segments()
.XE
.sp
.LP
Draws a set of lines in two dimensions.
.sp
.LP
.B
X2D_draw_segments (id, coords, size, fg)
.sp
int     id; 
.br
COORD   *coords;
.br
int	size;
.br
XColor  *fg;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the set of lines
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.bp
.NH 2 "3D DRAWING UTILITIES"
.XS
      \*(SN  3D DRAWING UTILITIES
.XE
.sp 2
.NH 3 " X3D_draw_colorline()"
.XS
              \*(SN   X3D_draw_colorline()
.XE
.sp
.LP
Draws a multi-colored line, according to the different color levels, 
in three dimensions.
.sp
.LP
.B
X3D_draw_colorline(id, coords, size, levels, colors, num_levels)
.sp
int      id;
.br
COORD    *coords;
.br
int      size;
.br
REAL     *levels;
.br
XColor	 *colors;
.br
int      num_levels;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the colorline
.IP size: 8
Number of coordinates in the \fIcoords\fP array.
.IP levels:
Array of level divisions at which each new color will begin (note that passing
in NULL implies that default levels will be generated automatically).
.IP colors:
Array of XColor structures representing desired foreground color for each
level
.IP num_levels:
Number of levels; size of the \fIlevels\fP and \fIpixels\fP arrays
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_colormesh()"
.XS
              \*(SN   X3D_draw_colormesh()
.XE
.sp
.LP
Draws a mesh plot in three dimensions  using different color levels.
.sp
.LP
.B
X3D_draw_colormesh(id, coords, row_size, size, levels, 
.br
			colors, num_levels, bg, wcmin, wcmax)
.sp
int      id;
.br
COORD    *coords; 
.br
int      row_size; 
.br
int	 size; 
.br
REAL     *levels;
.br
XColor	 *colors;
.br
int	 num_levels;
.br
XColor   *bg;
.br
COORD	wcmin, wcmax;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the color mesh
.IP row_size:
Number of coordinates in each row.
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP levels:
Array of level divisions at which each new color will begin (note that passing
in NULL implies that default levels will be generated automatically).
.IP colors:
Array of XColor structures representing desired foreground color for each
color level
.IP num_levels:
Number of levels; size of the \fIlevels\fP and \fIpixels\fP arrays
.IP bg:
XColor structure representing background color to fill with
.IP "wcmin, wcmax:"
World coordinate minimums and maximums of the data provided in the \fIcoords\fP
array.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_contour()"
.XS
              \*(SN   X3D_draw_contour()
.XE
.sp
.LP
Draws a contour plot in three dimensions using different color levels.
.sp
.LP
.B
X3D_draw_contour(id, coords, row_size, size, levels, 
.br
			colors, num_levels, base)
.sp
int      id;
.br
COORD    *coords; 
.br
int      row_size; 
.br
int	 size; 
.br
REAL     *levels;
.br
XColor   *colors;
.br
int	 num_levels;
.br
int	base;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment.
.IP coords:
Array of coordinates from which to create the contour plot.
.IP row_size:
Number of coordinates in each row.
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP levels:
Array of level divisions at which each new color will begin (note that passing
in NULL implies that default levels will be generated automatically).
.IP colors:
Array of XColor structures representing desired foreground color for each
color level
.IP num_levels:
Number of levels; size of the \fIlevels\fP and \fIpixels\fP arrays
.IP base:
If (base = 1), all contours will be projected to the XY plane, at Z = 0, 
resulting in a 2D contour plot. If (base = 0), each contour level will 
appear at its Z value, resulting in a 3D contour plot.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_horizon()"
.XS
              \*(SN   X3D_draw_horizon()
.XE
.sp
.LP
Draws a horizon plot in three dimensions.
.sp
.LP
.B
X3D_draw_horizon(id, coords, rows, size, fg, bg, wcmin, wcmax)
.sp
int      id;
.br
COORD    *coords; 
.br
int      rows; 
.br
int	 size; 
.br
XColor  *fg, *bg;
.br
COORD	wcmin, wcmax;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the color mesh
.IP rows:
Number of coordinates in each row.
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP "fg, bg":
Pointers to XColor structures representing the desired foreground  and
background colors.
.IP "wcmin, wcmax:"
World coordinate X, Y, and Z minimums and maximums over all the data 
provided in the \fIcoords\fP array.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_draw_impulse()"
.XS
              \*(SN   X3D_draw_impulse()
.XE
.sp
.LP
Draws an impulse plot in three dimensions.
.sp
.LP
.B
X3D_draw_impulse(id, coords, size, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the impulse plot
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_line()"
.XS
              \*(SN   X3D_draw_line()
.XE
.sp
.LP
Draws a single line in three dimensions.
.sp
.LP
.B
X3D_draw_line(id, coord1, coord2, fg)
.sp
int      id;
.br
COORD    *coord1; 
.br
COORD    *coord2; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord1:
First coordinate of the line
.IP coord2:
Second coordinate of the line
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_draw_lineplot()"
.XS
              \*(SN   X3D_draw_lineplot()
.XE
.sp
.LP
Draws a line plot in three dimensions.
.sp
.LP
.B
X3D_draw_lineplot(id, coords, row_size, size, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 row_size; 
.br
int	 size; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the impulse plot
.IP row_size:
Number of points in each row
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_mesh()"
.XS
              \*(SN   X3D_draw_mesh()
.XE
.sp
.LP
Draws a mesh plot in three dimensions.
.sp
.LP
.B
X3D_draw_mesh(id, coords, row_size, size, fg, bg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
int	 row_size;
.br
XColor  *fg, *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the mesh plot
.IP row_size:
Number of points in each row
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP "fg, bg:"
Pointers to XColor structures representing the desired foreground 
and background colors.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_draw_polygon()"
.XS
              \*(SN   X3D_draw_polygon()
.XE
.sp
.LP
Draws a polygon in three dimensions.
.sp
.LP
.B
X3D_draw_polygon(id, coords, size, fg, bg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
XColor  *fg, *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the polygon
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP "fg, bg:"
Pointers to XColor structures representing the desired foreground and
background colors.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_polyline()
.XS
              \*(SN   X3D_draw_polyline()
.XE
.sp
.LP
Draws a polyline in three dimensions.
.sp
.LP
.B
X3D_draw_polyline(id, coords, size, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the polyline
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_draw_polymarker()"
.XS
              \*(SN   X3D_draw_polymarker()
.XE
.sp
.LP
Draws a polymarker plot in three dimensions.
.sp
.LP
.B
X3D_draw_polymarker(id, coords, size, marker_type, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
int 	 marker_type:
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the polymarker plot
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP marker_type:
The marker type to use, may be one of: MarkerSquare, MarkerTriangle, 
MarkerCross, MarkerBowTie, MarkerArc, MarkerDiamond, MarkerCircle, MarkerV,
MarkerHexagon, MarkerX, MarkerDot, MarkerCaret, MarkerPoint, MarkerDagger,
or MarkerBox.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.sp
.LP
=====================================================================
.NH 3 " X3D_draw_rectangle()"
.XS
              \*(SN   X3D_draw_rectangle()
.XE
.sp
.LP
Draws a rectangle in three dimensions.
.sp
.LP
.B
X3D_draw_rectangle(id, coord, width, height, depth, fg)
.sp
int      id;
.br
COORD    coord; 
.br
REAL	 width; 
.br
REAL	 height; 
.br
REAL	 depth; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coord:
The starting corner of the rectangle in world coordinates
.IP width:
Width of the rectangle in world coordinates.
.IP height:
Height of the rectangle in world coordinates.
.IP depth:
Depth of the rectangle in world coordinates.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_draw_segments()"
.XS
              \*(SN   X3D_draw_segments()
.XE
.sp
.LP
Draws a series of line segments in three dimensions.
.sp
.LP
.B
X3D_draw_segments(id, coords, size, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 size; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the segments
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_surface()"
.XS
              \*(SN   X3D_draw_surface()
.XE
.sp
.LP
Draws a surface plot in three dimensions using different color levels.
.sp
.LP
.B
X3D_draw_surface(id, coords, row_size, size, levels, 
.br
			colors, num_levels, wcmin, wcmax, use_image, 
.br
			interp_image)
.sp
int      id;
.br
COORD    *coords; 
.br
int      row_size; 
.br
int	 size; 
.br
REAL     *levels;
.br
XColor   *colors;
.br
int	 num_levels;
.br
COORD	wcmin, wcmax;
.br
int      use_image;
.br
int 	 interp_image;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment.
.IP coords:
Array of coordinates from which to create the contour plot.
.IP row_size:
Number of coordinates in each row.
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP levels:
Array of level divisions at which each new color will begin (note that passing
in NULL implies that default levels will be generated automatically).
.IP colors:
Array of XColor structures representing the colors for each level 
to be drawn in.
.IP num_levels:
Number of levels; size of the \fIlevels\fP and \fIpixels\fP arrays
.IP "wcmin, wcmax:"
World coordinate minimums and maximums of the data provided 
in the \fIcoords\fP array.
.IP use_image:
.IP interp_image:
.LP
.sp
=====================================================================
.NH 3 " X3D_draw_wireframe()"
.XS
              \*(SN   X3D_draw_wireframe()
.XE
.sp
.LP
Draws a wireframe plot in three dimensions.
.sp
.LP
.B
X3D_draw_wireframe(id, coords, row_size, size, fg)
.sp
int      id;
.br
COORD    *coords; 
.br
int	 row_size;
.br
int	 size; 
.br
XColor  *fg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP coords:
Array of coordinates from which to create the wireframe plot
.IP row_size:
Number of points in each row
.IP size:
Number of coordinates in the \fIcoords\fP array.
.IP fg:
Pointer to XColor structure representing the desired foreground color.
.LP
.sp
=====================================================================
.bp
.NH 2 "CONTROL OF DRAWING ATTRIBUTES
.XS
      \*(SN CONTROL OF DRAWING ATTRIBUTES
.XE
.sp 2
.NH 3 " X3D_set_line_type()"
.XS
              \*(SN   X3D_set_line_type()
.XE
.sp
.LP
Sets the line type for a given graphics environment. May be used by both
2D and 3D graphics applications.
.sp
.LP
.B
X3D_set_line_type(id, line_type)
.sp
int id;
.br
int line_type;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP line_type:
The desired line type.  May be one of: Solid, Dotted, DotDash, ShortDash,
LongDash, OddDash, or Grid_Dotted.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_set_line_width()"
.XS
              \*(SN   X3D_set_line_width()
.XE
.sp
.LP
Sets the line width for a given graphics environment. May be used by both
2D and 3D graphics applications.
.B
.sp
X3D_set_line_width(id, line_width)
.sp
int id;
.br
int line_width;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.sp
.IP line_width:
The desired line width.  May be one of:  ExtraFine, Fine, MediumFine, 
Medium, MediumWide, Wide, or ExtraWide.
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_set_fill()"
.XS
              \*(SN   X3D_set_fill()
.XE
.sp
.LP
Sets the desired color in which to perform filling functions. 
May be used by both 2D and 3D graphics applications.
.B
.sp
X3D_set_fill(id, bg)
.sp
int id;
.br
XColor *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.sp
.IP line_width:
Pointer to the XColor structure describing the desired color in which to fill.
.LP
.sp
=====================================================================
.bp
.NH 2 "WINDOW UTILITIES"
.XS
      \*(SN WINDOW UTILITIES
.XE
.sp 2
.NH 3 " X2D_clear_area()"
.XS
              \*(SN   X2D_clear_area()
.XE
.sp
.LP
This routine will clear an area of a window that is used for 
two dimensional operations.
.sp
.LP
.B
X2D_clear_area(id, wc_min, wc_max)
.sp
int     id;
.br
COORD   wc_min, wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP wcmin:
The COORD structure containing the world coordinate minimum X and Y values
of the rectangle to be cleared (the Z value is ignored).
.sp
.IP wcmax:
The COORD structure containing the world coordinate maximum X and Y values
of the rectangle to be cleared (the Z value is ignored).
.LP
=====================================================================
.sp 2
.NH 3 " X2D_clear_window()"
.XS
              \*(SN   X2D_clear_window()
.XE
.sp
.LP
This routine will clear a window that is used for 2D graphical operations.
.sp
.LP
.B
X2D_clear_window(id)
.sp
int     id;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.LP
=====================================================================
.sp 2
.NH 3 " X2D_raise_window()"
.XS
              \*(SN   X2D_raise_window()
.XE
.sp
.LP
This routine will raise a window that is used for 2D graphical operations.
.LP
.B
.sp
X2D_raise_window(id)
.sp 
int     id;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.LP
=====================================================================
.NH 3 " X3D_clear_area()"
.XS
              \*(SN   X3D_clear_area()
.XE
.sp
.LP
This routine will clear a window that is used for 3D graphical operations.
.sp
.LP
.B
X3D_clear_area(id, wc_min, wc_max)
.sp
int     id;
.br
COORD   wc_min, wc_max;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
X3D graphics structure ID
.IP wcmin:
The COORD structure containing the world coordinate minimum X, Y, and Z values
of the rectangle to be cleared. 
.IP wcmax:
The COORD structure containing the world coordinate maximum X, Y, and Z values
of the rectangle to be cleared. 
.LP
=====================================================================
.sp 3
.NH 3 " X3D_clear_window()"
.XS
              \*(SN   X3D_clear_window()
.XE
.sp
.LP
This routine will clear an area of a window that is used for 
two dimensional operations.
.sp
.LP
.B
X3D_clear_window(id)
.sp
int     id;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.LP
=====================================================================
.sp 3 
.NH 3 " X3D_raise_window()"
.XS
              \*(SN   X3D_raise_window()
.XE
.sp
.LP
This routine will raise a window that is used for 3D graphical operations.
.sp
.LP
.B
X3D_raise_window(id)
.sp 
int     id;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.LP
=====================================================================
.bp
.NH 2 "UTILITIES TO MANIPULATE 2D DATA"
.XS
      \*(SN UTILITIES TO MANIPULATE 2D DATA
.XE
.sp 2
.NH 3 " X2D_translate_coords()"
.XS
              \*(SN   X2D_translate_coords()
.XE
.sp
.LP
Translates an array of 2D world coordinates to their new 
world coordinate positions. 
.sp
.LP
.B
X2D_translate_coords (xtrans, ytrans, coords, size)
.sp
REAL    xtrans, ytrans;
.br
COORD   *coords;
.br
int     size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP xtrans: 8
The x value to translate coordinates by
.IP ytrans:
The y value to translate coordinates by 
.IP coords:
The array of coordinates to be translated (z values undefined)
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be 
translated
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X2D_scale_coords()"
.XS
              \*(SN   X2D_scale_coords()
.XE
.sp
.LP
Scales an array of 2D world coordinates to their new world coordinate 
positions.
.sp
.LP
.B
X2D_scale_coords (xscale, yscale, coords, size)
.sp
REAL    xscale, yscale;
.br
COORD   *coords;
.br
int	size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP xscale: 8
The x value to scale coordinates by
.IP yscale:
The y value to scale coordinates by 
.IP coords:
The array of coordinates to be scaled (z values undefined)
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be 
scaled
.LP
.sp
=====================================================================
.NH 3 " X2D_rotate_coords()"
.XS
              \*(SN   X2D_rotate_coords()
.XE
.sp
.LP
Rotate an array of 2D  coordinates to their new world coordinate
positions.
.sp
.LP
.B
X2D_rotate_coords (rotation, center, coords, size)
.sp
REAL    rotation;
.br
COORD   center; 
.br
COORD	*coords;
.br
int     size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP rotation: 8
The angle to rotate by
.IP center:
The 2D coordinate to rotate about
.IP coords:
The array of coordinates to be scaled (z values undefined)
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be
scaled
.LP
.sp
=====================================================================
.bp
.NH 2 "UTILITIES TO MANIPULATE 3D DATA"
.XS
      \*(SN UTILITIES TO MANIPULATE 3D DATA
.XE
.sp 2
.NH 3 " X3D_translate_coords()"
.XS
              \*(SN   X3D_translate_coords()
.XE
.sp
.LP
Translates an array of 3D world coordinates to their new
world coordinate positions.
.sp
.LP
.B
X3D_translate_coords (xtrans, ytrans, ztrans, coords, size)
.sp
REAL    xtrans, ytrans, ztrans;
.br
COORD   *coords;
.br
int     size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP xscale: 8
The x value to scale coordinates by
.IP yscale:
The y value to scale coordinates by 
.IP zscale:
The z value to scale coordinates by 
.IP coords:
The array of coordinates to be scaled
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be 
scaled
.LP
.sp
=====================================================================
.sp 3
.NH 3 " X3D_scale_coords()"
.XS
              \*(SN   X3D_scale_coords()
.XE
.sp
.LP
Scales an array of 3D world coordinates to their new world coordinate 
positions.
.sp
.LP
.B
X3D_scale_coords (xscale, yscale, zscale, coords, size)
.sp
REAL    xscale, yscale, zscale;
.br
COORD   *coords;
.br
int	size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP xscale: 8
The x value to scale coordinates by
.IP yscale:
The y value to scale coordinates by 
.IP zscale:
The z value to scale coordinates by 
.IP coords:
The array of coordinates to be scaled
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be 
scaled
.LP
.sp
=====================================================================
.NH 3 " X3D_rotate_coords()"
.XS
              \*(SN   X3D_rotate_coords()
.XE
.sp
.LP
Rotate an array of 3D coordinates to their new world coordinate
positions.
.sp
.LP
.B
X3D_rotate_coords (xrotate, yrotate, zrotate, center, coords, size)
.sp
REAL    xrotate, yrotate, zrotate;
.br
COORD   center; 
.br
COORD	*coords;
.br
int     size;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP xrotate: 8
The angle to rotate by about the X axis (in degrees)
.IP yrotate:
The angle to rotate by about the Y axis (in degrees)
.IP zrotate:
The angle to rotate by about the Z axis (in degrees)
.IP center: 
The 3D coordinate to rotate about
.IP coords:
The array of coordinates to be scaled (z values undefined)
.IP size:
The size of the \fIcoords\fP array - the number of coordinates to be
scaled
.LP
.sp
=====================================================================
.bp
.NH 2 "OUTPUT DEVICES"
.XS
      \*(SN OUTPUT DEVICES
.XE
.sp 
.PP
While the new user of the \fIxvgraphics\fP library is instructed to begin
with a call to \fIX3D_set_X11()\fP in order to direct graphics output to
their X11 window or widget,  output from the \fIxvgraphics\fP library may
also be directed to a printer of a supported architecture.  Currently 
supported printers include the ImPress, Postscript and HPGL printers.  
HPGL support is not totally completed;  it will work for everything except
mesh plots, surface plots, horizon plots and any other graphic algorithms
that involve the use of Painter's Algorithm. 
.sp 2
.NH 3 " X3D_set_impress()"
.XS
              \*(SN   X3D_set_impress()
.XE
.sp
.LP
Output graphics to ImPress file
.sp
.LP
.B
X3D_set_impress(id, file, width, height, xoffset, yoffset, overlay, landscape)
.sp
int id;
.br
FILE    *file;
.br
float   width, height, xoffset, yoffset;
.br
int overlay; 
.br
int landscape;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP file: 8
ImPress file to be created 
.IP width:
Width of resulting output (on paper)
.IP height:
Height of resulting output (on paper)
.IP xoffset:
X offset from upper left hand corner (of paper)
.IP yoffset: 
Y offset from upper left hand corner (of paper)
.IP overlay:
Don't force page output
.IP landscape:
Print in landscape mode (horizontal output)
.LP
.sp
=====================================================================
.NH 3 " X3D_set_HPGL()"
.XS
              \*(SN   X3D_set_HPGL()
.XE
.sp
.LP
Output graphics to HPGL file
.sp
.LP
.B
X3D_set_hpgl(id, file, width, height, xoffset, yoffset, overlay, landscape)
.sp
int id;
.br
FILE    *file;
.br
float   width, height, xoffset, yoffset;
.br
int overlay; 
.br
int landscape;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP file:
ImPress file to be created 
.IP width:
Width of resulting output (on paper)
.IP height:
Height of resulting output (on paper)
.IP xoffset:
X offset from upper left hand corner (of paper)
.IP yoffset:
Y offset from upper left hand corner (of paper)
.IP overlay:
Don't force page output
.IP landscape:
Print in landscape mode (horizontal output)
.LP
.sp
=====================================================================
.NH 3 " X3D_set_postscript()"
.XS
              \*(SN   X3D_set_postscript()
.XE
.sp
.LP
Output graphics to PostScript file
.sp
.LP
.B
X3D_set_postscript(id, file, width, height, xoffset, yoffset, 
.sp
	overlay, landscape, monochrome, invert, bg)
.sp
int id;
.br
FILE    *file;
.br
float   width, height, xoffset, yoffset;
.br
int overlay; 
.br
int landscape;
.br
int monochrome;
.br
int invert;
.br
XColor *bg;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP file:
Postscript file to be created 
.IP width:
Width of resulting output (on paper)
.IP height:
Height of resulting output (on paper)
.IP xoffset:
X offset from upper left hand corner (of paper)
.IP yoffset:
Y offset from upper left hand corner (of paper)
.IP overlay:
Don't force page output
.IP landscape:
Print in landscape mode (horizontal output)
.IP monochrome:
Produce monochrome or color output; pass TRUE (1) for monochrome, FALSE (0)
for color
.IP invert:
Invert output - TRUE (1) to invert output, or FALSE (0) to leave it as is
.IP bg:
Pointer to XColor representing desired background color
.LP
.sp
=====================================================================
.NH 3 " X3D_set_X11()"
.XS
              \*(SN   X3D_set_X11()
.XE
.sp
.LP
.sp
Output graphics to X11 screen.
.sp
.LP
.B
X3D_set_X11(id, display, window, widget)
.sp
int     id;
.br
Display *display;
.br
Window  window;
.br
Widget  widget;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP display:
Pointer to the current X11 Display structure (defined in Xlib.h)
.IP window:
If graphics are to be output to a window, specify the Window in which 
all graphics will appear (defined in X.h).  The \fIwidget\fP parameter should
be passed in as NULL.
.IP widget:
If graphics are to be output to a widget, specify the Widget in which 
all graphics will appear (defined in X.h). The \fIwindow\fP parameter may be
passed in as NULL, or as XtWindow(widget).
.sp
.LP
As implied by the arguments to this routine, before using the \fIxvgraphics\fP
library, it is necessary for the application to:
.IP
(1) set the display properly, 
.br
(2) create and display either a Window or a Widget to serve as the workspace
in which graphics are to be displayed, using the utilities provided by 
Xlib or the X Toolkit
.sp
.LP
For further information on these arguments, the reader is referred to the 
\fIXlib- C Language X Interface, X Version 11, Release 4\fP document, written
by James Gettys, Robert W. Scheifler, and Ron Newman.
.sp
.LP
=====================================================================
.NH 3 " X3D_close_device()"
.XS
              \*(SN   X3D_close_device()
.XE
.sp
.LP
Stop output to whichever device is currently active (X11 screen, Postscript
file, ImPress file, or HPGL file)
.sp
.LP
.B
X3D_close_device(id)
.sp
int     id;
.R
.sp
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.sp
.LP
=====================================================================
.NH 2 "COLOR UTILITIES"
.XS
      \*(SN COLOR UTILITIES
.XE
.sp 2
.NH 3 " X3D_allocate_named_color()"
.XS
              \*(SN   X3D_allocate_named_color()
.XE
.sp
.LP
Take the string representing the name of the desired color, and return
the XColor structure associated with it. 
.sp
.LP
.B
X3D_allocate_named_color(id, colorname, Color, verbose, monochrome)
.sp
int id;
.br
char *colorname;
.br
XColor Color;
.br
int verbose; 
.br
int monochrome;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP colorname: 8
The name of the color desired (possible color names can be found in 
/usr/lib/X11/rgb.txt)
.IP Color:
XColor structure to have its values filled in
.IP verbose:
If error messages regarding failure to allocate a color are desired, pass
TRUE (1); otherwise, pass FALSE (0).
.IP monochrome:
In case an application is displayed on a monochrome screen or a 4-plane screen,
some colors will not be possible to allocate.  In case of color allocation
failure, 3D_allocate_named_color() will return a substitute color:  either
black or white.  The application must specify which color is desired as the
default.  Pass X3D_WHITE or X3D_BLACK.
.sp
.LP
=====================================================================
.sp 3
.NH 3 " X3D_allocate_named_colors()"
.XS
              \*(SN   X3D_allocate_named_colors()
.XE
.sp
.LP
Take an array of strings representing the names of the desired colors, 
and return an array of XColor structures with values properly filled in. 
.sp
.LP
.B
X3D_allocate_named_colors(id, colornames, Colors, size, verbose, monochrome)
.sp
int id;
.br
char *colornames[];
.br
XColor Colors[];
.br
int size;
.br
int verbose; 
.br
int monochrome;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP colornames: 8
Array of strings containing the names of the colors desired 
(possible color names can be found in /usr/lib/X11/rgb.txt)
.IP Colors:
Array of XColor structures to have their values filled in
.IP size:
The number of desired colors, ie, the size of both 
the colornames[] and Colors[] arrays.
.IP verbose:
If error messages regarding failure to allocate a color are desired, pass
TRUE (1); otherwise, pass FALSE (0).
.IP monochrome:
In case an application is displayed on a monochrome screen or a 4-plane screen,
some colors will not be possible to allocate.  In case of color allocation
failure, 3D_allocate_named_colors() will return a substitute color:  either
black or white.  The application must specify which color is desired as the
default.  Pass X3D_WHITE or X3D_BLACK.
=====================================================================
.sp 3
.NH 3 " X3D_allocate_predefined_colors()"
.XS
              \*(SN   X3D_allocate_predefined_colors()
.XE
.sp
.LP
Allocates an array of XColors based on a pre-defined color scheme.  Colors
allocated are in rainbow hues when displayed together, in order.
.sp
.LP
.B
X3D_allocate_predefined_colors(id, Colors, size, verbose, monochrome)
.sp
int id;
.br
XColor Colors[];
.br
int size;
.br
int verbose; 
.br
int monochrome;
.sp
.R
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --  explanation of arguments  -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.IP id: 8
The xvgraphics ID assigned to the current graphics environment
.IP Colors:
Array of XColor structures to have their values filled in
.IP size:
The number of desired colors, ie, the size of both 
the colornames[] and Colors[] arrays.
.IP verbose:
If error messages regarding failure to allocate a color are desired, pass
TRUE (1); otherwise, pass FALSE (0).
.IP monochrome:
In case an application is displayed on a monochrome screen or a 4-plane screen,
some colors will not be possible to allocate.  In case of color allocation
failure, 3D_allocate_predefined_colors() will return a substitute color:  either
black or white.  The application must specify which color is desired as the
default.  Pass X3D_WHITE or X3D_BLACK.
.sp
