DESCRIPTION: This module tests the individual fill area and fill area set attributes. These values control the appearance of fill areas when they are under individual (as opposed to bundled) control. SEMANTIC REQUIREMENTS: *** *** *** Fill area attribute inquiry *** *** ***#F 303
SR1. If current element is interior style, interior style index, interior colour index, edge flag, edgetype, edgewidth scale factor, edge colour index, pattern size, pattern reference point, or pattern reference point and vectors, then <inquire current element type and size> returns the appropriate element type and size.
#F 304
SR2. If current element is interior style, interior style index, interior colour index, edge flag, edgetype, edgewidth scale factor, edge colour index, pattern size, pattern reference point, or pattern reference point and vectors, then <inquire current element content> returns the associated value for that element.
*** *** *** Fill area attribute traversal binding *** *** ***#F 50 51 52 57 58 59
SR3. Upon traversal of a "fill area" or "fill area 3" element, the current interior style, interior style index, interior colour index, pattern size, pattern reference point and pattern reference vectors in the PTSL are bound to the resulting primitive.
#F 50 51 52 53 54 55 56 57 58 59
SR4. Upon traversal of a "fill area set" or "fill area set 3" element, the current interior style, interior style index, interior colour index, edge flag, edgetype, edgewidth scale factor, edge colour index, pattern size, pattern reference point and pattern reference vectors in the PTSL are bound to the resulting primitive.
*** *** Interior style: element creation *** ***#F 50
SR5. <Set interior style> creates a "set interior style" element (in the open structure), whose associated value is taken from the function's parameter.
#F 50
SR6. The only valid values for interior style are: HOLLOW, SOLID, PATTERN, HATCH, and EMPTY.
*** *** Interior style: effect during traversal *** ***#F 50
SR7. Upon traversal of a "set interior style" element, the current interior style entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 50 270
SR8. When a fill area or fill area set is displayed, if its bound interior style is available on the workstation and its bound interior style ASF is INDIVIDUAL, then that interior style is used for the interior of the primitive.
#F 50 270
SR9. When a fill area or fill area set is displayed, if its bound interior style is not available on the workstation and its bound interior style ASF is INDIVIDUAL, then interior style HOLLOW is used for the interior of the primitive.
#F 50 52
SR10. For interior style HOLLOW, if the bound interior colour index ASF is INDIVIDUAL, then the interior of the area is not filled, but the bounding polyline is drawn with its colour dependent on the current interior colour index.
#F
SR11. For interior style HOLLOW, the linetype and linewidth of the bounding polyline appear as specified in the implementor's documentation.
#F 50
SR12. For interior style EMPTY, the interior of the fill area is not filled and no bounding polyline is drawn.
#F 50 52
SR13. For interior style SOLID, if the bound interior colour index ASF is INDIVIDUAL, then the interior of the polygonal area is uniformally filled with its colour dependent on the current interior colour index.
#F 50 51 52
SR14. For interior style HATCH, if the bound interior colour index and interior style index ASFs are INDIVIDUAL, then the interior of the polygonal area is filled with a hatch style dependent on the current interior style index and its colour dependent on the current interior colour index.
#F 50 51
SR15. For interior style PATTERN, it the bound interior style index ASF is INDIVIDUAL, then the interior of the polygonal area is filled with a pattern dependent on the interior style index.
#C See SRs for interior style index. As usual, entry #1 is used when the requested entry is unavailable. *** *** Interior style: network traversal *** ***#F
SR16. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current interior style of the PTSL is set to HOLLOW.
#F 113
SR17. As part of the PTSL, the current interior style is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** *** Interior style index: element creation *** ***#F 51
SR18. <Set interior style index> creates a "set interior style index" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Interior style index: effect during traversal *** ***#F 51
SR19. Upon traversal of a "set interior style index" element, the current interior style index entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 51 232 233 270
SR20. When a fill area or fill area set is displayed, if its bound interior style index is available on the workstation and its bound interior style index ASF is INDIVIDUAL, then that interior style index is used.
#C Interior style index only applies to HATCH and PATTERN interior styles.#F 51 232 270
SR21. When a fill area or fill area set is displayed, if its bound interior style index is not available on the workstation and its bound interior style index ASF is INDIVIDUAL, then interior style index entry number 1 is used when present on the workstation.
#C Pattern index #1 is always present, but hatch style #1 may not be. Effect requesting unavailable hatch style is workstation dependent when hatch style #1 is not supported.#F
SR22. When available on the workstation to which posted, the hatch styles identified by indices greater than 0 appear as specified in the ISO register.
#F
SR23. When available on the workstation to which posted, the hatch styles identified by indices less than 1 appear as specified in the implementor documentation.
*** *** Interior style index: network traversal *** ***#F
SR24. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current interior style index of the PTSL is set 1.
#F 113
SR25. As part of the PTSL, the current interior style index is saved (but not changed) by execute structure and then, upon completion ofthe sub-traversal of the invoked network, restored to the saved value.
*** Interior colour index: element creation ***#F 52
SR26. <Set interior colour index> creates a "set interior colour index" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Interior colour index: effect during traversal *** ***#F 52
SR27. Upon traversal of a "set interior colour index" element, the current interior colour index entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 52
SR28. When a fill area or fill area set is displayed, if its bound interior colour index is defined on the workstation and its bound interior colour index ASF is INDIVIDUAL, then the interior colour index is realized as itself.
#F 52
SR29. When a fill area or fill area set is displayed, if its bound interior colour index is not defined on the workstation and its bound interior colour index ASF is INDIVIDUAL, then the interior colour index is realized as number 1.
*** *** Interior colour index: network traversal *** ***#F
SR30. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current interior colour index of the PTSL is set to 1.
#F 113
SR31. As part of the PTSL, the current interior colour index is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** Edge flag: element creation ***#F 53
SR32. <Set edge flag> creates a "set edge flag" element (in the open structure), whose associated value is taken from the function's parameter.
#F 53
SR33. The valid values for edge flag in <set edge flag> are: OFF or ON.
*** *** Edge flag: effect during traversal *** ***#F 53
SR34. Upon traversal of a "set edge flag" element, the current edge flag entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 53
SR35. When a fill area set is displayed, if its bound edge flag ASF is INDIVIDUAL, then the bound edge flag is used when displaying the edges of fill area sets.
#F 53
SR36. If the edge flag aspect is ON, then the edges of fill area sets are drawn; otherwise, they are not.
#F
SR37. The edges of fill area sets are drawn on top of the interior.
*** *** Edge flag : network traversal *** ***#F
SR38. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current edge flag of the PTSL is set to OFF.
#F 113
SR39. As part of the PTSL, the current edge flag is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** *** Edgetype: element creation *** ***#F 54
SR40. <Set edgetype> creates a "set edgetype" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Edgetype: effect during traversal *** ***#F 54
SR41. Upon traversal of a "set edgetype" element, the current edgetype entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 54 272
SR42. When a fill area set is displayed, if its bound edgetype is available on the workstation and its bound edgetype ASF is INDIVIDUAL, then the appearance of the edgetype agrees with the documented specifications.
#F 54 272
SR43. When a fill area set is displayed, if its bound edgetype is not available on the workstation and its bound edgetype ASF is INDIVIDUAL, then edgetype 1 (solid) is used to display the edge.
#F
SR44. When available on the workstation to which posted, edgetypes 1 through 4 appear as solid, dashed, dotted, and dashed-dotted, respectively.
#C Edgetypes are drawn from the identical set of values with the same meanings as linetypes.#F
SR45. When available on the workstation to which posted, edgetypes greater than 4 appear as specified in the ISO register.
#C Edgetypes are drawn from the identical set of values with the same meanings as linetypes.#F
SR46. When available on the workstation to which posted, edgetypes less than 1 appear as specified in the implementor documentation.
#C Edgetypes are drawn from the identical set of values with the same meanings as linetypes. *** *** Edgetype: network traversal *** ***#F
SR47. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current edgetype of the PTSL is set to 1.
#F 113
SR48. As part of the PTSL, the current edgetype is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** Edgewidth scale factor: element creation ***#F 55
SR49. <Set edgewidth scale factor> creates a "set edgewidth scale factor" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Edgewidth scale factor: effect during traversal *** ***#F 55
SR50. Upon traversal of a "set edgewidth scale factor" element, the current edgewidth scale factor entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 55 272
SR51. When a fill area set is displayed, if its logical edgewidth (= its bound edgewidth scale factor times the workstation's nominal edgewidth) is available on the workstation and its bound edgewidth scale factor ASF is INDIVIDUAL, then the actual edgewidth agrees with the logical edgewidth.
#F 55 272
SR52. When a fill area set is displayed, if its logical edgewidth is not available on the workstation and its bound edgewidth scale factor ASF is INDIVIDUAL, then the actual edgewidth is the nearest available to the logical edgewidth.
*** *** Edgewidth scale factor: network traversal *** ***#F
SR53. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current edgewidth scale factor of the PTSL is set to 1.0.
#F 113
SR54. As part of the PTSL, the current edgewidth scale factor is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** Edge colour index: element creation ***#F 56
SR55. <Set edge colour index> creates a "set edge colour index" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Edge colour index: effect during traversal *** ***#F 56
SR56. Upon traversal of a "set edge colour index" element, the current edge colour index entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 56
SR57. When a fill area set is displayed, if its bound edge colour index is defined on the workstation and its bound edge colour index ASF is INDIVIDUAL, then the edge colour index is realized as itself.
#F 56
SR58. When a fill area set is displayed, if its bound edge colour index is not defined on the workstation and its bound edge colour index ASF is INDIVIDUAL, then the edge colour index is realized as number 1.
*** *** Edge colour index: network traversal *** ***#F
SR59. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current edge colour index of the PTSL is set to 1.
#F 113
SR60. As part of the PTSL, the current edge colour index is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** *** *** Pattern size: element creation *** *** ***#F 57
SR61. <Set pattern size> creates a "set pattern size" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Pattern size: effect during traversal *** ***#F 57
SR62. Upon traversal of a non-degenerate "set pattern size" element, the current set pattern size entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 57
SR63. Upon traversal of a "set pattern size" element, if the absolute value of either pattern size components is zero (degenerate), then the element is ignored.
*** *** Pattern size: network traversal *** *** ***#F
SR64. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current pattern size of the PTSL is set to (1.0,1.0).
#F 113
SR65. As part of the PTSL, the current pattern size is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
*** Pattern reference point and vectors: element creation ***#F 58
SR66. <Set pattern reference point and vectors> creates a "set pattern reference point and vectors" element (in the open structure), whose associated value is taken from the function's parameter.
#F 59
SR67. <Set pattern reference point> creates a "set pattern reference point" element (in the open structure), whose associated value is taken from the function's parameter.
*** Pattern reference point and vectors: effect during traversal#F 58
SR68. Upon traversal of a non-degenerate "set pattern reference point and vectors" element, the current pattern reference point and current pattern reference vectors entries in the PHIGS traversal state list (PTSL) are set to the element's associated values.
#F 59
SR69. Upon traversal of a "set pattern reference point" element, the current pattern reference point entry in the PHIGS traversal state list (PTSL) is set to the element's associated value with the z-coordinate value equal to 0 and the current reference vectors entry in the PTSL is set to (1,0,0) and (0,1,0).
#F 58
SR70. Upon traversal of a "set pattern reference point and vectors" element, if the vectors are degenerate, that is parallel or have zero length, then the element is ignored.
*** *** *** Rendering of geometric attributes *** *** ***#F 57 58 59
SR71. A non-degenerate pattern box for a fill area is a parallelogram within the MC fill area plane, defined by a base corner and adjacent 1st and 2nd corners which are distinct from the base corner and each other.
#F 58 59
SR72. The base corner of the pattern box is the normal projection of the pattern reference point onto the fill area plane.
#F 57 58 59
SR73. The pattern width vector is a directed line segment from the base corner to the 1st corner such that its direction is parallel to the normal projection of the first pattern reference vector onto the fill area plane, and its length equals the magnitude of the 1st component of the pattern size.
#F 57 58 59
SR74. The pattern height vector is a directed line segment from the base corner to the 2nd corner such that its direction is parallel to the normal projection of the second pattern reference vector onto the fill area plane, and its length equals the magnitude of the 2nd component of the pattern size.
#F 68
SR75. The pattern representation is a 2D array of color indexes, numbered from 1 to DX in first dimension and 1 to DY in second dimension.
#F 57 58 59 68
SR76. Mapping a pattern representation into a pattern box subdivides the box into a 2D array of DX (along the pattern width vector) times DY (along the pattern height vector) colored cells of identical size and shape (in MC), with sides parallel to those of the pattern box.
#F 57 58 59 68
SR77. The pattern representation is mapped into the cells of a non-degenerate pattern box such that 1) element (1,DY) is associated with the cell adjacent to the base corner; 2) elements with increasing first dimension indexes are associated with successive cells in the direction of the pattern width vector; and 3) elements with decreasing second dimension indexes are associated with successive cells in the direction of the pattern height vector.
#F
SR78. A fill area or fill area set with interior style PATTERN is filled by replicating the pattern box or portions thereof in directions parallel to its sides until the entire area is filled.
#C The original pattern box need not be within, or even overlap, the area to be filled; its location, however, determines where the derived pattern boxes will be located within the fill area.#F
SR79. Workstations which support transformable patterns render pattern-filled area primitives by applying the usual transformations to the MC model described above to generate the primitive in DC space.
*** Pattern reference point and vectors: network traversal ***#F
SR80. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current pattern reference point of the PTSL is set to (0,0,0).
#F 113
SR81. As part of the PTSL, the current pattern reference point is saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
#F
SR82. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current pattern reference vectors of the PTSL are set to (1,0,0) (0,1,0).
#F 113
SR83. As part of the PTSL, the current pattern reference vectors are saved (but not changed) by execute structure and then, upon completion of the sub-traversal of the invoked network, restored to the saved value.
LOCAL DICTIONARY:
Functions --- 050: psis <set interior style> 051: psisi <set interior style index> 052: psici <set interior colour index> 053: psedfg <set edge flag> 054: psedt <set edgetype> 055: psewsc <set edgewidth scale factor> 056: psedci <set edge colour index> 057: pspa <set pattern size> 058: psprpv <set pattern reference point and vectors> 059: psparf <set pattern reference point> 068: pspar <set pattern representation> 113: pexst <execute structure> 232: pqepai <inquire list of pattern indices> 233: pqpar <inquire pattern representation> 270: pqif <inquire interior facilities> 272: pqedf <inquire edge facilities> 303: pqcets <inquire current element type and size> 304: pqceco <inquire current element content> Data Structures --- 2 ... phigs_description_table 2.14 ... default_interior_attributes 2.14.2 ... default_interior_style 2.14.3 ... default_interior_style_index 2.14.4 ... default_interior_colour_index 2.15 ... default_edge_attributes 2.15.2 ... default_edge_flag 2.15.3 ... default_edgetype 2.15.4 ... default_edgewidth_scale_factor 2.15.5 ... default_edge_colour_index 2.16 ... default_pattern_attributes 2.16.1 ... default_pattern_size 2.16.2 ... default_pattern_reference_point 2.16.3 ... default_pattern_reference_vectors 3 ... phigs_traversal_state_list 3.5 ... current_interior_attributes 3.5.2 ... current_interior_style 3.5.3 ... current_interior_style_index 3.5.4 ... current_interior_colour_index 3.5.5 ... current_interior_style_asf 3.5.6 ... current_interior_style_index_asf 3.5.7 ... current_interior_colour_index_asf 3.6 ... current_edge_attributes 3.6.2 ... current_edge_flag 3.6.3 ... current_edgetype 3.6.4 ... current_edgewidth_scale_factor 3.6.5 ... current_edge_colour_index 3.6.6 ... current_edge_flag_asf 3.6.7 ... current_edgetype_asf 3.6.8 ... current_edgewidth_scale_factor_asf 3.6.9 ... current_edge_colour_index_asf 3.7 ... current_pattern_attributes 3.7.1 ... current_pattern_size 3.7.2 ... current_pattern_reference_point 3.7.3 ... current_pattern_reference_vectors 3.12 ... current_modelling_attributes 5 ... workstation_state_list 5.4 ... view_table 5.4.2 ... view_table_ordered_by_input_priority 5.4.2.3 ... current_view 5.6 ... workstation_transformation_entry 5.6.3 ... current_workstation_window 5.6.5 ... current_workstation_viewport 5.14 ... pattern_entry 5.14.2 ... pattern_table 5.14.2.1 ... pattern_index 5.14.2.2 ... pattern_colour_index_array 5.15 ... colour_entry 5.15.3 ... colour_table 5.15.3.1 ... colour_index 5.15.3.2 ... colour_specification 6 ... workstation_description_table 6.14 ... interior_entry 6.14.1 ... interior_facilities 6.14.1.1 ... number_of_available_interior_styles 6.14.1.2 ... list_of_available_interior_styles 6.14.1.3 ... number_of_available_hatch_styles 6.14.1.4 ... list_of_available_hatch_styles 6.15 ... edge_entry 6.15.1 ... edge_facilities 6.15.1.1 ... number_of_available_edgetypes 6.15.1.2 ... list_of_available_edgetypes 6.15.1.3 ... number_of_available_edgewidths 6.15.1.4 ... nominal_edgewidth 6.15.1.5 ... minimum_edgewidth 6.15.1.6 ... maximum_edgewidth 7 ... structure_state_list 7.3 ... list_of_structure_elements 7.3.1 ... graphical_primitives 7.3.1.9 ... fill_area_3 7.3.1.10 ... fill_area 7.3.1.11 ... fill_area_set_3 7.3.1.12 ... fill_area_set 7.3.2 ... primitive_attributes 7.3.2.6 ... fill_area_attributes 7.3.2.6.1 ... interior_style 7.3.2.6.2 ... interior_style_index 7.3.2.6.3 ... interior_colour_index 7.3.2.6.4 ... edge_flag 7.3.2.6.5 ... edgetype 7.3.2.6.6 ... edgewidth_scale_factor 7.3.2.6.7 ... edge_colour_index 7.3.2.6.8 ... pattern_size 7.3.2.6.9 ... pattern_reference_point_and_vectors 7.3.2.6.10 ... pattern_reference_point SEMANTIC CROSS-REFERENCES: 04.02.05.04/SR02 LOCAL SUBROUTINES: SHOWEW tests the rendering of a given edgewidth, and returns the pass/fail result or an abort signal if the requested edge is too wide to be tested. PARPT accepts a reference point and 2 vectors and computes a corner of the smallest parallelogram containing a specified rectangle. The corner is found in the direction specified by parity. PARLIN accepts a reference point and 2 vectors and computes a side of the smallest parallelogram containing a specified rectangle. The side is found in the direction specified by parity. CLDIAG accepts the x-y coordinates of 2 MC points, the coefficients of a fill area plane, and a transformation from MC to WC, and draws the resulting (slightly shrunken) 3D line segment.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.