Integrated generic resource: Visual presentation ISO 10303-46:2021(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Presentation organization
   4.1 General
   4.2 Fundamental concepts and assumptions
   4.3 Presentation organization type definitions
   4.4 Presentation organization entity definitions
   4.5 Presentation organization subtype constraint definition
   4.6 Presentation organization function definitions
   4.7 Presentation organization rule definitions
5 Presentation definition
   5.1 General
   5.2 Fundamental concepts and assumptions
   5.3 Presentation definition type definitions
   5.4 Presentation definition entity definitions
   5.5 Presentation definition subtype constraint definition
   5.6 Presentation definition function definitions
6 Presentation appearance
   6.1 General
   6.2 Fundamental concepts and assumptions
   6.3 Presentation appearance type definitions
   6.4 Presentation appearance entity definitions
   6.5 Presentation appearance subtype constraint definitions
   6.6 Presentation appearance function definitions
7 Presentation resource
   7.1 General
   7.2 Fundamental concepts and assumptions
   7.3 Presentation resource type definitions
   7.4 Presentation resource entity definitions
   7.5 Presentation resource subtype constraint definition

A Short names of entities
B Information object registration
C Computer interpretable listings
D EXPRESS-G diagrams
E Technical discussion
F Change history
Bibliography
Index

6 Presentation appearance schema

6.1 General

The subject of the presentation_appearance_schema is the specification of the intended graphical appearance of a presented picture. The presentation_appearance_schema also defines the mechanism which allows the appropriate association of these appearance attributes with annotation_occurrences in the context of a presentation_representation. Thus, the context of the presentation_representation can be used to determine the appearance of different kinds of elements in the picture.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the presentation_appearance_schema and identifies the necessary external references.

Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.

EXPRESS specification:

*)
SCHEMA presentation_appearance_schema;

REFERENCE FROM external_reference_schema    --  ISO 10303-41
  (externally_defined_item,
   pre_defined_item);

REFERENCE FROM geometric_model_schema    --  ISO 10303-42
  (complex_triangulated_face,
   coordinates_list,
   tessellated_edge,
   tessellated_face,
   tessellated_item,
   tessellated_shell,
   tessellated_solid,
   tessellated_surface_set,
   tessellated_vertex,
   triangulated_face);

REFERENCE FROM geometry_schema    --  ISO 10303-42
  (axis2_placement,
   b_spline_curve,
   cartesian_point,
   composite_curve,
   curve,
   geometric_representation_item,
   point,
   polyline,
   vector);

REFERENCE FROM group_schema    --  ISO 10303-41
  (group);

REFERENCE FROM measure_schema    --  ISO 10303-41
  (descriptive_measure,
   length_measure,
   measure_with_unit,
   plane_angle_measure,
   positive_length_measure,
   positive_ratio_measure,
   ratio_measure);

REFERENCE FROM presentation_definition_schema    --  ISO 10303-46
  (annotation_curve_occurrence,
   annotation_fill_area,
   annotation_symbol_occurrence,
   annotation_text_with_delineation,
   symbol_representation_with_blanking_box);

REFERENCE FROM presentation_organization_schema    --  ISO 10303-46
  (area_dependent_annotation_representation,
   presentation_area,
   presentation_layer_assignment,
   presentation_layer_usage,
   presentation_representation,
   presentation_set,
   presentation_view,
   product_data_representation_view,
   view_dependent_annotation_representation);

REFERENCE FROM presentation_resource_schema    --  ISO 10303-46
  (character_glyph_symbol_outline,
   character_glyph_symbol_stroke,
   colour);

REFERENCE FROM product_property_representation_schema    --  ISO 10303-41
  (context_dependent_shape_representation);

REFERENCE FROM representation_schema    --  ISO 10303-43
  (founded_item,
   mapped_item,
   representation,
   representation_item,
   representation_map,
   representation_or_representation_reference,
   representation_relationship,
   using_representations);

REFERENCE FROM support_resource_schema    --  ISO 10303-41
  (bag_to_set,
   label);

REFERENCE FROM topology_schema    --  ISO 10303-42
  (topological_representation_item);
(*

NOTE 1   The schemas referenced above are specified in the following parts:

external_reference_schema ISO 10303-41
geometric_model_schema ISO 10303-42
geometry_schema ISO 10303-42
group_schema ISO 10303-41
measure_schema ISO 10303-41
presentation_definition_schema ISO 10303-46
presentation_organization_schema ISO 10303-46
presentation_resource_schema ISO 10303-46
product_property_representation_schema ISO 10303-41
representation_schema ISO 10303-43
support_resource_schema ISO 10303-41
topology_schema ISO 10303-42

NOTE 2   See Annex D for a graphical representation of this schema.

6.2 Fundamental concepts and assumptions

Assignment of presentation style

The presentation_appearance_schema allows the association of appearance attributes with selected annotation primitives and with product shape elements. In this part of ISO 10303, presentation style can be assigned to any representation_item. A style assignment is made by instantiating a styled_item which refers to a representation_item together with its presentation_style_assignment. A presentation_style_assignment itself is a collection of different presentation styles such as point style, curve style, or text style. Styling an unstyled representation_item produces a new representation_item which has presentation style assigned. The presentation_style_assignment of a styled_item affects the appearance of the referenced representation_item as well as the appearance of all representation_items referenced directly or indirectly by that item. Only those representation_items are affected which are not already styled. This means styling a styled representation_item has no effect, styling a partially styled representation_item affects only the appearance of the unstyled parts, and styling an unstyled representation_item affects the appearance of the whole item. Only styled representation_items may be presented. Whether they are actually presented depends on several other facts, like layer invisibility and invisibility, hidden line and surface removal, as well as clipping. This part of ISO 10303 does not make any statement about the effect if style conflicts occurs. A style conflict occurs, for example, when a representation_item is used by several styled_items.

A presentation_style_assignment is used to assign style to a representation_item independently from any presentation context. A subtype of presentation_style_assignment, the presentation_style_by_context, allows the assignment of style for a specific presentation context. A presentation context can be any presentation_set, representation, or representation_item. In the last case, a style can be assigned to an item as a whole, and a different style can be assigned to a part of that item.

A style assignment can be over-ridden by an over_riding_styled_item. A subtype of over_riding_styled_item, the context_dependent_over_riding_styled_item, allows the over-riding of a style for a specific presentation context.

Types of presentation styles

For each annotation primitive defined in the presentation_definition_schema, a special group of styles exist. These groups are point styles, curve styles, fill area styles, surface styles, text styles, and symbol styles. This part of ISO 10303 does not restrict style assignment to product shape elements. For example, it allows the assignment of surface style to a point. However, only appropriate styles affect the appearance of the product shape element; i.e., surface styles only affect surfaces, fill area styles and curve styles only affect curves, and point styles only affect points, curves, and surfaces. For high-level product shape elements such as solid models, the using Application Protocol has to specify which styles affect the appearance of these elements. Nevertheless, the style assignment for annotation primitives is more restrictive. Details on these restrictions can be found in clause 5 subtypes of annotation_occurrence.

Presentation styles can be specified using the resources of this schema, can be externally defined, or can be pre-defined by Application Protocols. The presentation styles defined in this schema include the following.

Point styles provide the resources to specify the visual appearance of points. They allow the specification of the marker symbol, marker size, and colour to be used for presenting points. Point styles can be specified by the entity point_style.

Curve styles provide the resources to specify the visual appearance of curves. They allow the specification of curve fonts, curve width, appearance of curve ends and corners, colour, or patterns for filling visible curve segments. A curve font specifies whether a curve shall be drawn using solid, dashed, or dotted lines. The presentation_appearance_schema allows the specification of arbitrary patterns for curve fonts and the usage of externally defined or pre-defined curve fonts. The entities used for the definition of curve fonts are externally_defined_curve_font, pre_defined_curve_font, curve_style_font, curve_style_font_pattern, and curve_style_font_and_scaling. The curve width can be specified as measure or pre-defined size. Curve ends and corners may be drawn squared or rounded, and extension or shortage can be specified for curve ends. The entities supporting this structure are curve_style_with_ends_and_corners and curve_style_with_extension. A curve_style_wide allows the specification of a fill area style which is used for filling visible curve segments. This has been included to meet draughting requirements for the presentation of curves. The curve_style_rendering controls the rendering of curves on a surface and is described together with surface styles.

Fill area styles provide the resources to specify the visual appearance of annotation fill areas. They allow the specification of a solid colour, hatches, or tiling patterns. The fill_area_style_colour can be used to specify a solid colour that is used for presenting a fill area. The hatching patterns can be composed of sets of parallel lines with arbitrary angle. Alternatively, hatching patterns may be externally defined or pre-defined. The entities for hatches are fill_area_style_hatching, pre_defined_hatch_style, externally_defined_ hatch_style, and one_direction_repeat_factor. The tiling patterns can be made of curves, coloured regions, or symbols. Alternatively, tiling pattern may be externally defined or pre-defined. Tiling patterns are repeated in two directions which are specified by arbitrary vectors. The entities for the definition of tiling patterns are pre_defined_tile_style, externally_defined_tile_style, fill_area_style_tiles, fill_area_style_tile_curve_with_style, fill_area_style_tile_coloured_region, fill_area_style_tile_symbol_with_style, pre_defined_tile, externally_defined_tile, and two_direction_repeat_factor.

Surface styles provide the resources to specify the visual appearance of surfaces. Separate surface styles may be applied to each side of a surface, or the same surface styles can be used for both sides. The surface style usage specifies a surface side style for one or both sides of a surface. Entities for the assignment of style to sides of a surface are surface_style_usage and surface_side_style. A surface side style may be any combination of fill area style, boundary style, silhouette style, segmentation curve style, control grid style, parameter line style, or rendering style.

A fill area style specifies a solid colour, hatches, or a tiling pattern for filling the side of a surface.

A boundary style specifies a curve style or a rendering method and properties for presenting the boundary curves of a surface. If no boundary style is specified, the boundary curves shall not be presented.

A silhouette style specifies a curve style or a rendering method and properties for presenting the silhouette curves of a surface. If no silhouette style is specified, silhouette curves shall not be presented.

A segmentation curve style specifies a curve style or a rendering method and properties for presenting the segmentation curves of a surface. This style affects only surfaces which are divided into segments such as B-spline surfaces. If no segmentation curve style is specified, segmentation curves shall not be presented.

A control grid style specifies a curve style or a rendering method and properties for presenting the mesh of control points which are used for the definition of a surface. This style affects only surfaces which are defined over a mesh of control points, such as B-spline surfaces. If no control grid style is specified, the control grid shall not be presented.

A parameter line style specifies a curve style or a rendering method and properties for presenting iso-parameter lines of a surface. The number of parameter lines in each parameter direction has to be specified for this style. If no parameter line style is specified, the parameter lines shall not be presented.

The entities defining these surface styles are surface_fill_area, surface_style_boundary, surface_style_silhouette, surface_style_segmentation_curve, surface_style_control_grid, and surface_style_parameter_line.

The entities curve_style_rendering and surface_rendering_properties specify the rendering method and properties for curves on a surface. A rendering style specifies the method which shall be used for rendering the surface. If this style is specified, surface rendering using reflectance calculations is performed for presenting the surface. For this style, a colour shall be specified for the surface. Additional rendering properties including transparency and ambient, diffuse, and specular reflectance coefficients can optionally be specified. The entities for rendering styles are surface_style_rendering, surface_style_rendering_with_properties, surface_style_transparent, surface_style_reflectance_ambient, surface_style_reflectance_ambient_diffuse, and surface_style_reflectance_ambient_diffuse_specular. Besides those styles listed above, surface styles may also be pre-defined.

Text styles provide the resources to specify the visual appearance of annotation text. Text justification, box characteristics, character spacing, and mirror axis affect the appearance of the whole text, while character glyph style affects the appearance of the individual characters or symbols which make up the text. Text justification specifies how the text is aligned. The supported types of alignment are specified by Application Protocols. The box characteristics specify the geometry of the character box. The character box is a parallelogram for which the width, height, slant angle, and rotation angle may be specified. Text spacing defines the spacing which shall be included between adjacent character boxes of a string, in addition to the spacing included in the font definition. Text mirroring specifies a mirror axis which shall be used for mirroring the text. Mirroring shall be performed after all remaining text styles have been applied. The entities supporting the definition of these text styles are text_style, text_style_with_spacing, text_style_with_mirror, text_style_with_justification, and text_style_with_box_characteristics. A character glyph style may be an outline style, stroke style, or only a text colour. An outline style is a curve style that is used for presenting the outlines which make up a character glyph. Optionally, a fill area style for filling the outlines may be specified. An outline style affects only character glyphs which are defined by outlines. A stroke style is a curve style that is used for presenting the strokes which make up a character glyph. A stroke style affects only character glyphs which are defined by strokes. For pre-defined and externally defined fonts, only a colour shall be specified. The entities supporting the definition of these character glyph styles are character_glyph_style_stroke, character_glyph_style_outline, character_glyph_style_outline_with_characteristics, and text_style_for_defined_font.

Symbol styles provide the resources to specify the visual appearance of annotation symbols. A symbol style is an arbitrary collection of point styles, curve styles, fill area styles, surface styles, and text styles. The entities supporting the definition of these symbol styles are symbol_style, symbol_element_style, and symbol_colour.

Approximation tolerances

Approximation tolerances specify the allowable tolerances between the shape of the presented elements and their mathematically exact position and shape. Approximation tolerances apply to curves and surfaces and can be specified in parameter space, product shape space, or presentation area space. The space in which the tolerances are specified depends on the approximation method used. For the chordal deviation and chordal length approximation methods, the tolerance can be specified in product-shape or presentation-area space. For the parameter approximation method, the tolerance shall be specified in parameter space.

Occlusion and invisibility

The presentation_appearance_schema provides resources to specify the intended appearance of items which hide each other because they overlap in two-dimensional space. Those items include the elements of the presentation hierarchy which are defined in clause 4 in this part of ISO 10303, annotation_fill_areas, annotation texts with delineations, character glyphs, and symbols. For this purpose, an occlusion_precedence can be specified for any two of these items.

In addition, the presentation_appearance_schema provides resources to specify the invisibility of styled_items or layers.

Surface vIsual texture

The presentation_appearance_schema provides resources to specify an external image association to tessellated geometry, in particular to Tessellated_face and Tessellated_surface_set.

Vertex colours for tessellated geometry

The presentation_appearance_schema provides resources to specify association of colour information with vertices of tessellated geometry elements, in particular vertices of a Tessellated_face, Tessellated_surface_set, Tessellated_shell, and Tessellated_solid. Colour information is specified using integer triples to represent RGB colours or integer quadruples to represent RGB colour values with transparency.

6.3 presentation_appearance_schema type definitions

6.3.1 approximation_method   EXPRESS-G

The approximation_method is used to enumerate two possible methods for the tessellation of curves and surfaces with line segments or meshes of planar polygons.

NOTE    Figure 18 shows the definition of chordal_deviation and chordal_length.



Figure 18 —  Chordal deviation and length

Figure 18 —  Chordal deviation and length

EXPRESS specification:

*)
TYPE approximation_method = ENUMERATION OF
   (chordal_deviation,
    chordal_length);
END_TYPE;
(*

Enumerated item definitions:

chordal_deviation: curves are approximated in a way that the distance between the curve and the line segment does not exceed a given deviation value. Surfaces are approximated in a way that the distance between the surface and the polygon does not exceed a given deviation value. The distance is measured in the normal direction to the line segment or the planar polygon. The chordal_deviation is measured either in product shape space units or presentation_area units as specified by an approximation_tolerance_deviation.

chordal_length: curves are approximated in a way that the resulting line segments have uniform length. Surfaces are approximated in a way that the edges of the resulting planar polygons have uniform length. The chordal_length is measured either in product shape space units or presentation_area units as specified by an approximation_tolerance_deviation.

6.3.2 box_characteristic_select   EXPRESS-G

The box_characteristic_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE box_characteristic_select = SELECT
   (box_height,
    box_width,
    box_slant_angle,
    box_rotate_angle);
END_TYPE;
(*

6.3.3 box_height   EXPRESS-G

The box_height is a height scaling factor used in the definition of a character glyph.

EXPRESS specification:

*)
TYPE box_height = positive_ratio_measure;
END_TYPE;
(*

6.3.4 box_rotate_angle   EXPRESS-G

The box_rotate_angle is an angle which indicates that the box for a character glyph shall be presented at an angle to the baseline of the text string within which the glyph occurs, the angle being that between the baseline of the glyph and an axis perpendicular to the baseline of the text string.

NOTE    Figure 19 shows the definition of box_rotate_angle.



Figure 19 —  Box slant and rotate angle

Figure 19 —  Box slant and rotate angle

EXPRESS specification:

*)
TYPE box_rotate_angle = plane_angle_measure;
END_TYPE;
(*

6.3.5 box_slant_angle   EXPRESS-G

A box_slant_angle is an angle which indicates that the box for a character glyph shall be presented as a parallelogram, with the angle being between the character up line and an axis perpendicular to the character base line.

NOTE    Figure 19 shows the definition of box_slant_angle.

EXPRESS specification:

*)
TYPE box_slant_angle = plane_angle_measure;
END_TYPE;
(*

6.3.6 box_width   EXPRESS-G

The box_width is a width scaling factor used in the definition of a character glyph.

EXPRESS specification:

*)
TYPE box_width = positive_ratio_measure;
END_TYPE;
(*

6.3.7 character_spacing_select   EXPRESS-G

The character_spacing_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The character_spacing_select is used to specify the method of spacing between adjacent characters in a text string.

EXPRESS specification:

*)
TYPE character_spacing_select = SELECT
   (length_measure,
    ratio_measure,
    measure_with_unit,
    descriptive_measure,
    pre_defined_character_spacing);
END_TYPE;
(*

6.3.8 character_style_select   EXPRESS-G

The character_style_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE character_style_select = SELECT
   (character_glyph_style_stroke,
    character_glyph_style_outline,
    text_style_for_defined_font);
END_TYPE;
(*

6.3.9 colour_type_enum   EXPRESS-G

The colour_type_enum is an enumeration of colour formats to be associated with vertices of tessellated geometry.

EXPRESS specification:

*)
TYPE colour_type_enum = ENUMERATION OF
   (RGB8,
    RGBT8);
END_TYPE;
(*

Enumerated item definitions:

RGB8: Red Green Blue eight-bit-integer storage colour-model format.

RGBT8: Red Green Blue Transparency 8-bit integer storage colour model format.

6.3.10 curve_font_or_scaled_curve_font_select   EXPRESS-G

The curve_font_or_scaled_curve_font_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The curve_font_or_scaled_curve_font_select is used to specify the font for presenting a curve.

EXPRESS specification:

*)
TYPE curve_font_or_scaled_curve_font_select = SELECT
   (curve_style_font_select,
    curve_style_font_and_scaling);
END_TYPE;
(*

6.3.11 curve_or_annotation_curve_occurrence   EXPRESS-G

The curve_or_annotation_curve_occurrence type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The curve_or_annotation_curve_occurrence provides a curve or an annotation_curve_occurrence for defining the boundary of a fill_area_style_tile_coloured_region.

EXPRESS specification:

*)
TYPE curve_or_annotation_curve_occurrence = SELECT
   (curve,
    annotation_curve_occurrence);
END_TYPE;
(*

6.3.12 curve_or_render   EXPRESS-G

The curve_or_render type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The curve_or_render select type is used in the definition of several surface styles to control the appearance of curves on a surface.

EXPRESS specification:

*)
TYPE curve_or_render = SELECT
   (curve_style,
    curve_style_rendering);
END_TYPE;
(*

6.3.13 curve_style_font_select   EXPRESS-G

The curve_style_font_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The curve_style_font_select is used to specify an unscaled font for presenting a curve.

EXPRESS specification:

*)
TYPE curve_style_font_select = SELECT
   (curve_style_font,
    pre_defined_curve_font,
    externally_defined_curve_font);
END_TYPE;
(*

6.3.14 curve_tolerance_deviation   EXPRESS-G

The curve_tolerance_deviation specifies an approximation tolerance for a curve by providing a deviation value.

EXPRESS specification:

*)
TYPE curve_tolerance_deviation = positive_length_measure;
END_TYPE;
(*

6.3.15 curve_tolerance_parameter   EXPRESS-G

The curve_tolerance_parameter specifies an approximation tolerance for curves in parameter space units.

EXPRESS specification:

*)
TYPE curve_tolerance_parameter = REAL;
END_TYPE;
(*

6.3.16 direction_count_select   EXPRESS-G

The direction_count_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The direction_count_select is a selection between a u_direction_count and a v_direction_count for use in presenting parameter lines of a surface.

EXPRESS specification:

*)
TYPE direction_count_select = SELECT
   (u_direction_count,
    v_direction_count);
END_TYPE;
(*

6.3.17 fill_area_style_tile_shape_select   EXPRESS-G

The fill_area_style_tile_shape_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The fill_area_style_tile_shape_select is used for the definition of fill_area_style_tiles. It selects between different shapes and sources of tiles.

EXPRESS specification:

*)
TYPE fill_area_style_tile_shape_select = SELECT
   (fill_area_style_tile_curve_with_style,
    fill_area_style_tile_coloured_region,
    fill_area_style_tile_symbol_with_style,
    pre_defined_tile,
    externally_defined_tile);
END_TYPE;
(*

6.3.18 fill_style_select   EXPRESS-G

The fill_style_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The fill_style_select is a selection between different fill styles.

EXPRESS specification:

*)
TYPE fill_style_select = SELECT
   (fill_area_style_colour,
    pre_defined_tile_style,
    externally_defined_tile_style,
    fill_area_style_tiles,
    pre_defined_hatch_style,
    externally_defined_hatch_style,
    fill_area_style_hatching,
    texture_style_specification);
END_TYPE;
(*

6.3.19 hiding_or_blanking_select   EXPRESS-G

The hiding_or_blanking_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The hiding_or_blanking_select selects the entities which can hide or blank other entities in a presentation.

EXPRESS specification:

*)
TYPE hiding_or_blanking_select = SELECT
   (presentation_area,
    presentation_view,
    product_data_representation_view,
    annotation_fill_area,
    area_dependent_annotation_representation,
    view_dependent_annotation_representation,
    annotation_text_with_delineation,
    character_glyph_symbol_stroke,
    character_glyph_symbol_outline,
    symbol_representation_with_blanking_box);
END_TYPE;
(*

6.3.20 invisibility_context   EXPRESS-G

The invisibility_context type is an extensible list of alternate data types. It provides a mechanism to refer to instances of the data types included in the invisibility_context type or in its extensions.

NOTE  The list of entity data types will be extended in application resources that use the constructs of this resource.

The invisibility_context type selects the context in which elements of a picture may be denoted as invisible.

EXPRESS specification:

*)
TYPE invisibility_context = EXTENSIBLE GENERIC_ENTITY SELECT
   (presentation_layer_usage,
    presentation_representation,
    presentation_set);
END_TYPE;
(*

6.3.21 invisible_item   EXPRESS-G

The invisible_item type is an extensible list of alternate data types. It provides a mechanism to refer to instances of the data types included in the invisible_item type or in its extensions.

NOTE  The list of entity data types will be extended in application resources that use the constructs of this resource.

The invisible_item type selects elements of a picture that may be denoted as invisible.

EXPRESS specification:

*)
TYPE invisible_item = EXTENSIBLE GENERIC_ENTITY SELECT
   (styled_item,
    presentation_layer_assignment,
    representation);
END_TYPE;
(*

6.3.22 marker_select   EXPRESS-G

The marker_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The marker_select is a selection of a specific marker or a pre-defined marker used for the presentation of points.

EXPRESS specification:

*)
TYPE marker_select = SELECT
   (marker_type,
    pre_defined_marker);
END_TYPE;
(*

6.3.23 marker_type   EXPRESS-G

The marker_type specifies the form for the presentation of points.

EXPRESS specification:

*)
TYPE marker_type = ENUMERATION OF
   (dot,
    x,
    plus,
    asterisk,
    ring,
    square,
    triangle);
END_TYPE;
(*

Enumerated item definitions:

dot: points are presented as dots (.).

x: points are presented as diagonal crosses (x).

plus: points are presented as plus signs (+).

asterisk: points are presented as asterisks (*).

ring: points are presented as circles (◦).

square: points are presented as squares (□).

triangle: points are presented as triangles (△).

6.3.24 non_negative_real   EXPRESS-G

The non_negative_real type is a real and its value is restricted to be zero or positive.

EXPRESS specification:

*)
TYPE non_negative_real = REAL;
WHERE
  WR1: 0.0 <= SELF;
END_TYPE;
(*

Formal propositions:

WR1: The value of the real shall be greater than or equal to zero.

6.3.25 null_style   EXPRESS-G

The null_style specifies that no specific style is assigned directly to an item that is to be presented. The style or styles to be used in presenting the item are specified within the definition of the item. If no styles are specified within the definition, then it is up to the receiving system on how to present the item.

EXAMPLE    A symbol is defined using two annotation_curve_occurrences, which are styled such that one is red and the other is blue. If an instance of the symbol is assigned null_style, it will be presented using the colours specified in the definition.

EXPRESS specification:

*)
TYPE null_style = ENUMERATION OF
   (null);
END_TYPE;
(*

Enumerated item definitions:

null: the representation_item to which the style is applied shall be presented using the style or styles contained in its definition, if any.

6.3.26 presentation_style_select   EXPRESS-G

The presentation_style_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The presentation_style_select is used by a presentation_style_assignment to associate style with a representation_item. A different style is provided for each kind of representation_item to be styled.

EXPRESS specification:

*)
TYPE presentation_style_select = SELECT
   (pre_defined_presentation_style,
    point_style,
    curve_style,
    surface_style_usage,
    symbol_style,
    fill_area_style,
    text_style,
    texture_style_tessellation_specification,
    approximation_tolerance,
    externally_defined_style,
    null_style);
END_TYPE;
(*

6.3.27 product_or_presentation_space   EXPRESS-G

The product_or_presentation_space is used by an approximation_tolerance_deviation to specify the space in which the tolerance values are defined.

EXPRESS specification:

*)
TYPE product_or_presentation_space = ENUMERATION OF
   (product_shape_space,
    presentation_area_space);
END_TYPE;
(*

Enumerated item definitions:

product_shape_space: the definition space of the product shape item to be presented.

presentation_area_space: the coordinate space in which the presentation_area is founded.

6.3.28 rendering_properties_select   EXPRESS-G

The rendering_properties_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The rendering_properties_select is a selection between two kinds of properties for a surface: reflectance and transparency.

EXPRESS specification:

*)
TYPE rendering_properties_select = SELECT
   (surface_style_reflectance_ambient,
    surface_style_transparent);
END_TYPE;
(*

6.3.29 shading_curve_method   EXPRESS-G

The shading_curve_method specifies the method which shall be used for the shading of curves. Shading of curves (approximated by polylines) is the colouring of the line segments according to colour values at certain points of the curve.

EXPRESS specification:

*)
TYPE shading_curve_method = ENUMERATION OF
   (constant_colour,
    linear_colour);
END_TYPE;
(*

Enumerated item definitions:

constant_colour: if the curve has a colour association table and is approximated by i polyline segments, the colour state at the segment boundaries shall be interpolated in this table according to the state variable value at each boundary. The i-th polyline segment shall then be shaded in constant colour according to the colour state at the i-th segment start.

linear_colour: if the curve has a colour association table and is approximated by i polyline segments, the colour state at the segment boundaries shall be interpolated in this table according to the state variable value at each boundary. The i-th polyline segment shall then be shaded in linearly interpolated colour according to the colour states at both segment boundaries.

6.3.30 shading_surface_method   EXPRESS-G

The shading_surface_method specifies the method which shall be used for the shading of surfaces.

NOTE 1   The descriptions of the different types of surface shading show that in some cases the method involves interpolating results from the lighting, and in other case it involves performing the reflectance calculation after interpolation. For this reason, the shading method may be thought of as selecting a location in a display system's graphics pipeline where interpolation takes place.

NOTE 2   The results of the shading methods should produce the effects according to the enumerated item definitions. One particular case where the effects are difficult to define is when the silhouette of a surface intersects itself or another silhouette of the same surface. In this case, the effect is implementation-dependent.

NOTE 3   The shading methods correspond to those provided by PHIGS PLUS [10].

EXPRESS specification:

*)
TYPE shading_surface_method = ENUMERATION OF
   (constant_shading,
    colour_shading,
    dot_shading,
    normal_shading);
END_TYPE;
(*

Enumerated item definitions:

constant_shading: a reflectance calculation is performed for each facet of the approximated surface to produce one reflected colour per facet. The point on the facet used in the calculation is implementation-dependent. The colour used in the reflectance calculation is the surface_colour specified in the relevant surface_style_rendering entity.

colour_shading: a reflectance calculation is performed at each vertex of each facet of the approximated product shape, using the surface_colour and the surface normals in the vertices. The resulting reflected colours are interpolated linearly across each facet.

dot_shading: any dot products needed by the reflectance equation are calculated from surface normals at a set of positions on the surface. These dot products are interpolated linearly across the surface. The reflectance calculation is performed at each interpolated position of the surface to produce a reflected colour based on the interpolated dot products and the surface_colour of the relevant surface_style_rendering entity.

normal_shading: the surface normals are interpolated linearly across the surface. The reflectance calculation is performed at each interpolated position of the surface to produce a reflected colour based on the interpolated surface normal and the surface_colour of the relevant surface_style_rendering entity.

If the surface_colour is specified through a colour_specification, the interpolation of colours shall be performed in the colour model of that specification. Otherwise the interpolation may be performed in an arbitrary model.

NOTE 4   The result of colour interpolation depends on the colour model in which interpolation is performed.

NOTE 5   Examples of colour models are RGB, HSV, HLS.

NOTE 6   More information about colour models and colour interpolation can be found in [13], pp. 611-620.

6.3.31 size_select   EXPRESS-G

The size_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The size_select is used to specify the size of marker symbols or the width of curves.

EXPRESS specification:

*)
TYPE size_select = SELECT
   (positive_length_measure,
    measure_with_unit,
    descriptive_measure,
    pre_defined_size);
END_TYPE;
(*

6.3.32 squared_or_rounded   EXPRESS-G

The squared_or_rounded type specifies the appearance of curves at their corners or ends.

NOTE    See figure 20.



Figure 20 —  Squared or rounded

Figure 20 —  Squared or rounded

EXPRESS specification:

*)
TYPE squared_or_rounded = ENUMERATION OF
   (squared,
    rounded);
END_TYPE;
(*

Enumerated item definitions:

squared: the curve is squared off at its end points and corners.

rounded: a filled semi-circular arc with diameter equal to the curve width is drawn around the curve's end points and corners.

6.3.33 style_context_select   EXPRESS-G

The style_context_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The style_context_select selects between the entities which can be a context for the assignment or over-riding of presentation style.

EXPRESS specification:

*)
TYPE style_context_select = SELECT
   (group,
    context_dependent_shape_representation,
    presentation_layer_assignment,
    presentation_set,
    representation,
    representation_item,
    representation_relationship);
END_TYPE;
(*

6.3.34 styled_item_target   EXPRESS-G

The styled_item_target type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE styled_item_target = SELECT
   (geometric_representation_item,
    mapped_item,
    representation_or_representation_reference,
    topological_representation_item);
END_TYPE;
(*

6.3.35 surface_side   EXPRESS-G

The surface_side is used by surface_style_usage to specify the sides of a surface to which a surface style is applied.

EXPRESS specification:

*)
TYPE surface_side = ENUMERATION OF
   (positive,
    negative,
    both);
END_TYPE;
(*

Enumerated item definitions:

positive: the side of a surface which is in the same direction as the surface normal.

negative: the side of a surface which is in the opposite direction than the surface normal.

both: both sides.

6.3.36 surface_side_style_select   EXPRESS-G

The surface_side_style_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE surface_side_style_select = SELECT
   (surface_side_style,
    pre_defined_surface_side_style);
END_TYPE;
(*

6.3.37 surface_style_element_select   EXPRESS-G

The surface_style_element_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The surface_style_element_select is a selection of the different surface styles to use in the presentation of the side of a surface.

EXPRESS specification:

*)
TYPE surface_style_element_select = SELECT
   (surface_style_fill_area,
    surface_style_boundary,
    surface_style_silhouette,
    surface_style_segmentation_curve,
    surface_style_control_grid,
    surface_style_parameter_line,
    surface_style_rendering);
END_TYPE;
(*

6.3.38 surface_tolerance_deviation   EXPRESS-G

The surface_tolerance_deviation specifies an approximation tolerance for a surface by providing a deviation value.

EXPRESS specification:

*)
TYPE surface_tolerance_deviation = positive_length_measure;
END_TYPE;
(*

6.3.39 surface_tolerance_parameter   EXPRESS-G

The surface_tolerance_parameter specifies an approximation tolerance for surfaces in parameter space units.

EXPRESS specification:

*)
TYPE surface_tolerance_parameter = REAL;
END_TYPE;
(*

6.3.40 symbol_style_select   EXPRESS-G

The symbol_style_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The symbol_style_select is used to specify the style to be applied to elements of a symbol, or the colour to be applied to an entire symbol.

EXPRESS specification:

*)
TYPE symbol_style_select = SELECT
   (symbol_element_style,
    symbol_colour);
END_TYPE;
(*

6.3.41 tessellated_face_or_tessellated_surface_set   EXPRESS-G

The tessellated_face_or_tessellated_surface_set type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE tessellated_face_or_tessellated_surface_set = SELECT
   (tessellated_face,
    tessellated_surface_set);
END_TYPE;
(*

6.3.42 tessellated_surface_item   EXPRESS-G

The tessellated_surface_item type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE tessellated_surface_item = SELECT
   (tessellated_face,
    tessellated_shell,
    tessellated_solid,
    tessellated_surface_set);
END_TYPE;
(*

6.3.43 text_justification   EXPRESS-G

The text_justification type is provided to control the justification of text.

NOTE    Application Protocols shall specify legal values of the text_justification and shall associate precise meaning to these values.

EXPRESS specification:

*)
TYPE text_justification = label;
END_TYPE;
(*

6.3.44 texture_file_type   EXPRESS-G

The texture_file_type type is an enumeration list of file formats that specifies the image format of a texture mapped to a single_texture_style_tessellation_specification.

EXPRESS specification:

*)
TYPE texture_file_type = ENUMERATION OF
   (JPEG,
    PNG,
    GIF,
    TIFF,
    BMP,
    DDS,
    TGA,
    other);
END_TYPE;
(*

Enumerated item definitions:

JPEG: Joint Photographic Experts Group image file format.

PNG: Portable Network Graphics image file format.

GIF: Graphics Interchange Format image file format.

TIFF: Tagged Image File Format image file format.

BMP: Bitmap image file format.

NOTE 1   This format is defined by Microsoft Windows Bitmap Format [16]

DDS: DirectDraw Surface image file format.

NOTE 2   This file format is defined by Microsoft DirectX 7 [17].

TGA: Truevision Graphics Adapter image file format.

NOTE 3   This file format is defined by Truevision Inc. [18].

other: other image file format.

6.3.45 tolerance_deviation_select   EXPRESS-G

The tolerance_deviation_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The tolerance_deviation_select is used by an approximation_tolerance_deviation to select either a curve_tolerance_deviation or a surface_tolerance_deviation.

EXPRESS specification:

*)
TYPE tolerance_deviation_select = SELECT
   (curve_tolerance_deviation,
    surface_tolerance_deviation);
END_TYPE;
(*

6.3.46 tolerance_parameter_select   EXPRESS-G

The tolerance_parameter_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The tolerance_parameter_select is used by an approximation_tolerance_parameter to select either a curve_tolerance_parameter or a surface_tolerance_parameter.

EXPRESS specification:

*)
TYPE tolerance_parameter_select = SELECT
   (curve_tolerance_parameter,
    surface_tolerance_parameter);
END_TYPE;
(*

6.3.47 tolerance_select   EXPRESS-G

The tolerance_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The tolerance_select is used by the approximation_tolerance to select either an approximation_tolerance_deviation or an approximation_tolerance_parameter.

EXPRESS specification:

*)
TYPE tolerance_select = SELECT
   (approximation_tolerance_deviation,
    approximation_tolerance_parameter);
END_TYPE;
(*

6.3.48 u_direction_count   EXPRESS-G

The u_direction_count is a positive integer indicating the number of parameter curves in the u direction of a parametric surface.

EXPRESS specification:

*)
TYPE u_direction_count = INTEGER;
WHERE
  WR1: SELF > 1;
END_TYPE;
(*

Formal propositions:

WR1: The u direction count shall be greater than 1.

6.3.49 unsigned_8_bit_integer   EXPRESS-G

The unsigned_8_bit_integer type is an unsigned integer with binary representation of eight bits.

EXPRESS specification:

*)
TYPE unsigned_8_bit_integer = INTEGER;
WHERE
  WR1: { 0 <= SELF <= 255 };
END_TYPE;
(*

Formal propositions:

WR1: The value of the integer shall be in the range 0 to 255 inclusive.

6.3.50 v_direction_count   EXPRESS-G

The v_direction_count is a positive integer indicating the number of parameter curves in the v direction of a parametric surface.

EXPRESS specification:

*)
TYPE v_direction_count = INTEGER;
WHERE
  WR1: SELF > 1;
END_TYPE;
(*

Formal propositions:

WR1: The v direction count shall be greater than 1.

6.4 presentation_appearance_schema entity definitions

6.4.1 approximation_tolerance   EXPRESS-G

An approximation_tolerance is a type of founded_item. An approximation_tolerance serves the visualization requirements of every displayable element. It specifies the position and shape tolerance of the presented elements in the picture with respect to their mathematically exact projected position and shape.

EXPRESS specification:

*)
ENTITY approximation_tolerance
  SUBTYPE OF (founded_item);
  tolerance : tolerance_select;
END_ENTITY;
(*

Attribute definitions:

tolerance: the tolerances to be used for approximating curves and surfaces.

NOTE    If no approximation_tolerance is specified, the accuracy of rendering is implementation-dependent.

6.4.2 approximation_tolerance_deviation   EXPRESS-G

An approximation_tolerance_deviation is a type of founded_item. An approximation_tolerance_deviation specifies a deviation measurement for the approximation of curves and surfaces. The deviation value can be specified in product-shape or presentation-area space.

EXPRESS specification:

*)
ENTITY approximation_tolerance_deviation
  SUBTYPE OF (founded_item);
  tessellation_type : approximation_method;
  tolerances : SET[1:2] OF tolerance_deviation_select;
  definition_space : product_or_presentation_space;
WHERE
  WR1: (HIINDEX(tolerances) = 1) XOR (TYPEOF(tolerances[1]) <> TYPEOF(tolerances[2]));
END_ENTITY;
(*

Attribute definitions:

tessellation_type: the selected approximation_method which determines the kind of tessellation with which curves and surfaces are approximated by graphical primitives.

tolerances: the set of tolerances which specify the maximum allowable deviation for the approximation of curves and surfaces.

definition_space: the coordinate space in which the tolerances are specified. The tolerances can be specified in the definition space of the curve or surface to which the tolerances are applied or in the definition space of the presentation_area which contains the curve or surface.

Formal propositions:

WR1: If there are two members of the tolerances set, they shall not be of the same type.

6.4.3 approximation_tolerance_parameter   EXPRESS-G

An approximation_tolerance_parameter is a type of founded_item. An approximation_tolerance_parameter specifies an approximation tolerance for curves and surfaces in parameter space units.

EXPRESS specification:

*)
ENTITY approximation_tolerance_parameter
  SUBTYPE OF (founded_item);
  tolerances : SET[1:2] OF tolerance_parameter_select;
WHERE
  WR1: (HIINDEX (tolerances) = 1 ) XOR (TYPEOF (tolerances[1]) <> TYPEOF (tolerances[2]));
END_ENTITY;
(*

Attribute definitions:

tolerances: the set of tolerances used for approximating curves and surfaces. Curves and surfaces are approximated in such a way that uniform steps in parameter space are taken as the basis of the approximation. The specified lengths are measured in parameter space units.

Formal propositions:

WR1: If there are two members of the tolerances set, they shall not be of the same type.

6.4.4 character_glyph_style_outline   EXPRESS-G

A character_glyph_style_outline is a type of founded_item. A character_glyph_style_outline is a character glyph style for text that is made up of closed regions rather than curves.

EXPRESS specification:

*)
ENTITY character_glyph_style_outline
  SUBTYPE OF (founded_item);
  outline_style : curve_style;
END_ENTITY;
(*

Attribute definitions:

outline_style: the curve_style applied to the curves which define a character_glyph_symbol_outline.

6.4.5 character_glyph_style_outline_with_characteristics   EXPRESS-G

A character_glyph_style_outline_with_characteristics is a type of character_glyph_style_outline with additional characteristics to be applied to the regions of the character_glyph_style_outline.

EXPRESS specification:

*)
ENTITY character_glyph_style_outline_with_characteristics
  SUBTYPE OF (character_glyph_style_outline);
  characteristics : fill_area_style;
END_ENTITY;
(*

Attribute definitions:

characteristics: the characteristics about the regions of the character glyph.

6.4.6 character_glyph_style_stroke   EXPRESS-G

A character_glyph_style_stroke is a type of founded_item. A character_glyph_style_stroke is a character glyph style for text that is made up of curves rather than closed regions.

EXPRESS specification:

*)
ENTITY character_glyph_style_stroke
  SUBTYPE OF (founded_item);
  stroke_style : curve_style;
END_ENTITY;
(*

Attribute definitions:

stroke_style: the curve_style applied to the curves which define a character_glyph_symbol_stroke.

6.4.7 context_dependent_invisibility   EXPRESS-G

A context_dependent_invisibility is a type of invisibility that is applied in the context of a picture or a layer. The elements specified as invisible are invisible only in the context of the identified presentation_set, presentation_representation, or presentation_layer_usage.

EXAMPLE    A symbol is included as an item in two separate views, but is to be presented in only the first view. A context_dependent_invisibility is used to specify that the symbol is not visible in the second view, by specifying this view as the context for the invisibility.

EXPRESS specification:

*)
ENTITY context_dependent_invisibility
  SUBTYPE OF (invisibility);
  presentation_context : invisibility_context;
END_ENTITY;
(*

Attribute definitions:

presentation_context: the presentation_set, presentation_representation, or presentation_layer_usage that provides the context for the specification of invisibility.

6.4.8 context_dependent_over_riding_styled_item   EXPRESS-G

A context_dependent_over_riding_styled_item is a type of over_riding_styled_item where the style assignment takes precedence over another assigned style based on a representation, representation_item, or combination of representation and representation_item in which the item being styled is used.

EXAMPLE    A circle instance is used by geometric_curve_set instance 1 which is an item in representation instance 1. In this example the instance of circle represents the head of a screw in a door hinge. A styled_item instance is an item in representation instance 1. That styled_item has the geometric_curve_set as its item, and a presentation_style_assignment with a curve_style which has a colour of blue. The representation instance 1 is included in representation instance 2 through the use of representation_map instance 1 and mapped_item instance 1, as one hinge on a door. The representation instance 1 is included in a different location in representation instance 2 through representation_map 2 and mapped_item instance 2 as a second hinge. An instance of context_dependent_over_riding_styled_item is also an item in representation instance 2. That context_dependent_over_riding_styled_item has the circle instance as its item, the styled_item instance as its over_ridden_style, a presentation_style_assignment with a curve_style which has a colour of red, and a style_context of mapped_item instance 1. The red color for the circle takes precedence over the blue color of the geometric_curve_set for a representation of the geometric_curve_set as it is included in the presentation through mapped_item instance 1. A presentation of representation instance 2 would have the geometric_curve_set presented in two different places, the first having a red screw head and all the other curves blue, the second having all the curves blue.

EXPRESS specification:

*)
ENTITY context_dependent_over_riding_styled_item
  SUBTYPE OF (over_riding_styled_item);
  style_context : LIST[1:?] OF style_context_select;
WHERE
  WR1: (SIZEOF(QUERY(sc <* style_context | 'REPRESENTATION_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR (SIZEOF(QUERY(sc <* style_context | ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(sc)) OR ('PRESENTATION_APPEARANCE_SCHEMA.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN TYPEOF(sc)) OR ('REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) )) = SIZEOF(style_context));
END_ENTITY;
(*

Attribute definitions:

style_context: a list of one or more contexts for the overriding of the overridden style.

Formal propositions:

WR1: There shall be only one representation_item or all style_contexts are mapped_items or all style_contexts are context_dependent_shape_representation or representation_relationships.

6.4.9 curve_style   EXPRESS-G

A curve_style is a type of founded_item. A curve_style specifies the visual appearance of a curve.

EXPRESS specification:

*)
ENTITY curve_style
  SUBTYPE OF (founded_item);
  name : label;
  curve_font : OPTIONAL curve_font_or_scaled_curve_font_select;
  curve_width : OPTIONAL size_select;
  curve_colour : OPTIONAL colour;
WHERE
  WR1: EXISTS(curve_font) OR EXISTS(curve_width) OR EXISTS(curve_colour);
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the curve_style is referred to.

curve_font: the curve_style_font, scaled curve_style_font, pre_defined_curve_font, scaled pre_defined_curve_font, externally_defined_curve_font, or scaled externally_defined_curve_font which is used to present a curve.

curve_width: the width of the visible part of the presented curve in presentation_area units.

curve_colour: the colour of the visible part of the curve.

Formal propositions:

WR1: At least one of curve_font, curve_width or curve_colour shall be defined.

6.4.10 curve_style_curve_pattern   EXPRESS-G

A curve_style_curve_pattern is a type of geometric_representation_item. A curve_style_curve_pattern specifies a curve pattern which is used in the curve_style_curve_pattern_set. The curve_style_curve_pattern is defined in a local pattern definition coordinate system, which will be placed along the visible segments of the derived curve. The projected curve tangent is the x axis and the normal to the projected curve is the y axis of the local pattern definition coordinate system.

NOTE    Figure 21 shows the definition of curve_style_curve_pattern.



Figure 21 —  Curve style curve pattern

Figure 21 —  Curve style curve pattern

EXPRESS specification:

*)
ENTITY curve_style_curve_pattern
  SUBTYPE OF (geometric_representation_item);
  pattern : annotation_curve_occurrence;
  pattern_length : positive_length_measure;
END_ENTITY;
(*

Attribute definitions:

pattern: the repetitive pattern for filling the curve. The pattern is defined as an annotation_curve_occurrence and is therefore itself associated with a presentation style.

pattern_length: the length of the pattern in presentation_area units.

6.4.11 curve_style_curve_pattern_set   EXPRESS-G

A curve_style_curve_pattern_set is a type of curve_style_font and a type of geometric_representation_item. A curve_style_curve_pattern_set defines a style for filling the visible curve segments with a set of repetitive patterns. This pattern_set is repeated along the visible curve segments.

EXPRESS specification:

*)
ENTITY curve_style_curve_pattern_set
  SUBTYPE OF (curve_style_font, geometric_representation_item);
  pattern_set : SET[1:?] OF curve_style_curve_pattern;
END_ENTITY;
(*

Attribute definitions:

pattern_set: the repetitive pattern_set consists of a set of curve_style_curve_patterns.

Informal propositions:

IP1: The curve starts always with a complete pattern.

IP2: The curve pattern is clipped off at the end of the curve and may therefore be incomplete.

6.4.12 curve_style_font   EXPRESS-G

A curve_style_font is a type of founded_item. A curve_style_font combines several curve_style_font_patterns into a pattern. The resulting pattern is repeated along the curve.

EXPRESS specification:

*)
ENTITY curve_style_font
  SUBTYPE OF (founded_item);
  name : label;
  pattern_list : LIST[1:?] OF curve_style_font_pattern;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the curve_style_font is referred to.

pattern_list: a list of curve_style_font_patterns that contains the patterns used for drawing curves. The patterns are applied in the order in which they occur in the list.

Informal propositions:

IP1: The curve starts always with a complete pattern.

IP2: The font pattern is clipped off at the end of the curve and may therefore be incomplete.

6.4.13 curve_style_font_and_scaling   EXPRESS-G

A curve_style_font_and_scaling is a type of founded_item. A curve_style_font_and_scaling is used to apply scale to the specified curve_style_font.

EXPRESS specification:

*)
ENTITY curve_style_font_and_scaling
  SUBTYPE OF (founded_item);
  name : label;
  curve_font : curve_style_font_select;
  curve_font_scaling : REAL;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the curve_style_font_and_scaling is referred to.

curve_font: the curve_font to be scaled.

curve_font_scaling: the scale factor.

6.4.14 curve_style_font_pattern   EXPRESS-G

A curve_style_font_pattern is a type of founded_item. A curve_style_font_pattern is a pair of visible and invisible curve segment lengths measured in presentation_area units.

EXPRESS specification:

*)
ENTITY curve_style_font_pattern
  SUBTYPE OF (founded_item);
  visible_segment_length : positive_length_measure;
  invisible_segment_length : positive_length_measure;
END_ENTITY;
(*

Attribute definitions:

visible_segment_length: the length of the visible segment in the pattern definition measured in presentation_area units.

invisible_segment_length: the length of the invisible segment in the pattern definition measured in presentation_area units.

6.4.15 curve_style_rendering   EXPRESS-G

A curve_style_rendering is allowing the visualization of curves on a surface by application of rendering techniques.

EXPRESS specification:

*)
ENTITY curve_style_rendering;
  rendering_method : shading_curve_method;
  rendering_properties : surface_rendering_properties;
END_ENTITY;
(*

Attribute definitions:

rendering_method: specifies the method which shall be used for interpolating colours along curves on a surface.

rendering_properties: specifies the rendering properties of the surface which contains the curves.

6.4.16 curve_style_wide   EXPRESS-G

A curve_style_wide is a type of curve_style_font. A curve_style_wide defines a style for filling the visible curve segments. The curve_style used for styling the tile curves or hatch lines is also applied to the boundary of the curve segments.

EXPRESS specification:

*)
ENTITY curve_style_wide
  SUBTYPE OF (curve_style_font);
  interior_style : fill_area_style;
END_ENTITY;
(*

Attribute definitions:

interior_style: the style for filling the visible curve segments with tiles or hatches.

6.4.17 curve_style_with_ends_and_corners   EXPRESS-G

A curve_style_with_ends_and_corners is a type of curve_style which specifies the visual appearance of the ends and corners of a curve.

EXPRESS specification:

*)
ENTITY curve_style_with_ends_and_corners
  SUBTYPE OF (curve_style);
  curve_ends : squared_or_rounded;
  curve_corners : squared_or_rounded;
WHERE
  WR1: EXISTS(curve_width);
END_ENTITY;
(*

Attribute definitions:

curve_ends: an indication of how to present the ends of a curve.

curve_corners: an indication of how to present the corners of a curve.

Formal propositions:

WR1: A value for curve_width shall be provided.

6.4.18 curve_style_with_extension   EXPRESS-G

A curve_style_with_extension is a type of curve_style that indicates how the curve ends shall appear when presented, either extended or shortened.

EXPRESS specification:

*)
ENTITY curve_style_with_extension
  SUBTYPE OF (curve_style);
  curve_extensions : length_measure;
WHERE
  WR1: EXISTS(curve_width);
END_ENTITY;
(*

Attribute definitions:

curve_extensions: a length_measure indicating how to lengthen or shorten the ends of a curve. If the length_measure is positive, the curve shall be extended at both ends in a tangential direction by the specified length in presentation_area units. If the length_measure is negative, the curve shall be shortened by the absolute value of the specified length in presentation_area units.

NOTE    See figure 22.



Figure 22 —  Curve style with extension

Figure 22 —  Curve style with extension

Formal propositions:

WR1: A value for curve_width shall be provided.

6.4.19 draughting_pre_defined_curve_font   EXPRESS-G

A draughting_pre_defined_curve_font is a type of pre_defined_curve_font that is identified by name.

Table 1 states the lengths of each line segment and space, in millimetres, corresponding to each of the predefined curve fonts that are specified in this part of ISO 10303. If the pre_defined_curve_font is used as part of the definition of a curve_style_font_and_scaling, then the given lengths are those when the curve_font_scaling attribute has the value 1.0.

NOTE 1   The curve_style_font_and_scaling is defined in ISO 10303-46.

NOTE 2   Illustrations of curve fonts are given in Figure 23.

Table 1 — Line segment and space lengths for predefined curve fonts

Curve pattern name

Segment

(mm)

Space

(mm)

Segment

(mm)

Space

(mm)

Segment

(mm)

Space

(mm)

Number of segments

Continuous 0
Dashed 4.0 1.5 2
Chain 7.0 1.0 1.0 1.0 4
Chain double dash 7.0 1.0 1.0 1.0 1.0 1.0 6
Dotted 1.0 1.0 2


Figure 23 —  Illustration of predefined curve fonts

Figure 23 —  Illustration of predefined curve fonts

EXPRESS specification:

*)
ENTITY draughting_pre_defined_curve_font
  SUBTYPE OF (pre_defined_curve_font);
WHERE
  WR1: SELF\pre_defined_item.name IN ['continuous', 'chain', 'chain double dash', 'dashed', 'dotted'];
END_ENTITY;
(*

Formal propositions:

WR1: The name of the draughting_pre_defined_curve_font shall be ’continuous’, ’chain’, ’chain double dash’, ’dashed’, or ’dotted’.

6.4.20 externally_defined_curve_font   EXPRESS-G

An externally_defined_curve_font is a type of externally_defined_item. An externally_defined_curve_font makes an external reference to a curve font.

EXPRESS specification:

*)
ENTITY externally_defined_curve_font
  SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*

6.4.21 externally_defined_hatch_style   EXPRESS-G

An externally_defined_hatch_style is a type of externally_defined_item and a type of geometric_representation_item. An externally_defined_hatch_style makes an external reference to a hatching style.

EXPRESS specification:

*)
ENTITY externally_defined_hatch_style
  SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
(*

6.4.22 externally_defined_style   EXPRESS-G

An externally_defined_style is a type of externally_defined_item and a type of founded_item. An externally_defined_style is an external reference to a presentation style.

EXPRESS specification:

*)
ENTITY externally_defined_style
  SUBTYPE OF (externally_defined_item, founded_item);
END_ENTITY;
(*

6.4.23 externally_defined_tile   EXPRESS-G

An externally_defined_tile is a type of externally_defined_item. An externally_defined_tile is a tile that is defined by reference to some external source.

EXPRESS specification:

*)
ENTITY externally_defined_tile
  SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*

6.4.24 externally_defined_tile_style   EXPRESS-G

An externally_defined_tile_style is a type of externally_defined_item and a type of geometric_representation_item. An externally_defined_tile_style makes an external reference to a tiling style.

EXPRESS specification:

*)
ENTITY externally_defined_tile_style
  SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
(*

6.4.25 fill_area_style   EXPRESS-G

A fill_area_style is a type of founded_item. A fill_area_style is a style for filling visible curve segments, annotation fill areas, or surfaces with tiles or hatching.

EXPRESS specification:

*)
ENTITY fill_area_style
  SUBTYPE OF (founded_item);
  name : label;
  fill_styles : SET[1:?] OF fill_style_select;
WHERE
  WR1: SIZEOF(QUERY(fill_style <* fill_styles | 'PRESENTATION_APPEARANCE_SCHEMA.'+ 'FILL_AREA_STYLE_COLOUR' IN TYPEOF(fill_style) )) <= 1;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the fill_area_style is referred to.

fill_styles: the set of fill area styles to use in presenting visible curve segments, annotation fill areas, or surfaces.

Formal propositions:

WR1: There shall be not more than one fill_area_style_colour in the fill_styles set.

6.4.26 fill_area_style_colour   EXPRESS-G

A fill_area_style_colour is a definition of a colour to be used for solid fill of visible curve segments, annotation fill areas, or surfaces.

EXPRESS specification:

*)
ENTITY fill_area_style_colour;
  name : label;
  fill_colour : colour;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the fill_area_style_colour is referred to.

fill_colour: the colour to be used for filling the area.

6.4.27 fill_area_style_hatching   EXPRESS-G

A fill_area_style_hatching is a type of geometric_representation_item. A fill_area_style_hatching defines a styled pattern of curves for hatching visible curve segments, annotation fill areas, or surfaces.

NOTE    Figure 24 shows the definition of fill_area_style_hatching.



Figure 24 —  Fill area style hatching

Figure 24 —  Fill area style hatching

EXPRESS specification:

*)
ENTITY fill_area_style_hatching
  SUBTYPE OF (geometric_representation_item);
  hatch_line_appearance : curve_style;
  start_of_next_hatch_line : one_direction_repeat_factor;
  point_of_reference_hatch_line : cartesian_point;
  pattern_start : cartesian_point;
  hatch_line_angle : plane_angle_measure;
END_ENTITY;
(*

Attribute definitions:

hatch_line_appearance: the curve_style of the hatching lines. Any curve_style pattern shall start at the origin of each hatch line. The origin of the reference hatch line is specified by pattern_start. The origin of any other hatch line is determined by adding a multiple of start_of_next_hatch_line to pattern_start.

start_of_next_hatch_line: the displacement between adjacent hatch lines, specified as a vector.

point_of_reference_hatch_line: the origin for mapping the fill_area_style_hatching onto a curve, annotation fill area, or surface.

pattern_start: the start point for the curve_style of the point_of_reference_hatch_line.

hatch_line_angle: the angle determining the direction of the parallel hatching lines.

6.4.28 fill_area_style_tile_coloured_region   EXPRESS-G

A fill_area_style_tile_coloured_region is a type of geometric_representation_item. A fill_area_style_tile_coloured_region is a closed curve that is filled with a colour and acts as a constituent in a fill_area_style_tiles.

EXPRESS specification:

*)
ENTITY fill_area_style_tile_coloured_region
  SUBTYPE OF (geometric_representation_item);
  closed_curve : curve_or_annotation_curve_occurrence;
  region_colour : colour;
WHERE
  WR1: (NOT('GEOMETRY_SCHEMA.CURVE' IN TYPEOF (closed_curve))) OR ('GEOMETRY_SCHEMA.CIRCLE' IN TYPEOF (closed_curve)) OR ('GEOMETRY_SCHEMA.ELLIPSE' IN TYPEOF (closed_curve)) OR ( ('GEOMETRY_SCHEMA.B_SPLINE_CURVE' IN TYPEOF (closed_curve)) AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR ( ('GEOMETRY_SCHEMA.COMPOSITE_CURVE' IN TYPEOF (closed_curve)) AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR ( ('GEOMETRY_SCHEMA.POLYLINE' IN TYPEOF (closed_curve)) AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) );
END_ENTITY;
(*

Attribute definitions:

closed_curve: the closed curve which defines a coloured region. The referenced curve may also be associated with style.

region_colour: the colour of that region which is defined by the interior of the closed curve.

Formal propositions:

WR1: The closed_curve shall be closed and not self-intersecting.

6.4.29 fill_area_style_tile_curve_with_style   EXPRESS-G

A fill_area_style_tile_curve_with_style is a type of geometric_representation_item. A fill_area_style_tile_curve_with_style contains a styled curve which acts as a constituent in a fill_area_style_tiles.

EXPRESS specification:

*)
ENTITY fill_area_style_tile_curve_with_style
  SUBTYPE OF (geometric_representation_item);
  styled_curve : annotation_curve_occurrence;
END_ENTITY;
(*

Attribute definitions:

styled_curve: the two-dimensional styled curve defined in the local coordinate system of a fill area tile.

6.4.30 fill_area_style_tile_symbol_with_style   EXPRESS-G

A fill_area_style_tile_symbol_with_style is a type of geometric_representation_item. A fill_area_style_tile_symbol_with_style is a symbol which acts as a constituent in a fill_area_style_tiles.

EXPRESS specification:

*)
ENTITY fill_area_style_tile_symbol_with_style
  SUBTYPE OF (geometric_representation_item);
  symbol : annotation_symbol_occurrence;
END_ENTITY;
(*

Attribute definitions:

symbol: a styled annotation symbol.

6.4.31 fill_area_style_tiles   EXPRESS-G

A fill_area_style_tiles is a type of geometric_representation_item. A fill_area_style_tiles defines a two-dimensional tile to be used for the filling of annotation fill areas or other closed regions. The content of a tile is defined by the tiles set, and the placement of each tile is determined by the tiling_pattern which indicates how to place tiles next to each other. Tiles or parts of tiles outside the annotation fill area or closed region shall be clipped at the boundaries of the area or region.

EXPRESS specification:

*)
ENTITY fill_area_style_tiles
  SUBTYPE OF (geometric_representation_item);
  tiling_pattern : two_direction_repeat_factor;
  tiles : SET[1:?] OF fill_area_style_tile_shape_select;
  tiling_scale : positive_ratio_measure;
END_ENTITY;
(*

Attribute definitions:

tiling_pattern: the two_direction_repeat_factor defining the shape and relative positioning of the tiles.

tiles: the set of constituents of the tile.

tiling_scale: the scaling factor applied to each tile as it is placed in the annotation_fill_area.

6.4.32 invisibility   EXPRESS-G

An invisibility is specifying that a collection of one or more styled_items, elements assigned to a layer by presentation_style_assignment, or elements of a presentation_representation shall not be presented.

EXPRESS specification:

*)
ENTITY invisibility;
  invisible_items : SET[1:?] OF invisible_item;
END_ENTITY;
(*

Attribute definitions:

invisible_items: a set of styled_items, presentation_layer_assignments, or presentation_representations that are denoted as being invisible.

6.4.33 occlusion_precedence   EXPRESS-G

An occlusion_precedence is a relationship between two entities that can hide or blank out other entities. This relationship establishes which one is to hide or blank out the other if they should overlap in a presentation.

This relationship is transitive. If entity A hides entity B, and entity B hides entity C, then entity A also hides entity C.

This relationship only applies if the two entities are in the same representation.

NOTE    If two such entities overlap and do not participate in an occlusion_precedence relationship, which entity has precedence is up to the particular implementation which presents it.

EXPRESS specification:

*)
ENTITY occlusion_precedence;
  higher_precedence : hiding_or_blanking_select;
  lower_precedence : hiding_or_blanking_select;
  occlusion_context : representation;
WHERE
  WR1: acyclic_occlusion_precedence (SELF, [lower_precedence]);
END_ENTITY;
(*

Attribute definitions:

higher_precedence: the entity which can blank or hide the lower_precedence entity.

lower_precedence: the entity which can be blanked or hidden by the higher_precedence entity.

occlusion_context: the representation in which the precedence has meaning.

Formal propositions:

WR1: An occlusion_precedence entity shall not participate in a tree of hiding_or_blanking_select entities where the root of the tree is also a leaf of its own tree.

6.4.34 one_direction_repeat_factor   EXPRESS-G

A one_direction_repeat_factor is a type of geometric_representation_item. A one_direction_repeat_factor is a vector used in a fill_area_style_hatching for determining the origin of a repeated hatch line relative to the origin of the previous hatch line. Given the initial position I of any hatch line, the one_direction_repeat_factor R determines two new positions according to the expression:
one_direction_repeat_factor_expression.gif

NOTE    Figure 25 shows the positions defined by a one_direction_repeat_factor.



Figure 25 —  One direction repeat factor

Figure 25 —  One direction repeat factor

EXPRESS specification:

*)
ENTITY one_direction_repeat_factor
  SUBTYPE OF (geometric_representation_item);
  repeat_factor : vector;
END_ENTITY;
(*

Attribute definitions:

repeat_factor: the vector which specifies the relative positioning of hatch lines.

6.4.35 over_riding_styled_item   EXPRESS-G

An over_riding_styled_item is a type of styled_item where the style assignment takes precedence over another assigned style. The precedence happens when the over_ridden_style styled_item and the over_riding_styled_item are both included, directly or indirectly, in the same presentation.

EXAMPLE    A circle instance is used by a geometric_curve_set which is an item in a representation. A styled_item instance is an item in the same representation. That styled_item has the geometric_curve_set as its item, and a presentation_style_assignment with a curve_style which has a colour of blue. An instance of over_riding_styled_item is also an item in the same representation. That over_riding_styled_item has the circle instance as its item, the styled_item instance as its over_ridden_style, and a presentation_style_assignment with a curve_style which has a colour of red. The red colour for the circle takes precedence over the blue colour of the geometric_curve_set for a presentation of the geometric_curve_set.

EXPRESS specification:

*)
ENTITY over_riding_styled_item
  SUBTYPE OF (styled_item);
  over_ridden_style : styled_item;
END_ENTITY;
(*

Attribute definitions:

over_ridden_style: the styled_item that will have its style overridden.

6.4.36 point_style   EXPRESS-G

A point_style is a type of founded_item. A point_style specifies the visual appearance of points.

EXPRESS specification:

*)
ENTITY point_style
  SUBTYPE OF (founded_item);
  name : label;
  marker : OPTIONAL marker_select;
  marker_size : OPTIONAL size_select;
  marker_colour : OPTIONAL colour;
WHERE
  WR1: EXISTS(marker) OR EXISTS(marker_size) OR EXISTS(marker_colour);
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the point_style is referred to.

marker: the kind of marker which shall be used to present a point.

marker_size: the size in presentation_area units used for drawing the marker.

marker_colour: the colour to be applied to the marker.

Formal propositions:

WR1: at least one of the OPTIONAL attributes marker, marker_style or marker_colour shall exist.

6.4.37 pre_defined_character_spacing   EXPRESS-G

A pre_defined_character_spacing is a type of pre_defined_item. A pre_defined_character_spacing is a character spacing for the definition of an application-specific character spacing.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_character_spacing
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.38 pre_defined_curve_font   EXPRESS-G

A pre_defined_curve_font is a type of pre_defined_item. A pre_defined_curve_font may be used to define application-specific curve fonts.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_curve_font
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.39 pre_defined_hatch_style   EXPRESS-G

A pre_defined_hatch_style is a type of geometric_representation_item and a type of pre_defined_item. A pre_defined_hatch_style is a hatching style provided for Application Protocols to define an application-specific single or multiple hatching style.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_hatch_style
  SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
(*

6.4.40 pre_defined_marker   EXPRESS-G

A pre_defined_marker is a type of pre_defined_item. A pre_defined_marker may be used to define an application-specific marker symbol.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_marker
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.41 pre_defined_presentation_style   EXPRESS-G

A pre_defined_presentation_style is a type of founded_item and a type of pre_defined_item. A pre_defined_presentation_style may be used to fix certain application-specific aspects of appearance attributes defined in this schema.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_presentation_style
  SUBTYPE OF (founded_item, pre_defined_item);
END_ENTITY;
(*

6.4.42 pre_defined_size   EXPRESS-G

A pre_defined_size is a type of pre_defined_item. A pre_defined_size may be used to define an application-specific size for markers.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_size
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.43 pre_defined_surface_side_style   EXPRESS-G

A pre_defined_surface_side_style is a type of pre_defined_item. A pre_defined_surface_side_style may be used to define an application-specific surface_side_styles.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_surface_side_style
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.44 pre_defined_tile   EXPRESS-G

A pre_defined_tile is a type of pre_defined_item. A pre_defined_tile may be used to define an application-specific tile.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_tile
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

6.4.45 pre_defined_tile_style   EXPRESS-G

A pre_defined_tile_style is a type of geometric_representation_item and a type of pre_defined_item. A pre_defined_tile_style is a tile style provided for Application Protocols to define an application-specific tile style.

NOTE    Application Resources or Application Protocols specify the use of this entity.

EXPRESS specification:

*)
ENTITY pre_defined_tile_style
  SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
(*

6.4.46 presentation_style_assignment   EXPRESS-G

A presentation_style_assignment is a type of founded_item. A presentation_style_assignment is a set of styles which are assigned to a representation_item for the purpose of presenting the item. Style definitions have an effect only on the appearance of an element of a special type. Surface style has only an effect on surfaces. Fill area style and curve style have only an effect on curves and surfaces. Point style has an effect on points, curves, and surfaces. Text style has only an effect on the appearance of annotation text. Symbol style has only an effect on symbols.

EXAMPLE    If a line is given a style which is a curve style, it shall appear. If a line is given both curve and point style, both the curve and its related cartesian points shall appear.

EXPRESS specification:

*)
ENTITY presentation_style_assignment
  SUBTYPE OF (founded_item);
  styles : SET[1:?] OF presentation_style_select;
WHERE
  WR1: SIZEOF (QUERY (style1 <* styles | NOT (SIZEOF (QUERY (style2 <* (styles - style1) | NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR (SIZEOF (['PRESENTATION_APPEARANCE_SCHEMA.' + 'SURFACE_STYLE_USAGE', 'PRESENTATION_APPEARANCE_SCHEMA.'+ 'EXTERNALLY_DEFINED_STYLE'] * TYPEOF (style1)) = 1) ))) = 0 ))) = 0;
  WR2: SIZEOF (QUERY (style1 <* styles | 'PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(style1) )) <= 2;
  WR3: SIZEOF (QUERY (style1 <* styles | ('PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND (SIZEOF (QUERY (style2 <* (styles - style1) | ('PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND ((style1\surface_style_usage.side = both) OR (style2\surface_style_usage.side = both) OR (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0;
END_ENTITY;
(*

Attribute definitions:

styles: the set of presentation styles that are assigned to a representation_item.

Formal propositions:

WR1: The same style shall not appear more than once in the set of styles, except for externally_defined_style and surface_style_usage.

WR2: The surface_style_usage shall not occur more than twice in the set of styles.

WR3: If there are two instances of surface_style_usage in the set of styles, each shall specify the style for opposite sides of the surface being styled.

Informal propositions:

IP1: Externally defined styles shall not conflict with other styles in the same presentation_style_assignment entity, including other externally defined styles.

NOTE    For one style to conflict with the other, it specifies a different style for the same characteristic, such as colour or width. For example, one style might say blue, the other green, and both be applied to the same entity.

6.4.47 presentation_style_by_context   EXPRESS-G

A presentation_style_by_context is a type of presentation_style_assignment which is assigned to a representation_item and is applicable only in a specified presentation context.

EXPRESS specification:

*)
ENTITY presentation_style_by_context
  SUBTYPE OF (presentation_style_assignment);
  style_context : style_context_select;
END_ENTITY;
(*

Attribute definitions:

style_context: the presentation context in which a style is assigned to a representation_item.

6.4.48 single_texture_style_tessellation_specification   EXPRESS-G

A single_texture_style_tessellation_specification is a type of texture_style_tessellation_specification that defines a visual texture. The texture_coordinates is an array, whose elements are implicitly associated to coordinates in the tessellated geometry that is associated with this entity when it is used. The texture is defined in an external file.

EXPRESS specification:

*)
ENTITY single_texture_style_tessellation_specification
  SUBTYPE OF (texture_style_tessellation_specification);
  texture_image : label;
  texture_coordinates : LIST[1:?] OF LIST[2:2] OF non_negative_real;
  texture_format : texture_file_type;
  repeating_pattern : BOOLEAN;
END_ENTITY;
(*

Attribute definitions:

texture_image: the name of the external image file containing the texture to be mapped to a tessellated_face_or_tessellated_surface_set .

NOTE    The name should include the format extension corresponding to one of the formats enumerated in texture_file_type.

texture_coordinates: the list of (U,V) texture coordinates associated to the 3D coordinates of the points of the associated tessellated geometry. When the texture is mapped on a tessellated_face without pnindex, the first element of the list is the texture (U,V) value of the first point of the associated coordinates_list. When the texture is mapped on a tessellated_face with pnindex , the first element of the list is the texture (U,V) value of the first point indicated by pnindex. When the texture is mapped on a tessellated_surface_set, the first element of the list is the texture (U,V) value of the first point of the associated coordinates_list.

texture_format: the name of the format extension of the external image file containing the texture to be mapped to the tessellated_face_or_tessellated_surface_set.

repeating_pattern: when repeating_pattern is FALSE, U and V value range for texture_coordinates shall be 0.0 to 1.0, where (0,0) is the bottom-left corner and (1,1) is the top-right corner of the texture image. When repeating_pattern is TRUE, U and V values greater than 0.0 are permitted; in this case the integer part is subtracted to obtain a number in a range 0.0 to 1.0 for the texture mapping.

6.4.49 styled_item   EXPRESS-G

A styled_item is a type of representation_item with associated presentation style.

EXPRESS specification:

*)
ENTITY styled_item
  SUBTYPE OF (representation_item);
  styles : SET[0:?] OF presentation_style_assignment;
  item : styled_item_target;
WHERE
  WR1: (SIZEOF(styles) = 0) AND ( 'PRESENTATION_APPEARANCE_SCHEMA.STYLED_TESSELLATED_ITEM_WITH_COLOURS' IN TYPEOF(self)) OR (SIZEOF(styles) = 1) OR (SIZEOF(styles) > 1) AND (SIZEOF(QUERY(pres_style <* styles | NOT ('PRESENTATION_APPEARANCE_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(pres_style)))) = 0);
  WR2: NOT ('PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM' IN TYPEOF(item));
  WR3: ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(item)) OR ('GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item)) OR ('PRESENTATION_APPEARANCE_SCHEMA.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM' IN TYPEOF(SELF));
END_ENTITY;
(*

Attribute definitions:

styles: the styles assigned to the item.

item: the item to which styles are assigned.

Formal propositions:

WR1: The set styles shall contain only one style or all members of the set shall be presentation_style_by_context entities.

NOTE    This is to ensure that there are no style conflicts; more than one style may be specified only when the context in which each style applies is given.

WR2: The item to be styled shall not be a styled_item.

WR3: Unless the styled_item is a context_dependent_over_riding_styled_item, the styled item shall either be a mapped_item or a geometric_representation_item.

6.4.50 styled_tessellated_face_or_surface_with_single_texture   EXPRESS-G

A styled_tessellated_face_or_surface_with_single_texture is a type of styled_item that assigns a visual texture to tessellated geometry, which may be either a tessellated_face or a collection of tessellated faces defined in a tessellated_surface_set .

EXPRESS specification:

*)
ENTITY styled_tessellated_face_or_surface_with_single_texture
  SUBTYPE OF (styled_item);
  SELF\styled_item.styles : SET[1:1] OF presentation_style_assignment;
  SELF\styled_item.item : tessellated_face_or_tessellated_surface_set;
DERIVE
  texture_style_specification : texture_style_tessellation_specification := styles[LOINDEX(styles)]\presentation_style_assignment.styles[LOINDEX(styles)];
WHERE
  WR1: ('PRESENTATION_APPEARANCE_SCHEMA.SINGLE_TEXTURE_STYLE_TESSELLATION_SPECIFICATION' IN TYPEOF(styles[LOINDEX(styles)]\presentation_style_assignment.styles[LOINDEX(styles)])) AND (SIZEOF(styles[LOINDEX(styles)]\presentation_style_assignment.styles) = 1);
  WR2: NOT ('GEOMETRIC_MODEL_SCHEMA.TRIANGULATED_FACE' IN TYPEOF(item)) OR (( ((SIZEOF(item\triangulated_face.pnindex) > 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = SIZEOF(item\triangulated_face.pnindex)))) OR ((SIZEOF(item\triangulated_face.pnindex) = 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = item\tessellated_face.coordinates\coordinates_list.npoints)));
  WR3: NOT ('GEOMETRIC_MODEL_SCHEMA.COMPLEX_TRIANGULATED_FACE' IN TYPEOF(item)) OR ((SIZEOF(item\complex_triangulated_face.pnindex) > 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = SIZEOF(item\complex_triangulated_face.pnindex))) OR ((SIZEOF(item\complex_triangulated_face.pnindex) = 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = item\tessellated_face.coordinates\coordinates_list.npoints));
  WR4: NOT ('GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SURFACE_SET' IN TYPEOF(item)) OR (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = item\tessellated_surface_set.coordinates\coordinates_list.npoints);
END_ENTITY;
(*

Attribute definitions:

styles: specifies the presentation_style_assignment that specifies the texture defined by a texture_style_tessellation_specification.

NOTE    The actual appearance is realized in the model by the presentation_style_assignment entity referenced by the appearance attribute.

item: specifies the tessellated geometry to which the texture style is applied.

texture_style_specification: specifies the visual texture to be applied.

Formal propositions:

WR1: the SET of styles shall contain only one element.

WR2: if the item styled is a triangulated_face then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the triangulated_face; this number is obtained from either the pnindex attribute of triangulated_face (if non-zero), or from the npoints attribute of the coordinates_list of the triangulated_face.

WR3: if the item styled is a complex_triangulated_face then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the complex_triangulated_face; this number is obtained from either the pnindex attribute of complex_triangulated_face (if non zero), or from the npoints attribute of the coordinates_list of the complex_triangulated_face.

WR4: if the item styled is a tessellated_surface_set then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the tessellated_surface_set; this number is obtained from the npoints attribute of the coordinates_list of the tessellated_surface_set.

6.4.51 styled_tessellated_item_with_colours   EXPRESS-G

A styled_tessellated_item_with_colours is a type of styled_item that assigns colour values to the vertices of tessellated surfaces.

EXPRESS specification:

*)
ENTITY styled_tessellated_item_with_colours
  SUBTYPE OF (styled_item);
  SELF\styled_item.item : tessellated_surface_item;
  colour_type : colour_type_enum;
  colour_values : LIST[1:?] OF LIST[3:4] OF unsigned_8_bit_integer;
DERIVE
  coloured_coordinate_values : coordinates_list := get_coordinate_values(item );
WHERE
  WR1: SIZEOF(SELF\styled_item.styles)= 0;
  WR2: ((colour_type = RGB8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 3)))= 0)) OR ((colour_type = RGBT8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 4)))= 0));
  WR3: SIZEOF(colour_values) = coloured_coordinate_values\coordinates_list.npoints;
END_ENTITY;
(*

Attribute definitions:

item: the tessellated geometry to which the colours are assigned, this may be a tessellated_face, a tessellated_shell, a tessellated_solid, or a tessellated_surface_set.

colour_type: the colour formats used by the colour_values attribute.

colour_values: an unlimited list of three or four integers representing a vertex colour.

coloured_coordinate_values: the coordinates_list of the tessellated_surface_item specified by the item attribute; this coordinates_list is populated by the get_coordinate_values function.

Formal propositions:

WR1: The inherited styles attribute be an empty SET.

WR2: If the colour_type is RGB8 then colour_values shall be a list of three unsigned eight-bit integers, or, if the colour_type is RGBT8 then colour_values shall be a list of four unsigned eight-bit integers.

WR3: The number of colour_values shall be equal to the number of points in the associated coordinates_list.

6.4.52 surface_rendering_properties   EXPRESS-G

A surface_rendering_properties is a definition of those properties of a surface which are required to compute a realistic visualization of surfaces by use of rendering techniques.

EXPRESS specification:

*)
ENTITY surface_rendering_properties;
  rendered_colour : colour;
END_ENTITY;
(*

Attribute definitions:

rendered_colour: the presentation colour of a surface for use during the rendering process.

6.4.53 surface_side_style   EXPRESS-G

A surface_side_style is a type of founded_item. A surface_side_style is a collection of surface styles used in the presentation of the side of a surface.

EXPRESS specification:

*)
ENTITY surface_side_style
  SUBTYPE OF (founded_item);
  name : label;
  styles : SET[1:7] OF surface_style_element_select;
WHERE
  WR1: SIZEOF(QUERY( style1 <* styles | SIZEOF(QUERY( style2 <* styles - style1 | TYPEOF(style1) = TYPEOF(style2) )) > 0 )) = 0;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the surface_side_style is referred to.

styles: a collection of different surface styles.

Formal propositions:

WR1: All of the styles shall be of different types.

6.4.54 surface_style_boundary   EXPRESS-G

A surface_style_boundary is a type of founded_item. A surface_style_boundary is the surface style that is applied to the boundary curves of a surface.

EXPRESS specification:

*)
ENTITY surface_style_boundary
  SUBTYPE OF (founded_item);
  style_of_boundary : curve_or_render;
END_ENTITY;
(*

Attribute definitions:

style_of_boundary: the style for the boundary curves of a surface.

6.4.55 surface_style_control_grid   EXPRESS-G

A surface_style_control_grid is a type of founded_item. A surface_style_control_grid is the surface style that is applied to the mesh of control points which are used for definition of surfaces.

EXPRESS specification:

*)
ENTITY surface_style_control_grid
  SUBTYPE OF (founded_item);
  style_of_control_grid : curve_or_render;
END_ENTITY;
(*

Attribute definitions:

style_of_control_grid: the style for the control grid of a surface.

NOTE    This style has only an effect on surfaces which are defined over a mesh of control points. These surfaces include the following types:

6.4.56 surface_style_fill_area   EXPRESS-G

A surface_style_fill_area is a type of founded_item. A surface_style_fill_area is the surface style that presents a surface by mapping a fill area onto the surface.

EXPRESS specification:

*)
ENTITY surface_style_fill_area
  SUBTYPE OF (founded_item);
  fill_area : fill_area_style;
END_ENTITY;
(*

Attribute definitions:

fill_area: the fill_area_style associated with the two-dimensional parameter space of a surface that will be mapped onto the surface itself.

6.4.57 surface_style_parameter_line   EXPRESS-G

A surface_style_parameter_line is a type of founded_item. A surface_style_parameter_line is the surface style that is applied to the iso-parameter lines on a surface.

EXPRESS specification:

*)
ENTITY surface_style_parameter_line
  SUBTYPE OF (founded_item);
  style_of_parameter_lines : curve_or_render;
  direction_counts : SET[1:2] OF direction_count_select;
WHERE
  WR1: (HIINDEX(direction_counts) = 1) XOR (TYPEOF(direction_counts[1]) <> TYPEOF(direction_counts[2]));
END_ENTITY;
(*

Attribute definitions:

style_of_parameter_lines: the style for the iso-parameter curves of a surface.

direction_counts: a set of u_direction_count and v_direction_count indicating the number of iso-parameter curves in the u and v directions.

Formal propositions:

WR1: If there are two members of the direction_counts set, they shall not be of the same type.

6.4.58 surface_style_reflectance_ambient   EXPRESS-G

A surface_style_reflectance_ambient is a specification of the ambient part of the reflectance behaviour of a surface.

NOTE 1   The reflectance calculation is conceptually applied at one or more points on a surface being lit and shaded and produces a colour at such points. Input to the reflectance calculation includes the position at which the reflectance equation is to be applied, the surface normal, the surface colour at that position, the light sources, and the three-dimensional camera model.

NOTE 2   Suggested reflectance equations can be found in Annex E.

EXPRESS specification:

*)
ENTITY surface_style_reflectance_ambient;
  ambient_reflectance : REAL;
END_ENTITY;
(*

Attribute definitions:

ambient_reflectance: the reflectance coefficient for the ambient part of the reflectance equation.

6.4.59 surface_style_reflectance_ambient_diffuse   EXPRESS-G

A surface_style_reflectance_ambient_diffuse is a type of surface_style_reflectance_ambient. A surface_style_reflectance_ambient_diffuse specifies the diffuse part of the reflectance behaviour of a surface.

NOTE    Suggested reflectance equations can be found in Annex E.

EXPRESS specification:

*)
ENTITY surface_style_reflectance_ambient_diffuse
  SUBTYPE OF (surface_style_reflectance_ambient);
  diffuse_reflectance : REAL;
END_ENTITY;
(*

Attribute definitions:

diffuse_reflectance: the reflectance coefficient for the diffuse part of the reflectance equation.

6.4.60 surface_style_reflectance_ambient_diffuse_specular   EXPRESS-G

A surface_style_reflectance_ambient_diffuse_specular is a type of surface_style_reflectance_ambient_diffuse. A surface_style_reflectance_ambient_diffuse_specular specifies the specular part of the reflectance behaviour of a surface.

NOTE    Suggested reflectance equations can be found in Annex E.

EXPRESS specification:

*)
ENTITY surface_style_reflectance_ambient_diffuse_specular
  SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
  specular_reflectance : REAL;
  specular_exponent : REAL;
  specular_colour : colour;
END_ENTITY;
(*

Attribute definitions:

specular_reflectance: the reflectance coefficient for the specular part of the reflectance equation.

specular_exponent: the exponent for the specular part of the reflectance equation.

specular_colour: the colour for the specular part of the reflectance equation.

6.4.61 surface_style_rendering   EXPRESS-G

A surface_style_rendering is the realistic visualization of surfaces by use of rendering techniques. The effect of the reflectance calculation shall be as if the calculation is performed in the coordinate-system in which the camera_model is founded.

EXPRESS specification:

*)
ENTITY surface_style_rendering;
  rendering_method : shading_surface_method;
  surface_colour : colour;
END_ENTITY;
(*

Attribute definitions:

rendering_method: the method for interpolating colours across surfaces.

surface_colour: the colour used to render the surface.

6.4.62 surface_style_rendering_with_properties   EXPRESS-G

A surface_style_rendering_with_properties is a type of surface_style_rendering. A surface_style_rendering_with_properties allows the realistic visualization of surfaces with properties which determine transparency and reflection characteristics.

EXPRESS specification:

*)
ENTITY surface_style_rendering_with_properties
  SUBTYPE OF (surface_style_rendering);
  properties : SET[1:2] OF rendering_properties_select;
WHERE
  WR1: (HIINDEX(properties) = 1) XOR (TYPEOF(properties[1]) <> TYPEOF(properties[2]));
END_ENTITY;
(*

Attribute definitions:

properties: the collection of rendering properties for a surface.

Formal propositions:

WR1: All of the properties shall be of different types.

6.4.63 surface_style_segmentation_curve   EXPRESS-G

A surface_style_segmentation_curve is a type of founded_item. A surface_style_segmentation_curve is the surface style that is applied to the curves on the segment borders of a surface.

EXPRESS specification:

*)
ENTITY surface_style_segmentation_curve
  SUBTYPE OF (founded_item);
  style_of_segmentation_curve : curve_or_render;
END_ENTITY;
(*

Attribute definitions:

style_of_segmentation_curve: the style for the segmentation curves of a surface.

NOTE    This style has only an effect on surfaces which have segmentation curves. These surfaces include the following types:

6.4.64 surface_style_silhouette   EXPRESS-G

A surface_style_silhouette is a type of founded_item. A surface_style_silhouette is the surface style that is applied to the silhouette curves of a surface.

EXPRESS specification:

*)
ENTITY surface_style_silhouette
  SUBTYPE OF (founded_item);
  style_of_silhouette : curve_or_render;
END_ENTITY;
(*

Attribute definitions:

style_of_silhouette: the style for the silhouette curves within a surface.

6.4.65 surface_style_transparent   EXPRESS-G

A surface_style_transparent is the surface rendering property that specifies the degree of transparency of a surface.

EXPRESS specification:

*)
ENTITY surface_style_transparent;
  transparency : REAL;
WHERE
  WR1: {0.0 <= transparency <= 1.0};
END_ENTITY;
(*

Attribute definitions:

transparency: the degree of transparency indicated by the percentage of light traversing the surface.

Formal propositions:

WR1: The transparency shall be between 0.0 and 1.0.

6.4.66 surface_style_usage   EXPRESS-G

A surface_style_usage is a type of founded_item. A surface_style_usage is the application of a surface_side_style_select to the positive side, negative side, or both sides of a surface.

EXPRESS specification:

*)
ENTITY surface_style_usage
  SUBTYPE OF (founded_item);
  side : surface_side;
  style : surface_side_style_select;
END_ENTITY;
(*

Attribute definitions:

side: the indication of which side of the surface to apply the style.

style: the style which shall be applied to the surface.

6.4.67 symbol_colour   EXPRESS-G

A symbol_colour is the presentation style that specifies the colour of annotation_symbols.

EXPRESS specification:

*)
ENTITY symbol_colour;
  colour_of_symbol : colour;
END_ENTITY;
(*

Attribute definitions:

colour_of_symbol: the colour for the symbol.

6.4.68 symbol_element_style   EXPRESS-G

A symbol_element_style is a type of founded_item. A symbol_element_style is the presentation style that specifies the visual appearance of the constituent parts of annotation_symbols.

EXPRESS specification:

*)
ENTITY symbol_element_style
  SUBTYPE OF (founded_item);
  style_of_symbol : presentation_style_assignment;
WHERE
  WR1: SIZEOF (QUERY ( style <* style_of_symbol\presentation_style_assignment.styles | 'PRESENTATION_APPEARANCE_SCHEMA.SYMBOL_STYLE' IN TYPEOF (style))) = 0;
  WR2: NOT ('PRESENTATION_APPEARANCE_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (style_of_symbol) );
END_ENTITY;
(*

Attribute definitions:

style_of_symbol: the presentation_style_assignment for the constituent parts of a symbol.

Formal propositions:

WR1: There shall be no symbol_style in the style_of_symbol.

WR2: The style_of_symbol shall not be dependent on a context.

6.4.69 symbol_style   EXPRESS-G

A symbol_style is a type of founded_item. A symbol_style is the presentation style that specifies the visual appearance of annotation_symbols. The style is specified as one or more styles for the constituents of the symbol, or as a colour to be used in presenting the entire symbol.

EXPRESS specification:

*)
ENTITY symbol_style
  SUBTYPE OF (founded_item);
  name : label;
  style_of_symbol : symbol_style_select;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the symbol_style is referred to.

style_of_symbol: the symbol_element_style or symbol_colour that specifies the visual appearance of a symbol.

6.4.70 text_style   EXPRESS-G

A text_style is a type of founded_item. A text_style is the presentation style for annotation text.

EXPRESS specification:

*)
ENTITY text_style
  SUBTYPE OF (founded_item);
  name : label;
  character_appearance : character_style_select;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the text_style is referred to.

character_appearance: the character style to be used for presenting the text.

6.4.71 text_style_for_defined_font   EXPRESS-G

A text_style_for_defined_font is a part of the definition of a text_style, defining the colour in which a text to display.

EXPRESS specification:

*)
ENTITY text_style_for_defined_font;
  text_colour : colour;
END_ENTITY;
(*

Attribute definitions:

text_colour: the colour to be used for presenting the text.

6.4.72 text_style_with_box_characteristics   EXPRESS-G

A text_style_with_box_characteristics is a type of text_style that specifies the characteristics of the character boxes within the text.

EXPRESS specification:

*)
ENTITY text_style_with_box_characteristics
  SUBTYPE OF (text_style);
  characteristics : SET[1:4] OF box_characteristic_select;
WHERE
  WR1: SIZEOF( QUERY( c1 <* characteristics | SIZEOF( QUERY( c2 <* characteristics - c1 | TYPEOF (c1) = TYPEOF (c2) )) > 0 )) = 0;
END_ENTITY;
(*

Attribute definitions:

characteristics: the characteristics of the character boxes. These characteristics determine height, width, rotation angle, and slant angle of the character boxes.

Formal propositions:

WR1: The characteristics shall be of different types.

6.4.73 text_style_with_justification   EXPRESS-G

A text_style_with_justification is a type of text_style that specifies the justification of text.

EXPRESS specification:

*)
ENTITY text_style_with_justification
  SUBTYPE OF (text_style);
  justification : text_justification;
END_ENTITY;
(*

Attribute definitions:

justification: the method of text justification in a line.

6.4.74 text_style_with_mirror   EXPRESS-G

A text_style_with_mirror is a type of text_style that has a mirroring axis defined for the characters.

NOTE    Figure 26 shows the definition of text_style_with_mirror.



Figure 26 —  Text style with mirror

Figure 26 —  Text style with mirror

EXPRESS specification:

*)
ENTITY text_style_with_mirror
  SUBTYPE OF (text_style);
  mirror_placement : axis2_placement;
END_ENTITY;
(*

Attribute definitions:

mirror_placement: the placement and orientation of the mirror axis. The mirror axis passes through the location of the axis2_placement and is parallel to the x axis defined by the axis2_placement.

Informal propositions:

IP1: A text_style_with_mirror.mirror_placement shall have the axis2_placement founded in the same context as the text that is being mirrored.

6.4.75 text_style_with_spacing   EXPRESS-G

A text_style_with_spacing is a type of text_style that has a spacing defined for the characters.

EXPRESS specification:

*)
ENTITY text_style_with_spacing
  SUBTYPE OF (text_style);
  character_spacing : character_spacing_select;
END_ENTITY;
(*

Attribute definitions:

character_spacing: the distance between the character boxes of adjacent characters.

6.4.76 texture_style_specification   EXPRESS-G

A texture_style_specification is a type of founded_item and is an abstract entity that defines a visual texture.

EXPRESS specification:

*)
ENTITY texture_style_specification
  ABSTRACT SUPERTYPE
  SUBTYPE OF (founded_item);
END_ENTITY;
(*

6.4.77 texture_style_tessellation_specification   EXPRESS-G

A texture_style_tessellation_specification is a type of texture_style_specification an abstract entity that defines a visual texture to be assigned to tessellated geometry.

EXPRESS specification:

*)
ENTITY texture_style_tessellation_specification
  ABSTRACT SUPERTYPE
  SUBTYPE OF (texture_style_specification);
END_ENTITY;
(*

6.4.78 two_direction_repeat_factor   EXPRESS-G

A two_direction_repeat_factor is a type of one_direction_repeat_factor. A two_direction_repeat_factor combines two vectors which are used in a fill_area_style_tiles for determining the shape and relative location of tiles. Given the initial position I of any tile, the two_direction_repeat_factor R = (R1, R2) determines eight new positions according to the expression:
two_direction_repeat_factor_expression.gif

NOTE    Figure 27 shows the positions defined by a two_direction_repeat_factor.



Figure 27 —  Two direction repeat factor

Figure 27 —  Two direction repeat factor

EXPRESS specification:

*)
ENTITY two_direction_repeat_factor
  SUBTYPE OF (one_direction_repeat_factor);
  second_repeat_factor : vector;
END_ENTITY;
(*

Attribute definitions:

second_repeat_factor: the vector which specifies the relative positioning of tiles in the second direction.

6.5 presentation_appearance_schema subtype constraint definitions

6.5.1 founded_item_subtypes   EXPRESS-G

The founded_item_subtypes constraint specifies a constraint that applies to instances of subtypes of founded_item.

A founded_item_subtypes is a constraint that applies to instances of subtypes of founded_item.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT founded_item_subtypes FOR founded_item;
  ONEOF (approximation_tolerance,
         approximation_tolerance_deviation,
         approximation_tolerance_parameter,
         character_glyph_style_outline,
         character_glyph_style_stroke,
         curve_style,
         curve_style_font,
         curve_style_font_and_scaling,
         curve_style_font_pattern,
         externally_defined_style,
         fill_area_style,
         point_style,
         pre_defined_presentation_style,
         presentation_style_assignment,
         surface_side_style,
         surface_style_boundary,
         surface_style_control_grid,
         surface_style_fill_area,
         surface_style_parameter_line,
         surface_style_segmentation_curve,
         surface_style_silhouette,
         surface_style_usage,
         symbol_element_style,
         symbol_style,
         text_style);
END_SUBTYPE_CONSTRAINT;
(*

6.5.2 pas_geometric_representation_item_subtypes   EXPRESS-G

The pas_geometric_representation_item_subtypes constraint specifies a constraint that applies to instances of subtypes of geometric_representation_item.

A pas_geometric_representation_item_subtypes is a constraint that applies to instances of subtypes of geometric_representation_item.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT pas_geometric_representation_item_subtypes FOR geometric_representation_item;
  ONEOF (curve,
         curve_style_curve_pattern,
         curve_style_curve_pattern_set,
         externally_defined_hatch_style,
         externally_defined_tile_style,
         fill_area_style_hatching,
         fill_area_style_tile_coloured_region,
         fill_area_style_tile_curve_with_style,
         fill_area_style_tile_symbol_with_style,
         fill_area_style_tiles,
         one_direction_repeat_factor,
         point,
         pre_defined_hatch_style,
         pre_defined_tile_style,
         vector);
END_SUBTYPE_CONSTRAINT;
(*

6.6 presentation_appearance_schema function definitions

6.6.1 acyclic_occlusion_precedence

The acyclic_occlusion_precedence function is a function which checks to see if there is any tree containing a set of hiding_or_blanking_select and a given occlusion_precedence which has a hiding_or_blanking_select which is both a root and a leaf of the same subtree. It returns TRUE if there is no such subtree, and FALSE if there is.

EXPRESS specification:

*)
FUNCTION acyclic_occlusion_precedence (relation : occlusion_precedence; set_of_lower : SET[0:?] OF hiding_or_blanking_select) : BOOLEAN;
LOCAL
      x : SET OF occlusion_precedence;
      local_set_of_lower : SET OF hiding_or_blanking_select;
    END_LOCAL;
    REPEAT i:=1 TO HIINDEX(set_of_lower);
      IF relation.higher_precedence :=: set_of_lower[i] THEN
        RETURN(FALSE);
      END_IF;
    END_REPEAT;
    x := bag_to_set (USEDIN ( relation.higher_precedence,
                   'PRESENTATION_APPEARANCE_SCHEMA.'+
           'OCCLUSION_PRECEDENCE.LOWER_PRECEDENCE'));
    local_set_of_lower := set_of_lower + relation.higher_precedence;
    IF SIZEOF (x) > 0 THEN
      REPEAT i:=1 TO HIINDEX (x);
        IF NOT acyclic_occlusion_precedence(x[i] ,
                                     local_set_of_lower) THEN
            RETURN (FALSE);
        END_IF;
      END_REPEAT;
    END_IF;
    RETURN (TRUE);
END_FUNCTION;
(*

Argument definitions:

relation: the occlusion_precedence which is tested. This is input to the function.

set_of_lower: the set of items that are referenced directly or indirectly by lower_precedence of the relation. This argument is input to the function. On initial input this set contains as its only element the lower_precedence item of the relation.

6.6.2 get_coordinate_values

The get_coordinate_values function returns the coordinates_list for a tessellated_face, a tessellated_shell, a tessellated_solid, or a tessellated_surface_set.

EXPRESS specification:

*)
FUNCTION get_coordinate_values (source : tessellated_surface_item) : coordinates_list;
LOCAL
      coordinate_values : coordinates_list;
      max : INTEGER;
 END_LOCAL;
       (* If source is of type tessellated_face its single coordinates_list is returned *)  
    CASE TRUE OF
    'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source): --first case 
    BEGIN
      coordinate_values := source\tessellated_face.coordinates;
      RETURN(coordinate_values);
    END;
       (* If source is of type tessellated_surface_set its single coordinates_list is returned *)  
   'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SURFACE_SET' IN TYPEOF(source): --second case
    BEGIN
      coordinate_values := source\tessellated_surface_set.coordinates;
      RETURN(coordinate_values);
    END;    
       (* For complex cases of tessellated_solid or tessellated_shell multiple coordinates_lists
        may occur. A valid return is only possible if a single coordinates_list is used for all components of the shell or solid *)
       (*  A tessellated_solid, or tessellated_shell  has a SET of teessellated_structured_items which must be inspected, the local variable coordinate_values is 
        set to the coordinates_list referenced by items[1] and is later compared to other referenced coordinates_lists *)
   'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SOLID' IN TYPEOF(source): -- third case
    BEGIN
      IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_solid.items[1]) THEN
        coordinate_values := source\tessellated_solid.items[1]\tessellated_face.coordinates;
      END_IF;
     IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_solid.items[1]) THEN
       coordinate_values := source\tessellated_solid.items[1]\tessellated_edge.coordinates;
     END_IF;
     IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_solid.items[1]) THEN
       coordinate_values := source\tessellated_solid.items[1]\tessellated_vertex.coordinates;
     END_IF;
     max := SIZEOF(source\tessellated_solid.items);
      IF   max = 1 THEN 
       RETURN(coordinate_values);
     (* simple case with only 1 item in the list *)
      ELSE REPEAT i := 2 TO max;
       (* check that each item on the list references the same coordintes_list as items[1], if NOT rerurn ? *) 
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_solid.items[i]) THEN
          IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_face.coordinates) THEN 
           RETURN (?);
          END_IF;  
        END_IF;
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_solid.items[i]) THEN
          IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_edge.coordinates) THEN
           RETURN(?);
          END_IF;
        END_IF;  
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_solid.items[i]) THEN
         IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_vertex.coordinates) THEN
           RETURN(?);
         END_IF;  
       END_IF; 
     END_REPEAT;
     RETURN(coordinate_values);
      (* all items referenced by the tessellated_solid share the same coordinates list which is now returned. *) 
    END_IF;
  END;   
      (* tessellated_shell has a SET of tessellated_structured_items which must be inspected *)
   'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SHELL' IN TYPEOF(source): --fourth case
    BEGIN
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_shell.items[1]) THEN
         coordinate_values := source\tessellated_shell.items[1]\tessellated_face.coordinates;
        END_IF;
       IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_shell.items[1]) THEN
         coordinate_values := source\tessellated_shell.items[1]\tessellated_edge.coordinates;
       END_IF;
       IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_shell.items[1]) THEN
        coordinate_values := source\tessellated_shell.items[1]\tessellated_vertex.coordinates;
       END_IF;
       max := SIZEOF(source\tessellated_shell.items);
       IF  max = 1 THEN RETURN(coordinate_values);
       (* simple case with only 1 item in the list *)
       ELSE REPEAT i := 2 TO max;
        (* check that each item on the list references the same coordinates_list as item[1], if NOT rerurn ? *) 
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_shell.items[i]) THEN
         IF NOT(coordinate_values :=: source\tessellated_shell.items[i]\tessellated_face.coordinates) THEN 
           RETURN (?);
         END_IF;  
        END_IF;
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_shell.items[i]) THEN
          IF NOT (coordinate_values :=: source\tessellated_shell.items[i]\tessellated_edge.coordinates) THEN
            RETURN(?);
          END_IF;
        END_IF;  
        IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_shell.items[i]) THEN
         IF NOT (coordinate_values :=: source\tessellated_shell.items[i]\tessellated_vertex.coordinates) THEN
           RETURN(?);
         END_IF;  
        END_IF; 
      END_REPEAT;
      RETURN(coordinate_values);
       (* all items referenced by the tessellated_shell share the same coordinates_list which is now returned. *) 
     END_IF;
   END;
   END_CASE;
END_FUNCTION;
(*

Argument definitions:

source: the tessellated_face, tessellated_shell, tessellated_solid, or tessellated_surface_set, for which the coordinates_list is required.



*)
END_SCHEMA;  -- presentation_appearance_schema
(*


© ISO 2021 — All rights reserved