.\"## .\" $Xorg: server_app.ug,v 1.3 2000/08/17 19:42:18 cpqbld Exp $ .\"## .\"## $XMCOPY .\"## Copyright (c) 1990, 1991 by Sun Microsystems, Inc. .\"## .\"## 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 name of Sun Microsystems, .\"## 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. .H A "PEX-SI Server Functional Description" .LP .IX "server extension" This appendix specifies the implementation-dependent functionality of the \s-1PEX-SI\s+1 server extension. The following sections cover Enumerated Types, Implementation-Dependent Constants, Renderer Dynamics, \s-1PHIGS\s+1 Workstation Dynamics, and Lookup Tables. .H 2 "Enumerated Type Information" .IX "enumerated types" .LP Tables .XR @NumberOf(MarkerType) through .XR @NumberOf(Parametric) list the enumerated types supported in the \s-1PEX-SI\s+1 server. .KS .H 3 "MarkerType" .IX "MarkerType" .TN "MarkerType" MarkerType .TS expand, box,tab(@); cfBI | cfBI | cfBI | cfBIw(4i) n l c l . Value@Name@Symbol@Description _ 1@Dot@\(m.@T{ The smallest displayable dot (the \fImarker_scale\fP attribute is ignored) at the marker position. T} 2@Cross@\(pl@A cross or plus sign with intersection at the marker position. 3@Asterisk@\(**@An asterisk with intersection at the marker position. 4@Circle@\(ci@A circle with center at the marker position. 5@X@\(mu@A multiplication sign with intersection at the marker position. .TE .KE .KS .H 3 "ATextStyle" .IX "ATextStyle" .TN "ATextStyle" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@NotConnected@T{ The annotation text primitive will be drawn with no line connecting it to the annotation text reference point. T} 2@Connected@T{ The annotation text primitive will be connected to the annotation text reference point with a line, which will be drawn using the current set of line attributes. T} .TE .KE .KS .H 3 "InteriorStyle" .IX "InteriorStyle" .TN "InteriorStyle" .TS expand box tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Hollow@T{ The interiors of surface primitives are not filled, but the boundary is drawn using the surface colour. If the surface primitive is clipped as a result of modeling, view, or workstation clipping, the boundary must be drawn along the clipped boundary as well. T} 2@Solid@T{ The interiors of surface primitives are filled using the surface colour. T} 5@Empty@The interior of the surface primitive is not drawn at all. .ig Zz 3@Pattern@T{ The interiors of surface primitives are filled using the pattern table entry specified by the interior style index. T} 4@Hatch@T{ The interiors of surface primitives are filled using the surface colour and the hatch style whose index is specified by the interior style index. T} .Zz .TE .KE .H 3 "HatchStyle" .IX "HatchStyle" .LP No hatch styles are implemented. .KS .H 3 "LineType" .IX "LineType" .TN "LineType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Solid@Draw the polyline or curve with a solid, unbroken line. 2@Dashed@Draw the polyline or curve with a line that is dashed. 3@Dotted@Draw the polyline or curve with a line that is dotted. 4@DashDot@T{ Draw the polyline or curve with a line that contains alternating dots and dashes. T} .TE .KE .KS .H 3 "SurfaceEdgeType" .IX "SurfaceEdgeType" .TN "SurfaceEdgeType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Solid@Draw the surface edge with a solid, unbroken line. 2@Dashed@Draw the surface edge with a line that is dashed. 3@Dotted@Draw the surface edge with a line that is dotted. 4@DashDot@T{ Draw the surface edge with a line that contains alternating dots and dashes. T} .TE .KE .KS .H 3 "PickDeviceType" .IX "PickDeviceType" .TN "PickDeviceType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@DC_HitBox@T{ The picking aperture is defined by a pick position and a pick distance, both in device coordinates. The shape of the hit box (square, circle, etc.) is implementation-dependent. The pick distance defines the half-width or radius of the hit box. T} 2@NPC_HitVolume@T{ The picking aperture is defined by two points that define a parallelepiped in \s-1NPC\s+1 space. Any graphics intersecting with the volume will be selected. T} .TE .KE .KS .H 3 "PolylineInterpMethod" .IX "PolylineInterpMethod" .TN "PolylineInterpMethod" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@None@T{ No interpolation will be performed between polyline vertices. If colour values are supplied that differ for the endpoints of a polyline segment, it is implementation-dependent whether the colour of the \fIi\fPth vertex will be used to draw the line between the \fIi\fPth and (\fIi\fP+\fI1\fP)th vertices, or whether they will be used to compute an average colour that will be used for the entire segment. If \fIn\fP is the number of vertices, the colour at the \fIn\fPth will be ignored. \s-1PEX-SI\s+1 computes an average color. T} .ig Zz 2@Colour@T{ The polyline's vertex colours (if present) are used. Colour values along each polyline segment are then computed by linearly interpolating between the colour values at the vertices. T} .Zz .TE .KE .H 3 "CurveApproxMethod" .IX "CurveApproxMethod" .TN "CurveApproxMethod" .TS H expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ .TH 1@Implementation Dependent@T{ This type is ConstantBetweenKnots (the same as value 2). T} 2@ConstantBetweenKnots@T{ This technique tessellates the curve with equal parametric increments between successive pairs of knots. The tolerance value controls tessellation of the curve. If the tolerance value is not an integer value, it is truncated and only the integer portion will be used. If \fItolerance\fP is less than or equal to zero, the curve will be evaluated only at the parameter limits, and at the knots that are within the specified parameter range. If \fItolerance\fP is greater than zero, the curve will be evaluated at the parameter limits, at the knots that are within the specified parameter range, and at the number of positions specified by \fItolerance\fP between each pair of knots. T} 3@WCS_ChordalSize@T{ This technique tessellates the curve until the length of each line segment (chord) in world coordinates is less than the tolerance. T} 4@NPC_ChordalSize@T{ This technique tessellates the curve until the length of each line segment (chord) in normalized projection coordinates is less than the tolerance. T} .ig Zz 5@DC_ChordalSize@T{ This technique tessellates the curve until the length of each line segment (chord) in device coordinates is less than the tolerance. T} .Zz 6@WCS_ChordalDev@T{ This technique tessellates the curve until the maximum deviation (in world coordinates) between the line and the curve is less than the tolerance. T} 7@NPC_ChordalDev@T{ This technique tessellates the curve until the maximum deviation (in normalized projection coordinates) between the line and the curve is less than the tolerance. T} .ig Zz 8@DC_ChordalDev@T{ This technique tessellates the curve until the maximum deviation (in device coordinates) between the line and the curve is less than the tolerance. T} 9@WCS_Relative@T{ This technique maintains a relative level of quality based on the tolerance value independent of scaling in world coordinates. T} 10@NPC_Relative@T{ This technique maintains a relative level of quality based on the tolerance value independent of scaling in normalized projection coordinates. T} 11@DC_Relative@T{ This technique maintains a relative level of quality based on the tolerance value independent of scaling in device coordinates. T} .Zz .TE .KS .H 3 "ReflectionModel" .IX "ReflectionModel" .TN "ReflectionModel" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@NoShading@T{ No light source shading computation is performed. The surface colour is not affected by light source illumination (effectively, shaded colour = intrinsic colour). T} 2@Ambient@T{ Only the ambient terms of the lighting equation are used. The shaded colour will be the intrinsic colour as seen under ambient light. T} 3@Diffuse@T{ Only the ambient and diffuse terms of the lighting equation are used. The shaded colour will be the intrinsic colour as seen under ambient light, plus a diffuse reflection component from each light source. T} 4@Specular@T{ The ambient, diffuse, and specular terms of the lighting equation are all used during the light source shading computation. The shaded colour will be the same as for \fIDiffuse\fP, plus a specular reflection component from each light source. T} .TE .KE .KS .H 3 "SurfaceInterpMethod" .IX "SurfaceInterpMethod" .TN "SurfaceInterpMethod" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@None@T{ The colour resulting from a single light source computation is used for the entire surface. No interpolation will be performed across surface interiors or edges. T} .ig Zz 2@Colour@T{ The colours are computed at the vertices of the surface according to the current \fIreflection_model\fP. These colour values are then linearly interpolated across the interior of the surface or the edges. T} 3@DotProduct@T{ The lighting equation dot products are computed at the vertices. These dot products are linearly interpolated and the light source shading computation is applied using these values to compute the colour value at each pixel in the interior of a surface or along a surface edge. T} 4@Normal@T{ An attempt is made to interpolate the normal across the facet and perform the light source shading computation as accurately as possible at each pixel in the interior of a surface or along a surface edge. T} .Zz .TE .KE .KS .H 3 "SurfaceApproxMethod" .TN "SurfaceApproxMethod" .IX "SurfaceApproxMethod" .TS expand box tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Implementation Dependent@T{ This type is ConstantBetweenKnots (the same as value 2) T} 2@ConstantBetweenKnots@T{ This technique tessellates the surface with equal parametric increments between successive pairs of knots. The two tolerance values control tesselation in each of the two parameter dimensions. If the tolerance values are not integer values, they are truncated and only the integer portions of each will be used. If \fIu_tolerance\fP is less than or equal to zero, the surface will be evaluated only at the \fIu\fP parameter limits in the \fIu\fP direction, and at the \fIu\fP knots that are within the specified parameter range. If \fIu_tolerance\fP is greater than zero, the surface will be evaluated at the \fIu\fP parameter limits in the \fIu\fP direction, at the \fIu\fP knots that are within the specified parameter range, and at the number of positions specified by \fIu_tolerance\fP between each pair of knots. The value of \fIv_tolerance\fP is used similarly to control the evaluation in the \fIv\fP direction. T} 3@WCS_ChordalSize@T{ This technique tessellates the surface until the length of each line segment (chord) in world coordinates in the \fIu\fP parameter direction is less than the specified \fIu_tolerance\fP value, and the length of every line segment in world coordinates in the \fIv\fP parameter direction is less than the specified \fIv\fP tolerance value. T} 4@NPC_ChordalSize@T{ This technique tessellates the surface until the length of each line segment (chord) in normalized projection coordinates in the \fIu\fP parameter direction is less than the specified \fIu\fP tolerance value, and the length of every line segment in normalized projection coordinates in the \fIv\fP parameter direction is less than the specified \fIv\fP tolerance value. T} .\".ig Zz .\"5@DC_ChordalSize@T{ .\"This technique tessellates the surface until the length of .\"each line segment (chord) in device coordinates in the \fIu\fP .\"parameter direction is less than the specified \fIu\fP tolerance value, .\"and the length of every line segment in device coordinates .\"in the \fIv\fP parameter direction is less than .\"the specified \fIv\fP tolerance value. .\"T} .\".Zz 6@WCS_PlanarDev@T{ This technique tessellates the surface into facets. The technique subdivides the surface until the absolute value of the maximum deviation, in world coordinates, between any facet and the surface is less than \fIu_tolerance\fP. T} 7@NPC_PlanarDev@T{ This technique tessellates the surface into facets. The technique subdivides the surface until the absolute value of the maximum deviation, in normalized projection coordinates, between any facet and the surface is less than \fIu_tolerance\fP. T} .ig Zz 8@DC_PlanarDev@T{ This technique tessellates the surface into facets. The technique subdivides the surface until the absolute value of the maximum deviation, in device coordinates, between any facet and the surface is less than \fIu_tolerance\fP. T} 9@WCS_Relative@T{ This technique maintains a relative level of quality based on the specified \fIu_tolerance\fP value independent of scaling in world coordinates. T} 10@NPC_Relative@T{ This technique maintains a relative level of quality based on the specified \fIu_tolerance\fP value independent of scaling in normalized projection coordinates. T} 11@DC_Relative@T{ This technique maintains a relative level of quality based on the specified \fIu_tolerance\fP value independent of scaling in device coordinates. T} .Zz .TE .KE .bp .H 3 "TrimCurveApproxMethod" .TN "TrimCurveApproxMethod" .IX "TrimCurveApproxMethod" .TS H expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ .TH 1@Implementation Dependent@T{ This type is ConstantBetweenKnots (the same as value 2) T} 2@ConstantBetweenKnots@T{ This technique tessellates the trim curve with equal parametric increments between successive pairs of knots. The tolerance value controls tessellation of the trim curve. If the tolerance value is not an integer value, it is truncated and only the integer portion will be used. If \fItolerance\fP is less than or equal to zero, the trim curve will be evaluated only at the parameter limits, and at the knots that are within the specified parameter range. If \fItolerance\fP is greater than zero, the trim curve will be evaluated at the parameter limits, at the knots that are within the specified parameter range, and at the number of positions specified by \fItolerance\fP between each pair of knots. T} .TE .KS .H 3 "ModelClipOperator" .TN "ModelClipOperator" .IX "ModelClipOperator" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Replace@T{ The specified halfspaces are used to create a new composite modeling clipping volume that replaces the current composite modeling clipping volume. T} 2@Intersection@T{ The specified halfspaces are intersected with the current composite modeling clipping volume to compute a new composite modeling clipping volume. T} .TE .KE .KS .H 3 "LightType" .TN "LightType" .IX "LightType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@Ambient@T{ A light source that affects all surface primitives uniformly. Ambient light sources have only a colour attribute. T} 2@WCS_Vector@T{ A light source that is specified in world coordinates with a colour and a direction vector. T} 3@WCS_Point@T{ A light source that is specified in world coordinates with a colour, a position, and two attenuation coefficients. T} 4@WCS_Spot@T{ A light source that is specified in world coordinates with a colour, a position, a direction vector, a concentration exponent, two attenuation coefficients, and a spread angle. T} .TE .KE .H 3 "ColourType" .TN "ColourType" .IX "ColourType" .TS H expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ .TH 0@Indexed@T{ A colour that is passed as an unsigned 16-bit integer (i.e., it is of type \s-1TABLE_INDEX\s+1). The integer value is used as an index into a colour lookup table. Dereferencing of an indexed colour value occurs at the time of rendering, at the time when the actual colour value is needed for rendering an output primitive. T} 1@RGBFloat@T{ A colour that is passed as three floating-point values, in the order red [0-1], green [0-1], blue [0-1]. A colour in this format has a type defined by: \s-1COLOR_RGB_FLOAT\s+1: [r, g, b : \s-1FLOAT\s+1] T} .ig Zz 2@CIEFloat@T{ A colour that is passed as three floating-point values, in the order u [0-1], v [0-1] (\s-1CIELUV\s+1 diagram coefficients), and luminance [0-1]. A colour in this format has a type defined by: \s-1COLOR_CIE_FLOAT\s+1: [u, v, luminance : \s-1FLOAT\s+1] T} 3@HSVFloat@T{ A colour that is passed as three floating-point values, in the order hue [0-1] (angle in fractions of a circle, with red being zero), saturation [0-1], and value [0-1]. A colour in this format has a type defined by: \s-1COLOR_HSV_FLOAT\s+1: [hue, saturation, value : \s-1FLOAT\s+1] T} 4@HLSFloat@T{ A colour that is passed as three floating-point values, in the order hue [0-1] (angle in fractions of a circle, with red being zero), lightness [0-1], and saturation [0-1]. A colour in this format has a type defined by: \s-1COLOR_HLS_FLOAT\s+1: [hue, lightness, saturation : \s-1FLOAT\s+1] T} 5@RGBInt8@T{ A colour that is passed as a unit of four bytes, in the order red, green, blue. A colour in this format has a type defined by: \s-1COLOR_RGB_INT8\s+1: [r, g, b, pad : \s-1CARD8\s+1] T} 6@RGBInt16@T{ A colour that is passed as a unit of eight bytes, in the order red, green, blue. A colour in this format has a type defined by: \s-1COLOR_RGB_INT16\s+1: [r, g, b, pad : \s-1CARD16\s+1] T} .Zz .TE .KS .H 3 "FloatFormat" .TN "FloatFormat" .IX "FloatFormat" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@\s-1IEEE\s+1_754_32@An \s-1IEEE\s+1 754 standard 32-bit floating-point value. 2@\s-1DEC_F_F\s+1loating@A \s-1DEC F\s+1-floating value. .ig Zz 3@\s-1IEEE\s+1_754_64@An \s-1IEEE\s+1 754 standard 64-bit floating-point value. 4@\s-1DEC_D_F\s+1loating@A \s-1DEC D\s+1-floating value. .Zz .TE .KE .H 3 "HLHSRMode" .TN "HLHSRMode" .IX "HLHSRMode" .TS H expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ .TH 1@Off@T{ All output primitives are drawn in the order they are processed. No attempt will be made to remove hidden surfaces. T} .ig Zz 2@ZBuffer@T{ Visibility is resolved at each pixel using a depth- or z-buffering technique. The z-buffering method and the number of bits of precision in the z values is device-dependent. This technique permits visibility to be computed without an intermediate storage area for transformed data, can be used to incrementally add primitives to an image, and is an \s-1HLHSR\s+1 method of linear order. T} 3@Painters@T{ Output primitives are buffered as they are processed. When an "end rendering" occurs with flush = True, the primitives in the buffer are sorted based on the average depth and rendered back-to-front. This technique is fairly fast for small numbers of primitives, but requires an intermediate storage area. This technique does not guarantee totally correct results, since it fails in cases involving cyclically overlapping or interpenetrating objects, and in other, even simpler cases. T} 4@Scanline@T{ Output primitives are buffered as they are received. When an "end rendering" occurs with flush = True, the primitives in the buffer are sorted and visibility is computed in scan line order. This technique can be fairly fast for small numbers of polygons, but uses an intermediate storage area to buffer output primitives and must perform a sorting step. T} 5@HiddenLineOnly@T{ Only visible lines will be drawn. Output primitives may be buffered as they are received. When an "end rendering" occurs with flush = True, the primitives in the buffer are sorted and a hidden line computation is performed. T} .Zz .TE .KS .H 3 "PromptEchoType" .TN "PromptEchoType" .IX "PromptEchoType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@EchoPrimitive@T{ Use an implementation-dependent technique that at least highlights the picked primitive for a short period of time. T} .ig Zz 2@EchoStructure@T{ Echo the contiguous group of primitives with the same pick ID as the picked primitive, or all of the primitives of the structure with the same pick ID as the picked primitive (the extension is free to implement either semantic for this type). T} 3@EchoNetwork@T{ Echo the entire posted structure network that contains the picked primitive. T} .Zz .TE .KE .KS .H 3 "DisplayUpdateMode" .TN "DisplayUpdateMode" .IX "DisplayUpdateMode" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@VisualizeEach@Visualize each change as it occurs (\s-1PHIGS\s+1 \(en \s-1ASAP\s+1). 2@VisualizeEasy@T{ Visualize only the changes that are ``easy to do'' (\s-1PHIGS\s+1 \(en \s-1WAIT/UWOR\s+1). Things that are ``easy to do'' are those that have a dynamic modification of \fI\s-1IMM\s+1\fP or can be updated without a regeneration of the displayed image. If regeneration is ``easy to do'' (as defined by the \s-1PEX\s+1 implementor), then a regeneration may occur. T} 3@VisualizeNone@T{ Visualize none of the changes (\s-1PHIGS\s+1 \(en \s-1WAIT/NIVE\s+1). The changes are applied, but the image is not regenerated until there is an explicit request to do so. T} 4@SimulateSome@T{ Visualize the easy changes and simulate those changes that can be simulated (\s-1PHIGS\s+1 \(en \s-1WAIT/UQUM\s+1). The \s-1PEX-SI\s+1 server performs no simulations; therefore, this mode behaves the same as VisualizeEasy. The \s-1PEX-SI\s+1 server implements this the same as VisualizeEasy. T} 5@VisualizeWhenever@T{ All changes will eventually be visualized. If regenerations are necessary, they will be performed at the server's convenience. One regeneration may cause a number of changes to be visualized. The client can issue an update workstation request to guarantee that all changes have been visualized (\s-1PHIGS\s+1 \(en \s-1ASTI/NIVE\s+1). T} .TE .KE .KS .H 3 "ColourApproxType" .TN "ColourApproxType" .IX "ColourApproxType" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@ColourSpace@T{ The rendering pipeline colour is converted into a colour with three individual colour components. T} 2@ColourRange@T{ The rendering pipeline colour is converted into a single colour index. T} .TE .KE .KS .H 3 "ColourApproxModel" .TN "ColourApproxModel" .IX "ColourApproxModel" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 1@RGB@red, green, blue .ig Zz 2@CIE@CIELUV diagram u, v coordinates plus luminance 3@HSV@hue, saturation, value 4@HLS@hue, lightness, saturation 5@YIQ@T{ (NTSC) luminance (Y), inphase (wideband orange-cyan), and quadrature (narrowband magenta-green) T} .Zz .TE .KE .H 3 "GDP" No Generalized Drawing Primitives are implemented. .H 3 "GDP3" No Generalized Drawing Primitives are implemented. .H 3 "GSE" No Generalized Structure Elements are implemented. .H 3 "RenderingColourModel" .TN "RenderingColourModel" .IX "RenderingColourModel" .TS expand, box,tab(@); cfBI | cfBI | cfBIw(4i) n l l. Value@Name@Description _ 0@RGB@red, green, blue colour model 1@RGB@red, green, blue colour model .ig Zz 2@CIE@CIELUV diagram u, v coordinates plus luminance colour model 3@HSV@hue, saturation, value colour model 4@HLS@hue, lightness, saturation colour model .Zz .TE .KE .H 3 "ParametricSurfaceCharacteristics" .TN "ParametricSurfaceCharacteristics" Parametric .IX "ParametricSurfaceCharacteristics" .TS H expand box tab(@); cfBI | cfBI | cfBIw(4i) n l l . Value@Name@Description _ .TH 1@None@T{ No additional surface characteristics beyond the current surface attributes. T} 2@Implementation Dependent@T{ An implementation-dependent method that displays the shape of the surface. This method does not distinguish between front and back facing portions of the surface. The appearance of the representation is controlled by the appropriate set of primitive attributes for the representation. It is implementation-dependent how the representation interacts with any interior rendering indicated by the interior attributes. The data record is ignored for this type. T} 3@IsoparametricCurves@T{ Isoparametric curves are drawn on the surface. The data record contains the number of curves to draw in each of the parameter dimensions and their placement. If the placement is \fIUniform\fP, the specified number of curves is evenly spaced between the parameter limits of the surface; curves are also drawn at the parameter limits. If the placement is \fINonUniform\fP, the specified number of curves is evenly spaced between each pair of knots; curves are also drawn at the knots. In both cases, only the portions of isoparametric curves are drawn that are within the interior of the surface as defined by any trimming curves. This method does not distinguish between front and back facing portions of the surface. \fIContinued on next page\fR. T} 3@T{ IsoparametricCurves\ \(em\ \fIContinued\fR T}@T{ The tessellation and appearance of the isoparametric curves are controlled by the surface approximation criteria and the polyline attributes, respectively. The isoparametric curves are drawn in addition to any interior rendering indicated by the interior style or back interior style attributes. Isoparametric curves have higher visual priority than the primitive's filled or hollow interiors, but lower priority than the primitive's edges. T} .ig Zz .EQ delim %% .EN 4@MC_LevelCurves@T{ Level curves are drawn on the surface. The curves correspond to the intersections of the surface and a finite set of planes perpendicular to a modeling coordinate direction vector. The positions of the planes are specified by a sequence of intersection points along an infinite line defined by a modeling coordinate origin point, %P sub 0%, and a direction vector, %V vec%. .EQ P sub i~=~P sub 0~+~t sub i V vec .EN The %t sub i% are a sequence of parameters specifying the intersection points. They are in the range: .EQ ~- inf~<~t sub i~<~inf .EN The %P sub i% are the intersection points of the perpendicular planes with the infinite line. %P sub 0% is a specified origin point in modeling coordinates, and %V vec% is the specified direction vector in modeling coordinates. The \fIi\fPth plane is perpendicular to the direction vector, %V vec%, and intersects the infinite line at point %P sub i%. The data record consists of the origin point %P sub 0%, the direction vector %V vec%, and the list of parameters, %t sub i%. .sp This method does not distinguish between front and back facing portions of the surface. The tessellation and appearance of the level curves are controlled by the surface approximation criteria and the polyline attributes, respectively. The curves are drawn in addition to any interior rendering indicated by the interior style or back interior style attributes. Level curves have higher visual priority than the primitive's filled or hollow interiors, but lower priority than the primitive's edges. T} 5@WC_LevelCurves@T{ Level curves are drawn on the surface. The curves correspond to the intersections of the surface and a finite set of planes perpendicular to a modeling coordinate direction vector. The positions of the planes are specified by a sequence of intersection points along an infinite line defined by a modeling coordinate origin point, %P sub 0%, and a direction vector, %V vec%. .EQ P sub i~=~P sub 0~+~t sub i V vec .EN The %t sub i% are a sequence of parameters specifying the intersection points. They are in the range: .EQ ~- inf~<~t sub i~<~inf .EN The %P sub i% are the intersection points of the perpendicular planes with the infinite line. %P sub 0% is a specified origin point in world coordinates, and %V vec% is the specified direction vector in world coordinates. The \fIi\fPth plane is perpendicular to the direction vector, %V vec%, and intersects the infinite line at point %P sub i%. The data record consists of the origin point %P sub 0%, the direction vector %V vec%, and the list of parameters, %t sub i%. .sp This method does not distinguish between front and back facing portions of the surface. The tessellation and appearance of the level curves are controlled by the surface approximation criteria and the polyline attributes, respectively. The curves are drawn in addition to any interior rendering indicated by the interior style or back interior style attributes. Level curves have higher visual priority than the primitive's filled or hollow interiors, but lower priority than the primitive's edges. T} .Zz .TE .H 2 "Implementation-Dependent Constants" .LP Table .XR @NumberOf(Imp_Dep_Const) lists the values implemented for the Implementation Dependent Constants. .TN "Implementation-Dependent Constants" Imp_Dep_Const .IX "Implementation-Dependent Constants" .TS H center box tab(@); cfBI | cfBI | cfBI l l l. Name@Type@Value _ .TH NominalLineWidth@CARD32@1 NumSupportedLineWidths@CARD32@~0L MinLineWidth@CARD32@0 MaxLineWidth@CARD32@~0L NominalEdgeWidth@CARD32@1 NumSupportedEdgeWidths@CARD32@~0L MinEdgeWidth@CARD32@0 MaxEdgeWidth@CARD32@~0L NominalMarkerSize@CARD32@1 NumSupportedMarkerSizes@CARD32@~0L MinMarkerSize@CARD32@0 MaxMarkerSize@CARD32@~0L ChromaticityRedU@FLOAT@0.628 ChromaticityRedV@FLOAT@0.346 LuminanceRed@FLOAT@1.0 ChromaticityGreenU@FLOAT@0.268 ChromaticityGreenV@FLOAT@0.588 LuminanceGreen@FLOAT@1.0 ChromaticityBlueU@FLOAT@0.150 ChromaticityBlueV@FLOAT@0.070 LuminanceBlue@FLOAT@1.0 ChromaticityWhiteU@FLOAT@0.313 ChromaticityWhiteV@FLOAT@0.329 LuminanceWhite@FLOAT@1.0 MaxNamesetNames@CARD32@256 MaxModelClipPlanes@CARD32@64 TransparencySupported@CARD32@FALSE DitheringSupported@CARD32@FALSE MaxNonAmbientLights@CARD32@64 MaxNURBOrder@CARD32@10 MaxTrimCurveOrder@CARD32@6 BestColourApproxValues@CARD32@PEXColourApproxAnyValues DoubleBufferingSupported@BOOLEAN@FALSE .TE .\" _________________________ .H 2 "Renderer Dynamics" .LP Table .XR @NumberOf(Rend_Dyn) lists the binding of attributes to the renderer during rendering. Changes to statically bound attributes are not visible until the next rendering. Changes to dynamically bound attributes become visible immediately. .TN "Renderer Dynamics" Rend_Dyn .IX "Renderer Dynamics" .TS H center box,tab(@); cfBI | cfBI le ce. Attribute@Binding Type _ .TH MarkerBundle@dynamic MarkerBundleContents@dynamic TextBundle@dynamic TextBundleContents@dynamic LineBundle@dynamic LineBundleContents@dynamic InteriorBundle@dynamic InteriorBundleContents@dynamic EdgeBundle@dynamic EdgeBundleContents@dynamic ViewTable@dynamic ViewTableContents@dynamic ColourTable@dynamic ColourTableContents@dynamic DepthCueTable@dynamic DepthCueTableContents@dynamic LightTable@dynamic LightTableContents@dynamic ColourApproxTable@dynamic ColourApproxTableContents@dynamic PatternTable@dynamic PatternTableContents@dynamic TextFontTable@dynamic TextFontTableContents@dynamic _ HighlightNameset@dynamic HighlightNamesetContents@dynamic InvisibilityNameset@dynamic InvisibilityNamesetContents@dynamic _ HLHSRMode@dynamic NPCSubvolume@dynamic Viewport@dynamic Cliplist@dynamic .TE .sp .H 2 "PHIGS Workstation Dynamics" .TN "PHIGS Workstation Dynamics" .IX "PHIGS Workstation Dynamics" .TS H center box,tab(@); cfBI | cfBI le ce. Attribute@Dynamic _ .TH view_rep@IRG marker_bundle@IRG text_bundle@IRG line_bundle@IRG interior_bundle@IRG edge_bundle@IRG colour_table@IRG pattern_table@IRG wks_transform@IRG highlight_filter@IRG invisibility_filter@IRG HLHSR_mode@IRG structure_modify@IRG post_structure@IRG unpost_structure@IRG delete_structure@IRG reference_modify@IRG buffer_modify@IRG .TE .H 2 "Lookup Tables" .LP Table .XR @NumberOf(Lookup_Tables) lists the maximum number of entries definable for each lookup table. Table .XR @NumberOf(Predefined_Values) lists the predefined entries for each lookup table. Each table except the Colour Lookup Table has one predefined entry. The index of that entry is given in the table. .TN "Lookup Tables" Lookup_Tables .IX "Lookup Tables" .TS center box,tab(@); cfBI | cfBI l n. Name@Maximum Number of Entries _ LineBundle@20 MarkerBundle@20 TextBundle@20 InteriorBundle@20 EdgeBundle@20 Pattern@0 Colour@256 TextFont@2 View@6 Light@16 DepthCue@6 ColourApprox@6 .TE .TN "Predefined Values" Predefined_Values .IX "Predefined Values" .TS H box tab(~); cfBI | cfBI | cfBI l c l . Attribute~Index~Values _ .TH LineBundle~1 line_type~~1 polyline_interp~~1 curve_approx~~{0,1.0} line_width~~1.0 line_color~~{\fIIndexed\fR, 1} ~~~ MarkerBundle~1 marker_type~~3 marker_scale~~1.0 marker_color~~{\fIIndexed\fR, 1} ~~~ TextBundle~1 text_font_index~~1 text_precision~~\fIString\fR char_expansion~~1.0 char_spacing~~0.0 text_color~~{\fIIndexed\fR, 1} ~~~ InteriorBundle~1 interior_style~~1 interior_style_index~~1 surface_color~~{\fIIndexed\fR, 1} reflection_attr~~{1.0, 1.0, 1.0, (\fIIndexed\fR, 1), 0.0, 0.0} reflection_model~~1 surface_interp~~1 bf_interior_style~~1 bf_interior_style1_index~~1 bf_surface_color~~{\fIIndexed\fR, 1} bf_reflection_attr~~{1.0, 1.0, 1.0, (\fIIndexed\fR, 1), 0.0, 0.0} bf_reflection_model~~1 bf_surface_interp~~1 surface_approx~~{0, 1.0, 1.0} trim_curve_approx~~{0, 1.0} ~~~ EdgeBundle~1 surface_edges~~\fIOff\fR surface_edge_type~~1 surface_edge_width~~1.0 surface_edge_color~~{\fIIndexed\fR, 1} ~~~ Pattern~None~T{ Pattern Lookup Tables are not implemented. T} ~~~ Colour~T{ See Table .XR @NumberOf(Colour_Entries). T} ~~~ TextFont~1 font\\(dg~~Roman_M ~~~ View~0 clip_flags~~all \fIOn\fR clip_limits~~(0,0,0),(1,1,1) orientation~~identity matrix mapping~~identity matrix ~~~ Light~1 light_type~~Ambient direction~~(0.0,0,0,0.0) point~~(0.0,0.0,0.0) concentration~~0.0 spread_angle~~0.0 attenuation~~(0.0,0.0) color~~{RGBFloat, (1.0,1.0,1.0)} ~~~ DepthCue~1 mode~~off front_plane~~1.0 back_plane~~0.0 front_scaling~~1.0 back_scaling~~0.5 color~~{Indexed} ~~~ Colour Approx~1 .TE .IP \s-1\(dg TextFont Lookup Tables entries are a list of font identifiers. \s-1PEX-SI\s+1 allows a maximum of 16 font identifiers per entry. The predefined entry sets all 16 font ids to a server generated id that is loaded with the default font \fIRoman_M\fR. .bp .TN "Predefined Colour Entries" Colour_Entries .IX "Predefined Colour Entries" .TS box,tab(@); cfBI | cfBI | cfBI | cfBI | cfBI n n n n l . Colour Index@Red@Green@Blue@Description _ 0@0.0@0.0@0.0@Black 1@1.0@1.0@1.0@White 2@1.0@0.0@0.0@Red 3@0.0@1.0@0.0@Green 4@0.0@0.0@1.0@Blue 5@1.0@1.0@0.0@Yellow 6@0.0@1.0@1.0@Cyan 7@1.0@0.0@1.0@Magenta \(>=8@1.0@1.0@1.0@White .TE .H 3 Fonts .LP Two font definitions are provided with \s-1PEX-SI\s+1. They are called \fIRoman\fR and \fIRoman_M\fR. \fIRoman_M\fR (monospaced \fIRoman\fR) is the default font. See the \fI\s-1PEX-SI\s+1 Porting Guide\fR for information on how to define new fonts.