Information technology — SEDRIS —
Part 1:  Functional specification

5 Fundamental data types

5.1 Introduction

5.1.1 Topics

Table 5.1 lists the topics of this clause.

Table 5.1 — Topics

5 Fundamental data types

5.1 Introduction

5.1.1 Topics

5.1.2 Description

5.2 Basic fundamental data types

5.2.1 Overview

5.2.2 Octet

5.2.3 Integers

5.2.3.1 Description

5.2.3.2 Byte

5.2.3.3 Byte_Unsigned

5.2.3.4 Byte_Positive

5.2.3.5 Short_Integer

5.2.3.6 Short_Integer_Unsigned

5.2.3.7 Short_Integer_Positive

5.2.3.8 Integer

5.2.3.9 Integer_Unsigned

5.2.3.10 Integer_Positive

5.2.4 Floating point numbers

5.2.4.1 Description

5.2.4.2 Float

5.2.4.3 Long_Float

5.2.5 Characters and strings

5.2.5.1 Description

5.2.5.2 Character

5.2.5.3 Character strings

5.2.6 Enumerated data types

5.2.6.1 Description

5.2.6.2 Access_Mode

5.2.6.3 Boolean

5.2.6.4 Branch_Range_Matching

5.2.6.5 Colour_Binding

5.2.6.6 Continuous_LOD_Select_Choice

5.2.6.7 Hierarchy_Inclusion

5.2.6.8 Image_Scan_Direction

5.2.6.9 Image_Scan_Direction_Z

5.2.6.10 Interval_Type

5.2.6.11 ITR_Behaviour

5.2.6.12 LSR_Transformation_Axis

5.2.6.13 Model_Reference_Type

5.2.6.14 Month

5.2.6.15 Object_Inclusion

5.2.6.16 Octant

5.2.6.17 Point_Light_Display_Type

5.2.6.18 Present_In

5.2.6.19 Quadrant

5.2.6.20 Reference_Surface_Elevation_Select

5.2.6.21 Reference_Surface_LOD_Select

5.2.6.22 Return_Code

5.2.6.23 Search_Bounds_Closure

5.2.6.24 Search_Dimension

5.2.6.25 Sibling_Traversal_Order

5.2.6.26 State_Mismatch_Behaviour

5.2.7 Selection data types

5.2.7.1 Description

5.2.7.2 API_Function

5.2.7.3 Axis_Alignment

5.2.7.4 Camera_Projection_Type

5.2.7.5 Colour_Model
5.2.7.6 Data_Table_Data_Value_Type

5.2.7.7 DRM_Class

5.2.7.8 Element_Type_Code

5.2.7.9 Encoding

5.2.7.10 Enumerated_Or_Selection_Type

5.2.7.11 Feature_Topology_Level

5.2.7.12 Font_Style

5.2.7.13 Functional_Association_Meaning_Type

5.2.7.14 Geometric_Centre_Code

5.2.7.15 Geometry_Topology_Level

5.2.7.16 Grid_Overlap_Operator

5.2.7.17 Hierarchy_Summary_Multiplicity_Code

5.2.7.18 Image_Component_Type

5.2.7.19 Image_Mapping_Method

5.2.7.20 Image_Projection_Type

5.2.7.21 Image_Signature

5.2.7.22 Image_Wrap

5.2.7.23 Index_Code

5.2.7.24 Interpolation_Type

5.2.7.25 Interval_Value_Type

5.2.7.26 LOD_Data_Type

5.2.7.27 Media_Format

5.2.7.28 Ordering_Reason

5.2.7.29 Pixel_Fill_Method

5.2.7.30 Predefined_Function

5.2.7.31 Property_Code_Type

5.2.7.32 Reference_Vector_Type

5.2.7.33 Search_Rule_Type

5.2.7.34 Search_Type

5.2.7.35 Search_Value_Type

5.2.7.36 Season

5.2.7.37 Shading_Method

5.2.7.38 Single_Value_Type

5.2.7.39 Sound_Format

5.2.7.40 Spacing_Type

5.2.7.41 Spatial_Association_Meaning_Type

5.2.7.42 Spatial_Index_Spacing_Unit

5.2.7.43 Status_Code

5.2.7.44 Symbol_Format

5.2.7.45 Time_Configuration

5.2.7.46 Time_Data_Type

5.2.7.47 Time_Measurement_Type

5.2.7.48 Time_Of_Day

5.2.7.49 Time_Significance

5.2.7.50 Traversal_Order

5.2.7.51 Underline_Style

5.2.7.52 Union_Reason

5.2.7.53 Unmatched_State_Behaviour

5.2.7.54 Variable_Code

5.2.7.55 Volumetric_Shape

5.2.8 Set Data Types

5.2.8.1 Description

5.2.8.2 Colour_Mapping

5.2.8.3 Display_Side

5.2.8.4 Display_Style

5.2.8.5 General_Hierarchy_Order

5.2.8.6 Polygon_Flag

5.2.8.7 Presentation_Domain

5.3 Structured fundamental data types

5.3.1 Description

5.3.2 Array data types

5.3.2.1 Notation

5.3.2.2 Matrix_3x3

5.3.2.3 Matrix_4x4

5.3.3 Record data types

5.3.3.1 Description

5.3.3.2 Absolute_Time_Fields

5.3.3.3 Absolute_Time_Interval_Entry

5.3.3.4 Absolute_Time_Interval_Fields

5.3.3.5 Address

5.3.3.6 Aggregate_Feature_Fields

5.3.3.7 Aggregate_Geometry_Fields

5.3.3.8 Alternate_Hierarchy_Parameters

5.3.3.9 Alternate_Hierarchy_Related_Features_Fields

5.3.3.10 Alternate_Hierarchy_Related_Geometry_Fields

5.3.3.11 Animation_Behaviour_Fields

5.3.3.12 Animation_Range

5.3.3.13 Animation_Related_Geometry_Fields

5.3.3.14 Animation_Select_Parameters

5.3.3.15 Any_Enumerated_Or_Selection_Value

5.3.3.16 Any_Search_Value

5.3.3.17 Arc_Fields

5.3.3.18 Axis_Fields

5.3.3.19 Base_Positional_Light_Fields

5.3.3.20 Base_Spatial_Association_Data_Fields

5.3.3.21 Base_Summary_Item_Fields

5.3.3.22 Base_Time_Data_Fields

5.3.3.23 Blend_Directional_Light_Fields

5.3.3.24 Browse_Media_Fields

5.3.3.25 Camera_Point_Fields

5.3.3.26 CC_3D_Location_Fields

5.3.3.27 CD_3D_Location_Fields

5.3.3.28 CD_Surface_Location_Fields

5.3.3.29 Citation_Fields

5.3.3.30 Classification_Data_Fields

5.3.3.31 Classification_Entry

5.3.3.32 Classification_Parameters

5.3.3.33 Classification_Related_Features_Fields

5.3.3.34 Classification_Related_Geometry_Fields

5.3.3.35 CM_3D_Location_Fields

5.3.3.36 CMY_Colour_Control_Link_Fields

5.3.3.37 CMY_Colour_Fields

5.3.3.38 CMY_Data

5.3.3.39 Colour_Fields

5.3.3.40 Colour_Index_Control_Link_Fields

5.3.3.41 Colour_Index_Fields

5.3.3.42 Colour_Shininess_Fields

5.3.3.43 Colour_Table_Group_Fields

5.3.3.44 Cone_Directional_Light_Fields

5.3.3.45 Conformal_Behaviour_Fields

5.3.3.46 Contact_Information

5.3.3.47 Continuous_LOD_Related_Geometry_Fields

5.3.3.48 Continuous_LOD_Select_Parameters

5.3.3.49 Control_Link_Fields

5.3.3.50 Count_Interval_Value

5.3.3.51 Cylindrical_Volume_Extent_Entry

5.3.3.52 Cylindrical_Volume_Extent_Fields

5.3.3.53 Data_Quality_Element

5.3.3.54 Data_Quality_Fields

5.3.3.55 Data_Table_Data

5.3.3.56 Data_Table_Sub_Extent

5.3.3.57 Distance_LOD_Data_Fields

5.3.3.58 DRM_Class_Fields

5.3.3.59 DRM_Class_Summary_Item_Fields

5.3.3.60 EC_Augmented_3D_Location_Fields

5.3.3.61 EC_Surface_Location_Fields

5.3.3.62 EDCS_Use_Summary_Item_Fields

5.3.3.63 Edge_Direction_Fields

5.3.3.64 EI_3D_Location_Fields

5.3.3.65 Element_Type

5.3.3.66 Ellipse_Fields

5.3.3.67 Enumeration_Axis_Fields

5.3.3.68 Environment_Root_Fields

5.3.3.69 Environmental_Domain_Summary_Fields

5.3.3.70 Face_Direction_Fields

5.3.3.71 Fade_Range_Fields

5.3.3.72 Feature_Face_Fields

5.3.3.73 Feature_Topology_Hierarchy_Fields

5.3.3.74 Feature_Volume_Fields

5.3.3.75 Flashing_Light_Behaviour_Fields

5.3.3.76 Function_Fields

5.3.3.77 Functional_Association_Data_Fields

5.3.3.78 General_Hierarchy_Select

5.3.3.79 Geometric_Centre_Fields

5.3.3.80 Geometry_Topology_Hierarchy_Fields

5.3.3.81 Grid_Overlap_Fields

5.3.3.82 HAEC_3D_Location_Fields

5.3.3.83 HEEC_3D_Location_Fields

5.3.3.84 HEEQ_3D_Location_Fields

5.3.3.85 Hierarchy_Data_Fields

5.3.3.86 Hierarchy_Order_Parameters

5.3.3.87 Hierarchy_Select_Parameters

5.3.3.88 Hierarchy_Summary_Item_Fields

5.3.3.89 HSV_Colour_Control_Link_Fields

5.3.3.90 HSV_Colour_Fields

5.3.3.91 HSV_Data

5.3.3.92 Identification_Fields

5.3.3.93 Image_Anchor_Fields

5.3.3.94 Image_Data

5.3.3.95 Image_Fields

5.3.3.96 Image_Mapping_Function_Fields

5.3.3.97 Image_MIP_Extents

5.3.3.98 Image_Texel_Location_3D

5.3.3.99 In_Out_Fields

5.3.3.100 Index_LOD_Data_Fields

5.3.3.101 Index_Range

5.3.3.102 Infinite_Light_Fields

5.3.3.103 Inline_Colour_Fields

5.3.3.104 Integer_Interval_Value

5.3.3.105 Interface_Template_Fields

5.3.3.106 Interval_Axis_Fields

5.3.3.107 Interval_Value

5.3.3.108 Irregular_Axis_Fields

5.3.3.109 Keywords_Fields

5.3.3.110 LCC_Augmented_3D_Location_Fields

5.3.3.111 LCC_Surface_Location_Fields

5.3.3.112 LCE_3D_Location_Fields

5.3.3.113 Legal_Constraints_Fields

5.3.3.114 Light_Rendering_Properties_Control_Link_Fields

5.3.3.115 Light_Rendering_Properties_Fields

5.3.3.116 Light_Source_Control_Link_Fields

5.3.3.117 Light_Source_Fields

5.3.3.118 Line_Fields

5.3.3.119 Lineage_Fields

5.3.3.120 Linear_Geometry_Fields

5.3.3.121 Literal_Fields

5.3.3.122 Lobe_Data_Fields

5.3.3.123 Local_4x4_Fields

5.3.3.124 Locale

5.3.3.125 LOD_Entry

5.3.3.126 LOD_Related_Features_Fields

5.3.3.127 LOD_Related_Geometry_Fields

5.3.3.128 LOD_Select_Parameters

5.3.3.129 Long_Float_Interval_Value

5.3.3.130 Long_Float_Value

5.3.3.131 LSA_2D_Location_Fields

5.3.3.132 LSP_2D_Location_Fields

5.3.3.133 LSR_2D_Location_Fields

5.3.3.134 LSR_3D_Location_Control_Link_Fields

5.3.3.135 LSR_3D_Location_Fields

5.3.3.136 LTSAS_3D_Location_Fields

5.3.3.137 LTSAS_Surface_Location_Fields

5.3.3.138 LTSC_3D_Location_Fields

5.3.3.139 LTSC_Surface_Location_Fields

5.3.3.140 LTSE_3D_Location_Fields

5.3.3.141 LTSE_Surface_Location_Fields

5.3.3.142 M_Augmented_3D_Location_Fields

5.3.3.143 M_Surface_Location_Fields

5.3.3.144 Map_Scale_LOD_Data_Fields

5.3.3.145 Mesh_Face_Table_Fields

5.3.3.146 Model_Fields

5.3.3.147 Model_Instance_Template_Index_Fields

5.3.3.148 Moving_Light_Behaviour_Fields

5.3.3.149 Octant_Data_Fields

5.3.3.150 Octant_Related_Features_Fields

5.3.3.151 Octant_Related_Geometry_Fields

5.3.3.152 Octant_Select_Parameters

5.3.3.153 OMS_Augmented_3D_Location_Fields

5.3.3.154 OMS_Surface_Location_Fields

5.3.3.155 Overload_Priority_Index_Fields

5.3.3.156 Packed_Hierarchy

5.3.3.157 Packed_Hierarchy_Object

5.3.3.158 Packed_Hierarchy_Reference

5.3.3.159 Parallelepiped_Volume_Extent_Entry

5.3.3.160 Parallelepiped_Volume_Extent_Fields

5.3.3.161 PD_3D_Location_Fields

5.3.3.162 PD_Surface_Location_Fields

5.3.3.163 Perimeter_Related_Feature_Topology_Fields

5.3.3.164 Perimeter_Related_Features_Fields

5.3.3.165 Perimeter_Related_Geometry_Fields

5.3.3.166 Perimeter_Related_Geometry_Topology_Fields

5.3.3.167 Polygon_Control_Link_Fields

5.3.3.168 Polygon_Fields

5.3.3.169 Positional_Light_Fields

5.3.3.170 Predefined_Function_Fields

5.3.3.171 Presentation_Domain_Fields

5.3.3.172 Primitive_Summary_Item_Fields

5.3.3.173 Process_Step_Fields

5.3.3.174 Property_Characteristic_Fields

5.3.3.175 Property_Code

5.3.3.176 Property_Description_Fields

5.3.3.177 Property_Fields

5.3.3.178 Property_Grid_Fields

5.3.3.179 Property_Set_Index_Control_Link_Fields

5.3.3.180 Property_Set_Index_Fields

5.3.3.181 Property_Set_Table_Fields

5.3.3.182 Property_Set_Table_Group_Fields

5.3.3.183 Property_Table_Reference_Control_Link_Fields

5.3.3.184 Property_Table_Reference_Fields

5.3.3.185 Property_Value_Fields

5.3.3.186 Proximity_Data_Fields

5.3.3.187 PS_Augmented_3D_Location_Fields

5.3.3.188 PS_Surface_Location_Fields

5.3.3.189 Pseudo_Code_Function_Fields

5.3.3.190 Pyramid_Directional_Light_Fields

5.3.3.191 Quadrant_Data_Fields

5.3.3.192 Quadrant_Related_Features_Fields

5.3.3.193 Quadrant_Related_Geometry_Fields

5.3.3.194 Quadrant_Select_Parameters

5.3.3.195 Reference_Origin_Fields

5.3.3.196 Reference_Surface_Fields

5.3.3.197 Reference_Vector_Control_Link_Fields

5.3.3.198 Reference_Vector_Fields

5.3.3.199 Regular_Axis_Fields

5.3.3.200 Relative_Time_Fields

5.3.3.201 Relative_Time_Interval_Fields

5.3.3.202 Relative_To_Absolute_Time_Interval_Entry

5.3.3.203 Relative_To_Absolute_Time_Entry

5.3.3.204 Remaining_Objects_List

5.3.3.205 Remaining_Packed_Hierarchies_List

5.3.3.206 Rendering_Priority_Level_Fields

5.3.3.207 Rendering_Properties_Fields

5.3.3.208 Responsible_Party_Fields

5.3.3.209 RGB_Colour_Control_Link_Fields

5.3.3.210 RGB_Colour_Fields

5.3.3.211 RGB_Data

5.3.3.212 Role_Data_Fields

5.3.3.213 Rotating_Light_Behaviour_Fields

5.3.3.214 Rotation_Control_Link_Fields

5.3.3.215 Rotation_Data

5.3.3.216 Rotation_Fields

5.3.3.217 Scale_Control_Link_Fields

5.3.3.218 Scale_Fields

5.3.3.219 Search_Bounds

5.3.3.220 Search_Rule

5.3.3.221 Search_Rule_Component

5.3.3.222 Search_Rule_Component_Field

5.3.3.223 Search_Rule_Component_Field_Array

5.3.3.224 Search_Rule_Component_Field_Range

5.3.3.225 Search_Rule_Field

5.3.3.226 Search_Rule_Field_Array

5.3.3.227 Search_Rule_Field_Range

5.3.3.228 Search_Rule_Predicate

5.3.3.229 Season_Fields

5.3.3.230 SEC_3D_Location_Fields

5.3.3.231 Security_Constraints_Fields

5.3.3.232 Separating_Plane_Data_Fields

5.3.3.233 Separating_Plane_Related_Geometry_Fields

5.3.3.234 Separating_Plane_Select_Parameters

5.3.3.235 SEQ_3D_Location_Fields

5.3.3.236 Single_Value

5.3.3.237 SMD_3D_Location_Fields

5.3.3.238 SME_3D_Location_Fields

5.3.3.239 Sound_Fields

5.3.3.240 Sound_Instance_Control_Link_Fields

5.3.3.241 Sound_Instance_Fields

5.3.3.242 Source_Fields

5.3.3.243 Spatial_Association_Data_Fields

5.3.3.244 Spatial_Index_Data_Fields

5.3.3.245 Spatial_Index_Parameters

5.3.3.246 Spatial_Index_Related_Feature_Topology_Fields

5.3.3.247 Spatial_Index_Related_Features_Fields

5.3.3.248 Spatial_Index_Related_Geometry_Fields

5.3.3.249 Spatial_Index_Related_Geometry_Topology_Fields

5.3.3.250 Spatial_Resolution_LOD_Data_Fields

5.3.3.251 Spherical_Volume_Extent_Fields

5.3.3.252 Spot_Light_Fields

5.3.3.253 SRF_Context_Info

5.3.3.254 SRF_Summary_Fields

5.3.3.255 Stamp_Behaviour_Fields

5.3.3.256 State_Control_Link_Fields

5.3.3.257 State_Data_Fields

5.3.3.258 State_Entry

5.3.3.259 State_Related_Features_Fields

5.3.3.260 State_Related_Geometry_Fields

5.3.3.261 State_Select_Parameters

5.3.3.262 String

5.3.3.263 Strobing_Light_Behaviour_Fields

5.3.3.264 Symbol_Fields

5.3.3.265 Table_Property_Description_Fields

5.3.3.266 Telephone_Information

5.3.3.267 Text_Fields

5.3.3.268 Text_Font

5.3.3.269 Texture_Coordinate_Control_Link_Fields

5.3.3.270 Texture_Coordinate_Fields

5.3.3.271 Time_Day_Of_Year_Value

5.3.3.272 Time_Entry

5.3.3.273 Time_Interval_Entry

5.3.3.274 Time_Interval_Fields

5.3.3.275 Time_M_Value

5.3.3.276 Time_MD_H_Value

5.3.3.277 Time_MD_HM_Value

5.3.3.278 Time_MD_HMS_Value

5.3.3.279 Time_Of_Day_Fields

5.3.3.280 Time_Point_Entry

5.3.3.281 Time_Point_Fields

5.3.3.282 Time_Related_Features_Fields

5.3.3.283 Time_Related_Geometry_Fields

5.3.3.284 Time_Select_Parameters

5.3.3.285 Time_Value

5.3.3.286 Time_Y_Value

5.3.3.287 Time_YD_Value

5.3.3.288 Time_YD_H_Value

5.3.3.289 Time_YD_HM_Value

5.3.3.290 Time_YD_HMS_Value

5.3.3.291 Time_YMD_Value

5.3.3.292 Time_YMD_H_Value

5.3.3.293 Time_YMD_HM_Value

5.3.3.294 Time_YMD_HMS_Value

5.3.3.295 TM_Augmented_3D_Location_Fields

5.3.3.296 TM_Surface_Location_Fields

5.3.3.297 Translation_Control_Link_Fields

5.3.3.298 Translation_Fields

5.3.3.299 Translucency_Control_Link_Fields

5.3.3.300 Translucency_Fields

5.3.3.301 Transmittal_Root_Fields

5.3.3.302 Transmittal_Summary_Fields

5.3.3.303 Union_Of_Feature_Topology_Fields

5.3.3.304 Union_Of_Features_Fields

5.3.3.305 Union_Of_Geometry_Fields

5.3.3.306 Union_Of_Geometry_Hierarchy_Fields

5.3.3.307 Union_Of_Geometry_Topology_Fields

5.3.3.308 Union_Of_Primitive_Geometry_Fields

5.3.3.309 Unused_Fields

5.3.3.310 URL

5.3.3.311 URN

5.3.3.312 Variable_Fields

5.3.3.313 Volume_Extent_Entry

5.3.3.314 Volume_Light_Behaviour_Fields

5.3.3.315 Volume_LOD_Data_Fields

5.3.3.316 Volume_LOD_Entry

5.3.3.317 World_3x3_Fields

5.4 Private data types

5.4.1 Description

5.4.2 Iterator

5.4.3 Object

5.4.4 Packed_Hierarchy_Object_Access

5.4.5 Search_Boundary

5.4.6 Search_Filter

5.4.7 Test_Data

5.4.8 Transmittal

5.4.9 User_Data

5.5 Function data types

5.5.1 Description

5.5.2 Predicate

5.5.3 Status_Logger

5.6 Data types from other standards

5.6.1 Description

5.6.2 Data types from ISO/IEC 18025

5.6.2.1 EDCS_Attribute_Code

5.6.2.2 EDCS_Attribute_Value

5.6.2.3 EDCS_Attribute_Value_Type

5.6.2.4 EDCS_Boolean

5.6.2.5 EDCS_Classification_Code

5.6.2.6 EDCS_Count

5.6.2.7 EDCS_Count_Interval

5.6.2.8 EDCS_Count_Value

5.6.2.9 EDCS_Integer

5.6.2.10 EDCS_Integer_Interval
5.6.2.11 EDCS_Integer_Value

5.6.2.12 EDCS_Long_Float
5.6.2.13 EDCS_Long_Float_Value

5.6.2.14 EDCS_Numeric_Value_Type

5.6.2.15 EDCS_Null

5.6.2.16 EDCS_String

5.6.2.17 EDCS_Unit_Code

5.6.2.18 EDCS_Unit_Scale_Code

5.6.2.19 EDCS_Value_Characteristics_Code

5.6.3 Data types from ISO/IEC 18026

5.6.3.1 SRM_CD_3D_Coordinate

5.6.3.2 SRM_CD_Surface_Coordinate

5.6.3.3 SRM_Coordinate

5.6.3.4 SRM_DSS_Code

5.6.3.5 SRM_EI_3D_Coordinate

5.6.3.6 SRM_Euclidean_2D_Coordinate

5.6.3.7 SRM_Euclidean_3D_Coordinate

5.6.3.8 SRM_LSA_2D_Coordinate

5.6.3.9 SRM_LSP_2D_Coordinate

5.6.3.10 SRM_LTSAS_3D_Coordinate

5.6.3.11 SRM_LTSAS_Surface_Coordinate

5.6.3.12 SRM_LTSC_3D_Coordinate

5.6.3.13 SRM_LTSC_Surface_Coordinate

5.6.3.14 SRM_LTSE_3D_Coordinate

5.6.3.15 SRM_LTSE_Surface_Coordinate

5.6.3.16 SRM_Map_Projection_3D_Coordinate

5.6.3.17 SRM_Map_Projection_Surface_Coordinate

5.6.3.18 SRM_Spherical_3D_Coordinate
5.6.3.19 SRM_SRF_Parameters_Info

5.6.3.20 SRM_Vector_3D

5.6.4 Data types from ISO 19115

5.6.4.1 CI_OnlineResource

5.6.4.2 CI_RoleCode

5.6.4.3 MD_ClassificationCode

5.6.4.4 MD_KeywordTypeCode

5.6.4.5 MD_RestrictionCode

5.1.2 Description

This clause specifies the fundamental data types used within this part of ISO/IEC 18023 to specify the various DRM class instances that are to be represented. Such data types are composed of basic and constructed fundamental data types. The DRM class specifications contained in 6.2 DRM class specifications use the fundamental data types as the building blocks for creating DRM objects. The API specified in 8 Application program interface (API) uses both the data types and data class specifications to pass information between the application program and the transmittal.

5.2 Basic fundamental data types

5.2.1 Overview

More complex data types are formed from simple data types. These simple data types represent single pieces of information such as integers, floating point numbers, alphanumeric characters including strings of these, Booleans and other individual data constructs.

5.2.2 Octet

The Octet data type specifies an eight-bit field whose meaning is unknown or is determined by external factors.

5.2.3 Integers

5.2.3.1 Description

Several data types for integer numbers are provided. There are both general integer and non-negative integer data types. These are intended to correspond to signed and unsigned integer data types in programming languages.

5.2.3.2 Byte

The Byte data type specifies an integer that can represent a value in the range [-127..127].

5.2.3.3 Byte_Unsigned

The Byte_Unsigned data type specifies an integer that can represent a value in the range [0..255].

5.2.3.4 Byte_Positive

The Byte_Positive data type specifies an integer that can represent a value in the range [1..255].

5.2.3.5 Short_Integer

The Short_Integer data type specifies an integer that can represent a value in the range [-32767..32767].

5.2.3.6 Short_Integer_Unsigned

The Short_Integer_Unsigned data type specifies an integer that can represent a value in the range [0..65535].

5.2.3.7 Short_Integer_Positive

The Short_Integer_Positive data type specifies an integer that can represent a value in the range [1..65535].

5.2.3.8 Integer

The Integer data type specifies an integer that can represent a value in the range [-2 147 483 647..2 147 483 647].

5.2.3.9 Integer_Unsigned

The Integer_Unsigned data type specifies an integer that can represent a value in the range [0..4 294 967 295].

5.2.3.10 Integer_Positive

The Integer_Positive data type specifies an integer that can represent a value in the range [1..4 294 967 295].

5.2.4 Floating point numbers

5.2.4.1 Description

The floating point number fundamental data types correspond to the single-precision and double-precision floating point types specified by IEC 60559. The specific values for POSITIVE_INFINITY and NEGATIVE_INFINITY shall be supported. However, implementations on architectures that support other floating point representations are allowed and shall support POSITIVE_INFINITY and NEGATIVE_INFINITY as provided in those floating point representations.

5.2.4.2 Float

The Float data type specifies a single-precision floating point number as specified in IEC 60559.

5.2.4.3 Long_Float

The Long_Float data type specifies a double-precision floating point number as specified in IEC 60559.

5.2.5 Characters and strings

5.2.5.1 Description

Alphanumeric characters are encoded as UTF-8 as specified in ISO/IEC 10646 (otherwise known as Unicode). UTF-8 supports Latin characters single octets as specified in ISO/IEC 646 but also has the ability of representing international characters. Each character is comprised of one through six bytes as specified in ISO/IEC 10646-1. Hence, an abstract character is of variable length. A string is a list of such characters along with codes that specify how the string is to be interpreted (see 5.3.3.262 String).

5.2.5.2 Character

The fundamental data type for representing characters is:

Character

5.2.5.3 Character strings

Strings of characters are addressed by the String data type specified in 5.3.3.262 String and also by the String data type specified in 5.6.2.16 EDCS_String.

5.2.6 Enumerated data types

5.2.6.1 Description

An enumerated data type consists of a list of names. Each name can be a value in an instance of that data type. The names are assigned numbers whose values indicate the position within the ordered list. It is these numbers that are actually manipulated by the implementation.

The enumerated data types that are supported by this part of ISO/IEC 18023 are specified below.

5.2.6.2 Access_Mode

Table 5.2 defines the Access_Mode data type that specifies how a transmittal is to be opened.

Table 5.2 — Access_Mode values

Value Description

READ_ONLY

The transmittal is to be opened with only read access.

UPDATE

An existing transmittal is to be opened with the ability to make changes in the content.

CREATE

A new empty transmittal is to be opened with the ability to add and subsequently change content.

Access_Mode ::= (
   READ_ONLY,
   UPDATE,
   CREATE )

5.2.6.3 Boolean

Table 5.3 defines the Boolean data type that specifies FALSE and TRUE values.

Table 5.3 — Boolean values

Value Description

FALSE

The value of the associated field is specified to be false.

TRUE

The value of the associated field is specified to be true.

Boolean ::= (
   FALSE,
   TRUE )

5.2.6.4 Branch_Range_Matching

Table 5.4 defines the Branch_Range_Matching data type that specifies, when evaluating the branches of a <DRM Aggregate Feature> or <DRM Aggregate Geometry> instance against a range of search values, how to evaluate the field values of a given branch’s link object against the search range, where the link object’s field values themselves specify a range of values.

Table 5.4 — Branch_Range_Matching values

Value Description

EXACT

For a branch to be considered a match, the search value range shall exactly match the branch's value range.

FULL_CONTAINMENT

For a branch to be considered a match, the search value range shall be completely contained within the branch's value range.

INTERSECTION

For a branch to be considered a match, the search value range shall intersect the branch's value range.

Branch_Range_Matching ::= (
   EXACT,
   FULL_CONTAINMENT,
   INTERSECTION )

5.2.6.5 Colour_Binding

Table 5.5 defines the Colour_Binding data type that specifies which type of colour inheritance is in effect within the scope of the given <DRM Rendering Properties> instance.

Table 5.5 — Colour_Binding values

Value Description

NORMAL

The colour of a geometry attribute is specified as the default attribute binding. Attributes specified by a component shall override its parent (i.e., the last colour wins).

PARENT_OVERRIDE

This setting allows the given instance of a <DRM Geometry Representation> concrete subclass to override the default attribute binding; that is, to override any <DRM Colour> instances specified by objects in its component tree.

Colour_Binding ::= (
   NORMAL,
   PARENT_OVERRIDE )

5.2.6.6 Continuous_LOD_Select_Choice

Table 5.6 defines the Continuous_LOD_Select_Choice data type that specifies which level (or levels) of detail are to be traversed.

Table 5.6 — Continuous_LOD_Select_Choice values

Value Description

ALL

All levels are to be traversed.

LEAST_DETAILED

The least detailed level is to be traversed.

MOST_DETAILED

The most detailed level is to be traversed.

Continuous_LOD_Select_Choice ::= (
   ALL,
   LEAST_DETAILED,
   MOST_DETAILED )

5.2.6.7 Hierarchy_Inclusion

Table 5.7 defines the Hierarchy_Inclusion data type that specifies, for a given subclass of <DRM Aggregate Feature> or <DRM Aggregate Geometry>, whether the instances and their components are included or excluded from a search..

Table 5.7 — Hierarchy_Inclusion values

Value Description

EXCLUDE_ALL

All instances and their components are to be excluded.

INCLUDE_ALL

All instances and their components are to be included.

EVALUATE_RULES

Instances and their components are included only if they pass a set of specified conditions.

Hierarchy_Inclusion ::= (
   EXCLUDE_ALL,
   INCLUDE_ALL,
   EVALUATE_RULES )

5.2.6.8 Image_Scan_Direction

Table 5.8 defines the Image_Scan_Direction data type that specifies the manner in which an image layer is to be scanned.

Table 5.8 — Image_Scan_Direction values

Value

Major scan

Minor scan

Image origin

RIGHT_UP

left to right

bottom to top

lower left

RIGHT_DOWN

left to right

top to bottom

upper left

DOWN_RIGHT

top to bottom

left to right

upper left

DOWN_LEFT

top to bottom

right to left

upper right

LEFT_UP

right to left

bottom to top

lower right

LEFT_DOWN

right to left

top to bottom

upper right

UP_RIGHT

bottom to top

left to right

lower left

UP_LEFT

bottom to top

right to left

lower right

EXAMPLE  Assume an image is displayed in a Cartesian 2D space with the positive X axis pointing right, and the positive Y axis pointing up, as shown in Figure 5.1. Further, assume an image of size W×H in this 2D space has W image elements in the X direction and H image elements in the Y direction. A scan direction of RIGHT_UP means that the image data is stored such that the first image element in memory corresponds to the (0 0) coordinate of this 2D space, and the next image elements should be displayed on the positively increasing X axis (the minor scan), until W image elements are displayed (W 0).  The next image element will correspond to the (0 1) coordinate of the 2D space.  Once the image element (W 1) is reached, the scan direction will continue to move from bottom to top on the positively increasing Y axis, for each successive scan line, until H lines have been accessed.

Image Scan Direction XY

Figure 5.1 — Image scan direction in X and Y

Image_Scan_Direction ::= (
   RIGHT_UP,
   RIGHT_DOWN,
   DOWN_RIGHT,
   DOWN_LEFT,
   LEFT_UP,
   LEFT_DOWN,
   UP_RIGHT,
   UP_LEFT )

5.2.6.9 Image_Scan_Direction_Z

Table 5.9  defines the Image_Scan_Direction_Z data type that specifies the manner in which image depth is to be scanned.

Table 5.9 — Image_Scan_Direction_Z values

Value Scan direction Image origin

NONE

Not applicable

Not applicable

Z_BACK

front to back

front

Z_FRONT

back to front

back

EXAMPLE Following the example in 5.2.6.8 Image_Scan_Direction, assume an image is displayed in a right-handed Cartesian 3D space with the positive Z axis pointed towards the viewer, as shown in Figure 5.2. A scan direction of Z_FRONT means that the image elements are organized such that successive groups of XY elements (as described in 5.2.6.8 Image_Scan_Direction) are displayed starting at Z=0 and in the direction of the positive Z axis.

Image Scan Direction Z

Figure 5.2 — Image scan direction in Z

Image_Scan_Direction_Z ::= (
   Z_NONE,
   Z_BACK,
   Z_FRONT )

5.2.6.10 Interval_Type

Table 5.10 defines the Interval_Type data type that specifies the type of interval for the various interval data types.

Table 5.10 — Interval_Type values

Value Description

OPEN_INTERVAL

The interval does not include the value at each end of the interval.

GE_LT_INTERVAL The end value of lowest value is included but the end value of highest value is not included.
GT_LE_INTERVAL The end value of lowest value is not included but the end value of highest value is included.

CLOSED_INTERVAL

The interval includes the value at each end of the interval.

GT_SEMI_INTERVAL The lower end value is -∞ and the upper end value is not included.
GE_SEMI_INTERVAL The lower end value is -∞ and the upper end value is included.
LT_SEMI_INTERVAL The lower end value is not included and the upper end value is ∞.
LE_SEMI_INTERVAL The lower end value is included and the upper end value is ∞.

Interval_Type ::= (
   OPEN_INTERVAL,
   GE_LT_INTERVAL,
   GT_LE_INTERVAL,
   CLOSED_INTERVAL,
  
GT_SEMI_INTERVAL,
  
GE_SEMI_INTERVAL,
  
LT_SEMI_INTERVAL,
  
LE_SEMI_INTERVAL )

5.2.6.11 ITR_Behaviour

Table 5.11 defines the ITR_Behaviour data type that specifies the desired traversal for an iterator or function when an ITR reference is encountered.

Table 5.11 — ITR_Behaviour values

Value Description

RESOLVE

ITR references are resolved automatically as they are encountered. A transmittal that has been opened in this way cannot be updated. The transmittal shall be explicitly opened for writing or modification for RESOLVE ITR_Behaviour to occur.

REPORT

ITR references are reported as they are encountered, but are not resolved.

IGNORE

ITR references are ignored and traversal acts as though the transmittal were standalone, continuing to search within the current transmittal.

ITR_Behaviour ::= (
   RESOLVE,
   REPORT,
   IGNORE )

5.2.6.12 LSR_Transformation_Axis

Table 5.12 defines the LSR_Transformation_Axis data type that specifies which axis to rotate around, scale by, or translate along.

Table 5.12 — LSR_Transformation_Axis values

Value Description

U

The X axis is the axis around which a rotation is computed and along which a scale or translation is computed.

V

The Y axis is the axis around which a rotation is computed and along which a scale or translation is computed.

W

The Z axis is the axis around which a rotation is computed and along which a scale or translation is computed.

ALL

Scaling and translation occur uniformly along all axes. This value is not valid for rotation.

AXIS_REFERENCE_VECTOR

Operations are referenced to an axis specified by a <DRM Reference Vector> component of the given <DRM LSR Transformation>.

LSR_Transformation_Axis ::= (
   U,
   V,
   W,
   ALL,
   AXIS_REFERENCE_VECTOR )

5.2.6.13 Model_Reference_Type

Table 5.13 defines the Model_Reference_Type data type that specifies how a <DRM Model> instance is referenced within a transmittal.

Table 5.13 — Model_Reference_Type values

Value Description

COMPONENT

The <DRM Model> instance can be referenced only as a component of other <DRM Model> instances. In this case, the <DRM Model> instance cannot be referenced directly from a <DRM Environment Root> instance.

ROOT

The <DRM Model> instance cannot be instanced by any other <DRM Model> instance. In this case, the <DRM Model> instance can be referenced from a <DRM Environment Root> instance.

ROOT_AND_COMPONENT

The <DRM Model> instance can be instanced both by other <DRM Model> instances and from a <DRM Environment Root> instance.

Model_Reference_Type ::= (
   COMPONENT,
   ROOT,
   ROOT_AND_COMPONENT )

5.2.6.14 Month

Table 5.14 defines the Month data type that specifies the months of the year.

Table 5.14 — Month values

Value Description

JANUARY

 January.

FEBRUARY

 February.

MARCH

 March.

APRIL

 April.

MAY

 May.

JUNE

 June.

JULY

 July.

AUGUST

 August.

SEPTEMBER

 September.

OCTOBER

 October.

NOVEMBER

 November.

DECEMBER

 December.

Month ::= (
   JANUARY,
   FEBRUARY,
   MARCH,
   APRIL,
   MAY,
   JUNE,
   JULY,
   AUGUST,
   SEPTEMBER,
   OCTOBER,
   NOVEMBER,
   DECEMBER )

5.2.6.15 Object_Inclusion

Table 5.15 defines the Object_Inclusion data type that specifies how identified objects relate to a search boundary.

Table 5.15 —Object_Inclusion values

Value Description
FULLY_INCLUDED The identified object is completely inside the search boundary specified.
PARTIALLY_INCLUDED The identified object is either completely inside the search boundary or partially overlaps the search boundary.

Note that PARTIALLY_INCLUDED is a superset of FULLY_INCLUDED.

Object_Inclusion ::= (
   FULLY_INCLUDED,
   PARTIALLY_INCLUDED )

5.2.6.16 Octant

The Octant data type specifies which octant contains the data of interest. It is used by <DRM Octant Data> to specify which octant is represented by the associated <DRM Feature Hierarchy> instance (for a <DRM Octant Related Features> instance) or <DRM Geometry Hierarchy> instance (for a <DRM Octant Related Geometry> instance).

The identification of the octants is as shown in Figure 5.3, where left-to-right is the orientation of the first coordinate axis, front-to-back is the orientation of the second coordinate axis, and lower-to-upper is the orientation of the third coordinate axis. The naming convention is with respect to a viewer at point “f” directly facing point “h”. The plane specified by the three points “g”, “d”, and “i” represents the dividing plane between front and back with the point “f” considered to be in the front. The plane specified by the three points “n”, “j”, and “b” represents the dividing plane between left and right with the point “g” considered to be in the left. The plane specified by the three points “g”, “h”, and “k” represents the dividing plane between top and bottom with the point “d” considered to be in the bottom. Octants can be used to specify octrees [SAMET].

Octant id

Figure 5.3 — Octant identification

Octant ::= (
   UPPER_LEFT_FRONT,
   UPPER_LEFT_BACK,
   LOWER_LEFT_FRONT,
   LOWER_LEFT_BACK,
   UPPER_RIGHT_FRONT,
   UPPER_RIGHT_BACK,
   LOWER_RIGHT_FRONT,
   LOWER_RIGHT_BACK )

5.2.6.17 Point_Light_Display_Type

Table 5.16 defines the Point_Light_Display_Type data type that specifies the technology of the display used to render a set of points of light.

Table 5.16 — Point_Light_Display_Type values

Value Description

RASTER

The light is to be rendered during the scan of the entire display.

CALLIGRAPHIC

The light is to be rendered explicitly to the portion of the display at which the point is to be produced.

Point_Light_Display_Type ::= (
   RASTER,
   CALLIGRAPHIC )

5.2.6.18 Present_In

Table 5.17 defines the Present_In data type that specifies whether certain items are present within one or more <DRM Environment Root> instances and/or one or more <DRM Model> instances within the scope of the <DRM Transmittal Root> instance being described.

Table 5.17 — Present_In values

Value Description

NONE

The items are not present.

ENVIRONMENT_ROOT

The items are present within the scope of one or more <DRM Environment Root> instances.

MODELS

The items are present within the scope of one or more <DRM Model> instances.

ENVIRONMENT_ROOT_AND_MODELS

The items are present within the scope of one or more <DRM Environment Root> instances and one or more <DRM Model> instances.

Present_In ::= (
   NONE,
   ENVIRONMENT_ROOT,
   MODELS,
   ENVIRONMENT_ROOT_AND_MODELS )

5.2.6.19 Quadrant

The Quadrant data type specifies which quadrant is represented by the associated <DRM Feature Hierarchy> instance (for a <DRM Quadrant Related Features> instance) or <DRM Geometry Hierarchy> instance (for a <DRM Quadrant Related Geometry> instance).

The identification of the quadrants is as shown in Figure 5.4, where left-to-right is the orientation of the first coordinate axis and front-to-back is the orientation of the second coordinate axis. The naming convention is with respect to a viewer at point “c” directly facing point “d”. The line defined by the two points “c” and “e” specifies the division between left and right with “b” considered to be in the left. The line defined by the two points “b” and “f” specifies the division between front and back with “e” considered to be in the back. Quadrants can be used to specify quadtrees [SAMET].

Quadrant ID

Figure 5.4 — Quadrant identification

Quadrant ::= (
   LEFT_FRONT,
   LEFT_BACK,
   RIGHT_FRONT,
   RIGHT_BACK )

5.2.6.20 Reference_Surface_Elevation_Select

Table 5.18 defines the Reference_Surface_Elevation_Select data type that specifies the rule for selecting exactly one elevation value when the reference surface specified by the <DRM Reference Surface> instance is penetrated more than once by a ray cast from the conforming point in question perpendicular to the surface of the ellipsoid component of the ORM.

Table 5.18 — Reference_Surface_Elevation_Select values

Value Description

CLOSEST_TO_ORM_CENTRE

The intersection element to use is the one closest to the ORM centre.

CLOSEST_TO_DSS

The intersection element to use is the one closest to the designated spatial surface (DSS).

FARTHEST_FROM_ORM_CENTRE

The intersection element to use is the one farthest from the ORM centre.

Reference_Surface_Elevation_Select ::= (
   CLOSEST_TO_ORM_CENTRE,
   CLOSEST_TO_DSS,
   FARTHEST_FROM_ORM_CENTRE )

5.2.6.21 Reference_Surface_LOD_Select

Table 5.19 defines the Reference_Surface_LOD_Select data type that specifies which branch of a <DRM LOD Related Geometry> instance is to be used to resolve conforming points when more than one branch could apply to a given conforming point. This data type is used by a <DRM Reference Surface> instance whose associated <DRM Geometry Hierarchy> instance contains a <DRM LOD Related Geometry> instance. This data type is not used for <DRM Continuous LOD Related Geometry>.

Table 5.19 — Reference_Surface_LOD_Select values

Value Description

MOST_DETAILED

The most detailed resolution is used to resolve the conforming point.

LEAST_DETAILED

The least detailed resolution is used to resolve the conforming point.

Reference_Surface_LOD_Select ::= (
   MOST_DETAILED,
   LEAST_DETAILED )

5.2.6.22 Return_Code

Table 5.20 defines the Return_Code data type that specifies the function results of API functions.

Table 5.20 — Return_Code values

Value Description

FAILURE

The function failed to carry out the operation.

SUCCESS

The function successfully carried out the operation.

Return_Code ::= (
   FAILURE,
   SUCCESS )

5.2.6.23 Search_Bounds_Closure

Table 5.21 defines the Search_Bounds_Closure data type that specifies whether a spatial search area has full or partial closure.

Each Search_Bounds value specifies an enclosed region of a tessellation. The Search_Bounds_Closure data type specifies whether the top and right boundaries of the tessellation are included in the region. This is depicted in Figure 5.5 where the search bounds region on the left has a specified value of FULLY_CLOSED. Any point intersecting the top and rightmost lines shall be included. The search bounds region on the right is specified as PARTIALLY_CLOSED. Points intersecting the topmost and rightmost lines shall not be included. By assigning appropriate Search_Bounds_Closure values, it can be ensured that a point will be encompassed by only one search bounds region.

Search_Bounds_Closure

Figure 5.5 — FULLY_CLOSED and PARTIALLY_CLOSED search bounds

Table 5.21 — Search_Bounds_Closure values

Value Description

FULLY_CLOSED

The complete boundary of the spatial extent will be used to determine if a location is within the search bounds region.

PARTIALLY_CLOSED

Only the lower end points of the spatial extent will be used to determine if a location is within the search bounds region.

Search_Bounds_Closure ::= (
   FULLY_CLOSED,
   PARTIALLY_CLOSED )

5.2.6.24 Search_Dimension

Table 5.22 defines the Search_Dimension data type that specifies whether a search will return two-dimensional DRM objects, if they are present.

To ignore <DRM Location 2D> instances, Search_Dimension value THREE_DIMENSIONAL should be specified. All other searches consider <DRM Location 2D> instances in evaluating DRM objects.

This data type also specifies whether a search will consider the height components of <DRM Location 3D> instances. To ignore the height component, search dimension TWO_DIMENSIONAL_OR_SURFACE shall be specified. All other searches shall consider the height components of <DRM Location 3D> instances during evaluation.

Table 5.22 — Search_Dimension values

Value Description

TWO_DIMENSIONAL_OR_SURFACE

Only DRM objects specified with two-dimensional or surface coordinates will be returned.

THREE_DIMENSIONAL

Only DRM objects specified with three-dimensional coordinates will be returned.

ALL_DIMENSIONS

DRM objects specified with any type of coordinates will be returned.

Search_Dimension ::= (
   TWO_DIMENSIONAL_OR_SURFACE,
   THREE_DIMENSIONAL,
   ALL_DIMENSIONS )

5.2.6.25 Sibling_Traversal_Order

Table 5.23 defines the Sibling_Traversal_Order data type that specifies the desired traversal order for various types of components that already have a logical ordering.

Table 5.23 — Sibling_Traversal_Order values

Value Description

ASCENDING

Components will be traversed in ascending order.

DESCENDING

Components will be traversed in descending order.

UNSPECIFIED

No traversal order is specified; any may be used.

Sibling_Traversal_Order ::= (
   ASCENDING,
   DESCENDING,
   UNSPECIFIED )

5.2.6.26 State_Mismatch_Behaviour

Table 5.24 defines the State_Mismatch_Behaviour data type that specifies the behaviour state control when there is a state value that is not supported in the <DRM State Data> link object of a <DRM State Related Features> instance or <DRM State Related Geometry> instance.

Table 5.24 — State_Mismatch_Behaviour values

Value Description
DEFAULT The default state shall be displayed.

LAST

The last state shall remain.

NONE

Nothing shall be displayed.

State_Mismatch_Behaviour ::= (
   DEFAULT,
   LAST,
   NONE )

5.2.7 Selection data types

5.2.7.1 Description

The set of values of each selection data type may be extended by registration. In contrast, the set of values of an enumerated data type may not be extended by registration. Selection data types shall be implemented by each language binding in such a manner that the set of values may be extended without invalidating pre-compiled software. Selection data types are otherwise processed in the same manner as enumerated data types.

Standard meanings are assigned to positive values from 1 through 1000. Registered meanings shall be assigned to values above 1000. Each selection data type is specified in the same manner as an enumerated data type (see 5.2.6.1 Description). Such names are presented below in upper case.

An implementation may permit negative values for selection types that are not specified in this part of ISO/IEC 18023. Transmittals that use such non-standard values do not conform to this part of ISO/IEC 18023. Non-standard values may be used to test new concepts prior to standardization or registration.

5.2.7.2 API_Function

The API_Function data type specifies the names of the available transmittal API functions.

API_FUNCTION ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ADD_ASSOCIATE_RELATIONSHIP,
                   2 : ADD_COMPONENT_RELATIONSHIP,
                   3 : CLONE_OBJECT_HANDLE,
                   4 : CLOSE_TRANSMITTAL,
                   5 : CREATE_OBJECT,
                   6 : CREATE_SEARCH_FILTER,
                   7 : CREATE_SPATIAL_SEARCH_BOUNDARY,
                   8 : DETERMINE_SPATIAL_INCLUSION,
                   9 : FREE_ITERATOR,
                  10 : FREE_OBJECT,
                  11 : FREE_PACKED_HIERARCHY,
                  12 : FREE_REMAINING_OBJECTS_LIST,
                  13 : FREE_REMAINING_PACKED_HIERARCHIES_LIST,
                  14 : FREE_SEARCH_FILTER,
                  15 : FREE_SPATIAL_SEARCH_BOUNDARY,
                  16 : FREE_TRANSMITTAL,
                  17 : GET_AGGREGATE,
                  18 : GET_ASSOCIATE,
                  19 : GET_COLOUR_MODEL,
                  20 : GET_COMPONENT,
                  21 : GET_CONTEXT_TRANSFORMATION,
                  22 : GET_DATA_TABLE_DATA,
                  23 : GET_DRM_CLASS,
                  24 : GET_ENCODING,
                  25 : GET_FIELDS,
                  26 : GET_IMAGE_DATA,
                  27 : GET_ITERATION_LENGTH_REMAINING,
                  28 : GET_LAST_FUNCTION_STATUS,
                  29 : GET_MESH_FACE_TABLE_DATA,
                  30 : GET_NEXT_OBJECT,
                  31 : GET_NTH_ASSOCIATE,
                  32 : GET_NTH_COMPONENT,
                  33 : GET_NUMBER_OF_PATHS_TO_TRANSMITTAL_ROOT,
                  34 : GET_OBJECT_FROM_ID_STRING,
                  35 : GET_OBJECT_ID_STRING,
                  36 : GET_OBJECT_REFERENCE_COUNT,
                  37 : GET_PACKED_HIERARCHY,
                  38 : GET_PUBLISHED_LABELS,
                  39 : GET_PUBLISHED_OBJECT_LIST,
                  40 : GET_REFERENCED_TRANSMITTAL_LIST,
                  41 : GET_RELATION_COUNTS,
                  42 : GET_REMAINING_OBJECTS_LIST,
                  43 : GET_REMAINING_PACKED_HIERARCHIES,
                  44 : GET_ROOT_OBJECT,
                  45 : GET_SRF_INFO,
                  46 : GET_TRANSMITTAL_FROM_OBJECT,
                  47 : GET_TRANSMITTAL_LOCATION,
                  48 : GET_TRANSMITTAL_NAME,
                  49 : GET_TRANSMITTAL_VERSION_INFORMATION,
                  50 : GET_UNIQUE_TRANSMITTAL_ID,
                  51 : GET_UNRESOLVED_OBJECT_FROM_PUBLISHED_LABEL,
                  52 : GET_USER_DATA,
                  53 : INITIALIZE_AGGREGATE_ITERATOR,
                  54 : INITIALIZE_ASSOCIATE_ITERATOR,
                  55 : INITIALIXE_COMPONENT_ITERATOR,
                  56 : INITIALIZE_INHERITED_COMPONENT_ITERATOR,
                  57 : IS_ITERATOR_COMPLETE,
                  58 : OBJECT_IS_PUBLISHED,
                  59 : OBJECT_IS_RESOLVED,
                  60 : OBJECTS_ARE_SAME,
                  61 : OPEN_TRANSMITTAL_BY_LOCATION,
                  62 : OPEN_TRANSMITTAL_BY_NAME,
                  63 : PUBLISH_OBJECT,
                  64 : PUT_DATA_TABLE_DATA,
                  65 : PUT_FIELDS,
                  66 : PUT_IMAGE_DATA,
                  67 : PUT_MESH_FACE_TABLE_DATA,
                  68 : REMOVE_ASSOCIATE_RELATIONSHIP,
                  69 : REMOVE_COMPONENT_RELATIONSHIP,
                  70 : REMOVE_FROM_TRANSMITTAL,
                  71 : RESOLVE_OBJECT,
                  72 : RESOLVE_TRANSMITTAL_NAME,
                  73 : SET_COLOUR_MODEL,
                  74 : SET_FIRST_ERROR_MESSAGE,
                  75 : SET_GENERAL_CALLBACK,
                  76 : SET_GENERAL_CALLBACK_FOR_ONE_FUNCTION,
                  77 : SET_ROOT_OBJECT,
                  78 : SET_SECOND_ERROR_MESSAGE,
                  79 : SET_SPECIFIC_CALLBACK,
                  80 : SET_SRF_INFO,
                  81 : SET_TRANSMITTAL_NAME,
                  82 : SET_USER_DATA,
                  83 : TRANSMITTALS_ARE_SAME,
                  84 : UNPUBLISH_OBJECT,
                  85 : USE_DEFAULT_COLOUR_MODEL,
                  86 : USE_DEFAULT_SRF_INFO,
          [87..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.3 Axis_Alignment

Table 5.25 defines the Axis_Alignment data type that specifies how the data table cell value(s) associated with an axis tick mark align with the axis interval for a <DRM Regular Axis> instance. This relationship is depicted in Figure 5.6. Table 5.25 references the tick marks identified in Figure 5.6 (Si is the value of the ith tick mark).
 

Axis Alignment relationships

Figure 5.6 — Axis_Alignment relationships

Table 5.25 — Axis_Alignment values

Value Description

NONE

The ith data table cell value is applicable to the entire interval [ti, ti+1).

LOWER

The ith data table cell value is applicable at the ti tick mark.

MEDIAN

The ith data table cell value is applicable at the median of the ti and ti+1 tick marks.

UPPER

The ith data table value is applicable at the ti+1 tick mark.

GEOMETRIC_MEAN

The ith data table cell value is applicable at the geometric mean of the ti and ti+1 tick marks. This kind of axis alignment is intended for use with GEOMETRIC spacing (see 5.2.7.42 Spacing_Type).

Axis_Alignment ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NONE,
                   2 : LOWER,
                   3 : MEDIAN,
                   4 : UPPER,
                   5 : GEOMETRIC_MEAN,
           [6..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.4 Camera_Projection_Type

Table 5.26 defines the Camera_Projection_Type data type that specifies the type of projection that applies to a <DRM Camera Point> instance.

Table 5.26 — Camera_Projection_Type values

Value Description

ORTHOGRAPHIC

The projection is a parallel projection in which the projection direction is parallel to the direction of the view.

PERSPECTIVE

The projection is a perspective projection in which all projector lines converge to a single point at the viewer.

Camera_Projection_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ORTHOGRAPHIC,
                   2 : PERSPECTIVE,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.5 Colour_Model

Table 5.27 defines the Colour_Model data type that specifies a colour model.

Table 5.27 — Colour_Model values

Value Description

RGB

Colour values are specified using the red-green-blue (RGB) colour model.

CMY

Colour values are specified using the cyan-magenta-yellow (CMY) colour model.

HSV

Colour values are specified using the hue-saturation-value (HSV) colour model.

Colour_Model ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : RGB,
                   2 : CMY,
                   3 : HSV,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.6 Data_Table_Data_Value_Type

Table 5.28 defines the Data_Table_Data_Value_Type data type that specifies the type of data that is specified in an instance of Data_Table_Data.

Table 5.28 — Data_Table_Data_Value_Type values

Value Description
SINGLE_LONG_FLOAT Each element of data table data is a single real attribute value of type EDCS_Long_Float.
LONG_FLOAT Each element of data table data is a real attribute value of type Long_Float_Value.
SINGLE_INTEGER Each element of data table data is a single integer attribute value of type EDCS_Integer.
INTEGER Each element of data table data is an integer attribute value of type EDCS_Integer_Value.
SINGLE_COUNT Each element of data table data is a single count attribute value of type EDCS_Count.
COUNT Each element of data table data is a count attribute value of type EDCS_Count_Value.
INDEX Each element of data table data is an index attribute value of type EDCS_Count.
STRING Each element of data table data is a string attribute value of type EDCS_String.
CONSTRAINED_STRING Each element of data table data is a constrained string attribute value of type EDCS_String.
KEY Each element of data table data is a key attribute value of type EDCS_String.
ENUMERATION Each element of data table data is an enumerated attribute value of type EDCS_Integer.
BOOLEAN Each element of data table data is a boolean attribute value of type EDCS_Boolean.
INDEX_CODE Each element of data table data is an index code of type Integer_Unsigned.

Data_Table_Data_Value_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : SINGLE_LONG_FLOAT,
                   2 : LONG_FLOAT,
                   3 : SINGLE_INTEGER,
                   4 : INTEGER,
                   5 : SINGLE_COUNT,
                   6 : COUNT,
                   7 : INDEX,
                   8 : STRING,
                   9 : CONSTRAINED_STRING,
                  10 : KEY,
                  11 : ENUMERATION,
                  12 : BOOLEAN,
                  13 : INDEX_CODE,
          [14..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.7 DRM_Class

The DRM_Class data type specifies the DRM classes supported by this part of ISO/IEC 18023.

DRM_Class ::= (
              < 1 : // implementation dependent and non-conforming,
                1 : NULL,
                2 : DRM_ABSOLUTE_TIME,
                3 : DRM_ABSOLUTE_TIME_INTERVAL,
                4 : DRM_AGGREGATE_FEATURE,
                5 : DRM_AGGREGATE_GEOMETRY,
                6 : DRM_ALTERNATE_HIERARCHY_RELATED_FEATURES,
                7 : DRM_ALTERNATE_HIERARCHY_RELATED_GEOMETRY,
                8 : DRM_AMBIENT_COLOUR,
                9 : DRM_ANIMATION_BEHAVIOUR,
               10 : DRM_ANIMATION_RELATED_GEOMETRY,
               11 : DRM_ARC,
               12 : DRM_AREAL_FEATURE,
               13 : DRM_ATTACHMENT_POINT,
               14 : DRM_AXIS,
               15 : DRM_BASE_ASSOCIATION_DATA,
               16 : DRM_BASE_LOD_DATA,
               17 : DRM_BASE_POSITIONAL_LIGHT,
               18 : DRM_BASE_SPATIAL_ASSOCIATION_DATA,
               19 : DRM_BASE_SUMMARY_ITEM,
               20 : DRM_BASE_TIME_DATA,
               21 : DRM_BLEND_DIRECTIONAL_LIGHT,
               22 : DRM_BOUNDING_VOLUME,
               23 : DRM_BROWSE_MEDIA,
               24 : DRM_CAMERA_POINT,
               25 : DRM_CC_3D_LOCATION,
               26 : DRM_CD_3D_LOCATION,
               27 : DRM_CD_SURFACE_LOCATION,
               28 : DRM_CITATION,
               29 : DRM_CLASSIFICATION_DATA,
               30 : DRM_CLASSIFICATION_RELATED_FEATURES,
               31 : DRM_CLASSIFICATION_RELATED_GEOMETRY,
               32 : DRM_CM_3D_LOCATION,
               33 : DRM_CMY_COLOUR,
               34 : DRM_CMY_COLOUR_CONTROL_LINK,
               35 : DRM_COLLISION_VOLUME,
               36 : DRM_COLOUR,
               37 : DRM_COLOUR_DATA,
               38 : DRM_COLOUR_INDEX,
               39 : DRM_COLOUR_INDEX_CONTROL_LINK,
               40 : DRM_COLOUR_SHININESS,
               41 : DRM_COLOUR_TABLE,
               42 : DRM_COLOUR_TABLE_GROUP,
               43 : DRM_COLOUR_TABLE_LIBRARY,
               44 : DRM_CONE_DIRECTIONAL_LIGHT,
               45 : DRM_CONFORMAL_BEHAVIOUR,
               46 : DRM_CONTACT_POINT,
               47 : DRM_CONTINUOUS_LOD_RELATED_GEOMETRY,
               48 : DRM_CONTROL_LINK,
               49 : DRM_CYLINDRICAL_VOLUME_EXTENT,
               50 : DRM_DATA_QUALITY,
               51 : DRM_DATA_TABLE,
               52 : DRM_DATA_TABLE_LIBRARY,
               53 : DRM_DIFFUSE_COLOUR,
               54 : DRM_DIRECTIONAL_LIGHT_BEHAVIOUR,
               55 : DRM_DISTANCE_LOD_DATA,
               56 : DRM_DRM_CLASS_SUMMARY_ITEM,
               57 : DRM_EC_AUGMENTED_3D_LOCATION,
               58 : DRM_EC_SURFACE_LOCATION,
               59 : DRM_EDCS_USE_SUMMARY_ITEM,
               60 : DRM_EDGE_DIRECTION,
               61 : DRM_EI_3D_LOCATION,
               62 : DRM_ELLIPSE,
               63 : DRM_EMISSIVE_COLOUR,
               64 : DRM_ENCLOSING_VOLUME,
               65 : DRM_ENUMERATION_AXIS,
               66 : DRM_ENVIRONMENT_ROOT,
               67 : DRM_ENVIRONMENTAL_DOMAIN_SUMMARY,
               68 : DRM_EXPRESSION,
               69 : DRM_FACE_DIRECTION,
               70 : DRM_FADE_RANGE,
               71 : DRM_FEATURE_EDGE,
               72 : DRM_FEATURE_FACE,
               73 : DRM_FEATURE_FACE_RING,
               74 : DRM_FEATURE_HIERARCHY,
               75 : DRM_FEATURE_MODEL,
               76 : DRM_FEATURE_MODEL_INSTANCE,
               77 : DRM_FEATURE_NODE,
               78 : DRM_FEATURE_REPRESENTATION,
               79 : DRM_FEATURE_TOPOLOGY,
               80 : DRM_FEATURE_TOPOLOGY_HIERARCHY,
               81 : DRM_FEATURE_VOLUME,
               82 : DRM_FEATURE_VOLUME_SHELL,
               83 : DRM_FINITE_ELEMENT_MESH,
               84 : DRM_FLASHING_LIGHT_BEHAVIOUR,
               85 : DRM_FUNCTION,
               86 : DRM_FUNCTIONAL_ASSOCIATION_DATA,
               87 : DRM_GEOMETRIC_CENTRE,
               88 : DRM_GEOMETRY_EDGE,
               89 : DRM_GEOMETRY_FACE,
               90 : DRM_GEOMETRY_HIERARCHY,
               91 : DRM_GEOMETRY_MODEL,
               92 : DRM_GEOMETRY_MODEL_INSTANCE,
               93 : DRM_GEOMETRY_NODE,
               94 : DRM_GEOMETRY_REPRESENTATION,
               95 : DRM_GEOMETRY_TOPOLOGY,
               96 : DRM_GEOMETRY_TOPOLOGY_HIERARCHY,
               97 : DRM_GEOMETRY_VOLUME,
               98 : DRM_GRID_OVERLAP,
               99 : DRM_HAEC_3D_LOCATION,
              100 : DRM_HEEC_3D_LOCATION,
              101 : DRM_HEEQ_3D_LOCATION,
              102 : DRM_HIERARCHY_DATA
              103 : DRM_HIERARCHY_SUMMARY_ITEM,
              104 : DRM_HSV_COLOUR,
              105 : DRM_HSV_COLOUR_CONTROL_LINK,
              106 : DRM_ICON,
              107 : DRM_IDENTIFICATION,
              108 : DRM_IMAGE,
              109 : DRM_IMAGE_ANCHOR,
              110 : DRM_IMAGE_LIBRARY,
              111 : DRM_IMAGE_MAPPING_FUNCTION,
              112 : DRM_IN_OUT,
              113 : DRM_INDEX_LOD_DATA,
              114 : DRM_INFINITE_LIGHT,
              115 : DRM_INLINE_COLOUR,
              116 : DRM_INTERFACE_TEMPLATE,
              117 : DRM_INTERVAL_AXIS,
              118 : DRM_IRREGULAR_AXIS,
              119 : DRM_KEYWORDS,
              120 : DRM_LABEL,
              121 : DRM_LCC_AUGMENTED_3D_LOCATION,
              122 : DRM_LCC_SURFACE_LOCATION,
              123 : DRM_LCE_3D_LOCATION,
              124 : DRM_LEGAL_CONSTRAINTS,
              125 : DRM_LIBRARY,
              126 : DRM_LIGHT_RENDERING_BEHAVIOUR,
              127 : DRM_LIGHT_RENDERING_PROPERTIES,
              128 : DRM_LIGHT_RENDERING_PROPERTIES_CONTROL_LINK,
              129 : DRM_LIGHT_SOURCE,
              130 : DRM_LIGHT_SOURCE_CONTROL_LINK,
              131 : DRM_LINE,
              132 : DRM_LINEAGE,
              133 : DRM_LINEAR_FEATURE,
              134 : DRM_LINEAR_GEOMETRY,
              135 : DRM_LITERAL,
              136 : DRM_LOBE_DATA,
              137 : DRM_LOCAL_4X4,
              138 : DRM_LOCATION,
              139 : DRM_LOCATION_2D,
              140 : DRM_LOCATION_3D,
              141 : DRM_LOCATION_SURFACE,
              142 : DRM_LOD_RELATED_FEATURES,
              143 : DRM_LOD_RELATED_GEOMETRY,
              144 : DRM_LSA_2D_LOCATION,
              145 : DRM_LSP_2D_LOCATION,
              146 : DRM_LSR_2D_LOCATION,
              147 : DRM_LSR_3D_LOCATION,
              148 : DRM_LSR_3D_LOCATION_CONTROL_LINK,
              149 : DRM_LSR_TRANSFORMATION,
              150 : DRM_LSR_TRANSFORMATION_STEP,
              151 : DRM_LTSAS_3D_LOCATION,
              152 : DRM_LTSAS_SURFACE_LOCATION,
              153 : DRM_LTSC_3D_LOCATION,
              154 : DRM_LSTC_SURFACE_LOCATION,
              155 : DRM_LTSE_3D_LOCATION,
              156 : DRM_LTSE_SURFACE_LOCATION,
              157 : DRM_M_AUGMENTED_3D_LOCATION,
              158 : DRM_M_SURFACE_LOCATION,
              159 : DRM_MAP_SCALE_LOD_DATA,
              160 : DRM_MESH_FACE_TABLE,
              161 : DRM_MODEL,
              162 : DRM_MODEL_INSTANCE_TEMPLATE_INDEX,
              163 : DRM_MODEL_LIBRARY,
              164 : DRM_MOVING_LIGHT_BEHAVIOUR,
              165 : DRM_OCTANT_DATA,
              166 : DRM_OCTANT_RELATED_FEATURES,
              167 : DRM_OCTANT_RELATED_GEOMETRY,
              168 : DRM_OMS_AUGMENTED_3D_LOCATION,
              169 : DRM_OMS_SURFACE_LOCATION,
              170 : DRM_OVERLOAD_PRIORITY_INDEX,
              171 : DRM_PARALLELEPIPED_VOLUME_EXTENT,
              172 : DRM_PD_3D_LOCATION,
              173 : DRM_PD_SURFACE_LOCATION,
              174 : DRM_PERIMETER_DATA,
              175 : DRM_PERIMETER_RELATED_FEATURE_TOPOLOGY,
              176 : DRM_PERIMETER_RELATED_FEATURES,
              177 : DRM_PERIMETER_RELATED_GEOMETRY,
              178 : DRM_PERIMETER_RELATED_GEOMETRY_TOPOLOGY,
              179 : DRM_POINT,
              180 : DRM_POINT_FEATURE,
              181 : DRM_POLYGON,
              182 : DRM_POLYGON_CONTROL_LINK,
              183 : DRM_POLYHEDRON,
              184 : DRM_POSITIONAL_LIGHT,
              185 : DRM_PREDEFINED_FUNCTION,
              186 : DRM_PRESENTATION_DOMAIN,
              187 : DRM_PRIMITIVE_COLOUR,
              188 : DRM_PRIMITIVE_FEATURE,
              189 : DRM_PRIMITIVE_GEOMETRY,
              190 : DRM_PRIMITIVE_SUMMARY_ITEM,
              191 : DRM_PROCESS_STEP,
              192 : DRM_PROPERTY,
              193 : DRM_PROPERTY_CHARACTERISTIC,
              194 : DRM_PROPERTY_DESCRIPTION,
              195 : DRM_PROPERTY_GRID,
              196 : DRM_PROPERTY_GRID_HOOK_POINT,
              197 : DRM_PROPERTY_SET,
              198 : DRM_PROPERTY_SET_INDEX,
              199 : DRM_PROPERTY_SET_INDEX_CONTROL_LINK,
              200 : DRM_PROPERTY_SET_TABLE,
              201 : DRM_PROPERTY_SET_TABLE_GROUP,
              202 : DRM_PROPERTY_SET_TABLE_LIBRARY,
              203 : DRM_PROPERTY_TABLE,
              204 : DRM_PROPERTY_TABLE_REFERENCE,
              205 : DRM_PROPERTY_TABLE_REFERENCE_CONTROL_LINK,
              206 : DRM_PROPERTY_VALUE,
              207 : DRM_PROXIMITY_DATA,
              208 : DRM_PS_AUGMENTED_3D_LOCATION,
              209 : DRM_PS_SURFACE_LOCATION,
              210 : DRM_PSEUDO_CODE_FUNCTION,
              211 : DRM_PYRAMID_DIRECTIONAL_LIGHT,
              212 : DRM_QUADRANT_DATA,
              213 : DRM_QUADRANT_RELATED_FEATURES,
              214 : DRM_QUADRANT_RELATED_GEOMETRY,
              215 : DRM_REFERENCE_ORIGIN,
              216 : DRM_REFERENCE_SURFACE,
              217 : DRM_REFERENCE_VECTOR,
              218 : DRM_REFERENCE_VECTOR_CONTROL_LINK,
              219 : DRM_REGULAR_AXIS,
              220 : DRM_RELATIVE_TIME,
              221 : DRM_RELATIVE_TIME_INTERVAL,
              222 : DRM_RENDERING_PRIORITY_LEVEL,
              223 : DRM_RENDERING_PROPERTIES,
              224 : DRM_RESPONSIBLE_PARTY,
              225 : DRM_RGB_COLOUR,
              226 : DRM_RGB_COLOUR_CONTROL_LINK,
              227 : DRM_ROLE_DATA,
              228 : DRM_ROTATING_LIGHT_BEHAVIOUR,
              229 : DRM_ROTATION,
              230 : DRM_ROTATION_CONTROL_LINK,
              231 : DRM_SCALE,
              232 : DRM_SCALE_CONTROL_LINK,
              233 : DRM_SEASON,
              234 : DRM_SEC_3D_LOCATION,
              235 : DRM_SECURITY_CONSTRAINTS,
              236 : DRM_SEDRIS_ABSTRACT_BASE,
              237 : DRM_SEPARATING_PLANE,
              238 : DRM_SEPARATING_PLANE_DATA,
              239 : DRM_SEPARATING_PLANE_RELATED_GEOMETRY,
              240 : DRM_SEPARATING_PLANE_RELATIONS,
              241 : DRM_SEQ_3D_LOCATION,
              242 : DRM_SMD_3D_LOCATION,
              243 : DRM_SME_3D_LOCATION,
              244 : DRM_SOUND,
              245 : DRM_SOUND_INSTANCE,
              246 : DRM_SOUND_INSTANCE_CONTROL_LINK,
              247 : DRM_SOUND_LIBRARY,
              248 : DRM_SOUND_VOLUME,
              249 : DRM_SOURCE,
              250 : DRM_SPATIAL_ASSOCIATION_DATA,
              251 : DRM_SPATIAL_EXTENT,
              252 : DRM_SPATIAL_INDEX_DATA,
              253 : DRM_SPATIAL_INDEX_RELATED_FEATURE_TOPOLOGY,
              254 : DRM_SPATIAL_INDEX_RELATED_FEATURES,
              255 : DRM_SPATIAL_INDEX_RELATED_GEOMETRY,
              256 : DRM_SPATIAL_INDEX_RELATED_GEOMETRY_TOPOLOGY,
              257 : DRM_SPATIAL_RESOLUTION_LOD_DATA,
              258 : DRM_SPECULAR_COLOUR,
              259 : DRM_SPHERICAL_VOLUME_EXTENT,
              260 : DRM_SPOT_LIGHT,
              261 : DRM_SRF_SUMMARY,
              262 : DRM_STAMP_BEHAVIOUR,
              263 : DRM_STATE_CONTROL_LINK,
              264 : DRM_STATE_DATA,
              265 : DRM_STATE_RELATED_FEATURES,
              266 : DRM_STATE_RELATED_GEOMETRY,
              267 : DRM_STROBING_LIGHT_BEHAVIOUR,
              268 : DRM_SURFACE_GEOMETRY,
              269 : DRM_SYMBOL,
              270 : DRM_SYMBOL_LIBRARY,
              271 : DRM_TABLE_PROPERTY_DESCRIPTION,
              272 : DRM_TACK_POINT,
              273 : DRM_TEXT,
              274 : DRM_TEXTURE_COORDINATE,
              275 : DRM_TEXTURE_COORDINATE_CONTROL_LINK,
              276 : DRM_TIME_CONSTRAINTS_DATA,
              277 : DRM_TIME_INTERVAL,
              278 : DRM_TIME_OF_DAY,
              279 : DRM_TIME_POINT,
              280 : DRM_TIME_RELATED_FEATURES,
              281 : DRM_TIME_RELATED_GEOMETRY,
              282 : DRM_TM_AUGMENTED_3D_LOCATION,
              283 : DRM_TM_SURFACE_LOCATION,
              284 : DRM_TRANSFORMATION,
              285 : DRM_TRANSLATION,
              286 : DRM_TRANSLATION_CONTROL_LINK,
              287 : DRM_TRANSLUCENCY,
              288 : DRM_TRANSLUCENCY_CONTROL_LINK,
              289 : DRM_TRANSMITTAL_ROOT,
              290 : DRM_TRANSMITTAL_SUMMARY,
              291 : DRM_TWINKLING_LIGHT_BEHAVIOUR,
              292 : DRM_UNION_OF_FEATURE_TOPOLOGY,
              293 : DRM_UNION_OF_FEATURES,
              294 : DRM_UNION_OF_GEOMETRY,
              295 : DRM_UNION_OF_GEOMETRY_HIERARCHY,
              296 : DRM_UNION_OF_GEOMETRY_TOPOLOGY,
              297 : DRM_UNION_OF_PRIMITIVE_GEOMETRY,
              298 : DRM_VARIABLE,
              299 : DRM_VERTEX,
              300 : DRM_VOLUME_EXTENT,
              301 : DRM_VOLUME_GEOMETRY,
              302 : DRM_VOLUME_LIGHT_BEHAVIOUR,
              303 : DRM_VOLUME_LOD_DATA,
              304 : DRM_VOLUME_OBJECT,
              305 : DRM_VOLUMETRIC_FEATURE,
              306 : DRM_WORLD_3X3,
              307 : DRM_WORLD_TRANSFORMATION,
      [308..1000] : // reserved for future standardization,
           > 1000 : // reserved for registration )

5.2.7.8 Element_Type_Code

Table 5.29 defines the Element_Type_Code data type that specifies the type of element code used in an Element_Type variant record.

Table 5.29 — Element_Type_Code values

Value Description

ATTRIBUTE

The element represents an EDCS_Attribute_Code.

INDEX

The element represents an index.

VARIABLE

The element represents a variable.

Element_Type_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ATTRIBUTE,
                   2 : INDEX,
                   3 : VARIABLE,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.9 Encoding

Table 5.30 defines the Encoding data type that specifies a supported encoding for transmittals.

Table 5.30 — Encoding values

Value Description
STF The transmittal is encoded in the transmittal Format binary encoding (STF) as specified in Part 3 of ISO/IEC 18023.

Encoding ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : STF,
           [2..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.10 Enumerated_Or_Selection_Type

This data type supports specifying an enumerated data type or selection data type that may be a search target. Only enumerated data types or selection data types used in DRM class fields are included.

Enumerated_Or_Selection_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NULL_TYPE,
                   2 : AXIS_ALIGNMENT,
                   3 : BOOLEAN,
                   4 : CAMERA_PROJECTION_TYPE,
                   5 : CI_ROLECODE,
                   6 : COLOUR_BINDING,
                   7 : COLOUR_MODEL,
                   8 : DRM_CLASS,
                   9 : EDCS_ATTRIBUTE_CODE,
                  10 : EDCS_ATTRIBUTE_VALUE_TYPE,
                  11 : EDCS_BOOLEAN,
                  12 : EDCS_CLASSIFICATION_CODE,
                  13 : EDCS_ENUMERANT_CODE,
                  14 : EDCS_NUMERIC_VALUE_TYPE,
                  16 : EDCS_UNIT_CODE,
                  15 : EDCS_UNIT_SCALE_CODE,
                  17 : EDCS_VALUE_CHARACTERISTIC_CODE,
                  18 : ELEMENT_TYPE_CODE,
                  19 : FEATURE_TOPOLOGY_LEVEL,
                  20 : FONT_STYLE
                  21 : FUNCTIONAL_ASSOCIATION_MEANING_TYPE,
                  22 : GEOMETRIC_CENTRE_CODE,
                  23 : GEOMETRY_TOPOLOGY_LEVEL,
                  24 : GRID_OVERLAP_OPERATOR,
                  25 : HIERARCHY_SUMMARY_MULTIPLICITY_CODE,
                  26 : IMAGE_COMPONENT_TYPE,
                  27 : IMAGE_MAPPING_METHOD,
                  28 : IMAGE_PROJECTION_TYPE,
                  29 : IMAGE_SCAN_DIRECTION,
                  30 : IMAGE_SCAN_DIRECTION_Z,
                  31 : IMAGE_SIGNATURE,
                  32 : IMAGE_WRAP,
                  33 : INDEX_CODE,
                  34 : INTERPOLATION_TYPE,
                  35 : LOD_DATA_TYPE,
                  36 : LSR_TRANSFORMATION_AXIS,
                  37 : MD_KEYWORDTYPECODE,
                  38 : MD_RESTRICTIONCODE
                  39 : MEDIA_FORMAT,
                  40 : MODEL_REFERENCE_TYPE,
                  41 : MONTH,
                  42 : OCTANT,
                  43 : ORDERING_REASON,
                  44 : PIXEL_FILL_METHOD,
                  45 : POINT_LIGHT_DISLAY_TYPE,
                  46 : PREDEFINED_FUNCTION,
                  47 : PRESENT_IN,
                  48 : PROPERTY_CODE_TYPE,
                  49 : QUADRANT,
                  50 : REFERENCE_SURFACE_ELEVATION_SELECT,
                  51 : REFERENCE_SURFACE_LOD_SELECT,
                  52 : REFERENCE_VECTOR_TYPE,
                  53 : SEASON,
                  54 : SHADING_METHOD,
                  55 : SINGLE_VALUE_TYPE,
                  56 : SOUND_FORMAT,
                  57 : SPACING_TYPE,
                  58 : SPATIAL_ASSOCIATION_MEANING_TYPE,
                  59 : SPATIAL_INDEX_SPACING_UNIT,
                  60 : SRM_DSS_CODE,
                  61 : STATE_MISMATCH_BEHAVIOUR,
                  62 : SYMBOL_FORMAT,
                  63 : TIME_CONFIGURATION,
                  64 : TIME_DATA_TYPE,
                  65 : TIME_OF_DAY,
                  66 : TIME_SIGNIFICANCE,
                  67 : UNDERLINE_STYLE,
                  68 : UNION_REASON,
                  69 : VARIABLE_CODE,
          [70..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.11 Feature_Topology_Level

Table 5.31 defines the Feature_Topology_Level data type that specifies the level of feature topology if a <DRM Feature Hierarchy> instance that contains feature topology is present.

Table 5.31 — Feature_Topology_Level values

Value Description

ZERO

Topology level ZERO.

The following DRM objects and relationships shall exist:

DRM objects:

  1. <DRM Feature Node> — one or more instances, and
  2. <DRM Feature Edge> — required if any <DRM Feature Face> instances exist.

Relationships:

  1. A two-way  association  between <DRM Feature Node> instances and <DRM Feature Edge> instances:

    1. shall exist for each <DRM Feature Edge> instance that is connected to a given <DRM Feature Node> instance; and
    2. shall exist for each of the two <DRM Feature Node> instances (starting and ending node) that bound each <DRM Feature Edge> instance.

Constraints:

  1. No additional constraints are required.

Other types of feature topology DRM objects and relationships may exist at level ZERO, but are not required. The requirements of level ONE shall  not be met. Thus, there shall be at least one pair of collocated <DRM Feature Node> instances.

ONE

Topology level ONE.

No additional types of DRM objects or relationships are required.

Constraints:

  1. Each <DRM Feature Node> instance shall have a <DRM Location> instance with unique coordinates. That is, no two <DRM Feature Node> instances may be collocated.

The requirements of level TWO shall not be met. That is, one pair of intersecting <DRM Feature Edge> instances shall exist.

TWO

Topology level TWO.

No additional types of DRM objects or relationships are required.

Constraints:

  1. <DRM Feature Edge> instances may not intersect or overlap one another, except where they meet at a common <DRM Feature Node> instance.

The requirements of level THREE shall not be met.

THREE

Topology level THREE.

The following DRM objects and relationships shall exist, in addition to the requirements of topology level TWO.

DRM objects:

  1. <DRM Feature Face> — one or more instances, and
  2. <DRM Feature Face Ring> — one or more for each <DRM Feature Face> instance.

Relationships:

  1. A two-way association between  <DRM Feature Node> and <DRM Feature Face> instances shall exist for each <DRM Feature Node> instance located in the interior of a <DRM Feature Face> instance.
  2. A one-way association from <DRM Feature Edge> instances to <DRM Feature Face> instances shall exist for each of the <DRM Feature Face> instances that each <DRM Feature Edge> bounds.
  3. A one-way association from <DRM Feature Face Ring> instances to <DRM Feature Edge> instances shall exist for each of the <DRM Feature Edge> instances that bound a <DRM Feature Face> instance.

Constraints:

  1. <DRM Feature Face> instances may not intersect or overlap one another, except where they meet at a common <DRM Feature Edge>.
  2. The set of <DRM Feature Face> instances shall be exclusive and exhaustive, forming a complete topological surface.
  3. Each <DRM Feature Edge> instance shall bound exactly two <DRM Feature Face> instances.
  4. Exactly one <DRM Feature Face> instance within the parent <DRM Union of Feature Topology> shall have its universal field set to TRUE. All other <DRM Feature Face> instances within the parent <DRM Union of Feature Topology> shall have their universal fields set to FALSE.

FOUR

Topology level FOUR.

No additional types of DRM objects or relationships are required.

Constraints:

  1. <DRM Location 3D> instances are required for all coordinates.
  2. Each <DRM Feature Edge> instance may bound zero or more <DRM Feature Face> instances. This overrides the level THREE constraint.
  3. At least one <DRM Feature Edge>  instance shall bound more than two <DRM Feature Face> instances.
FIVE Topology level FIVE.

The following DRM objects and relationships shall exist, in addition to the requirements of topology level FOUR.

DRM objects:

  1. <DRM Feature Volume> — one or more instances, and
  2. <DRM Feature Volume Shell> — one or more instances for each <DRM Feature Volume> instance.

Relationships:

  1. A two-way association between  <DRM Feature Node> and <DRM Feature Volume> instances shall exist for each <DRM Feature Node> instance located in the interior of a <DRM Feature Volume> instance.
  2. A two-way association between <DRM Feature Edge> and <DRM Feature Volume> instances shall exist for each <DRM Feature Edge> instance completely located in the interior of a <DRM Feature Volume> instance.
  3. A one-way association from <DRM Feature Face> instances to <DRM Feature Volume> instances shall exist for each of the two  <DRM Feature Volume> instances that each <DRM Feature Face> bounds.
  4. A one-way association from <DRM Feature Volume Shell> instances to <DRM Feature Face> instances shall exist for each of the <DRM Feature Face> instances that bound a <DRM Feature Volume> instance.

Constraints:

  1. <DRM Feature Volume> instances may not intersect or overlap one another, except where they meet at a common <DRM Feature Face>.
  2. The set of <DRM Feature Volume> instances shall be exclusive and exhaustive, forming a complete topological surface.
  3. Exactly one <DRM Feature Volume> instance within the parent <DRM Union of Feature Topology> shall have its universal field set to TRUE. All other <DRM Feature Volume> instances within the parent <DRM Union of Feature Topology> shall have their universal fields set to FALSE.

Feature_Topology_Level ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ZERO,
                   2 : ONE,
                   3 : TWO,
                   4 : THREE,
                   5 : FOUR,
                   6 : FIVE,
           [7..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.12 Font_Style

Table 5.32 defines the Font_Style data type that specifies the style of font to be used.

A font family that has other styles should map those into the most appropriate of the styles available including those styles that may have been registered and are supported by the implementation.

Table 5.32 — Font_Style values

Value Description

NORMAL

The text is displayed using the normal form specified by the font family.

BOLD

The text is displayed using the bold form specified by the font family.

ITALIC

The text is displayed using the italic form specified by the font family.

BOLD_ITALIC

The text is displayed using the form specified by the font family that is both bold and italic.

Font_Style ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NORMAL,
                   2 : BOLD,
                   3 : ITALIC,
                   4 : BOLD_ITALIC,
           [5..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.13 Functional_Association_Meaning_Type

Table 5.33 defines the Functional_Association_Meaning_Type data type that specifies the meaning of functional association data. The DRM objects cited below correspond to the environmental objects that have the functional association.

Table 5.33 — Functional_Association_Meaning_Type values

Value Description
CONTROLS The association indicates that the associating DRM object exerts a controlling influence over the associated DRM object that affects the state, attribution, or position of the associated DRM object.
CONTROLLED_BY The association is the inverse of CONTROLS indicating that the state, attribution, or position of the associating object is affected by the associated DRM object.
SUPPORTS The association indicates that the associating DRM object exerts a force that acts to keep the associated DRM object in its position.
SUPPORTED_BY The association is the inverse of SUPPORTS indicating that the associating DRM object is kept in its position by a force exerted by the associated DRM object.
ATTACHED The association indicates that the associating DRM object is attached to the associated DRM object.

Functional_Association_Meaning_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CONTROLS,
                   2 : CONTROLLED_BY,
                   3 : SUPPORTS,
                   4 : SUPPORTED_BY,
                   5 : ATTACHED,
           [6..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.14 Geometric_Centre_Code

Table 5.34 defines the Geometric_Centre_Code data type that specifies the semantic meaning of a <DRM Geometric Centre> instance.

Table 5.34 — Geometric_Centre_Code values

Value Description

CENTRE_OF_BUOYANCY

The value represents the centre of buoyancy.

CENTRE_OF_MASS

The value represents the centre of mass.

CENTRE_OF_PRESSURE

The value represents the centre of pressure.

Geometric_Centre_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CENTRE_OF_BUOYANCY,
                   2 : CENTRE_OF_MASS,
                   3 : CENTRE_OF_PRESSURE,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.15 Geometry_Topology_Level

Table 5.35 defines the Geometry_Topology_Level data type that specifies, for a given <DRM Geometry Topology Hierarchy> instance, the level of geometry topology that is present.

Table 5.35 — Geometry_Topology_Level values

Value Description

ZERO

Topology level ZERO.

The following DRM objects, and relationships among those DRM objects, shall exist:

DRM objects:

  1. <DRM Geometry Node> — one or more instances, and
  2. <DRM Geometry Edge> — required if any <DRM Geometry Face> instances exist.

Relationships:

  1. A two-way  association  between <DRM Geometry Node> instances and <DRM Geometry Edge> instances shall exist for:
    1. each <DRM Geometry Edge> instance that is connected to a given <DRM Geometry Node> instance; and
    2. each of the two <DRM Geometry Node> instances (starting and ending node) that bound each <DRM Geometry Edge> instance.

Constraints:

  1. No additional constraints are required.

Other types of geometry topology objects and relationships may exist at level ZERO, but are not required. The requirements of level ONE shall  not be met. Thus, there shall be at least one pair of collocated <DRM Geometry Node> instances.

ONE

Topology level ONE.

No additional types of DRM objects or relationships are required.

Constraints:

  1. The <DRM Point> instances corresponding to each <DRM Geometry Node> shall have <DRM Location> instances with unique coordinates. That is, no two <DRM Geometry Node> instances may be collocated.

The requirements of level TWO shall not be met. That is, one pair of intersecting <DRM Geometry Edge> instances shall exist.

TWO

Topology level TWO.

No additional types of DRM objects or relationships are required.

Constraints:

  1. The <DRM Linear Geometry> instances corresponding to <DRM Geometry Edge> instances may not intersect or overlap one another except where they meet at a <DRM Point> instance corresponding to a common <DRM Geometry Node> instance.

The requirements of level THREE shall not be met.

THREE

Topology level THREE.

The following DRM objects and relationships shall exist, in addition to the requirements of topology level TWO.

DRM objects:

  1. <DRM Geometry Face> — one or more instances

Relationships:

  1. A two-way association between  <DRM Geometry Node> and <DRM Geometry Face> instances shall exist for each <DRM Geometry Node> instance located in the interior of a <DRM Geometry Face> instance.
  2. A one-way assocation from <DRM Geometry Edge> instances to <DRM Geometry Face> instances shall exist for each of the <DRM Geometry Face> instances that each <DRM Geometry Edge> bounds.

Constraints:

  1. The <DRM Surface Geometry> instances corresponding to <DRM Geometry Face> instances shall not intersect or overlap one another except where they meet at a <DRM Linear Geometry> instance corresponding to a common <DRM Geometry Edge> instance.
  2. Each <DRM Geometry Edge> instance shall bound exactly two <DRM Geometry Face> instances.

FOUR

Topology level FOUR.

No additional types of DRM objects or relationships are required.

Constraints:

  1. Each <DRM Geometry Edge> instance may bound zero or more <DRM Geometry Face> instances. This overrides the level THREE constraint.
  2. At least one <DRM Geometry Edge>  instance shall bound more than two <DRM Geometry Face> instances.
FIVE Topology level FIVE.

The following DRM objects and relationships shall exist, in addition to the requirements of topology level FOUR.

DRM objects:

  1. <DRM Geometry Volume> — one or more instances.

Relationships:

  1. A two-way association between  <DRM Geometry Node> and <DRM Geometry Volume> instances shall exist for each <DRM Geometry_Node> instance located in the interior of a <DRM Geometry Volume> instance.
  2. A two-way association between <DRM Geometry Edge> and <DRM Geometry Volume> instances shall exist for each <DRM Geometry Edge> instance completely located in the interior of a <DRM Geometry Volume> instance.
  3. A one-way association from <DRM Geometry Face> instances to <DRM Geometry Volume> instances shall exist for each of the two  <DRM Geometry Volume> instances that each <DRM Geometry Face> bounds.

Constraints:

  1. The <DRM Volume Geometry> instances corresponding to <DRM Geometry Volume> instances may not intersect or overlap one another, except where they meet at a <DRM Surface Geometry> instance corresponding to a common <DRM Geometry Face> instance.

Geometry_Topology_Level ::=(
                 < 1 : // implementation dependent and non-conforming,
                   1 : ZERO,
                   2 : ONE,
                   3 : TWO,
                   4 : THREE,
                   5 : FOUR,
                   6 : FIVE,
           [7..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.16 Grid_Overlap_Operator

Table 5.36 defines the Grid_Overlap_Operator data type that specifies how overlapping <DRM Property Grid> instances shall be interpreted.

Table 5.36 — Grid_Overlap_Operator values

Value Description

BASE

The base value is used.

REPLACE

The base value is replaced by the overlapped value.

MERGE

The description of the merge method is specified in the supplemental_information field of the <DRM Identification> instance associated with the <DRM Data Table> aggregate.

ADD

The overlapped value is added to the base value.

AVERAGE

The overlapped value and the base value are averaged.

Grid_Overlap_Operator ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : BASE,
                   2 : REPLACE,
                   3 : MERGE,
                   4 : ADD,
                   5 : AVERAGE,
           [6..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.17 Hierarchy_Summary_Multiplicity_Code

Table 5.37 defines the Hierarchy_Summary_Multiplicity_Code data type that specifies the multiplicity for DRM objects specified in an instance of <DRM Hierachy Summary Item>.

Table 5.37 — Hierarchy_Summary_Multiplicity_Code values

Value Description
EXACT The multiplicity represents exactly how many instances of the specified DRM class it represents.
ORDER_OF_MAGNITUDE The multiplicity represents approximately the order of magnitude of the actual multiplicity.

EXAMPLES  10, 100..1000, and 10000.

UNKNOWN DRM objects of the specified DRM class are present but the multiplicity is unknown.

Hierarchy_Summary_Multiplicity_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : EXACT,
                   2 : ORDER_OF_MAGNITUDE,
                   3 : UNKNOWN,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.18 Image_Component_Type

Table 5.38 defines the Image_Component_Type data type that specifies whether the components of a texel for a <DRM Image> instance are represented as signed integers, unsigned integers, or floating point numbers.

Table 5.38 — Image_Component_Type values

Value Description

SIGNED_INTEGER

Each texel is represented by signed integer values.

UNSIGNED_INTEGER

Each texel is represented by unsigned integer values.

FLOATING_POINT

Each texel is represented by floating point values.

Image_Component_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : SIGNED_INTEGER,
                   2 : UNSIGNED_INTEGER,
                   3 : FLOATING_POINT,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.19 Image_Mapping_Method

Table 5.39 defines the Image_Mapping_Method data type that specifies how the image is blended with the background when the image is being used as a texture map.

Table 5.39 — Image_Mapping_Method values

Value Description

REPLACE

For REPLACE image mapping method, no calculations are needed; the colour and alpha (derived from a <DRM Translucency> instance) of the <DRM Image> instance completely replace the original colour and alpha of the DRM object, if any.

DECAL

For DECAL image mapping method, the <DRM Image> instance is rendered on top of anything in the existing rendering, like a decal.

For images with image signature ALPHA, LUMINANCE, or LUMINANCE_ALPHA:

The results are not specified.

For images with image signature 123COLOUR:

displayed colour =
  image colour
displayed alpha =
  original DRM object alpha

For images with image signature 123COLOUR_ALPHA:

displayed colour =
  (1 - image alpha)
     × original DRM object colour
  + (image alpha × image colour)
displayed alpha =
  original DRM object alpha

MODULATE

For MODULATE image mapping method, the <DRM Image> instance’s luminance (or colour) and alpha are linearly combined with those of the original DRM object.

For images with image signature LUMINANCE:

displayed colour =
  image luminance
    × original DRM object colour
displayed alpha =
  original object alpha

For images with image signature ALPHA:

displayed colour =
  original DRM object colour
displayed alpha  =
  original DRM object alpha × image alpha

For images with image signature LUMINANCE_ALPHA:

displayed colour =
  image luminance × original DRM object colour
displayed alpha =
  original DRM object alpha × image alpha

For images with image signature 123COLOUR:

displayed colour =
  image colour × original DRM object colour
displayed alpha =
  original DRM object alpha

For images with image signature 123COLOUR_ALPHA:

displayed colour =
  image colour × original DRM object colour
displayed alpha =
  image alpha × original DRM object alpha

BLEND

For BLEND image mapping method, the image blend colour of the DRM object determines how the <DRM Image> instance is combined with the DRM object’s primary colour.

For images with image signature LUMINANCE:

displayed colour =
  (1 - image luminance)
    × original DRM object colour
  + (image luminance × blend colour)
displayed alpha  =
  original DRM object alpha

For images with image signature ALPHA:

displayed colour =
  original DRM object colour
displayed alpha  =
  original DRM object alpha × image alpha

For images with image signature LUMINANCE_ALPHA:

displayed colour =
  (1 - image luminance)
    × original DRM object colour
  + (image luminance × blend colour)
displayed alpha =
  original DRM object alpha × image alpha

For images with image signature 123COLOUR:

displayed colour =
  (1 - image colour)
    × original DRM object colour
  + (blend colour × image colour)
displayed alpha =
  original DRM object alpha

For images with image signature 123COLOUR_ALPHA:

displayed colour =
  (1 - image colour)
    × original DRM object colour
  + (blend colour × image colour)
displayed alpha =
  original DRM object alpha × image alpha

Image_Mapping_Method ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : REPLACE,
                   2 : DECAL,
                   3 : MODULATE,
                   4 : BLEND,
           [5..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.20 Image_Projection_Type

Table 5.40 defines the Image_Projection_Type data type that specifies the projection to be used when applying image instances to textured DRM objects.

Table 5.40 — Image_Projection_Type values

Value Description

PLANAR

This value specifies that the  <DRM Image> instance is to be applied to a planar surface.

CYLINDRICAL

This value specifies that the <DRM Image> instance is to be warped to a cylindrical shape as specified by the <DRM Image Anchor> instance. For this case, the textured object does not have <DRM Texture Coordinate> instances or <DRM Tack Point> instances; <DRM Image Anchor> instances are provided by either the <DRM Image Mapping Function> instance or the <DRM Image> instance itself.

SPHERICAL

This value specifies that the <DRM Image> instance is to be warped to a spherical shape as specified by the <DRM Image Anchor> instance. For this case, the textured object does not have <DRM Texture Coordinate> instances or <DRM Tack Point> instances; <DRM Image Anchor> instances are provided by either the <DRM Image Mapping Function> instance or the <DRM Image> instance itself.

Image_Projection_Type ::= (    
                 < 1 : // implementation dependent and non-conforming,
                   1 : PLANAR,
                   2 : CYLINDRICAL,
                   3 : SPHERICAL,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.21 Image_Signature

Table 5.41 defines the Image_Signature data type that specifies how many texels are represented within a <DRM Image> instance.

Table 5.41 — Image_Signature values

Value Description

ALPHA

This value is used to indicate that each texel in the <DRM Image> instance consists of an alpha value, representing the coverage of the texel. An alpha of 0,0 indicates that the texel is transparent, while an alpha of 1,0 indicates that the texel is opaque. A <DRM Image> instance with this signature may be called an alpha channel or an alpha map. For further details, see [FOLEY].

Note that an alpha map can be composited with:

  1. a compatible 123_COLOUR <DRM Image> instance to produce a 123COLOUR_ALPHA texture map;
  2. compatible COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, and COLOUR_COORDINATE_3 <DRM Image> instances to produce a 123COLOUR_ALPHA texture map; or
  3. a compatible LUMINANCE <DRM Image> instance to produce a LUMINANCE_AND_ALPHA texutre map.

FURTHER CONSTRAINTS:

  1. bits_of_alpha shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx) fields shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can legally provide an alpha texture map. (Multiple alpha texture maps produce an unspecified result.)

LUMINANCE

This value is used to indicate that the <DRM Image> instance specifies only luminance (also termed intensity) values that form a grey scale image, with no colour values.

A LUMINANCE <DRM Image> instance can be composited with a compatible ALPHA image to produce a LUMINANCE_AND_ALPHA <DRM Image> instance.

EXAMPLE  An example of compositing LUMINANCE <DRM Image> instances is the case of large areas of terrain <DRM Polygon> instances, where the same textures for dirt are repeated over and over. To avoid creating a “quilt” effect on the terrain, a LUMINANCE <DRM Image> instance can be composited with the terrain (using different offsets at different locations to make the effect appear random) to randomize the textures and give the terrain a more realistic appearance.

FURTHER CONSTRAINTS:

bits_of_luminance shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.

COLOUR_COORDINATE_1

This value is used to indicate that each texel in the <DRM Image> instance consists of one colour component, namely the first for its colour model (R for RGB, C for CMY , or H for HSV ). The first colour component of the colour model shall be the only value in the texel.

Note that a COLOUR_COORDINATE_1 <DRM Image> instance can be composited with compatible COLOUR_COORDINATE_2 and COLOUR_COORDINATE_3 <DRM Image> instances of the same dimensions to produce a 123_COLOUR <DRM Image> instance. (These can also be composited with a compatible alpha texture map to produce a 123COLOUR_ALPHA texture map.)

FURTHER CONSTRAINTS:

  1. bits_of_colour_coordinate_1 shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding    minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instance can be associated with a COLOUR_COORDINATE_1 <DRM Image> instance. (Multiple COLOUR_COORDINATE_1 <DRM Image> instances produce an unspecified result.)

EXAMPLE 1  An RGB texel will have red as the texel value.

EXAMPLE 2  A CMY texel will have cyan as the texel value.

EXAMPLE 3  An HSV texel will have hue as the texel value.
 

COLOUR_COORDINATE_2

This value is used to indicate that each texel in the <DRM Image> instance consists of one colour component, namely the second for its colour model (G for RGB, M for CMY , or S for HSV). The second colour component of the colour model shall be the only value in the texel.

Note that a COLOUR_COORDINATE_1 <DRM Image> instance can be composited with compatible COLOUR_COORDINATE_2 and COLOUR_COORDINATE_3 <DRM Image> instances of the same dimensions to produce a 123_COLOUR <DRM Image> instance. These can also be composited with a compatible alpha map to produce a 123COLOUR_ALPHA map.

FURTHER CONSTRAINTS:

  1. bits_of_colour_coordinate_2 shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can be associated with a COLOUR_COORDINATE_2 <DRM Image> instance. Multiple COLOUR_COORDINATE_2 <DRM Image> instances produce an unspecified result.

    EXAMPLES

    An RGB texel will have green as the texel value.

    A CMY texel will have magenta as the texel value.

    An HSV texel will have saturation as the texel value.

COLOUR_COORDINATE_3

This value is used to indicate that each texel in the <DRM Image> instance consists of one colour component, namely the third for its colour model (B for RGB, Y for CMY, or V for HSV). The third colour component of the colour model shall be the only value in the texel.

Note that a COLOUR_COORDINATE_1 <DRM Image> instance can be composited with compatible COLOUR_COORDINATE_2 and COLOUR_COORDINATE_3 <DRM Image> instances of the same dimensions to produce a 123_COLOUR <DRM Image> instance. (These can also be composited with a compatible alpha map to produce a 123COLOUR_ALPHA map.)

FURTHER CONSTRAINTS:

  1. bits_of_colour_coordinate_3 shall specify the size per texel in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can be associated with a COLOUR_COORDINATE_3 <DRM Image> instance. Multiple COLOUR_COORDINATE_3 <DRM Image> instances produce an unspecified result.

EXAMPLE 1  An RGB texel will have blue as the texel value.

EXAMPLE 2  A CMY texel will have yellow as the texel value.

EXAMPLE 3  An HSV texel will have brightness value as the texel value.
 

BUMP_MAP_HEIGHT

This value is used to indicate that the <DRM Image> instance represents a 2D height bump map (or just height map), specifying information used to modify the surface normals of a smooth surface. When used with a ray-tracing technique, bump mapping introduces variations in intensity across the surface, so that it simulates a rough, wrinkled, or dimpled surface (e.g., the surface of the ocean).

A UV type of bump map can be derived from a height bump map by computing the texel gradients in both the X and Y directions.

Rather than manipulating the colour of a flat surface, bump mapping modifies the physical texture of the surface. For a description of bump mapping, see Section 7.8 “Bump Mapping” of [WATT].

FURTHER CONSTRAINTS:

  1. bits_of_bump_map_height shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can legally provide a bump map. Multiple bump maps produce an unspecified result.

EDCS_CLASSIFICATION_CODE

This value is used to indicate that each texel in the <DRM Image> consists of one ECC value.

FURTHER CONSTRAINTS:

  1. The size per texel shall be the size of an EDCS_Classification_Code.
  2. All bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.

LUMINANCE_AND_ALPHA

This value is used to indicate that the <DRM Image> instance is a composite of a luminance <DRM Image> instance and an alpha <DRM Image> instance (see ALPHA and LUMINANCE ). Each texel consists of an intensity value followed by an alpha value. No other ordering is possible with this signature.

A LUMINANCE_AND_ALPHA <DRM Image> instance can be down-sampled to produce an ALPHA <DRM Image> instance and a LUMINANCE <DRM Image> instance.

FURTHER CONSTRAINTS:

  1. bits_of_luminance + bits_of_alpha shall specify the size per texel (in bits) for the corresponding value; all other bits_of_xxx fields shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can legally provide a luminance and alpha map. Multiple alpha maps produce an unspecified result.

123COLOUR

This value is used to indicate that each texel in the <DRM Image> instance consists of three colour components (RGB, CMY, or HSV). The first colour component of the colour model shall be the first value in the texel, the second colour component of the colour model shall be the second value in the texel, and the third colour component of the colour model shall be the third value in the texel. No other ordering is possible with this signature.

Note that a 123COLOUR <DRM Image> instance can be down-sampled to produce a COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, or COLOUR_COORDINATE_3 <DRM Image> instance.

FURTHER CONSTRAINTS:

  1. bits_of_first_colour + bits_of_second_colour + bits_of_third_colour shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can be associated with a 123COLOUR map <DRM Image> instance. Multiple 123COLOUR maps produce an unspecified result.

EXAMPLE 1  An RGB texel shall have red as the first value in the texel, green next and finally blue.

EXAMPLE 2  A CMY texel shall have cyan as the first value in the texel, magenta next, and finally yellow.

EXAMPLE 3  An HSV texel shall have hue as the first value in the texel, saturation next and finally brightness value.

123COLOUR_ALPHA

This value is used to indicate that each texel in the <DRM Image> instance consists of three colour components (RGB, CMY, or HSV) and an alpha value. The first colour component of the colour model shall be the first value in the texel, the second colour component of the colour model shall be the second value in the texel, the third colour component of the colour model shall be the third value in the texel, and the alpha value shall be the last value in the texel. No other ordering is possible with this signature.

Note that a 123COLOUR_ALPHA <DRM Image> instance can be down-sampled to produce a COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, COLOUR_COORDINATE_3, and/or ALPHA <DRM Image> instances.

FURTHER CONSTRAINTS:

  1. bits_of_first_colour + bits_of_second_colour + bits_of_third_colour + bits_of_alpha shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can be associated with a 123COLOUR and alpha map <DRM Image> instance. Multiple 123COLOUR and alpha maps produce an unspecified result.

EXAMPLE 1  An RGBA texel shall have red as the first value in the texel, green next, then blue, and finally alpha.

EXAMPLE 2  A CMYA texel shall have cyan as the first value in the texel, magenta next, then yellow, and finally alpha.

EXAMPLE 3  An HSVA texel shall have hue as the first value in the texel, saturation next, then brightness value, and finally alpha.
 

ONE_MATERIAL

This value is used to indicate that each texel in the <DRM Image> instance consists of one value, an index into the <DRM Property Table> instances referenced by this <DRM Image> instance. These <DRM Property Table> instances describe the material. Normally, a <DRM Property Table Reference> instance is used to find the corresponding <DRM Property Table> instance’s data_table_type, to which the <DRM Axis> instance is referred, and which hash value measurement along that <DRM Axis> instance is being referenced.

The bits_of_material_1 field is used in place of the <DRM Property Table Reference> instance’s index_on_axis field values.

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

  1. The <DRM Image> instance shall have at least one <DRM Property Table Reference> instance. There is no limit to the number of <DRM Property Table Reference> instances but there shall be at least one.
  2. All the <DRM Property Table> instances being referred to by the <DRM Property Table Reference> instance shall be of the same size, since the material reference corresponds to all of them.
  3. bits_of_material_1 shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.

TWO_MATERIALS

This value is used to indicate that each texel in the <DRM Image> instance represents a linear combination of two materials in the <DRM Property Table> instances referenced by this <DRM Image> instance. That is, each texel consists of three values: two indexes into the <DRM Property Table> instances referenced by this <DRM Image> instance, and the percentage (an integer between 0% and 100%) of material_2. These <DRM Property Table> instances describe the materials. Normally, a <DRM Property Table Reference> instance is used to find the corresponding <DRM Property Table> instance’s data_table_type, to which the <DRM Axis> instance is referred, and which hash value measurement along that <DRM Axis> instance is being referenced. The bits_of_material_1 and bits_of_material_2 fields are used in place of the <DRM Property Table Reference> instances’ index_on_axis field values.

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

  1. The <DRM Image> instance shall have at least one <DRM Property Table Reference> instance. There is no limit to the number of <DRM Property Table Reference> instances but there shall be at least one.
  2. All the <DRM Property Table> instances to which the <DRM Property Table Reference> instances refer shall be of the same size, since the material reference corresponds to all of them.
  3. bits_of_material_1 + bits_of_material_2 + bits_of_material_2_percentage shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.

THREE_MATERIALS

This value is used to indicate that each texel in the <DRM Image> instance represents a linear combination of three materials in the <DRM Property Table> instances referenced by this <DRM Image> instance . That is, each texel consists of four values: three indices into the <DRM Property Table> instances referenced by this <DRM Image> instance , and the percentages (integers between 0% and 100%) of material_2 and material_3. These <DRM Property Table> instances describe the materials. Normally, a <DRM Property Table Reference> instance is used to find the corresponding <DRM Property Table> instance’s data_table_type, to which a <DRM Axis> instance is referred, and which hash value measurement along that <DRM Axis> instance is being referenced. The bits_of_material_1, bits_of_material_2, and bits_of_material_3 fields are used in place of the <DRM Property Table Reference> instances’ index_on_axis field values.

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

  1. The <DRM Image> instance shall have at least one <DRM Property Table Reference> instance. There is no limit to the number of <DRM Property Table Reference> instances but there shall be at least one.
  2. All the <DRM Property Table> instances being referred to by the <DRM Property Table Reference> instance shall be of the same size, since the material reference corresponds to all of them.
  3. bits_of_material_1 + bits_of_material_2 + bits_of_material_2_percentage + bits_of_material_3 + bits_of_material_3_percentage shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.

IMAGE_INDEX

This is used to indicate that the <DRM Image> instance consists of references to other <DRM Image> instances (i.e., each texel within the <DRM Image> instance is the index of another <DRM Image> instance). This mechanism allows A <DRM Image> instance to define high-resolution insets.

Each texel is to be replaced by the entire <DRM Image> instance identified by the <DRM Image> instance whose index is specified by that texel. This allows data providers to create a large <DRM Image> instance formed by many smaller <DRM Image> instances. The index is an index into the <DRM Image Library> instance containing this <DRM Image> instance.

FURTHER CONSTRAINTS:

  1. bits_of_image_index shall specify the size per texel, while all other bits_of_xxx fields (and their corresponding min_value_of_xxx and max_value_of_xxx fields) shall be zero.
  2. Each texel within the <DRM Image> instance shall resolve to a valid index within the <DRM Image Library> instance containing this image, but neither directly nor via other IMAGE_INDEX <DRM Image> instances to the index of this <DRM Image> instance.
  3. All referenced <DRM Image> instances shall have the same values as the main <DRM Image> instance for colour_model, data_is_little_endian, data_is_3D, component_data_type, scan_direction, and scan_direction_z.
  4. All referenced <DRM Image> instances shall have either the same image signature X, or IMAGE_INDEX that resolves to referenced images with signature X, so that the main <DRM Image> instance can be resolved to a single image signature.

BUMP_MAP_UV

This value specifies that the <DRM Image> instance represents a bump map in UV space, specifying information used to modify the surface normals of a smooth surface. See BUMP_MAP_HEIGHT for further information on bump maps.

FURTHER CONSTRAINTS:

  1. (bits_of_bump_map_u + bits_of_bump_map_v) shall specify the size per texel (in bits); all other bits_of_xxx fields (and their corresponding minimum_value_of_xxx and maximum_value_of_xxx fields) shall be zero.
  2. When an object has k <DRM Image Mapping Function> instances providing its texture mapping information, at most one of the k <DRM Image Mapping Function> instances can legally provide a bump map. Multiple bump maps produce an unspecified result.

Image_Signature ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ALPHA,
                   2 : LUMINANCE,
                   3 : COLOUR_COORDINATE_1,
                   4 : COLOUR_COORDINATE_2,
                   5 : COLOUR_COORDINATE_3,
                   6 : BUMP_MAP_HEIGHT,
                   7 : EDCS_CLASSIFICATION_CODE,
                   8 : LUMINANCE_AND_ALPHA,
                   9 : 123COLOUR,
                  10 : 123COLOUR_ALPHA,
                  11 : ONE_MATERIAL,
                  12 : TWO_MATERIALS,
                  13 : THREE_MATERIALS,
                  14 : IMAGE_INDEX,
                  15 : BUMP_MAP_UV,
          [16..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.22 Image_Wrap

Table 5.42 defines the Image_Wrap data type that specifies how texture mapping is handled when the boundary of an image is reached.

Table 5.42 — Image_Wrap values

Value Description

CLAMP

Texture coordinates in the image space are clamped to the value range [0,0..1,0]. Negative texture coordinate values are mapped to 0,0, while values greater than 1,0 are mapped to 1,0.

REPEAT

The image space is considered to extend to infinity; the image is repeated in a tiled manner.

Image_Wrap ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CLAMP,
                   2 : REPEAT,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.23 Index_Code

Table 5.43 defines the Index_Code data type that specifies the type of index used in an Element_Type variant record.

Table 5.43 — Index_Code values

Value Description

DATA_TABLE_COMPONENT

This value specifies that a <DRM Data Table> instance is able to reference its ith ordered <DRM Data Table> component, where i is the value of the index being specified.

DATA_TABLE_LIBRARY This value specifies that a <DRM Data Table> instance is able to reference the ith <DRM Data Table> instance in its transmittal’s <Data Table Library> instance, where i is the value of the index being specified.
IMAGE_MAPPING_FUNCTION This value specifies that a cell in a <DRM Data Table> instance is able to reference the ith ordered <DRM Image Mapping Function> component of the <DRM Data Table> instance.

PROP_TABLE_REF_COMPONENT

This value specifies that a <DRM Data Table> instance is able to reference its ith ordered <DRM Property Table Reference> component, where i is the value of the index being specified.

 

Index_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : DATA_TABLE_COMPONENT,
                   2 : DATA_TABLE_LIBRARY,
                   3 : IMAGE_MAPPING_FUNCTION,
                   4 : PROP_TABLE_REF_COMPONENT,
           [5..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.24 Interpolation_Type

Table 5.44 defines the Interpolation_Type data type that specifies the manner in which data table cell values are interpolated to produce a point between grid points.

Table 5.44 — Interpolation_Type values

Value Description
BICUBIC_SPLINE Bicubic spline interpolation uses sixteen known data points to estimate the unknown value of c at a given a, b by fitting a bicubic surface to the sixteen closest data points and then evaluating for c. For more information, see [PRENTER].
DIAGONALIZATION A data point is interpolated by taking the four adjacent data points and dividing them into two triangular facets using a diagonal of the data cell. The diagonal to be used shall be provided as part of the cell data of a  <DRM Data Table> instance by specifying a <DRM Table Property Description> instance with a value of  EAC_GRID_DIAGONALIZATION. An EEC specifying either the lower-left to upper-right diagonal or the upper-left to lower-right diagonal shall be stored in the cell data where the first point is considered to be the lower-left point, the second point is considered to be the upper-left point, the third point is considered to be the upper-right point, and the fourth point is considered to be the lower-right point.

DISALLOWED

Interpolation is disallowed by the data provider.

KRIGING Kriging is an interpolation type that predicts unknown values from data observed at known locations. This type uses variograms to express the spatial variation, and it minimizes the error of predicted values that are estimated by spatial distribution of the predicted values. Kriging interpolation estimates the unknown value using a weighted linear combination of the available sample. The weights for the linear combination are calculated by deriving the function of the data variogram and evaluating this function over the set of points in the data. For more information refer to [OLIVER].
LAGRANGIAN Lagrangian interpolation uses a specified number of existing points to fit a polynomial of degree one less than the number of points. For more information, see [ZWIL].
LINEAR Interpolation is linear (the most common default).
METADATA_SPECIFIED The description of the data provider’s preferred interpolation type is specified in the supplemental_information field of the <DRM Identification> object associated with the <DRM Data Table> aggregate.
NEAREST_NEIGHBOUR Interpolation is by nearest neighbour.

NOT_SUPPLIED

No preferred interpolation type was supplied.

QUADRATIC

Quadratic interpolation uses three known data points to estimate the unknown value of y at a given x by fitting a parabolic arc (quadratic equation) to the three data points and then evaluating for y.

 

Interpolation_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : BICUBIC_SPLINE,
                   2 : DIAGONALIZATION,
                   3 : DISALLOWED,
                   4 : KRIGING,
                   5 : LAGRANGIAN,
                   6 : LINEAR,
                   7 : METADATA_SPECIFIED,
                   8 : NEAREST_NEIGHBOR,
                   9 : NOT_SUPPLIED,
                  10 : QUADRATIC,
          [11..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.25 Interval_Value_Type

Table 5.45 defines the Interval_Value_Type data type that specifies the base data type for an EDCS interval.

Table 5.45 — Interval_Value_Type values

Value Description
COUNT The interval is a range over EDCS count values.
INTEGER The interval is a range over EDCS integer values.
REAL The interval is a range over EDCS floating point values.

 

Interval_Value_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : COUNT,
                   2 : INTEGER,
                   3 : REAL,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.26 LOD_Data_Type

Table 5.46 defines the LOD_Data_Type data type that specifies the selection criteria of <DRM Base LOD Data> being used to organize a <DRM LOD Related Features> or <DRM LOD Related Geometry> instance.

Table 5.46 — LOD_Data_Type values

Value Description

DISTANCE

Each level represents environmental data as viewed from a different distance.

INDEX

Each level represents environmental data selected by an index.

MAP_SCALE

Each level represents environmental data for presentation at a different map scale.

SPATIAL_RESOLUTION Each level represents environmental data that is specified for a specific spatial resolution.

VOLUME

Each level represents environmental data that occupies a different volume.

LOD_Data_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : DISTANCE,
                   2 : INDEX,
                   3 : MAP_SCALE,
                   4 : SPATIAL_RESOLUTION,
                   5 : VOLUME,
           [6..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.27 Media_Format

Table 5.47 defines the Media_Format data type that specifies the format of media files used by <DRM Browse Media>.

Information about each media format is in C.2 Media_Format references. Support of all media types is optional. However, if a media type is supported by an implementation, that support shall conform to the specifications referenced in C.2 Media_Format references.

Table 5.47 — Media_Format values

Value Description

AVI

Audio Video Interleave

BIIF Binary Information Interchange Format

BMP

Bitmap Graphics

CGM Computer Graphics Metafile
EMF Windows Enhanced Metafile

GIF

Graphic Interchange Format

HTML Hyper Text Markup Language

JPEG

Joint Photographic Experts Group

JPEG2000 JPEG 2000
NITFS National Imagery Transmission Format Standard
PICT Picture - Macintosh graphics file
PNG Portable Network Graphics
QT QuickTime
RGB Red Green Blue

RIFF

Resource Interchange File Format

SVG Scalable Vector Graphics

TIFF

Tagged Image File Format

VRML Virtual Reality Modeling Language

WMF

Windows Metafile

X3D X3D XML encoding
X3DV X3D Classic VRML encoding

XBM

X BitMap format

Media_Format ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : AVI,
                   2 : BIIF,
                   3 : BMP,
                   4 : CGM,
                   5 : EMF,
                   6 : GIF,
                   7 : HTML,
                   8 : JPEG,
                   9 : JPEG2000,
                  10 : NITFS,
                  11 : PICT,
                  12 : PNG,
                  13 : QT,
                  14 : RGB,
                  15 : RIFF,
                  16 : SVG,
                  17 : TIFF,
                  18 : VRML,
                  19 : WMF,
                  20 : X3D,
                  21 : X3DV,
                  22 : XBM,
          [23..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.28 Ordering_Reason

Table 5.48 defines the Ordering_Reason data type that specifies the reason for ordering the components of a given instance of <DRM Union Of Features> or <DRM Union Of Geometry>.

Table 5.48 — Ordering_Reason values

Value Description
NONE No reason for the ordering is specified.
FIXED_LISTED A fixed rendering order is used, typically for non-depth-buffered or hybrid image generators.
LAYERED_FASTEST_RENDERING A layered scheme optimized for fastest rendering is used in which the first component is always the base of the layer and the other components are decal layers.

LAYERED_HIGH_QUALITY_RENDERING

A layered scheme optimized for high-quality rendering is used in which the first component is always the base of the layer and the other components are decal layers.

SHARED_ATTRIBUTE The components are layered by some shared attributes.

VIEWER_RANGE

The layers are ordered according to range to the viewer.

Ordering_Reason ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NONE,
                   2 : FIXED_LISTED,
                   3 : LAYERED_FASTEST_RENDERING,
                   4 : LAYERED_HIGH_QUALITY_RENDERING,
                   5 : SHARED_ATTRIBUTE,
                   6 : VIEWER_RANGE,
           [7..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.29 Pixel_Fill_Method

Table 5.49 defines the Pixel_Fill_Method data type that is used in <DRM Rending Properties> instances to specify the colour blending method.

Table 5.49 — Pixel_Fill_Method values

Value Description

CONSTANT

All pixels of the geometry representation are of the specified colour.

BLEND

The pixels of the geometry representation have a colour that is linearly interpolated from the various <DRM Vertex> instances of the representation.

Pixel_Fill_Method ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CONSTANT,
                   2 : BLEND,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.30 Predefined_Function

Table 5.50 defines the Predefined_Function data type that specifies the various predefined functions that an implementation shall support.

In the description for this data type, the letter A indicates the first argument and is the first ordered component of the given <DRM Predefined Function> instance, the letter B indicates the second argument and is the second ordered component of the given <DRM Predefined Function> instance, continuing on as necessary for the number of arguments needed.

Table 5.50 — Predefined_Function values

Value Description

ADD

Definition: A + B

DIVIDE

Definition: A / B

MODULO

Definition: A modulo B

MULTIPLY

Definition: A × B

SUBTRACT

Definition: A - B

COSINE

Definition: cosine(A)

SINE

Definition: sine(A)

TANGENT

Definition: tangent(A)

ARCCOSINE

Definition: arccosine(A)

ARCSINE

Definition: arcsine(A)

ARCTANGENT

Definition: arctangent(A)

ARCTANGENT2

Definition: arctangent2(A,B) where A and B are the numerator and denominator of A/B respectively

HYPOTENUSE

Definition: hypotenuse(A, B)

ABSOLUTE

Definition: |A| : absolute value of A

EXPONENT

Definition: eA

LN

Definition: ln(A) : natural logarithm of A

LOG

Definition: logB A : logarithm base B of A

POWER

Definition: AB : A raised to the Bth power

SQRT

Definition: sqrt(A) : square root of A

MAXIMUM

Definition: if (A > B) return A else return B

MINIMUM

Definition: if (A < B) return A else return B

NOT

Definition: Not (the logical operator)

Return Type: Boolean

This unary logical operator treats an operand with a value of zero (0) as FALSE, while an operand with a non-zero value is treated as TRUE.

AND

Definition: A AND B (the logical operator)

Return Type: Boolean

This binary logical operator treats its first ordered argument (A) as left of the operator, while the second (B) is right. An operand with a value of zero (0) is treated as FALSE, while an operand with a non-zero value is treated as TRUE.

EQUAL

Definition: A = B (the relation)

Return Type: Boolean

GREATER_THAN

Definition: A > B (the relation)

Return Type: Boolean

GREATER_THAN_OR_EQUAL

Definition: A ≥ B (the relation)

Return Type: Boolean

LESS_THAN

Definition: A < B (the relation)

Return Type: Boolean

LESS_THAN_OR_EQUAL

Definition: A ≤ B (the relation)

Return Type: Boolean

NOT_EQUAL

Definition: A ≠ B (the relation)

Return Type: Boolean

OR

Definition: A OR B (the logical operator)

Return Type: Boolean

This binary logical operator treats its first ordered argument (A) as left of the operator, while the second (B) is right. An operand with a value of zero (0) is treated as FALSE, while an operand with a non-zero value is treated as TRUE.

EXCLUSIVE_OR

Definition: A XOR B (the Exclusive Or logical operator)

This binary logical operator treats its first ordered argument (A) as left of the operator, while the second (B) is right. An operand with a value of zero (0) is treated as FALSE, while an operand with a non-zero value is treated as TRUE.

IF

Definition: if A return B; else return C

This function accepts exactly three arguments: A, B, and C.

PI

Definition: The mathematical constant PI (π).

SIMULATION_TIME

Definition: Returns time, in floating point seconds, since simulation start.

SIMULATION_UTIME

Definition: Returns time, in unsigned microseconds, since simulation start. The value is allowed to overflow and roll back to zero.

REFERENCE_SURFACE_ELEVATION

Definition: Returns the elevation value derived from the required <DRM Reference Surface> instance of the transmittal at the location specified by the arguments. Arguments are interpreted as coordinate values within the SRF of the currently scoped instance of <DRM Environment Root>. Argument order shall match the coordinate order determined by the currently scoped SRF. For this function to be valid, at least one <DRM Reference Surface> instance shall be specified within the scope of its <DRM Environment Root> instance.

CYCLE_TIME

Definition: Returns a cycling time value in seconds of the kind specified by the arguments. These arguments are:

A - a trigger boolean to start the cycle(s);

B - cycle length in seconds;

C - a function that returns time in seconds (e.g., GMT);

D - number of cycles to execute before stopping;

E - cycle time at which to start;

F - cycle time at which to end; and

G - Boolean specifying whether the cycle runs one way (e.g., start > end, start > end) or whether it reverses at the end (e.g., start > end > start).

TABLE_VALUE

Definition: This value allows a <DRM Data Table> instance to drive a <DRM Control Link> instance.

This function contains a <DRM Property Table Reference> instance as an argument that references the <DRM Data Table> instance (usually, this will be a <DRM Property Table> instance). The values are stored in cells with a <DRM Property> instance that is specified by the EAC of the type appropriate for the target <DRM Control Link> instance that is to be driven.

This <DRM Predefined Function> instance is contained by the target <DRM Control Link> instance, and thereby returns the value referenced from the <DRM Property Table> instance as the value that drives the target <DRM Control Link>. instance. The <DRM Property Table Reference> instance can itself be controlled using a <DRM Property Table Reference Control Link> instance, allowing different values to be referenced from the <DRM Property Table> instance.

Predefined_Function ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ADD,
                   2 : DIVIDE,
                   3 : MODULO,
                   4 : MULTIPLY,
                   5 : SUBTRACT,
                   6 : COSINE,
                   7 : SINE,
                   8 : TANGENT,
                   9 : ARCCOSINE,
                  10 : ARCSINE,
                  11 : ARCTANGENT,
                  12 : ARCTANGENT2,
                  13 : HYPOTENUSE,
                  14 : ABSOLUTE,
                  15 : EXPONENT,
                  16 : LN,
                  17 : LOG,
                  18 : POWER,
                  19 : SQRT,
                  20 : MAXIMUM,
                  21 : MINIMUM,
                  22 : NOT,
                  23 : AND,
                  24 : EQUAL,
                  25 : GREATER_THAN,
                  26 : GREATER_THAN_OR_EQUAL,
                  27 : LESS_THAN,
                  28 : LESS_THAN_OR_EQUAL,
                  29 : NOT_EQUAL,
                  30 : OR,
                  31 : EXCLUSIVE_OR,
                  32 : IF,
                  33 : PI,
                  34 : SIMULATION_TIME,
                  35 : SIMULATION_UTIME,
                  36 : REFERENCE_SURFACE_ELEVATION,
                  37 : CYCLE_TIME,
                  38 : TABLE_VALUE,
          [39..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.31 Property_Code_Type

Table 5.51 defines the Property_Code_Type data type that specifies the type of property code being specified in an instance of Property_Code.

Table 5.51 — Property_Code_Type values

Value Description
ATTRIBUTE The property is an EAC.
VARIABLE The property is a variable.

Property_Code_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ATTRIBUTE,
                   2 : VARIABLE,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.32 Reference_Vector_Type

Table 5.52 defines the Reference_Vector_Type data type that specifies the type of vector being referenced.

Table 5.52 — Reference_Vector_Type values

Value Description

CAMERA_FORWARD_AXIS

The given <DRM Reference Vector> instance is used to specify the forward axis of a <DRM Camera Point> instance.

CAMERA_UP_AXIS

The given <DRM Reference Vector> instance is used to specify the up axis of a <DRM Camera Point> instance

EMISSIVITY_AZIMUTH

An azimuth for emissivity cases. If the <DRM Reference Vector> has a <DRM Property Value> component specifying an electromagnetic band, this azimuth applies only to the specified EM band. If such a <DRM Property Value> component is not present, this azimuth applies to all emissivity cases.

EMISSIVITY_NORMAL

A normal for emissivity cases. If the <DRM Reference Vector> has a <DRM Property Value> component specifying an electromagnetic band, this normal applies only to the specified EM band. If such a <DRM Property Value> component is not present, this normal applies to all emissivity cases.

FACE_NORMAL

The given <DRM Reference Vector> instance V specifies a vector for a face F, where F corresponds to an aggregate of V and V corresponds to the normal of F at the point specified by V’s <DRM Location> component.

LIGHT_DIRECTION

The given <DRM Reference Vector> instance V specifies, for an aggregate <DRM Lobe Data> instance of V, the following:

LSR_TRANSFORMATION_AXIS

The given <DRM Reference Vector> instance V specifies a vector for a <DRM LSR Transformation Step> instance L, where L corresponds to an aggregate of V such that the transformation step specified by L is performed in the direction specified by V.

MAJOR_AXIS

This value specifies the major axis of a <DRM Ellipse> instance, or the major axis of the elliptical cross-section of a <DRM Cylindrical Volume Extent> instance.

MINOR_AXIS

This value specifies the minor axis of a <DRM Ellipse> instance, or the minor axis of the elliptical cross-section of a <DRM Cylindrical Volume Extent> instance.

MOVEMENT_DIRECTION

The given <DRM Reference Vector> instance V specifies, for a given moving object or phenomenon, the direction of motion.

PARALLELEPIPED_EDGE_DIRECTION

The given <DRM Reference Vector> instance V specifies, for an aggregate <DRM Parallelepiped Volume Extent> instance, the orientation of one of the 3 edges that define the parallelepiped volume.

REFLECTIVITY_AZIMUTH

An azimuth for reflectivity/transmissivity cases. If the <DRM Reference Vector> instance has a <DRM Property Value> component specifying an electromagnetic band, this azimuth applies only to the specified EM band. If such a <DRM Property Value> component is not present, this azimuth applies to all reflectivity and transmissivity cases.

REFLECTIVITY_EMISSIVITY_AZIMUTH

Azimuth for all reflectivity and/or emissivity cases.

REFLECTIVITY_EMISSIVITY_NORMAL

A normal for reflectivity and emissivity cases. If the <DRM Reference Vector> instance has a <DRM Property Value> component specifying an electromagnetic band, this normal applies only to the specified EM band. If such a <DRM Property Value> component is not present, this normal applies to all reflectivity and emissivity cases.

REFLECTIVITY_NORMAL

A normal for reflectivity/transmissivity cases. If the <DRM Reference Vector> instance has a <DRM Property Value> component specifying an electromagnetic band, this normal applies only to the specified EM band. If such a <DRM Property Value> component is not present, this normal applies to all reflectivity and emissivity cases.

RENDERING_NORMAL

The given <DRM Reference Vector> instance V specifies a vector for a face F, where F corresponds to an aggregate of V, such that for visualization rendering applications, V shall be used in place of the face normal of F at the point specified by V’s <DRM Location> component.

VERTICAL_AXIS

The given <DRM Reference Vector> instance V specifies, for an aggregate <DRM Lobe Data> instance of V, the axis from which the horizontal_width and vertical_width of the lobe are measured. The selector name VERTICAL_AXIS in this context does not imply any constraint on V’s orientation with respect to the axes (if any) of the SRF in which V is specified.

Reference_Vector_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CAMERA_FORWARD_AXIS,
                   2 : CAMERA_UP_AXIS,
                   3 : EMISSIVITY_AZIMUTH,
                   4 : EMISSIVITY_NORMAL,
                   5 : FACE_NORMAL,
                   6 : LIGHT_DIRECTION,
                   7 : LSR_TRANSFORMATION_AXIS,
                   8 : MAJOR_AXIS,
                   9 : MINOR_AXIS,
                  10 : MOVEMENT_DIRECTION,
                  11 : PARALLELEPIPED_EDGE_DIRECTION,
                  12 : REFLECTIVITY_AZIMUTH,
                  13 : REFLECTIVITY_EMISSIVITY_AZIMUTH,
                  14 : REFLECTIVITY_EMISSIVITY_NORMAL,
                  15 : REFLECTIVITY_NORMAL,
                  16 : RENDERING_NORMAL,
                  17 : VERTICAL_AXIS,
          [18..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.33 Search_Rule_Type

Table 5.53 defines the Search_Rule_Type data type that specifies a rule for searching.

The rules define different operations that are to be performed to satisfy a search.

Table 5.53 — Search_Rule_Type values

Value Description

END

This value specifies the end of a list of rules.

AND

This value specifies that the results of the preceding pair of rules will be joined by a logical AND operation.

OR

This value specifies that the results of the preceding pair of rules will be joined by a logical OR operation.

NOT

This value specifies that logical negation will be applied to the result of the preceding rule.

OBJECT_AND

This value specifies that the results of the preceding pair of rules will be joined by a logical AND operation and that both shall be satisfied by the same set of DRM objects.

PREDICATE

DRM objects that satisfy a search rule of this type shall satisfy the specified user-specified function. The signature of the user-specified function shall match that specified by the Predicate function signature (see 5.5.2 Predicate).

This value is valid for all types of iterators and uses the following fields:

rule_type:  set to PREDICATE.

user_function:  set to the user-specified function that will be used to filter DRM objects based on whether or not the user-specified function returns TRUE or FALSE when passed a DRM  object.

value:  set to some user-specified data that may be NULL.

DRM_CLASS

Objects that satisfy a search rule of this type shall match the specified DRM class.

This value is valid for all types of iterators and uses the following Search_Rule fields:

rule_type:  set to DRM_CLASS.

drm_class:  the DRM class of the target DRM object. The value NULL is not allowed.

FIELD

Objects that satisfy a search rule of this type shall match the specified DRM class and exactly the specified value for a given field in the fields of the DRM object being tested. For String fields, the string shall have the same length and contain the same contents to satisfy the search rule. In addition, string comparisons are case-sensitive.

This value is valid for all types of iterators and uses the following fields:

rule_type:  set to FIELD.

drm_class:  set to the DRM class of the target DRM object.  The value NULL is not allowed.

value:  set to a search value (this value will be checked against the value of the specified field in the fields of the DRM  object being tested)

field_ordinal:  set to the ordinal of the chosen field within the fields of the target DRM object.

FIELD_RANGE

Objects that satisfy a search rule of this type shall match both the specified DRM class and the specified range of allowable values for a given field in the fields of the DRM object being tested.

This value uses the following  fields:

rule_type:  set to FIELD_RANGE.

drm_class:  set to the DRM class of the target DRM object.  The value NULL is not allowed.

value:   set to the lower bound of the search values.

second_value:  set to the upper bound of the search values.

field_ordinal:  set to the ordinal of the chosen field within the fields of the target DRM object.

RESTRICTIONS:

  1. A FIELD_RANGE rule shall not be used for a field of type   EDCS_Attribute_Code, EDCS_Classification_Code, Boolean, ID, or any enumerated type.
  2. For all legal field types, other than the various set types and EDCS_String, both an upper bound and a lower bound value shall be specified.
  3. For a field of any of the set data types:

    1. The lower bound value is interpreted as a subset, as in “match any field of the same set data type that contains this lower bound set.”
    2. The upper bound value is interpreted as a superset, as in “match any field of the same set data type that is contained by this upper bound set.”
    3. Either the upper bound or lower bound value may be an empty set but not both. If the lower bound set is empty, only the upper bound test is performed, and vice versa. If both bounds are specified, a DRM  object passes this test only if the specified field passes both tests.
  4. For a field of type EDCS_String:
    1. the lower bound shall be interpreted as a starter string, as in “match any string that starts with this lower bound string”.
    2. the upper bound shall be interpreted as a substring, as in “match any string that contains this upper bound string”.
    3. For FIELD_RANGE rules, string comparisons are not case sensitive.
  5. Either the lower bound or the upper bound may contain a null string (a string where string_length is zero). A NULL string for a lower_bound means that only the upper_bound test is performed and a null string for an upper_bound means that only the lower_bound test is performed. If both bounds are null strings, the rule is invalid.
    1. If both an upper_bound and lower_bound are specified in string search (if neither the upper_bound nor the lower_bound is a null string), a string passes if and only if it passes both the upper_bound and the lower_bound tests.

FIELD_ARRAY

Search by a DRM object’s type and by whether the value of a field in the fields of that object matches any element in the search rule’s array.

This value is valid for all types of iterators and uses the following  fields:

rule_type:  set to FIELD_ARRAY.

drm_class:  set to the DRM class of the target DRM object. The value NULL is not allowed.

value:  set to an array of search values (each value will be checked against the value of the specified field in the fields of the DRM object being tested).

field_ordinal:   set to the ordinal of the chosen field within the fields of the given DRM object

COMPONENT

Search for DRM objects of a given type that have one or more components of a given type.

This value is valid for all types of iterators and uses the following fields:

rule_type:  set to COMPONENT.

drm_class:  set to the DRM class of the target DRM object. If NULL is specified, the target DRM object may be of any DRM class.

component_drm_class:  set to the DRM class of the component that the target DRM object shall have.

COMPONENT_FIELD

DRM objects that satisfy a search rule of this type shall match the specified DRM class and have one or more components of another given DRM class where those components match the specified value for a given field in the fields of the component DRM object being tested.

This value is valid for all types of iterators and uses the following fields:

rule_type:  set to P_COMPONENT_FIELD.

drm_class:  set to the DRM class of the target DRM object.  The value NULL is not allowed.

component_drm_class:  set to the DRM class of a component that the target DRM object shall have.

field_ordinal:  set to the ordinal of the chosen field within the fields of the given component DRM object.

value:  the search value (this value will be checked against the value of the specified field in the fields of the component DRM object being tested).

COMPONENT_FIELD_RANGE

DRM objects that satisfy a search rule of this type shall match the specified DRM class and have one or more components of another given DRM class where the specified field in the fields of each of those components contains a value within the specified range of search values.

This value is valid for all types of iterators and uses the following  fields:

rule_type:  set to COMPONENT_FIELD_RANGE.

drm_class:  set to the DRM class of the target DRM object.  The value NULL is not allowed.

component_drm_class:  set to the DRM class of a component that the target DRM object shall have.

field_ordinal:  set to the ordinal of the chosen field within the fields of the given component DRM object.

value:  the lower bound of the search values.

second_value:  the upper bound of the search values.

RESTRICTIONS:

Same as for FIELD_RANGE specified earlier in this table.

COMPONENT_FIELD_ARRAY

DRM objects that satisfy a search rule of this type shall match the specified DRM class and have one or more components of another given DRM class where the specified field in the fields of each of those components contains a value matching one of the specified values in the given array.

This value is valid for all types of iterators and uses the following  fields:

rule_type:  set to COMPONENT_FIELD_ARRAY.

drm_class:  set to the DRM class of the target DRM object.  The value NULL is not allowed.

component_drm_class:  set to the DRM class of a component that the DRM object shall have.

field_ordinal:  the ordinal of the chosen field within the fields of the targeted component DRM object.

value:  an array of search values (each value will be checked against the value of the specified field in the fields of the DRM object being tested).

ASSOCIATE

DRM objects that satisfy a search rule of this type shall have associations that can be traversed to one or more DRM objects belonging to the specified DRM class.

This value is valid for all types of iterators and uses the following  fields:

rule_type:  set to ASSOCIATE.

drm_class:  set to the DRM class of a DRM object that shall be at the other end of a traversable association from the target DMR object. If NULL is specified, the associate DRM object may be of any DRM class.

MAX_SEARCH_DEPTH

DRM objects that satisfy a search rule of this type shall be within the specified depth (distance) from the start DRM object of the component iterator using this rule.

This rule is valid only for the three types of component iterator:

  1. component iterator,
  2. inherited component iterator, or
  3. simple component iterator.

This rule type uses the following fields:

rule_type:  set to MAX_SEARCH_DEPTH.

max_depth:  set to the maximum allowed distance in links followed from the start_object to any DRM object that is trying to satisfy this rule.

Search_Rule_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : END,
                   2 : AND,
                   3 : OR,
                   4 : NOT,
                   5 : OBJECT_AND,
                   6 : PREDICATE,
                   7 : DRM_CLASS,
                   8 : FIELD,
                   9 : FIELD_RANGE,
                  10 : FIELD_ARRAY,
                  11 : COMPONENT,
                  12 : COMPONENT_FIELD,
                  13 : COMPONENT_FIELD_RANGE,
                  14 : COMPONENT_FIELD_ARRAY,
                  15 : ASSOCIATE,
                  16 : MAX_SEARCH_DEPTH,
          [17..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.34 Search_Type

Table 5.54  defines the Search_Type data type that specifies whether to use a point search, bounding box search, or exact search for a search boundary.

Point search is quickest, but is not guaranteed to be accurate. For a bounding box search, a partial inclusion inclusion_choice value (see 8.3.8 CreateSpatialSearchBoundary) is guaranteed to include all DRM objects that are partly included in the search area; it may include extra DRM objects. A bounding box search with full inclusion will return only fully included DRM objects, but it may miss some DRM objects. An exact bounding box search is guaranteed to be accurate to a small distance.

Table 5.54 — Search_Type values

Value Description
POINT A point search algorithm is to be used when searching.
BOUNDING_BOX A bounding box search algorithm is to be used when searching.
EXACT An exact search algorithm is to be used when searching.

Search_Quality ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : POINT,
                   2 : BOUNDING_BOX,
                   3 : EXACT,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.35 Search_Value_Type

Table 5.55 defines the Search_Value_Type data type that specifies the type of value to be used during searching. Data types from EDCS or SRM that correspond to the specified search value type are considered to be of the type specified by the Search_Value_Type.

Table 5.55 — Search_Value_Type values

Value Description

BOOLEAN

The search value is specified as a Boolean.

BYTE

The search value is specified as a byte.

BYTE_POSITIVE

The search value is specified as a positive byte.

BYTE_UNSIGNED

The search value is specified as an unsigned byte.

ENUMERATED The search value is specified as an enumerant.
FLOAT The search value is specified as a floating point number.
INTEGER The search value is specified as an integer.
INTEGER_POSITIVE The search value is specified as a positive integer.
INTEGER_UNSIGNED The search value is specified as an unsigned integer.
LONG_FLOAT The search value is specified as a long floating point number.
SET The search value is specified as a set data type instance.

SHORT_INTEGER

The search value is specified as a short integer.

SHORT_INTEGER_POSITIVE

The search value is specified as a short positive integer.

SHORT_INTEGER_UNSIGNED

The search value is specified as a short unsigned integer.

STRING

The search value is specified as a string.

Search_Value_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : BOOLEAN,
                   2 : BYTE,
                   3 : BYTE_POSITIVE,
                   4 : BYTE_UNSIGNED,
                   5 : ENUMERATED,
                   6 : FLOAT,
                   7 : INTEGER,
                   8 : INTEGER_POSITIVE,
                   9 : INTEGER_UNSIGNED,
                  10 : LONG_FLOAT,
                  11 : SET,
                  12 : SHORT_INTEGER,
                  13 : SHORT_INTEGER_POSITIVE,
                  14 : SHORT_INTEGER_UNSIGNED,
                  15 : STRING,
          [16..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.36 Season

Table 5.56 defines the Season data type that specifies seasons of the year.

Table 5.56 — Season values

Value Description
SPRING The time period is in Spring.
SUMMER The time period is in Summer.
AUTUMN The time period is in Autumn.
WINTER The time period is in Winter.
DRY The time period is in the dry season.
WET The time period is in the wet season.

Season ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : SPRING,
                   2 : SUMMER,
                   3 : AUTUMN,
                   4 : WINTER,
                   5 : DRY,
                   6 : WET,
           [7..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.37 Shading_Method

Table 5.57 defines the Shading_Method data type that specifies the illumination method.

Table 5.57 — Shading_Method values

Value Description

NONE

Non-illuminated shading. Pixel colour is not affected by either directional or infinite light sources. This is sometimes called fixed shading, since pixel colours are fixed and do not change at render-time.

FLAT

A single colour and a single normal are obtained or computed for a polygon face. The rendered colour for all portions of the face is computed by applying the lighting model calculations based on this single colour, single normal, and all applicable light sources.

INTERPOLATED_COLOUR

Rendered colours are computed at the vertices by applying the lighting model calculations based on each vertex colour, vertex normal, and all lapplicable ight sources. The resulting colours are used to interpolate a colour for portions of the geometry between vertices. This method is termed Gouraud shading.

INTERPOLATED_NORMAL

Vertex colours and vertex normals are interpolated for colours that represent portions of the geometry between vertices. The rendered colours are computed for each portion of the geometry by applying the lighting model calculations based on the interpolated colours, interpolated normals, and all applicable light sources. This method is termed Phong shading.

Shading_Method ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NONE,
                   2 : FLAT,
                   3 : INTERPOLATED_COLOUR,
                   4 : INTERPOLATED_NORMAL,
           [5..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.38 Single_Value_Type

Table 5.58 defines the Single_Value_Type data type that specifies the EDCS data types used for specifying EA values.

Table 5.58 — Single_Value_Type values

Value Description
LONG_FLOAT EDCS Long_Float data type
INTEGER EDCS Integer data type
COUNT EDCS Count data type
INDEX EDCS Count data type used for attributes of type Index
STRING EDCS String data type
CONSTRAINED_STRING EDCS String data type used for attributes of type Constrained_String
KEY EDCS String data type used for attributes of type Key
ENUMERATION EDCS Enumeration_Code data type
BOOLEAN EDCS Boolean data type

Single_Value_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : LONG_FLOAT,
                   2 : INTEGER,
                   3 : COUNT,
                   4 : INDEX,
                   5 : STRING,
                   6 : CONSTRAINTED_STRING,
                   7 : KEY,
                   8 : ENUMERATION,
                   9 : BOOLEAN,
          [10..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.39 Sound_Format

Table 5.59 defines the Sound_Format data type that specifies the format of sound files being played using an instance of <DRM Sound>.

Information about each media format is in C.3 Sound_Format references. Support of all media types is optional. However, if a media type is supported by an implementation, that support shall conform to the specifications referenced in C.3 Sound_Format references.

Table 5.59 — Sound_Format values

Value

Description

AIFC

Audio Interchange Format, Compressed sound file

AIFF

Audio Interchange File Format

AVI

Audio Video Interleave

IFF

Interchange File Format

MIDI

Musical Instrument Digital Interface

MP2

MPEG Layer 2 Audio

MP3

MPEG Layer 3 Audio

MPG

Moving Picture Experts Group

QT

QuickTime

RA

Real Audio file

SND

Sound file

VOC

Creative Voice file

WAV

Waveform Audio

WVE

Electronic Art’s file format with .wve extension

Sound_Format ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : AIFC,
                   2 : AIFF,
                   3 : AVI,
                   4 : IFF,
                   5 : MIDI,
                   6 : MP2,
                   7 : MP3,
                   8 : MPG,
                   9 : QT,
                  10 : RA,
                  11 : SND,
                  12 : VOC,
                  13 : WAV,
                  14 : WVE,
          [15..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.40 Spacing_Type

Table 5.60 defines the Spacing_Type data type that specifies, for a given <DRM Regular Axis> instance, how the spacing value is used to compute tick marks.

Table 5.60 — Spacing_Type values

Value Description

ARITHMETIC

Tick marks form an arithmetic progression.

To compute the ith tick value, the following formula applies:

Tick(i) = first_value + (i × spacing)

GEOMETRIC

Tick marks form a geometric progression.

To compute the ith tick value, the following formula applies:

Tick(i) = first_value × (spacingi)

The value of first_value shall be non-zero.

Spacing_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ARITHMETIC,
                   2 : GEOMETRIC,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.41 Spatial_Association_Meaning_Type

Table 5.61 defines the Spatial_Association_Meaning_Type data type that specifies the meaning of spatial association data.  The DRM objects cited below correspond to the environmental objects that have the spatial association.

Table 5.61 — Spatial_Association_Meaning_Type values

Value Description
ALTERNATE_REPRESENTATION The association indicates that the associated object represents an alternate representation of the associating object.
CONTAINS The association indicates that the associating object contains the associated object.
CONTAINED_BY The association indicates that the associating object is contained by the associated object.
CROSS The association indicates that:
  1. the interiors of the associating object and the associated object intersect,
  2. the intersection has a dimensionality less that the dimensionality of the higher dimensionality of the two objects, and
  3. neither object CONTAINS the other.
DISJOINT The association indicates that none of the points in the associating object are also in the associated object.
INTERSECTS The association indicates that the associating object and the associated object have at least one interior or boundary point in common.
OVERLAP The association indicates that the interiors of the associating and associated objects overlap and this intersection has a dimensionality that is the same as the associating and associated objects.
TOUCH The association indicates that the associating object and the associated objects intersect at their boundaries but not anywhere in their interiors.
IN_PROXIMTY_OF The association indicates that the associated object is in the proximity of the associating object.
COMPLETELY_ABOVE The association indicates that:
  1. the associating object and the associated object are specified in the same three-dimensional SRF;
  2. every point in the associated object is greater than or equal to in elevation every point in the associating object; and
  3. every point in the associated object is above a corresponding point in the associating object.
PARTIALLY_ABOVE The association indicates that:
  1. the associating object and the associated object are specified in the same three-dimensional SRF;
  2. every point in the associated object is greater than or equal to in elevation every point in the associating object; and
  3. there is at least one point in the associated object that is above a corresponding point in the associating object.
COMPLETELY_BELOW The association indicates that:
  1. the associating object and the associated object are specified in the same three-dimensional SRF;
  2. every point in the associated object is less than or equal to in elevation every point in the associating object; and
  3. every point in the associated object is below a corresponding point in the associating object.
PARTIALLY_BELOW The association indicates that:
  1. the associating object and the associated object are specified in the same three-dimensional SRF;
  2. every point in the associated object is less than or equal to in elevation every point in the associating object; and
  3. there is at least one point in the associated object that is below a corresponding point in the associating object.

Spatial_Association_Meaning_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ALTERNATE_REPRESENTATION,
                   2 : CONTAINS,
                   3 : CONTAINED_BY,
                   4 : CROSS,
                   5 : DISJOINT,
                   6 : INTERSECTS,
                   7 : OVERLAP,
                   8 : TOUCH,
                   9 : IN_PROXIMITY_OF,
                  10 : COMPLETELY_ABOVE,
                  11 : PARTIALLY_ABOVE,
                  12 : COMPLETELY_BELOW,
                  13 : PARTIALLY_BELOW,
          [14..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.42 Spatial_Index_Spacing_Unit

Table 5.62 defines the Spatial_Index_Spacing_Unit data type that specifies the unit of distance measurement used for spatial index spacing.

Table 5.62 — Spatial_Index_Spacing_Unit values

Value Description

METRE

Spatial index spacing is measured in metres.

ARC_SECOND

Spatial index spacing is measured in arc seconds.

Spatial_Index_Spacing_Unit ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : METRE,
                   2 : ARC_SECOND,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.43 Status_Code

Table 5.63 defines the Status_Code data type that specifies the status codes that can be returned by  8.3.29 GetLastFunctionStatus.

Additional information relating specific status codes with the functions that generate them may be found in 8.3 API functions.

If a function should fail due to multiple reasons, INACTIONABLE_FAILURE shall be returned.

Table 5.63 — Status_Code values

Value Description

SUCCESS

This status code is returned when the function succeeded and no further information is provided. Other status codes do not necessarily indicate that the function failed. See particular functions for more information.

DELETED_OBJECT This status code is returned when an object handle to an object that has been removed from a transmittal is passed in to an API function.
DIFFERENT_TRANSMITTAL This status code is returned when valid parameters were provided but one or more objects were encountered that are in a different transmittal than the start object.

This status is not an error condition when extracting objects, but is an error condition when attempting to remove objects from a transmittal.

INACTIONABLE_FAILURE This status code is returned to indicate a general, unknown, or other error for which there is no meaningful branch that the application code could make. This status code is returned when any invalid parameters are passed in to API functions.
INVALID_ACCESS_MODE This status code is returned if the resolved file location of a transmittal was found, but the security permissions of the underlying operating system and/or file system prohibited access to the file in the mode specified.

This can occur under any of the following conditions:

  1. the access mode specified was create or update and the file was marked read-only;
  2. no access was permitted for the account running the application;
  3. create or update mode was requested but the API implementation did not support write capability;
  4. a function requiring create or update mode was invoked for an object in a transmittal that was opened in read-only mode.
INVALID_OBJECT_LABEL This status code is returned when the function received as an argument a label that was not valid in accordance with label syntax rules, or when an attempt has been made to publish a DRM object with a label that is already in use.
INVALID_TRANSMITTAL_NAME This status code is returned when a parameter representing a transmittal name did not specify a name that was valid according to the formal SEDRIS namespace as specified by the ResolveTransmittalName function.

NO_OBJECT

This status code is returned by GetAggregate, GetAssociate, GetComponent, and GetNextObject when there are no further objects to return that meet the specified criteria.

OUT_OF_MEMORY This status code is returned when the implementation is unable to allocate sufficient memory to satisfy the requirements of the function.
SRF_OPERATION_UNSUPPORTED This status code is returned when an attempt is made to convert a <DRM Location> instance specified in one SRF to another that is not supported by the implementation.

TRANSMITTAL_INACCESSIBLE

This status code is returned by the open-transmittal functions if the resolved file location was not accessible by the API. This can occur if the file was opened for READ_ONLY or UPDATE access and the file does not exist. It can also occur if the file location specified a non-local file and the API had no transport mechanism available capable of accessing the remote file.

UNPUBLISHED_OBJECT This status code is returned when an object is encountered (while attempting to process an inter-transmittal reference) that is not published by its transmittal.
UNRESOLVED_INPUT_OBJECT This status code is returned when an argument has been provided to an unresolved object.

EXAMPLE  A start object for an iterator.

This status is an error condition, returned when the API requires access to the content of the unresolved object in order to perform the requested operation.

UNRESOLVED_OUTPUT_OBJECT This status code is returned when a provided DRM object handle is encountered that references a DRM object that is not available to the API; i.e., the DRM object is contained within a transmittal whose content cannot be accessed.

NOTE  This status is not necessarily an error condition.

UNRESOLVED_TRANSMITTAL

This status code is returned when a reference to a transmittal is encountered that cannot be resolved.

UNSUPPORTED_ENCODING

This status code is returned when a transmittal was requested in an encoding that is not supported by the implementation(s) of the SEDRIS API linked to the application.

Status_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : SUCCESS,
                   2 : DELETED_OBJECT,
                   3 : DIFFERENT_TRANSMITTAL,
                   4 : INVALID_ACCESS_MODE,
                   5 : INVALID_OBJECT_LABEL,
                   6 : INVALID_TRANSMITTAL_NAME,
                   7 : NO_OBJECT,
                   8 : SRF_OPERATION_UNSUPPORTED,
                   9 : TRANSMITTAL_INACCESSIBLE,
                  10 : UNPUBLISHED_OBJECT,
                  11 : UNRESOLVED_INPUT_OBJECT,
                  12 : UNRESOLVED_OUTPUT_OBJECT,
                  13 : UNRESOLVED_TRANSMITTAL,
                  14 : UNSUPPORTED_ENCODING,
           [15, 999] : // reserved for future standardization,
                1000 : INACTIONABLE_FAILURE,
                1001 : OUT_OF_MEMORY,
        [1002, 1999] : // reserved for other operating system errors,
        [2000, 3999] : // reserved for language binding dependent errors,
              > 4000 : // reserved for registration )

5.2.7.44 Symbol_Format

Table 5.64 defines the Symbol_Format data type that specifies the format of a file defining symbols used by the <DRM Symbol> DRM class.

Information about each media format is in C.4 Symbol_Format references. Support of all media types is optional. However, if a media type is supported by an implementation, that support shall conform to the specifications referenced in C.4 Symbol_Format references.

Table 5.64 — Symbol_Format values

Value Description

CGM

Computer Graphics Metafile

SVG Scalable Vector Graphics

Symbol_Format ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CGM,
                   2 : SVG,
           [3..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.45 Time_Configuration

Table 5.65 defines the Time_Configuration data type that specifies a value to select among the variants of Time_Value.

Table 5.65— Time_Configuration values

Value Description

DATE_YMD_AND_TIME_HMS

The time specifies the year, month, and the day of the month as well as the hour, the minute, and the second.

DATE_YMD_AND_TIME_HM

The time specifies the year, month, and the day of the month as well as the hour and minute.

DATE_YMD_AND_TIME_H

The time specifies the year, month, and the day of the month as well as the hour.

DATE_YMD

The time specifies the year, month, and the day of the month.

DATE_YD_AND_TIME_HMS

The time specifies the year and the day of the year as well as the hour, the minute, and the second.

DATE_YD_AND_TIME_HM

The time specifies the year and the day of the year as well as the hour and minute.

DATE_YD_AND_TIME_H

The time specifies the year and the day of the year as well as the hour.

DATE_YD

The time specifies the year and the day of the year.

DATE_MD_AND_TIME_HMS

The time specifies the month and the day of the month as well as the hour, the minute, and the second and applies to any year.

DATE_MD_AND_TIME_HM

The time specifies the month and the day of the month as well as the hour and minute and applies to any year.

DATE_MD_AND_TIME_H

The time specifies the year and the day of the year as well as the hour and applies to any year.

DATE_Y

The time specifies only the year.

DATE_M

The time specifies the month that applies to any year.

DAY_OF_YEAR

The time specifies a specific day within a calendar year without specifying a specific year, and shall be between 0 and 365 inclusive.

Time_Configuration ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : DATE_YMD_AND_TIME_HMS,
                   2 : DATE_YMD_AND_TIME_HM,
                   3 : DATE_YMD_AND_TIME_H,
                   4 : DATE_YMD,
                   5 : DATE_YD_AND_TIME_HMS,
                   6 : DATE_YD_AND_TIME_HM,
                   7 : DATE_YD_AND_TIME_H,
                   8 : DATE_YD,
                   9 : DATE_MD_AND_TIME_HMS,
                  10 : DATE_MD_AND_TIME_HM,
                  11 : DATE_MD_AND_TIME_H,
                  12 : DATE_Y,
                  13 : DATE_M,
                  14 : DAY_OF_YEAR,
          [15..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.46 Time_Data_Type

Table 5.66 defines the Time_Data_Type data type that specifies the type of time data that is being used to organize a <DRM Time Related Features> or <DRM Time Related Geometry> aggregate. This data type specifies the subclass of <DRM Base Time Data> of which instances are the components of the <DRM Time Constraints Data> link objects that organize a <DRM Time Related Features> or <DRM Time Related Geometry> aggregate.

Table 5.66 — Time_Data_Type values

Value Description

SEASON

The time data is organized by season.

TIME_INTERVAL

The time data is organized into time intervals.

TIME_OF_DAY

The time data is organized by time of day.

TIME_POINT

The time data is organized by time points.

Time_Data_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : SEASON,
                   2 : TIME_INTERVAL,
                   3 : TIME_OF_DAY,
                   4 : TIME_POINT,
           [5..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.47 Time_Measurement_Type

Table 5.67 defines the Time_Measurement_Type data type that specifies whether time is being measured in terms of absolute time, relative to the start of the exercise, or relative to some reference time.

Table 5.67 — Time_Measurement_Type values

Value Description

GMT

Time is specified relative to Greenwich Mean Time.

RELATIVE_TO_EXERCISE_START

Time is specified relative to the start of the exercise.

RELATIVE_TO_REFERENCE_TIME

Time is specified relative to some stated reference time.

Time_Measurement_Type ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : GMT,
                   2 : RELATIVE_TO_EXERCISE_START,
                   3 : RELATIVE_TO_REFERENCE_TIME,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.48 Time_Of_Day

Table 5.68 defines the Time_Of_Day data type that specifies various times of the day.

Table 5.68 — Time_Of_Day values

Value Description
DAWN The time period is at dawn.
MORNING The time period is in the morning.
DAY The time period is during the day.
AFTERNOON The time period is in the afternoon.
DUSK The time period is at dusk.
EVENING The time period is in the evening.
NIGHT The time period is at night.

Time_Of_Day ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : DAWN,
                   2 : MORNING,
                   3 : DAY,
                   4 : AFTERNOON,
                   5 : DUSK,
                   6 : EVENING,
                   7 : NIGHT,
           [8..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.49 Time_Significance

Table 5.69 defines the Time_Significance data type that specifies the meaning of the time represented by a <DRM Base Time Data> instance, in relation to the data set represented by the DRM object aggregating that <DRM Base Time Data> instance.

Table 5.69 — Time_Significance values

Value Description

ANALYSIS

The <DRM Base Time Data> instance represents the time at which the analysis was performed that resulted in the data set.

CERTIFICATION_DATE

The <DRM Base Time Data> instance represents the date that the data set was certified.

CREATION_DATE

The <DRM Base Time Data> instance represents the date that the data set was created.

FORECAST

The <DRM Base Time Data> instance represents the time at which the forecast is valid that corresponds to the data set.

MODIFICATION_DATE

The <DRM Base Time Data> instance represents the date that the data set was last modified.

OBSERVATION

The <DRM Base Time Data> instance represents the time at which an observation was made.

OCCURRENCE

The <DRM Base Time Data> instance represents the time that the event occurred that is represented by the data being described.

PERIOD_OF_CONTENT

The <DRM Base Time Data> instance represents the time period spanned by the data set.

PUBLICATION_DATE

The <DRM Base Time Data> instance represents the date that the data set was published.

REFERENCE

The <DRM Base Time Data> instance represents a base time to which other times are referenced.

REVISION_DATE

The <DRM Base Time Data> instance represents the date that the data set was last revised.

Time_Significance ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ANALYSIS,
                   2 : CERTIFICATION_DATE,
                   3 : CREATION_DATE,
                   4 : FORECAST,
                   5 : MODIFICATION_DATE,
                   6 : OBSERVATION,
                   7 : OCCURRENCE,
                   8 : PERIOD_OF_CONTENT,
                   9 : PUBLICATION_DATE,
                  10 : REFERENCE,
                  11 : REVISION_DATE,
          [12..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.50 Traversal_Order

Table 5.70 defines the Traversal_Order data type that specifies the desired traversal order for a component iterator.

The traversal order of the branches of a <DRM Aggregate Feature> or <DRM Aggregate Geometry> instance is determined either by the DRM or by the hierarchy_order_parameters field of the iterator. However, the general traversal scheme (i.e., the order to search for objects from the <DRM Transmittal Root> instance down to the maximum depth of the search) is specified using this data type.

All component iterators treat the start_object of the iterator as the root of a composition tree. The order of the tree traversal from that root is given by one of the selectors described below:

Table 5.70 — Traversal_Order values

Value Description

BREADTH_FIRST

The tree is to be traversed breadth first.

DEPTH_FIRST

The tree is to be traversed depth first.

MOST_EFFICIENT

The most efficient traversal order is to be used.

Traversal_Order ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : BREADTH_FIRST,
                   2 : DEPTH_FIRST,
                   3 : MOST_EFFICIENT,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.51 Underline_Style

Table 5.71 defines the Underline_Style data type that specifies the type of underlining to be applied to the associated text.

The weight of an underline is determined by the width of the underline and typically varies according to font size and font style.

Table 5.71 — Underline_Style values

Value Description

NONE

The text is displayed without underlines.

SINGLE

The text is displayed with a single underline of normal weight.

DOUBLE

The text is displayed with a double underline of normal weight.

BOLD_SINGLE

The text is displayed with a single underline of increased weight.

BOLD_DOUBLE

The text is displayed with a double underline of increased weight.

DASHED

The text is displayed with a single dashed underline of normal weight.

DOTTED

The text is displayed with a single dotted underline of normal weight.

Underline_Style ::=  (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NONE,
                   2 : SINGLE,
                   3 : DOUBLE,
                   4 : BOLD_SINGLE,
                   5 : BOLD_DOUBLE,
                   6 : DASHED,
                   7 : DOTTED,
           [8..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.52 Union_Reason

Table 5.72 defines the Union_Reason data type that specifies the reason why a <DRM Union of Features> or <DRM Union of Geometry> instance was created.

Table 5.72 — Union_Reason values

Value Description

CLASSIFIED_OBJECT

The union instance has a component <DRM Classification Data> instance, and represents a single environmental object.

COLLECTION_OF_CLASSIFIED_OBJECTS

The union instance has a component <DRM Classification Data> instance, and represents a collection of environmental objects corresponding to the branches of the union such that the <DRM Classification Data> instance is inherited by each branch component.

OTHER

The union instance has no component <DRM Classification Data> instance. The reason for creating the union instance is unknown but shall directly represent an environmental object or collection of environmental objects.

Union_Reason ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CLASSIFIED_OBJECT,
                   2 : COLLECTION_OF_CLASSIFIED_OBJECTS,
                   3 : OTHER,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.53 Unmatched_State_Behaviour

Table 5.73 defines the Unmatched_State_Behaviour data type that specifies what behaviour should occur if the state_value field of a <DRM State Related Geometry> or <DRM State Related Features> instance does not match any of the state tags supplied in the corresponding state_entry_array entry of an instance of the State_Select_Parameters data type.

Table 5.73 — Unmatched_State_Behaviour values

Value Description

NONE

If no match is found, no action is taken.

DEFAULT

If no match is found, the default action is taken.

ALL

If no match is found, all specified actions are taken.

Unmatched_State_Behaviour ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : NONE,
                   2 : DEFAULT,
                   3 : ALL,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.54 Variable_Code

Table 5.74 defines the Variable_Code data type that specifies the meaning of some quantity being used to drive one of the controlling <DRM Expression> components of a <DRM Control Link> instance.

Table 5.74 — Variable_Code values

Value Description

ACTIVE_STATE_VALUE

Specifies, for the aggregating <DRM State Control Link> instance, the active_state_value field of the target <DRM State Related Features> and <DRM State Related Geometry> instances.

COLOUR_COORDINATE_1

Specifies, for the aggregating concrete instance of a <DRM Control Link> subclass, the first colour coordinate of the target <DRM Colour Data> instance(s).

COLOUR_COORDINATE_2

Specifies, for the aggregating concrete instance of a <DRM Control Link> subclass, the second colour coordinate of the target <DRM Colour Data> instance(s).

COLOUR_COORDINATE_3

Specifies, for the aggregating concrete instance of a <DRM Control Link> subclass, the third colour coordinate of the target <DRM Colour Data> instance(s).

COLOUR_INDEX

Specifies, for the aggregating <DRM Colour Index Control Link> instance, the index field of the target <DRM Colour Index> instance(s).

COLOUR_INTENSITY_LEVEL

Specifies, for the aggregating <DRM Colour Index Control Link> instance, the third colour coordinate of the target <DRM Colour Index> instance(s).

GEOMETRY_TEXTURE

Used in specifying the texture of the object described by the <DRM Expression> instance of which the given <DRM Variable> instance is a part.

HEAT_PRODUCTION

Specifies the heat production status of the object described by the <DRM Expression> instance of which the given <DRM Variable> instance is a part.

LIGHT_SOURCE_ACTIVE

Specifies, for the aggregating <DRM Light Source Control Link> instance, the active_light_value field of the target <DRM Light Source> instance(s).

LIGHT_RENDERING_PROPERTIES_ACTIVE

Specifies, for the aggregating <DRM Light Rendering Properties Control Link> instance, the active_light_value field of the target <DRM Light Rendering Properties> instance(s).

LIGHT_RENDERING_PROPERTIES_CANDELA_VALUE

Specifies, for the aggregating <DRM Light Rendering Properties Control Link> instance, the candela_value field of the target <DRM Light Rendering Properties> instance(s).

LSR_LOCATION_3D_U

Specifies, for the aggregating <DRM LSR 3D Location Control Link> instance, the u component of the coordinate field of the target <DRM 3D LSR Location> instance(s).

LSR_LOCATION_3D_V

Specifies, for the aggregating <DRM LSR 3D Location Control Link> instance, the v component of the coordinate field of the target <DRM 3D LSR Location> instance(s).

LSR_LOCATION_3D_W

Specifies, for the aggregating <DRM LSR 3D Location Control Link> instance, the w component of the coordinate field of the target <DRM 3D LSR Location> instance(s).

POLYGON_FLAGS_COLLIDIBLE

Specifies, for the aggregating <DRM Polygon Control Link> instance, the COLLIDIBLE flag of the target <DRM Polygon> instance(s).

POLYGON_FLAGS_HAT_TEST

Specifies, for the aggregating <DRM Polygon Control Link> instance, the HAT_TEST flag of the target <DRM Polygon> instance(s).

POLYGON_FLAGS_INVISIBLE

Specifies, for the aggregating <DRM Polygon Control Link> instance, the INVISIBLE flag of the target <DRM Polygon> instance(s).

POLYGON_FLAGS_LASER_RANGE_FINDING

Specifies, for the aggregating <DRM Polygon Control Link> instance, the LASER_RANGE_FINDING flag of the target <DRM Polygon> instance(s).

PROPERTY_SET_INDEX

Specifies, for the aggregating <DRM Property Set Index Control Link> instance, the index field of the target <DRM Property Set Index> instance(s).

PROPERTY_TABLE_REFERENCE_INDEX_ON_AXIS

Specifies, for the aggregating <DRM Property Table Reference Control Link> instance, the index_on_axis field of the target <DRM Property Table Reference> instance(s).

REFERENCE_VECTOR_V0

Specifies, for the aggregating <DRM Reference Vector Control Link> instance, the first vector component of the unit_vector field of the target <DRM Reference Vector> instance(s).

REFERENCE_VECTOR_V1

Specifies, for the aggregating <DRM Reference Vector Control Link> instance, the second vector component of the unit_vector field of the target <DRM Reference Vector> instance(s).

REFERENCE_VECTOR_V2

Specifies, for the aggregating <DRM Reference Vector Control Link> instance, the third vector component of the unit_vector field of the target <DRM Reference Vector> instance(s).

ROTATION_ANGLE

Specifies, for the aggregating <DRM Rotation Control Link> instance, the angle field of the target <DRM Rotation> instance(s).

SCALE_FACTOR

Specifies, for the aggregating <DRM Scale Control Link> instance, the scale_factor field of the target <DRM Scale> instance(s).

SOUND_INSTANCE_ACTIVE

Specifies, for the aggregating <DRM Sound Instance Control Link> instance, the active_sound_value field of the target <DRM Sound Instance> instance(s).

TEXTURE_COORDINATE_S

Specifies, for the aggregating <DRM Texture Coordinate Control Link> instance, the s field of the target <DRM Texture Coordinate> instance(s).

TEXTURE_COORDINATE_T

Specifies, for the aggregating <DRM Texture Coordinate Control Link> instance, the t field of the target <DRM Texture Coordinate> instance(s).

TRANSLATION_AMOUNT

Specifies, for the aggregating <DRM Translation Control Link> instance, the translation_amount field of the target <DRM Translation> instance(s).

TRANSLUCENCY_VALUE

Specifies, for the aggregating <DRM Translucency Control Link> instance, the translucency_value field of the target <DRM Translucency> instance(s).

Variable_Code ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : ACTIVE_STATE_VALUE,
                   2 : COLOUR_COORDINATE_1,
                   3 : COLOUR_COORDINATE_2,
                   4 : COLOUR_COORDINATE_3,
                   5 : COLOUR_INDEX,
                   6 : COLOUR_INTENSITY_LEVEL,
                   7 : GEOMETRY_TEXTURE,
                   8 : HEAT_PRODUCTION,
                   9 : LIGHT_SOURCE_ACTIVE,
                  10 : LIGHT_RENDERING_PROPERTIES_ACTIVE,
                  11 : LIGHT_RENDERING_PROPERTIES_CANDELA_VALUE,
                  12 : LSR_LOCATION_3D_U,
                  13 : LSR_LOCATION_3D_V,
                  14 : LSR_LOCATION_3D_W,
                  15 : POLYGON_FLAGS_COLLIDIBLE,
                  16 : POLYGON_FLAGS_HAT_TEST,
                  17 : POLYGON_FLAGS_INVISIBLE,
                  18 : POLYGON_FLAGS_LASER_RANGE_FINDING,
                  19 : PROPERTY_SET_INDEX,
                  20 : PROPERTY_TABLE_REFERENCE_INDEX_ON_AXIS,
                  21 : REFERENCE_VECTOR_V0,
                  22 : REFERENCE_VECTOR_V1,
                  23 : REFERENCE_VECTOR_V2,
                  24 : ROTATION_ANGLE,
                  25 : SCALE_FACTOR,
                  26 : SOUND_INSTANCE_ACTIVE,
                  27 : TEXTURE_COORDINATE_S,
                  28 : TEXTURE_COORDINATE_T,
                  29 : TRANSLATION_AMOUNT,
                  30 : TRANSLUCENCY_VALUE,
          [31..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.7.55 Volumetric_Shape

Table 5.75 defines the Volumetric_Shape data type that specifies the shape of volume extents.

Table 5.75 — Volumetric_Shape values

Value Description
CYLINDER The volume is in the shape of a cylinder.
PARALLELEPIPED The volume is in the shape of a parallelepiped.

SPHERE

The volume is in the shape of a sphere.

Volumetric_Shape ::= (
                 < 1 : // implementation dependent and non-conforming,
                   1 : CYLINDER,
                   2 : PARALLELEPIPED,
                   3 : SPHERE,
           [4..1000] : // reserved for future standardization,
              > 1000 : // reserved for registration )

5.2.8 Set data types

5.2.8.1 Description

Set data types are used to indicate membership in a group of properties. Each set data type consists of a listing of the names that are members of the set. An instance of a set data type can consist of any combination of members but each member can only exist once in the set. Additional members to a set data type can be added by registration (see 4.21 Registration).

5.2.8.2 Colour_Mapping

Table 5.76 defines the Colour_Mapping data type that specifies how colour is applied to a DRM object.

The various methods are applied as follows:

  1. The terms front and back refer to which side of the DRM object (usually a <DRM Polygon> instance) is being coloured.
  2. Primary colour is the main colour of the DRM object, when the DRM object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the environmental object). Note that a <DRM Image> instance’s alpha (if any), and/or a colour’s alpha (i.e., <DRM Translucency> instance value) are not affected by anything other than the primary colour even when an image blend colour is present.
  3. Distance blend colour is used to model the distortion of colour due to distance from the viewer. (For instance, mountains in the distance appear to be tinted blue, an effect that increases with increasing distance as long as the mountains are still visible.) This is applicable mainly to DRM objects organized by a <DRM Distance LOD Data> instance (i.e., distance from the viewer) in level of detail related aggregations, since the distance that the DRM object is visible shall be finite. The equation to determine the desired component of the final displayed colour is:
    C = PCC×((x-y)/y) + DBCC×(x/y)

    where

    x is the distance to the environmental object.
    y is the total distance that the environmental object is visible.
    PCC is the colour of the PRIMARY_COLOUR <DRM Colour> component.
    DBCC is the colour of the DISTANCE_BLEND_COLOUR <DRM Colour> component.

    Distance blend colour dominates more as viewing distance increases, while primary colour dominates more as viewing distance decreases.

  4. Image blend colour helps determine the appearance of a DRM object that has both a <DRM Colour> instance and a <DRM Image Mapping Function> instance whose image_mapping_method is set to blending.
    1. If the <DRM Image> instance is an intensity <DRM Image> instance (i.e., LUMINANCE is part of its image_signature), the intensity map is used to modulate between the PRIMARY_COLOUR and IMAGE_BLEND_COLOUR, based on the values of the texels in the <DRM Image> instance. That is, for <DRM Image> instances with image_signature equal to LUMINANCE or LUMINANCE_AND_ALPHA, the image blend and primary colours are linearly combined with the <DRM Image> instance’s luminance and its inverse to determine the displayed luminance. Where the <DRM Image> instance is bright, its colour combined with that of the DRM object’s image blend colour will dominate. Where the <DRM Image> instance is dark, the DRM object’s primary colour will dominate.
    2. If the <DRM Image> instance has image_signature = 123COLOUR or image_signature = 123COLOUR_ALPHA, the first, second, and third colour components of each texel (e.g., R, G, and B) are linearly interpolated between the PRIMARY_COLOUR and the IMAGE_BLEND_COLOUR. That is, for <DRM Image> instances with image_signature = 123COLOUR_ALPHA, the image blend and primary colours are linearly combined with the <DRM Image> instance’s colour and its inverse to determine the displayed colour. Where the <DRM Image> instance is bright, its colour combined with that of the DRM object’s image blend colour will dominate. Where the <DRM Image> instance is dark, the DRM object’s primary colour will dominate.

Table 5.76 — Colour_Mapping values

Value Description
FRONT_PRIMARY The front of the DRM object is coloured with the primary colour, when the DRM object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the environmental object).
FRONT_DISTANCE_BLEND The front of the DRM object is coloured using a distance blend algorithm as described above.
FRONT_IMAGE_BLEND The front of the DRM object is coloured using an image blend algorithm as described above.
BACK_PRIMARY The back of the DRM object is coloured with the primary colour, when the DRM object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the environmental object).
BACK_DISTANCE_BLEND The back of the DRM object is coloured with a distance blend algorithm as described above.
BACK_IMAGE_BLEND The back of the DRM object is coloured using an image blend algorithm as described above.
PRIMARY_LIGHT_RENDERING_BEHAVIOUR The DRM object is coloured using the primary colour of the associated <DRM Light Rendering Behaviour> instance. It cannot be combined with any other colour mapping.
SECONDARY_LIGHT_RENDERING_BEHAVIOUR The DRM object is coloured using the secondary colour of the associated <DRM Light Rendering Behaviour> instance. It cannot be combined with any other colour mapping.

Colour_Mapping ::= (
   FRONT_PRIMARY,
   FRONT_DISTANCE_BLEND,
   FRONT_IMAGE_BLEND,
   BACK_PRIMARY,
   BACK_DISTANCE_BLEND,
   BACK_IMAGE_BLEND,
   PRIMARY_LIGHT_RENDERING_BEHAVIOUR,
   SECONDARY_LIGHT_RENDERING_BEHAVIOUR )

5.2.8.3 Display_Side

Table 5.77 defines the Display_Side data type that specifies which side or sides of a face should be displayed.

This data type is not applicable if backface culling is used.

Table 5.77— Display_Side values

Value Description

FRONT

The front side of a polygon face is displayed.

BACK

The back side of a polygon face is displayed.

Display_Side ::= (
   FRONT,
   BACK )

5.2.8.4 Display_Style

Table 5.78 defines the Display_Style data type that specifies a style in which to render geometric objects.

Table 5.78 — Display_Style values

Value Description

SOLID

Only the faces specified by the Display_Side parameter of the <DRM Rendering Properties> instance are displayed.

WIREFRAME

Only the edges of polygons are displayed.

Display_Style ::= (
   SOLID,
   WIREFRAME,
   additional registered set members )

5.2.8.5 General_Hierarchy_Order

The General_Hierarchy_Order data types specifies, at a high level, whether any components of the given <DRM Aggregate Geometry> and <DRM Aggregate Feature> instances should be traversed in an ordered fashion.

If a type of object is not included in the set, the rest of the Hierarchy_Order_Parameter values for that type of object are ignored. Only if a type of object is included in the set are the Hierarchy_Order_Parameters values examined. The components of that object are traversed in the order specified by the Hierarchy_Order_Parameters of that type.

General_Hierarchy_Order ::= (
   ALTERNATE_HIERARCHY,
   CLASSIFICATION_RELATED,
   LOD_RELATED,
   OCTANT_RELATED,
   QUADRANT_RELATED,
   SEPARATING_PLANE,
   SPATIAL_INDEX_RELATED,
   STATE_RELATED,
   TIME_RELATED,
   additional registered set members )

5.2.8.6 Polygon_Flag

Table 5.79 defines the Polygon_Flag data type that specifies flags that are used to indicate the state or use of a polygon.

Table 5.79 — Polygon_Flag values

Flag

Description
BACKDROP_GROUND This flag specifies that the given <DRM Polygon> instance is the default ground backdrop.
BACKDROP_SKY This flag specifies that  the given <DRM Polygon> instance is the default sky backdrop.
CLUTTER_ENHANCED This flag specifies that  the given <DRM Polygon> instance has algorithmically scattered model instances on it.
COLLIDIBLE This flag specifies that the given <DRM Polygon> instance is suitable for use for collision detection in a consuming application. If an environmental object collides with the environmental object represented by the given <DRM Polygon> instance, a collision state is to be set in the consuming application.
CONCAVE This flag specifies that  the given <DRM Polygon> instance is concave.
CUT This flag specifies that the given <DRM Polygon> instance was cut below the terrain surface. Such <DRM Polygon> instances are normally derived from <DRM Linear Feature> instances corresponding to environmental objects such as roads and rivers.
CUT_IMAGERY This flag specifies that  the given <DRM Polygon> instance is to be used to cut geospecific imagery into the cultural features that are present.
DECAL This flag specifies that the given <DRM Polygon> instance shall always be given rendering priority above any other coplanar <DRM Polygon> instance. When set to TRUE, this flag supercedes the index value in any applicable <DRM Rendering Priority Level> instance.
DO_NOT_DRAPE For conforming <DRM Polygon> instances (<DRM Polygon> instances with all <DRM LSR 2D Location> instances), a <DRM Polygon> instance usually drapes across the terrain, breaking into multiple polygons if the draped <DRM Polygon> instance crosses terrain facets. If this flag is set, the given <DRM Polygon> instance is not draped and does not break at terrain facets; instead, terrain facets are ignored and the given <DRM Polygon> instance is defined by the locations of its conformed <DRM Vertex> components.
ENABLE_FEATURE_SIZE_BLENDING This flag specifies that feature-based blending is enabled for the given <DRM Polygon> instance. <DRM Polygon> instances that have this flag set will all blend (geometry and texture) simultaneously based on the size (radius) of the original feature from which the <DRM Polygon> instances were derived.
ENABLE_FRACTAL

This flag exists to allow the face of the given <DRM Polygon> instance to fractalize in real-time, and is provided for use in applications such as representing sea states.

This flag indicates that the shape of the given <DRM Polygon> instance may change at run-time.

EXAMPLE  A <DRM Polygon> instance representing part of the surface of a body of water, such as a sea. In such an example, the colour might also change if different colour textures were being used for the surface. For 3D representations of a sea surface that changes with (for instance) EAC_BEAUFORT_WIND_SCALE, the colour of a <DRM Polygon> instance may tend more towards white as the sea gets rougher.

ENABLE_POLYGON_RANGE_BLENDING This flag specifies that range ring blending is enabled for the given <DRM Polygon> instance. <DRM Polygon> instances that have this flag set will all blend (geometry and texture) at the same range (distance).
FOOTPRINT This flag specifies that the given <DRM Polygon> instance is a footprint for other geometry.
HAT_TEST This flag specifies that the given <DRM Polygon> instance P may be used to measure the vertical height of an environmental object A that is positioned directly above P such that the “height above terrain” (HAT) of A is taken to be its height above P.
INACTIVE This flag specifies that the given <DRM Polygon> instance is inactive, or not used.
INVISIBLE This flag specifies that the given <DRM Polygon> instance is invisible, or not seen.
LASER_RANGE_FINDING This flag specifies that the given <DRM Polygon> instance is used for horizontal tests for computer image generator (CIG) applications. This flag is analogous to HAT_TEST, where LASER_RANGE_FINDING is used for tests in the horizontal direction.
MOON_REFLECTION This flag specifies that the moon reflection is to be generated upon the given <DRM Polygon> instance.
OPAQUE_TOP This flag is used with the RAISED flag to specify that the given <DRM Polygon> instance has been raised such that it now forms part of a <DRM Polyhedron> instance, where the top of the polyhedron is opaque.
PROJECTILE_COLLIDIBLE This flag specifies that the given <DRM Polygon> instance is suitable for use for projectile collision detection in a consuming application. If an environmental object corresponding to a projectile collides with the environmental object represented by the given <DRM Polygon> instance, a projectile collision state is to be set in the consuming application.
RAISED This flag specifies that the given <DRM Polygon> instance is a filling polygon above the terrain surface. Such <DRM Polygon> instances are normally derived from <DRM Linear Feature> instances corresponding to environmental objects such as roads.

This flag also indicates that the given <DRM Polygon> instance is raised above the surrounding terrain surface. Such <DRM Polygon> instances are normally derived from <DRM Areal Feature> instances corresponding to environmental objects such as forest canopies.

REFLECTIVE This flag specifies that the given <DRM Polygon> instance reflects light that is shown on it.
SHADOW This flag specifies that the given <DRM Polygon> instance is in a shadow.
SUN_ILLUMINATED This flag specifies that the given <DRM Polygon> instance is illuminated depending on the position of the sun.

TERRAIN

This flag specifies that the given <DRM Polygon> instance is a terrain polygon.

VISIBLE_FLOOR This flag is used with the RAISED flag to specify that the given <DRM Polygon> instance has been raised such that it now forms part of a <DRM Polyhedron> instance, where the floor of the polyhedron is visible.
VISIBLE_INTERIOR This flag is used with the RAISED flag to specify that the given <DRM Polygon> instance has been raised such that it now forms part of a <DRM Polyhedron> instance, where the interior wall of the polyhedron is visible.
VISIBLE_PERIMETER This flag is used with the RAISED flag to specify that the given <DRM Polygon> instance has been raised such that it now forms part of a polyhedron, where the perimeter wall of the <DRM Polyhedron> instance is visible.

WATERBODY_SURFACE

This flag specifies that the given <DRM Polygon> instance is an environmental object classified as an ECC_WATERBODY_SURFACE. This flag is used only when other <DRM Polygon> instances (e.g., lake bottom) are below it.

Polygon_Flag ::=  (
   BACKDROP_GROUND,
   BACKDROP_SKY,
   CLUTTER_ENHANCED,
   COLLIDIBLE,
   CONCAVE,
   CUT,
   CUT_IMAGERY,
   DECAL,
   DO_NOT_DRAPE
   ENABLE_FEATURE_SIZE_BLENDING,
   ENABLE_FRACTAL,
   ENABLE_POLYGON_RANGE_BLENDING,
   FOOTPRINT,
   HAT_TEST,
   INACTIVE,
   INVISIBLE,
   LASER_RANGE_FINDING,
   MOON_REFLECTION,
   OPAQUE_TOP,
   PROJECTILE_COLLIDIBLE,
   RAISED,
   REFLECTIVE,
   SHADOW,
   SUN_ILLUMINATED,
   TERRAIN,
   VISIBLE_FLOOR,
   VISIBLE_INTERIOR,
   VISIBLE_PERIMETER,
   WATERBODY_SURFACE,
   // additional registered set members )

5.2.8.7 Presentation_Domain

The Presentation_Domain data type specifies the intended use of a <DRM Colour>, a <DRM Colour Table>, or an instance of a <DRM Geometry Representation> subclass with an instance of <DRM Rendering Properties>.

Presentation_Domain ::= (
   OTW,
   IR_HI_BAND,
   IR_LOW_BAND,
   NVG,
   DAY_TV_COLOUR,
   DAY_TV_BW,
   RADAR,
   SAR,
   THERMAL,
   LOW_LIGHT_TV,
   // additional registered set members )

5.3 Structured fundamental data types

5.3.1 Description

Data types that are created from the basic fundamental data types are called structured fundamental data types. This mechanism provides support for arrays and lists of data types (both basic and structured) as well as data types that group several other data types into records.

5.3.2 Array data types

5.3.2.1 Notation

Arrays specify an ordered set whose elements may be of any single data type. Arrays in this part of ISO/IEC 18023 are of one or two dimensions. Table 5.80 specifies the notation for arrays of the supported dimensions.

Table 5.80 — Array data type notation

One-dimensional arrays (lists):

Data_Type_Name[l]

Two-dimensional arrays:

Data_Type_Name[l,w]

The numbers l and w represent the size of the corresponding length and width dimension. Each dimension shall be at least one. If the dimension is variable, an asterisk is used.

EXAMPLE 1   A data type for a variable length list of integers would be specified as:

Integer[*]

EXAMPLE 2  A 4×4 matrix of single-precision floating point numbers would be specified as:

Float[4,4]

5.3.2.2 Matrix_3x3

The Matrix_3x3 data type specifies a two-dimensional array for 3×3 matrices.

Matrix_3x3 ::= Long_Float[3,3]

5.3.2.3 Matrix_4x4

The Matrix_4x4 data type specifies a two-dimensional array for 4×4 matrices.

Matrix_4x4 ::= Long_Float[4,4]

5.3.3 Record data types

5.3.3.1 Description

Data types that encompass a variety of information are called record data types. A record data type consists of a sequence of fundamental data types that together form one record of data. Each entry of a record data type can be of any of the fundamental data types including other record data types.

Invariant record data types are specified as follows:

record_data_type_name ::=  {
   field1_name   field1_data_type;                     optional comment
   field2_name   field2_data_type;                     optional comment
    • • •
   fieldn_name   fieldn_data_type;                     optional comment
}

Record data types that specify a sized array indicate the size of the array by placing the name of the size parameter within the brackets for the array type as follows:

record_data_type_name ::= {
   size_name     size_data_type;                       optional comment
   array_name    array_data_type[size_name];           optional comment
}

Multiple arrays may be sized using the same size parameter. The maximum allowed size for the array is the maximum that can be specified by the data type of the size parameter. Record data types containing unsized or self-sized data may be specified by using the [*] notation specified in 5.3.2 Array data types.

In some cases, the data types used in the record data type depend on a parameter to the record data type. Such record data types are called variant record data types. The variant parameter (also called the discriminant) shall be a fundamental integer, enumerated, or selection item data type. The variant value fields shall consist of one valid value of the variant data and one entry shall exist for each of the possible values. The set of variant fields is enclosed within leading and trailing square brackets.

Variant record data types are specified as follows:

record_data_type_name ::= ( variant_name variant_data_type) {
  invariant_field1_name  invariant_field1_data_type; optional comment
   • • •
  invariant_fieldi_name  invariant_fieldi_data_type; optional comment
  [ variant_value1 : field1_name  field1_data_type;   optional comment
    variant_value2 : field2_name  field2_data_type;   optional comment
     • • •
    variant_valuen : fieldn_name  fieldn_data_type;   optional comment
  ]
  invariant_fieldp_name  invariant_fieldp_data_type; optional comment
   • • •
  invariant_fieldz_name  invariant_fieldz_data_type; optional comment
}

5.3.3.2 Absolute_Time_Fields

The Absolute_Time_Fields data type encapsulates the field elements of the <DRM Absolute Time> class.

Absolute_Time_Fields ::= {
   time_significance     Time_Significance;
   time_value            Time_Value;
}

5.3.3.3 Absolute_Time_Interval_Entry

The Absolute_Time_Interval data type specifies a time interval based on an absolute time specification.

Absolute_Time_Interval_Entry ::= {
   reference_time                Absolute_Time_Fields;
   absolute_interval              Absolute_Time_Interval_Fields;
}

5.3.3.4 Absolute_Time_Interval_Fields

The Absolute_Time_Interval_Fields data type encapsulates the field elements of the <DRM Absolute Time Interval> class.

The allowable range for hour is 0..23. The allowable range for minutes is 0..59. The normal allowable range for seconds is [0,0..60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0..61,0).

Absolute_Time_Interval_Fields ::= {
   time_significance              Time_Significance;
   delta_days                     Integer;
   delta_hours                    Byte_Unsigned;
   delta_minutes                  Byte_Unsigned;
   delta_seconds                  Long_Float;
}

5.3.3.5 Address

The Address data type specifies the elements of address metadata. The country_code is specified as described for the Locale data type.

Address ::= {
   delivery_point_count           Short_Integer_Positive;
   delivery_point                 String[delivery_point_count];
   city                           String;
   administrative_area            String;
   postal_code                    String;
   country                        Character[3];
   email_address_count            Short_Integer_Positive;
   email_address                  String[email_address_count];
}

5.3.3.6 Aggregate_Feature_Fields

The Aggregate_Feature_Fields data type encapsulates the field elements of the <DRM Aggregate Feature> class.

Aggregate_Feature_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.7 Aggregate_Geometry_Fields

The Aggregate_Geometry_Fields data type encapsulates the field elements of the <DRM Aggregate Geometry> class.

Aggregate_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.8 Alternate_Hierarchy_Parameters

The Alternate_Hierarchy_Parameters data type specifies hierarchical search criteria.

The array members shall be distinct.

When used within a Hierarchy_Select_Parameters record, this data type selects which branches to traverse from a <DRM Alternate Hierarchy Related Features> instance or <DRM Alternate Hierarchy Related Geometry> instance when encountered by a component iterator. All branches that have a link object whose field values match one of the entries contained in this record will be traversed.

When used within a Hierarchy_Order_Parameters record, this data type controls the traversal order of the branches from a <DRM Alternate Hierarchy Related Features> instance or a <DRM Alternate Hierarchy Related Geometry> instance when encountered by a component iterator. For the set of branches that will be traversed, the order of that traversal will be specified by the hierarchy_data_array. Any occurrences of branches that are traversed but are not mentioned in this traversal order array shall be traversed in any order after all of the branches that are mentioned in this array are traversed.

Additional information is available in the <DRM Alternate Hierarchy Related Features>, <DRM Alternate Hierarchy Related Geometry>, and <DRM Hierarchy Data> DRM classes.

Alternate_Hierarchy_Parameters ::= {
   hierarchy_data_count     Integer_Unsigned;
   hierarchy_data_array     Hierarchy_Data_Fields[hierarchy_data_count];
}

5.3.3.9 Alternate_Hierarchy_Related_Features_Fields

The Alternate_Hierarchy_Related_Features_Fields data type encapsulates the field elements of the <DRM Alternate Hierarchy Related Features> class.

Alternate_Hierarchy_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.10 Alternate_Hierarchy_Related_Geometry_Fields

The Alternate_Hierarchy_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Alternate Hierarchy Related Geometry> class.

Alternate_Hierarchy_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.11 Animation_Behaviour_Fields

The Animation_Behaviour_Fields data type encapsulates the field elements of the <DRM Animation Behaviour> class.

Animation_Behaviour_Fields ::= {
   period                         Long_Float;
   count                          Short_Integer_Unsigned;
   forward_sequence_mode          Boolean;
   beginning_frame                Short_Integer_Positive;
   ending_frame                   Short_Integer_Positive;
   random_beginning_frame         Boolean;
}

5.3.3.12 Animation_Range

The Animation_Range data type specifies a single range of animation frames to be traversed from A <DRM Animation Related Geometry>.

The ending_frame of a range shall be greater than or equal to the beginning_frame of that range.

Animation_Range ::= {
   beginning_frame                Short_Integer_Unsigned;
   ending_frame                   Short_Integer_Unsigned;
}

5.3.3.13 Animation_Related_Geometry_Fields

The Animation_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Animation Related Geometry> class.

Animation_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.14 Animation_Select_Parameters

The Animation_Select_Parameters data type specifies which branches to traverse from a <DRM Animation Related Geometry> instance when encountered by a component iterator. 

Each branch of a <DRM Animation Related Geometry> instance is considered to be a frame of the animation.  The frames are ordered, and this ordering is used to implicitly number the frames from 1 to n. The animation_ranges_array is an array of beginning_frames and ending_frames. For each range specified, the frames from that range’s beginning_frame to that range’s ending_frame will be traversed.

Animation_Select_Parameters ::= {
   ranges_count                   Integer_Unsigned;
   animation_ranges_array         Animation_Range[ranges_count];
}

5.3.3.15 Any_Enumerated_Or_Selection_Value

The Any_Enumerated_Or_Selection_Value variant record data type specifies an arbitrary enumerated or selection value that may be contained in the fields of a DRM class instance.

This value is used in searches.

Any_Enumerated_Value ::= (selected_enumeration Enumerated_Or_Selection_Type) {
[
  NULL_TYPE:                 null_type                  Short_Integer_Unsigned;
  AXIS_ALIGNMENT:            axis_alignment             Axis_Alignment;
  BOOLEAN:                   boolean                     Boolean;
  CAMERA_PROJECTION_TYPE:    camera_projection_type     Camera_Projection_Type;
  CI_ROLECODE:               ci_rolecode                 CI_RoleCode;
  COLOUR_BINDING:            colour_binding             Colour_Binding;
  COLOUR_MODEL:              colour_model               Colour_Model;
  DRM_CLASS:                 drm_class                  DRM_Class;
  EDCS_ATTRIBUTE_CODE:       edcs_attribute_code         EDCS_Attribute_Code;
  EDCS_ATTRIBUTE_VALUE_TYPE: edcs_attribute_value_type   EDCS_Attribute_Value_Type;
  EDCS_BOOLEAN:              edcs_boolean                EDCS_Boolean;
  EDCS_CLASSIFICATION_CODE:  edcs_classification_code    EDCS_Classification_Code;
  EDCS_ENUMERANT_CODE:       edcs_enumerant_code         EDCS_Integer;
  EDCS_NUMERIC_VALUE_TYPE:   edcs_numeric_value_type     EDCS_Numeric_Value_Type;
  EDCS_UNIT_CODE:            edcs_unit_code              EDCS_Unit_Code;
  EDCS_UNIT_SCALE_CODE:      edcs_unit_scale_code        EDCS_Unit_Scale_Code;
  EDCS_VALUE_CHARACTERISTIC_CODE:
                             edcs_value_characteristic_code
                                               EDCS_Value_Characteristic_Code;
  ELEMENT_TYPE_CODE:         element_type_code           Element_Type_Code;
  FEATURE_TOPOLOGY_LEVEL:    feature_topology_level     Feature_Topology_Level;
  FONT_STYLE:                font_style                  Font_Style;
  FUNCTIONAL_ASSOCIATION_MEANTING_TYPE:
                             functional_association_meaning_type
                                              Functional_Association_Meaning_Type;
  GEOMETRIC_CENTRE_CODE:     geometric_centre_code       Geometric_Centre_Code;
  GEOMETRY_TOPOLOGY_LEVEL:   geometry_topology_level     Geometry_Topology_Level;
  GRID_OVERLAP_OPERATOR:     grid_overlap_operator      Grid_Overlap_Operator;
  HIERARCHY_SUMMARY_MULTIPLICITY_CODE:
                             hierarchy_summary_multiplicity_code
                                              Hierarchy_Summary_Multiplicity_Code;
  IMAGE_COMPONENT_TYPE:      image_component_type       Image_Component_Type;
  IMAGE_MAPPING_METHOD:      image_mapping_method       Image_Mapping_Method;
  IMAGE_PROJECTION_TYPE:     image_projection_type      Image_Projection_Type;
  IMAGE_SCAN_DIRECTION:      image_scan_direction       Image_Scan_Direction;
  IMAGE_SCAN_DIRECTION_Z:    image_scan_direction_z     Image_Scan_Direction_Z;
  IMAGE_SIGNATURE:           image_signature            Image_Signature;
  IMAGE_WRAP:                image_wrap                 Image_Wrap;
  INDEX_CODE:                index_code                  Index_Code;
  INTERPOLATION_TYPE:        interpolation_type         Interpolation_Type;
  LOD_DATA_TYPE:             lod_data_type              LOD_Data_Type;
  LSR_TRANSFORMATION_AXIS:   lsr_transformation_axis    LSR_Transformation_Axis;
  MD_KEYWORDTYPECODE;        md_keywordtypecode          MD_KeywordTypeCode;
  MD_RESTRICTION_CODE:       md_restrictioncode          MD_RestrictionCode;
  MEDIA_FORMAT:              media_format                Media_Format;
  MODEL_REFERENCE_TYPE:      model_reference_type       Model_Reference_Type;
  MONTH:                     month                       Month;
  OCTANT:                    octant                      Octant;
  ORDERING_REASON:           ordering_reason            Ordering_Reason;
  PIXEL_FILL_METHOD:         pixel_fill_method          Pixel_Fill_Method;
  POINT_LIGHT_DISPLAY_TYPE:  point_light_display_type    Point_Light_Display_Type;
  PREDEFINED_FUNCTION:       predefined_function         Predefined_Function;
  PRESENT_IN:                present_in                 Present_In;
  PROPERTY_CODE_TYPE:        property_code_type         Property_Code_Type;
  QUADRANT:                  quadrant                   Quadrant;
  REFERENCE_SURFACE_ELEVATION_SELECT:
                             reference_surface_elevation_select
                                               Reference_Surface_Elevation_Select;
  REFERENCE_SURFACE_LOD_SELECT:
                             reference_surface_lod_select
                                               Reference_Surface_LOD_Select;
  REFERENCE_VECTOR_TYPE:     reference_vector_type      Reference_Vector_Type;
  SEASON:                    season                     Season;
  SHADING_METHOD:            shading_method             Shading_Method;
  SINGLE_VALUE_TYPE:         single_value_type           Single_Value_Type;
  SOUND_FORMAT:              sound_format                Sount_Format;
  SPACING_TYPE:              spacing_type               Spacing_Type;
  SPATIAL_ASSOCIATION_MEANTING_TYPE:
                             spatial_association_meaning_type
                                              Spatial_Association_Meaning_Type;
  SPATIAL_INDEX_SPACING_UNIT:
                             spatial_index_spacing_unit  Spatial_Index_Spacing_Unit;
  SRM_DSS_CODE:              srm_dss_code                SRM_DSS_Code;    
  STATE_MISMATCH_BEHAVIOUR:  state_mismatch_behaviour   State_Mismatch_Behaviour;
  SYMBOL_FORMAT:             symbol_format               Symbol_Format;
  TIME_CONFIGURATION:        time_configuration          Time_Configuration;
  TIME_DATA_TYPE:            time_data_type             Time_Data_Type;
  TIME_OF_DAY:               time_of_day                Time_Of_Day;
  TIME_SIGNIFICANCE:         time_significance          Time_Significance;
  UNDERLINE_STYLE:           underline_style             Underline_Style;
  UNION_REASON:              union_reason                Union_Reason;
  VARIABLE_CODE:             variable_code               Variable_Code;
]}

5.3.3.16 Any_Search_Value

The Any_Search_Value variant record data type specifies one of the values of available data types that can be used for search controls.

Any_Search_Value ::= (type_of_value Search_Value_Type) {
[
  BOOLEAN:                boolean_value                 Boolean;
  BYTE:                   byte_value                    Byte;
  SHORT_INTEGER:          short_integer_value           Short_Integer;
  INTEGER:                integer_value                 Integer;
  BYTE_POSITIVE:          byte_positive_value           Byte_Positive;
  SHORT_INTEGER_POSITIVE: short_integer_positive_value  Short_Integer_Positive;
  INTEGER_POSITIVE:       integer_positive_value        Integer_Positive;
  BYTE_UNSIGNED:          byte_unsigned_value           Byte_Unsigned;
  SHORT_INTEGER_UNSIGNED: short_integer_unsigned_value  Short_Integer_Unsigned;
  INTEGER_UNSIGNED:       integer_unsigned_value        Integer_Unsigned;
  FLOAT:                  float_value                   Float;
  LONG_FLOAT:             long_float_value              Long_Float;
  ENUMERATED:             any_enumerated_or_selection_value
                                                Any_Enumerated_Or_Selection_Value;
  STRING:                 string_value                  String;
]}

5.3.3.17 Arc_Fields

The Arc_Fields data type encapsulates the field elements of the <DRM Arc> class.

Arc_Fields ::= {
   count                          Short_Integer_Unsigned;
   suppress_last                  Boolean;
}

5.3.3.18 Axis_Fields

The Axis_Fields data type encapsulates the field elements of the <DRM Axis> class.

Axis_Fields ::= {
   axis_type                      EDCS_Attribute_Code;
   axis_value_count               Short_Integer_Positive;
}

5.3.3.19 Base_Positional_Light_Fields

The Base_Positional_Light_Fields data type encapsulates the field elements of the <DRM Base Positional Light> class.

Base_Positional_Light_Fields ::= {
   apply_to_children              Boolean;
   override_positional_lights     Boolean;
   override_infinite_lights       Boolean;
   active_light_value             Boolean;
   radius                         Float;
   constant_attenuation_factor    Long_Float;
   linear_attenuation_factor      Long_Float;
   quadratic_attenuation_factor   Long_Float;
}

5.3.3.20 Base_Spatial_Association_Data_Fields

This data type encapsulates the field elements of the <DRM Base Spatial Association Data> class.

Base_Spatial_Association_Data_Fields ::= {
   meaning                        Spatial_Association_Meaning_Type;
}

5.3.3.21 Base_Summary_Item_Fields

This data type encapsulates the field elements of the <DRM Base Summary Item> class.

Base_Summary_Item_Fields ::= {
   drm_class                      DRM_Class;
}

5.3.3.22 Base_Time_Data_Fields

This data type encapsulates the field elements of the <DRM Base Time Data> class.

Base_Time_Data_Fields ::= {
   time_significance              Time_Significance;
}

5.3.3.23 Blend_Directional_Light_Fields

This data type encapsulates the field elements of the <DRM Blend Directional Light> class.

Blend_Directional_Light_Fields ::= {
   upper_plane_angular_offset     Long_Float;
   lower_plane_angular_offset     Long_Float;
}

5.3.3.24 Browse_Media_Fields

This data type encapsulates the field elements of the <DRM Browse Media> class.

Browse_Media_Fields ::= {
   name                           String;
   media_format                   Media_Format;
   media_urn                      URN;
   description                    String;
}

5.3.3.25 Camera_Point_Fields

The Camera_Point_Fields data type encapsulates the field elements of the <DRM Camera Point> class.

Camera_Point_Fields ::= {
   projection                     Camera_Projection_Type;
   camera_near                    Long_Float;
   camera_far                     Long_Float;
   use_left_right_bottom_top      Boolean;
   left                           Long_Float;
   bottom                         Long_Float;
   right                          Long_Float;
   top                            Long_Float;
   horizontal_field_of_view       Long_Float;
   aspect_ratio                   Long_Float;
}

5.3.3.26 CC_3D_Location_Fields

The CC_3D_Location_Fields data type encapsulates the field elements of the <DRM CC 3D Location> class.

CC_3D_Location_Fields ::= {
   coordinate                     SRM_Euclidean_3D_Coordinate;
}

5.3.3.27 CD_3D_Location_Fields

The CD_3D_Location_Fields data type encapsulates the field elements of the <DRM CD 3D Location> class.

CD_3D_Location_Fields ::= {
   coordinate                     SRM_CD_3D_Coordinate;
}

5.3.3.28 CD_Surface_Location_Fields

The CD_Surface_Location_Fields data type encapsulates the field elements of the <DRM CD Surface Location> class.

CD_Surface_Location_Fields ::= {
   coordinate                     SRM_CD_Surface_Coordinate;
}

5.3.3.29 Citation_Fields

The Citation_Fields data type encapsulates the field elements of the <DRM Citation> class.

Citation_Fields ::= {
   title                          String;
   edition                        String;
   series_name                    String;
   issue_identification           String;
   other_citation_details         String;
}

5.3.3.30 Classification_Data_Fields

The Classification_Data_Fields data type encapsulates the field elements of the <DRM Classification Data> class.

Classification_Data_Fields ::= {
   tag                            EDCS_Classification_Code;
}

5.3.3.31 Classification_Entry

The Classification_Entry data type specifies a single entry in the data provided by the Classification_Parameters data type.

Classification_Entry ::= {
   class_data              Classification_Data_Fields;
   property_value_count    Integer_Unsigned;
   property_value_array    Property_Value_Fields[property_value_count];
}

5.3.3.32 Classification_Parameters

The Classification_Parameters data type specifies hierarchical search criteria.

The array members shall be distinct.

When used within a Hierarchy_Select_Parameters record, this data type is used to select which branches to traverse from a <DRM Classification Related Features> or <DRM Classification Related Geometry> instance when encountered by a component iterator. All branches with a link object containing a classification tag listed in the given classification_array will be traversed.

When used within a Hierarchy_Order_Parameters record, this data type controls the traversal order of the branches from a <DRM Classification Related Features> or <DRM Classification Related Geometry> instance when encountered by a component iterator. Any types of branches that are traversed but are not mentioned in this traversal order array will be traversed in any order after all of the branches that are mentioned in this array are traversed.

Classification_Parameters ::= {
   classification_count    Integer_Unsigned;
   classification_array    Classification_Entry[classification_count];
}

5.3.3.33 Classification_Related_Features_Fields

The Classification_Related_Feature_Fields data type encapsulates the field elements of the <DRM Classification Related Features> class.

Classification_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.34 Classification_Related_Geometry_Fields

The Classification_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Classification Related Geometry> class.

Classification_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.35 CM_3D_Location_Fields

The CM_3D_Location_Fields data type encapsulates the field elements of the <DRM CM 3D Location> class.

CM_3D_Location_Fields ::= {
   coordinate                     SRM_Spherical_3D_Coordinate;
}

5.3.3.36 CMY_Colour_Control_Link_Fields

The CMY_Colour_Control_Link_Fields data type encapsulates the field elements of the <DRM CMY Colour Control Link> class.

CMY_Colour_Control_Link_Fields ::= {
   description                    String;
   cyan_expression_index          Integer_Unsigned;
   magenta_expression_index       Integer_Unsigned;
   yellow_expression_index        Integer_Unsigned;
}

5.3.3.37 CMY_Colour_Fields

The CMY_Colour_Fields data type encapsulates the field elements of the <DRM CMY Colour> class.

CMY_Colour_Fields ::= {
   cmy_data                       CMY_Data;
}

5.3.3.38 CMY_Data

The CMY_Data data type specifies colour data using the CMY colour model.

The allowable range for each colour component is [0,0, 1,0].

CMY_Data ::= {
   cyan             Long_Float;
   magenta          Long_Float;
   yellow           Long_Float;
}

5.3.3.39 Colour_Fields

The Colour_Fields data type encapsulates the field elements of the <DRM Colour> class.

Colour_Fields ::= {
   colour_mapping                 Colour_Mapping;
}

5.3.3.40 Colour_Index_Control_Link_Fields

The Colour_Index_Control_Link_Fields data type encapsulates the field elements of the <DRM Colour Index Control Link> class.

Colour_Index_Control_Link_Fields ::= {
   description                    String;
   colour_index                   Integer_Unsigned;
   intensity_level_index          Integer_Unsigned;
}

5.3.3.41 Colour_Index_Fields

The Colour_Index_Fields data type encapsulates the field elements of the <DRM Colour Index> class.

Colour_Index_Fields ::= {
   colour_mapping                 Colour_Mapping;
   index                          Integer_Positive;
   intensity_level                Long_Float;
}

5.3.3.42 Colour_Shininess_Fields

The Colour_Shininess_Fields data type encapsulates the field elements of the <DRM Colour Shininess> class.

Colour_Shininess_Fields ::= {
   shininess                      Long_Float;
}

5.3.3.43 Colour_Table_Group_Fields

The Colour_Table_Group_Fields data type encapsulates the field elements of the <DRM Colour Table Group> class.

Colour_Table_Group_Fields ::= {
   primary_table_index            Integer_Positive;
   table_size                     Integer_Positive;
}

5.3.3.44 Cone_Directional_Light_Fields

The Cone_Directional_Light_Fields data type encapsulates the field elements of the <DRM Cone Directional Light> class.

Cone_Directional_Light_Fields ::= {
   has_plane                      Boolean;
   plane_angular_offset           Long_Float;
   use_full_intensity             Boolean;
   minimum_colour_intensity       Long_Float;
   invisible_behind               Boolean;
}

5.3.3.45 Conformal_Behaviour_Fields

The Conformal_Behaviour_Fields data type encapsulates the field elements of the <DRM Conformal Behaviour> class.

Conformal_Behaviour_Fields ::= {
   parallel_gravity               Boolean;
   offset_distance                Float;
}

5.3.3.46 Contact_Information

The Contact_Information data type encapsulates the complete set of contact metadata used by <DRM Responsible Party>.

Contact_Information ::= {
   phone                          Telephone_Information;
   address                        Address;
   online_resource                CI_OnlineResource;
   hours_of_service               String;
   contact_instructions           String;
}

5.3.3.47 Continuous_LOD_Related_Geometry_Fields

The Continuous_LOD_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Continuous LOD Related Geometry> class.

Continuous_LOD_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   terminating_node               Boolean;
}

5.3.3.48 Continuous_LOD_Select_Parameters

The Continuous_LOD_Select_Parameters data type specifies which branches to traverse from a <DRM Continuous LOD Related Geometry> object when encountered by a component iterator as directed by the select_parameters parameter of the InitializeComponentIterator function.

Continuous_LOD_Select_Parameters ::= {
   continous_lod_choice           Continuous_LOD_Select_Choice;
}

5.3.3.49 Control_Link_Fields

The Control_Link_Fields data type encapsulates the field elements of the <DRM Control Link> class.

Control_Link_Fields ::= {
   description                    String;
}

5.3.3.50 Count_Interval_Value

The Count_Interval_Value variant record data type specifies a count interval value for the type of interval determined  by interval_type.

Count_Interval_Value ::= (interval_type Interval_Type) {
[
   OPEN_INTERVAL:        open_interval       EDCS_
Count_Interval;
   GE_LT_INTERVAL:       ge_lt_interval      EDCS_
Count_Interval;
   GT_LE_INTERVAL:       gt_le_interval      EDCS_
Count_Interval;
   CLOSED_INTERVAL:      closed_interval     EDCS_
Count_Interval;
   GT_SEMI_INTERVAL:     gt_semi_interval    EDCS_
Count;
   GE_SEMI_INTERVAL:     ge_semi_interval    EDCS_
Count;
   LT_SEMI_INTERVAL:     lt_sem_interval     EDCS_
Count;
   LE_SEMI_INTERVAL:     le_semi_interval    EDCS_
Count;
]}

5.3.3.51 Cylindrical_Volume_Extent_Entry

The Cylindrical_Volume_Extent_Entry data type specifies a cylindrical <DRM Volume LOD Data>.

Cylindrical_Volume_Extent_Entry ::= {
   cylinder                       Cylindrical_Volume_Extent_Fields;
   reference_vectors              Reference_Vector_Fields[2];
}

5.3.3.52 Cylindrical_Volume_Extent_Fields

The Cylindrical_Volume_Extent_Fields data type encapsulates the field elements of the <DRM Cylindrical Volume Extent> class.

Cylindrical_Volume_Extent_Fields ::= {
   major_axis_radius              Long_Float;
   minor_axis_radius              Long_Float;
   cylinder_length                Long_Float;
}

5.3.3.53 Data_Quality_Element

The Data_Quality_Element data type specifies the components of each piece of data quality information.

The data_time field shall be formed as specified in ISO 8601.

Data_Quality_Element ::= {
   name_of_measure                 String;
   measure_identification          String;
   measure_description             String;
   evaluation_method_type          String;
   evaluation_method_description   String;
   evaluation_procedure            String;
   data_time                       String;
   result                          String;
}

5.3.3.54 Data_Quality_Fields

The Data_Quality_Fields data type encapsulates the field elements of the <DRM Data Quality> class.

Data_Quality_Fields ::= {
   fictional                                Boolean;
   field_accuracy                           Data_Quality_Element;
   logical_consistency                      Data_Quality_Element;
   completeness                             Data_Quality_Element;
   absolute_horizontal_positional_accuracy  Data_Quality_Element;
   relative_horizontal_positional_accuracy  Data_Quality_Element;
   absolute_vertical_positional_accuracy    Data_Quality_Element;
   relative_vertical_positional_accuracy    Data_Quality_Element;
}

5.3.3.55 Data_Table_Data

The Data_Table_Data variant record data type specifies the data processed by the API functions 8.3.23 GetDataTableData and 8.3.65 PutDataTableData.

Data_Table_Data ::= (value_type Data_Table_Data_Value_Type) {
  table_property_description_index   Integer_Positive;
  data_count                         Integer_Positive;
  [ SINGLE_LONG_FLOAT:
        single_long_float_values     EDCS_Long_Float[data_count];
    LONG_FLOAT:
        long_float_values            Long_Float_Value[data_count];
    SINGLE_INTEGER:
        single_integer_values        EDCS_Integer[data_count];
    INTEGER:
        integer_values               EDCS_Integer_Value[data_count];
    SINGLE_COUNT:
        single_count_values          EDCS_Count[data_count];
    COUNT:
       count_values                  EDCS_Count_Value[data_count];
    INDEX:
       index_values                  EDCS_Count[data_count];
    STRING:
        string_values               EDCS_String[data_count];
    CONSTRAINED_STRING:
        constrained_string_values    EDCS_String[data_count];
    KEY:
        key_values                   EDCS_String[data_count];
    ENUMERATION:
        enumeration_values           EDCS_Integer[data_count];
    BOOLEAN:
        boolean_values              EDCS_Boolean[data_count];
    INDEX_CODE:
        index_code_values            Integer_Unsigned[data_count];
  ]
}

5.3.3.56 Data_Table_Sub_Extent

The Data_Table_Sub_Extent data type specifies the portion of a <DRM Data Table> instance that is to be accessed.

Data_Table_Sub_Extent ::= {
   axes_count                     Short_Integer_Unsigned;
   axes_bounds                    Index_Range[axes_count];
}

5.3.3.57 Distance_LOD_Data_Fields

The Distance_LOD_Data_Fields data type encapsulates the field elements of the <DRM Distance LOD Data> class.

Distance_LOD_Data_Fields ::= {
   minimum_range                  Long_Float;
   minimum_fade_band              Long_Float;
   maximum_range                  Long_Float;
   maximum_fade_band              Long_Float;
}

5.3.3.58 DRM_Class_Fields

The DRM_Class_Fields variant record data type specifies the field values for the DRM class identified by drm_class.

DRM_Class_Fields ::=  (drm_class DRM_Class) {
[
  NULL:
  DRM_AMBIENT_COLOUR:
  DRM_AREAL_FEATURE:
  DRM_ATTACHMENT_POINT:
  DRM_BASE_ASSOCIATION_DATA:
  DRM_BASE_LOD_DATA:
  DRM_BOUNDING_VOLUME:
  DRM_COLLISION_VOLUME:
  DRM_COLOUR_DATA:
  DRM_COLOUR_TABLE:
  DRM_COLOUR_TABLE_LIBRARY:
  DRM_CONTACT_POINT:
  DRM_DATA_TABLE:
  DRM_DATA_TABLE_LIBRARY:
  DRM_DIFFUSE_COLOUR:
  DRM_DIRECTIONAL_LIGHT_BEHAVIOUR:
  DRM_EMISSIVE_COLOUR:
  DRM_ENCLOSING_VOLUME:
  DRM_EXPRESSION:
  DRM_FEATURE_EDGE:
  DRM_FEATURE_FACE_RING:
  DRM_FEATURE_HIERARCHY:
  DRM_FEATURE_MODEL:
  DRM_FEATURE_MODEL_INSTANCE:
  DRM_FEATURE_NODE:
  DRM_FEATURE_REPRESENTATION:
  DRM_FEATURE_TOPOLOGY:
  DRM_FEATURE_VOLUME_SHELL:
  DRM_FINITE_ELEMENT_MESH:
  DRM_GEOMETRY_EDGE:
  DRM_GEOMETRY_FACE:
  DRM_GEOMETRY_HIERARCHY:
  DRM_GEOMETRY_MODEL:
  DRM_GEOMETRY_MODEL_INSTANCE:
  DRM_GEOMETRY_NODE:
  DRM_GEOMETRY_REPRESENTATION:
  DRM_GEOMETRY_TOPOLOGY:
  DRM_GEOMETRY_VOLUME:
  DRM_ICON:
  DRM_IMAGE_LIBRARY:
  DRM_LABEL:
  DRM_LIBRARY:
  DRM_LIGHT_RENDERING_BEHAVIOUR:
  DRM_LINEAR_FEATURE:
  DRM_LOCATION:
  DRM_LOCATION_2D:
  DRM_LOCATION_3D:
  DRM_LOCATION_SURFACE:
  DRM_LSR_TRANSFORMATION:
  DRM_LSR_TRANSFORMATION_STEP:
  DRM_MODEL_LIBRARY:
  DRM_PERIMETER_DATA:
  DRM_POINT:
  DRM_POINT_FEATURE:
  DRM_POLYHEDRON:
  DRM_PRIMITIVE_COLOUR:
  DRM_PRIMITIVE_FEATURE:
  DRM_PRIMITIVE_GEOMETRY:
  DRM_PROPERTY_GRID_HOOK_POINT:
  DRM_PROPERTY_SET:
  DRM_PROPERTY_SET_TABLE_LIBRARY:
  DRM_PROPERTY_TABLE:
  DRM_SEDRIS_ABSTRACT_BASE:
  DRM_SEPARATING_PLANE:
  DRM_SEPARATING_PLANE_RELATIONS:
  DRM_SOUND_LIBRARY:
  DRM_SOUND_VOLUME:
  DRM_SPATIAL_EXTENT:
  DRM_SPECULAR_COLOUR:
  DRM_SURFACE_GEOMETRY:
  DRM_SYMBOL_LIBRARY:
  DRM_TACK_POINT:
  DRM_TIME_CONSTRAINTS_DATA:
  DRM_TRANSFORMATION:
  DRM_TWINKLING_LIGHT_BEHAVIOUR:
  DRM_VERTEX:
  DRM_VOLUME_EXTENT:
  DRM_VOLUME_GEOMETRY:
  DRM_VOLUME_OBJECT:
  DRM_VOLUMETRIC_FEATURE:
  DRM_WORLD_TRANSFORMATION:
    unused_fields                         Unused_Fields;
  DRM_ABSOLUTE_TIME:
    absolute_time_fields                  Absolute_Time_Fields;
  DRM_ABSOLUTE_TIME_INTERVAL:
    absolute_time_interval_fields         Absolute_Time_Interval_Fields;
  DRM_AGGREGATE_FEATURE:
    aggregate_feature_fields              Aggregate_Feature_Fields;
  DRM_AGGREGATE_GEOMETRY:
    aggregate_geometry_fields             Aggregate_Geometry_Fields;
  DRM_ALTERNATE_HIERARCHY_RELATED_FEATURES:
    alternate_hierarchy_related_feature_fields
                              Alternate_Hierarchy_Related_Features_Fields;
  DRM_ALTERNATE_HIERARCHY_RELATED_GEOMETRY:
    alternate_hierarchy_related_geometry_fields
                              Alternate_Hierarchy_Related_Geometry_Fields;
  DRM_ANIMATION_BEHAVIOUR:
    animation_behaviour_fields            Animation_Behaviour_Fields;
  DRM_ANIMATION_RELATED_GEOMETRY:
    animation_related_geometry_fields    Animation_Related_Geometry_Fields;
  DRM_ARC:
    arc_fields                            Arc_Fields;
  DRM_AXIS:
    axis_fields                           Axis_Fields;
  DRM_BASE_POSITIONAL_LIGHT:
    base_positional_light_fields          Base_Positional_Light_Fields;
  DRM_BASE_SPATIAL_ASSOCIATION_DATA:
    base_spatial_association_data         Base_Spatial_Association_Data_Fields;
  DRM_BASE_SUMMARY_ITEM:
    base_summary_item_fields              Base_Summary_Item_Fields;
  DRM_BASE_TIME_DATA:
    base_time_data_fields                 Base_Time_Data_Fields;
  DRM_BLEND_DIRECTIONAL_LIGHT:
    blend_directional_light_fields        Blend_Directional_Light_Fields;
  DRM_BROWSE_MEDIA:
    browse_media_fields                   Browse_Media_Fields;
  DRM_CAMERA_POINT:
    camera_point_fields                   Camera_Point_Fields;
  DRM_CC_3D_LOCATION:
    cc_3D_location_fields                 CC_3D_Location_Fields;
  DRM_CD_3D_LOCATION:
    cd_3D_location_fields                 CD_3D_Location_Fields;
  DRM_CD_SURFACE_LOCATION:
    cd_surface_location_fields            CD_Surface_Location_Fields;
  DRM_CITATION:
    citation_fields                       Citation_Fields;
  DRM_CLASSIFICATION_DATA:
    classification_data_fields            Classification_Data_Fields;
  DRM_CLASSIFICATION_RELATED_FEATURES:
    classification_related_features_fields Classification_Related_Features_Fields;
  DRM_CLASSIFICATION_RELATED_GEOMETRY:
    classification_related_geometry_fields Classification_Related_Geometry_Fields;
  DRM_CM_3D_LOCATION:
    cm_3D_location_fields                 CM_3D_Location_Fields;
  DRM_CMY_COLOUR:
    cmy_colour_fields                     CMY_Colour_Fields;
  DRM_CMY_COLOUR_CONTROL_LINK:
    cmy_colour_control_link_fields        CMY_Colour_Control_Link_Fields;
  DRM_COLOUR:
    colour_fields                         Colour_Fields;
  DRM_COLOUR_INDEX:
    colour_index_fields                   Colour_Index_Fields;
  DRM_COLOUR_INDEX_CONTROL_LINK:
    colour_index_control_link_fields     Colour_Index_Control_Link_Fields;
  DRM_COLOUR_SHININESS:
    colour_shininess_fields               Colour_Shininess_Fields;
  DRM_COLOUR_TABLE_GROUP:
    colour_table_group_fields             Colour_Table_Group_Fields;
  DRM_CONE_DIRECTIONAL_LIGHT:
    cone_directional_light_fields         Cone_Directional_Light_Fields;
  DRM_CONFORMAL_BEHAVIOUR:
    conformal_behaviour_fields            Conformal_Behaviour_Fields;
  DRM_CONTINUOUS_LOD_RELATED_GEOMETRY:
    continuous_lod_related_geometry_fields Continuous_LOD_Related_Geometry_Fields;
  DRM_CONTROL_LINK:
    control_link_fields                   Control_Link_Fields;
  DRM_CYLINDRICAL_VOLUME_EXTENT:
    cylindrical_volume_extent_fields     Cylindrical_Volume_Extent_Fields;
  DRM_DATA_QUALITY:
    data_quality_fields                   Data_Quality_Fields;
  DRM_DISTANCE_LOD_DATA:
    distance_lod_data_fields              Distance_LOD_Data_Fields;
  DRM_DRM_CLASS_SUMMARY_ITEM::
    drm_class_summary_item_fields         DRM_Class_Summary_Item_Fields;
  DRM_EC_AUGMENTED_3D_LOCATION:
    ec_augmented_3D_location_fields       EC_Augmented_3D_Location_Fields;
  DRM_EC_SURFACE_LOCATION:
    ec_surface_location_fields            EC_Surface_Location_Fields;
  DRM_EDCS_USE_SUMMARY_ITEM:
    edcs_use_summary_item_fields          EDCS_Use_Summary_Item_Fields;
  DRM_EDGE_DIRECTION:
    edge_direction_fields                 Edge_Direction_Fields;
  DRM_EI_3D_LOCATION:
    ei_3D_location_fields                 EI_3D_Location_Fields;
  DRM_ELLIPSE:
    ellipse_fields                        Ellipse_Fields;
  DRM_ENUMERATION_AXIS:
    enumeration_axis_fields               Enumeration_Axis_Fields;
  DRM_ENVIRONMENT_ROOT:
    environment_root_fields               Environment_Root_Fields;
  DRM_ENVIRONMENTAL_DOMAIN_SUMMARY:
    environmental_domain_summary_fields  Environmental_Domain_Summary_Fields;
  DRM_FACE_DIRECTION:
    face_direction_fields                 Face_Direction_Fields;
  DRM_FADE_RANGE:
    fade_range_fields                     Fade_Range_Fields;
  DRM_FEATURE_FACE:
    feature_face_fields                   Feature_Face_Fields;
  DRM_FEATURE_TOPOLOGY_HIERARCHY:
    feature_topology_hierarchy_fields    Feature_Topology_Hierarchy_Fields;
  DRM_FEATURE_VOLUME:
    feature_volume_fields                 Feature_Volume_Fields;
  DRM_FLASHING_LIGHT_BEHAVIOUR:
    flashing_light_behaviour_fields      Flashing_Light_Behaviour_Fields;
  DRM_FUNCTION:
    function_fields                       Function_Fields;
  DRM_FUNCTIONAL_ASSOCIATION_DATA:
    functional_association_data_fields    Functional_Association_Data_Fields;
  DRM_GEOMETRIC_CENTRE:
    geometric_centre_fields               Geometric_Centre_Fields;
  DRM_GEOMETRY_TOPOLOGY_HIERARCHY:
    geometry_topology_hierarchy_fields   Geometry_Topology_Hierarchy_Fields;
  DRM_GRID_OVERLAP:
    grid_overlap_fields                   Grid_Overlap_Fields;
  DRM_HAEC_3D_LOCATION:
    haec_3D_location_fields               HAEC_3D_Location_Fields;
  DRM_HEEC_3D_LOCATION:
    heec_3D_location_fields               HEEC_3D_Location_Fields;
  DRM_HEEQ_3D_LOCATION:
    heeq_3D_location_fields               HEEQ_3D_Location_Fields;
  DRM_HIERARCHY_DATA:
    hierarchy_data_fields                 Hierarchy_Data_Fields;
  DRM_HIERARCHY_SUMMARY_ITEM:
    hierarchy_summary_item_fields         Hierarchy_Summary_Item_Fields;
  DRM_HSV_COLOUR:
    hsv_colour_fields                     HSV_Colour_Fields;
  DRM_HSV_COLOUR_CONTROL_LINK:
    hsv_colour_control_link_fields        HSV_Colour_Control_Link_Fields;
  DRM_IDENTIFICATION:
    identification_fields                 Identification_Fields;
  DRM_IMAGE:
    image_fields                          Image_Fields;
  DRM_IMAGE_ANCHOR:
    image_anchor_fields                   Image_Anchor_Fields;
  DRM_IMAGE_MAPPING_FUNCTION:
    image_mapping_function_fields         Image_Mapping_Function_Fields;
  DRM_IN_OUT:
    in_out_fields                         In_Out_Fields;
  DRM_INDEX_LOD_DATA:
    index_lod_data_fields                 Index_LOD_Data_Fields;
  DRM_INFINITE_LIGHT:
    infinite_light_fields                 Infinite_Light_Fields;
  DRM_INLINE_COLOUR:
    inline_colour_fields                  Inline_Colour_Fields;
  DRM_INTERFACE_TEMPLATE:
    interface_template_fields             Interface_Template_Fields;
  DRM_INTERVAL_AXIS:
    interval_axis_fields                  Interval_Axis_Fields;
  DRM_IRREGULAR_AXIS:
    irregular_axis_fields                 Irregular_Axis_Fields;
  DRM_KEYWORDS:
    keywords_fields                       Keywords_Fields;
  DRM_LCC_AUGMENTED_3D_LOCATION:
    lcc_augmented_3D_location_fields      LCC_Augmented_3D_Location_Fields;
  DRM_LCC_SURFACE_LOCATION:
    lcc_surface_location_fields           LCC_Surface_Location_Fields;
  DRM_LCE_3D_LOCATION:
    lce_3D_location_fields                LCE_3D_Location_Fields;
  DRM_LEGAL_CONSTRAINTS:
    legal_constraints_fields              Legal_Constraints_Fields;
  DRM_LIGHT_RENDERING_PROPERTIES:
    light_rendering_properties_fields    Light_Rendering_Properties_Fields;
  DRM_LIGHT_RENDERING_PROPERTIES_CONTROL_LINK:
    light_rendering_properties_control_link_fields
                              LightRenderingPropertiesControlLinkFields;
  DRM_LIGHT_SOURCE:
    light_source_fields                   Light_Source_Fields;
  DRM_LIGHT_SOURCE_CONTROL_LINK:
    light_source_control_link_fields     Light_Source_Control_Link_Fields;
  DRM_LINE:
    line_fields                           Line_Fields;
  DRM_LINEAGE:
    lineage_fields                        Lineage_Fields;
  DRM_LINEAR_GEOMETRY:
    linear_geometry_fields                Linear_Geometry_Fields;
  DRM_LITERAL:
    literal_fields                        Literal_Fields;
  DRM_LOBE_DATA:                             
    lobe_data_fields                      Lobe_Data_Fields;
  DRM_LOCAL_4X4:
    local_4x4_fields                      Local_4x4_Fields;
  DRM_LOD_RELATED_FEATURES:
    lod_related_features_fields           LOD_Related_Features_Fields;
  DRM_LOD_RELATED_GEOMETRY:
    lod_related_geometry_fields           LOD_Related_Geometry_Fields;
  DRM_LSA_2D_LOCATION:
    lsa_2D_location_fields                LSA_2D_Location_Fields;
  DRM_LSP_2D_LOCATION:
    lsp_2D_location_fields                LSP_2D_Location_Fields;
  DRM_LSR_2D_LOCATION:
    lsr_2D_location_fields                LSR_2D_Location_Fields;
  DRM_LSR_3D_LOCATION:
    lsr_3D_location_fields                LSR_3D_Location_Fields;
  DRM_LSR_3D_LOCATION_CONTROL_LINK:
    lsr_3D_location_control_link_fields  LSR_3D_Location_Control_Link_Fields;     
  DRM_LTSAS_3D_LOCATION:
    ltsas_3D_location_fields              LTSAS_3D_Location_Fields;
  DRM_LTSAS_SURFACE_LOCATION:
    ltsas_surface_location_fields         LTSAS_Surface_Location_Fields;
  DRM_LTSC_3D_LOCATION:
    ltsc_3D_location_fields               LTSC_3D_Location_Fields;
  DRM_LTSC_SURFACE_LOCATION:
    ltse_surface_location_fields          LTSC_Surface_Location_Fields;
  DRM_LTSE_3D_LOCATION:
    ltse_3D_location_fields               LTSE_3D_Location_Fields;
  DRM_LTSE_SURFACE_LOCATION:
    ltsc_surface_location_fields          LTSE_Surface_Location_Fields;
  DRM_M_AUGMENTED_3D_LOCATION:
    m_augmented_3D_location_fields        M_Augmented_3D_Location_Fields;
  DRM_M_SURFACE_LOCATION:
    m_surface_location_fields             M_Surface_Location_Fields;
  DRM_MAP_SCALE_LOD_DATA:
    map_scale_lod_data_map_scale          Map_Scale_LOD_Data_Fields;
  DRM_MESH_FACE_TABLE:
    mesh_face_table_fields                Mesh_Face_Table_Fields;
  DRM_MODEL:
    model_fields                          Model_Fields;
  DRM_MODEL_INSTANCE_TEMPLATE_INDEX:
    model_instance_template_index_fields Model_Instance_Template_Index_Fields;
  DRM_MOVING_LIGHT_BEHAVIOUR:
    moving_light_behaviour_fields         Moving_Light_Behaviour_Fields;
  DRM_OCTANT_DATA:
    octant_data_fields                    Octant_Data_Fields;
  DRM_OCTANT_RELATED_FEATURES:
    octant_related_features_fields        Octant_Related_Features_Fields;
  DRM_OCTANT_RELATED_GEOMETRY:
    octant_related_geometry_fields        Octant_Related_Geometry_Fields;
  DRM_OMS_AUGMENTED_3D_LOCATION:
    oms_augmented_location_3D_fields      OMS_Augmented_3D_Location_Fields;
  DRM_OMS_SURFACE_LOCATION:
    oms_surface_location_fields           OMS_Surface_Location_Fields;
  DRM_OVERLOAD_PRIORITY_INDEX:
    overload_priority_index_fields        Overload_Priority_Index_Fields;
  DRM_PARALLELEPIPED_VOLUME_EXTENT:
    parallelepiped_volume_extent_fields  Parallelepiped_Volume_Extent_Fields;
  DRM_PD_3D_LOCATION:
    pd_3D_location_fields                 PD_3D_Location_Fields;
  DRM_PD_SURFACE_LOCATION:
    pd_surface_location_fields            PD_Surface_Location_Fields;
  DRM_PERIMETER_RELATED_FEATURE_TOPOLOGY:
    perimeter_related_feature_topology_fields
                              Perimeter_Related_Feature_Topology_Fields;
  DRM_PERIMETER_RELATED_FEATURES:
    perimeter_related_features_fields    Perimeter_Related_Features_Fields;
  DRM_PERIMETER_RELATED_GEOMETRY:
    perimeter_related_geometry_fields    Perimeter_Related_Geometry_Fields;
  DRM_PERIMETER_RELATED_GEOMETRY_TOPOLOGY:
    perimeter_related_geometry_topology_fields
                              Perimeter_Related_Geometry_Topology_Fields;
  DRM_POLYGON:
    polygon_fields                        Polygon_Fields;
  DRM_POLYGON_CONTROL_LINK:
    polygon_control_link_fields           Polygon_Control_Link_Fields;
  DRM_POSITIONAL_LIGHT:
    positional_light_fields               Positional_Light_Fields;
  DRM_PREDEFINED_FUNCTION:
    predefined_function_fields            Predefined_Function_Fields;
  DRM_PRESENTATION_DOMAIN:
    presentation_domain_fields            Presentation_Domain_Fields;
  DRM_PRIMITIVE_SUMMARY_ITEM:
    primitive_summary_item_fields         Primitive_Summary_Item_Fields;
  DRM_PROCESS_STEP:
    process_step_fields                   Process_Step_Fields;
  DRM_PROPERTY:
    property_fields                       Property_Fields;
  DRM_PROPERTY_CHARACTERISTIC:
    property_characteristic_fields       Property_Characteristic_Fields;
  DRM_PROPERTY_DESCRIPTION:
    property_description_fields           Property_Description_Fields;
  DRM_PROPERTY_GRID:
    property_grid_fields                  Property_Grid_Fields;
  DRM_PROPERTY_SET_INDEX:
    property_set_index_fields             Property_Set_Index_Fields;
  DRM_PROPERTY_SET_INDEX_CONTROL_LINK:
    property_set_index_control_link_fields
                              Property_Set_Index_Control_Link_Fields;
  DRM_PROPERTY_SET_TABLE:
    property_set_table_fields             Property_Set_Table_Fields;
  DRM_PROPERTY_SET_TABLE_GROUP:
    property_set_table_group_fields       Property_Set_Table_Group_Fields;
  DRM_PROPERTY_TABLE_REFERENCE:
    property_table_reference_fields      Property_Table_Reference_Fields;
  DRM_PROPERTY_TABLE_REFERENCE_CONTROL_LINK:
    property_table_reference_control_link_fields
                              Property_Table_Reference_Control_Link_Fields;
  DRM_PROPERTY_VALUE:
    property_value_fields                 Property_Value_Fields;
  DRM_PROXIMITY_DATA:
    proximity_data_fields                 Proximity_Data_Fields;
  DRM_PS_AUGMENTED_3D_LOCATION:
    ps_augmented_3D_location_fields       PS_Augmented_3D_Location_Fields;
  DRM_PS_SURFACE_LOCATION:
    ps_surface_location_fields            PS_Surface_Location_Fields;
  DRM_PSEUDO_CODE_FUNCTION:
    pseudo_code_function_fields           Pseudo_Code_Function_Fields;
  DRM_PYRAMID_DIRECTIONAL_LIGHT:
    pyramid_directional_light_fields     Pyramid_Directional_Light_Fields;
  DRM_QUADRANT_DATA:
    quadrant_data_fields                  Quadrant_Data_Fields;
  DRM_QUADRANT_RELATED_FEATURES:
    quadrant_related_features_fields     Quadrant_Related_Features_Fields;
  DRM_QUADRANT_RELATED_GEOMETRY:
    quadrant_related_geometry_fields     Quadrant_Related_Geometry_Fields;
  DRM_REFERENCE_ORIGIN:
    reference_origin_fields               Reference_Origin_Fields;
  DRM_REFERENCE_SURFACE:
    reference_surface_fields              Reference_Surface_Fields;
  DRM_REFERENCE_VECTOR:
    reference_vector_fields               Reference_Vector_Fields;
  DRM_REFERENCE_VECTOR_CONTROL_LINK:
    reference_vector_control_link_fields Reference_Vector_Control_Link_Fields;
  DRM_REGULAR_AXIS:
    regular_axis_fields                   Regular_Axis_Fields;
  DRM_RELATIVE_TIME:
    relative_time_fields                 Relative_Time_Fields;
  DRM_RELATIVE_TIME_INTERVAL:
    relative_time_interval_fields         Relative_Time_Interval_Fields;
  DRM_RENDERING_PRIORITY_LEVEL:
    rendering_priority_level_fields      Rendering_Priority_Level_Fields;
  DRM_RENDERING_PROPERTIES:
    rendering_properties_fields           Rendering_Properties_Fields;
  DRM_RESPONSIBLE_PARTY:
    responsible_party_fields              Responsible_Party_Fields;
  DRM_RGB_COLOUR:
    rgb_colour_fields                     RGB_Colour_Fields;
  DRM_RGB_COLOUR_CONTROL_LINK:
    rgb_colour_control_link_fields        RGB_Colour_Control_Link_Fields;
  DRM_ROLE_DATA:
    role_data_fields                    Role_Data_Fields;
  DRM_ROTATING_LIGHT_BEHAVIOUR:
    rotating_light_behaviour_fields      Rotating_Light_Behaviour_Fields;
  DRM_ROTATION:
    rotation_fields                       Rotation_Fields;
  DRM_ROTATION_CONTROL_LINK:
    rotation_control_link_fields          Rotation_Control_Link_Fields;
  DRM_SCALE:
    scale_fields                          Scale_Fields;
  DRM_SCALE_CONTROL_LINK:
    scale_control_link_fields             Scale_Control_Link_Fields;
  DRM_SEASON:
    season_fields                         Season_Fields;
  DRM_SEC_3D_LOCATION:
    sec_3D_location_fields                SEC_3D_Location_Fields;
  DRM_SECURITY_CONSTRAINTS:
    security_constraints_fields           Security_Constraints_Fields;
  DRM_SEPARATING_PLANE_DATA:
    separating_plane_data_fields          Separating_Plane_Data_Fields;
  DRM_SEPARATING_PLANE_RELATED_GEOMETRY:
    separating_plane_related_geometry_fields
                              Separating_Plane_Related_Geometry_Fields;
  DRM_SEQ_3D_LOCATION:
    seq_3D_location_fields                SEQ_3D_Location_Fields;
  DRM_SMD_3D_LOCATION:
    smd_3D_location_fields                SMD_3D_Location_Fields;
  DRM_SME_3D_LOCATION:
    sme_3D_location_fields                SME_3D_Location_Fields;
  DRM_SOUND:
    sound_fields                          Sound_Fields;
  DRM_SOUND_INSTANCE:
    sound_instance_fields                 Sound_Instance_Fields;
  DRM_SOUND_INSTANCE_CONTROL_LINK:
    sound_instance_control_link_fields   Sound_Instance_Control_Link_Fields;
  DRM_SOURCE:
    source_fields                         Source_Fields;
  DRM_SPATIAL_ASSOCIATION_DATA:
    spatial_association_data_fields       Spatial_Association_Data_Fields;
  DRM_SPATIAL_INDEX_DATA:
    spatial_index_data_fields             Spatial_Index_Data_Fields;
  DRM_SPATIAL_INDEX_RELATED_FEATURE_TOPOLOGY:
    spatial_index_related_feature_topology_fields
                              Spatial_Index_Related_Feature_Topology_Fields;
  DRM_SPATIAL_INDEX_RELATED_FEATURES:
    spatial_index_related_features_fields Spatial_Index_Related_Features_Fields;
  DRM_SPATIAL_INDEX_RELATED_GEOMETRY:
    spatial_index_related_geometry_fields Spatial_index_Related_Geometry_Fields;
  DRM_SPATIAL_INDEX_RELATED_GEOMETRY_TOPOLOGY:
    spatial_index_related_geometry_topology_fields
                              Spatial_Index_Related_Geometry_Topology_Fields;
  DRM_SPATIAL_RESOLUTION_LOD_DATA:
    spatial_resolution_lod_data_fields    Spatial_Resolution_LOD_Data_Fields;
  DRM_SPHERICAL_VOLUME_EXTENT:
    spherical_volume_extent_fields        Spherical_Volume_Extent_Fields;
  DRM_SPOT_LIGHT:
    spot_light_fields                     Spot_Light_Fields;
  DRM_SRF_SUMMARY:
    srf_summary_fields                    SRF_Summary_Fields;
  DRM_STAMP_BEHAVIOUR:
    stamp_behaviour_fields                Stamp_Behaviour_Fields;
  DRM_STATE_CONTROL_LINK:
    state_control_link_fields             State_Control_Link_Fields;
  DRM_STATE_DATA:
    state_data_fields                     State_Data_Fields;
  DRM_STATE_RELATED_FEATURES:
    state_related_features_fields         State_Related_Features_Fields;
  DRM_STATE_RELATED_GEOMETRY:
    state_related_geometry_fields         State_Related_Geometry_Fields;
  DRM_STROBING_LIGHT_BEHAVIOUR:
    strobing_light_behaviour_fields      Strobing_Light_Behaviour_Fields;
  DRM_SYMBOL:
    symbol_fields                         Symbol_Fields;
  DRM_TABLE_PROPERTY_DESCRIPTION:
    table_property_description_fields    Table_Property_Description_Fields;
  DRM_TEXT:
    text_fields                           Text_Fields;
  DRM_TEXTURE_COORDINATE:
    texture_coordinate_fields             Texture_Coordinate_Fields;
  DRM_TEXTURE_COORDINATE_CONTROL_LINK:
    texture_coordinate_control_link_fields
                              Texture_Coordinate_Control_Link_Fields;
  DRM_TIME_INTERVAL:
    time_interval_fields                  Time_Interval_Fields;
  DRM_TIME_OF_DAY:
    time_of_day_fields                    Time_Of_Day_Fields;
  DRM_TIME_POINT:
    time_point_fields                     Time_Point_Fields;
  DRM_TIME_RELATED_FEATURES:
    time_related_features_fields          Time_Related_Features_Fields;
  DRM_TIME_RELATED_GEOMETRY:
    time_related_geometry_fields          Time_Related_Geometry_Fields;
  DRM_TM_AUGMENTED_3D_LOCATION:
    tm_augmented_3D_location_fields       TM_Augmented_3D_Location_Fields;
  DRM_TM_SURFACE_LOCATION:
    tm_surface_location_fields            TM_Surface_Location_Fields;
  DRM_TRANSLATION:
    translation_fields                    Translation_Fields;
  DRM_TRANSLATION_CONTROL_LINK:
    translation_control_link_fields      Translation_Control_Link_Fields;
  DRM_TRANSLUCENCY:
    translucency_fields                   Translucency_Fields;
  DRM_TRANSLUCENCY_CONTROL_LINK:
    translucency_control_link_fields     Translucency_Control_Link_Fields;
  DRM_TRANSMITTAL_ROOT:
    transmittal_root_fields               Transmittal_Root_Fields;
  DRM_TRANSMITTAL_SUMMARY:
    transmittal_summary_fields            Transmittal_Summary_Fields;
  DRM_UNION_OF_FEATURE_TOPOLOGY:
    union_of_feature_topology_fields     Union_Of_Feature_Topology_Fields;
  DRM_UNION_OF_FEATURES:
    union_of_features_fields              Union_Of_Features_Fields;
  DRM_UNION_OF_GEOMETRY:
    union_of_geometry_fields              Union_Of_Geometry_Fields;
  DRM_UNION_OF_GEOMETRY_HIERARCHY:
    union_of_geometry_hierarchy_fields   Union_Of_Geometry_Hierarchy_Fields;
  DRM_UNION_OF_GEOMETRY_TOPOLOGY:
    union_of_geometry_topology_fields     Union_Of_Geometry_Topology_Fields;
  DRM_UNION_OF_PRIMITIVE_GEOMETRY:
    union_of_primitive_geometry_fields   Union_Of_Primitive_Geometry_Fields;
  DRM_VARIABLE:
    variable_fields                       Variable_Fields;
  DRM_VOLUME_LIGHT_BEHAVIOUR:
    volume_light_behaviour_fields         Volume_Light_Behaviour_Fields;
  DRM_VOLUME_LOD_DATA:
    volume_lod_data_fields                Volume_LOD_Data_Fields;
  DRM_WORLD_3X3:
    world_3x3_fields                      World_3x3_Fields;
]}

5.3.3.59 DRM_Class_Summary_Item_Fields

The DRM_Class_Summary_Item_Fields data type encapsulates the field elements of the <DRM DRM Class Summary Item> class.

DRM_Class_Summary_Item_Fields ::= {
   drm_class                      DRM_Class;
}

5.3.3.60 EC_Augmented_3D_Location_Fields

The EC_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM EC Augmented 3D Location> class.

EC_Augmented_3D_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.61 EC_Surface_Location_Fields

The EC_Surface_Location_Fields data type encapsulates the field elements of the <DRM EC Surface Location> class.

EC_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.62 EDCS_Use_Summary_Item_Fields

The EDCS_Use_Summary_Item_Fields data type encapsulates the field elements of the <DRM EDCS Use Summary Item> class.

EDCS_Use_Summary_Item_Fields ::= {
   description                    String;
}

5.3.3.63 Edge_Direction_Fields

The Edge_Direction_Fields data type encapsulates the field elements of the <DRM Edge Direction> class.

Edge_Direction_Fields ::= {
   forwards                       Boolean;
}

5.3.3.64 EI_3D_Location_Fields

The EI_3D_Location_Fields data type encapsulates the field elements of the <DRM EI 3D Location> class.

EI_3D_Location_Fields ::= {
   coordinate                     SRM_EI_3D_Coordinate;
}

5.3.3.65 Element_Type

The Element_Type data type specifies the type of data being specified by a <DRM Table Property Description> instance.

Element_Type ::= (code_type          Element_Type_Code; ) {
  ATTRIBUTE_CODE :      attribute     EDCS_Attribute_Code;
  INDEX_CODE :          index         Index_Code;
  VARIABLE_CODE :       variable      Variable_Code;
}

5.3.3.66 Ellipse_Fields

The Ellipse_Fields data type encapsulates the field elements of the <DRM Ellipse> class.

The axis lengths are measured from circumference intercept to opposite circumference intercept.

Ellipse_Fields ::= {
   major_axis_length              Long_Float;
   minor_axis_length              Long_Float;
}

5.3.3.67 Enumeration_Axis_Fields

The Enumeration_Axis_Fields data type encapsulates the field elements of the <DRM Enumeration Axis> class.

Enumeration_Axis_Fields ::= {
   axis_type          EDCS_Attribute_Code;
   axis_value_count   Short_Integer_Positive;
   axis_value_array   EDCS_Integer[axis_value_count];
}

5.3.3.68 Environment_Root_Fields

The Environment_Root_Fields data type encapsulates the field elements of the <DRM Environment Root> class.

Environment_Root_Fields ::= {
   srf_context_info               SRF_Context_Info;
}

5.3.3.69 Environmental_Domain_Summary_Fields

The Environmental_Domain_Summary_Fields data type encapsulates the field elements of the <DRM Environmental Domain Summary> class.

Environmental_Domain_Summary_Fields ::= {
   environmental_domain                   EDCS_Classification_Code;
}

5.3.3.70 Face_Direction_Fields

The Face_Direction_Fields data type encapsulates the field elements of the <DRM Face Direction> class.

Face_Direction_Fields ::= {
   front                          Boolean;
}

5.3.3.71 Fade_Range_Fields

The Fade_Range_Fields data type encapsulates the field elements of the <DRM Fade Range> class.

Fade_Range_Fields ::= {
   fade_to_off_begin              Long_Float;
   fade_to_off_complete           Long_Float;
}

5.3.3.72 Feature_Face_Fields

The Feature_Face_Fields data type encapsulates the field elements of the <DRM Feature Face> class.

Feature_Face_Fields ::= {
   universal                      Boolean;
}

5.3.3.73 Feature_Topology_Hierarchy_Fields

The Feature_Hierarchy_Fields data type encapsulates the field elements of the <DRM Feature Topology Hierarchy> class.

Feature_Topology_Hierarchy_Fields ::= {
   feature_topology_level         Feature_Topology_Level;
}

5.3.3.74 Feature_Volume_Fields

The Feature_Volume_Fields data type encapsulates the field elements of the <DRM Feature Volume> class.

Feature_Volume_Fields ::= {
   universal                      Boolean;
}

5.3.3.75 Flashing_Light_Behaviour_Fields

The Flashing_Light_Behaviour_Fields data type encapsulates the field elements of the <DRM Flashing Light Behaviour> class.

Flashing_Light_Behaviour_Fields ::= {
   period                         Long_Float;
   delay                          Long_Float;
   duration                       Long_Float;
}

5.3.3.76 Function_Fields

The Function_Fields data type encapsulates the field elements of the <DRM Function> class.

Function_Fields ::= {
   value_type                     EDCS_Attribute_Value_Type;
}

5.3.3.77 Functional_Association_Data_Fields

The Functional_Association_Data_Fields data type encapsulates the field elements of the <DRM Functional Association Data> class.

Functional_Association_Data_Fields ::= {
   meaning                       Functional_Association_Meaning_Type;
}

5.3.3.78 General_Hierarchy_Select

The General_Hierarachy_Select data type specifies whether any components of the given <DRM Aggregate Geometry> and <DRM Aggregate Feature> instances should be traversed by a component iterator.

For instances of <DRM Aggregate Feature> and <DRM Aggregate Geometry> (each referred to as a hierarchy in the following specificaion) for which inclusion rules can be specified:

  1. If an instance of hierarchy has a Hierarchy_Inclusion value of EXCLUDE_ALL, the rules within the Hierarchy_Select_Parameters for that type of hierarchy are not evaluated.  Objects of that hierarchy type and the components of those hierarchies are always excluded from the search space of the iterator.
  2. If an instance of hierarchy has a Hierarchy_Inclusion value of INCLUDE_ALL, the rules within the Hierarchy_Select_Parameters for that type of hierarchy are not evaluated. Objects of that hierarchy type and the components of those hierarchies are always included in the search space of the iterator.
  3. If an instance of hierarchy has a Hierarchy_Inclusion value of EVALUATE_RULES, the rules within the Hierarchy_Select_Parameters for that type of hierarchy are evaluated for each hierarchy component attached to the hierarchy. Only hierarchy components whose link attached data pass the rules are included in the search space of the iterator.

For types of hierarchies for which inclusion rules cannot be specified:

  1. If an instance of hierarchy has a value of FALSE, all instances of that hierarchy class and the components of those hierarchies are always excluded from the search space of the iterator.
  2. If an instance of hierarchy has a value of TRUE, all objects of that hierarchy type and the components of those hierarchies are always included in the search space of the iterator.

General_Hierarchy_Select ::= {
  
   Hierarchy classes for which inclusion rules can be specified:
    
   alternate_hierarchy             Hierarchy_Inclusion;
   animation_related               Hierarchy_Inclusion;
   classification_related          Hierarchy_Inclusion;
   continuous_lod_related          Hierarchy_Inclusion;
   octant_related                  Hierarchy_Inclusion;
   quadrant_related                Hierarchy_Inclusion;
   separating_plane                Hierarchy_Inclusion;
   spatial_index_related           Hierarchy_Inclusion;
   state_related                   Hierarchy_Inclusion;
    
   Hierarchy types for which inclusion rules can be specified for
   various subclasses of the hierarchies:

  
   lod_related                     Boolean; if FALSE, assume next five are EXCLUDE_ALL
   lod_distance_related            Hierarchy_Inclusion;
   lod_index_related               Hierarchy_Inclusion;
   lod_map_scale_related           Hierarchy_Inclusion;
   lod_spatial_resolution_related  Hierarchy_Inclusion;
   lod_volume_related              Hierarchy_Inclusion;
   time_related                    Boolean; if FALSE, assume next five are EXCLUDE_ALL
   time_related_by_month           Hierarchy_Inclusion;
   time_related_by_season          Hierarchy_Inclusion;
   time_related_by_time_interval   Hierarchy_Inclusion;
   time_related_by_time_of_day     Hierarchy_Inclusion;
   time_related_by_time_point      Hierarchy_Inclusion;
  
   Hierarchy types for which inclusion rules cannot be specified:
  
   perimeter_related               Boolean;
   union_of_features               Boolean;
   union_of_geometry_hierarchies   Boolean;
   union_of_geometry_primitives    Boolean;
}

5.3.3.79 Geometric_Centre_Fields

The Geometric_Centre_Fields data type encapsulates the field elements of the <DRM Geometric Centre> class.

Geometric_Centre_Fields ::= {
   meaning                         Geometric_Centre_Code;
}

5.3.3.80 Geometry_Topology_Hierarchy_Fields

The Geometry_Topology_Hierarchy_Fields data type encapsulates the field elements of the <DRM Geometry Topology Hierarchy> class.

Geometry_Topology_Hierarchy_Fields ::= {
   geometry_topology_level         Geometry_Topology_Level;
}

5.3.3.81 Grid_Overlap_Fields

The Grid_Overlap_Fields data type encapsulates the field elements of the <DRM Grid Overlap> class.

Grid_Overlap_Fields ::= {
   overlay_group                   Short_Integer_Positive;
   priority                        Short_Integer_Unsigned;
   operation                       Grid_Overlap_Operator;
}

5.3.3.82 HAEC_3D_Location_Fields

The HAEC_3D_Location_Fields data type encapsulates the field elements of the <DRM HAEC 3D Location> class.

HAEC_3D_Location_Fields ::= {
   coordinate                      SRM_Spherical_3D_Coordinate;
}

5.3.3.83 HEEC_3D_Location_Fields

The HEEC_3D_Location_Fields data type encapsulates the field elements of the <DRM HEEC 3D Location> class.

HEEC_3D_Location_Fields ::= {
   coordinate                      SRM_Spherical_3D_Coordinate;
}

5.3.3.84 HEEQ_3D_Location_Fields

The HEEQ_3D_Location_Fields data type encapsulates the field elements of the <DRM HEEQ 3D Location> class.

HEEQ_3D_Location_Fields ::= {
   coordinate                      SRM_Spherical_3D_Coordinate;
}

5.3.3.85 Hierarchy_Data_Fields

The Hierarchy_Data_Fields data type encapsulates the field elements of the <DRM Hierarchy Data> class.

Hierarchy_Data_Fields ::= {
   alternate_representation_reason String;
}

5.3.3.86 Hierarchy_Order_Parameters

The Hierarchy_Order_Parameters data type specifies the traversal order of the branches of a <DRM Aggregate Feature> instance or <DRM Aggregate Geometry> instance encountered by a component iterator.

If a <DRM Aggregate Feature> object or a <DRM Aggregate Geometry> object contains unordered branches, the traversal order of these branches is random by default. By using traversal order parameters, the order in which the branches will be traversed can be controlled.

If a given type of aggregate object is not given any traversal order controls, the components of that type of aggregate object will be traversed in any order, unless the aggregate object itself is specified with an ordering of branches in the data model.

The general_hierarchy_mask field specifies whether any of the branches from that class of instance should be traversed, and if so, whether all of the branches will be traversed, or whether the selection parameters for that type will be evaluated. 5.3.3.78 General_Hierarchy_Select provides more details.

No order parameters are provided for a <DRM Animation Related Geometry> instance because the traversal order of a <DRM Aggregate Feature> object or <DRM Aggregate Geometry> is already specified by the DRM. The frames of an animation are ordered and that ordering is the order in which the frames shall be traversed.

The lod_traversal_order field specifies the order when traversing an LOD aggregation:

Ascending Order:

Distance:                       Branches with lower minimum ranges shall be first.

Index:                            Branches with lower indices shall be first.

Map scale:                     Branches with lower minimum scales shall be first.

Spatial resolution:           Branches with lower spatial resolution shall be first.

Volume:                         Volumes that occupy less volume shall be first.

Descending Order:

Distance:                       Branches with higher minimum ranges shall be first.

Index:                            Branches with higher indices shall be first.

Map scale:                     Branches with higher minimum scales shall be first.

Spatial resolution:           Branches with higher spatial resolution shall be first.

Volume:                         Volumes that occupy more volume shall be first.

Unspecified:

An arbitrary traversal order shall be used.

The octant_traversal_order and quadrant_traversal_order fields specify the order when traversing octant and quadrant organizations, respectively:

Ascending Order:

Traversal is in the order of the enumerants as specified in 5.2.6.16 Octant and 5.2.6.19 Quadrant, respectively.

Descending Order:

Traversal is in the inverse order of the enumerants as specified in 5.2.6.16 Octant and 5.2.6.19 Quadrant, respectively.

Unspecified:

An arbitrary traversal order shall be used

The separating_plane_traversal_order field specifies the order when traversing separating plane organized aggregations:

Ascending Order:

False branches shall be traversed first.

Descending Order:

True branches shall be traversed first.

Unspecified:

An arbitrary traversal order shall be used.

The time_traversal_order field specifies the order when traversing time organized aggregations:

Ascending Order:

<DRM Time Interval>:   Branches with earlier start_times shall be first.

<DRM Time Point>:      Branches with earlier times shall be first. All Exercise relative times will are considered to be earlier than all GMT and Reference Relative times. All GMT and Relative Reference times will be compared appropriately to each other.

<DRM Season>:              Order based on the Season data type.

<DRM Time Of Day>:     Order based on the Time_Of_Day data type.

Descending Order:

<DRM Time Interval>:  Branches with later start_times shall be first.

<DRM Time Point>:      Branches with later times shall be first.

<DRM Season>:             Order based on the Season data type.

<DRM Time Of Day>:    Order based on the Time_Of_Day data type.

Unspecified:

An arbitrary traversal order shall be taken.

No parameters are specified for dealing with a <DRM Perimeter Related Geometry> or <DRM Perimeter Related Features> instance. If the order of traversal is important, the use of multiple iterators, each with a different spatial search boundary, should be specified.

No ordering is allowable for traversing <DRM Continuous LOD Related Geometry> instances.

No ordering parameters are required for components of a union object as these components are already ordered by the DRM.

For all other subclasses of <DRM Aggregate Feature> and <DRM Aggregate Geometry> aggregations, see the specifications for the appropriate subclasses.

Hierarchy_Order_Parameters ::= {
   general_hierarchy_mask                General_Hierarchy_Order;
   alternate_hierarchy_traversal_order   Alternate_Hierarchy_Parameters;
   classification_traversal_order        Classification_Parameters;
   lod_traversal_order                   Sibling_Traversal_Order;
   octant_traversal_order                Sibling_Traversal_Order;
   quadrant_traversal_order              Sibling_Traversal_Order;
   separating_plane_traversal_order      Sibling_Traversal_Order;
   spatial_index_general_traversal_order Sibling_Traversal_Order;
   state_traversal_order                 State_Data_Fields;
   time_traversal_order                  Sibling_Traversal_Order;
}

5.3.3.87 Hierarchy_Select_Parameters

The Hierarchy_Select_Parameters data type determines which branches to traverse from a <DRM Aggregate Feature> instance or <DRM Aggregate Geometry> instance encountered by a component iterator. These parameters determine which branch will be followed based on the field values of the link object attached to that branch.

If a certain type of aggregate object is not given any selection controls, all of the components of that type of aggregate object will be traversed whenever an aggregate object of that type is encountered.

The general_hierarchy_mask field specifies whether any of the branches from that class of instance should be traversed, and if so, whether all of the branches will be traversed, or whether the selection parameters for that type will be evaluated. 5.3.3.78 General_Hierarchy_Select provides more details.

No parameters are specified for dealing with a <DRM Perimeter Related Geometry> instance.  By default, all components of a <DRM Perimeter Related Geometry> instance shall be traversed unless perimeter related is masked out by a FALSE value in the general_hierarchy_mask. In that case, none of the components of a <DRM Perimeter Related Geometry> instance shall be searched. In order to selectively limit the components traversed from a <DRM Perimeter Related Geometry> instance, a Spatial_Search_Boundary may be specified when initializing the component iterator.

All components of a union instance are always traversed unless that type of union is masked out by a FALSE value in the general_hierarchy_mask parameter. In that case, none of the components for that type of union are traversed.

For all other subclasses of <DRM Aggregate Feature> and <DRM Aggregate Geometry> aggregations, see the specifications for the appropriate xxx_Parameters data types.

Hierarchy_Select_Parameters ::= {
   general_hierarchy_mask         General_Hierarchy_Select;
   alternate_hierarchy_branches   Alternate_Hierachy_Parameters;
   animation_branches             Animation_Select_Parameters;
   classification_branches        Classification_Parameters;
   continuous_lod_branches        Continuous_LOD_Select_Parameters;
   lod_branches;                  LOD_Select_Parameters;
   octant_branches;               Octant_Select_Parameters;
   quadrant_branches              Quadrant_Select_Parameters;
   separating_plane_branches      Separating_Plane_Select_Parameters;
   spatial_index_branches         Spatial_Index_Parameters;
   state_branches                 State_Select_Parameters;
   time_branches                  Time_Select_Parameters;
}

5.3.3.88 Hierarchy_Summary_Item_Fields

The Hierarchy_Summary_Item_Fields data type encapsulates the field elements of the <DRM Hierarchy Summary Item> class.

Hierarchy_Summary_Item_Fields ::= {
   drm_class                      DRM_Class;
   multiplicity_meaning           Hierarchy_Summary_Multiplicity_Code;
   multiplicity                   Integer_Unsigned;
}

5.3.3.89 HSV_Colour_Control_Link_Fields

The HSV_Colour_Control_Link_Fields data type encapsulates the field elements of the <DRM HSV Colour Control Link> class.

HSV_Colour_Control_Link_Fields ::= {
   description                    String;
   hue_expression_index           Integer_Unsigned;
   saturation_expression_index    Integer_Unsigned;
   value_expression_index         Integer_Unsigned;
}

5.3.3.90 HSV_Colour_Fields

The HSV_Colour_Fields data type encapsulates the field elements of the <DRM HSV Colour> class.

HSV_Colour_Fields ::= {
   hsv_data                       HSV_Data;
}

5.3.3.91 HSV_Data

The HSV_Data data type specifies colour data for the HSV colour model.

hue is the angle in degrees about the HSV hexcone where 0 degrees represents red, 120 degrees represents green, and 240 degrees represents blue. saturation is a number from 0,0 to 1,0 (0 percent to 100 percent) indicating the proportion of saturation with white. value is a number from 0,0 to 1,0 representing the brightness of the colour being depicted from dimmest to brightest.

HSV_Data ::= {
   hue                            Long_Float;
   saturation                     Long_Float;
   value                          Long_Float;
}

5.3.3.92 Identification_Fields

The Identification_Fields data type encapsulates the field elements of the <DRM Identification> class.

Identification_Fields ::= {
   abstract                       String;
   purpose                        String;
   credit_count                   Short_Integer_Unsigned;
   credit                         String[credit_count];
   supplemental_information       String;
}

5.3.3.93 Image_Anchor_Fields

The Image_Anchor_Fields data type encapsulates the field elements of the <DRM Image Anchor> class.

Image_Anchor_Fields ::= {
   srf_context_info               SRF_Context_Info;
}

5.3.3.94 Image_Data

The Image_Data data type specifies the data to be sent to the PutImageData function and/or returned from the GetImageData function.

Image_Data ::= {
   data_count                     Integer_Unsigned;
   data                          Octet[data_count];
}

5.3.3.95 Image_Fields

The Image_Fields data type encapsulates the field elements of the <DRM Image> class.

Image_Fields ::= {
   name                                  String;
   colour_model                          Colour_Model;
   level_count                           Short_Integer_Positive;
   mip_extents_array                     Image_Mip_Extents[level_count];
   image_signature                       Image_Signature;
   scan_direction                        Image_Scan_Direction;
   scan_direction_z                      Image_Scan_Direction_Z
   component_data_type                   Image_Component_Type;
   data_is_little_endian                 Boolean;
   data_is_3D                            Boolean;
   bits_of_alpha                         Short_Integer_Unsigned;
   bits_of_luminance                     Short_Integer_Unsigned;
   bits_of_colour_coordinate_1           Short_Integer_Unsigned;
   bits_of_colour_coordinate_2           Short_Integer_Unsigned;
   bits_of_colour_coordinate_3           Short_Integer_Unsigned;
   bits_of_bump_map_height               Short_Integer_Unsigned;
   bits_of_material_1                    Short_Integer_Unsigned;
   bits_of_material_2                    Short_Integer_Unsigned;
   bits_of_material_3                    Short_Integer_Unsigned;
   bits_of_material_2_percentage         Short_Integer_Unsigned;
   bits_of_material_3_percentage         Short_Integer_Unsigned;
   bits_of_image_index                   Short_Integer_Unsigned;
   bits_of_bump_map_u                    Short_Integer_Unsigned,
   bits_of_bump_map_v                    Short_Integer_Unsigned,
   minimum_value_of_alpha                Float;
   maximum_value_of_alpha                Float;
   minimum_value_of_luminance            Float;
   maximum_value_of_luminance            Float;
   minimum_value_of_colour_coordinate_1  Float;
   maximum_value_of_colour_coordinate_1  Float;
   minimum_value_of_colour_coordinate_2  Float;
   maximum_value_of_colour_coordinate_2  Float;
   minimum_value_of_colour_coordinate_3  Float;
   maximum_value_of_colour_coordinate_3  Float;
   minimum_value_of_bump_map_height      Float;
   maximum_value_of_bump_map_height      Float;
   minimum_value_of_bump_map_u           Float;
   maximum_value_of_bump_map_u           Float;
   minimum_value_of_bump_map_v           Float;
   maximum_value_of_bump_map_v           Float;
}

5.3.3.96 Image_Mapping_Function_Fields

The Image_Mapping_Function_Fields data type encapsulates the field elements of the <DRM Image Mapping Function> class.

Image_Mapping_Function_Fields ::= {
   image_mapping_method           Image_Mapping_Method;
   image_wrap_s                   Image_Wrap;
   image_wrap_t                   Image_Wrap;
   image_projection_type          Image_Projection_Type;
   intensity_level                Long_Float;
   gain                           Long_Float;
   image_detail_mapping           Boolean;
}

5.3.3.97 Image_MIP_Extents

The Image_MIP_Extents data type specifies the number of, and information about, texels in a single MIP level of a <DRM Image> instance.

An array of Image_MIP_Fields is used to define the number of texels at each MIP level of a <DRM Image> instance. The information provided in records of this type include the number of horizontal texels (i.e., a row) in the <DRM Image> instance for a particular level, the number of vertical texels (i.e., a column) in the <DRM Image> instance for a particular level, and the number of texels in the third dimension in the <DRM Image> instance for a particular level. This z value shall be at least one. By definition, a two-dimensional <DRM Image> instance has exactly one texel in the z dimension.

Image_MIP_Extents ::= {
   size_horizontal                Integer_Positive;
   size_vertical                  Integer_Positive;
   size_z                         Integer_Positive;
}

5.3.3.98 Image_Texel_Location_3D

The Image_Texel_Location_3D data type specifies a particular texel within a 3D image.

Image_Texel_Location_3D ::= {
   horizontal                     Short_Integer_Unsigned;
   vertical                       Short_Integer_Unsigned;
   z                              Short_Integer_Unsigned;
}

5.3.3.99 In_Out_Fields

The In_Out_Fields data type encapsulates the field elements of the <DRM In Out> class.

In_Out_Fields ::= {
   input                          Boolean;
}

5.3.3.100 Index_LOD_Data_Fields

The Index_LOD_Data_Fields data type encapsulates the field elements of the <DRM Index LOD Data> class.

Index_LOD_Data_Fields ::= {
   index                          Integer_Positive;
}

5.3.3.101 Index_Range

The Index_Range data type specifies the first and last bounds of a range of indices.

Index_Range ::= {
   first_index                    Integer_Unsigned;
   last_index                     Integer_Unsigned;
}

5.3.3.102 Infinite_Light_Fields

The Infinite_Light_Fields data type encapsulates the field elements of the <DRM Infinite Light> class.

Infinite_Light_Fields ::= {
   apply_to_children              Boolean;
   override_positional_lights     Boolean;
   override_infinite_lights       Boolean;
   active_light_value             Boolean;
}

5.3.3.103 Inline_Colour_Fields

The Inline_Colour_Fields data type encapsulates the field elements of the <DRM Inline Colour> class.

Inline_Colour_Fields ::= {
   colour_mapping                 Colour_Mapping;
}

5.3.3.104 Integer_Interval_Value

The Integer_Interval_Value variant record data type specifies an integer interval value for the type of interval determined  by interval_type.

Integer_Interval_Value ::= (interval_type Interval_Type) {
[
   OPEN_INTERVAL:        open_interval       EDCS_
Integer_Interval;
   GE_LT_INTERVAL:       ge_lt_interval      EDCS_
Integer_Interval;
   GT_LE_INTERVAL:       gt_le_interval      EDCS_
Integer_Interval;
   CLOSED_INTERVAL:      closed_interval     EDCS_
Integer_Interval;
   GT_SEMI_INTERVAL:     gt_semi_interval    EDCS_
Integer;
   GE_SEMI_INTERVAL:     ge_semi_interval    EDCS_
Integer;
   LT_SEMI_INTERVAL:     lt_sem_interval     EDCS_
Integer;
   LE_SEMI_INTERVAL:     le_semi_interval    EDCS_
Integer;
]}

5.3.3.105 Interface_Template_Fields

The Interface_Templace_Fields data type encapsulates the field elements of the <DRM Interface Template> class.

Interface_Template_Fields ::= {
   description                    String;
}

5.3.3.106 Interval_Axis_Fields

The Interval_Axis_Fields data type encapsulates the field elements of the <DRM Interval Axis> class.

Interval_Axis_Fields ::= {
   axis_type                      EDCS_Attribute_Code;
   axis_value_count               Short_Integer_Positive;
   axis_interval_value_array      Interval_Value[axis_value_count];
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Unit_Scale_Code;
}

5.3.3.107 Interval_Value

The Interval_Value variant record data type specifies a single interval value of a supported EDCS data type.

This variant record type is used to represent cells in <DRM Data Table> instances, values in <DRM Property Value> instances, axis values in <DRM Interval Axis> instances, and the values specified by <DRM Literal> instances. The value type variant indicates the currently valid field of all of the legal types of values for a <DRM Property Value> or <DRM Data Table>.

Interval_Value ::= (value_type Interval_Value_Type) {
[
  REAL:        real_value         Long_Float_Interval_Value;
  INTEGER:     integer_value      Integer_Interval_Value;
  COUNT:       count_value        Count_Interval_Value;
]}

5.3.3.108 Irregular_Axis_Fields

The Irregular_Axis_Fields data type encapsulates the field elements of the <DRM Irregular Axis> instance.

Irregular_Axis_Fields ::= {
   axis_type                      EDCS_Attribute_Code;
   axis_value_count               Short_Integer_Positive;
   axis_value_array               Single_Value[axis_value_count];
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Unit_Scale_Code;
   interpolation_type             Interpolation_Type;
}

5.3.3.109 Keywords_Fields

The Keywords_Fields data type encapsulates the field elements of the <DRM Keywords> class. Each element of the keyword_array provides a list of synonyms for a single keyword. The array provides for multiple keywords to be specified by a single <DRM Keywords> object.

Keywords_Fields ::= {
   keyword_count                  Short_Integer_Positive;
   keyword_array                  String[keyword_count];
   type                           MD_KeywordTypeCode;
}

5.3.3.110 LCC_Augmented_3D_Location_Fields

The LCC_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM LCC Augmented 3D Location> class.

LCC_Augmented_3D_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.111 LCC_Surface_Location_Fields

The LCC_Surface_Location_Fields data type encapsulates the field elements of the <DRM LCC Surface Location> class.

LCC_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.112 LCE_3D_Location_Fields

The LCE_3D_Location_Fields data type encapsulates the field elements of the <DRM LCE 3D Location> class.

LCE_3D_Location_Fields ::= {
   coordinate                     SRM_Euclidean_3D_Coordinate;
}

5.3.3.113 Legal_Constraints_Fields

The Legal_Constraints_Fields data type encapsulates the field elements of the <DRM Legal Constraints> class.

Legal_Constraints_Fields ::= {
   use_limitation_count           Short_Integer_Unsigned;
   use_limitation                String[use_limitation_count];
   access_constraints             MD_RestrictionCode;
   use_constraints               MD_RestrictionCode;
   other_constraints             String;
}

5.3.3.114 Light_Rendering_Properties_Control_Link_Fields

The Light_Rendering_Properties_Control_Link_Fields data type encapsulates the field elements of the <DRM Light Rendering Properties Control Link> class.

Light_Rendering_Properties_Control_Link_Fields ::= {
   description                    String;
   active_expression_index        Integer_Unsigned;
   candela_value_expression_index Integer_Unsigned;
   lower_candela_value_index      Integer_Unsigned;
   upper_candela_value_index      Integer_Unsigned;
}

5.3.3.115 Light_Rendering_Properties_Fields

The Light_Rendering_Properties_Fields data type encapsulates the field elements of the <DRM Light Rendering Properties> class.

Light_Rendering_Properties_Fields ::= {
   display_type                   Point_Light_Display_Type;
   light_diameter                 Long_Float;
   light_extinguishing_range      Long_Float;
   random_area_light              Boolean;
   active_light_value             Boolean;
   candela_value                  Long_Float;
}

5.3.3.116 Light_Source_Control_Link_Fields

The Light_Source_Control_Link_Fields data type encapsulates the field elements of the <DRM Light Source Control Link> class.

Light_Source_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
}

5.3.3.117 Light_Source_Fields

The Light_Source_Fields data type encapsulates the field elements of the <DRM Light Source> class.

Light_Source_Fields ::= {
   apply_to_children              Boolean;
   override_positional_lights     Boolean;
   override_infinite_lights       Boolean;
   active_light_value             Boolean;
}

5.3.3.118 Line_Fields

The Line_Fields data type encapsulates the field elements of the <DRM Line> class.

Line_Fields ::= {
   count                          Short_Integer_Unsigned;
   suppress_last                  Boolean;
}

5.3.3.119 Lineage_Fields

The Lineage_Fields data type encapsulates the field elements of the <DRM Lineage> class.

Lineage_Fields ::= {
   statement                      String;
}

5.3.3.120 Linear_Geometry_Fields

The Linear_Geometry_Fields data type encapsulates the field elements of the <DRM Linear Geometry> class.

Linear_Geometry_Fields ::= {
   count                          Short_Integer_Unsigned;
   suppress_last                  Boolean;
}

5.3.3.121 Literal_Fields

The Literal_Fields data type encapsulates the field elements of the <DRM Literal> class.

Literal_Fields ::= {
   value                          Single_Value;
}

5.3.3.122 Lobe_Data_Fields

The Lobe_Data_Fields data type encapsulates the field elements of the <DRM Lobe Data> class.

This DRM class describes a cone or a pyramid shape of a directional light (a lobe). The horizontal_width parameter specifies the horizontal lobe width in radians with range [0,0, 2π).  The vertical_width parameter specifies the vertical lobe width in radians with range [0,0, 2π).

Lobe_Data_Fields ::= {
   horizontal_width               Long_Float;
   vertical_width                 Long_Float;
}

5.3.3.123 Local_4x4_Fields

The Local_4x4_Fields data type encapsulates the field elements of the <DRM Local 4x4> class.

Local_4x4_Fields ::= {
   matrix                         Matrix_4x4;
}

5.3.3.124 Locale

The Locale data type specifies the country and language information related to a text string.

The language field uses the two-character codes specified in ISO 639. The country field uses the three-character codes specified in ISO 3166. Both the two-character language codes and the three-character country codes are defined using the character set specified in ISO/IEC 646.

Locale ::= {
   language                Character[2];
   country                 Character[3];
}

5.3.3.125 LOD_Entry

The LOD_Entry variant record data type specifies the parameters for iterating over an LOD by specifying the control values for such a search.

LOD_Entry ::= (lod_entry_type  LOD_Data_Type) {
[
  DISTANCE:           distance           Distance_LOD_Data_Fields;
  INDEX:              index              Spatial_Index_LOD_Data_Fields;
  MAP_SCALE:          map_scale          Map_Scale_LOD_Data_Fields;
  SPATIAL_RESOLUTION: spatial_resolution Spatial_Resolution_LOD_Data_Fields;
  VOLUME:             volume             Volume_LOD_Entry;
]}

5.3.3.126 LOD_Related_Features_Fields

The LOD_Related_Features_Fields data type encapsulates the field elements of the <DRM LOD Related Features> class.

LOD_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   lod_data_type                  LOD_Data_Type;
}

5.3.3.127 LOD_Related_Geometry_Fields

The LOD_Related_Geometry_Fields data type encapsulates the field elements of the <DRM LOD Related Geometry> class.

LOD_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   lod_data_type                  LOD_Data_Type;
}

5.3.3.128 LOD_Select_Parameters

The LOD_Select_Parameters data type selects which branches to traverse from a <DRM LOD Related Features> or <DRM LOD Related Geometry> instance when encountered by a component iterator.

All branches with a <DRM Base LOD Data> link object with values matching the ranges specified in the lod_entry_array shall be traversed.

If no rules are provided for the type of instance of <DRM Base LOD Data> of the branch in question, the branch shall be traversed.

EXAMPLE  If a branch is marked with distance data, but only index search values are provided, the distance branch shall be taken.

When no search rules for a certain type of instance of <DRM Base LOD Data> are specified, all values for that type of data shall be considered valid.

LOD_Select_Parameters ::= {
   matching_rules                 Branch_Range_Matching;
   lod_entry_count                Integer_Unsigned;
   lod_entry_array                LOD_Entry[lod_entry_count];
}

5.3.3.129 Long_Float_Interval_Value

The Long_Float_Interval_Value variant record data type specifies a long float interval value for the type of interval determined  by interval_type.

Long_Float_Interval_Value ::= (interval_type Interval_Type) {
[
   OPEN_INTERVAL:     open_interval     
EDCS_Long_Float_Interval;
   GE_LT_INTERVAL:    ge_lt_interval   
EDCS_Long_Float_Interval;
   GT_LE_INTERVAL:    gt_le_interval   
EDCS_Long_Float_Interval;
   CLOSED_INTERVAL:   closed_interval  
EDCS_Long_Float_Interval;
   GT_SEMI_INTERVAL:  gt_semi_interval  EDCS_
Long_Float;
   GE_SEMI_INTERVAL:  ge_semi_interval  EDCS_
Long_Float;
   LT_SEMI_INTERVAL:  lt_semi_interval  EDCS_
Long_Float;
   LE_SEMI_INTERVAL:  le_semi_interval  EDCS_
Long_Float;
]}

5.3.3.130 Long_Float_Value

The Long_Float_Value variant record data type specifies a long float value for the type of numeric value determined  by EDCS_Numeric_Value_Type. This data type is used instead of EDCS_Long_Float_Value as specified in 9.2.5.5 Single values and value intervals of ISO/IEC 18025 to avoid unnecessary replication of unit_code and unit_scale field information when creating lists of floating point attribute values. In these cases, unit_code and unit_scale information shall be specified elsewhere in the provided data.

Long_Float_Value ::= (numeric_value_type EDCS_Numeric_Value_Type) {
[
   SINGLE_VALUE:      single_value      EDCS_
Long_Float;
   OPEN_INTERVAL:     open_interval     
EDCS_Long_Float_Interval;
   GE_LT_INTERVAL:    ge_lt_interval   
EDCS_Long_Float_Interval;
   GT_LE_INTERVAL:    gt_le_interval   
EDCS_Long_Float_Interval;
   CLOSED_INTERVAL:   closed_interval  
EDCS_Long_Float_Interval;
   GT_SEMI_INTERVAL:  gt_semi_interval  EDCS_
Long_Float;
   GE_SEMI_INTERVAL:  ge_semi_interval  EDCS_
Long_Float;
   LT_SEMI_INTERVAL:  lt_semi_interval  EDCS_
Long_Float;
   LE_SEMI_INTERVAL:  le_semi_interval  EDCS_
Long_Float;
]}

5.3.3.131 LSA_2D_Location_Fields

The LSA_2D_Location_Fields data type encapsulates the field elements of the <DRM LSA 2D Location> class.

LSA_2D_Location_Fields ::= {
   coordinate                     SRM_LSA_2D_Coordinate;
}

5.3.3.132 LSP_2D_Location_Fields

The LSP_2D_Location_Fields data type encapsulates the field elements of the <DRM LSP 2D Location> class.

LSP_2D_Location_Fields ::= {
   coordinate                     SRM_LSP_2D_Coordinate;
}

5.3.3.133 LSR_2D_Location_Fields

The LSR_2D_Location_Fields data type encapsulates the field elements of the <DRM LSR 2D Location> class.

LSR_2D_Location_Fields ::= {
   coordinate                     SRM_Euclidean_2D_Coordinate;
}

5.3.3.134 LSR_3D_Location_Control_Link_Fields

The LSR_3D_Location_Control_Link_Fields data type encapsulates the field elements of the <DRM LSR 3D Location Control Link> class.

LSR_3D_Location_Control_Link_Fields ::= {
   description                    String;
   u_expression_index             Integer_Unsigned;
   v_expression_index             Integer_Unsigned;
   w_expression_index             Integer_Unsigned;
}

5.3.3.135 LSR_3D_Location_Fields

The LSR_3D_Location_Fields data type encapsulates the field elements of the <DRM LSR 3D Location> class.

LSR_3D_Location_Fields ::= {
   coordinate                     SRM_Euclidean_3D_Coordinate;
}

5.3.3.136 LTSAS_3D_Location_Fields

The LTSAS_3D_Location_Fields data type encapsulates the field elements of the <DRM LTSAS 3D Location> class.

LTSAS_3D_Location_Fields ::= {
   coordinate                     SRM_LTSAS_3D_Coordinate;
}

5.3.3.137 LTSAS_Surface_Location_Fields

The LTAS_Surface_Location_Fields data type encapsulates the field elements of the <DRM LTSAS Surface Location> class.

LTSAS_Surface_Location_Fields ::= {
   coordinate                     SRM_LTSAS_Surface_Coordinate;
}

5.3.3.138 LTSC_3D_Location_Fields

The LTSC_3D_Location_Fields data type encapsulates the field elements of the <DRM LTSC 3D Location> class.

LTSC_3D_Location_Fields ::= {
   coordinate                     SRM_LTSC_3D_Coordinate;
}

5.3.3.139 LTSC_Surface_Location_Fields

The LTSC_Surface_Location_Fields data type encapsulates the field elements of the <DRM LTSC Surface Location> class.

LTSC_Surface_Location_Fields ::= {
   coordinate                     SRM_LTSC_Surface_Coordinate;
}

5.3.3.140 LTSE_3D_Location_Fields

The LTSE_3D_Location_Fields data type encapsulates the field elements of the <DRM LTSE 3D Location> class.

LTSE_3D_Location_Fields ::= {
   coordinate                     SRM_LTSE_3D_Coordinate;
}

5.3.3.141 LTSE_Surface_Location_Fields

The LTSE_Surface_Location_Fields data type encapsulates the field elements of the <DRM LTSE Surface Location> class.

LTSE_Surface_Location_Fields ::= {
   coordinate                     SRM_LTSE_Surface_Coordinate;
}

5.3.3.142 M_Augmented_3D_Location_Fields

The M_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM M Augmented 3D Location> class.

M_Augmented_3D_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.143 M_Surface_Location_Fields

The M_Surface_Location_Fields data type encapsulates the field elements of the <DRM M Surface Location> class.

M_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.144 Map_Scale_LOD_Data_Fields

The Map_Scale_LOD_Data_Fields data type encapsulates the field elements of the <DRM Map Scale LOD Data> class.

Map_Scale_LOD_Data_Fields ::= {
   map_scale                      Long_Float;
}

5.3.3.145 Mesh_Face_Table_Fields

The Mesh_Face_Table_Fields data type encapsulates the field elements of the <DRM Mesh Face Table> class.

Mesh_Face_Table_Fields ::= {
   mesh_face_count                Integer_Positive;
   maximum_vertices_per_face      Integer_Positive;
   adjacent_face_table_present    Boolean;
}

5.3.3.146 Model_Fields

The Model_Fields data type encapsulates the field elements of the <DRM Model> class.

Model_Fields ::= {
   name                           String;
   srf_context_info               SRF_Context_Info;
   model_reference_type           Model_Reference_Type;
   dynamic_model_processing       Boolean;
   has_units                      Boolean;
   has_moving_parts               Boolean;
}

5.3.3.147 Model_Instance_Template_Index_Fields

The Model_Instance_Template_Index_Fields data type encapsulates the field elements of the <DRM Model Instance Template Index> class.

Model_Instance_Template_Index_Fields ::= {
   index                          Integer_Positive;
}

5.3.3.148 Moving_Light_Behaviour_Fields

The Moving_Light_Behaviour_Fields data type encapsulates the field elements of the <DRM Moving Light Behaviour> class.

Moving_Light_Behaviour_Fields ::= {
   speed                          Long_Float;
   delay                          Long_Float;
}

5.3.3.149 Octant_Data_Fields

The Octant_Data_Fields data type encapsulates the field elements of the <DRM Octant Data> class.

Octant_Data_Fields ::= {
   octant                         Octant;
}

5.3.3.150 Octant_Related_Features_Fields

The Octant_Related_Features_Fields data type encapsulates the field elements of the <DRM Octant Related Features> class.

Octant_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.151 Octant_Related_Geometry_Fields

The Octant_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Octant Related Geometry> class.

Octant_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.152 Octant_Select_Parameters

The Octant_Select_Parameters data type selects which branches to traverse from a <DRM Octant Related Features> or <DRM Octant Related Geometry> instance when encountered by a component iterator.

Each branch with a link object whose field values match one of the entries contained in this record data type shall be traversed.

Octant_Select_Parameters ::= {
   octant_data_count              Integer_Unsigned;
   octant_data_array              Octant_Data_Fields[octant_data_count];
}

5.3.3.153 OMS_Augmented_3D_Location_Fields

The OMS_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM OMS Augmented 3D Location> class.

OMS_Augmented_3D_Location_3D_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.154 OMS_Surface_Location_Fields

The OMS_Surface_Location_Fields data type encapsulates the field elements of the <DRM OMS Surface Location> class.

OMS_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.155 Overload_Priority_Index_Fields

The Overload_Priority_Index_Fields data type encapsulates the field elements of the <DRM Overload Priority Index> class.

Overload_Priority_Index_Fields ::= {
   overload_priority              Short_Integer;
}

5.3.3.156 Packed_Hierarchy

The Packed_Hierarchy data type specifies the highest level data returned from 8.3.38 GetPackedHierarchy or 8.3.44 GetRemainingPackedHierarchies.

This record data type represents the entry point in the packed hierarchy.

Packed_Hierarchy ::= {
   hierarchy_root_object Packed_Hierarchy_Object_Access;
   object_count          Integer_Unsigned;
   object_list           Packed_Hierarchy_Object[object_count];
   reference_list_length Integer_Unsigned;
   reference_list        Packed_Hierarchy_Reference[reference_list_length];
}

5.3.3.157 Packed_Hierarchy_Object

The Packed_Hierarchy_Object data type specifies an object in a packed hierarchy.

Packed_Hierarchy_Object ::= {
   this_object           Object;
   components_included   Boolean;
   component_count       Integer_Unsigned;
   components            Packed_Hierarchy_Reference[component_count];
   aggregates_included   Boolean;
   aggregate_count       Integer_Unsigned;
   aggregates            Packed_Hierarchy_Reference[aggregate_count];
   fields                DRM_Class_Fields;
   status                Status_Code;
}

5.3.3.158 Packed_Hierarchy_Reference

The Packed_Hierarchy_Reference data type specifies a reference to an object in a packed hierarchy.

Packed_Hierarchy_Reference ::= {
   object                         Object;
   link_object                    Object;
}

5.3.3.159 Parallelepiped_Volume_Extent_Entry

The Parallelepiped_Volume_Extent_Entry data type specifies a parallelepiped-shaped volume for a <DRM Volume LOD Data> instance.

Parallelepiped_Volume_Extent_Entry ::= {
   parallelepiped                 Parallelepiped_Volume_Extent_Fields;
   reference_vectors              Reference_Vector_Fields[3];
}

5.3.3.160 Parallelepiped_Volume_Extent_Fields

The Parallelepiped_Volume_Extent_Fields data type encapsulates the field elements of the <DRM Parallelepiped Volume Extent> class.

Parallelepiped_Volume_Extent_Fields ::= {
   edge_length                    Long_Float[3];
}

5.3.3.161 PD_3D_Location_Fields

The PD_3D_Location_Fields data type encapsulates the field elements of the <DRM PD_3D_Location> class.

PD_3D_Location_Fields ::= {
   coordinate                     SRM_CD_3D_Coordinate;
}

5.3.3.162 PD_Surface_Location_Fields

The PD_Surface_Location_Fields data type encapsulates the field elements of the <DRM PD_Surface_Location> class.

PD_Surface_Location_Fields ::= {
   coordinate                     CD_Surface_Cooridnate;
}

5.3.3.163 Perimeter_Related_Feature_Topology_Fields

The Perimeter_Related_Feature_Topology_Fields data type encapsulates the field elements of the <DRM Perimeter Related Feature Topology> class.

Perimeter_Related_Feature_Topology_Fields ::= {
   feature_topology_level         Feature_Toplogy_Level;
}

5.3.3.164 Perimeter_Related_Features_Fields

The Perimeter_Related_Features_Fields data type encapsulates the field elements of the <DRM Perimeter Related Features> class.

Perimeter_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.165 Perimeter_Related_Geometry_Fields

The Perimeter_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Perimeter Related Geometry> class.

Perimeter_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.166 Perimeter_Related_Geometry_Topology_Fields

The Perimeter_Related_Geometry_Topology_Fields data type encapsulates the field elements of the <DRM Perimeter Related Geometry Topology> class.

Perimeter_Related_Geometry_Topology_Fields ::= {
   geometry_topology_level        Geometry_Topology_Level;
}

5.3.3.167 Polygon_Control_Link_Fields

The Polygon_Control_Link_Fields data type encapsulates the field elements of the <DRM Polygon Control Link> class.

Polygon_Control_Link_Fields ::= {
   description                             String;
   hat_test_expression_index               Integer_Unsigned;
   collidible_expression_index             Integer_Unsigned;
   invisible_expression_index              Integer_Unsigned;
   laser_range_finding_expression_index    Integer_Unsigned;
}

5.3.3.168 Polygon_Fields

The Polygon_Fields data type encapsulates the field elements of the <DRM Polygon> class.

Polygon_Fields ::= {
   polygon_flags                  Polygon_Flag;
}

5.3.3.169 Positional_Light_Fields

The Positional_Light_Fields data type encapsulates the field elements of the <DRM Positional Light> class.

Positional_Light_Fields ::= {
   apply_to_children              Boolean;
   override_positional_lights     Boolean;
   override_infinite_lights       Boolean;
   active_light_value             Boolean;
   radius                         Float;
   constant_attenuation_factor    Long_Float;
   linear_attenuation_factor      Long_Float;
   quadratic_attenuation_factor   Long_Float;
}

5.3.3.170 Predefined_Function_Fields

The Predefined_Function_Fields data type encapsulates the field elements of the <DRM Predefined Function> class.

Predefined_Function_Fields ::= {
   value_type                     EDCS_Attribute_Value_Type;
   function                       Predefined_Function;
}

5.3.3.171 Presentation_Domain_Fields

The Presentation_Domain_Fields data type encapsulates the field elements of the <DRM Presentation Domain> class.

Presentation_Domain_Fields ::= {
   presentation_domain            Presentation_Domain;
}

5.3.3.172 Primitive_Summary_Item_Fields

The Primitive_Summary_Item_Fields data type encapsulates the field elements of the <DRM Primitive Summary Item> class.

Primitive_Summary_Item_Fields ::= {
   drm_class                      DRM_Class;
   multiplicity                   Integer_Unsigned;
}

5.3.3.173 Process_Step_Fields

The Process_Step_Fields data type encapsulates the field elements of the <DRM Process Step> class.

Process_Step_Fields ::= {
   description                    String;
   rationale                      String;
}

5.3.3.174 Property_Characteristic_Fields

The Property_Characteristic_Fields data type encapsulates the field elements of the <DRM Property Characteristic> class.

Property_Characteristic_Fields ::= {
   meaning                        EDCS_Value_Characteristic_Code;
   characteristic_value           EDCS_Attribute_Value;
}

5.3.3.175 Property_Code

The Property_Code variant record data type specifies a variant for the property code identified by code_type.

Property_Code ::= (code_type Property_Code_Type) {
[
  ATTRIBUTE : attribute           EDCS_Attribute_Code;
  VARIABLE  : variable            Variable_Code;
]}

5.3.3.176 Property_Description_Fields

The Property_Description_Fields data type encapsulates the field elements of the <DRM Property Description> class.

Property_Description_Fields ::= {
   meaning                        Property_Code;
   apply_property_inheritance     Boolean;
}

5.3.3.177 Property_Fields

The Property_Fields data type encapsulates the field elements of the <DRM Property> class.

Property_Fields ::= {
   meaning                        Property_Code;
   apply_property_inheritance     Boolean;
}

5.3.3.178 Property_Grid_Fields

The Property_Grid_Fields data type encapsulates the field elements of the <DRM Property Grid> class.

Property_Grid_Fields ::= {
   spatial_axes_count             Short_Integer_Positive;
   location_index                 Short_Integer[spatial_axes_count];
   srf_context_info               SRF_Context_Info;
   data_present                   Boolean;
   relative_to_hook_point         Boolean;
}

5.3.3.179 Property_Set_Index_Control_Link_Fields

The Property_Set_Index_Control_Link_Fields data type encapsulates the field elements of the <DRM Property Set Index Control Link> class.

Property_Set_Index_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
}

5.3.3.180 Property_Set_Index_Fields

The Property_Set_Index_Fields data type encapsulates the field elements of the <DRM Property Set Index> class.

Property_Set_Index_Fields ::= {
   index                          Integer_Positive;
}

5.3.3.181 Property_Set_Table_Fields

The Property_Set_Table_Fields data type encapsulates the field elements of the <DRM Property Set Table> class.

Property_Set_Table_Fields ::= {
   table_usage                    String;
   regular                        Boolean;
}

5.3.3.182 Property_Set_Table_Group_Fields

The Property_Set_Table_Group_Fields data type encapsulates the field elements of the <DRM Property Set Table Group> class.

Property_Set_Table_Group_Fields ::= {
   primary_table_index            Integer_Positive;
   table_size                     Integer_Positive;
}

5.3.3.183 Property_Table_Reference_Control_Link_Fields

The Property_Table_Reference_Control_Link_Fields data type encapsulates the field elements of the <DRM Property Table Reference Control Link> class.

Property_Table_Reference_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
}

5.3.3.184 Property_Table_Reference_Fields

The Property_Table_Reference_Fields data type encapsulates the field elements of the <DRM Property Table Reference> class.

Property_Table_Reference_Fields ::= {
   axis_type                      EDCS_Attribute_Code;
   index_on_axis                  Integer_Unsigned;
}

5.3.3.185 Property_Value_Fields

The Property_Value_Fields data type encapsulates the field elements of the <DRM Property Value> class.

Property_Value_Fields ::= {
   meaning                        Property_Code;
   apply_property_inheritance     Boolean;
   value                          EDCS_Attribute_Value;
}

5.3.3.186 Proximity_Data_Fields

The Property_Value_Fields data type encapsulates the field elements of the <DRM Proximity Data> class.

Proximity_Data_Fields ::= {
   meaning                        Spatial_Association_Meaning_Type;
   distance                       Long_Float;
}

5.3.3.187 PS_Augmented_3D_Location_Fields

The PS_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM PS Augmented 3D Location> class.

PS_Augmented_3D_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.188 PS_Surface_Location_Fields

The PS_Surface_Location_Fields data type encapsulates the field elements of the <DRM PS Surface Location> class.

PS_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.189 Pseudo_Code_Function_Fields

The Pseudo_Code_Function_Fields data type encapsulates the field elements of the <DRM Pseudo Code Function> class.

Pseudo_Code_Function_Fields ::= {
   value_type                     EDCS_Attribute_Value_Type;
   name                           String;
   pseudo_code                    String;
}

5.3.3.190 Pyramid_Directional_Light_Fields

The Pyramid_Directional_Light_Fields data type encapsulates the field elements of the <DRM Pyramid Directional Light> class.

Pyramid_Directional_Light_Fields ::= {
   use_full_intensity             Boolean;
   minimum_colour_intensity       Long_Float;
   invisible_behind               Boolean;
}

5.3.3.191 Quadrant_Data_Fields

The Quadrant_Data_Fields data type encapsulates the field elements of the <DRM Quadrant Data> class.

Quadrant_Data_Fields ::= {
   quadrant                       Quadrant;
}

5.3.3.192 Quadrant_Related_Features_Fields

The Quadrant_Related_Features_Fields data type encapsulates the field elements of the <DRM Quadrant Related Features> class.

Quadrant_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.193 Quadrant_Related_Geometry_Fields

The Quadrant_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Quadrant Related Geometry> class.

Quadrant_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.194 Quadrant_Select_Parameters

The Quadrant_Select_Parameters data type selects which branches to traverse from a <DRM Quadrant Related Features> or <DRM Quadrant Related Geometry> instance when encountered by a component iterator.

Each branch with a link object whose field values match one of the entries contained in this record data type shall be traversed.

Quadrant_Select_Parameters ::= {
   quadrant_data_count            Integer_Unsigned
   quadrant_data_array            Quadrant_Data_Fields[quadrant_data_count];
}

5.3.3.195 Reference_Origin_Fields

The Reference_Origin_Fields data type encapsulates the field elements of the <DRM Reference Origin> class.

Reference_Origin_Fields ::= {
   srf_context_info               SRF_Context_Info;
}

5.3.3.196 Reference_Surface_Fields

The Reference_Surface_Fields data type encapsulates the field elements of the <DRM Reference Surface> class.

Reference_Surface_Fields ::= {
   classification                 EDCS_Classification_Code;
   multiplicity_rule              Reference_Surface_Elevation_Select;
   lod_rule                       Reference_Surface_LOD_Select;
}

5.3.3.197 Reference_Vector_Control_Link_Fields

The Reference_Vector_Control_Link_Fields data type encapsulates the field elements of the <DRM Reference Vector Control Link> class.

Reference_Vector_Control_Link_Fields ::= {
   description                    String;
   v0_expression_index            Integer_Unsigned;
   v1_expression_index            Integer_Unsigned;
   v2_expression_index            Integer_Unsigned;
}

5.3.3.198 Reference_Vector_Fields

The Reference_Vector_Fields data type encapsulates the field elements of the <DRM Reference Vector> class.

Reference_Vector_Fields ::= {
   unit_vector                    SRM_Vector_3D;
   vector_type                    Reference_Vector_Type;
}

5.3.3.199 Regular_Axis_Fields

The Regular_Axis_Fields data type encapsulates the field elements of the <DRM Regular Axis> class.

Regular_Axis_Fields ::= {
   axis_type                      EDCS_Attribute_Code;
   axis_value_count               Short_Integer_Positive;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Unit_Scale_Code;
   interpolation_type             Interpolation_Type;
   first_value                    Single_Value;
   spacing                        Single_Value;
   spacing_type                   Spacing_Type;
   axis_alignment                 Axis_Alignment;
}

5.3.3.200 Relative_Time_Fields

The Relative_Time_Fields data type encapsulates the field elements of the <DRM Relative Time> class.

The allowable range for delta_hours is [0..23]. The allowable range for delta_minutes is [0..59]. The normal allowable range for delta_seconds is [0,0, 60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0, 61,0).

Relative_Time_Fields ::= {
   time_significance              Time_Significance;
   delta_days                     Integer;
   delta_hours                    Byte_Unsigned;
   delta_minutes                  Byte_Unsigned;
   delta_seconds                  Long_Float;
}

5.3.3.201 Relative_Time_Interval_Fields

The Relative_Time_Interval_Fields data type encapsulates the field elements of the <DRM Relative Time Interval> class.

The allowable range for delta_start_hours and delta_stop_hours is [0..23]. The allowable range for delta_start_minutes and delta_stop_minutes is [0..59]. The normal allowable range for delta_start_seconds and delta_stop_seconds is [0,0, 60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0, 61,0).

Relative_Time_Interval_Fields ::= {
   time_significance              Time_Significance;
   delta_start_days               Integer;
   delta_stop_days                Integer;
   delta_start_hours              Byte_Unsigned;
   delta_stop_hours               Byte_Unsigned;
   delta_start_minutes            Byte_Unsigned;
   delta_stop_minutes             Byte_Unsigned;
   delta_start_seconds            Long_Float;
   delta_stop_seconds             Long_Float;
}

5.3.3.202 Relative_To_Absolute_Time_Interval_Entry

The Relative_To_Absolute_Time_Interval_Entry data type specifies an interval relative to an absolute time reference point.

Relative_To_Absolute_Time_Interval_Entry ::= {
   reference_time                 Absolute_Time_Fields;
   relative_interval              Relative_Time_Interval_Fields;
}

5.3.3.203 Relative_To_Absolute_Time_Entry

The Relative_To_Absolute_Time_Entry data type specifies a time relative to a reference time.

Relative_To_Absolute_Time_Entry ::= {
   reference_time                 Absolute_Time_Fields;
   relative_time                  Absolute_Time_Fields;
}

5.3.3.204 Remaining_Objects_List

The Remaining_Objects_List data type specifies the data objects still to be processed by an iterator.

Remaining_Objects_List ::= {
   object_count                   Integer_Unsigned;
   remaining_objects_list         Object[object_count];
   remaining_link_objects_list    Object[object_count];
   object_status_list             Status_Code[object_count];
   link_object_status_list        Status_Code[object_count];
}

5.3.3.205 Remaining_Packed_Hierarchies_List

The Remaining_Packed_Hierarchies_List data type specifies the packed hierarchy objects still to be processed by an iterator.

Remaining_Objects_List ::= {
   hierarchy_count                Integer_Unsigned;
   hierarchy_list                 Packed_Hierarchy[hierarchy_count];
}

5.3.3.206 Rendering_Priority_Level_Fields

The Rendering_Priority_Level_Fields data type encapsulates the field elements of the <DRM Rendering Priority Level> class.

Rendering_Priority_Level_Fields ::= {
   rendering_group                Short_Integer_Positive;
   rendering_priority             Short_Integer;
}

5.3.3.207 Rendering_Properties_Fields

The Rendering_Properties_Fields data type encapsulates the field elements of the <DRM Rendering Properties> class.

Rendering_Properties_Fields ::= {
   fill_method                    Pixel_Fill_Method;
   shading_method                 Shading_Method;
   colour_binding                 Colour_Binding;
   style                          Display_Style;
   side                           Display_Side;
}

5.3.3.208 Responsible_Party_Fields

The Responsible_Party_Fields data type encapsulates the field elements of the <DRM Responsible Party> class.

Responsible_Party_Fields ::= {
   individual_name                String;
   organization_name              String;
   position_name                  String;
   contact_information            Contact_Information;
}

5.3.3.209 RGB_Colour_Control_Link_Fields

The RGB_Colour_Control_Link_Fields data type encapsulates the field elements of the <DRM RGB Colour Control Link> class.

RGB_Colour_Control_Link_Fields ::= {
   description                    String;
   red_expression_index           Integer_Unsigned;
   green_expression_index         Integer_Unsigned;
   blue_expression_index          Integer_Unsigned;
}

5.3.3.210 RGB_Colour_Fields

The RGB_Colour_Fields data type encapsulates the field elements of the <DRM RGB Colour> class.

RGB_Colour_Fields ::= {
   rgb_data                       RGB_Data;
}

5.3.3.211 RGB_Data

The RGB_Data data type specifies the colour data in the RGB colour model.

red is a number from [0,0, 1,0] (0 percent to 100 percent) indicating the proportion of red contributing to the colour. green is a number from [0,0, 1,0] (0 percent to 100 percent) indicating the proportion of green contributing to the colour. blue is a number from [0,0, 1,0] (0 percent to 100 percent) indicating the proportion of blue contributing to the colour.

RGB_Data ::= {
   red                            Long_Float;
   green                          Long_Float;
   blue                           Long_Float;
}

5.3.3.212 Role_Data_Fields

The Role_Data_Fields data type encapsulates the field elements of the <DRM Role_Data> class.

Role_Data_Fields ::= {
   role                           CI_RoleCode;
}

5.3.3.213 Rotating_Light_Behaviour_Fields

The Rotating_Light_Behaviour_Fields data type encapsulates the field elements of the <DRM Rotating Light Behaviour> class.

Rotation_Light_Behaviour_Fields ::= {
   period                         Long_Float;
}

5.3.3.214 Rotation_Control_Link_Fields

The Rotation_Control_Link_Fields data type encapsulates the field elements of the <DRM Rotation Control Link> class.

Rotation_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.215 Rotation_Data

The Rotation_Data data type specifies angular limits, in radians, including POSITIVE_INFINITY and NEGATIVE_INFINITY as legal values.

Rotation_Data ::= {
   counterclockwise_limit         Long_Float;
   clockwise_limit                Long_Float;
}

5.3.3.216 Rotation_Fields

The Rotation_Fields data type encapsulates the field elements of the <DRM Rotation> class.

Rotation_Fields ::= {
   axis                           LSR_Transformation_Axis;
   angle                          Long_Float;
}

5.3.3.217 Scale_Control_Link_Fields

The Scale_Control_Link_Fields data type encapsulates the field elements of the <DRM Scale Control Link> class.

Scale_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.218 Scale_Fields

The Scale_Fields data type encapsulates the field elements of the <DRM Scale> class.

Scale_Fields ::= {
   axis                           LSR_Transformation_Axis;
   scale_factor                   Long_Float;
}

5.3.3.219 Search_Bounds

The Search_Bounds data type specifies the geometric limits of a spatial search in the form of boundary values that are passed to 8.3.8 CreateSpatialSearchBoundary.

The minimum_point and maximum_point shall both be specified in the SRF context of the environment within which the search is to take place. The Search_Bounds data is passed to 8.3.8 CreateSpatialSearchBoundary.

Search_Bounds ::= {
   minimum_point                  SRM_Coordinate;
   maximum_point                  SRM_Coordinate;
}

5.3.3.220 Search_Rule

The Search_Rule data type specifies a single rule in a set of rules that can then be used to create a search filter.

A search filter uses its associated set of rules to filter objects so that only objects that pass the rules will be returned to the user (see 5.4.2 Iterator and 5.4.6 Search_Filter for more details.)

A set of search rules is specified using an array of type Search_Rule, containing a well-formed postfix notation expression, ending with a Search_Rule entry with a rule_type value of END. The sequence of Search_Rule instances forms a reverse Polish notation (RPN) logic evaluation stack.

A dynamically created search requires the user to create a rules array and fill in the array with a well-formed postfix notation expression and ending with a Search_Rule entry with a rule_type value of END.

Search_Rule ::= (rule_type Search_Rule_Type) {
  END:
  AND:
  OR:
  NOT:
  OBJECT_AND:              unused                  Unused_Fields;
  PREDICATE:               predicate               Search_Rule_Predicate;
  DRM_CLASS:               drm_class               DRM_Class;
  FIELD:                   field                   Search_Rule_Field;
  FIELD_RANGE:             field_range             Search_Rule_Field_Range;
  FIELD_ARRAY:             field_array             Search_Rule_Field_Array;
  COMPONENT:               component               Search_Rule_Component;
  COMPONENT_FIELD:         component_field         Search_Rule_Component_Field;
  COMPONENT_FIELD_RANGE:   component_field_range
                                             Search_Rule_Component_Field_Range;
  COMPONENT_FIELD_ARRAY:   component_field_array
                                             Search_Rule_Component_Field_Array;
  ASSOCIATE:               associate               DRM_Class;
  MAX_SEARCH_DEPTH:        max_search_depth        Short_Integer_Unsigned;
}

5.3.3.221 Search_Rule_Component

The Search_Rule_Component data type specifies the parameters for a Search_Rule of type COMPONENT

Search_Rule_Component ::= {
   drm_class               DRM_Class;
   component_drm_class     DRM_Class;
}

5.3.3.222 Search_Rule_Component_Field

The Search_Rule_Component_Field data type specifies the parameters for a Search_Rule of type COMPONENT_FIELD.

Search_Rule_Component_Field ::= {
   drm_class                      DRM_Class;
   component_drm_class            DRM_Class;
   field_ordinal                  Short_Integer_Unsigned;
   value                          Any_Search_Value;
}

5.3.3.223 Search_Rule_Component_Field_Array

The Search_Rule_Component_Field_Array data type specifies the parameters for a Search_Rule of type COMPONENT_FIELD_ARRAY.

Search_Rule_Component_Field_Array ::= {
   drm_class                      DRM_Class;
   component_drm_class            DRM_Class;
   field_ordinal                  Short_Integer_Unsigned;
   array_size                     Short_Integer_Positive
   value_array                    Any_Search_Value[array_size];
}

5.3.3.224 Search_Rule_Component_Field_Range

The Search_Rule_Component_Field_Range data type specifies the parameters for a Search_Rule of type COMPONENT_FIELD_RANGE.

Search_Rule_Component_Field_Range ::= {
   drm_class                      DRM_Class;
   component_drm_class            DRM_Class;
   field_ordinal                  Short_Integer_Unsigned;
   value                          Any_Search_Value;
   second_value                   Any_Search_Value;
}

5.3.3.225 Search_Rule_Field

The Search_Rule_Field data type specifies the parameters for a Search_Rule of type FIELD.

Search_Rule_Field ::= {
   drm_class                      DRM_Class;
   value                          Any_Search_Value;
   field_ordinal                  Short_Integer_Unsigned;
}

5.3.3.226 Search_Rule_Field_Array

The Search_Rule_Field_Array data type specifies the parameters for a Search_Rule of type FIELD_ARRAY.

Search_Rule_Field_Array ::= {
   drm_class                      DRM_Class;
   array_size                     Short_Integer_Positive
   value_array                    Any_Search_Value[array_size];
   field_ordinal                  Short_Integer_Unsigned;
}

5.3.3.227 Search_Rule_Field_Range

The Search_Rule_Field_Range data type specifies the parameters for a Search_Rule of type FIELD_RANGE.

Search_Rule_Field_Range ::= {
   drm_class                      DRM_Class;
   value                          Any_Search_Value;
   second_value                   Any_Search_Value;
   field_ordinal                  Short_Integer_Unsigned;
}

5.3.3.228 Search_Rule_Predicate

The Search_Rule_Predicate data type specifies the parameters for a Search_Rule of type PREDICATE.

Search_Rule_Predicate ::= {
   test_data                      Test_Data;
   user_function                  Predicate;
}

5.3.3.229 Season_Fields

The Season_Fields data type encapsulates the field elements of the <DRM Season> class.

Season_Fields ::= {
   time_significance              Time_Significance;
   season                         Season;
}

5.3.3.230 SEC_3D_Location_Fields

The SEC_3D_Location_Fields data type encapsulates the field elements of the <DRM SEC 3D Location> class.

SEC_3D_Location_Fields ::= {
   coordinate                     SRM_Spherical_3D_Coordinate;
}

5.3.3.231 Security_Constraints_Fields

The Security_Constraints_Fields data type encapsulates the field elements of the <DRM Security Constraints> class.

Security_Constraints_Fields ::= {
   use_limitation_count           Short_Integer_Unsigned;
   use_limitation                 String[use_limitation_count];
   classification                 MD_ClassificationCode;
   user_note                      String;
   classification_system          String;
   handling_description           String;
}

5.3.3.232 Separating_Plane_Data_Fields

The Separating_Plane_Data_Fields data type encapsulates the field elements of the <DRM Separating Plane Data> class.

Separating_Plane_Data_Fields ::= {
   positive                       Boolean;
}

5.3.3.233 Separating_Plane_Related_Geometry_Fields

The Separating_Plane_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Separating Plane Related Geometry> class.

Separating_Plane_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
}

5.3.3.234 Separating_Plane_Select_Parameters

The Separating_Plane_Select_Parameters data type specifies which branches to traverse from a <DRM Separating Plane Related Geometry> instance when encountered by a component iterator.

Separating_Plane_Select_Parameters ::= {
   traverse_positive_branches     Boolean;
   traverse_negative_branches     Boolean;
}

5.3.3.235 SEQ_3D_Location_Fields

The SEQ_3D_Location_Fields data type encapsulates the field elements of the <DRM SEQ 3D Location> class.

SEQ_3D_Location_Fields ::= {
   coordinate                     SRM_Spherical_3D_Coordinate;
}

5.3.3.236 Single_Value

The Single_Data_Value variant record data type specifies a single value of a supported EDCS data type.

This variant record type is used to represent cells in <DRM Data Table> instances, values in <DRM Property Value> instances, axis values in <DRM Regualr Axis> and <DRM Irregular Axis> instances, and the values specified by <DRM Literal> instances. The value type variant indicates the currently valid field of all of the legal types of values for a <DRM Property Value> or <DRM Data Table> instance.

Single_Value ::= (value_type Single_Value_Type) {
[
  LONG_FLOAT         : long_float_value          EDCS_Long_Float;
  INTEGER            : integer_value             EDCS_Integer;
  COUNT              : count_value               EDCS_Count;
  INDEX              : index_value               EDCS_Count;
  STRING             : string_value              EDCS_String;
  CONSTRAINED_STRING : constrained_string_value  EDCS_String;
  KEY                : key_value                 EDCS_String;
  ENUMERATION:       : enumeration_value         EDCS_Integer;
  BOOLEAN            : boolean_value             EDCS_Boolean;
]}

5.3.3.237 SMD_3D_Location_Fields

The SMD_3D_Location_Fields data type encapsulates the field elements of the <DRM SMD 3D Location> class.

SMD_3D_Location_Fields ::= {
   coordinate                     SRM_Spherical_3D_Coordinate;
}

5.3.3.238 SME_3D_Location_Fields

The SME_3D_Location_Fields data type encapsulates the field elements of the <DRM SME 3D Location> class.

SME_3D_Location_Fields ::= {
   coordinate                     SRM_Spherical_3D_Coordinate;
}

5.3.3.239 Sound_Fields

The Sound_Fields data type encapsulates the field elements of the <DRM Sound> class.

Sound_Fields ::= {
   name                           String;
   sound_format                   Sound_Format;
   sound_urn                      URN;
   duration                       Float;
   sampling_rate                  Float;
   bits_per_sample                Byte_Positive;
   channel_count                  Byte_Positive;
   method                         String;
}

5.3.3.240 Sound_Instance_Control_Link_Fields

The Sound_Instance_Control_Link_Fields data type encapsulates the field elements of the <DRM Sound Instance Control Link> class.

Sound_Instance_Control_Link_Fields ::= {
   description                           String;
   active_sound_value_expression_index   Integer_Positive;
}

5.3.3.241 Sound_Instance_Fields

The Sound_Instance_Fields data type encapsulates the field elements of the <DRM Sound Instance> class.

Sound_Instance_Fields ::= {
   active_sound_value             Boolean;
}

5.3.3.242 Source_Fields

The Source_Fields data type encapsulates the field elements of the <DRM Source> class.

Source_Fields ::= {
   description                    String;
   scale                          Integer_Positive;
   contribution                   String;
}

5.3.3.243 Spatial_Association_Data_Fields

The Spatial_Association_Data_Fields data type encapsulates the field elements of the <DRM Spatial Association Data> class.

Spatial_Index_Data_Fields ::= {
   meaning                        Spatial_Association_Meaning_Type;
}

5.3.3.244 Spatial_Index_Data_Fields

The Spatial_Index_Data_Fields data type encapsulates the field elements of the <DRM Spatial Index Data> class.

Spatial_Index_Data_Fields ::= {
   row_index                      Integer_Positive;
   column_index                   Integer_Positive;
}

5.3.3.245 Spatial_Index_Parameters

The Spatial_Index_Parameters data type specfiies hierarchical search criteria for spatial index organized aggregates.

When used within a Hierarchy_Select_Parameters instance, this data type selects which branches to traverse from a <DRM Spatial Index Related Features> or <DRM Spatial Index Related Geometry> instance when encountered by a component iterator. All branches that have a link object whose field values match one of the entries contained in an instance of this data type will be traversed.

When used within a Hierarchy_Order_Parameters instance, this data type can be used to control the order in which to traverse the branches from a <DRM Spatial Index Related Features> or <DRM Spatial Index Related Geometry> instance when encountered by a component iterator.  For the set of branches that are to be traversed, the order of that traversal will be specified by the spatial_index_data_array in this data type. Any branches that are traversed but are not mentioned in this ordering array shall be traversed in any order after all of the branches that are mentioned in this array are traversed.

Spatial_Index_Parameters ::= {
   spatial_index_data_count       Integer_Unsigned;
   spatial_index_data_array       Spatial_Index_Data_Fields[spatial_index_data_count];
}

5.3.3.246 Spatial_Index_Related_Feature_Topology_Fields

The Spatial_Index_Related_Feature_Topology_Fields data type encapsulates the field elements of the <DRM Spatial Index Related Feature Topology> class.

Spatial_Index_Related_Feature_Topology_Fields ::= {
   feature_topology_level         Feature_Topology_Level;
   sparse                         Boolean;
   column_count                   Integer_Positive;
   row_count                      Integer_Positive;
   column_width                   Long_Float;
   row_width                      Long_Float;
   spacing_unit                   Spatial_Index_Spacing_Unit;
}

5.3.3.247 Spatial_Index_Related_Features_Fields

The Spatial_Index_Related_Features_Fields data type encapsulates the field elements of the <DRM Spatial Index Related Features> class.

Spatial_Index_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   sparse                         Boolean;
   column_count                   Integer_Positive;
   row_count                      Integer_Positive;
   column_width                   Long_Float;
   row_width                      Long_Float;
   spacing_unit                   Spatial_Index_Spacing_Unit;
}

5.3.3.248 Spatial_Index_Related_Geometry_Fields

The Spatial_Index_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Spatial Index Related Geometry> class.

Spatial_Index_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   sparse                         Boolean;
   column_count                   Integer_Positive;
   row_count                      Integer_Positive;
   column_width                   Long_Float;
   row_width                      Long_Float;
   spacing_unit                   Spatial_Index_Spacing_Unit;
}

5.3.3.249 Spatial_Index_Related_Geometry_Topology_Fields

The Spatial_Index_Related_Geometry_Topology_Fields data type encapsulates the field elements of the <DRM Spatial Index Related Geometry Topology> class.

Spatial_Index_Related_Geometry_Topology_Fields ::= {
   geometry_topology_level        Geometry_Topology_Level;
   sparse                         Boolean;
   column_count                   Integer_Positive;
   row_count                      Integer_Positive;
   column_width                   Long_Float;
   row_width                      Long_Float;
   spacing_unit                   Spatial_Index_Spacing_Unit;
}

5.3.3.250 Spatial_Resolution_LOD_Data_Fields

The Spatial_Resolution_LOD_Data_Fields data type encapsulates the field elements of the <DRM Spatial Resolution LOD Data> class.

Spatial_Resolution_LOD_Data_Fields ::= {
   spatial_resolution             Long_Float;
   unit                           Spatial_Index_Spacing_Unit;
}

5.3.3.251 Spherical_Volume_Extent_Fields

The Spherical_Volume_Extent_Fields data type encapsulates the field elements of the <DRM Spherical Volume Extent> class.

Spherical_Volume_Extent_Fields ::= {
   radius                         Long_Float;
}

5.3.3.252 Spot_Light_Fields

The Spot_Light_Fields data type encapsulates the field elements of the <DRM Spot Light> class.

Spot_Light_Fields ::= {
   apply_to_children              Boolean;
   override_positional_lights     Boolean;
   override_infinite_lights       Boolean;
   active_light_value             Boolean;
   radius                         Float;
   constant_attenuation_factor    Long_Float;
   linear_attenuation_factor      Long_Float;
   quadratic_attenuation_factor   Long_Float;
   horizontal_drop_off_rate       Long_Float;
   vertical_drop_off_rate         Long_Float;
}

5.3.3.253 SRF_Context_Info

The SRF_Context_Info data type specifies an SRF along with local contextual information. When the use_dss_code field has value TRUE, the dss_code field designates the surface from which the third coordinate-component is offset. Otherwise, the ellipsoid identified by the ORM is designates the surface from which the third coordinate-component is offset.

SRF_Context_Info ::= {
   angular_unit                   EDCS_Unit_Code;
   linear_unit                    EDCS_Unit_Code;
   linear_scale                   EDCS_Unit_Scale_Code;
   use_dss_code                   Boolean;
   dss_code                       SRM_DSS_Code;
   srf_parameters_info            SRM_SRF_Parameters_Info;
}

5.3.3.254 SRF_Summary_Fields

The SRF_Summary_Fields data type encapsulates the field elements of the <DRM SRF Summary> class.

SRF_Summary_Fields ::= {
   srf_context_info               SRF_Context_Info;
}

5.3.3.255 Stamp_Behaviour_Fields

The Stamp_Behaviour_Fields data type encapsulates the field elements of the <DRM Stamp Behaviour> class.

Stamp_Behaviour_Fields ::= {
   u_axis_limit                   Rotation_Data;
   v_axis_limit                   Rotation_Data;
   w_axis_limit                   Rotation_Data;
}

5.3.3.256 State_Control_Link_Fields

The State_Control_Link_Fields data type encapsulates the field elements of the <DRM State Control Link> class.

State_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
   mismatch_behaviour             State_Mismatch_Behaviour;
}

5.3.3.257 State_Data_Fields

The State_Data_Fields data type specifies data in the fields of a <DRM State Data> class.

State_Data_Fields ::= {
   state_value                    EDCS_Attribute_Value;
}

5.3.3.258 State_Entry

The State_Entry data type specifies a particular state to match during a search.

State_Entry ::= {
   state_tag                      EDCS_Attribute_Code;
   state_data                     State_Data_Fields;
}

5.3.3.259 State_Related_Features_Fields

The State_Related_Features_Fields data type encapsulates the field elements of the <DRM State Related Features> class.

State_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   state_tag                      EDCS_Attribute_Code;
   active_state_value             EDCS_Attribute_Value;
}

5.3.3.260 State_Related_Geometry_Fields

The State_Related_Geometry_Fields data type encapsulates the field elements of the <DRM State Related Geometry> class.

State_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   state_tag                      EDCS_Attribute_Code;
   active_state_value             EDCS_Attribute_Value;
}

5.3.3.261 State_Select_Parameters

The State_Select_Parameters data type controls the traversal order of the branches of a <DRM State Related Features> or <DRM State Related Geometry> instance when encountered by a component iterator.

For the set of branches to be traversed, the order of that traversal shall be specified by the state_entry in this data type. All branches that have a link object whose fields satisfy the entries contained in this record shall be traversed.

State_Select_Parameters ::= {
   default_choice                 Unmatched_State_Behaviour;
   matching_rules                 Branch_Range_Matching;
   state_entry_count              Integer_Unsigned
   state_entry                    State_Entry[state_entry_count];
}

5.3.3.262 String

The String data type specifies a character string along with information that determines how the string is to be interpreted.

The length field specifies the number of characters in the string.

String ::= {
   locale                         Locale;
   length                         Integer_Unsigned;
   characters                     Character[length];
}

5.3.3.263 Strobing_Light_Behaviour_Fields

The Strobing_Light_Behaviour_Fields data type encapsulates the field elements of the <DRM Strobing Light Behaviour> class.

Strobing_Light_Behaviour_Fields ::= {
   period                         Long_Float;
   delay                          Long_Float;
}

5.3.3.264 Symbol_Fields

The Symbol_Fields data type encapsulates the field elements of the <DRM Symbol> class.

Symbol_Fields ::= {
   name                           String;
   symbol_format                  Symbol_Format;
   symbol_urn                     URN;
}

5.3.3.265 Table_Property_Description_Fields

The Table_Property_Description_Fields data type encapsulates the field elements of the <DRM Table Property Description> class.

Table_Property_Description_Fields ::= {
   meaning                        Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Unit_Scale_Code;
   value_type                     Data_Table_Data_Value_Type;
   component_data_table_ecc       EDCS_Classification_Code;
}

5.3.3.266 Telephone_Information

The Telephone_Information data type specifies the complete set of telephone contact information used by the Contact_Information data type. This data type is derived from CI_Telephone as defined in A.3.2 of ISO 19115.

Telephone_Information ::= {
   voice_count                    Short_Integer_Unsigned;
   voice                          String[voice_count]
   facsimile_count                Short_Integer_Unsigned;
   facsimile                      String[facsimile_count];
   tdd_tty_count                  Short_Integer_Unsigned;
   tdd_tty                        String[tdd_tty_count];
}

5.3.3.267 Text_Fields

The Text_Fields data type encapsulates the field elements of the <DRM Text> class.

Text_Fields ::= {
   text_string                    String;
   font                           Text_Font;
}

5.3.3.268 Text_Font

The Text_Font data type specifies the information that determines the appearance of displayed textual information.

The font_family field is the name given to a set of fonts by a font designer. The font family can identify generic (e.g., SANS-SERIF and SERIF) or proprietary names (e.g., Clarendon or Lucida). The font family may have subfamilies. If so, the subfamily is identified as part of the name (e.g., Lucida Blackletter). The font family is specified by a String field. The maximum length of a font family name is 32 characters.

The font_style field specifies the appearance variation allowed within the font family.

The font_size field specifies how big the text is to be presented. Size is specified in points. The implementation shall provide a rational means of mapping points to the size of text in a presentation. Default size is 11 points. Since this element is specified as a floating point number, the size specified may not be mappable to the sizes available for a particular font family. In that case, the size available that is nearest to the requested size shall be used.

The underline_style field specifies how text is underlined. The default style is NONE. If an underline_style is specified that is not recognized by an implementation, SINGLE shall be used. The width of the line used to implement the underlining shall be appropriate to the font_size and font_style specified.

Text_Font ::= {
   font_family                    String;
   font_style                     Font_Style;
   font_size                      Float;
   underline_style                Underline_Style;
}

5.3.3.269 Texture_Coordinate_Control_Link_Fields

The Texture_Coordinate_Control_Link_Fields data type encapsulates the field elements of the <DRM Texture Coordinate Control Link> class.

Texture_Coordinate_Control_Link_Fields ::= {
   description                    String;
   s_expression_index             Integer_Unsigned;
   t_expression_index             Integer_Unsigned;
}

5.3.3.270 Texture_Coordinate_Fields

The Texture_Coordinate_Fields data type encapsulates the field elements of the <DRM Texture Coordinate> class.

Texture_Coordinate_Fields ::= {
   s   Long_Float;
   t   Long_Float;
}

5.3.3.271 Time_Day_Of_Year_Value

The Time_Day_Of_Year_Value data type specifies the elements of a single DAY_OF_YEAR time value.

The allowable range for day is [0..365].

Time_Day_Of_Year_Value ::= {
   day_of_year     Short_Integer_Unsigned;
}

5.3.3.272 Time_Entry

The Time_Entry variant record data type specifies a time data value of the form determined by the value of time_entry_type.

Time_Entry ::= (time_entry_type Time_Data_Type ) {
[
  SEASON:             season              Season_Fields;
  TIME_INTERVAL:      time_interval       Time_Interval_Entry;
  TIME_OF_DAY:        time_of_day         Time_Of_Day_Fields;
  TIME_POINT:         time_point          Time_Point_Entry;
]}

5.3.3.273 Time_Interval_Entry

The Time_Interval_Entry variant record data type specifies a time interval value of the form determined by the value of time_type.

Time_Interval_Entry ::= (time_type  Time_Measurement_Type) {
[
  GMT:
       absolute_time           Absolute_Time_Interval_Entry;
  RELATIVE_TO_EXERCISE_START:
       relative_to_simulation  Relative_Time_Interval_Fields;
  RELATIVE_TO_REFERENCE_TIME:
       relative_to_absolute    Relative_To_Absolute_Time_Interval_Entry;
]}

5.3.3.274 Time_Interval_Fields

The Time_Interval_Fields data type encapsulates the field elements of the <DRM Time Interval> class.

Time_Interval_Fields ::= {
   time_significance              Time_Significance;
}

5.3.3.275 Time_M_Value

The Time_M_Value data type specifies the elements of a single DATE_M time value.

Time_M_Value ::= {
   month   Month;
}

5.3.3.276 Time_MD_H_Value

The Time_MD_H_Value data type specifies the elements of a single DATE_MD_AND_TIME_H time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23].

Time_MD_H_Value ::= {
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
}

5.3.3.277 Time_MD_HM_Value

The Time_MD_HM_Value data type specifies the elements of a single DATE_MD_AND_TIME_HM time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59].

Time_MD_HM_Value ::= {
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
   minutes Byte_Unsigned;
}

5.3.3.278 Time_MD_HMS_Value

The Time_MD_HMS_Value data type specifies the elements of a single DATE_MD_AND_TIME_HMS time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59]. The normal allowable range for seconds is [0,0, 60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0, 61,0).

Time_MD_HMS_Value ::= {
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
   minutes Byte_Unsigned;
   seconds Long_Float;
}

5.3.3.279 Time_Of_Day_Fields

The Time_Of_Day_Fields data type encapsulates the field elements of the <DRM Time Of Day> class.

Time_Of_Day_Fields ::= {
   time_significance              Time_Significance;
   time_of_day                    Time_Of_Day;
}

5.3.3.280 Time_Point_Entry

The Time_Point_Entry variant record data type specifies time point information in a form determined by the value of time_type.

Time_Point_Entry ::= (time_type  Time_Measurement_Type ) {
[
  GMT:
       absolute_time           Absolute_Time_Fields;
  RELATIVE_TO_EXERCISE_START:
       relative_to_start       Relative_Time_Fields;
  RELATIVE_TO_REFERENCE_TIME:
       relative_to_reference   Relative_To_Absolute_Time_Entry;
]}

5.3.3.281 Time_Point_Fields

The Time_Point_Fields data type encapsulates the field elements of the <DRM Time Point> class.

Time_Point_Fields ::= {
   time_significance              Time_Significance;
}

5.3.3.282 Time_Related_Features_Fields

The Time_Related_Features_Fields data type encapsulates the field elements of the <DRM Time Related Features> class.

Time_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   time_data_type                 Time_Data_Type;
}

5.3.3.283 Time_Related_Geometry_Fields

The Time_Related_Geometry_Fields data type encapsulates the field elements of the <DRM Time Related Geometry> class.

Time_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   time_data_type                 Time_Data_Type;
}

5.3.3.284 Time_Select_Parameters

The Time_Select_Parameters data type specifies which branches to traverse from a <DRM Time Related Features> or <DRM Time Related Geometry> instance when encountered by a component iterator.

All branches with a <DRM Time Constraints Data> link object having an instance of <DRM Base Time Data> with values matching the ranges specified in the time_entry_array shall be traversed.

If no rules are provided for the type of time data of the branch in question, the branch will be traversed.

EXAMPLE 1  If a branch is marked with season data, but only time_of_day search ranges are provided, the season branch will be taken. 

When no search rules for a certain type of time are specified, all values for that type of time are considered valid. 

EXAMPLE 2  If time_interval search ranges are given, but only for GMT times and not any RELATIVE_TO_EXERCISE_START times, any branch with a RELATIVE_TO_EXERCISE_START time value will be traversed, but branches with GMT time values will only be traversed if they match the given GMT search ranges.

Time_Select_Parameters ::= {
   matching_rules                 Branch_Range_Matching;
   time_entry_count               Integer_Unsigned;
   time_entry_array               Time_Entry[time_entry_count];
}

5.3.3.285 Time_Value

The Time_Value variant record data type specifies a time value of the form determined by the value of time_configuration.

Time_Value ::= (time_configuration Time_Configuration ) {
[
  DATE_YMD_AND_TIME_HMS:    ymd_hms          Time_YMD_HMS_Value;
  DATE_YMD_AND_TIME_HM:     ymd_hm           Time_YMD_HM_Value;
  DATE_YMD_AND_TIME_H:      ymd_h            Time_YMD_H_Value;
  DATE_YMD:                 ymd              Time_YMD_Value;
  DATE_YD_AND_TIME_HMS:     yd_hms           Time_YD_HMS_Value;
  DATE_YD_AND_TIME_HM:      yd_hm            Time_YD_HM_Value;
  DATE_YD_AND_TIME_H:       yd_h             Time_YD_H_Value;
  DATE_YD:                  yd               Time_YD_Value;
  DATE_MD_AND_TIME_HMS:     md_hms           Time_MD_HMS_Value;
  DATE_MD_AND_TIME_HM:      md_hm            Time_MD_HM_Value;
  DATE_MD_AND_TIME_H:       md_h             Time_MD_H_Value;
  DATE_Y:                   y                Time_Y_Value;
  DATE_M:                   m                Time_M_Value;
  DAY_OF_YEAR:              day_of_year      Time_Day_Of_Year_Value;
]}

5.3.3.286 Time_Y_Value

The Time_Y_Value data type specifies the elements of a single DATE_Y time value.

Time_Y_Value ::= {
   year    Integer;
}

5.3.3.287 Time_YD_Value

The Time_YD_Value data type specifies the elements of a single DATE_YD time value.

The allowable range for day_of_year is [0..365].

Time_YD_Value ::= {
   year          Integer;
   day_of_year   Short_Integer_Unsigned;
}

5.3.3.288 Time_YD_H_Value

The Time_YD_H_Value data type specifies the elements of a single DATE_YD_AND_TIME_H time value.

The allowable range for day_of_year is [0..365]. The allowable range for hour is [0..23].

Time_YD_H_Value ::= {
   year          Integer;
   day_of_year   Short_Integer_Unsigned;
   hour          Byte_Unsigned;
}

5.3.3.289 Time_YD_HM_Value

The Time_YD_HM_Value data type specifies the elements of a single DATE_YD_AND_TIME_HM time value.

The allowable range for day_of_year is [0..365]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59].

Time_YD_HM_Value ::= {
   year          Integer;
   day_of_year   Short_Integer_Unsigned;
   hour          Byte_Unsigned;
   minutes       Byte_Unsigned;
}

5.3.3.290 Time_YD_HMS_Value

The Time_YD_HMS_Value data type specifies the elements of a single DATE_YD_AND_TIME_HMS time value.

The allowable range for day_of_year is [0..365]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59]. The normal allowable range for seconds is [0,0, 60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0, 61,0).

Time_YD_HMS_Value ::= {
   year          Integer;
   day_of_year   Short_Integer_Unsigned;
   hour          Byte_Unsigned;
   minutes       Byte_Unsigned;
   seconds       Long_Float;
}

5.3.3.291 Time_YMD_Value

The Time_YMD_Value data type specifies the elements of a single DATE_YMD time value.

The allowable range for day is [1..31].

Time_YMD_Value ::= {
   year    Integer;
   month   Month;
   day     Short_Integer_Positive;
}

5.3.3.292 Time_YMD_H_Value

The Time_YMD_H_Value data type specifies the elements of a single DATE_YMD_AND_TIME_H time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23].

Time_YMD_H_Value ::= {
   year    Integer;
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
}

5.3.3.293 Time_YMD_HM_Value

The Time_YMD_HM_Value data type specifies the elements of a single DATE_YMD_AND_TIME_HM time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59].

Time_YMD_HM_Value ::= {
   year    Integer;
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
   minutes Byte_Unsigned;
}

5.3.3.294 Time_YMD_HMS_Value

The Time_YMD_HMS_Value data type specifies the elements of a single DATE_YMD_AND_TIME_HMS time value.

The allowable range for day is [1..31]. The allowable range for hour is [0..23]. The allowable range for minutes is [0..59]. The normal allowable range for seconds is [0,0, 60,0). During the time in which a leap second has been declared or authorized, the allowable range is [0,0..61,0).

Time_YMD_HMS_Value ::= {
   year    Integer;
   month   Month;
   day     Short_Integer_Positive;
   hour    Byte_Unsigned;
   minutes Byte_Unsigned;
   seconds Long_Float;
}

5.3.3.295 TM_Augmented_3D_Location_Fields

The TM_Augmented_3D_Location_Fields data type encapsulates the field elements of the <DRM TM Augmented 3D Location> class.

TM_Augmented_3D_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_3D_Coordinate;
}

5.3.3.296 TM_Surface_Location_Fields

The TM_Surface_Location_Fields data type encapsulates the field elements of the <DRM TM Surface Location> class.

TM_Surface_Location_Fields ::= {
   coordinate                     SRM_Map_Projection_Surface_Coordinate;
}

5.3.3.297 Translation_Control_Link_Fields

The Translation_Control_Link_Fields data type encapsulates the field elements of the <DRM Translation Control Link> class.

Translation_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.298 Translation_Fields

The Translation_Fields data type encapsulates the field elements of the <DRM Translation> class.

Translation_Fields ::= {
   axis                           LSR_Transformation_Axis;
   translation_amount             Long_Float;
}

5.3.3.299 Translucency_Control_Link_Fields

The Translucency_Control_Link_Fields data type encapsulates the field elements of the <DRM Translucency Control Link> class.

Translucency_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
}

5.3.3.300 Translucency_Fields

The Translucency_Fields data type encapsulates the field elements of the <DRM Translucency> class.

Translucency_Fields ::= {
   translucency_value             Long_Float;
}

5.3.3.301 Transmittal_Root_Fields

The Transmittal_Root_Fields data type encapsulates the field elements of the <DRM Transmittal Root> class. The range of values for the minor_DRM_version, minor_EDCS_version, and minor_SRM_version fields is [0..99].

Transmittal_Root_Field ::= {
   name                           String;
   major_DRM_version              Short_Integer_Positive;
   minor_DRM_version              Byte_Unsigned;
   interim_DRM_version            Character;
   major_EDCS_version             Short_Integer_Positive;
   minor_EDCS_version             Byte_Unsigned;
   interim_EDCS_version           Character;
   major_SRM_version              Short_Integer_Positive;
   minor_SRM_version              Byte_Unsigned;
   interim_SRM_version            Character;
}

5.3.3.302 Transmittal_Summary_Fields

The Transmittal_Summary_Fields data type encapsulates the field elements of the <DRM Transmittal Summary> class.

Transmittal_Summary _Field ::= {
   features_present                   Present_In;
   geometry_present                   Present_In;
   geometry_topology_present          Present_In;
   data_tables_present                Present_In;
   priority_values_present            Present_In;
   mobility_values_present            Present_In;
   thermal_values_present             Present_In;
   terrain_lods_present               Present_In;
   two_D_features_flag                Present_In;
   models_present                     Boolean;
   images_present                     Boolean;
   sounds_present                     Boolean;
   symbols_present                    Boolean;
   colours_present                    Boolean;
   colour_model                       Colour_Model;
   EDCS_usage_list_is_complete        Boolean
}

5.3.3.303 Union_Of_Feature_Topology_Fields

The Union_Of_Feature_Topology_Fields data type encapsulates the field elements of the <DRM Union Of Feature Topology> class.

Union_Of_Feature_Topology_Fields ::= {
   feature_topology_level         Feature_Topology_Level;
}

5.3.3.304 Union_Of_Features_Fields

The Union_Of_Features_Fields data type encapsulates the field elements of the <DRM Union Of Features> class.

Union_Of_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   union_reason                   Union_Reason;
   ordering_reason                Ordering_Reason;
}

5.3.3.305 Union_Of_Geometry_Fields

The Union_Of_Geometry_Fields data type encapsulates the field elements of the <DRM Union Of Geometry> class.

Union_Of_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   union_reason                   Union_Reason;
   ordering_reason                Ordering_Reason;
}

5.3.3.306 Union_Of_Geometry_Hierarchy_Fields

The Union_Of_Geometry_Hierarchy_Fields data type encapsulates the field elements of the <DRM Union Of Geometry Hierarchy> class.

Union_Of_Geometry_Hierarchy_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   union_reason                   Union_Reason;
   ordering_reason                Ordering_Reason;
}

5.3.3.307 Union_Of_Geometry_Topology_Fields

The Union_Of_Geometry_Topology_Fields data type encapsulates the field elements of the <DRM Union Of Geometry Topology> class.

Union_Of_Geometry_Topology_Fields ::= {
   geometry_topology_level        Geometry_Topology_Level;
}

5.3.3.308 Union_Of_Primitive_Geometry_Fields

The Union_Of_Primitive_Geometry_Fields data type encapsulates the field elements of the <DRM Union Of Primitive Geometry> class.

Union_Of_Primitive_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   union_reason                   Union_Reason;
   ordering_reason                Ordering_Reason;
}

5.3.3.309 Unused_Fields

The Unused_Fields data type specifies a data type for DRM classes that have no field data. It is provided so that all variants of the DRM_Class_Fields data type will have an associated record data type.

Unused_Fields ::= {
   unused                         Octet;
}

5.3.3.310 URL

The URL data type specifies an arbitrary Universal Resource Location (URL) of any form.  The syntax and character set for such names are specified in IETF RFC 1738.

URL ::= {
   length                         Integer_Unsigned;
   characters                     Character[length];
}

5.3.3.311 URN

The URN data type specifies a SEDRIS Universal Resource Name (URN).  The syntax for generic URNs is specified in IETF RFC 2141. A SEDRIS URN is a string that conforms to the following abstract structure:

urn:sedris:<DNAS>:<resource-type>=<resource name>:<resource-type-specific-string>

where:

<DNAS> is unique Delegated Naming Authority assigned to an entity producing transmittals.

<resource-type> is one of the following strings:

"xmittal": for use in referencing transmittals or objects within transmittals (e.g., ITR),

"sound":  for use in referencing digital sounds represented external to any transmittal,

"symbol":  for use in referencing symbols (e.g., icons) represented externally to any transmittal,

"media":  for use in referencing various other digital media objects represented external to any transmittal,

<resource name> is unique string that identifies the resource as specified by the publishing entity.

<resource-type-specific-string> is a unique string identifying a specific resource, the syntax of which is dependant on the <resource-type>,

The "sound", "symbol", and "media" resource types have similar type specific strings using the following structure:

urn:sedris:<DNAS>:sound=<RN>:<FMT>
urn:sedris:<DNAS>:media=<RN>:<FMT>
urn:sedris:<DNAS>:sound=<RN>:<FMT>

where:

<RN> is a unique resource name assigned by the publishing entity identified by <DNAS>

<FMT> is a format specification string defined by this part of ISO/IEC 18023

Resource type "xmittal" use the following structure:

urn:sedris:<DNAS>:xmittal=<TN>:<VN>

where

<TN> is a unique transmittal name assigned by the publishing entity identified by <DNAS>

<VN> is sequentially assigned version number

EXAMPLES  The following examples are representative of SEDRIS URNs, but may not refer to actual resources.

    urn:sedris:ais:xmittal=HomeTown:3
    urn:sedris:cctt:sound=waterfall01:WAV
    urn:sedris:ngit:symbol=church-01:CGM
    urn:sedris:saic:media=HomeTown_Preview:AVI

URN ::= {
   length                         Integer_Unsigned;
   characters                     Character[length];
}

5.3.3.312 Variable_Fields

The Variable_Fields data type encapsulates the field elements of the <DRM Variable> class.

Variable_Fields ::= {
   name                           String;
   meaning                        Property_Code;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Unit_Scale_Code;
   value_type                     EDCS_Attribute_Value_Type;
   description                    String;
}

5.3.3.313 Volume_Extent_Entry

The Volume_Extent_Entry variant data type specifies volume extent data of the form determined by volume_type.

Volume_Extent_Entry ::= (volume_type  Volumetric_Shape) {
[
  CYLINDER:           cylinder        Cylindrical_Volume_Extent_Entry;
  PARALLELEPIPED:     parallelepiped  Parallelepiped_Volume_Extent_Entry;
  SPHERE:             sphere          Spherical_Volume_Extent_Fields;
]}

5.3.3.314 Volume_Light_Behaviour_Fields

The Volume_Light_Behaviour_Fields data type encapsulates the field elements of the <DRM Volume Light Behaviour> class.

Volume_Light_Behaviour_Fields ::= {
   use_full_intensity             Boolean;
   minimum_colour_intensity       Long_Float;
}

5.3.3.315 Volume_LOD_Data_Fields

The Volume_LOD_Data_Fields data type encapsulates the field elements of the <DRM Volume LOD Data> class.

Volume_LOD_Data_Fields ::= {
   outside                        Boolean;
}

5.3.3.316 Volume_LOD_Entry

The Volume_LOD_Entry data type specifies volume level of detail data.

Volume_LOD_Entry ::= {
   coordinate                     SRM_Coordinate;
   volume_extent                  Volume_Extent_Entry;
   volume_lod                     Volume_LOD_Data_Fields;
}

5.3.3.317 World_3x3_Fields

The World_3x3_Fields data type encapsulates the field elements of the <DRM World 3x3> class.

World_3x3_Fields ::= {
   world_3x3                      Matrix_3x3;
}

5.4 Private data types

5.4.1 Description

Private data types are those data types whose exact structure is hidden. Such data types are manipulated solely using functions. This allows an implementation to store the data that shall be maintained for the data type in whatever form is convenient for the implementation.

5.4.2 Iterator

The Iterator data type specifies information that is used to cycle repeatedly over some aspect of a transmittal.  An instance of this type is called an iterator handle.

An iterator allows a user to step through a collection of DRM objects related to the iterator’s start DRM object, where the elements of the collection satisfy the conditions used to initialize the iterator.

EXAMPLE  An iterator may be initialized with a search filter.

The relationship of the start DRM object to the DRM objects in the collection depends on which function was used to initialize the iterator.

Iterators in this part of ISO/IEC 18023 have the following characteristics:

  1. All iterators are external iterators; that is, the user controls the iterator and is responsible for freeing anything retrieved from the iterator.
  2. An iterator is required to be created by an iterator initialization function before it is used.
  3. An iterator shall be freed by 8.3.10 FreeIterator when it is no longer needed.

More details are available in the various iterator initialization functions (see 8.3.54 InitializeAggregateIterator, 8.3.55 InitializeAssociateIterator, and 8.3.56 InitializeComponentIterator), as well as in 8.3.31 GetNextObject, 8.3.43 GetRemainingObjectsList, and 8.3.10 FreeIterator.

More information on the iterator behavioural pattern and external iterators is available in [GAMMA].

5.4.3 Object

The Object data type specifies access to a DRM object (i.e., an instance of a DRM class). An instance of this type is called a DRM object handle.

A DRM object may be resolved or unresolved:

  1. Resolved: the DRM object handle points to a DRM object that is available to the API; i.e., the DRM object is contained within a transmittal whose content the API can access and the application programmer has chosen to access that content. This means that the transmittal is open.
  2. Unresolved: the DRM object handle points to a DRM object that the API cannot access or the application programmer has chosen not to access it; for example, the DRM object may reside in a transmittal that is not currently open. This means that the DRM object handle requires ITR.

NOTE To be available for ITR, a DRM object shall be published.

5.4.4 Packed_Hierarchy_Object_Access

The Packed_Hierarchy_Object_Access data type specifies access to a packed hierarchy object.  An instance of this type is called a packed hierarchy handle.

5.4.5 Search_Boundary

The Search_Boundary data type specifies information that is used to manage spatial searches.  An instance of this type is called a search boundary handle.

5.4.6 Search_Filter

The Search_Filter data type specifies information that is used as a search filter during searches of a transmittal.  An instance of this type is called a search filter handle.

A search filter is created by calling 8.3.7 CreateSearchFilter, which provides a set of rules that are used by iterators to filter objects so that only objects that pass the rules will be returned to the user.

Search filters have the following characteristics:

  1. A search filter shall be created by 8.3.7 CreateSearchFilter before it is used.
  2. To use a search filter after it has been specified, the search filter is passed as an argument to an iterator when initializing the iterator.
  3. Search filters can be freed at any time; a search filter does not need to stay in existence until the iterator(s) that depend on that filter are freed. An iterator shall retain a copy of any search filter used to initialize that iterator.
  4. A search filter shall be freed by 8.3.15 FreeSearchFilter after it is no longer needed.

5.4.7 Test_Data

The Test_Data data type specifies arbitrary data to be used by the implementation during searching.

5.4.8 Transmittal

The Transmittal data type specifies access to a transmittal.  An instance of this type is called a transmittal handle.

5.4.9 User_Data

The User_Data data type specifies access to a temporary set of user data.  An instance of this type is called a user data handle.

5.5 Function data types

5.5.1 Description

This part of ISO/IEC 18023 provides for the specification of arbitrary callback functions that are provided by the application but invoked by the implementation. Such functions shall have the function signature specified for each function data type.

5.5.2 Predicate

The Predicate data type specifies a callback function used during searching.

Whenever the rule_type value for a Search_Rule data type instance holds the value of PREDICATE, a function with the following signature shall be provided:

Return value:

Boolean

Parameters:

Object
Object
Test_Data

During the filtering process, the iterator invokes the predicate function, passing:

  1. a handle to the DRM object to be tested to the first parameter;
  2. a handle to the link object, if encountered, to the second parameters; and
  3. a handle to some arbitrary test data to the third parameter.

The test data is specified as described in 5.3.3.228 Search_Rule_Predicate.

5.5.3 Status_Logger

The Status_Logger data type specifies a callback used whenever a status code is being returned.

The function shall be used solely for tracking the status codes returned and has no effect on the code being returned.

Return value:

none

Parameters:

API_Function
Status_Code
String
String

5.6 Data types from other standards

5.6.1 Description

5.6.2 Data types from ISO/IEC 18025

5.6.2.1 EDCS_Attribute_Code

9.4.3 EA Dictionary of ISO/IEC 18025 specifies the Attribute_Code selection data type that can represent an entry in the EDCS attribute dictionary. This data type is renamed EDCS_Attribute_Code in this part of ISO/IEC 18023.

5.6.2.2 EDCS_Attribute_Value

9.2.5.6 Attribute value of ISO/IEC 18025 specifies the Attribute_Value record data type that can represent the value of an arbitrary attribute. This data type is renamed EDCS_Attribute_Value in this part of ISO/IEC 18023.

5.6.2.3 EDCS_Attribute_Value_Type

9.2.4.2 Attribute_Value_Type of ISO/IEC 18025 specifies the Attribute_Value_Type selection data type that can represent the value of an arbitrary attribute. This data type is renamed EDCS_Attribute_Value_Type in this part of ISO/IEC 18023.

5.6.2.4 EDCS_Boolean

9.2.3 Enumerated EDCS representation types of ISO/IEC 18025 defines the Boolean enumerated data type that specifies a value of FALSE or TRUE.  This data type is renamed EDCS_Boolean in this part of ISO/IEC 18023.

5.6.2.5 EDCS_Classification_Code

9.4.2 EC Dictionary of ISO/IEC 18025 specifies the Classification_Code selection data type that can represent an entry in the EDCS classification dictionary. This data type is renamed EDCS_Classification_Code in this part of ISO/IEC 18023.

5.6.2.6 EDCS_Count

9.2.2.2.3 Unsigned integer type of ISO/IEC 18025 specifies the Count numeric data type that can represent an integer value in the range [0..4 294 967 295]. This data type is renamed EDCS_Count in this part of ISO/IEC 18023. This data type is renamed EDCS_Integer in this part of ISO/IEC 18023. It has the same characteristics as the Unsigned_Integer data type.

5.6.2.7 EDCS_Count_Interval

9.2.5.5 Single values and value intervals of ISO/IEC 18025 specifies the Count_Interval record data type that can represent an attribute of Count interval value type. This data type is renamed EDCS_Count_Interval in this part of ISO/IEC 18023.

5.6.2.8 EDCS_Count_Value

9.2.5.5 Single values and value intervals of ISO/IEC 18025 specifies the Count_Value variant record data type that can represent a single count EDCS_Attribute_Value. This data type is renamed EDCS_Count_Value in this part of ISO/IEC 18023.

5.6.2.9 EDCS_Integer

9.2.2.2.2 Signed integer type of ISO/IEC 18025 specifies the Integer numeric data type that can represent an integer value in the range [-2 147 483 647..2 147 483 647]. This data type is renamed EDCS_Integer in this part of ISO/IEC 18023. It has the same characteristics as the Integer data type.

5.6.2.10 EDCS_Integer_Interval

9.2.5.5 Single values and value intervals of ISO/IEC 18025 specifies the Integer_Interval record data type that can represent an attribute of Integer interval value type. This data type is renamed EDCS_Integer_Interval in this part of ISO/IEC 18023.

5.6.2.11 EDCS_Integer_Value

9.2.5.5 Single values and value intervals of ISO/IEC 18025 specifies the Integer_Value variant record data type that can represent a single integer EDCS_Attribute_Value. This data type is renamed EDCS_Integer_Value in this part of ISO/IEC 18023.

5.6.2.12 EDCS_Long_Float

9.2.2.2.1 Floating point number type of ISO/IEC 18025 specifies the Long_Float data type that can represent a double-precision floating point number as specified in IEC 60559. This data type is renamed EDCS_Long_Float in this part of ISO/IEC 18023. It has the same charactersitics as the Long_Float data type.

5.6.2.13 EDCS_Long_Float_Value

9.2.5.5 Single values and value intervals of ISO/IEC 18025 specifies the Long_Float_Value variant record data type that can represent a single long float EDCS_Attribute_Value. This data type is renamed EDCS_Long_Float_Value in this part of ISO/IEC 18023.

5.6.2.14 EDCS_Numeric_Value_Type

9.2.4.4 Numeric_Value_Type of ISO/IEC 18025 specifies the Numeric_Value_Type data type that specifies a the type of value for a numeric EA.  This data type is renamed EDCS_Numeric_Value_Type in this part of ISO/IEC 18023.

5.6.2.15 EDCS_Null

9.2.3 Enumerated EDCS representation types of ISO/IEC 18025 specifies the single-value enumerated Null data type that specifies a null value.  This data type is renamed EDCS_Null in this part of ISO/IEC 18023.

5.6.2.16 EDCS_String

9.2.5.4 String of ISO/IEC 18025 specifies the String record data type that can represent an attribute of STRING value type. This data type is renamed EDCS_String in this part of ISO/IEC 18023.

5.6.2.17 EDCS_Unit_Code

9.4.6 EU Dictionary of ISO/IEC 18025 specifies the Unit_Code selection data type that can represent an entry in the EDCS unit dictionary. This data type is renamed EDCS_Unit_Code in this part of ISO/IEC 18023.

5.6.2.18 EDCS_Unit_Scale_Code

9.4.7 ES Dictionary of ISO/IEC 18025 specifies the Unit_Scale_Code selection data type that can represent an entry in the EDCS scale dictionary. This data type is renamed EDCS_Unit_Scale_Code in this part of ISO/IEC 18023.

5.6.2.19 EDCS_Value_Characteristics_Code

9.4.4 EV Dictionary of ISO/IEC 18025 specifies the Value_Characteristics_Code selection data type that can represent an entry in the EDCS value characteristics dictionary. This data type is renamed EDCS_Value_Characteristics_Code in this part of ISO/IEC 18023.

5.6.3 Data types from ISO/IEC 18026

5.6.3.1 SRM_CD_3D_Coordinate

11.9.7.1 CD_3D_Coordinate of ISO/IEC 18026 specifies the CD_3D_Coordinate record data type that specifies the 3D coordinate for a Celestiodetic SRF template. This data type is renamed SRM_CD_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.2 SRM_CD_Surface_Coordinate

11.9.7.2 CD_Surface_Coordinate of ISO/IEC 18026 specifies the CD_Surface_Coordinate record data type that specifies the surface coordinate for a Celestiodetic SRF template. This data type is renamed SRM_CD_Surface_Coordinate in this part of ISO/IEC 18023.

5.6.3.3 SRM_Coordinate

11.9.9 Coordinate of ISO/IEC 18026 specifies the Coordinate variant record data type that can specify a coordinate value for any SRF. This data type is renamed SRM_Coordinate in this part of ISO/IEC 18023.

5.6.3.4 SRM_DSS_Code

11.2.7.3 DSS_Code of ISO/IEC 18026 specifies the DSS_Code selection data type that specifies the code for an available object reference surface. This data type is renamed SRM_DSS_Code in this part of ISO/IEC 18023.

5.6.3.5 SRM_EI_3D_Coordinate

11.9.7.3 EI_3D_Coordinate of ISO/IEC 18026 specifies the EI_3D_Coordinate record data type that specifies the 3D coordinate for an Equatorial Inertial SRF template. This data type is renamed SRM_EI_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.6 SRM_Euclidean_2D_Coordinate

11.9.7.4 Euclidean_2D_Coordinate of ISO/IEC 18026 specifies the Euclidean_2D_Coordinate record data type that specifies the 2D coordinate for a Euclidean space SRF template. This data type is renamed SRM_Euclidean_2D_Coordinate in this part of ISO/IEC 18023.

5.6.3.7 SRM_Euclidean_3D_Coordinate

11.9.7.5 Euclidean_3D_Coordinate of ISO/IEC 18026 specifies the Euclidean_3D_Coordinate record data type that specifies the 3D coordinate for a Euclidean space SRF template. This data type is renamed SRM_Euclidean_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.8 SRM_LSA_2D_Coordinate

11.9.7.6 LSA_2D_Coordinate of ISO/IEC 18026 specifies the LSA_2D_Coordinate record data type that specifies the coordinate for a Local Space Azimuthal SRF template. This data type is renamed SRM_LSA_2D_Coordinate in this part of ISO/IEC 18023.

5.6.3.9 SRM_LSP_2D_Coordinate

11.9.7.7 LSP_2D_Coordinate of ISO/IEC 18026 specifies the LSP_2D_Coordinate record data type that specifies the coordinate for a Local Space Polar SRF template. This data type is renamed SRM_LSP_2D_Coordinate in this part of ISO/IEC 18023.

5.6.3.10 SRM_LTSAS_3D_Coordinate

11.9.7.8 LTSAS_3D_Coordinate of ISO/IEC 18026 specifies the LTSAS_3D_Coordinate record data type that specifies the 3D coordinate for a Local Tangent Space Azimuthal Spherical SRF template. This data type is renamed SRM_LTSAS_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.11 SRM_LTSAS_Surface_Coordinate

11.9.7.9 LTSAS_Surface_Coordinate of ISO/IEC 18026 specifies the LTSAS_Surface_Coordinate record data type that specifies the surface coordinate for a Local Tangent Space Azimuthal Spherical SRF template. This data type is renamed SRM_LTSAS_Surface_Coordinate in this part of ISO/IEC 18023.

5.6.3.12 SRM_LTSC_3D_Coordinate

11.9.7.10 LTSC_3D_Coordinate of ISO/IEC 18026 specifies the LTSC_3D_Coordinate record data type that specifies the 3D coordinate for a Local Tangent Space Cylindrical SRF template. This data type is renamed SRM_LTSC_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.13 SRM_LTSC_Surface_Coordinate

11.9.7.11 LTSC_Surface_Coordinate of ISO/IEC 18026 specifies the LTSC_Surface_Coordinate record data type that specifies the surface coordinate for a Local Tangent Space Cylindrical SRF template. This data type is renamed SRM_LTSC_Surface_Coordinate in this part of ISO/IEC 18023.

5.6.3.14 SRM_LTSE_3D_Coordinate

11.9.7.12 LTSE_3D_Coordinate of ISO/IEC 18026 specifies the LTSE_3D_Coordinate record data type that specifies the 3D coordinate for a Local Tangent Space Euclidean SRF template. This data type is renamed SRM_LTSE_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.15 SRM_LTSE_Surface_Coordinate

11.9.7.13 LTSE_Surface_Coordinate of ISO/IEC 18026 specifies the LTSE_Surface_Coordinate record data type that specifies the surface coordinate for a Local Tangent Space Euclidean SRF template. This data type is renamed SRM_LTSE_Surface_Coordinate in this part of ISO/IEC 18023.

5.6.3.16 SRM_Map_Projection_3D_Coordinate

11.9.7.14 Map_Projection_3D_Coordinate of ISO/IEC 18026 specifies the Map_Projection_3D_Coordinate record data type that specifies the 3D coordinate for a map projection SRF template. This data type is renamed SRM_Map_Projection_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.17 SRM_Map_Projection_Surface_Coordinate

11.9.7.15 Map_Projection_Surface_Coordinate of IISO/IEC 18026 specifies the Map_Projection_Surface_Coordinate record data type that specifies the surface coordinate for a map projection SRF template. This data type is renamed SRM_Map_Projection_Surface_Coordinate in this part of ISO/IEC 18023.

5.6.3.18 SRM_Spherical_3D_Coordinate

11.9.7.16 Spherical_3D_Coordinate of ISO/IEC 18026 specifies the Spherical_3D_Coordinate record data type that specifies the 3D coordinate for a spherical SRF template. This data type is renamed SRM_Spherical_3D_Coordinate in this part of ISO/IEC 18023.

5.6.3.19 SRM_SRF_Parameters_Info

11.9.5 SRF_Parameters_Info of ISO/IEC 18026 specifies the SRF_Parameters_Info record data type that specifies the parameters of an SRF. This data type is renamed SRM_SRF_Parameters_Info in this part of ISO/IEC 18023.

5.6.3.20 SRM_Vector_3D

11.2.8.6 Vector_3D of ISO/IEC 18026 specifies the Vector_3D array data type that specifies a vector in Euclidean space. This data type is renamed SRM_Vector_3D in this part of ISO/IEC 18023.

5.6.4 Data types from ISO 19115

5.6.4.1 CI_OnlineResource

In B.3.2.5, ISO 19115 specifies the CI_OnlineResource record data type that specifies the means to access an on-line repository of information.

5.6.4.2 CI_RoleCode

In B.5.5, ISO 19115 specifies the CI_Role_Code selection selection data type that specifies the role of the responsible party.

5.6.4.3 MD_ClassificationCode

In B.5.11, ISO 19115 specifies the MD_ClassificationCode selection data type that specifies levels of security classification.

5.6.4.4 MD_KeywordTypeCode

In B.5.17, ISO 19115 specifies the MD_KeywordTypeCode selection data type that specifies the type of a keyword.

5.6.4.5 MD_RestrictionCode

In B.5.24, ISO 19115 specifies the MD_RestrictionCode selection data type that specifies restriction information.

http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_IEC_18023-1_Ed1.html