chapter10   [plain text]


\&
.sp 1
.ce 3
\s+1\fBChapter 10\fP\s-1

\s+1\fBPHIGS Workstations\fP\s-1
.sp 2
.nr H1 10
.nr H2 0
.nr H3 0
.nr H4 0
.nr H5 0
.na
.LP
.XS
Chapter 10: PHIGS Workstations
.XE
.LP
.IN "PHIGS workstation"
.IN "workstation" "PHIGS"
The PHIGS workstation resource encapsulates the PEX functionality to support
the PHIGS abstraction of a "workstation". The PHIGS definition of a workstation
states that a workstation consists of zero or one display space.  In X, many
display spaces (windows) are possible in a single workstation display.  The
PHIGS workstation resource ties together a single X drawable, a set of lookup
tables, highlighting and invisibility name sets, and all of the state needed to
make it perform as a PHIGS user expects a workstation should perform.
.LP
Each PHIGS workstation resource contains the following attributes 
defined at the time it is created:  
.ID
target drawable
color approximation table
color table
depth cue table
edge bundle
interior bundle
marker bundle
light table
line bundle
pattern table
text bundle
text font table
highlight inclusion
highlight exclusion
invisibility inclusion
invisibility exclusion
.DE
.LP
These attributes can be inquired but not modified during the lifetime of the 
PHIGS workstation.  These attributes function in a manner identical to
their counterparts in a renderer resource.
Note that there is no view table as in the renderer.  The workstation has a
built-in view table that can only be accessed through the defined workstation
functions.  However, this view table is functionally the same as that used by
the renderer.
.LP
A workstation also contains the following attributes that can be
modified or inquired with various functions:        
.ID
posted structure networks
requested NPC subvolume
current NPC subvolume
requested viewport
current viewport
requested HLHSR mode
current HLHSR mode
defined views
display update mode
requested buffer mode
current buffer mode
.DE
.LP
The posted structure networks attribute maintains a list of
structure resource identifiers, together with a priority value for each.
The priority values are relative, and are specified at the time
the structure network is added to the list (posted).
Whenever a structure traversal is requested, each of the structure networks
in this list is traversed.
If multiple structures that would overlap on the screen are posted, the
structure network with the higher priority is guaranteed to be visible.
If two structures have the same priority and would overlap on the screen,
the structure posted later has the higher priority.
.LP
The
.PN PEXPostStructure
function is called to post structure networks to a
PHIGS workstation resource, and the
.PN PEXUnpostStructure
function is called
to unpost a structure network.  The
.PN PEXUnpostAllStructures
function is
called to reset the posted structure network list to the null list.  Finally,
given a structure resource id, the
.PN PEXGetWorkstationPostings
function returns a list
of all PHIGS workstations to which the structure has been posted.
.LP
The PHIGS workstation resource supports the concepts of
requested changes and current values.  
The user can change the viewport, NPC subvolume, HLHSR mode and buffer mode
attributes, but the changes are not actually applied until the
next structure traversal occurs or the user calls
the
.PN PEXExecuteDeferredActions
function.
Thus, there are pairs of attributes
for the NPC subvolume, viewport, HLHSR mode and buffer mode: the requested
value and the current value. 
.LP
The list of defined views is similar to a view table.  However,
a PHIGS workstation must also be able to separate requested
views from current views.  Views also have an input priority value associated
with them in PHIGS workstation resources.  Because of these differences
in semantics, the PHIGS workstation resource was designed to have a
built-in view table rather than an associated view lookup table.
.LP
When doing a picking or mapping
operation, it is necessary to map device coordinates through the inverse
of the viewing/projection transform to determine the primitive
that was selected.
The reason for the view priority is that several views can produce a
projection onto the same area of the screen.  Thus, specifying a device
coordinate point for the picking operation can be ambiguous.  If there
is more than one view that projects onto the specified device coordinate
point, it is not clear which set of viewing parameters to use to compute
the inverse transform.  Adding a priority to each of the views removes
the ambiguity.
.LP
View priorities are adjusted with the
.PN PEXSetWorkstationViewPriority
function.
The
.PN PEXMapDCToWC
function is provided as an aid for mapping
device coordinate points back into world coordinates.  The function
.PN PEXMapWCToDC
aids in mapping world coordinates to device coordinates.
Views are modified with the
.PN PEXSetWorkstationViewRep
function, but
are not actually applied until the
next structure traversal occurs or the user calls
the
.PN PEXExecuteDeferredActions
function.
.LP
The display update mode indicates how the PHIGS
workstation should attempt to visualize changes that occur.  The defined
types include
.PN PEXVisualizeEach ,
.PN PEXVisualizeEasy ,
.PN PEXVisualizeNone ,
.PN PEXVisualizeWhenever ,
and
.PN PEXSimulateSome .
A type of
.PN PEXVisualizeEach
means that each change is displayed as it occurs,
even doing a retraversal of the posted structure network list if
necessary.
A type of
.PN PEXVisualizeEasy
means that those changes which can be represented without doing a
retraversal, or even those that require a retraversal if traversal is very
fast, are displayed as they occur.
A type of
.PN PEXVisualizeNone
means that changes are applied to the structure, but
the structure is not traversed until the application program explicitly
requests it.
A type of
.PN PEXVisualizeWhenever
means that traversal of the structure is done
when it is convenient to do so.
A type of
.PN PEXSimulateSome
means that the easy or fast changes are immediately
displayed and others are simulated by such means as drawing a deleted
primitive in the background color.
.LP
A PHIGS workstation contains the following attributes to maintain
the state of the PHIGS workstation resource:
.ID
visual state
display surface
view update
workstation update
HLHSR update
buffer update
number of priorities
.DE
These attributes can be inquired., but are not
modifiable by users; they are modified as side effects of various requests.
.LP
The visual state attribute maintains a value that indicates
whether the image is correct, whether some parts of the image have
been changed but simulated on the display, or whether there are deferred
actions that have yet to be visualized.
.LP
The display surface
indicates whether the PHIGS workstation has rendered anything
on the associated drawable.
.LP
The view update, workstation update,
HLHSR update and buffer update attributes specify whether there are
any requested changes to the list of views, the NPC subvolume or viewport,
the HLHSR mode or the buffer mode respectively.
.LP
A PHIGS workstation's posted structure networks can be retraversed
explicitly by calling
.PN PEXRedrawAllStructures .
The
.PN PEXUpdateWorkstation
function can be called to perform a traversal if
the visual state is not correct.  The
.PN PEXGetWorkstationDynamics
function
is called to obtain information about how changes to various
attributes are visualized.
.LP
Structure traversal using a PHIGS workstation resource has side effects
beyond those of a renderer.  When a traversal is performed using a PHIGS
workstation, the drawable is cleared to the color stored in entry zero
of the associated color lookup table.  Furthermore, all pending changes
to the PHIGS workstation attributes are made current as a traversal begins.
Finally, the displayed image state is set to correct at the end of the
traversal.
.LP
Pick device descriptors are also a part of the workstation resource.  They
are defined in \fIChapter 11: PHIGS Workstation Picking\fP.
.LP
If the drawable associated with a workstation resource is destroyed, the
workstation resource is implicitly freed.  The next access to the workstation
will generate a
.PN BadPEXWorkstation
error.
.LP
Lookup tables and name set resource can be bound to a workstation resource and
then freed.  The contents of these resources will remain, since they are still
being referenced by the workstation.  However, when a workstation's attributes
are inquired, the value
.PN PEXAlreadyFreed
will be returned for those resources that have been freed and thus no longer
have a valid resource identifier by which they can be referenced.
.bp
.XS
Function Descriptions
.XE
.SH
PEXCreateWorkstation - Create Workstation
.XS
	PEXCreateWorkstation
.XE
.IN "PEXCreateWorkstation" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
PEXWorkstation PEXCreateWorkstation\^(\^Display *\fIdisplay\fP\^, Drawable \fIdrawable\fP\^, PEXLookupTable \fIline_bundle\fP\^, PEXLookupTable \fImarker_bundle\fP\^, PEXLookupTable \fItext_bundle\fP\^, PEXLookupTable \fIinterior_bundle\fP\^, PEXLookupTable \fIedge_bundle\fP\^,
PEXLookupTable \fIcolor_table\fP\^, PEXLookupTable \fIpattern_table\fP\^, PEXLookupTable \fIfont_table\fP\^, PEXLookupTable \fIdepth_cue_table\fP\^, PEXLookupTable \fIlight_table\fP\^, PEXLookupTable \fIcolor_approx_table\fP\^, PEXNameSet \fIhighlight_incl\fP\^, PEXNameSet \fIhighlight_excl\fP\^, PEXNameSet \fIinvisibility_incl\fP\^, PEXNameSet \fIinvisibility_excl\fP\^, int \fIbuffer_mode\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIdrawable\fP 1i
The resource identifier of a drawable.
.IP \fIline_bundle\fP 1i
The resource identifier of the line bundle lookup table.
.IP \fImarker_bundle\fP 1i
The resource identifier of the marker bundle lookup table.
.IP \fItext_bundle\fP 1i
The resource identifier of the text bundle lookup table.
.IP \fIinterior_bundle\fP 1i
The resource identifier of the interior bundle lookup table.
.IP \fIedge_bundle\fP 1i
The resource identifier of the edge bundle lookup table.
.IP \fIcolor_table\fP 1i
The resource identifier of the color lookup table.
.IP \fIpattern_table\fP 1i
The resource identifier of the pattern lookup table.
.IP \fIfont_table\fP 1i
The resource identifier of the text font lookup table.
.IP \fIdepth_cue_table\fP 1i
The resource identifier of the depth cue lookup table.
.IP \fIlight_table\fP 1i
The resource identifier of the light lookup table.
.IP \fIcolor_approx_table\fP 1i
The resource identifier of the color approximation lookup table.
.IP \fIhighlight_incl\fP 1i
The name set used as the highlight inclusion set.
.IP \fIhighlight_excl\fP 1i
The name set used as the highlight exclusion set.
.IP \fIinvisibility_incl\fP 1i
The name set used as the invisibility inclusion set.
.IP \fIinvisibility_excl\fP 1i
The name set used as the invisibility exclusion set.
.IP \fIbuffer_mode\fP 1i
The workstation buffering mode
.Pn ( PEXSingleBuffer
or
.PN PEXDoubleBuffer ).
.RE
.SH
Returns
.RS
.LP
The resource identifier of the newly-created workstation.
.RE
.SH
Description
.RS
.LP
This function creates a PHIGS workstation resource and returns its
resource identifier.  The drawable specified
is associated with the newly-created workstation resource.  The named
tables and name sets are also bound to the workstation resource for
use during rendering.  A view table that supports current and requested
view table entries is allocated for the workstation automatically at
creation time.  The requests
.PN PEXSetWorkstationViewRep
and
.PN PEXGetWorkstationViewRep
is used to modify and inquire the PHIGS workstation view table.
.LP
If the workstation is to operate in double-buffered mode and double-buffering
is supported (see
.PN PEXGetImpDepConstants ),
an additional
image buffer will be created for the drawable in an implementation-dependent
fashion.  If the specified drawable is a pixmap, no double-buffering will be
performed.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
typedef XID             PEXLookupTable;
typedef XID             PEXNameSet;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadAlloc\fP 1i
The server failed to allocate the resource, or the server failed to allocate
resources needed for double-buffering.
.IP \fIBadDrawable\fP 1i
The specified drawable resource identifier is invalid.
.IP \fIBadMatch\fP 1i
The specified drawable is unsupported, or a specified lookup table resource
was not created with a compatible drawable.
.IP \fIBadPEXLookupTable\fP 1i
The specified lookup table resource identifier is invalid.
.IP \fIBadPEXNameSet\fP 1i
The specified name set resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified buffer mode is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXFreeWorkstation ,
.PN PEXGetImpDepConstants
.RE
.bp
.SH
PEXExecuteDeferredActions - Execute Deferred Workstation Actions
.XS
	PEXExecuteDeferredActions
.XE
.IN "PEXExecuteDeferredActions" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXExecuteDeferredActions\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function causes all deferred actions on the specified workstation to
be executed.  This will cause all requested attributes to be made current
and the corresponding update attributes to be set to
.PN PEXNotPending .
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXRedrawAllStructures
.RE
.bp
.SH
PEXFreeWorkstation - Free Workstation
.XS
	PEXFreeWorkstation
.XE
.IN "PEXFreeWorkstation" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXFreeWorkstation\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function deletes the PHIGS workstation resource and frees
memory associated with it.
.RE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXCreateWorkstation
.RE
.bp
.SH
PEXFreeWorkstationAttributes - Free Storage Returned by PEXGetWorkstationAttributes
.XS
	PEXFreeWorkstationAttributes
.XE
.IN "PEXFreeWorkstationAttributes" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXFreeWorkstationAttributes\^(\^PEXWorkstationAttributes *\fIvalues\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIvalues\fP 1i
A pointer to the workstation attribute values.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function deallocates memory returned by
.PN PEXGetWorkstationAttributes .
.RE
.SH
Errors
.RS
.IP None 1i
.RE
.SH
See Also
.RS
.LP
.PN PEXGetWorkstationAttributes
.RE
.bp
.SH
PEXGetWorkstationDynamics - Get Workstation Attribute Modification Dynamics
.XS
	PEXGetWorkstationDynamics
.XE
.IN "PEXGetWorkstationDynamics" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
Status PEXGetWorkstationDynamics\^(\^Display *\fIdisplay\fP\^, Drawable \fIdrawable\fP\^, PEXWorkstationDynamics *\fIdynamics_return\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIdrawable\fP 1i
The resource identifier of a drawable.
.IP \fIdynamics_return\fP 1i
Returns the dynamics of the specified workstation.
.RE
.SH
Returns
.RS
.LP
Zero if unsuccessful, non-zero otherwise.
.RE
.SH
Description
.RS
.LP
This function returns the dynamics of the specified PHIGS workstation resource.
Each entry in the returned list has one of the following values:
.PN PEXIMM ,
.PN PEXCBS
or
.PN PEXIRG .
.PN PEXIMM
means that modification of the corresponding attribute will result in the
correct image displayed immediately without regeneration.
.PN PEXCBS
means that modification of the corresponding attribute will result in a
simulation displayed immediately if the display update mode is
.PN PEXSimulateSome.
.PN PEXIRG
means that a regeneration is required for the change to be visible.
.RE
.SH
Data Structures
.ID
.Co
typedef struct {
    unsigned char       view_rep;
    unsigned char       marker_bundle;
    unsigned char       text_bundle;
    unsigned char       line_bundle;
    unsigned char       interior_bundle;
    unsigned char       edge_bundle;
    unsigned char       color_table;
    unsigned char       pattern_table;
    unsigned char       wks_transform;
    unsigned char       highlight_filter;
    unsigned char       invisibility_filter;
    unsigned char       hlhsr_mode;
    unsigned char       structure_modify;
    unsigned char       post_structure;
    unsigned char       unpost_structure;
    unsigned char       delete_structure;
    unsigned char       reference_modify;
    unsigned char       buffer_modify;
    unsigned char       light_table;
    unsigned char       depth_cue_table;
    unsigned char       color_approx_table;
} PEXWorkstationDynamics;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadDrawable\fP 1i
The specified drawable resource identifier is invalid.
.IP \fIBadMatch\fP 1i
The specified drawable is unsupported.
.RE
.SH
See Also
.RS
.LP
.PN PEXGetWorkstationAttributes
.RE
.bp
.SH
PEXGetWorkstationAttributes - Get Workstation Attribute Values
.XS
	PEXGetWorkstationAttributes
.XE
.IN "PEXGetWorkstationAttributes" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
PEXWorkstationAttributes *PEXGetWorkstationAttributes\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned long *\fIvalue_mask\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIvalue_mask\fP 1i
A mask indicating which workstation attribute values to return.
.RE
.SH
Returns
.RS
.LP
A pointer to the workstation attribute values; a null pointer if unsuccessful.
.RE
.SH
Description
.RS
.LP
This function returns the specified workstation's attributes.
The value mask indicates which attributes are to be returned.
.PN PEXSetPWAttributeMask
or
.PN PEXSetPWAttributeMaskAll
should be used to setup the value mask.
.LP
PEXlib allocates memory for the returned workstation attribute values.
.PN PEXFreeWorkstationAttributes
should be called to deallocate the memory.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    short               drawable_update;
    int                 visual_state;
    int                 drawable_surface;
    int                 view_update;
    PEXListOfView       defined_views;
    int                 wks_update;
    PEXNPCSubVolume     req_npc_subvolume;
    PEXNPCSubVolume     cur_npc_subvolume;
    PEXViewport         req_workstation_viewport;
    PEXViewport         cur_workstation_viewport;
    int                 hlhsr_update;
    PEXEnumTypeIndex    req_hlhsr_mode;
    PEXEnumTypeIndex    cur_hlhsr_mode;
    Drawable            drawable;
    PEXLookupTable      marker_bundle;
    PEXLookupTable      text_bundle;
    PEXLookupTable      line_bundle;
    PEXLookupTable      interior_bundle;
    PEXLookupTable      edge_bundle;
    PEXLookupTable      color_table;
    PEXLookupTable      depth_cue_table;
    PEXLookupTable      light_table;
    PEXLookupTable      color_approx_table;
    PEXLookupTable      pattern_table;
    PEXLookupTable      text_font_table;
    PEXNameSet          highlight_incl;
    PEXNameSet          highlight_excl;
    PEXNameSet          invisibility_incl;
    PEXNameSet          invisibility_excl;
    PEXListOfPostedStructure posted_structures;
    unsigned long       count_priorities;
    int                 buffer_update;
    int                 req_buffer_mode;
    int                 cur_buffer_mode;
} PEXWorkstationAttributes;
.sp
typedef struct {
    unsigned short      count;                  /* number of views */
    PEXTableIndex       *views;
} PEXListOfView;
.sp
typedef unsigned short  PEXTableIndex;
.sp
typedef struct {
    PEXCoord            min;
    PEXCoord            max;
} PEXNPCSubVolume;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.sp
typedef struct {
    PEXDeviceCoord      min;
    PEXDeviceCoord      max;
    PEXSwitch           use_drawable;
    unsigned char       reserved[3];
} PEXViewport;
.sp
typedef struct {
    short               x;
    short               y;
    float               z;
} PEXDeviceCoord;
.sp
typedef unsigned char   PEXSwitch;
.sp
typedef short           PEXEnumTypeIndex;
typedef XID             PEXLookupTable;
typedef XID             PEXNameSet;
.sp
typedef struct {
    unsigned long       count;                  /* number of posted structures*/
    PEXPostedStructure  *structures;
} PEXListOfPostedStructure;
.sp
typedef struct {
    PEXStructure        sid;
    float               priority;
} PEXPostedStructure;
.sp
typedef XID             PEXStructure;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
An invalid bit is set in the value mask.
.RE
.SH
See Also
.RS
.LP
.PN PEXGetWorkstationDynamics ,
.PN PEXSetPWAttributeMask ,
.PN PEXSetPWAttributeMaskAll
.RE
.bp
.SH
PEXGetWorkstationPostings - Get Workstation Postings
.XS
	PEXGetWorkstationPostings
.XE
.IN "PEXGetWorkstationPostings" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
Status PEXGetWorkstationPostings\^(\^Display *\fIdisplay\fP\^, PEXStructure \fIstructure\fP\^, unsigned long *\fIcount_return\fP\^, PEXWorkstation **\fIpostings_return\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIstructure\fP 1i
The resource identifier of the structure.
.IP \fIcount_return\fP 1i
Returns the number of workstation identifiers.
.IP \fIpostings_return\fP 1i
Returns an array of workstation resource identifiers.
.RE
.SH
Returns
.RS
.LP
Zero if unsuccessful, non-zero otherwise.
.RE
.SH
Description
.RS
.LP
This function returns a list of workstation resources to which the specified
structure has been posted.
.LP
PEXlib allocates memory for the return value.
.PN XFree
should be called to deallocate the memory.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXStructure;
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXStructure\fP 1i
The specified structure resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXPostStructure ,
.PN PEXUnpostStructure ,
.PN PEXUnpostAllStructures
.RE
.bp
.SH
PEXGetWorkstationViewRep - Get Workstation View Representation
.XS
	PEXGetWorkstationViewRep
.XE
.IN "PEXGetWorkstationViewRep" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
Status PEXGetWorkstationViewRep\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned int \fIindex\fP\^, int *\fIupdate_return\fP\^, PEXViewRep *\fIreq_view_return\fP\^, PEXViewRep *\fIcur_view_return\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIindex\fP 1i
The view table index.
.IP \fIupdate_return\fP 1i
Returns the update status of the view table index.
.IP \fIreq_view_return\fP 1i
Returns the requested value of the view table index.
.IP \fIcur_view_return\fP 1i
Returns the current value of the view table index.
.RE
.SH
Returns
.RS
.LP
Zero if unsuccessful, non-zero otherwise.
.RE
.SH
Description
.RS
.LP
The function returns the update state, and the requested and current
values for the specified view index of the specified workstation.
The update will be
.PN PEXPending
if a view change has been requested but not established; otherwise it will be
.PN PEXNotPending .
If the specified
view index is not defined, an error will be generated and the contents of the
reply parameters will be undefined.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    PEXTableIndex       index;
    unsigned short      reserved;
    PEXViewEntry        view;
} PEXViewRep;
.sp
typedef unsigned short  PEXTableIndex;
.sp
typedef struct { 
    unsigned short      clip_flags;
    unsigned short      reserved;
    PEXNPCSubVolume     clip_limits;
    PEXMatrix           orientation;
    PEXMatrix           mapping;
} PEXViewEntry;
.sp
typedef struct {
    PEXCoord            min;
    PEXCoord            max;
} PEXNPCSubVolume;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.sp
typedef float           PEXMatrix[4][4];
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified view table entry is not defined.
.RE
.SH
See Also
.RS
.LP
.PN PEXSetWorkstationViewRep
.RE
.bp
.SH
PEXMapDCToWC - Map Device Coordinate Points to World Coordinate Points
.XS
	PEXMapDCToWC
.XE
.IN "PEXMapDCToWC" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
Status PEXMapDCToWC\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned long \fIdc_count\fP\^, PEXDeviceCoord *\fIdc_points\fP\^, unsigned int *\fIview_index_return\fP\^, unsigned long *\fIwc_count_return\fP\^, PEXCoord **\fIwc_points_return\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIdc_count\fP 1i
The number of device coordinate points.
.IP \fIdc_points\fP 1i
An array of device coordinates.
.IP \fIview_index_return\fP 1i
Returns the view index of the view containing most or all of the points.
.IP \fIwc_count_return\fP 1i
Returns the number of world coordinate points.
.IP \fIwc_points_return\fP 1i
Returns an array of world coordinate points.
.RE
.SH
Returns
.RS
.LP
Zero if unsuccessful, non-zero otherwise.
.RE
.SH
Description
.RS
.LP
This function maps the device coordinate points to world coordinate points
using the specified workstation.  Each view in the workstation's current
view table, which has an inverse, is checked to see if it contains all the
specified device coordinate points.
(If the view transform has no inverse, it is not considered.)
The index of the view with the highest view transformation input
priority that contains all of the points is returned.  If no view contains all
the points, the index of the view containing the most points is returned.  The
points are transformed to world coordinates by passing them through the inverse
of the view transform associated with the view index.
Points that are clipped
(outside the viewport) will not be transformed and returned, so the number
of points returned may be less than the number sent.
.LP
PEXlib allocates memory for the return value.
.PN XFree
should be called to deallocate the memory.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    short               x;
    short               y;
    float               z;
} PEXDeviceCoord;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXMapWCToDC ,
.PN PEXSetWorkstationViewPriority
.RE
.bp
.SH
PEXMapWCToDC - Map World Coordinate Points to Device Coordinate Points
.XS
	PEXMapWCToDC
.XE
.IN "PEXMapWCToDC" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
Status PEXMapWCToDC\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned long \fIwc_count\fP\^, PEXCoord *\fIwc_points\fP\^, unsigned int \fIview_index\fP\^, unsigned long *\fIdc_count_return\fP\^, PEXDeviceCoord **\fIdc_points_return\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIwc_count\fP 1i
The number of world coordinate points.
.IP \fIwc_points\fP 1i
An array of world coordinate points.
.IP \fIview_index\fP 1i
The view index to use in transforming the world coordinate points.
.IP \fIdc_count_return\fP 1i
Returns the number of device coordinate points.
.IP \fIdc_points_return\fP 1i
Returns an array of device coordinate points.
.RE
.SH
Returns
.RS
.LP
Zero if unsuccessful, non-zero otherwise.
.RE
.SH
Description
.RS
.LP
This function maps the world coordinate points to device coordinate points
using the specified workstation and view index.  The points are transformed
to device coordinates by passing them through the view transform associated
with the view index.  Points that are clipped will not be returned, so the
number of points returned may be less than the number sent.
.LP
PEXlib allocates memory for the return value.
.PN XFree
should be called to deallocate the memory.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    short               x;
    short               y;
    float               z;
} PEXDeviceCoord;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXMapDCToWC ,
.PN PEXSetWorkstationViewPriority
.RE
.bp
.SH
PEXPostStructure - Post Structure to a Workstation
.XS
	PEXPostStructure
.XE
.IN "PEXPostStructure" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXPostStructure\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, PEXStructure \fIstructure\fP\^, double \fIpriority\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIstructure\fP 1i
The resource identifier of the structure.
.IP \fIpriority\fP 1i
The priority of the newly-posted structure.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function adds the specified structure to the list of posted structures
in the specified workstation.  The priority is used to indicate the priority
of the new posted structure relative to the structures already posted.  If
multiple structures are posted for display to the same display space location,
the higher priority structure will be displayed.  If two structures have the
same priority, the last posted structure is considered of higher priority.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXStructure;
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXStructure\fP 1i
The specified structure resource identifier is invalid.
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXUnpostStructure ,
.PN PEXUnpostAllStructures
.RE
.bp
.SH
PEXRedrawAllStructures - Redraw All Posted Structures
.XS
	PEXRedrawAllStructures
.XE
.IN "PEXRedrawAllStructures" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXRedrawAllStructures\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function redraws all of the posted structures for the workstation.
First, if the workstation's display surface is
.PN PEXNotEmpty ,
its drawable is cleared to the color stored in entry zero of the color table.
Then, if any of its view, workstation, HLHSR or buffer update attributes is
set to
.PN PEXPending ,
the requested values are made current and the update attributes are set to
.PN PEXNotPending .
After this, all the posted structures are traversed and rendered
(in priority order).  Finally, the workstation's visual state is set to 
.PN PEXCorrect .
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXUpdateWorkstation ,
.PN PEXExecuteDeferredActions
.RE
.bp
.SH
PEXRedrawClipRegion - Redraw Posted Structures Clipped to Clip Region
.XS
	PEXRedrawClipRegion
.XE
.IN "PEXRedrawClipRegion" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXRedrawClipRegion\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned long \fIcount\fP\^, PEXDeviceRect *\fIclip_rectangles\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIcount\fP 1i
The number of clip rectangles.
.IP \fIclip_rectangles\fP 1i
An array of device clip rectangles.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function performs actions similar to
.PN PEXRedrawAllStructures
except that the workstation state attributes are not modified or updated by
this function and rendering will occur only in the region defined by
the specified clip list.  The color stored in entry zero of the color table
is used to clear the region defined by the clip list.  The clip list must
consist of non-overlapping rectangles or the result will be undefined.  If
a z-buffering HLHSR algorithm is used, only the z-values corresponding to
pixels in the clip region will be affected.  All of the posted structures
for the workstation are redrawn, but clipped to the clip list.  Pending
changes are not made current, nor is the visual state modified.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    short               xmin;
    short               ymin;
    short               xmax;
    short               ymax;
} PEXDeviceRect;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXRedrawAllStructures ,
.PN PEXExecuteDeferredActions
.RE
.bp
.SH
PEXSetWorkstationBufferMode - Set Workstation Buffer Mode
.XS
	PEXSetWorkstationBufferMode
.XE
.IN "PEXSetWorkstationBufferMode" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationBufferMode\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, int \fIbuffer_mode\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIbuffer_mode\fP 1i
The workstation buffering mode
.Pn ( PEXSingleBuffer
or
.PN PEXDoubleBuffer ).
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the requested buffer mode of the specified workstation.
If the workstation's display surface attribute is
.PN PEXEmpty ,
or if the dynamic modification for buffer mode is
.PN PEXIMM ,
the current buffer mode is set to the specified buffer mode and the buffer
update is set to
.PN PEXNotPending ;
otherwise, the buffer update is set to
.PN PEXPending
and the current buffer mode is not changed.
.LP
Buffer mode may be one of the following values:
.PN PEXSingleBuffer
or 
.PN PEXDoubleBuffer .
An error will be generated if the buffer mode is
.PN PEXDoubleBuffer
and the server cannot allocated the second image buffer.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadAlloc\fP 1i
The server failed to allocate resources needed for double-buffering.
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified buffer mode is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXSetWorkstationDisplayUpdateMode ,
.PN PEXGetImpDepConstants
.RE
.bp
.SH
PEXSetWorkstationDisplayUpdateMode - Set Workstation Display Update Mode
.XS
	PEXSetWorkstationDisplayUpdateMode
.XE
.IN "PEXSetWorkstationDisplayUpdateMode" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationDisplayUpdateMode\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, int \fIupdate_mode\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIupdate_mode\fP 1i
The workstation display update mode
.Pn ( PEXVisualizeEach ,
.PN PEXVisualizeEasy ,
.PN PEXVisualizeNone ,
.PN PEXSimulateSome ,
.PN PEXVisualizeWhenever ).
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the display update attribute of the specified workstation.
This attribute defines how changes to the display surface will be visualized.
The supported values for display update mode are inquirable via
.PN PEXGetEnumTypeInfo .
.LP
If double-buffering is enabled, the display update mode affects which buffer
is rendered into during traversal.  If the display update mode is
.PN PEXVisualizeEach ,
.PN PEXVisualizeWhenever
or
.PN PEXVisualizeNone ,
output primitives are rendered into the back (undisplayed) buffer while the
structure network is being traversed.
When the traversal is complete, the front and back buffers are swapped, so the
rendered image is displayed.  If the display update mode is
.PN PEXVisualizeEasy
or
.PN PEXSimulateSome ,
output primitives are always rendered into the front (displayed) buffer.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified display update mode is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXSetWorkstationBufferMode ,
.PN PEXGetEnumTypeInfo
.RE
.bp
.SH
PEXSetWorkstationHLHSRMode - Set Workstation HLHSR Mode
.XS
	PEXSetWorkstationHLHSRMode
.XE
.IN "PEXSetWorkstationHLHSRMode" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationHLHSRMode\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, int \fIhlhsr_mode\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIhlhsr_mode\fP 1i
The workstation HLHSR mode
.Pn ( PEXHLHSROff ,
.PN PEXHLHSRZBuffer ,
.PN PEXHLHSRPainters ,
.PN PEXHLHSRScanline ,
.PN PEXHLHSRHiddenLineOnly ,
.PN PEXHLHSRZBufferID ).
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the requested HLHSR mode of the specified workstation.
If the workstation's display surface attribute is
.PN PEXEmpty ,
or if the dynamic modification for HLHSR mode is
.PN PEXIMM ,
the current HLHSR mode is set to the specified HLHSR mode and the HLHSR update
is set to
.PN PEXNotPending ;
otherwise, the HLHSR update is set to
.PN PEXPending
and the current HLHSR mode is not changed.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadAlloc\fP 1i
The server failed to allocate resources needed for HLHSR.
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified HLHSR mode is invalid.
.RE
.SH
See Also
.RS
.LP
.RE
.bp
.SH
PEXSetWorkstationViewport - Set Workstation Viewport
.XS
	PEXSetWorkstationViewport
.XE
.IN "PEXSetWorkstationViewport" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationViewport\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, PEXViewport *\fIviewport\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIviewport\fP 1i
The workstation viewport.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the requested workstation viewport of the specified
workstation.
If the dynamic modification for workstation viewport is
.PN PEXIMM ,
the current workstation viewport is set to the specified viewport and the
workstation update is set to
.PN PEXNotPending ;
otherwise, the workstation update is set to
.PN PEXPending
and the current workstation viewport is not changed.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    PEXDeviceCoord      min;
    PEXDeviceCoord      max;
    PEXSwitch           use_drawable;
    unsigned char       reserved[3];
} PEXViewport;
.sp
typedef struct {
    short               x;
    short               y;
    float               z;
} PEXDeviceCoord;
.sp
typedef unsigned char   PEXSwitch;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified value for use_drawable is invalid.
.RE
.SH
See Also
.RS
.LP
.RE
.bp
.SH
PEXSetWorkstationViewPriority - Set Workstation View Priority
.XS
	PEXSetWorkstationViewPriority
.XE
.IN "PEXSetWorkstationViewPriority" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationViewPriority\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned int \fIindex1\fP\^, unsigned int \fIindex2\fP\^, int \fIpriority\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIindex1\fP 1i
The first view table entry index.
.IP \fIindex2\fP 1i
The second view table entry index.
.IP \fIpriority\fP 1i
A relative priority of index 1 with respect to index 2
.Pn ( PEXHigher
or
.PN PEXLower ).
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the relative priorities of entries in the workstation's
current view table.  The priority of the first view table entry with respect
to the second view table entry is set to the next higher or lower priority
as indicated by the specified priority.  These priorities are used to determine
the order in which view table entries are tested when selecting the
inverse viewing transformation to use for transforming from device coordinates
to world coordinates.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.IP \fIBadValue\fP 1i
The specified value for priority is invalid, or the specified table entry is
not defined.
.RE
.SH
See Also
.RS
.LP
.RE
.bp
.SH
PEXSetWorkstationViewRep - Set Workstation View Representation
.XS
	PEXSetWorkstationViewRep
.XE
.IN "PEXSetWorkstationViewRep" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationViewRep\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, unsigned int \fIview_index\fP\^, PEXViewEntry *\fIvalues\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIview_index\fP 1i
The view index.
.IP \fIvalues\fP 1i
A pointer to the view representation values.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function sets the specified view table entry of the requested view table
in the specified workstation.
If the dynamic modification for the view table is
.PN PEXIMM ,
the current view table entry is set to the specified view representation and
the view update is set to
.PN PEXNotPending ;
otherwise, the view update is set to
.PN PEXPending
and the current view table is not changed.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct { 
    unsigned short      clip_flags;
    unsigned short      reserved;
    PEXNPCSubVolume     clip_limits;
    PEXMatrix           orientation;
    PEXMatrix           mapping;
} PEXViewEntry;
.sp
typedef struct {
    PEXCoord            min;
    PEXCoord            max;
} PEXNPCSubVolume;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.sp
typedef float           PEXMatrix[4][4];
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadAlloc\fP 1i
The view table is full.
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.RE
.bp
.SH
PEXSetWorkstationWindow - Set Workstation Window
.XS
	PEXSetWorkstationWindow
.XE
.IN "PEXSetWorkstationWindow" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXSetWorkstationWindow\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, PEXNPCSubVolume *\fIworkstation_window\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIworkstation_window\fP 1i
The workstation window.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function set the requested NPC subvolume of the specified workstation.
If the dynamic modification for the workstation window is
.PN PEXIMM ,
the current workstation window is set to the specified NPC subvolume and
the workstation update is set to
.PN PEXNotPending ;
otherwise, the workstation update is set to
.PN PEXPending
and the current workstation window is not changed.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.sp
typedef struct {
    PEXCoord            min;
    PEXCoord            max;
} PEXNPCSubVolume;
.sp
typedef struct {
    float               x;
    float               y;
    float               z;
} PEXCoord;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.RE
.bp
.SH
PEXUnpostAllStructures - Unpost All Structures from Workstation
.XS
	PEXUnpostAllStructures
.XE
.IN "PEXUnpostAllStructures" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXUnpostAllStructures\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function removes all structures from the specified workstation's posted
structure list.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXUnpostStructure
.RE
.bp
.SH
PEXUnpostStructure - Unpost Structure from Workstation
.XS
	PEXUnpostStructure
.XE
.IN "PEXUnpostStructure" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXUnpostStructure\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^, PEXStructure \fIstructure\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.IP \fIstructure\fP 1i
The resource identifier of the structure.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function removes the specified structure from the workstation's posted
structure list.  If the structure is not found in the list, 
an error is generated.
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
typedef XID             PEXStructure;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXStructure\fP 1i
The specified structure resource identifier is invalid.
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXUnpostAllStructures
.RE
.bp
.SH
PEXUpdateWorkstation - Update Workstation
.XS
	PEXUpdateWorkstation
.XE
.IN "PEXUpdateWorkstation" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
void PEXUpdateWorkstation\^(\^Display *\fIdisplay\fP\^, PEXWorkstation \fIworkstation\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fIdisplay\fP 1i
A pointer to a display structure returned by a successful \fBXOpenDisplay\fP call.
.IP \fIworkstation\fP 1i
The resource identifier of the workstation.
.RE
.SH
Returns
.RS
.LP
None
.RE
.SH
Description
.RS
.LP
This function will perform actions identical to
.PN PEXRedrawAllStructures
on the specified workstation if the workstation's visual state is currently
set to
.PN PEXDeferred
or 
.PN PEXSimulated .
.RE
.SH
Data Structures
.ID
.Co
typedef XID             PEXWorkstation;
.ft P
.DE
.SH
Errors
.RS
.IP \fIBadPEXWorkstation\fP 1i
The specified workstation resource identifier is invalid.
.RE
.SH
See Also
.RS
.LP
.PN PEXRedrawAllStructures
.RE
.bp
.SH
PEXSetPWAttributeMask - Macro to Setup Workstation Attributes Value Mask
.XS
	PEXSetPWAttributeMask
.XE
.IN "PEXSetPWAttributeMask" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
PEXSetPWAttributeMask(\^\fImask\fP\^, \fIattr\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fImask\fP 1i
The address of the value mask - an array of two unsigned long.
.IP \fIattr\fP 1i
A single workstation attribute bitmask constant.
.RE
.SH
Description
.RS
.LP
This is a utility macro
to aid in setting up the bitmask for the workstation
attributes.
.LP
The following constants must be used:
.ID
.PN PEXPWDisplayUpdate
.PN PEXPWVisualState
.PN PEXPWDisplaySurface
.PN PEXPWViewUpdate
.PN PEXPWDefinedViews
.PN PEXPWWorkstationUpdate
.PN PEXPWReqNPCSubVolume
.PN PEXPWCurNPCSubVolume
.PN PEXPWReqViewport
.PN PEXPWCurViewport
.PN PEXPWHLHSRUpdate
.PN PEXPWReqHLHSRMode
.PN PEXPWCurHLHSRMode
.PN PEXPWDrawable
.PN PEXPWMarkerBundle
.PN PEXPWTextBundle
.PN PEXPWLineBundle
.PN PEXPWInteriorBundle
.PN PEXPWEdgeBundle
.PN PEXPWColorTable
.PN PEXPWDepthCueTable
.PN PEXPWLightTable
.PN PEXPWColorApproxTable
.PN PEXPWPatternTable
.PN PEXPWTextFontTable
.PN PEXPWHighlightIncl
.PN PEXPWHighlightExcl
.PN PEXPWInvisibilityIncl
.PN PEXPWInvisibilityExcl
.PN PEXPWPostedStructures
.PN PEXPWNumPriorities
.PN PEXPWBufferUpdate
.PN PEXPWReqBufferMode
.PN PEXPWCurBufferMode
.DE
Note that this macro does multiple evaluations of the value for attr.
.RE
.SH
Errors
.RS
.IP None 1i
.RE
.SH
See Also
.RS
.LP
.PN PEXGetWorkstationAttributes
.RE
.bp
.SH
PEXSetPWAttributeMaskAll - Macro to Set All Workstation Attributes in Value Mask
.XS
	PEXSetPWAttributeMaskAll
.XE
.IN "PEXSetPWAttributeMaskAll" "" "@DEF@"
.SH
Synopsis
.RS
.FD 0
PEXSetPWAttributeMaskAll(\^\fImask\fP\^)
.FN
.RE
.SH
Arguments
.RS
.IP \fImask\fP 1i
The address of the value mask - an array of two unsigned long.
.RE
.SH
Description
.RS
.LP
This is a utility macro
to aid in setting up the bitmask for the workstation
attributes.  This macro will set all valid bits in the mask.
.RE
.SH
Errors
.RS
.IP None 1i
.RE
.SH
See Also
.RS
.LP
.PN PEXGetWorkstationAttributes
.RE
.bp