.\"
.\" $XConsortium: p105,v 5.2 94/04/17 20:55:34 rws Exp $
.\"
.\" 
$XMCOPY
.\" Copyright (c) 1990, 1991 by Sun Microsystems, Inc. and the X Consortium.
.\" 
.\"                         All Rights Reserved
.\" 
.\" Permission to use, copy, modify, and distribute this software and its 
.\" documentation for any purpose and without fee is hereby granted, 
.\" provided that the above copyright notice appear in all copies and that
.\" both that copyright notice and this permission notice appear in 
.\" supporting documentation, and that the names of Sun Microsystems,
.\" and the X Consortium not be used in advertising or publicity 
.\" pertaining to distribution of the software without specific, written 
.\" prior permission.  
.\" 
.\" SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\" EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
.\" USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.ds f \s-2INQUIRE CURVE AND SURFACE FACILITIES\s+2
.TH "INQUIRE CURVE AND SURFACE FACILITIES" 3P+ "29 February 1991"
.SH NAME
INQUIRE CURVE AND SURFACE FACILITIES \- inquire the available curve and
surface facilities of a workstation type
.IX "Inquiry functions" "INQUIRE CURVE AND SURFACE FACILITIES"
.IX "PHIGS Extension Functions" "INQUIRE CURVE AND SURFACE FACILITIES"
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1i 2.25i
.nf
void
pinq_curv_surf_facs ( type, cat_len, cat_st, sat_len, sat_st, tcat_len, tcat_st, psc_len,
	psc_st, error_ind, facil, tot_cat_len, tot_sat_len, tot_tcat_len, tot_psc_len )
Pint	type;		\fIworkstation type\fP
Pint	cat_len;	\fIlength of curve approx types list \fP
Pint	cat_st;	\fIstarting position\fP
Pint	sat_len;	\fIlength of surface approx types list \fP
Pint	sat_st;	\fIstarting position\fP
Pint	tcat_len;	\fIlength of trim curve approx types list \fP
Pint	tcat_st;	\fIstarting position\fP
Pint	psc_len;	\fIlength of parametric surface characteristics list\fP
Pint	psc_st;	\fIstarting position\fP
Pint	*error_ind;	\fIOUT error indicator\fP
Pcurvsurf_facs	*facil;	\fIOUT curve and surface facilities\fP
Pint	*tot_cat_len;	\fIOUT total length of curve approx types list\fP
Pint	*tot_sat_len;	\fIOUT total length of surface approx types list\fP
Pint	*tot_tcat_len;	\fIOUT total length of trim curve approx types list\fP
Pint	*tot_psc_len;	\fIOUT total length of parametric surface characteristics list\fP
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, *, *, *)
.SH DESCRIPTION
.SS Purpose
\s-2INQUIRE CURVE AND SURFACE FACILITIES\s+2
returns the available curve and
surface facilities associated with the specified workstation type.
.SS C Input Parameters
All of the following data types are predefined in phigs.h.
.IP \fItype\fP
The workstation type in question.
.IP \fIcat_len\fP
The number of entries to return from the list of
curve approximation types.
.IP \fIcat_st\fP
The starting position of the portion of the list to return.
.IP \fIsat_len\fP
The number of entries to return from the list of
surface approximation types.
.IP \fIsat_st\fP
The starting position of the portion of the list to return.
.IP \fItcat_len\fP
The number of entries to return from the list of
trimming curve approximation types.
.IP \fItcat_st\fP
The starting position of the portion of the list to return.
.IP \fIpsc_len\fP
The number of entries to return from the list of
parametric surface characteristics.
.IP \fIpsc_st\fP
The starting position of the portion of the list to return.
.SS C Output Parameters
.IP \fIerror_ind\fP
A pointer to the location to store the error number of any error detected
by this function.
.IP \fIfacil\fP
A pointer to a Pcurvsurf_facs structure which returns the
requested information.  Pcurvsurf_facs is defined as:
.nf
.ta .5i +\w'Pint_list     'u +\w'max_bsp_order;     'u
.sp .4
typedef struct {
.sp .2
	Pint	max_bsp_order;	/* maximum B-spline order */
	Pint	max_pp_order;	/* maximum parametric polynomial order */
	Pint	max_tc_order;	/* maximum trim curve order */
	Pint_list	ppc_types;	/* list of parametric polynomial curve types */
	Pint_list	pps_types;	/* list of parametric polynomial surface types*/
	Pint_list	cat_types;	/* list of curve approximation types */
	Pint_list	sat_types;	/* list of surface approximation types */
	Pint_list	tcat_types;	/* list of trim curve approximation types */
	Pint_list	psc_types;	/* list of parametric surface characteristics types */
	Pint	num_pred_inds;	/* number of predefined bundles */
.sp .2
} Pcurvsurf_facs;
.fi
.IP
Pint_list is defined as:
.nf
.ta .5i +\w'Pint     'u +\w'integers;     'u
.sp .4
typedef struct {
.sp .2
	Pint	num_ints;	/* number of Pints in list */
	Pint	*ints;	/* list of integers */
.sp .2
} Pint_list;
.fi
.IP
Prior to calling this function, the integers field of the Pint_list
structures must contain a pointer to an array of integers.  This array
must be at least as large as the corresponding \fIlen\fP parameter.
.IP \fItot_cat_len\fP
A pointer to an integer which returns the total length of the
curve approximation type
list as stored in the workstation description table.
.IP \fItot_sat_len\fP
A pointer to an integer which returns the total length of the
surface approximation type
list as stored in the workstation description table.
.IP \fItot_tcat_len\fP
A pointer to an integer which returns the total length of the
trimming curve approximation type
list as stored in the workstation description table.
.IP \fItot_psc_len\fP
A pointer to an integer which returns the total length of the
parametric surface characteristics.
list as stored in the workstation description table.
.SS Execution
If the inquired information is available, the error indicator is returned
as zero and values are returned in the output parameters.
.LP
If the inquired information is not available, the values returned in the
output parameters are undefined and the error indicator is set 
to one of the error numbers listed below to indicate the reason for 
non-availability.
.LP
Since this is an inquiry function, \s-2ERROR HANDLING\s+2 is not invoked
when an error is detected by this function.
.SH ERRORS
.IP 002
Ignoring function, function requires state 
(\s-2PHOP\s+2, \s-2*\s+2, \s-2*\s+2, \s-2*\s+2)
.IP 051
.\"Ignoring function, this information is unavailable for this workstation type
Ignoring function, this information is
not yet available for this generic
workstation type; open a workstation of
this type and use the specific workstation type
.IP 052
Ignoring function, workstation type not recognized by the implementation
.IP 059
Ignoring function, the specified workstation does not have output capability
(i.e. the workstation category is neither \s-2OUTPUT\s+2, \s-2OUTIN\s+2, nor \s-2MO\s+2)
.IP 062
Ignoring function, this information is not available for this
\s-2MO\s+2 workstation type
.SH SEE ALSO
.nf
.IP
.ta 0.5i
.SM "PHIGS WORKSTATION DESCRIPTION TABLE (7P)"
.SM "NON-UNIFORM B-SPLINE CURVE (3P+)"
.SM "NON-UNIFORM B-SPLINE SURFACE (3P+)"
.SM "SET CURVE APPROXIMATION CRITERIA (3P+)"
.SM "SET SURFACE APPROXIMATION CRITERIA (3P+)"
.SM "SET TRIMMING CURVE APPROXIMATION CRITERIA (3P+)"
.fi
