Module #04.02.01.02 : Polyline - workstation support

All PVT documentation can be found under PHIGS Validation Tests - Overview. You may also return to the hierarchical table of topics covered by the PVT. For an explanation of the format of the individual module documentation, please see section 2.5 of the User's Guide.


DESCRIPTION:  This module tests the bundled entries and other
workstation facilities for polyline. These entries control the
appearance of polylines when they are under bundled (as opposed
to individual) control.

SEMANTIC REQUIREMENTS:

*** *** *** ***   Polyline index inquiry   *** *** *** ***


SR1. If current element is polyline index then <inquire current element type and size> returns the element type as polyline index and the appropriate element size.
#F 303
#D 7.3.2.1.1
#S 4.4.4/29/5
#T P01/1

SR2. If current element is polyline index then <inquire current element content> returns the appropriate data for polyline index.
#F 304
#D 7.3.2.1.1
#S 4.4.4/29/5
#T P01/2
*** *** ***   Polyline index traversal binding   *** *** ***


SR3. Upon traversal of a "polyline" or "polyline 3" element, the current polyline index in the PTSL is bound to the resulting primitive.
#F 25
#D 3.1.1 7.3.1.1 7.3.1.2
#S 4.5.2/38/3 4.5.2/40/3
#T P09/1 P09/2 P09/3 P10/1 P10/2 P11/1 P11/2 P11/3 P11/4 P11/5 P11/6
#T P11/7 P11/8 P11/9 P12/1
*** *** ***   Polyline index: element creation   *** *** ***


SR4. <Set polyline index> creates a "set polyline index" element, (in the open structure), whose associated value is taken from the function's parameter.
#F 25
#D 7.3.2.1.1
#S 4.4.1/23/1 4.5.2/38/3
#T P01/1 P01/2 P10/1 P10/2 P11/1 P11/2 P11/3 P11/4 P11/5 P11/6 P11/7
#T P11/8 P11/9
*** ***   Polyline index: effect during traversal   *** ***


SR5. Upon traversal of a "set polyline index" element, the current polyline index entry in the PHIGS traversal state list (PTSL) is set to the element's associated value.
#F 25
#D 3.1.1 7.3.2.1.1
#S 4.4.1/23/1 4.5.2/38/3
#T P10/1 P10/2 P11/1 P11/2 P11/3 P11/4 P11/5 P11/6 P11/7 P11/8 P11/9
#T P12/1

SR6. When a polyline is displayed, if its bound polyline index is defined on the workstation, then the indicated bundle is the source for the bundled aspects of that polyline.
#F 25
#D 3.1.1 5.9.1 5.9.2
#S 4.5.2/38/7 4.5.2/39/7 4.5.3/43/4
#T P09/1 P09/2 P09/3 P10/1 P11/1 P11/2 P11/3 P11/4 P11/5 P11/6 P11/7
#T P11/8 P11/9 P12/1

SR7. When a polyline is displayed, if its bound polyline index is undefined on the workstation, then bundle number 1 in the polyline bundle table is the source for the bundled aspects of that polyline.
#F 25
#D 3.1.1 5.9.1 5.9.2
#S 4.5.2/38/7 4.5.2/39/7 4.5.2/43/3 4.5.3/43/4
#T P10/2
*** *** ***   Polyline index: network traversal   *** *** ***


SR8. At the start of a top-level traversal of a structure network (not a sub-traversal caused by execute structure), the current polyline index of the PTSL is set to 1.
#F
#D 2.10.1 3.1.1
#S 4.4.3/26/2 4.4.3/28/1 6.3/309/1
#T P12/1

SR9. As part of the PTSL, the current polyline 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.
#F 113
#D 3.1.1
#S 4.4.3/28/1
#T P12/1
*** *** ***   Polyline Representation   *** *** ***


SR10. <Set polyline representation> causes an entry to be defined.
#F 63
#D 5.9.1 5.9.2.1
#S 4.5.2/42/3 4.5.2/43/2
#T P02/2 P02/3 P02/6 P02/7 P02/9 P02/10

SR11. <Set polyline representation> sets the polyline bundle's linetype, linewidth scale factor, and colour index.
#F 63
#D 5.9.2
#S 4.5.2/43/2 4.5.2/42/3
#T P01/3 P02/4 P02/8 P02/11 P07/5 P07/6 P07/7 P07/8 P07/9 P07/10

SR12. <Inquire list of polyline indices> returns the list of all defined polyline indices.
#F 222
#D 5.9.1 5.9.2.1
#S
#T P02/1 P02/2 P02/3 P02/5 P02/6 P02/7 P02/9 P02/10 P02/12

SR13. <Inquire polyline representation> works for all defined entries.
#F 222 223
#D 5.9.1 5.9.2.1
#S
#T P02/12

SR14. <Inquire polyline representation> returns the polyline bundle's linetype, linewidth scale factor, and colour index as set, when type of returned values specified as SET.
#F 223
#D 5.9.2
#S 4.11/108/1
#T P01/3 P02/4 P02/8 P02/11

SR15. <Inquire polyline representation> returns the polyline bundle's linetype, linewidth scale factor, and colour index as realized, when type of returned values specified as REALIZED.
#F 223
#D 5.9.2
#S 4.11/108/1
#T P02/5 P04/5 P06/5 P07/5 P07/6 P07/7 P07/8 P07/9 P07/10 P08/1 P08/3

SR16. <Inquire polyline representation> returns representation for bundle number 1, if type of returned values is REALIZED, and bundle index is undefined.
#F 222 223
#D 5.9.2
#S
#T P02/5
*** *** ***   Maximum size of bundle table   *** *** ***


SR17. <Inquire workstation state table lengths> returns the maximum size of polyline bundle table.
#F 285
#D 6.21.1
#S
#T P03/1 P03/2

SR18. There must be at least 20 settable entries available in the polyline bundle table.
#F 63 285
#D 5.9 6.21.1
#S 4.14/114/2 6.7/324/1
#T P03/1
*** *** ***   Predefined bundle facilities   *** *** ***


SR19. <Inquire polyline facilities> returns the number of predefined polyline bundle entries.
#F 262
#D 6.10.1.7
#S
#T P04/1 P04/6

SR20. <Inquire predefined polyline representation> returns the linetype, linewidth scale factor, and polyline colour index for a predefined polyline bundle.
#F 263
#D 6.10.2
#S
#T P04/1 P04/2 P04/3 P04/4 P04/7 P05/2 P09/1 P09/2 P09/3

SR21. Every workstation must have at least 5 predefined polyline bundles.
#F 262 263
#D 6.10.1.7 6.10.2
#S 4.14/113/3 4.14/114/2 6.7/321/1
#T P04/6

SR22. No two of the first 5 predefined polyline bundles have identical sets of attributes.
#F 263
#D 6.10.2
#S 4.5.2/42/3 4.14/113/3 4.14/114/2 6.7/321/1
#T P04/7

SR23. The n predefined polyline bundles in the Workstation Description Table (WDT) are indexed as 1-n.
#F 263
#D 6.10.2
#S 6.7/321/1
#T P04/1 P05/2 #C The standard presumes this because in section 6.7 the predefined
bundles in the WDT do not mention index as a data item, nor is there a
way to get a list of these indices (<inquire polyline facilities> gives
the number of predefined bundles, but not a list thereof).

SR24. Immediately after <open workstation>, for each WDT predefined polyline entry there exists a Workstation State List (WSL) polyline entry with the same attributes, including the same polyline index.
#F 222 223 263 3
#D 5.9.2 6.10.2
#S 4.5.2/42/3 6.6/317/1 6.7/321/1
#T P05/1 P05/2 P09/1 P09/2

SR25. Immediately after <open workstation>, the polyline bundle table contains nothing but the entries initialized from the WDT predefined polyline bundle table.
#F 222 223 262 3
#D 5.9.2 6.10.2
#S 4.5.2/42/3 6.6/317/1 6.7/321/1
#T P05/1
*** *** ***   Validity of predefined bundles   *** *** ***


SR26. Each predefined polyline bundle has a linetype within the list of available linetypes.
#F 262 263
#D 6.10.1.2 6.10.2.1
#S 5.12.1/232/2
#T P04/2 P04/5

SR27. Each predefined polyline bundle has a linewidth scale factor which generates a linewidth within the minimum and maximum linewidths.
#F 262 263
#D 6.10.1.4 6.10.1.5 6.10.1.6 6.10.2.2
#S 5.12.1/232/2
#T P04/3 P04/5

SR28. Each predefined polyline bundle has a colour index within range of the predefined colour indices.
#F 263 277
#D 6.10.2.3 6.17.2.4
#S 6.7/321/1
#T P04/4 P04/5
*** *** ***   linetype support   *** *** ***


SR29. The absolute value of the number of available linetypes returned from <inquire polyline facilities> indicates the length of the list of available linetypes.
#F 262
#D 6.10.1.1 6.10.1.2
#S 6.7/321/1
#T P06/1

SR30. The list of available linetypes contains all registered types, and includes 1-4.
#F 262
#D 6.10.1.2
#S 4.5.3/43/5 4.14/113/3 4.14/114/2 6.7/321/1
#T P06/2

SR31. If the number of available linetypes is positive, the list of available linetypes contains any implementation-dependent types.
#F 262
#D 6.10.1.1 6.10.1.2
#S
#T P06/3

SR32. If the number of available linetypes is negative, the list of available linetypes does not contain any implementation dependent types.
#F 262
#D 6.10.1.1 6.10.1.2
#S
#T P06/4

SR33. All the linetypes in the list of available linetypes are valid and realizable for the workstation.
#F 63 262
#D 5.9.2.2 6.10.1.1 6.10.1.2
#S
#T P06/5

SR34. Positive linetypes are standard or registered; non-positive linetypes are implementation-dependent.
#F 63 262
#D 5.9.2.2 6.10.1.2
#S 4.5.3/43/5
#T P06/3 P06/4

SR35. When a polyline is displayed, if its linetype ASF is bundled, then its linetype aspect is taken from the polyline bundle determined by the polyline index.
#F 25 62 63
#D 3.1.1 3.1.5 5.9.2.1 5.9.2.2
#S 4.5.2/39/7 4.5.3/43/4
#T P11/1 P11/2 P11/3

SR36. When available on the workstation to which posted, linetypes 1 through 4 appear as solid, dashed, dotted, and dashed-dotted lines, respectively.
#F
#D 6.10.1.1 6.10.1.2
#S 4.5.3/43/5
#T P11/1

SR37. When available on the workstation to which posted, linetypes greater than 4 appear as specified in the ISO register.
#F
#D 6.10.1.1 6.10.1.2
#S 4.1.2/15/2 4.5.3/43/5
#T P11/2

SR38. When available on the workstation to which posted, linetypes less than 1 appear as specified in the implementor documentation.
#F
#D 6.10.1.1 6.10.1.2
#S 4.1.1/15/1 4.5.3/43/5
#T P11/3
*** *** ***   linewidth scale factor support   *** *** ***


SR39. <Inquire polyline facilities> describes the realizable linewidths for a workstation type, via the number of available linewidths, nominal linewidth, minimum linewidth, and maximum linewidth.
#F 262
#D 6.10.1.3 6.10.1.4 6.10.1.5 6.10.1.6
#S
#T P07/1 P07/5 P07/6 P07/7 P07/8 P07/9 P07/10

SR40. The nominal linewidth, minimum linewidth, and maximum linewidth are all positive.
#F 262
#D 6.10.1.4 6.10.1.5 6.10.1.6
#S 6.7/321/1
#T P07/2

SR41. Workstations must support at least one linewidth.
#F 63 262
#D 5.9.2.3 6.10.1.3 6.10.1.4 6.10.1.5 6.10.1.6
#S 4.14/114/2 6.7/321/1
#T P07/3

SR42. Any linewidth scale factor, whether or not resulting in a valid linewidth for that workstation, may be specified for a polyline bundle when invoking <set polyline representation>.
#F 63
#D 5.9.2.3
#S
#T P07/4 P11/4 P11/5 P11/6 P11/7

SR43. When a polyline is displayed, if its linewidth scale factor ASF is bundled, then its logical linewidth is equal to the linewidth scale factor determined by the polyline index times the workstation's nominal linewidth.
#F 25 62 63
#D 3.1.1 3.1.6 5.9.2.1 5.9.2.3
#S 4.5.2/39/7 4.5.3/43/4
#T P11/4 P11/5 P11/6 P11/7

SR44. When a polyline is displayed, if its logical linewidth is available on the workstation, then the actual linewidth agrees with the logical linewidth.
#F 25 62 63
#D 5.9.2.1 5.9.2.3 6.10.1.3 6.10.1.4 6.10.1.5 6.10.1.6
#S 4.5.2/39/7 4.5.3/43/4 4.5.3/43/6
#T P11/4

SR45. When a polyline is displayed, if its logical linewidth is not available on the workstation, then the actual linewidth is the nearest available to the logical linewidth.
#F 25 62 63
#D 5.9.2.1 5.9.2.3 6.10.1.3 6.10.1.4 6.10.1.5 6.10.1.6
#S 4.5.2/39/7 4.5.3/43/4 4.5.3/43/6
#T P11/5 P11/6 P11/7

*** *** ***   polyline colour index support   *** *** ***


SR46. Any non-negative polyline colour index, whether or not defined for that workstation, may be specified for a polyline bundle when invoking <set polyline representation>.
#F 63
#D 5.9.2.4
#S
#T P08/2 P11/8 P11/9

SR47. When a polyline is displayed, if its polyline colour index ASF is bundled, then its polyline colour index is taken from the polyline bundle determined by the polyline index.
#F 25 62 63
#D 3.1.1 3.1.7 5.9.2.1 5.9.2.4
#S 4.5.2/39/7 4.5.3/43/4
#T P08/1 P08/3 P11/8 P11/9

SR48. When a polyline is displayed, if its polyline colour index is available on the workstation, then the polyline colour index is realized as itself.
#F 223 235
#D 5.9.2.1 5.9.2.4 5.15.3
#S 4.5.2/39/7 4.5.2/43/3 4.5.3/43/4 4.5.12/63/4
#T P08/1 P11/8

SR49. When a polyline is displayed, if its polyline colour index is undefined, then the polyline colour index is realized as colour index 1.
#F 223 235
#D 5.9.2.1 5.9.2.4 5.15.3
#S 4.5.2/39/7 4.5.2/43/3 4.5.3/43/4 4.5.12/63/4
#T P08/3 P11/9

LOCAL DICTIONARY:

  Functions ---
  003: popwk   <open workstation>
  025: pspli   <set polyline index>
  062: psiasf  <set individual asf>
  063: psplr   <set polyline representation>
  113: pexst   <execute structure>
  222: pqepli  <inquire list of polyline indices>
  223: pqplr   <inquire polyline representation>
  235: pqeci   <inquire list of colour indices>
  262: pqplf   <inquire polyline facilities>
  263: pqpplr  <inquire predefined polyline representation>
  277: pqcf    <inquire colour facilities>
  285: pqwksl  <inquire workstation state table lengths>
  303: pqcets  <inquire current element type and size>
  304: pqceco  <inquire current element content>
 
  Data Structures ---
  2  ...  phigs_description_table
  2.10 ...  default_polyline_attributes
  2.10.1  ...  default_polyline_index
  3  ...  phigs_traversal_state_list
  3.1  ...  current_polyline_attributes
  3.1.1  ...  current_polyline_index
  3.1.5  ...  current_linetype_asf
  3.1.6  ...  current_linewidth_scale_factor_asf
  3.1.7  ...  current_polyline_colour_index_asf
  5  ...  workstation_state_list
  5.9  ...  polyline_entry
  5.9.1  ...  number_of_polyline_bundle_table_entries
  5.9.2  ...  polyline_bundle_table
  5.9.2.1  ...  polyline_index
  5.9.2.2  ...  linetype
  5.9.2.3  ...  linewidth_scale_factor
  5.9.2.4  ...  polyline_colour_index
  5.15  ...  colour_entry
  5.15.3  ...  colour_table
  6  ...  workstation_description_table
  6.10 ...  polyline_entry
  6.10.1  ...  polyline_facilities
  6.10.1.1  ...  number_of_available_linetypes
  6.10.1.2  ...  list_of_available_linetypes
  6.10.1.3  ...  number_of_available_linewidths
  6.10.1.4  ...  nominal_linewidth
  6.10.1.5  ...  minimum_linewidth
  6.10.1.6  ...  maximum_linewidth
  6.10.1.7  ...  number_of_predefined_polyline_indices
  6.10.2  ...  predefined_polyline_bundle_table
  6.10.2.1  ...  linetype
  6.10.2.2  ...  linewidth_scale_factor
  6.10.2.3  ...  polyline_colour_index
  6.17  ...  colour_entry
  6.17.2  ...  colour_facilities
  6.17.2.4  ...  number_of_predefined_colour_indices
  6.21  ...  maximum_table_lengths
  6.21.1  ...  maximum_number_of_polyline_bundle_table_entries
  7  ...  structure_state_list
  7.3  ...  list_of_structure_elements
  7.3.1  ...  graphical_primitives
  7.3.1.1  ...  polyline_3
  7.3.1.2  ...  polyline
  7.3.2  ...  primitive_attributes
  7.3.2.1  ...  bundle_index_attributes
  7.3.2.1.1  ...  polyline_index
 
LOCAL SUBROUTINES:

DISPLB selects a specified number of predefined bundles at random
from the polyline bundle table which are distinct in all their
attributes. If there are not enough completely distinct bundles,
DISPLB tries to maximize the number of different attributes.

DRWPLB draws a set of actual polylines using the specified bundle
values, and a set of expected polylines, using the attribute
values returned by <inquire predefined polyline representation>.
It draws the expected polyline incorrectly at a specified
position.

SHPLBW tests the rendering of a given linewidth, and returns the
pass/fail result.



PROGRAM 1: Simple setting and inquiring

You may inspect either the design or code for this program.


PROGRAM 2: Setting entries of various kinds

You may inspect either the design or code for this program.


PROGRAM 3: Polyline bundle table length

You may inspect either the design or code for this program.


PROGRAM 4: Validity of predefined polyline bundles

You may inspect either the design or code for this program.


PROGRAM 5: WSL polyline bundles initialized properly

You may inspect either the design or code for this program.


PROGRAM 6: Linetype facilities

You may inspect either the design or code for this program.


PROGRAM 7: Linewidth facilities

You may inspect either the design or code for this program.


PROGRAM 8: Polyline color index

You may inspect either the design or code for this program.


PROGRAM 9: Appearance of predefined polyline bundles

You may inspect either the design or code for this program.


PROGRAM 10: Polyline bundle index

You may inspect either the design or code for this program.


PROGRAM 11: Appearance of bundled attributes

You may inspect either the design or code for this program.


PROGRAM 12: Network inheritance and initialization of polyline index

You may inspect either the design or code for this program.

End of documentation for 04.02.01.02