DESCRIPTION: This module tests the individual annotation text attributes. These values control the appearance of annotation text relative primitives when they are under individual (as opposed to bundled) control. In order to explain clearly the effect of annotation text relative aspects, some of the SRs are worded in terms of the order of their application. E.g. annotation text relative alignment and annotation text character up vector are described as if applied in that order. It is only the final appearance of the annotation text relative primitive, however, which is subject to test. SEMANTIC REQUIREMENTS: *** *** *** Text Local Coordinates *** *** ***#F 15 16
SR1. The Text Local Coordinate (TLC) system represents an unscaled, unrotated shift within the Normalized Projection Coordinate (NPC) system, such that the TLC origin coincides with the NPC annotation point.
#F 15 16
SR2. The NPC annotation point is the transformed (from MC to NPC) reference point plus the (NPC) annotation offset.
*** *** Annotation text attribute inquiry *** ***#F 303
SR3. If current element is annotation text character height, annotation text path, annotation text alignment, annotation text character up vector, or annotation style, then <inquire current element type and size> returns the appropriate element type and size.
#F 304
SR4. If current element is annotation text character height, annotation text path, annotation text alignment, annotation text character up vector, or annotation style, then <inquire current element content> returns the associated value for that element.
*** Annotation text attribute traversal binding ***#F 36 37 38 39 40 45 46 47 48 49
SR5. Upon traversal of a "annotation text relative" or "annotation text relative 3" element, the current text font, text precision, character expansion factor, character spacing, text colour index, annotation text character height, annotation text path, annotation text alignment, annotation text character up vector, and annotation style in the PTSL are bound to the resulting primitive.
*** text font: effect during traversal ***#F 36
SR6. Upon traversal of a "set text font" element, the current text font entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F
SR7. Text fonts 1 and 2 both contain all the ASCII characters, i.e. those defined within ANSI X3.4-1986.
#F
SR8. Text fonts 1 and 2 are visually distinguishable.
#F
SR9. For all text fonts, a character body in TLC, before application of annotation text character up vector, is a rectangle generally surrounding the character, aligned such that the top, cap, half, base, and bottom lines are all parallel to the TLC x-axis and the left, centre, and right lines are all parallel to the TLC y-axis.
#F
SR10. All text fonts are either monospaced or proportionately spaced. All character bodies within a monospaced font have the same font nominal height and the same font nominal width. All character bodies within a proportionately spaced font have the same font nominal height.
#F
SR11. Text font 1 is monospaced.
#F
SR12. A text font identifier denotes the same text font for all workstation types within a PHIGS implementation.
#F
SR13. If a requested character in an annotation text relative primitive is not available within the font, an implementation dependent representation is generated to so indicate.
#F 36 266
SR14. When an annotation text relative primitive is displayed, if its bound text font and text precision are available on the workstation and its bound text font and text precision ASFs are INDIVIDUAL, then the appearance of the text font agrees with the implementor documentation and, if the text font is greater than 2, with the ISO register.
#F 36 266
SR15. When an annotation text relative primitive is displayed, if its bound text font and text precision are not both available on the workstation and its bound text font and text precision ASFs are INDIVIDUAL, then text font 1 (as documented by the implementor) and text precision STRING are used to display the primitive.
*** *** *** text font: 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 text font of the PTSL is set to 1.
#F 113
SR17. As part of the PTSL, the current text font 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.
*** Text precision ***#F 37
SR18. The valid values for text precision in <set text precision> are STRING, CHAR, and STROKE.
*** Text precision: effect during traversal ***#F 37
SR19. Upon traversal of a "set text precision" element, the current text precision entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 37 266
SR20. When an annotation text relative primitive is displayed, if its bound text font and text precision are available on the workstation and its bound text font and text precision ASFs are INDIVIDUAL, then the appearance of the annotation text relative primitive meets or exceeds the requirements of the bound text precision.
#F 37
SR21. For text precision = STRING and CHAR, the annotation text relative string is displayed with the appropriate text font and the nearest DC annotation text character height and character expansion factor available on the workstation.
#F 37
SR22. For text precision = CHAR, character spacing and annotation text alignment aspects are applied exactly.
#F 37
SR23. For text precision = STROKE, annotation text relative is displayed with all annotation text relative aspects applied exactly.
*** Text precision: 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 text precision of the PTSL is set to STRING.
#F 113
SR25. As part of the PTSL, the current text precision 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.
*** *** Character expansion: effect during traversal *** ***#F 38
SR26. Upon traversal of a "set character expansion factor" element, the current character expansion factor entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 269
SR27. The magnitude of the character expansion factor attribute specifies the amount by which the font nominal width/height ratio of individual TLC character bodies is multiplied to yield the actual TLC width/height ratio.
#F
SR28. The requested DC character expansion factor equals the requested TLC character expansion factor.
#F 38 266
SR29. When an annotation text relative primitive is displayed, if its bound character expansion factor ASF is INDIVIDUAL, then the actual DC character expansion factor used when displaying the annotation text relative is the nearest available to the requested DC character expansion factor.
*** *** Character expansion: 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 character expansion factor of the PTSL is set to 1.0.
#F 113
SR31. As part of the PTSL, the current character expansion 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.
*** *** Character spacing: effect during traversal *** ***#F 39
SR32. Upon traversal of a "set character spacing" element, the current character spacing entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 269
SR33. Character spacing specifies the TLC distance (positive) or overlap (negative) between adjacent character bodies, expressed in units of the font nominal annotation text character height.
#F 39
SR34. When an annotation text relative primitive is displayed and its bound character spacing ASF is INDIVIDUAL, then the bound character spacing is used when displaying the annotation text relative.
*** *** Character spacing: network traversal *** ***#F
SR35. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current character spacing of the PTSL is set to 0.0.
#F 113
SR36. As part of the PTSL, the current character spacing 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.
*** Text colour index: effect during traversal ***#F 40
SR37. Upon traversal of a "set text colour index" element, the current text colour index entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 40
SR38. When annotation text relative is displayed, if its bound text colour index is defined on the workstation and its bound text colour index ASF is INDIVIDUAL, then the text colour index is realized as itself.
#F 40
SR39. When annotation text relative is displayed, if its bound text colour index is not defined on the workstation and its bound text colour index ASF is INDIVIDUAL, then the text colour index is realized as number 1.
*** Text colour index: network traversal ***#F
SR40. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current text colour index of the PTSL is set to 1.
#F 113
SR41. As part of the PTSL, the current text 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.
*** Annotation text character height: element creation ***#F 45
SR42. <Set annotation text character height> creates a "set annotation text character height" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Annotation text Character Height Support *** ***#F 268
SR43. <Inquire annotation facilities> describes the realizable annotation text character heights for a specified workstation type, via the number of available character heights, minimum character height and maximum character height.
#F 268
SR44. The minimum and maximum annotation text character height are both positive.
#F 268
SR45. All workstation types support at least one annotation text character height for STRING and CHAR precisions.
#F 268
SR46. The range of character heights returned by <Inquire annotation facilities> is for font 1.
#F 268
SR47. The workstation supports a continuous range of character heights for CHAR and STRING precision, if the number of available character heights is 0.
*** Annotation text character height: effect during traversal ***#F 45
SR48. Upon traversal of a "set annotation text character height" element, the current annotation text character height entry in the PHIGS traversal state list (PTSL) is set to magnitude of the element's associated value.
#F 269
SR49. The magnitude of the annotation text character height attribute specifies, in TLC, the font nominal height (from baseline to capline) of a capital letter.
#F
SR50. The font nominal width in TLC of a character within an annotation text relative primitive is given by the font's intrinsic width to height ratio for that character times the magnitude of the annotation text character height.
#F 45
SR51. The requested DC annotation text character height for a character within a displayed annotation text relative string equals the TLC character height as transformed by the workstation transformation.
#F 45 266
SR52. When an annotation text relative primitive is displayed, the actual DC annotation text character height is the nearest available to the requested DC annotation text character height resulting from its TLC bound annotation text character height (after undergoing the workstation transformation).
*** Annotation text character height: 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 annotation text character height and width of the PTSL are set to 0.01.
#F 113
SR54. As part of the PTSL, the current annotation text character height and width 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.
*** *** Annotation text path: element creation *** ***#F 47
SR55. <Set annotation text path> creates a "set annotation text path" element (in the open structure), whose associated value is taken from the function's parameter.
#F 47
SR56. The valid values for annotation text path in <set annotation text path> are RIGHT, LEFT, UP, and DOWN.
*** Annotation text path: effect during traversal ***#F 47
SR57. Upon traversal of a "set annotation text path" element, the current annotation text path entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 47
SR58. The annotation text path specifies the writing direction within the TLC x-y plane for the annotation text relative string before application of the annotation text character up vector attribute (i.e. the direction in which successive characters are appended) as follows: RIGHT: positive x-axis, LEFT: negative x-axis, UP: positive y-axis, DOWN: negative x-axis.
#F 47
SR59. For vertical annotation text paths (UP or DOWN), the centrelines of the character bodies are aligned vertically within the annotation text relative string before application of the annotation text character up vector attribute.
#F 47
SR60. For horizontal annotation text paths (LEFT or RIGHT), the baselines of the character bodies are aligned horizontally within the annotation text relative string before application of the annotation text character up vector attribute.
*** *** Annotation text path: network traversal *** ***#F
SR61. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current annotation text path of the PTSL is set to RIGHT.
#F 113
SR62. As part of the PTSL, the current annotation text path 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.
*** *** Annotation text alignment: element creation *** ***#F 48
SR63. <Set annotation text alignment> creates a "set annotation text alignment" element (in the open structure), whose associated value is taken from the function's parameter.
#F 48
SR64. The valid values in <set annotation text alignment> for horizontal annotation text alignment are NORMAL, LEFT, CENTRE, and RIGHT; for vertical annotation text alignment, NORMAL, TOP, CAP, HALF, BASE, and BOTTOM.
*** Annotation text alignment: effect during traversal ***#F 48
SR65. Upon traversal of a "set annotation text alignment" element, the current annotation text alignment entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 48
SR66. The annotation text alignment specifies which horizontal and vertical location within the annotation text relative rectangle is to coincide with the TLC origin by shifting the rectangle within the annotation text relative plane. For all annotation text paths, alignments LEFT, RIGHT, BOTTOM, and TOP refer to the left, right, bottom, and top edges of the rectangle, and CENTRE refers to the horizontal location midway between the left and right edges. For horizontal annotation text paths, CAP, HALF, and BASE refer to the capline, halfline, and baseline of the whole annotation text relative string. For vertical annotation text paths, CAP refers to the capline of the topmost character, BASE refers to the baseline of the bottommost character, and HALF refers to the vertical location midway between the halflines of the topmost and bottommost characters.
#F 48
SR67. The effect of NORMAL as the horizontal or vertical component of annotation text alignment is equivalent to one of the other defined values for annotation text alignment and depends on annotation text path as follows: annotation text path | (horizontal, vertical) ----------------------+------------------------ RIGHT | (LEFT, BASE) LEFT | (RIGHT, BASE) UP | (CENTRE, BASE) DOWN | (CENTRE, TOP)
*** Annotation text alignment: network traversal ***#F
SR68. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current annotation text alignment of the PTSL is set to (NORMAL, NORMAL).
#F 113
SR69. As part of the PTSL, the current annotation text alignment 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.
*** Annotation text character up vector: element creation ***#F 46
SR70. <Set annotation text character up vector> creates a "set annotation text character up vector" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** *** Annotation text character up vector: *** *** *** *** *** *** effect during traversal *** *** ***#F 46
SR71. Upon traversal of a "set annotation text character up vector" element, the current annotation text character up vector entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 46
SR72. The annotation text character up vector aspect (specified in TLC) causes the annotation text relative rectangle that has been formed in the annotation text relative plane by application of text font, annotation text character height, character expansion factor, character spacing, annotation text path, and annotation text alignment to be rotated within the text plane about the TLC origin such that the up direction of the characters is the same as that of the vector.
*** Annotation text character up vector: network traversal ***#F
SR73. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current annotation text character up vector of the PTSL is set to (0,1).
#F 113
SR74. As part of the PTSL, the current annotation text character up vector 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.
*** *** *** Annotation style: element creation *** *** ***#F 49
SR75. <Set annotation style> creates a "set annotation style" element (in the open structure), whose associated value is taken from the function's parameter.
*** *** Annotation style: effect during traversal *** ***#F 49
SR76. Upon traversal of a "set annotation style" element, the current annotation style entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 268
SR77. The list of available annotation styles returned by <inquire annotation facilities> includes styles number 1 and 2 for all workstation types.
#F 49 268
SR78. When an annotation text relative is displayed, if its bound annotation style is available on the workstation, then the appearance of the annotation style agrees with the documented specifications.
#F 49 268
SR79. When an annotation text relative is displayed, if its bound annotation style is not available on the workstation, then annotation style 1 (unconnected) is used to display the annotation text relative.
#F 49 268
SR80. Annotation style #1 adds no visual effect to the appearance of the annotation text relative primitive itself; annotation style #2 causes a polyline to be drawn between the annotation point and the reference point, using the current polyline attributes.
#F 49 268
SR81. When available on the workstation to which posted, annotation styles greater than 2 appear as specified in the ISO register.
#F 49 268
SR82. When available on the workstation to which posted, annotation styles less than 1 appear as specified in the implementor documentation.
*** *** Annotation style: network traversal *** ***#F
SR83. At the start of the top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current annotation style of the PTSL is set to 1.
#F 113
SR84. As part of the PTSL, the current annotation 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.
LOCAL DICTIONARY:
Functions --- 015: patr3 <annotation text relative 3> 016: patr <annotation text relative> 036: pstxfn <set text font> 037: pstxpr <set text precision> 038: pschxp <set character expansion factor> 039: pschsp <set character spacing> 040: pstxci <set text colour index> 045: psatch <set annotation text character height> 046: psatcu <set annotation text character up vector> 047: psatp <set annotation text path> 048: psatal <set annotation text alignment> 049: psans <set annotation style> 113: pexst <execute structure> 266: pqtxf <inquire text facilities> 268: pqanf <inquire annotation facilities> 269: pqtxx <inquire text extent> 303: pqcets <inquire current element type and size> 304: pqceco <inquire current element content> Data Structures --- 2 ... phigs_description_table 2.2 ... list_of_available_workstation_types 2.7 ... list_of_available_character_sets 2.12 ... default_text_attributes 2.12.2 ... default_text_font 2.12.3 ... default_text_precision 2.12.4 ... default_character_expansion_factor 2.12.5 ... default_character_spacing 2.12.6 ... default_text_colour_index 2.13 ... default_annotation_text_attributes 2.13.1 ... default_annotation_text_character_height 2.13.2 ... default_annotation_text_character_up_vector 2.13.5 ... default_annotation_text_path 2.13.6 ... default_annotation_text_alignment_horizontal 2.13.7 ... default_annotation_text_alignment_vertical 2.13.8 ... default_annotation_style 3 ... phigs_traversal_state_list 3.3 ... current_text_attributes 3.3.2 ... current_text_font 3.3.3 ... current_text_precision 3.3.4 ... current_character_expansion_factor 3.3.5 ... current_character_spacing 3.3.6 ... current_text_colour_index 3.3.7 ... current_text_font_asf 3.3.8 ... current_text_precision_asf 3.3.9 ... current_character_expansion_factor_asf 3.3.10 ... current_character_spacing_asf 3.3.11 ... current_text_colour_index_asf 3.4 ... current_annotation_text_attributes 3.4.1 ... current_annotation_text_character_height 3.4.2 ... current_annotation_text_character_up_vector 3.4.5 ... current_annotation_text_path 3.4.6 ... current_annotation_text_alignment_horizontal 3.4.7 ... current_annotation_text_alignment_vertical 3.4.8 ... current_annotation_style 5 ... workstation_state_list 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.12 ... text_entry 6.12.1 ... text_facilities 6.12.1.1 ... number_of_text_font_and_precision_pairs 6.12.1.2 ... list_of_text_font_and_precision_pairs 6.12.1.6 ... number_of_available_character_expansion_factors 6.12.1.7 ... minimum_character_expansion_factor 6.12.1.8 ... maximum_character_expansion_factor 6.13 ... annotation_entry 6.13.1 ... annotation_facilities 6.13.1.1 ... number_of_available_annotation_text_character_heights 6.13.1.2 ... minimum_annotation_text_character_height 6.13.1.3 ... maximum_annotation_text_character_height 6.13.1.4 ... number_of_available_annotation_styles 6.13.1.5 ... list_of_available_annotation_styles 7 ... structure_state_list 7.3 ... list_of_structure_elements 7.3.1 ... graphical_primitives 7.3.1.7 ... annotation_text_relative_3 7.3.1.8 ... annotation_text_relative 7.3.2 ... primitive_attributes 7.3.2.4 ... text_attributes 7.3.2.4.1 ... text_font 7.3.2.4.2 ... text_precision 7.3.2.4.3 ... character_expansion_factor 7.3.2.4.4 ... character_spacing 7.3.2.4.5 ... text_colour_index 7.3.2.5 ... annotation_text_attributes 7.3.2.5.1 ... annotation_text_character_height 7.3.2.5.2 ... annotation_text_character_up_vector 7.3.2.5.3 ... annotation_text_path 7.3.2.5.4 ... annotation_text_alignment 7.3.2.5.5 ... annotation_style SEMANTIC CROSS-REFERENCES: 04.01.04/SR07 04.01.04/SR08 LOCAL SUBROUTINES: LOCATX draws an annotation text primitive at the real y-location corresponding to the integer index given in YLOC. LOCAT2 draws an annotation text string at the real y-location corresponding to the integer index given in YLOC, and puts a polymarker at the text position. LOCANS draws an annotation text primitive with a distinct annotation point and reference point, at the real y-location corresponding to the integer index given in YLOC. TSANUP draws an annotation text string with various values for character up and for annotation text alignment. The annotation text strings are displayed along radii of a circle and are enclosed by a text extent rectangle (except for one which is deliberately drawn incorrectly). TSANUP assumes that default character height has been set to 1.0. DSANST accepts a list of annotation styles and displays at most eight (8) of them.
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.
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.
You may inspect either the design or code for this program.