Contact us Heritage collections Image license terms
HOME ACL ACD ICF SUS DCS G&A STARLINK Literature
Further reading □ OverviewContentsPrefaceNotation1. Introduction2. Structures3. Output primitives4. Attributes5. Networks6. 2D viewing7. 3D PHIGS8. Examples9. Input Classes10. Interaction11. Workstations12. Environment13. Further output14. Archives15. BindingsIndex
C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACDLiteratureBooksPHIGS
ACDLiteratureBooksPHIGS
ACL ACD C&A INF CCD CISD Archives
Further reading

OverviewContentsPrefaceNotation1. Introduction2. Structures3. Output primitives4. Attributes5. Networks6. 2D viewing7. 3D PHIGS8. Examples9. Input Classes10. Interaction11. Workstations12. Environment13. Further output14. Archives15. BindingsIndex

Chapter 4: Attributes

4.1 INDIVIDUAL SPECIFICATION

In PHIGS, the appearance of a primitive on a display is defined by its aspects. The simplest method of defining such aspects is to have an individual attribute for each aspect. The attribute is a value in the traversal state list which, on traversal, is bound to the primitive. The polyline primitive has three aspects for controlling its appearance, linetype, linewidth scale factor and polyline colour index. The traversal state list has entries for the three attributes that specify these aspects. The three functions:

SET LINETYPE(LTYPE) 
SET LINEWIDTH SCALE FACTOR(LWIDTH) 
SET POLYLINE COLOUR INDEX(COLI)

define structure elements that are added to the open structure. On structure traversal, attribute setting structure elements of this type cause the corresponding entry in the traversal state list to be updated with the new value. When a polyline structure element is traversed, the polyline primitive generated has the aspects associated with it set to the current values of the entries in the traversal state list. It is the workstation's responsibility to provide as close a display as possible to the values of the aspects specified. The examples so far have used aspects defined by individual specification.

Attribute setting functions exist for all the aspects described in Chapter 3. These are:

Polyline 
SET LINETYPE(LTYPE) 
SET LINEWIDTH SCALE FACTOR(LWIDTH) 
SET POLYLINE COLOUR INDEX(COLI)
Polymarker 
SET MARKER TYPE(MTYPE) 
SET MARKER SIZE SCALE FACTOR(MSZSF) 
SET POL YMARKER COLOUR INDEX(COLI) 
Fill area and fill area set 
SET INTERIOR STYLE(STYLE) 
SET INTERIOR COLOUR INDEX(COLI) 
SET INTERIOR STYLE INDEX(ISTYLI) 
SET PATTERN REFERENCE POINT(RFX, RFY) 
SET PATTERN REFERENCE POINT AND VECTORS (RFX, RFY, RFZ, RFVAX, RFVAY, RFVAZ) 
SET PATTERN SIZE(SZX, SZY) 
SET PATTERN REPRESENTATION (WS, PI, DIMX, DIMY, SX, SY, DX, DY, COLIA) 
SET EDGE FLAG(EDFLAG) 
SET EDGETYPE(EDTYPE) 
SET EDGEWIDTH SCALE FACTOR(EWIDTH) 
SET EDGE COLOUR INDEX(COLI)
Text SET CHARACTER HEIGHT(CHH) 
SET CHARACTER EXPANSION FACTOR(CHEF) 
SET CHARACTER SPACING(CHSP) 
SET TEXT PATH(TXP) 
SET TEXT FONT(FONT) 
SET CHARACTER UP VECTOR(CHUX, CHUY) 
SET TEXT ALIGNMENT(TXALH, TXALY) 
SET TEXT PRECISION(PREC) 
SET TEXT COLOUR INDEX(COLI)

4.2 PATTERNS

The only unusual attribute setting function is SET PATTERN REPRESENTATION. All the others apply to every workstation in use and it is the workstation's responsibility to make as close a match to what is required as possible. For interior style PATTERN, the style index points to a pattern which is defined separately for each workstation. Thus, SET PATTERN REPRESENTATION sets the style index entry PI on workstation WS to the specified pattern.

The colours of the pattern cells are defined in the array COLIA which has dimensions DIMX and DIMY. The definition of this pattern starts at the entry COLIA(SX, SY). The next entry in the X-direction is COLIA(SX+1, SY) and the next entry in the Y-direction is COLIA(SX, SY+1). This allows a number of patterns to be stored in the same array and for sub-parts of a pattern to be used. For example:

      INTEGER COLIA(10, 20) 
      DATA XFA{2, 8, 8, 2, 2/ 
      DATA YFA(6, 6, 2, 2, 6/ 
      COLIA(4,3)=0 
      COLIA(4,4)=1 
      COLIA(4,5)=1 
      COLIA(5,3)=1 
      COLIA(5,4)=1 
      COLIA(5,5)=0 
      SET PATTERN SIZE(DX, DY) 
      SET PATTERN REFERENCE POINT(X, Y) 
      SET INTERIOR STYLE(PATTERN) 
      SET INTERIOR STYLE INDEX(4) 
      SET PATTERN REPRESENTATION(WS, 4, 10, 20, 4, 3, 2, 3, COLIA) 
      FILL AREA(5, XFA, YFA) 
      POLYLINE(5, XFA, YFA)

Figure 4.1: Patterned fill area

This defines a rectangular area to be filled stretching from 2 to 8 in the X-direction and 2 to 6 in the Y-direction (defined by XFA,YFA). The 4th pattern starts at entry (4, 3) in the COLIA array which has dimensions (10, 20). The number of elements in this pattern are 2 in the X-direction and 3 in the Y-direction. The elements in the COLIA array point to the colour table and we will assume that 0 represents the background colour (white) and that colour table entry 1 on workstation WS defines a black colour. If (X, Y) is set to (3, 3) and (DX, DY) is set to (6, 6) the fill area will be as shown in Figure 4.1. A polyline has been drawn around the boundary of the area to be filled.

The pattern is so large that a complete cycle of the pattern is not visible. With the origin some way in from the bottom left corner, bits of the previous pattern repeat are visible to the left and below.

Figure 4.2: Same pattern but smaller in size

If (X, Y) is set to (2.5, 2) and (DX, DY) is set to (3, 1.5), the effect is shown in Figure 4.2. The appearance of the pattern can be changed significantly by a large change in aspect ratio. Putting the origin back to (3, 3) and changing (DX, DY) to (1.2, 3.0) gives a pattern repeating more frequently in the X and less in the Y as shown in Figure 4.3.

Figure 4.3: Same pattern with more repeats in X and less in Y

4.3 GEOMETRIC ASPECTS

Some of the aspects described so far effect the geometry of the picture on the display as well as how it is rendered. Consequently, it is only sensible that these are defined individually as above. However, other aspects are mainly to provide differentiability between primitives (for example, linestyle). In this case, it is not unreasonable for these to be defined differently on each workstation in order to achieve maximum differentiability on a particular workstation.

To some extent the division into two classes is rather arbitrary as all aspects have some effect on the geometry of the picture, even the text font used does. The decision, in some cases, reflects the types of workstations around when PHIGS and the earlier graphics standards were defined. The set of aspects that can only be controlled globally are:

character height 
character up vector 
pattern size 
pattern reference point and vectors

All the other aspects can be set differently on each workstation using the bundled mode of aspect setting.

4.4 BUNDLED SPECIFICATION

The aspects for a primitive such as polyline can be defined differently on each workstation. This is achieved by having on each workstation a table which contains values for all the aspects that can be set either individually or bundled. The table will have a number of entries which define different combinations of the aspects. The index into the table is called the polyline index.

Figure 4.4 shows the form that the table will have on a workstation with the values for table position 2 filled in. These entries can either be predefined or set by the application.

POLYLINE
INDEX
LINE
TYPE
LINEWIDTH
SCALE
FACTOR
COLOUR
INDEX
1
2 SOLID 2.0 4
3
4
5
Figure 4.4: Polyline bundle table

If the aspects of a primitive are being defined by a bundle table on the workstation, the attribute controlling the appearance is the index into the bundle table. Thus index attributes are defined as follows:

polyline index 
polymarker index 
text index 
interior index edge index

and entries for each of these appear in the traversal state list. The aspects of fill area primitives are controlled by the interior index, whereas the fill area set aspects are determined by two indices, the same interior index and also the edge index. Each index has an associated attribute setting structure element defined by:

SET POLYLINE INDEX(I) 
SET POLYMARKER INDEX(I) 
SET TEXT INDEX (I) 
SET INTERIOR INDEX(I) 
SET EDGE INDEX (I)

A PHIGS implementation will have a number of bundle table entries already defined so that a structure containing:

      SET POLYLINE INDEX(1) 
      POLYLINE(N, XA1, YA1) 
      SET POLYLINE INDEX(2) 
      POLYLINE(M, XA2, YA2) 
      SET POLYLINE INDEX(3) 
      POLYLINE(P, XA3, YA3)

will, on traversal, display three polylines on each of the active workstations and the workstations are likely to have been initialized so that the polyline aspects for these 3 index values are differentiable on each of the workstations. The entries in the table will depend on the PHIGS implementation, no guidance is given in PHIGS itself. For example, a monochrome workstation might be initialized with the first 3 bundle table rows for polyline set to normal thickness, black lines but with different linestyles. The same PHIGS implementation might, on a colour workstation, set the first three rows to normal thickness, solid lines but with different colours set. The aim will be to choose settings that give maximum differentiability on that workstation.

The user is able to tailor the workstation bundle table entries to his own requirements by defining the aspects associated with a particular index value. The form of the function is:

XXX REPRESENTATION(WS, INDX, ...)

The XXX defines the bundle table to be set, the WS parameter defines the workstation on which the bundle table occurs and INDX defines the row of the table to be updated. The subsequent parameters in the function define the aspect values to be entered into that row of the table.

The parameters of the SET REPRESENTATION functions are:

SET POLYLINE REPRESENTATION(WS, PLI, LTYPE, LWIDTH, COLI) 
SET POLYMARKER REPRESENTATION(WS, PMI, MTYPE, MSZSF, COLI) 
SET TEXT REPRESENTATION(WS, TXI, FONT, PREC, CHXP, CRSP, COLI) 
SET INTERIOR REPRESENTATION(WS, INI, INTSTY, STYLI, COLI) 
SET EDGE REPRESENTATION(WS, EDI, EDFLAG, EDTYPE, EWIDTR, COLI)

Note that these tables are similar to the SET PATTERN REPRESENTATION table. The main difference is that the aspects above can also be set globally whereas patterns have to be defined separately for each workstation.

An example of the text bundle table is given in Figure 4.5.

INDEX TEXT
FONT
TEXT>
PRECISION
CHARACTER
EXPANSION
FACTOR
CHARACTER
SPACING
COLOUR
INDEX
1
2 -3 STROKE 2.0 0.0 3
3
Figure 4.5: Text bundle table

The font number specified is -3 which is an implementation specific font for this particular workstation.

Figure 4.6 gives an example of the interior bundle table used by both the fill area and fill area set primitives. Note that some table entries are blank. For interior styles HOLLOW and SOLID, there is no need to specify the style index as it is not used. For interior style PATTERN, the colour index is not used.

INDEX STYLE STYLE
INDEX
COLOUR
INDEX
1 HOLLOW 1
2 SOLID 2
3 PATTERN 2
4 PATTERN 1
5 HATCH 1 3
Figure 4.6: Interior bundle table

Figure 4.7 gives an example of the edge bundle table used by the fill area set primitive. Note that the entries are very similar to the polyline bundle table. The first entry specifies whether edges will be drawn or not.

EDGE
INDEX
EDGE
FLAG
EDGE
TYPE
EDGEWIDTH
SCALE
FACTOR
COLOUR
INDEX
1 ON SOLID 1.0 2
2
Figure 4.7: Edge bundle table

The number of entries in these tables is, again, implementation dependent although there are some minimum requirements defined by PHIGS. The size of the bundle tables must be at least 20 in length and there must be at least 5 predefined values (in the case of text it is 6). The pattern table has to have at least 10 entries but only 1 needs to be defined. An implementation will normally set up a minimum set of differentiable table entries for each workstation. An implementation can choose not to implement hatch styles at all but, if it does, it must implement at least 3.

4.5 ASPECT SOURCE FLAGS

So far, two different methods of setting aspects have been described. For example, the aspects associated with a polyline primitive can be defined by:

      SET LINETYPE(SOLID) 
      SET LINEWIDTH SCALE FACTOR(3.0) 
      SET POLYLINE COLOUR INDEX(5) 
      POLYLINE(6, XA, YA)

or by:

      SET POLYLINE INDEX(4) 
      SET POLYLINE REPRESENTATION(WS, 4, SOLID, 3.0, 5) 
      POLYLINE(6, XA, YA)

Both have the same effect on the workstation WS. What has not been explained is what happens if the application defines:

      SET LINETYPE(SOLID) 
      SET LINEWIDTH SCALE FACTOR(3.0) 
      SET POLYLINE COLOUR INDEX(5) 
      SET POLYLINE INDEX(4) 
      SET POLYLINE REPRESENTATION(WS, 4, DOTTED, 1.0, 7) 
      POLYLINE(6, XA, YA)

On traversal, is the polyline on workstation WS to be drawn as SOLID or DOTTED? Is the linewidth scale factor to be set to 3.0 or 1.0? Is the polyline colour index to be set to 5 or 7?

In PHIGS, it is possible for the application to specify that all the aspects are defined by the individual specification values in the traversal state list or all the aspects are defined by the workstation polyline bundle or a mixture of the two.

For each aspect, the traversal state list has an entry called the aspect source flag which specifies whether the value in the traversal state list is used (flag set to INDIVIDUAL) or the value in the bundle table on the workstation (flag is set to BUNDLED). The function defining the setting of aspect source flags is:

SET INDIVIDUAL ASF(ID, VAL)

The first parameter defines the aspect to be controlled and VAL is the new value for that aspect. For example:

      SET INDIVIDUAL ASF(LINETYPE, INDIVIDUAL)

will set the LINETYPE aspect to INDIVIDUAL as shown in Figure 4.8. The complete set of ASFs is linetype, linewidth scale factor, polyline colour index, marker type, marker size scale factor, polymarker colour index, text font, text precision, character expansion factor, character spacing, text colour index, interior style, interior style index, interior colour index, edge flag, edgetype, edgewidth scale factor, and edge colour index.

The setting of the ASFs initially is likely to be to INDIVIDUAL especially if the PHIGS system is of USA origin. The standard allows either initial setting. Figure 4.8 and Figure 4.9 show how the system works. The traversal state list has entries for the 3 linetype attributes: linetype, linewidth scale factor (abbreviated to SF) and polyline colour index. It also has entries for the 3 associated aspect source flags (ASFs). Finally, it has an entry for the polyline index that points to an entry in the polyline bundle table. The following program would set up the entries in Figure 4.8 and Figure 4.9:

      SET LINETYPE(SOLID) 
      SET LINEWIDTH SCALE FACTOR(1.O) 
      SET POLYLINE COLOUR INDEX(2) 
      SET POLYLINE INDEX(1) 
      SET INDIVIDUAL ASF(LINETYPE, INDIVIDUAL) 
      SET INDIVIDUAL ASF(LINEWIDTH SCALE FACTOR, BUNDLED) 
      SET INDIVIDUAL ASF(POLYLINE COLOUR INDEX, INDIVIDUAL) 
      SET POLYLINE REPRESENTATION(WS, 1, DOTTED, 3.0, 1) 
      POLYLINE(5, XA, YA)
Traversal State List
Linetype ASF INDIVIDUAL
Linetype SOLID
Linewidth SF ASF BUNDLED
Linewidth SF 1.0
Colour Index ASF INDIVIDUAL
Colour Index 2
Polyline Index 1
Polyline primitive created
Linetype Linewidth
Scale factor
Colour
Index
Polyline
Index
SOLID 2 1
Figure 4.8: Aspects bound before workstation

On traversal, the polyline primitive created will have the aspects bound to it from the traversal state list entries if the associated ASF is set to INDIVIDUAL. In the example, the linetype and polyline colour index ASFs are set to INDIVIDUAL, so the polyline primitive created will have linetype set to SOLID and polyline colour index set to 2 from the traversal state list entries. The linewidth scale factor entry is left empty.

Polyline Bundle Table
Index Linetype Linewidth
Scale factor
Colour
Index
1 DOTTED 3.0 1
Aspects of displayed polyline
Linetype Linewidth
Scale Factor
Colour
Index
1 SOLID 3.0 2
Figure 4.9: Aspects bound at workstation

If all aspects are bound to the primitive, that is all the ASFs are set to INDIVIDUAL, the polyline primitive is completely defined and it is sent o the workstation for rendering on the display. There is no need to send the polyline index in this case. If some aspects have not been bound to the primitive, at least one ASF is set to BUNDLED, the polyline index is bound to the primitive as well and the workstation is left to define the remaining aspects from the relevant entry in the polyline bundle table.

As the linewidth scale factor ASF is set to BUNDLED, the polyline index is bound to the primitive (value 1). The workstation will extract the linewidth scale factor value (3.0 in this case) from the bundle defined in position 1. This results in the aspects bound to the primitive being linetype SOLID, linewidth scale factor 3.0, and polyline colour index 2.

If the application is associated with a single workstation, specifying the aspects individually may be appropriate. If the application is to run on a range of workstations, or if it uses several workstations together, and the aim is maximum portability, the bundled mode of working may be preferable. The choice depends on the types of workstation in use and whether the application is aiming for maximum differentiability or closeness to a virtual specification of the graphics. Both are valid aims. Applications need to decide whether maximum differentiability or closeness of realization is the aim.

If the display is required to be made up of blue and turquoise lines, and the display cannot produce differentiable colours, are red and blue lines acceptable or would all blue lines be preferable? The answer to this question is application specific and will influence which mode of working is chosen.

4.6 COLOUR TABLES

Each workstation has its own colour table, the entries in which are pointed at by all the primitive's colour index aspects. A typical form of the colour table is shown in Figure 4.10.

INDEX C1 C2 C3
0
1 0.1 0.4 0.1
2
3
Figure 4.10: Colour table

Note that, unlike the other tables, an index 0 entry is specified, which is the background colour.

The colour index points to a row of the table which defines 3 colour components C1, C2 and C3. The colour that these specify depends on the colour model in use. PHIGS allows the workstation to define colour using one of the following colour models:

  1. RGB: red, green and blue components;
  2. CIELUV: the universal colour definition system;
  3. HSV: hue, saturation and value components;
  4. HLS: hue, lightness and saturation components.

It is possible for other colour models to be specified. As before, values greater than 4 are subject to the Registration mechanism while values less than or equal to 0 can be used by the implementation to define implementation ones.

Every workstation must support colour specifications using the RGB and CIELUV models. The other two are optional. The requirement to support the CIELUV model was a late addition to the definition of PHIGS. Consequently, some early implementations still do not support the CIELUV model even though it is mandatory.

A full description of colour models is outside the scope of this book. The reader should consult any of the standard text books in Computer Graphics, such as Foley, van Dam, Feissier and Hughes. Suffice it to say:

  1. RGB: the individual components are in the range 0 to 1 and give the intensity of that particular colour in the composite colour. Equal values of all three colours span the grey scale from black to white as they advance from 0 to 1. A yellow colour is produced by equal values of red and green with the blue component set to 0.
  2. CIELUV: the individual components do not represent real colours but are hypothetical primary colours which when added together allow all physically realizable colours to be specified using positive values in the range 0 to 1. Standard formulae translate RGB specified colours to CIELUV colours for a specific workstation. The advantage of the CIELUV model is that colours are specified in a device independent way. A device can be tuned to realize the correct colour defined by CIELUV.
  3. HSV: a model that is easier for the user to specify colours in terms of hue, saturation and value (darkness). The hue component defines the colour with small values being red, going through yellow to green (around 0.3) through cyan to blue (around 0.7) and back to red with value near 1. The saturation component gives the amount of whiteness. A high saturation value near 1 gives a saturated red while a value around 0.5 gives pink and small values approach white with little redness. The value component close to 0 gives a dark colour which gets lighter as the value goes to 1.
  4. HLS: the hue component is similar to HSV. The lightness component defines the brightness going from 0 as the lowest (black) to 1 giving maximum brightness (white). The saturation component again gives the level of saturation.

The required colour model is specified by:

SET COLOUR MODEL(WS, CMODEL)

while the individual representations in the colour table are defined by:

SET COLOUR REPRESENTATION(WS, CI, N, CSPEC)

The array elements CSPEC(1) to CSPEC(N) contain the colour defined for entry CI on workstation WS. An array is used here as some colour models use more or less than 3 parameters to define colours.

If the workstation is monochrome, it is necessary to map the three components into, say, a level of greyness or intensity. PHIGS does not specify how this should be done. However, some implementations use the formulae produced for NTSC TV to map colour pictures to Black and White. The green component contributes most to the intensity (60%) while the red is less (30%) and the blue almost non-existent. Quite a wide range of grey values can be obtained by leaving the red and blue components at some median value and just changing the green component.

4.7 IDENTIFICATION ATTRIBUTES

4.7.1 Name set

Output primitives in PHIGS can have a name set attribute associated with them. It is used to identify sets of primitives with similar characteristics. Its principle use is in controlling the overall form of the interaction between the operator and the application. An implementation must allow a minimum of 64 names to be specified and these are mapped to the integers 0 to 63. Some implementations support as many as 1024. For example, if a designer is producing the set of drawings for a house, names might be used to identify those components that belong to a particular room, a particular function (heating say) or made from a particular material (wood say).

Thus, a specific primitive may have names associated with all these classes. Consequently, the name set is a set of data associated with the primitive.

The traversal state list contains an entry which contains the current name set and, on traversal, this set of names is bound to the primitive. Unlike the other attributes, the value of the name set is not specified completely by a SET NAME SET function. Instead, the name set in the traversal state list is initialized to be empty, and the name set entry is changed by the two functions:

ADD NAMES TO SET(N, NMSETA) 
REMOVE NAMES FROM SET(N, NMSETA)

On traversal, these functions add or remove the set of names specified from the current set specified in the traversal state list.

4.7.2 Filters

The name set associated with an output primitive is used to control the attributes involved in the interaction with the operator on a specific workstation:

  1. invisibility: whether or not the operator is able to see the posted primitive on a specified workstation;
  2. highlighting: whether or not a particular primitive is highlighted to bring it to the attention of the operator;
  3. pickability: whether or not the primitive is enabled to allow the operator to point at and interact with it.

In each case, the application would like to indicate the names associated with primitives that would cause the required effect to take place (invisibility, highlighting, pickability) and the names associated with primitives that would cause the effect not to take place. An example might be to highlight all the primitives in the drawing that are part of the heating system and are not made of wood.

This leads to the concept in PHIGS of having filters specified for a workstation to control these three attributes relevant to the operator.

Each workstation has filters associated with highlighting, invisibility and pickability (for a specific device). A filter consists of a pair of sets of names, called the inclusion set and the exclusion set. The description of the pick filter is similar to the other two. It is left to Section 9.7.2 for a detailed description. Associated with picking is another identification attribute, the pick identifier, which is also described there.

The functions to set the filters for invisibility and highlighting are:

SET INVISIBILITY FILTER(WS, ISN, ISNA, ESN, ESNA) 
SET HIGHLIGHTING FILTER(WS, ISN, ISNA, ESN, ESNA)

Each function defines both the inclusion (IS) and exclusion set (ES) for the attribute. The parameter ISN defines the number of names in the inclusion set. ISNA is an array giving those names. Similarly for the exclusion set. A primitive on a workstation is highlighted if it has at least one name in its name set that is in the highlighting inclusion set, and no names in its name set that appear in the highlighting exclusion set. Invisibility is specified in a similar way.

For example:

      OPEN STRUCTURE(HOUSE)
      NMSETA(1)=WOOD 
      NMSETA(2)=HEATING 
      ADD NAMES TO SET(2, NMSETA) 
      SHELF
      NMA(l)=HEATING 
      REMOVE NAMES FROM SET(1, NMA) 
      NMA(l)=FURNITURE 
      ADD NAMES TO SET(l, NMA) 
      BOOKCASE
      NMA(2)=WOOD 
      REMOVE NAMES FROM SET(2, NMA) 
      NMSETA(1)=METAL 
      NMSETA(2)=HEATING 
      ADD NAMES TO SET(2, NMSET A) 
      RADIATOR 
      CLOSE STRUCTURE(HOUSE) 
      POST STRUCTURE(WS, HOUSE, 0.2) 
      ISA(1)=HEATING 
      ESA(1)=WOOD 
      SET HIGHLIGHTING FILTER(WS, 1, ISA, 1, ESA)

The three objects drawn have name sets:

Object Name set
SHELF WOOD, HEATING
BOOKCASE WOOD, FURNITURE
RADIATOR METAL, HEATING

When the structure is posted, traversal will start and the inclusion and exclusion name sets for the workstation WS will initially be null so all parts of the house (bookcase, radiator and shelf above it) will be drawn normally.

When the highlighting filter is changed, the items to be highlighted are those with the name HEATING in the name set but not those with the name WOOD in the name set.

The two items with the name HEATING in the name set are the SHELF and the RADIATOR. As the SHELF also has the name WOOD which is in the exclusion set, it would not be highlighted. Consequently, the only item highlighted is the radiator.

4.7.3 Rendering

PHIGS does not pretend to be a system defined for high quality rendering or visualization. It is primarily concerned with schematics or simple coloured objects. The extension to PHIGS (PHIGS PLUS) is being standardized and this provides a richer set of output primitives together with the ability to render these in a more impressive way with control of shading and lighting. In its basic form, PHIGS provides some control over the rendering hardware available with modern displays. This allows a minimal amount of control of Hidden Line and Hidden Surface Removal (HLHSR).

PHIGS has another identification attribute called the HLHSR Identifier. The function:

SET HLHSR IDENTIFIER(ID) 

sets the entry in the traversal state list for the HLHSR Identifier to ID and the current value of this entry is bound to primitives on traversal. The HLHSR Identifier can be used to partition the output primitives sent to a workstation for display into sets corresponding to the different values of the HLHSR Identifier. For example, the value might specify whether a wire frame model or solid rendering is required. It might also classify primitives into sets that do not overlap each other. How the HLHSR Identifier is used is implementation specific.

With each workstation is a second identifier called the HLHSR Mode which is set by:

SET HLHSR MODE(WS, MD)

The HLHSR Mode is used in conjunction with the HLHSR Identifier to provide some control of rendering.

For example, the HLHSR Identifier could be used to partition primitives into those to be displayed as wire frames and those to be rendered as solids. The HLHSR Mode could be used to decide whether a particular algorithm such as Z buffering was to be used to render the solid parts of the picture.

PHIGS just provides the two identifiers and does not specify how they are to be used. Consequently, it is essential that the user looks at the details of his specific implementation to see what, if any, facilities are provided.

As PHIGS PLUS, when it is defined, will provide much richer control of rendering, the HLHSR functionality is unlikely be implemented other than in a rudimentary way on those implementations that have included some PHIGS PLUS functionality as the standard develops. Care should be taken when using these extensions until the PHIGS PLUS standardization is complete.

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site