ISO/IEC 18023-1 SEDRIS functional specification

5       Fundamental data types

5.1    Introduction

5.1.1          Table of contents

The table of contents contained in Table 5.1 lists each of the data types used by SEDRIS.

Table 5.1 —Table of contents

5 Fundamental data types. 62

5.1 Introduction. 62

5.1.1    Table of contents. 62

5.1.2    Description. 69

5.2 Basic fundamental data types. 69

5.2.1    Overview.. 69

5.2.2    Numbers. 69

5.2.3    Characters and strings. 70

5.2.4    Enumerated data types. 71

5.2.4.1    Description  71

5.2.4.2    Access_Mode  71

5.2.4.3    Boolean  71

5.2.4.4    Branch_Range_Matching  71

5.2.4.5    Colour_Binding  72

5.2.4.6    Continuous_LOD_Select_Choice  72

5.2.4.7    Display_Type  73

5.2.4.8    Hierarchy_Inclusion  73

5.2.4.9    ID_Implementation_Level 73

5.2.4.10   Image_Scan_Direction  74

5.2.4.11   Image_Scan_Direction_Z  75

5.2.4.12   Inclusion_Test 76

5.2.4.13   Interval_Type  76

5.2.4.14   ITR_Behaviour 77

5.2.4.15   LSR_Transformation_Axis 77

5.2.4.16   Model_Reference_Type  78

5.2.4.17   Month  78

5.2.4.18   Octant 79

5.2.4.19   Present_In  80

5.2.4.20   Quadrant 81

5.2.4.21   Reference_Surface_Elevation_Select 81

5.2.4.22   Reference_Surface_LOD_Select 82

5.2.4.23   Search_Bounds_Closure  82

5.2.4.24   Search_Dimension  82

5.2.4.25   Season  83

5.2.4.26   Sibling_Traversal_Order 83

5.2.4.27   State_Mismatch_Behaviour 84

5.2.4.28   Time_Of_Day  84

5.2.5    Selection data types. 85

5.2.5.1    Description  85

5.2.5.2    Axis_Alignment 85

5.2.5.3    Camera_Projection_Type  86

5.2.5.4    CI_RoleCode  86

5.2.5.5    Colour_Mapping  86

5.2.5.6    Colour_Model 88

5.2.5.7    DRM_Class 89

5.2.5.8    EDCS_Attribute_Code  94

5.2.5.9    EDCS_Classification_Code  94

5.2.5.10   EDCS_Metadata_Code  95

5.2.5.11   EDCS_Scale_Code  95

5.2.5.12   EDCS_Unit_Code  95

5.2.5.13   Element_Type_Code  95

5.2.5.14   Enumerated_Or_Selection_Type  95

5.2.5.15   Feature_Topology_Level 96

5.2.5.16   Feature_Union_Reason  98

5.2.5.17   Font_Style  99

5.2.5.18   Geometry_Topology_Level 99

5.2.5.19   Grid_Overlap_Operator 101

5.2.5.20   Image_Component_Type  101

5.2.5.21   Image_Mapping_Method  102

5.2.5.22   Image_Projection_Type  103

5.2.5.23   Image_Signature  103

5.2.5.24   Image_Wrap  111

5.2.5.25   Index_Code  112

5.2.5.26   Interpolation_Type  113

5.2.5.27   Keyword_Type_Code  115

5.2.5.28   LOD_Data_Type  116

5.2.5.29   Lookup_Signature  116

5.2.5.30   Lookup_Type  117

5.2.5.31   Media_Format 120

5.2.5.32   Ordering_Reason  121

5.2.5.33   Pixel_Fill_Method  122

5.2.5.34   Predefined_Function  122

5.2.5.35   Property_Data_Value_Type  127

5.2.5.36   Reference_Vector_Type  128

5.2.5.37   Search_Quality  130

5.2.5.38   Search_Rule_Type  130

5.2.5.39   Search_Value_Type  135

5.2.5.40   Security_Restriction_Type  137

5.2.5.41   Shading_Method  138

5.2.5.42   Sound_Format 138

5.2.5.43   Spacing_Type  139

5.2.5.44   Spatial_Index_Spacing_Unit 140

5.2.5.45   Status_Code  140

5.2.5.46   Symbol_Format 143

5.2.5.47   Time_Configuration  144

5.2.5.48   Time_Data_Type  145

5.2.5.49   Time_Measurement_Type  145

5.2.5.50   Time_Significance  146

5.2.5.51   Transmittal_API_Function  147

5.2.5.52   Traversal_Order 149

5.2.5.53   Underline_Style  149

5.2.5.54   Unmatched_State_Behaviour 150

5.2.5.55   Volumetric_Shape  150

5.2.6    Set Data Types. 151

5.2.6.1    Introduction  151

5.2.6.2    Display_Side  151

5.2.6.3    Display_Style  151

5.2.6.4    General_Hierarchy_Order 152

5.2.6.5    Polygon_Flags 152

5.2.6.6    Presentation_Domain  155

5.3 Structured fundamental data types. 156

5.3.1    Introduction. 156

5.3.2    Array data types. 156

5.3.3    Record data types. 156

5.3.3.1    Introduction  156

5.3.3.2    Absolute_Time_Interval_Entry  157

5.3.3.3    Absolute_Time_Interval_Fields 157

5.3.3.4    Absolute_Time_Point_Fields 158

5.3.3.5    Access_Fields 158

5.3.3.6    Address 158

5.3.3.7    AEC_Coordinate_3D   158

5.3.3.8    AEC_Location_3D_Fields 158

5.3.3.9    Aggregate_Feature_Fields 158

5.3.3.10   Aggregate_Geometry_Fields 159

5.3.3.11   ALCC_Coordinate_3D   159

5.3.3.12   ALCC_Location_3D_Fields 159

5.3.3.13   Alternate_Hierarchy_Parameters 159

5.3.3.14   Alternate_Hierarchy_Related_Features_Fields 159

5.3.3.15   Alternate_Hierarchy_Related_Geometry_Fields 160

5.3.3.16   AM_Coordinate_3D   160

5.3.3.17   AM_Location_3D_Fields 160

5.3.3.18   Animation_Behaviour_Fields 160

5.3.3.19   Animation_Range  160

5.3.3.20   Animation_Related_Geometry_Fields 160

5.3.3.21   Animation_Select_Parameters 161

5.3.3.22   Any_Enumerated_Or_Selection_Value  161

5.3.3.23   Any_Search_Value  162

5.3.3.24   AOM_Coordinate_3D   163

5.3.3.25   AOM_Location_3D_Fields 163

5.3.3.26   APS_Coordinate_3D   163

5.3.3.27   APS_Location_3D_Fields 163

5.3.3.28   Arc_Fields 163

5.3.3.29   ATM_Coordinate_3D   163

5.3.3.30   ATM_Location_3D_Fields 163

5.3.3.31   Attribute_Set_Index_Fields 163

5.3.3.32   Attribute_Set_Index_Control_Link_Fields 164

5.3.3.33   Attribute_Set_Table_Fields 164

5.3.3.34   Attribute_Set_Table_Group_Fields 164

5.3.3.35   AUPS_Coordinate_3D   164

5.3.3.36   AUPS_Location_3D_Fields 164

5.3.3.37   AUTM_Coordinate_3D   164

5.3.3.38   AUTM_Location_3D_Fields 164

5.3.3.39   Axis_Fields 165

5.3.3.40   Base_Positional_Light_Fields 165

5.3.3.41   Base_Reference_Vector_Fields 165

5.3.3.42   Base_Summary_Item_Fields 165

5.3.3.43   Base_Time_Data_Fields 165

5.3.3.44   Blend_Directional_Light_Fields 165

5.3.3.45   Browse_Media_Fields 166

5.3.3.46   Camera_Point_Fields 166

5.3.3.47   Citation_Fields 166

5.3.3.48   Classification_Data_Fields 166

5.3.3.49   Classification_Entry  166

5.3.3.50   Classification_Parameters 167

5.3.3.51   Classification_Related_Feature_Fields 167

5.3.3.52   Classification_Related_Geometry_Fields 167

5.3.3.53   CMY_Colour_Control_Link_Fields 167

5.3.3.54   CMY_Colour_Fields 168

5.3.3.55   CMY_Data  168

5.3.3.56   CMYK_Data  168

5.3.3.57   Colour_Entry_Table_Fields 168

5.3.3.58   Colour_Fields 168

5.3.3.59   Colour_Index_Control_Link_Fields 168

5.3.3.60   Colour_Index_Fields 168

5.3.3.61   Colour_Shininess_Fields 169

5.3.3.62   Colour_Table_Group_Fields 169

5.3.3.63   Cone_Directional_Light_Fields 169

5.3.3.64   Conformal_Behaviour_Fields 169

5.3.3.65   Contact_Information  169

5.3.3.66   Continuous_LOD_Related_Geometry_Fields 170

5.3.3.67   Continuous_LOD_Select_Parameters 170

5.3.3.68   Control_Link_Fields 170

5.3.3.69   Cross_Reference_Fields 170

5.3.3.70   Cylindrical_Volume_Extent_Entry  170

5.3.3.71   Cylindrical_Volume_Extent_Fields 170

5.3.3.72   Data_Quality_Fields 171

5.3.3.73   Data_Table_Extents 171

5.3.3.74   Description_Fields 171

5.3.3.75   Distance_LOD_Data_Fields 171

5.3.3.76   DRM_Class_Fields 171

5.3.3.77   DRM_Class_Summary_Item_Fields 182

5.3.3.78   EC_2D_Coordinate  182

5.3.3.79   EC_Location_2D_Fields 182

5.3.3.80   EDCS_Use_Summary_Item_Fields 182

5.3.3.81   Edge_Direction_Fields 182

5.3.3.82   Element_Type  182

5.3.3.83   Ellipse_Fields 183

5.3.3.84   Elliptic_Cylinder_Fields 183

5.3.3.85   Enumeration_Axis_Fields 183

5.3.3.86   Environment_Root_Fields 183

5.3.3.87   Environmental_Domain_Summary_Fields 183

5.3.3.88   Face_Direction_Fields 183

5.3.3.89   Fade_Range_Fields 184

5.3.3.90   Feature_Hierarchy_Fields 184

5.3.3.91   Feature_ID_Fields 184

5.3.3.92   Feature_ID_Control_Link_Fields 184

5.3.3.93   Feature_Hierarchy_Fields 184

5.3.3.94   Flashing_Light_Behaviour_Fields 184

5.3.3.95   Float_Interval 184

5.3.3.96   Function_Fields 185

5.3.3.97   GC_Coordinate_3D   185

5.3.3.98   GC_Location_3D_Fields 185

5.3.3.99   GCS_Coordinate_3D   185

5.3.3.100 GCS_Location_3D_Fields 185

5.3.3.101 GD_Coordinate_2D   185

5.3.3.102 GD_Coordinate_3D   185

5.3.3.103 GD_Location_2D_Fields 185

5.3.3.104 GD_Location_3D_Fields 186

5.3.3.105 GEI_Coordinate_3D   186

5.3.3.106 GEI_Location_3D_Fields 186

5.3.3.107 General_Hierarchy_Select 186

5.3.3.108 Geometry_ID_Fields 187

5.3.3.109 Geometry_ID_Control_Link_Fields 187

5.3.3.110 Geometry_Topology_Hierarchy_Fields 187

5.3.3.111 GM_Coordinate_3D   188

5.3.3.112 GM_Location_3D_Fields 188

5.3.3.113 Grid_Overlap_Fields 188

5.3.3.114 GSE_Coordinate_3D   188

5.3.3.115 GSE_Location_3D_Fields 188

5.3.3.116 GSM_Coordinate_3D   188

5.3.3.117 GSM_Location_3D_Fields 188

5.3.3.118 Hierarchy_Data_Fields 188

5.3.3.119 Hierarchy_Order_Parameters 189

5.3.3.120 Hierarchy_Select_Parameters 191

5.3.3.121 Hierarchy_Summary_Item_Fields 191

5.3.3.122 HSV_Colour_Control_Link_Fields 192

5.3.3.123 HSV_Colour_Fields 192

5.3.3.124 HSV_Data  192

5.3.3.125 Image_Anchor_Fields 192

5.3.3.126 Image_Fields 192

5.3.3.127 Image_Lookup_Fields 193

5.3.3.128 Image_Mapping_Function_Fields 194

5.3.3.129 Image_MIP_Extents 194

5.3.3.130 Image_Texel_Location_3D   194

5.3.3.131 Index_LOD_Data_Fields 195

5.3.3.132 Index_Range  195

5.3.3.133 Infinite_Light_Fields 195

5.3.3.134 Inline_Colour_Fields 195

5.3.3.135 In_Out_Fields 195

5.3.3.136 Integer_Interval 195

5.3.3.137 Integer_Unsigned_Interval 196

5.3.3.138 Interface_Template_Fields 196

5.3.3.139 Interval_Axis_Fields 196

5.3.3.140 Interval_Axis_Value  196

5.3.3.141 Irregular_Axis_Fields 196

5.3.3.142 Keywords_Fields 197

5.3.3.143 Keyword_Structure  197

5.3.3.144 LCC_Coordinate_2D   197

5.3.3.145 LCC_Location_2D_Fields 197

5.3.3.146 Light_Rendering_Properties_Control_Link_Fields 197

5.3.3.147 Light_Rendering_Properties_Fields 198

5.3.3.148 Light_Source_Control_Link_Fields 198

5.3.3.149 Light_Source_Fields 198

5.3.3.150 Linear_Geometry_Fields 198

5.3.3.151 Line_Fields 198

5.3.3.152 Lineage_Fields 198

5.3.3.153 Literal_Fields 199

5.3.3.154 Lobe_Data_Fields 199

5.3.3.155 Local_4x4_Fields 199

5.3.3.156 Locale  199

5.3.3.157 Location_Table_Fields 199

5.3.3.158 LOD_Entry  200

5.3.3.159 LOD_Related_Features_Fields 200

5.3.3.160 LOD_Related_Geometry_Fields 200

5.3.3.161 LOD_Select_Parameters 200

5.3.3.162 LSR_Coordinate_2D   200

5.3.3.163 LSR_Coordinate_3D   201

5.3.3.164 LSR_Location_2D_Fields 201

5.3.3.165 LSR_Location_3D_Control_Link_Fields 201

5.3.3.166 LSR_Location_3D_Fields 201

5.3.3.167 LTP_Coordinate_2D   201

5.3.3.168 LTP_Coordinate_3D   201

5.3.3.169 LTP_Location_2D_Fields 201

5.3.3.170 LTP_Location_3D_Fields 201

5.3.3.171 M_Coordinate_2D   202

5.3.3.172 M_Location_2D_Fields 202

5.3.3.173 Map_Scale_LOD_Data_Fields 202

5.3.3.174 Mesh_Face_Table_Fields 202

5.3.3.175 Model_Fields 202

5.3.3.176 Model_Instance_Template_Index_Fields 202

5.3.3.177 Moving_Light_Behaviour_Fields 202

5.3.3.178 Oct_Tree_Data_Fields 203

5.3.3.179 Oct_Tree_Related_Features_Fields 203

5.3.3.180 Oct Tree_Related_Geometry_Fields 203

5.3.3.181 Oct_Tree_Select_Parameters 203

5.3.3.182 OM_Coordinate_2D   203

5.3.3.183 OM_Location_2D_Fields 203

5.3.3.184 Overload_Priority_Index_Fields 204

5.3.3.185 Packed_Hierarchy  204

5.3.3.186 Packed_Hierarchy_Object 204

5.3.3.187 Packed_Hierarchy_Reference  204

5.3.3.188 Parallelepiped_Volume_Extent_Entry  204

5.3.3.189 Parallelepiped_Volume_Extent_Fields 205

5.3.3.190 Patch_Fields 205

5.3.3.191 Perimeter_Related_Feature_Topology_Fields 205

5.3.3.192 Perimeter_Related_Features_Fields 205

5.3.3.193 Perimeter_Related_Geometry_Fields 205

5.3.3.194 Perimeter_Related_Geometry_Topology_Fields 205

5.3.3.195 Point_Of_Contact_Fields 205

5.3.3.196 Polygon_Control_Link_Fields 206

5.3.3.197 Polygon_Fields 206

5.3.3.198 Positional_Light_Fields 206

5.3.3.199 Predefined_Function_Fields 206

5.3.3.200 Presentation_Domain_Fields 206

5.3.3.201 Primitive_Summary_Item_Fields 207

5.3.3.202 Process_Step_Fields 207

5.3.3.203 Property_Characteristic_Fields 207

5.3.3.204 Property_Fields 207

5.3.3.205 Property_Data_Value  207

5.3.3.206 Property_Description_Fields 208

5.3.3.207 Property_Grid_Fields 208

5.3.3.208 Property_Table_Reference_Control_Link_Fields 208

5.3.3.209 Property_Table_Reference_Fields 208

5.3.3.210 Property_Table_Reference_Table_Fields 209

5.3.3.211 Property_Value_Fields 209

5.3.3.212 PS_Coordinate_2D   209

5.3.3.213 PS_Location_2D_Fields 209

5.3.3.214 Pseudo_Code_Function_Fields 209

5.3.3.215 Pyramid_Directional_Light_Fields 209

5.3.3.216 Quad_Tree_Data_Fields 209

5.3.3.217 Quad_Tree_Related_Features_Fields 210

5.3.3.218 Quad Tree_Related_Geometry_Fields 210

5.3.3.219 Quad_Tree_Select_Parameters 210

5.3.3.220 Reference_Origin_Fields 210

5.3.3.221 Reference_Surface_Fields 210

5.3.3.222 Reference_Vector_Control_Link_Fields 210

5.3.3.223 Reference_Vector_Fields 211

5.3.3.224 Reference_Vector_With_Control_Index_Fields 211

5.3.3.225 Reference_Vector_Table_Fields 211

5.3.3.226 Regular_Axis_Fields 211

5.3.3.227 Relative_Time_Interval_Fields 211

5.3.3.228 Relative_Time_Point_Fields 212

5.3.3.229 Relative_To_Absolute_Time_Interval_Entry  212

5.3.3.230 Relative_To_Absolute_Time_Point_Entry  212

5.3.3.231 Remaining_Objects_List 212

5.3.3.232 Remaining_Packed_Hierarchies_List 212

5.3.3.233 Rendering_Priority_Level_Fields 213

5.3.3.234 Rendering_Properties_Fields 213

5.3.3.235 RGB_Colour_Control_Link_Fields 213

5.3.3.236 RGB_Colour_Fields 213

5.3.3.237 RGB_Data  213

5.3.3.238 Rotating_Light_Behaviour_Fields 214

5.3.3.239 Rotation_Control_Link_Fields 214

5.3.3.240 Rotation_Data  214

5.3.3.241 Rotation_Fields 214

5.3.3.242 Scale_Control_Link_Fields 214

5.3.3.243 Scale_Fields 214

5.3.3.244 Search_Bounds 215

5.3.3.245 Search_Rule  215

5.3.3.246 Search_Rule_Component_DRM_Class 215

5.3.3.247 Search_Rule_Component_Field  216

5.3.3.248 Search_Rule_Component_Field_Array  216

5.3.3.249 Search_Rule_Component_Field_Range  216

5.3.3.250 Search_Rule_Field  216

5.3.3.251 Search_Rule_Field_Array  216

5.3.3.252 Search_Rule_Field_Range  217

5.3.3.253 Search_Rule_Predicate  217

5.3.3.254 Season_Fields 217

5.3.3.255 Security_Information  217

5.3.3.256 Separating_Plane_Data_Fields 217

5.3.3.257 Separating_Plane_Related_Geometry_Fields 217

5.3.3.258 Separating_Plane_Select_Parameters 218

5.3.3.259 SM_Coordinate_3D   218

5.3.3.260 SM_Location_3D_Fields 218

5.3.3.261 Sound_Fields 218

5.3.3.262 Sound_Instance_Control_Link_Fields 218

5.3.3.263 Sound_Instance_Fields 218

5.3.3.264 Source_Fields 219

5.3.3.265 Spatial_Index_Data_Fields 219

5.3.3.266 Spatial_Index_Parameters 219

5.3.3.267 Spatial_Index_Related_Feature_Topology_Fields 219

5.3.3.268 Spatial_Index_Related_Features_Fields 220

5.3.3.269 Spatial_Index_Related_Geometry_Fields 220

5.3.3.270 Spatial_Index_Related_Geometry_Topology_Fields 220

5.3.3.271 Spatial_Resolution_Level_Of_Detail_Data_Fields 220

5.3.3.272 Spherical_Volume_Extent_Fields 220

5.3.3.273 Spot_Light_Fields 221

5.3.3.274 SRF_Parameters 221

5.3.3.275 SRF_Summary_Fields 221

5.3.3.276 Stamp_Behaviour_Fields 221

5.3.3.277 State_Control_Link_Fields 221

5.3.3.278 State_Data_Fields 221

5.3.3.279 State_Entry  222

5.3.3.280 State_Related_Features_Fields 222

5.3.3.281 State_Related_Geometry_Fields 222

5.3.3.282 State_Select_Parameters 222

5.3.3.283 String  222

5.3.3.284 Strobing_Light_Behaviour_Fields 223

5.3.3.285 Symbol_Fields 223

5.3.3.286 Table_Property_Description_Fields 223

5.3.3.287 Text_Fields 223

5.3.3.288 Text_Font 223

5.3.3.289 Texture_Coordinate_Control_Link_Fields 224

5.3.3.290 Texture_Coordinate_Fields 224

5.3.3.291 Texture_Coordinate_Table_Fields 224

5.3.3.292 Time_Entry  224

5.3.3.293 Time_Interval_Entry  224

5.3.3.294 Time_Interval_Fields 225

5.3.3.295 Time_Of_Day_Fields 225

5.3.3.296 Time_Point_Entry  225

5.3.3.297 Time_Point_Fields 225

5.3.3.298 Time_Related_Features_Fields 225

5.3.3.299 Time_Related_Geometry_Fields 226

5.3.3.300 Time_Select_Parameters 226

5.3.3.301 TM_Coordinate_2D   226

5.3.3.302 TM_Location_2D_Fields 226

5.3.3.303 Translation_Control_Link_Fields 226

5.3.3.304 Translation_Fields 227

5.3.3.305 Translucency_Control_Link_Fields 227

5.3.3.306 Translucency_Fields 227

5.3.3.307 Transmittal_Root_Fields 227

5.3.3.308 Transmittal_Summary_Fields 227

5.3.3.309 Union_Of_Features_Fields 228

5.3.3.310 Union_Of_Feature_Topology_Fields 228

5.3.3.311 Union_Of_Geometry_Fields 228

5.3.3.312 Union_Of_Geometry_Hierarchy_Fields 228

5.3.3.313 Union_Of_Geometry_Topology_Fields 228

5.3.3.314 Union_Of_Primitive_Geometry_Fields 229

5.3.3.315 Unused_Fields 229

5.3.3.316 UPS_Coordinate_2D   229

5.3.3.317 UPS_Location_2D_Fields 229

5.3.3.318 URN   229

5.3.3.319 User_Data  229

5.3.3.320 UTM_Coordinate_2D   229

5.3.3.321 UTM_Location_2D_Fields 230

5.3.3.322 Variable_Fields 230

5.3.3.323 Vector_3  230

5.3.3.324 Vertex_With_Component_Indices_Fields 230

5.3.3.325 Volume_Extent_Entry  230

5.3.3.326 Volume_Light_Behaviour_Fields 230

5.3.3.327 Volume_LOD_Data_Fields 231

5.3.3.328 Volume_LOD_Entry  231

5.3.3.329 World_Transformation_Fields 231

5.4 Private data types. 231

5.4.1    Overview.. 231

5.4.2    Iterator 231

5.4.3    Object 232

5.4.4    Packed_Hierarchy_Object_Access. 232

5.4.5    Search_Boundary. 232

5.4.6    Search_Filter 232

5.4.7    Test_Data. 232

5.4.8    Transmittal 233

5.5 Function data types. 233

5.5.1    Overview.. 233

5.5.2    Search_Rule_Predicate. 233

5.5.3    Status_Logger 233

5.1.2          Description

This clause defines the fundamental data types used within SEDRIS to specify the various DRM class instances which are to be represented. Such data types are composed of basic and constructed fundamental data types. The DRM class definitions defined in Clause 6 use the fundamental data types as the building blocks for creating SEDRIS objects. The API defined in Clause 7 uses both the data types and data class definitions to pass information between the application program and the SEDRIS data 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 numbers, alphanumeric characters including strings of these, Booleans and other individual data definitions.

5.2.2          Numbers

There are two basic categories of numbers which are represented in the fundamental data types. These are integer numbers and floating point numbers.

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. The following represent the three general integer data types:

Byte
Short_Integer
Integer

The following are the corresponding non-negative integer data types:

Byte_Unsigned
Short_Integer_Unsigned
Integer_Unsigned

The following are the corresponding positive integer data types:

Byte_Positive
Short_Integer_Positive
Integer_Positive

All implementations which conform to this standard shall support at least the minimum range specified in Error! Reference source not found..

Table 5.2 —Minimum value ranges for integer data types

Data type

Value range

Byte

[-127, 127]

Byte_Unsigned

[0, 255]

Byte_Positive

[1, 255]

Short_Integer

[-16383, 16383]

Short_Integer_Unsigned

[0, 65535]

Short_Integer_Positive

[1, 65535]

Integer

[-2147483647, 2147483647]

Integer_Unsigned

[0, 4294967295]

Integer_Positive

[1, 4294967295]

There is one numeric data type defined in [2.I18025] that is used in this standard:

EDCS_Integer

This data type is equivalent to the Integer data type defined above.

There are two precisions of floating point numbers defined as fundamental data types:

Float
Long_Float

These correspond to the single and double precision floating point types defined by the IEEE standard for floating point numbers. The specific values for POSITIVE_INFINITY and NEGATIVE_INFINITY shall be supported. However, implementations on architectures which support other floating point representations are allowed and shall support POSITIVE_INFINITY and NEGATIVE_INFINITY as provided in those floating point representations.

5.2.3          Characters and strings

Alphanumeric characters are encoded as UTF-8 as specified in ISO/IEC 10646-1 (otherwise known as Unicode). UTF-8 supports Latin characters as defined in ISO/IEC 646 but also has the ability of representing international characters. Each character is comprised of 1 through 6 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 which specify how the string is to be interpreted (see 5.3.3.282).

The fundamental data type for representing characters is:

Character

The String data type is not a basic fundamental data type. Instead, it is a structured fundamental data type as defined in 5.3.3.282.

5.2.4          Enumerated data types

5.2.4.1       Description

Enumerated data types are fundamental data types whose values are specified from an ordered list of names. The names are assigned numbers whose values indicate the position within the ordered list. It is these numbers which are actually manipulated by the implementation.

The enumerated data types which are supported by SEDRIS are defined in this subclause.

5.2.4.2       Access_Mode

This data type is used to specify the mode in which a SEDRIS transmittal can be accessed. The following are the supported modes are shown in Table 5.3:

Table 5.3 —Access_Mode values

Value

Definition

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 content.

Access_Mode ::= (
   READ_ONLY,
   UPDATE,
   CREATE )

5.2.4.3       Boolean

Boolean data types have two values:  FALSE and TRUE.  The fundamental data type for representing a Boolean value is shown in Table 5.4:

Table 5.4 —Boolean values

Value

Definition

FALSE

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

TRUE

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

Boolean ::= (
   FALSE,
   TRUE )

5.2.4.4       Branch_Range_Matching

This data type specifies how to test the fields of a branch’s link class when attempting to match them against the values defined in a search range. Valid values are described in Table 5.5.

Table 5.5 —Branch_Range_Matching values

Value

Definition

EXACT

For a match to be successful, the search branch shall match exactly the found branch.

FULL_CONTAINMENT

For a match to be successful, the search branch shall be completely contained within the found branch.

INTERSECTION

For match to be successful, the search branch shall intersect the found branch.

Branch_Range_Matching ::= (
   EXACT,
   FULL_CONTAINMENT,
   INTERSECTION )

5.2.4.5       Colour_Binding

This data type specifies the colour inheritance/overload rule. Allowable values for Colour_Binding are defined in Table 5.6.

Table 5.6 —Colour_Binding values

Value

Definition

NORMAL

The colour of a geometry attribute is defined as the default SEDRIS attribute binding. Attributes defined by a component will overload its parent (i.e., the last colour wins).

PARENT_OVERRIDE

This setting allows the given <DRM Geometry> instance to override the default SEDRIS attribute binding; that is, to override any <DRM Colour>s specified by objects in its component tree.

Colour_Binding ::= (
   NORMAL,
   PARENT_OVERRIDE )

5.2.4.6       Continuous_LOD_Select_Choice

This data type specifies specifies which level (or levels) of detail are to be traversed. Valid values are described in Table 5.7.

Table 5.7 —Continuous_LOD_Select_Choice values

Value

Definition

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.4.7       Display_Type

This data type specifies the form of the display used to render a light. Valid values are described in Table 5.8.

Table 5.8 —Display_Type values

Value

Definition

RASTER

The light is to be rendered to a raster display.

CALLIGRAPHIC

The light is to be rendered to a calligraphic display.

Display_Type ::= (
   RASTER,
   CALLIGRAPHIC )

5.2.4.8       Hierarchy_Inclusion

This data type specifies whether the classes of <DRM Aggregate Feature> and <DRM Aggregate Geometry> instances and their components are included or excluded. Valid values are described in Table 5.9.

Table 5.9 —Hierarchy_Inclusion values

Value

Definition

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 defined conditions.

Hierarchy_Inclusion ::= (
   EXCLUDE_ALL,
   INCLUDE_ALL,
   EVALUATE_RULES )

5.2.4.9       ID_Implementation_Level

This data type indicates the level of implementation of IDs. Valid values are described in Table 5.10.

Table 5.10 —ID_Implementation_Level values

Value

Definition

NONE

No IDs are provided.

UNIQUE

IDs that are unique between the opening and and closing of a transmittal are provided.

UNIQUE_AND_PERSISTENT

Unique and persistent IDs are provided.

ID_Implementation_Level ::= (
   NONE,
   UNIQUE,
   UNIQUE_AND_PERSISTENT )

5.2.4.10   Image_Scan_Direction

This data type specifies the manner in which an image layer is to be scanned. Table 5.11 defines the allowable values and the corresponding scan directions.

Table 5.11 — 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

As an 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 WxH in this 2D space has W image elements in X direction and H image elements in the Y direction.

Figure 5.1 — Image scan direction in X and Y

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 ::= (
   RIGHT_UP,
   RIGHT_DOWN,
   DOWN_RIGHT,
   DOWN_LEFT,
   LEFT_UP,
   LEFT_DOWN,
   UP_RIGHT,
   UP_LEFT )

5.2.4.11   Image_Scan_Direction_Z

This data type specifies the manner in which image depth is to be scanned. Table 5.12 defines the allowable values and corresponding scan direction.

Table 5.12 — Image_Scan_Direction_Z values

Value

Scan Direction

Image Origin

Z_NONE

Not applicable

Not applicable

Z_BACK

front to back

front

Z_FRONT

back to front

back

Following the example in 5.2.4.10 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.4.10 Image_Scan_Direction) are displayed starting at Z=0 and in the directuon of positive Z axis.

Figure 5.2 — Image scan direction in Z

 

Image_Scan_Direction_Z ::= (
   Z_NONE,
   Z_BACK,
   Z_FRONT )

5.2.4.12   Inclusion_Test

This data type specifies how identified objects relate to the search boundary. Valid values are described in Table 5.13.

Table 5.13 —Inclusion_Test values

Value

Definition

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.

Inclusion_Test ::= (
   FULLY_INCLUDED,
   PARTIALLY_INCLUDED )

5.2.4.13   Interval_Type

This data type specifies the type of interval for the various interval data types. Valid values are described in Table 5.14.

Table 5.14 —Interval_Type values

Value

Definition

OPEN

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

CLOSED

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

LOWER_CLOSED_UPPER_OPEN

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

UPPER_CLOSED_LOWER_OPEN

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

Interval_Type ::= (
   OPEN,
   CLOSED,
   LOWER_CLOSED_UPPER_OPEN,
   UPPER_CLOSED_LOWER_OPEN )

5.2.4.14   ITR_Behaviour

This data type specifies the desired traversal for an iterator or function when an Inter-Transmittal Reference (ITR) is encountered as defined in Table 5.15.

Table 5.15 —ITR_Behaviour values

Value

Definition

RESOLVE

Automatically resolve ITR references as they are encountered and continue to search as normal within the new transmittal.

A SEDRIS transmittal that has been opened in this way cannot be updated. The transmittal shall be explicitly opened for writing or modification to do this.

REPORT

Any 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.4.15   LSR_Transformation_Axis

This data type specifies which axis to rotate around, scale by, or translate along. Allowable values are defined in Table 5.16.

Table 5.16 —LSR_Transformation_Axis values

Value

Definition

X

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

Y

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

Z

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 ::= (
   X,
   Y,
   Z,
   ALL,
   AXIS_REFERENCE_VECTOR )

5.2.4.16   Model_Reference_Type

This data type specifies how a <DRM Model> is referenced within a transmittal. Valid values are described in Table 5.17.

Table 5.17 —Model_Reference_Type values

Value

Definition

COMPONENT

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

ROOT

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

ROOT_AND_COMPONENT

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

Model_Reference_Type ::= (
   COMPONENT,
   ROOT,
   ROOT_AND_COMPONENT )

5.2.4.17   Month

Month data types represent each month of the calendar year. Valid values are described in Table 5.18.

Table 5.18 —Month values

Value

Definition

JANUARY

The time period in question is in January.

FEBRUARY

The time period in question is in February.

MARCH

The time period in question is in March.

APRIL

The time period in question is in April.

MAY

The time period in question is in May.

JUNE

The time period in question is in June.

JULY

The time period in question is in July.

AUGUST

The time period in question is in August.

SEPTEMBER

The time period in question is in September.

OCTOBER

The time period in question is in October.

NOVEMBER

The time period in question is in November.

DECEMBER

The time period in question is in December.

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

5.2.4.18   Octant

This data type indicates which octant contains the data of interest. It is used by <DRM Oct Tree Data> to specify which octant of an oct tree is represented by the associated <DRM Feature Hierarchy> (for an <DRM Oct Tree Related Features>) or <DRM Geometry Hierarchy> (for an <DRM Oct Tree Related Geometry>).

The identification of the octants is as shown in Figure 5.3. Additional information may be found in [SAMET].

Figure 5.3 — Oct-tree octant identification

 

Octant ::= (
   UPPER_SOUTHWEST,
   UPPER_NORTHWEST,
   LOWER_SOUTHWEST,
   LOWER_NORTHWEST,
   UPPER_SOUTHEAST,
   UPPER_NORTHEAST,
   LOWER_SOUTHEAST,
   LOWER_NORTHEAST )

5.2.4.19   Present_In

This data type specifies whether certain items are present within one or more <DRM Environment Root>s and/or one or more <DRM Model>s within the scope of a <DRM Transmittal Root> being described. Valid values are described in Table 5.19.

Table 5.19 —Present_In values

Value

Definition

NONE

The items are not present.

ENVIRONMENT_ROOT

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

MODELS

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

ENVIRONMENT_ROOT_AND_MODELS

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

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

5.2.4.20   Quadrant

This data type is used by <DRM Quad Tree Data> to specify which quadrant of a quad tree is represented by the associated <DRM Feature Hierarchy> (for a <DRM Quad Tree Related Features>) or <DRM Geometry Hierarchy> (for a <DRM Quad Tree Related Geometry>).

The identification of the quadrants is as shown in Figure 5.3. Additional information may be found in [SAMET].

Missing figure

Figure 5.4 — Quad-tree quadrant identification

Quadrant ::= (
   NORTHWEST,
   NORTHEAST,
   SOUTHWEST,
   SOUTHEAST )

5.2.4.21   Reference_Surface_Elevation_Select

This data type is used by a <DRM Reference Surface> to specify exactly one element from a ray/surface intersection set. Valid values are described in Table 5.20.

The elevation resolution process for a <DRM Location 2D> is as follows:

A given <DRM Location 2D> corresponds to the (unique) ray which is:

a.   Normal to the surface of the SRF ellipsoid,

b.   Intersects the ellipsoid at the same horizontal coordinates as the <DRM Location 2D>, and

c.   Extends below the surface of the ellipsoid to a depth equal the minor radius of the ellipsoid.

The intersection of this ray with the resolution surface defines the corresponding <DRM Location 3D>. This assumes, however, that the ray/surface intersection set contains exactly one element. Reference_Surface_Elevation_Select. In the case when the intersection set contains more than one intersection element, the Reference_Surface_Elevation_Selection specifies which element to choose from that set.

Table 5.20 —Reference_Surface_Elevation_Select values

Value

Definition

CLOSEST_TO_ORM_CENTRE

The intersection element to use is the one closest to the object reference model centre.

CLOSEST_TO_VERTICAL_DATUM

The intersection element to use is the one closest to the vertical datum.

HIGHEST

The intersection element to use is the one with the highest value.

Reference_Surface_Elevation_Select ::= (
   CLOSEST_TO_ORM_CENTRE,
   CLOSEST_TO_VERTICAL_DATUM,
   HIGHEST )

5.2.4.22   Reference_Surface_LOD_Select

This data type is used by a <DRM Reference Surface> whose associated <DRM Geometry Hierarchy> contains <DRM Level Of Detail Related Geometry> to select which branch of the <DRM Level Of Detail Related Geometry> is to be used to resolve <DRM Location 2D> objects, when more than one branch could apply to a given <DRM Location 2D>. This data type is not used for <DRM Continuous Level Of Detail Related Geometry>. Valid values are described in Table 5.21.

Table 5.21 —Reference_Surface_LOD_Select values

Value

Definition

FULL

The full resolution level is used to resolve the object.

LEAST_DETAILED

The least detailed resolution is used to resolve the object.

Reference_Surface_LOD_Select ::= (
   FULL,
   LEAST_DETAILED )

5.2.4.23   Search_Bounds_Closure

This data type specifies whether a spatial search area has full or partial closure. Partial closure allows the search area to be part of a tessellation; it can then be guaranteed that any single point is inside a unique component of the tessellation. Valid values are described in Table 5.22.

Table 5.22 —Search_Bounds_Closure values

Value

Definition

FULLY_CLOSED

The spatial search area is fully closed.

PARTIAL

The spatial search area is partially closed.

Search_Bounds_Closure ::= (
   FULLY_CLOSED,
   PARTIAL )

5.2.4.24   Search_Dimension

This data type specifies whether a search will return two-dimensional objects, if they are present. To ignore <DRM Location 2D>s, the search dimension THREE_DIMENSIONAL_ONLY should be sepecified. All other searches consider <DRM Location 2D>s in evaluating objects.

This data type also specifies whether a search will consider the “height” components of <DRM Location 3D>s. To ignore the “height” component, search dimension TWO_DIMENSIONAL should be specified.        All other searches will consider the “height” components of <DRM Location 3D>s when evaluating them. Valid values are described in Table 5.23.

Table 5.23 —Search_Dimension values

Value

Definition

TWO_DIMENSIONAL

Only two-dimensional objects will be returned.

THREE_DIMENSIONAL_ONLY

Only three-dimensional objects will be returned.

TWO_DIMENSIONAL_OR_THREE_DIMENSIONAL

Both two-dimensional and three-dimensional objects will be returned.

Search_Dimension ::= (
   TWO_DIMENSIONAL,
   THREE_DIMENSIONAL_ONLY,
   TWO_DIMENSIONAL_OR_THREE_DIMENSIONAL )

5.2.4.25   Season

This data type specifies seasons of the year, because a particular “season” occurs at different times of year in different regions. For example, “winter” in the northern hemisphere occurs from, e.g. November to February, but that is not the case everywhere. Also, seasons may be divided into four seasons (spring, summer, autumn, winter) or two (dry and wet) depending on the region. The first four values refer to the first , second, third, and fourth seasons of the year of whatever kind. Valid values are described in Table 5.24.

Table 5.24 —Season values

Value

Definition

SPRING

The time period in question is in Spring.

SUMMER

The time period in question is in Summer.

AUTUMN

The time period in question is in Autumn.

WINTER

The time period in question is in Winter.

DRY

The time period in question is in the dry season.

WET

The time period in question is in the wet season.

Season ::= (
   SPRING,
   SUMMER,
   AUTUMN,
   WINTER,
   DRY,
   WET )

5.2.4.26   Sibling_Traversal_Order

This data type specifies the desired traversal order for various types of components that already have a logical ordering. Valid values are described in Table 5.25.

Table 5.25—Sibling_Traversal_Order values

Value

Definition

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.4.27   State_Mismatch_Behaviour

This data type specifies the behaviour state control when there is a state value that is not supported in the <DRM State Data> of a <DRM State Related Features> or <DRM State Related Geometry>. Allowable values are defined in Table 5.26.

Table 5.26 —State_Mismatch_Behaviour values

Value

Definition

LAST

Remain on last state.

DEFAULT

Use the default state.

NONE

Display nothing, like an off switch.

State_Mismatch_Behaviour ::= (
   LAST,
   DEFAULT,
   NONE )

5.2.4.28   Time_Of_Day

This data type enumerates various times of day. Allowable values are described in Table 5.27.

Table 5.27 —Time_Of_Day values

Value

Definition

DAWN

The time period in question is at dawn.

MORNING

The time period in question is in the morning.

DAY

The time period in question is during the day.

AFTERNOON

The time period in question is in the afternoon.

DUSK

The time period in question is at dusk.

EVENING

The time period in question is in the evening.

NIGHT

The time period in question is at night.

Time_Of_Day ::= (
   DAWN,
   MORNING,
   DAY,
   AFTERNOON,
   DUSK,
   EVENING,
   NIGHT )

5.2.5          Selection data types

5.2.5.1       Description

Selection data types are similar to enumerated data types but do not form a closed end set of entries. Selection data types are all defined to be of type Short_Integer but with specific meanings attached to each value. The set of selections can be augmented by assigning meanings to additional values. Standardization of additional meanings may occur through amendment to this standard or through registration. 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. Standard names for the meanings are defined for clarity. Such names are presented below in upper case.

Non-standard meanings provided by an implementation shall be assigned to negative values. Use of such non-standard meanings in a transmittal indicates that that transmittal does not conform to this part of ISO/IEC 18023. These values are made available solely to test new concepts prior to standardization or registration.

5.2.5.2       Axis_Alignment

This data type specifies the position of a <DRM Regular Axis> with respect to the axis interval. Allowable values are in Table 5.28.

Table 5.28 —Axis_Alignment values

Value

Definition

NONE

Tic mark is representative of all points in the interval, and thus has no particular alignment with respect to the interval.

LOWER

Tic mark is representative of the lower interval value.

MEDIAN

Tic mark is representative of the median value of the interval.

UPPER

Tic mark is representative of the upper interval value.

GEOMETRIC_MEAN

Tic mark is representative of the geometric mean of the interval values. This kind of axis alignment is intended for use primarily with GEOMETRIC spacing.

Axis_Alignment ::= (
                 < 1 : implementation dependent,
                   1 : NONE,
                   2 : LOWER,
                   3 : MEDIAN,
                   4 : UPPER,
                   5 : GEOMETRY_MEAN,
           [6, 1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.3       Camera_Projection_Type

This data type specifies the type of projection to be used when viewing a scene. Valid values are described in Table 5.29.

Table 5.29 —Camera_Projection_Type values

Value

Definition

ORTHOGRAPHIC

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

PERSPECTIVE

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

Camera_Projection_Type ::= (
                 < 1 : implementation dependent,
                   1 : ORTHOGRAPHIC,
                   2 : PERSPECTIVE,
           [3, 1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.4       CI_RoleCode

This data specifies the role of the responsible party and is defined in ISO 19115 [2.I19115.2].

5.2.5.5       Colour_Mapping

This data type specifies how colour is applied to an object. The various methods are applied as follows:

a.   "Front" and "back" refer to which side of the object (usually a <DRM Polygon>) is being coloured.

b.   A Primary Colour is the main colour of the object, when the object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the object). Note that a <DRM Image>’s alpha (if any), and/or a colour’s alpha (i.e.,  <DRM Translucency>) are not affected by anything other than the Primary Colour, even when an Image Blend Colour is present.

c.   A 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 objects organized by <DRM Distance Level Of Detail Data> (i.e., distance from the viewer) in level of detail related aggregations, since the distance that the 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 object.
    y    is the total distance that the 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.

d.   An Image Blend Colour helps determine the appearance of an object that has both a <DRM Colour> and an <DRM Image Mapping Function> whose image_mapping_method is set to blending.

1.       If the <DRM Image> is an intensity <DRM Image> (i.e., LUMINANCE is part of its 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>. That is, for <DRM Image>s with image_signature = LUMINANCE or LUMINANCE_AND_ALPHA signatures, the image blend and primary colours are linearly combined with the <DRM Image>’s luminance and its inverse to determine the displayed luminance.   Where the <DRM Image> is bright, its colour combined with that of the object’s Image Blend Colour will dominate. Where the <DRM Image> is dark, the object’s Primary Colour will dominate.

2.       If the <DRM Image> is a 123COLOUR <DRM Image> or some variation thereof, the 1st, 2nd, and 3rd colour components of each texel (e.g., R, G, B) are   linearly interpolated between the PRIMARY_COLOUR and the IMAGE_BLEND_COLOUR. That is, for <DRM Image>s with image_signature = 123COLOUR or 123COLOUR_ALPHA, the image blend and primary colours are linearly combined with the <DRM Image>’s colour and its inverse to determine the displayed colour. Where the <DRM Image> is bright, its colour combined with that of the object’s image blend colour will dominate. Where the <DRM Image> is dark, the object’s primary colour will dominate.

Valid values are described in Table 5.30.

Table 5.30 —Colour_Mapping values

Value

Definition

FRONT_PRIMARY

The front of the object is coloured with the primary colour, when the object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the object).

FRONT_DISTANCE_BLEND

The front of the object is coloured using a distance blend algorithm as described above.

FRONT_IMAGE_BLEND

The front of the object is coloured using an image blend algorithm as described above.

BACK_PRIMARY

The back of the object is coloured with the primary colour, when the object’s appearance is not affected by texture maps or viewing distance (that is, distance from the observer to the object).

BACK_DISTANCE_BLEND

The back of the object is coloured with a distance blend algorithm as described above.

BACK_IMAGE_BLEND

The back of the object is coloured using an image blend algorithm as described above.

PRIMARY_LIGHT_RENDERING_BEHAVIOUR

The object is coloured using the primary colour of the associated <DRM Light Rendering Behaviour>. It cannot be combined with any other colour mapping.

SECONDARY_LIGHT_RENDERING_BEHAVIOUR

The object is coloured using the secondary colour of the associated <DRM Light Rendering Behaviour>. It cannot be combined with any other colour mapping.

Colour_Mapping ::= (
                 < 1 : implementation dependent,
                   1 : FRONT_PRIMARY,
                   2 : FRONT_DISTANCE_BLEND,
                   3 : FRONT_IMAGE_BLEND,
                   4 : BACK_PRIMARY,
                   5 : BACK_DISTANCE_BLEND,
                   6 : BACK_IMAGE_BLEND,
                   7 : PRIMARY_LIGHT_RENDERING_BEHAVIOUR,
                   8 : SECONDARY_LIGHT_RENDERING_BEHAVIOUR,
           [9, 1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.6       Colour_Model

This data type specifies a colour model. Valid values are described in Table 5.31.

Table 5.31—Colour_Model values

Value

Definition

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,
                   1 : RGB,     Red, Green, and Blue
                   2 : CMY,      Cyan, Magenta, Yellow
                   3 : HSV,      Hue, Saturation, Value
           [4, 1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.7       DRM_Class

This data type enumerates all types of DRM classes supported by SEDRIS.

DRM_Class ::= (
                 < 1 : implementation dependent,
                   1 : NULL,
                   2 : DRM_ABSOLUTE_TIME_INTERVAL,
                   3 : DRM_ABSOLUTE_TIME_POINT,
                   4 : DRM_ACCESS,
                   5 : DRM_AEC_LOCATION_3D,
                   6 : DRM_AGGREGATE_FEATURE,
                   7 : DRM_AGGREGATE_GEOMETRY,
                   8 : DRM_ALCC_LOCATION_3D,
                   9 : DRM_ALTERNATE_HIERARCHY_RELATED_FEATURES,
                  10 : DRM_ALTERNATE_HIERARCHY_RELATED_GEOMETRY,
                  11 : DRM_AM_LOCATION_3D,
                  12 : DRM_AMBIENT_COLOUR,
                  13 : DRM_ANIMATION_BEHAVIOUR,
                  14 : DRM_ANIMATION_RELATED_GEOMETRY,
                  15 : DRM_AOM_LOCATION_3D,
                  16 : DRM_APS_LOCATION_3D,
                  17 : DRM_ARC,
                  18 : DRM_AREAL_FEATURE,
                  19 : DRM_ATM_LOCATION_3D,
                  20 : DRM_ATTACHMENT_POINT,
                  21 : DRM_ATTRIBUTE_SET,
                  22 : DRM_ATTRIBUTE_SET_INDEX,
                  23 : DRM_ATTRIBUTE_SET_INDEX_CONTROL_LINK,
                  24 : DRM_ATTRIBUTE_SET_TABLE,
                  25 : DRM_ATTRIBUTE_SET_TABLE_GROUP,
                  26 : DRM_ATTRIBUTE_SET_TABLE_LIBRARY,
                  27 : DRM_AUPS_LOCATION_3D,
                  28 : DRM_AUTM_LOCATION_3D,
                  29 : DRM_AXIS,
                  30 : DRM_BASE_LEVEL_OF_DETAIL_DATA,
                  31 : DRM_BASE_POSITIONAL_LIGHT,
                  32 : DRM_BASE_REFERENCE_VECTOR,
                  33 : DRM_BASE_SUMMARY_ITEM,
                  34 : DRM_BASE_TIME_DATA,
                  35 : DRM_BASE_VERTEX,
                  36 : DRM_BLEND_DIRECTIONAL_LIGHT,
                  37 : DRM_BOUNDING_VOLUME,
                  38 : DRM_BROWSE_MEDIA,
                  39 : DRM_CAMERA_POINT,
                  40 : DRM_CENTRE_OF_BUOYANCY,
                  41 : DRM_CENTRE_OF_MASS,
                  42 : DRM_CENTRE_OF_PRESSURE,
                  43 : DRM_CITATION,
                  44 : DRM_CLASSIFICATION_DATA,
                  45 : DRM_CLASSIFICATION_RELATED_FEATURES,
                  46 : DRM_CLASSIFICATION_RELATED_GEOMETRY,
                  47 : DRM_CMY_COLOUR,
                  48 : DRM_CMY_COLOUR_CONTROL_LINK,
                  49 : DRM_COLLISION_VOLUME,
                  50 : DRM_COLOUR,
                  51 : DRM_COLOUR_DATA,
                  52 : DRM_COLOUR_ENTRY,
                  53 : DRM_COLOUR_ENTRY_TABLE,
                  54 : DRM_COLOUR_INDEX,
                  55 : DRM_COLOUR_INDEX_CONTROL_LINK,
                  56 : DRM_COLOUR_SET,
                  57 : DRM_COLOUR_SHININESS,
                  58 : DRM_COLOUR_TABLE,
                  59 : DRM_COLOUR_TABLE_GROUP,
                  60 : DRM_COLOUR_TABLE_LIBRARY,
                  61 : DRM_CONE_DIRECTIONAL_LIGHT,
                  62 : DRM_CONFORMAL_BEHAVIOUR,
                  63 : DRM_CONNECTED_FEATURE_EDGE,
                  64 : DRM_CONNECTED_GEOMETRY_EDGE,
                  65 : DRM_CONTACT_POINT,
                  66 : DRM_CONTINUOUS_LEVEL_OF_DETAIL_RELATED_GEOMETRY,
                  67 : DRM_CONTROL_LINK,
                  68 : DRM_CYLINDRICAL_VOLUME_EXTENT,
                  69 : DRM_DATA_QUALITY,
                  70 : DRM_DATA_TABLE,
                  71 : DRM_DATA_TABLE_LIBRARY,
                  72 : DRM_DESCRIPTION,
                  73 : DRM_DIFFUSE_COLOUR,
                  74 : DRM_DIRECTIONAL_LIGHT_BEHAVIOUR,
                  75 : DRM_DISTANCE_LEVEL_OF_DETAIL_DATA,
                  76 : DRM_DRM_CLASS_SUMMARY_ITEM,
                  77 : DRM_EC_LOCATION_2D,
                  78 : DRM_EDCS_USE_SUMMARY_ITEM,
                  79 : DRM_EDGE_DIRECTION,
                  80 : DRM_ELLIPSE,
                  81 : DRM_ELLIPTIC_CYLINDER,
                  82 : DRM_EMISSIVE_COLOUR,
                  83 : DRM_ENUMERATION_AXIS,
                  84 : DRM_ENVIRONMENTAL_DOMAIN_SUMMARY,
                  85 : DRM_ENVIRONMENT_ROOT,
                  86 : DRM_EXPRESSION,
                  87 : DRM_EXTERNAL_FEATURE_FACE_RING,
                  88 : DRM_FACE_DIRECTION,
                  89 : DRM_FADE_RANGE,
                  90 : DRM_FEATURE,
                  91 : DRM_FEATURE_EDGE,
                  92 : DRM_FEATURE_FACE,
                  93 : DRM_FEATURE_FACE_RING,
                  94 : DRM_FEATURE_HIERARCHY,
                  95 : DRM_FEATURE_ID,
                  96 : DRM_FEATURE_ID_CONTROL_LINK,
                  97 : DRM_FEATURE_MODEL,
                  98 : DRM_FEATURE_MODEL_INSTANCE,
                  99 : DRM_FEATURE_NODE,
                 100 : DRM_FEATURE_SAME_AS,
                 101 : DRM_FEATURE_TOPOLOGY,
                 102 : DRM_FEATURE_TOPOLOGY_HIERARCHY,
                 103 : DRM_FINITE_ELEMENT_MESH,
                 104 : DRM_FLASHING_LIGHT_BEHAVIOUR,
                 105 : DRM_FUNCTION,
                 106 : DRM_GC_LOCATION_3D,
                 107 : DRM_GCS_LOCATION_3D,
                 108 : DRM_GD_LOCATION_2D,
                 109 : DRM_GD_LOCATION_3D,
                 110 : DRM_GEI_LOCATION_3D,
                 111 : DRM_GEOMETRY,
                 112 : DRM_GEOMETRY_EDGE,
                 113 : DRM_GEOMETRY_FACE,
                 114 : DRM_GEOMETRY_FACE_RING,
                 115 : DRM_GEOMETRY_HIERARCHY,
                 116 : DRM_GEOMETRY_ID,
                 117 : DRM_GEOMETRY_ID_CONTROL_LINK,
                 118 : DRM_GEOMETRY_MODEL,
                 119 : DRM_GEOMETRY_MODEL_INSTANCE,
                 120 : DRM_GEOMETRY_NODE,
                 121 : DRM_GEOMETRY_SAME_AS,
                 122 : DRM_GEOMETRY_TOPOLOGY,
                 123 : DRM_GEOMETRY_TOPOLOGY_HIERARCHY,
                 124 : DRM_GM_LOCATION_3D,
                 125 : DRM_GRID_OVERLAP,
                 126 : DRM_GSE_LOCATION_3D,
                 127 : DRM_GSM_LOCATION_3D,
                 128 : DRM_HIERARCHICAL_TABLE,
                 129 : DRM_HIERARCHY_DATA
                 130 : DRM_HIERARCHY_SUMMARY_ITEM,
                 131 : DRM_HSV_COLOUR,
                 132 : DRM_HSV_COLOUR_CONTROL_LINK,
                 133 : DRM_ICON,
                 134 : DRM_IMAGE,
                 135 : DRM_IMAGE_ANCHOR,
                 136 : DRM_IMAGE_LIBRARY,
                 137 : DRM_IMAGE_LOOKUP,
                 138 : DRM_IMAGE_MAPPING_FUNCTION,
                 139 : DRM_IN_OUT,
                 140 : DRM_INDEX_LEVEL_OF_DETAIL_DATA,
                 141 : DRM_INFINITE_LIGHT,
                 142 : DRM_INLINE_COLOUR,
                 143 : DRM_INTERFACE_TEMPLATE,
                 144 : DRM_INTERNAL_FEATURE_FACE_RING,
                 145 : DRM_INTERVAL_AXIS,
                 146 : DRM_IRREGULAR_AXIS,
                 147 : DRM_KEYWORDS,
                 148 : DRM_LABEL,
                 149 : DRM_LCC_LOCATION_2D,
                 150 : DRM_LEVEL_OF_DETAIL_RELATED_FEATURES,
                 151 : DRM_LEVEL_OF_DETAIL_RELATED_GEOMETRY,
                 152 : DRM_LIBRARY,
                 153 : DRM_LIGHT_RENDERING_BEHAVIOUR,
                 154 : DRM_LIGHT_RENDERING_PROPERTIES,
                 155 : DRM_LIGHT_RENDERING_PROPERTIES_CONTROL_LINK,
                 156 : DRM_LIGHT_SOURCE,
                 157 : DRM_LIGHT_SOURCE_CONTROL_LINK,
                 158 : DRM_LINE,
                 159 : DRM_LINEAGE,
                 160 : DRM_LINEAR_FEATURE,
                 161 : DRM_LINEAR_GEOMETRY,
                 162 : DRM_LITERAL,
                 163 : DRM_LOBE_DATA,
                 164 : DRM_LOCAL_4X4,
                 165 : DRM_LOCATION,
                 166 : DRM_LOCATION_2D,
                 167 : DRM_LOCATION_3D,
                 168 : DRM_LOCATION_TABLE,
                 169 : DRM_LSR_LOCATION_2D,
                 170 : DRM_LSR_LOCATION_3D,
                 171 : DRM_LSR_LOCATION_3D_CONTROL_LINK,
                 172 : DRM_LSR_TRANSFORMATION,
                 173 : DRM_LSR_TRANSFORMATION_STEP,
                 174 : DRM_LTP_LOCATION_2D,
                 175 : DRM_LTP_LOCATION_3D,
                 176 : DRM_M_LOCATION_2D,
                 177 : DRM_MAP_SCALE_LEVEL_OF_DETAIL_DATA,
                 178 : DRM_MESH_FACE_TABLE,
                 179 : DRM_MODEL,
                 180 : DRM_MODEL_INSTANCE_TEMPLATE_INDEX,
                 181 : DRM_MODEL_LIBRARY,
                 182 : DRM_MOVING_LIGHT_BEHAVIOUR,
                 183 : DRM_OCT_TREE_DATA,
                 184 : DRM_OCT_TREE_RELATED_FEATURES,
                 185 : DRM_OCT_TREE_RELATED_GEOMETRY,
                 186 : DRM_OM_LOCATION_2D,
                 187 : DRM_OVERLOAD_PRIORITY_INDEX,
                 188 : DRM_PARALLELEPIPED_VOLUME_EXTENT,
                 189 : DRM_PERIMETER_DATA,
                 190 : DRM_PERIMETER_RELATED_FEATURE_TOPOLOGY,
                 191 : DRM_PERIMETER_RELATED_FEATURES,
                 192 : DRM_PERIMETER_RELATED_GEOMETRY,
                 193 : DRM_PERIMETER_RELATED_GEOMETRY_TOPOLOGY,
                 194 : DRM_POINT,
                 195 : DRM_POINT_FEATURE,
                 196 : DRM_POINT_OF_CONTACT,
                 197 : DRM_POLYGON,
                 198 : DRM_POLYGON_CONTROL_LINK,
                 199 : DRM_POSITIONAL_LIGHT,
                 200 : DRM_PREDEFINED_FUNCTION,
                 201 : DRM_PRESENTATION_DOMAIN,
                 202 : DRM_PRIMITIVE_COLOUR,
                 203 : DRM_PRIMITIVE_FEATURE,
                 204 : DRM_PRIMITIVE_GEOMETRY,
                 205 : DRM_PRIMITIVE_SUMMARY_ITEM,
                 206 : DRM_PROCESS_STEP,
                 207 : DRM_PROPERTY,
                 208 : DRM_PROPERTY_CHARACTERISTIC,
                 209 : DRM_PROPERTY_DESCRIPTION,
                 210 : DRM_PROPERTY_GRID,
                 211 : DRM_PROPERTY_GRID_HOOK_POINT,
                 212 : DRM_PROPERTY_TABLE,
                 213 : DRM_PROPERTY_TABLE_REFERENCE,
                 214 : DRM_PROPERTY_TABLE_REFERENCE_CONTROL_LINK,
                 215 : DRM_PROPERTY_TABLE_REFERENCE_ENTRY,
                 216 : DRM_PROPERTY_TABLE_REFERENCE_SET,
                 217 : DRM_PROPERTY_TABLE_REFERENCE_TABLE,
                 218 : DRM_PROPERTY_VALUE,
                 219 : DRM_PS_LOCATION_2D,
                 220 : DRM_PSEUDO_CODE_FUNCTION,
                 221 : DRM_PYRAMID_DIRECTIONAL_LIGHT,
                 222 : DRM_QUAD_TREE_DATA,
                 223 : DRM_QUAD_TREE_RELATED_FEATURES,
                 224 : DRM_QUAD_TREE_RELATED_GEOMETRY,
                 225 : DRM_REFERENCE_ORIGIN,
                 226 : DRM_REFERENCE_SURFACE,
                 227 : DRM_REFERENCE_VECTOR,
                 228 : DRM_REFERENCE_VECTOR_CONTROL_LINK,
                 229 : DRM_REFERENCE_VECTOR_TABLE,
                 230 : DRM_REFERENCE_VECTOR_WITH_LOCATION_INDICES,
                 231 : DRM_REGULAR_AXIS,
                 232 : DRM_REGULAR_FEATURE_FACE,
                 233 : DRM_RELATIVE_TIME_INTERVAL,
                 234 : DRM_RELATIVE_TIME_POINT,
                 235 : DRM_RENDERING_PRIORITY_LEVEL,
                 236 : DRM_RENDERING_PROPERTIES,
                 237 : DRM_RGB_COLOUR,
                 238 : DRM_RGB_COLOUR_CONTROL_LINK,
                 239 : DRM_ROTATING_LIGHT_BEHAVIOUR,
                 240 : DRM_ROTATION,
                 241 : DRM_ROTATION_CONTROL_LINK,
                 242 : DRM_SAME_AS_FEATURE_EDGE,
                 243 : DRM_SAME_AS_FEATURE_FACE,
                 244 : DRM_SAME_AS_FEATURE_NODE,
                 245 : DRM_SAME_AS_GEOMETRY_EDGE,
                 246 : DRM_SAME_AS_GEOMETRY_FACE,
                 247 : DRM_SAME_AS_GEOMETRY_NODE,
                 248 : DRM_SCALE,
                 249 : DRM_SCALE_CONTROL_LINK,
                 250 : DRM_SEASON,
                 251 : DRM_SEDRIS_ABSTRACT_BASE,
                 252 : DRM_SEPARATING_PLANE,
                 253 : DRM_SEPARATING_PLANE_DATA,
                 254 : DRM_SEPARATING_PLANE_RELATED_GEOMETRY,
                 255 : DRM_SEPARATING_PLANE_RELATIONS,
                 256 : DRM_SM_LOCATION_3D,
                 257 : DRM_SOUND,
                 258 : DRM_SOUND_INSTANCE,
                 259 : DRM_SOUND_INSTANCE_CONTROL_LINK,
                 260 : DRM_SOUND_LIBRARY,
                 261 : DRM_SOUND_VOLUME,
                 262 : DRM_SOURCE,
                 263 : DRM_SPATIAL_DOMAIN,
                 264 : DRM_SPATIAL_INDEX_DATA,
                 265 : DRM_SPATIAL_INDEX_RELATED_FEATURE_TOPOLOGY,
                 266 : DRM_SPATIAL_INDEX_RELATED_FEATURES,
                 267 : DRM_SPATIAL_INDEX_RELATED_GEOMETRY,
                 268 : DRM_SPATIAL_INDEX_RELATED_GEOMETRY_TOPOLOGY,
                 269 : DRM_SPATIAL_RESOLUTION_LEVEL_OF_DETAIL_DATA,
                 270 : DRM_SPECULAR_COLOUR,
                 271 : DRM_SPHERICAL_VOLUME_EXTENT,
                 272 : DRM_SPOT_LIGHT,
                 273 : DRM_SRF_SUMMARY,
                 274 : DRM_STAMP_BEHAVIOUR,
                 275 : DRM_STATE_CONTROL_LINK,
                 276 : DRM_STATE_DATA,
                 277 : DRM_STATE_RELATED_FEATURES,
                 278 : DRM_STATE_RELATED_GEOMETRY,
                 279 : DRM_STROBING_LIGHT_BEHAVIOUR,
                 280 : DRM_SURFACE_GEOMETRY,
                 281 : DRM_SYMBOL,
                 282 : DRM_SYMBOL_LIBRARY,
                 283 : DRM_TABLE_PROPERTY_DESCRIPTION,
                 284 : DRM_TACK_POINT,
                 285 : DRM_TEXT,
                 286 : DRM_TEXTURE_COORDINATE,
                 287 : DRM_TEXTURE_COORDINATE_CONTROL_LINK,
                 288 : DRM_TEXTURE_COORDINATE_ENTRY,
                 289 : DRM_TEXTURE_COORDINATE_SET,
                 290 : DRM_TEXTURE_COORDINATE_TABLE,
                 291 : DRM_TIME_CONSTRAINTS_DATA,
                 292 : DRM_TIME_INTERVAL,
                 293 : DRM_TIME_OF_DAY,
                 294 : DRM_TIME_POINT,
                 295 : DRM_TIME_RELATED_FEATURES,
                 296 : DRM_TIME_RELATED_GEOMETRY,
                 297 : DRM_TM_LOCATION_2D,
                 298 : DRM_TRANSFORMATION,
                 299 : DRM_TRANSLATION,
                 300 : DRM_TRANSLATION_CONTROL_LINK,
                 301 : DRM_TRANSLUCENCY,
                 302 : DRM_TRANSLUCENCY_CONTROL_LINK,
                 303 : DRM_TRANSMITTAL_ROOT,
                 304 : DRM_TRANSMITTAL_SUMMARY,
                 305 : DRM_TWINKLING_LIGHT_BEHAVIOUR,
                 306 : DRM_UNION_OF_FEATURE_TOPOLOGY,
                 307 : DRM_UNION_OF_FEATURES,
                 308 : DRM_UNION_OF_GEOMETRY,
                 309 : DRM_UNION_OF_GEOMETRY_HIERARCHY,
                 310 : DRM_UNION_OF_GEOMETRY_TOPOLOGY,
                 311 : DRM_UNION_OF_PRIMITIVE_GEOMETRY,
                 312 : DRM_UNIVERSAL_FEATURE_FACE,
                 313 : DRM_UPS_LOCATION_2D,
                 314 : DRM_UTM_LOCATION_2D,
                 315 : DRM_VARIABLE,
                 316 : DRM_VERTEX,
                 317 : DRM_VERTEX_WITH_COMPONENT_INDICES,
                 318 : DRM_VOLUME,
                 319 : DRM_VOLUME_EXTENT,
                 320 : DRM_VOLUME_GEOMETRY,
                 321 : DRM_VOLUME_LEVEL_OF_DETAIL_DATA,
                 322 : DRM_VOLUME_LIGHT_BEHAVIOUR,
                 323 : DRM_WORLD_TRANSFORMATION
         [324, 1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.8       EDCS_Attribute_Code

This data type specifies the attribute being used.

See definition in ISO/IEC 18025—Environmental Data Coding Specification (EDCS).

5.2.5.9       EDCS_Classification_Code

This data type specifies the classification of an object.

See definition in ISO/IEC 18025—Environmental Data Coding Specification (EDCS).

5.2.5.10   EDCS_Metadata_Code

This data type specifies the metadata fro an attribute value.

See definition in ISO/IEC 18025—Environmental Data Coding Specification (EDCS).

5.2.5.11   EDCS_Scale_Code

This data type specifies the scale factor code for the unit of distance measure being used.

See definition in ISO/IEC 18025—Environmental Data Coding Specification (EDCS).

5.2.5.12   EDCS_Unit_Code

This data type specifies the unit of distance measure being used.

See definition in ISO/IEC 18025—Environmental Data Coding Specification (EDCS).

5.2.5.13   Element_Type_Code

This data type specifies the type of element code used in an Element_Type variant record. Valid values are described in Table 5.32.

Table 5.32—Element_Type_Code values

Value

Definition

ATTRIBUTE

The element represents an attribute.

INDEX

The element represents an index.

VARIABLE

The element represents a variable.

Element_Type_Code ::= (
                 < 1 : implementation_dependent,
                   1 : ATTRIBUTE,
                   2 : INDEX,
                   3 : VARIABLE,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.14   Enumerated_Or_Selection_Type

This data type supports specifying a particular SEDRIS enumerated type which may be a search target. Only enumerated data types used in DRM class instance fields are applicable.

Enumerated_Or_Selection_Type ::= (
                 < 1 : implementation_dependent,
                   1 : NULL_TYPE,
                   2 : AXIS_ALIGNMENT,
                   3 : CAMERA_PROJECTION_TYPE,
                   4 : COLOUR_BINDING,
                   5 : COLOUR_MAPPING,
                   6 :
COLOUR_MODEL,
                   7 : DISPLAY_SIDE,
                   8 : DISPLAY_STYLE,
                   9 : DISPLAY_TYPE,
                  10 : DRM_CLASS,
                  11 : FEATURE_UNION_REASON,
                  12 : GRID_OVERLAP_OPERATOR,
                  13 : IMAGE_COMPONENT,
                  14 : IMAGE_MAPPING_METHOD,
                  15 : IMAGE_PROJECTION_TYPE,
                  16 : IMAGE_SCAN_DIRECTION,
                  17 : IMAGE_SCAN_DIRECTION_Z,
                  18 : IMAGE_SIGNATURE,
                  19 : IMAGE_WRAP,
                  20 : INTERPOLATION_TYPE,
                  21 : LOD_DATA_TYPE,
                  22 : LOOKUP_SIGNATURE,
                  23 : LOOKUP_TYPE,
                  24 : LSR_TRANSFORMATION_AXIS,
                  25 : MODEL_REFERENCE_TYPE,
                  26 : MONTH,
                  27 : MULTIPLICITY_CODE,
                  28 : OCTANT,
                  29 : ORDERING_REASON,
                  30 : PIXEL_FILL_METHOD,
                  31 : PREDEFINED_FUNCTION,
                  32 : PRESENT_IN,
                  33 : PROPERTY_DATA_VALUE_TYPE,
                  34 : QUADRANT,
                  35 : REFERENCE_VECTOR_TYPE,
                  36 : REFERENCE_SURFACE_ELEVATION_SELECT,
                  37 : REFERENCE_SURFACE_LOD_SELECT,
                  38 : SEASON,
                  39 : SHADING_METHOD,
                  40 : SPACING_TYPE,
                  41 : SPATIAL_INDEX_SPACING_UNIT,
                  42 : STATE_MISMATCH_BEHAVIOUR,
                  43 : TIME_DATA_TYPE,
                  44 : TIME_OF_DAY,
                  45 : TIME_SIGNIFICANCE,
        [ 46, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.15   Feature_Topology_Level

This data type is used to indicate, if a <Feature Hierarchy> is present, the level of feature topology that is present. Allowable values are in Table 5.33.

Table 5.33 —Feature_Topology_Level values

Value

Definition

ZERO

Topology level ZERO.

The following objects and relationships are required to exist:

Objects:  <DRM Feature Node>

Unless the data consists solely of isolated (i.e., entity) <DRM Feature Node>s, the following objects (and the relationships among them) are all required to exist:

Other types of feature topology objects and relationships MAY exist at level ZERO, but the requirements of level ONE are NOT met.

ONE

Topology level ONE.

No objects or relationships other than those present for level ZERO topology are required. However, each <DRM Feature Node> shall have unique <DRM Location> coordinates (i.e., two or more <DRM Feature Node>s cannot be colocated).

TWO

Topology level TWO.

No objects or relationships other than those present for level ONE topology are required. However, <DRM Feature Node>s may not intersect or overlap one another, except where they meet at a common <DRM Feature Node>.

THREE

Topology level THREE.

The following objects and relationships are required to exist, in addition to the requirements of topology level TWO:

Objects:   <DRM External Feature Face Ring>
              
<DRM Internal Feature Face Ring>
              
<DRM Regular Feature Face>
              
<DRM Universal Feature Face>

 

Relationships:

a.   The set of <DRM Regular Feature Face>s shall be exclusive and exhaustive, forming a complete surface (i.e., <DRM Regular Feature Face> may not intersect or overlap one another, except where they meet at a common <DRM Feature Edge>.

b.   Exactly two <DRM Feature Faces>s border each <DRM Feature Edge>. Consequently, all <DRM Feature Edge>s shall have an association to at least one <DRM Regular Feature Face>.

c.   Each <DRM Regular Feature Face> shall have an association to each <DRM Feature Node> within its boundaries, and each <DRM Feature Node> mushallst have an association with every <DRM Regular Feature Face> that contains it.

FOUR

Topology level FOUR.

The following objects and relationships are required to exist, in addition to the requirements of topology level THREE:

<DRM Feature Edge>s are not required to bound <DRM Feature Faces>s. If a <DRM Feature Edge> does bound a <DRM Feature Faces>, the <DRM Feature Edge> shall have an association to that <DRM Feature Faces>.

Feature_Topology_Level ::= (   
                 < 1 : implementation_dependent,
                   1 : ZERO,
                   2 : ONE,
                   3 : TWO,
                   4 : THREE,
                   5 : FOUR,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.16   Feature_Union_Reason

This data type specifies the reason why a <DRM Union of Features> was created. Allowable values are defined in Table 5.34.

Table 5.34 —Feature_Union_Reason values

Value

Definition

SHARED_ATTRIBUTE

The <DRM Feature> in the union all share one or more attribute values, and have been grouped so that the attribute(s) can be attached to the union rather than to each individual feature.

COMPOUND

The union represents a compound <DRM Feature>, i.e., a <DRM Feature> that is made up of multiple <DRM Feature Topology> instances, e.g. a <DRM Linear Feature> that is made up of multiple <DRM Feature Edge>s.

COMPLEX

The union represents a complex feature, i.e., a <DRM Feature> that is made up of multiple <DRM Feature>s.

TILE_REFERENCE

An <DRM Areal Feature> that defines the spatial extent of a tile.

 In SEDRIS terms, a tile is a branch of a spatial index related or perimeter related aggregation, such as a <DRM Spatial Index Related Feature Topology> or a <DRM Perimeter Related Features>.)

Tile reference features can also show up as ordinary features; in this case, they are collected in a union with this label.

UNKNOWN

The reason for creating this union is unknown.

Feature_Union_Reason ::= (     
                 < 1 : implementation_dependent,
                   1 : SHARED_ATTRIBUTE,
                   2 : COMPOUND,
                   3 : COMPLEX,
                   4 : TILE_REFERENCE,
                   5 : UNKNOWN,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.17   Font_Style

This data type specifies the style of font to be used. Allowable values are described in Table 5.35. A font family which has other styles should map those into the most appropriate of the styles available including those styles which may have been registered and are supported by the implementation.

Table 5.35—Font_Style values

Value

Definition

NORMAL

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

BOLD

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

ITALIC

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

BOLD_ITALIC

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

Font_Style ::= (   
                 < 1 : implementation_dependent,
                   1 : NORMAL,
                   2 : BOLD,
                   3 : ITALIC,
                   4 : BOLD_ITALIC,
         [ 5, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.18   Geometry_Topology_Level

This data type is used to indicate, if a geometry hierarchy is present, the level of geometry topology that is present, if any. Allowable values are in Table 5.36.

Table 5.36 —Geometry_Topology_Level values

Value

Definition

ZERO

Topology level ZERO.

The following objects and relationships are required to exist:

Objects:  <DRM Geometry Node>

Unless the data consists solely of isolated (i.e., entity) <DRM Geometry Node>s, the following objects (and the relationships among them) are all required to exist:

Other types of Geometry topology objects and relationships MAY exist at level ZERO, but the requirements of level ONE are NOT met.

ONE

Topology level ONE.

No objects or relationships other than those present for level ZERO topology are required. However, each <DRM Geometry Node> shall have unique <DRM Location> coordinates (i.e., two or more <DRM Geometry Node>s cannot be colocated).

TWO

Topology level TWO.

No objects or relationships other than those present for level ONE topology are required. However, <DRM Geometry Node>s may not intersect or overlap one another, except where they meet at a common <DRM Geometry Node>.

THREE

Topology level THREE.

The following objects and relationships are required to exist, in addition to the requirements of topology level TWO:

Objects:   <DRM External Geometry Face Ring>
              
<DRM Internal Geometry Face Ring>
              
<DRM Regular Geometry Face>
              
<DRM Universal Geometry Face>

 

Relationships:

d.   The set of <DRM Regular Geometry Face>s shall be exclusive and exhaustive, forming a complete surface (i.e., <DRM Regular Geometry Face> may not intersect or overlap one another, except where they meet at a common <DRM Geometry Edge>.

e.   Exactly two <DRM Geometry Faces>s border each <DRM Geometry Edge>. Consequently, all <DRM Geometry Edge>s shall have an association to at least one <DRM Regular Geometry Face>.

f.    Each <DRM Regular Geometry Face> shall have an association to each <DRM Geometry Node> within its boundaries, and each <DRM Geometry Node> mushallst have an association with every <DRM Regular Geometry Face> that contains it.

FOUR

Topology level FOUR.

The following objects and relationships are required to exist, in addition to the requirements of topology level THREE:

<DRM Geometry Edge>s are not required to bound <DRM Geometry Faces>s. If a <DRM Geometry Edge> does bound a <DRM Geometry Faces>, the <DRM Geometry Edge> shall have an association to that <DRM Geometry Faces>.

 

Geometry_Topology_Level ::= (  
                 < 1 : implementation_dependent,
                   1 : ZERO,
                   2 : ONE,
                   3 : TWO,
                   4 : THREE,
                   5 : FOUR,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.19   Grid_Overlap_Operator

This data type specifies how overlapping <DRM Property Grid> should be interpreted. Valid values are described in Table 5.37.

Table 5.37—Grid_Overlap_Operator values

Value

Definition

BASE

The base value is used.

REPLACE

The base value is replaced by the overlapped value.

MERGE

The base value is merged with the overlapped value.

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,
                   1 : BASE,
                   2 : REPLACE,
                   3 : MERGE,
                   4 : ADD,
                   5 : AVERAGE ,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.20   Image_Component_Type

This data type indicates whether the components of a texel for an Image are represented as signed integers, unsigned integers, or as floating point numbers. Valid values are described in Table 5.38.

Table 5.38—Image_Component_Type values

Value

Definition

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,
                   1 : SIGNED_INTEGER,
                   2 : UNSIGNED_INTEGER,
                   3 : FLOATING_POINT,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.21   Image_Mapping_Method

This data types specifies how the image is blended with the background when the image is being used as a texture map. Allowable values are defined in Table 5.39.

Table 5.39 —Image_Mapping_Method values

Value

Definition

REPLACE

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

DECAL

For DECAL image mapping method, the <DRM Image> is essentially rendered on top of anything already there, like a decal (hence the name).

For Type 1 and Type 2: the results are not defined.

For Type 3: displayed colour = image colour and displayed alpha = original object alpha.

For Type 4: displayed Colour = (1 - image alpha) ´ original object colour + (mage alpha   image colour) and displayed alpha = original object alpha.

MODULATE

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

For Type 1 Luminance: displayed colour = image luminance * original object colour and eisplayed alpha = original object alpha.

For Type 1 Alpha: displayed colour = original object colour and displayed alpha = original object alpha * image alpha.

For Type 2: displayed colour = image luminance * original object colour and displayed alpha = image alpha * original object alpha.

For Type 3: displayed colour = image colour * original object colour and displayed alpha = original object alpha.

For Type 4: displayed colour = image colour * original object colour and displayed alpha = image alpha * original object alpha.

BLEND

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

For Type 1 Luminance: displayed colour = (1 - image luminance) * original object colour + (image luminance * blend colour) and displayed alpha = original object alpha.

For Type 1 Alpha: displayed colour = original object colour and displayed alpha = original object alpha * image alpha.

For Type 2: Displayed Colour = (1 - image luminance) * original object colour + (image luminance * blend colour) and displayed alpha = original object alpha * image alpha.

For Type 3: displayed colour = (1 - image colour) * original object colour + (blend colour * image colour) and displayed alpha = original object alpha.

For Type 4: displayed colour = (1 - image colour) * original object colour + (blend colour * image colour) and displayed alpha = original object alpha * image alpha.

Image_Mapping_Method ::= (
                 < 1 : implementation_dependent,
                   1 : REPLACE,
                   2 : DECAL,
                   3 : MODULATE,
                   4 : BLEND,
         [ 5, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.22   Image_Projection_Type

This data type specifies the projection to be used when texture mapping an image to a polygon. Allowable values are in Table 5.40.

Table 5.40—Image_Projection_Type values

Value

Definition

PLANAR

Used when applying a <DRM Image> to a planar surface.

CYLINDRICAL

Used when warping the <DRM Image> to a cylindrical shape. For this case, the textured object does not have <DRM Texture Coordinate>s or <DRM Tack Point>s; <DRM Image Anchor>s are provided by either the <DRM Image Mapping Function> or the <DRM Image> itself.

SPHERICAL

Used when warping the <DRM Image> to a spherical shape. For this case, the textured object does not have <DRM Texture Coordinate>s or <DRM Tack Point>s; <DRM Image Anchor>s are provided by either the <DRM Image Mapping Function> or the <DRM Image> itself.

Image_Projection_Type ::= (    
                 < 1 : implementation_dependent,
                   1 : PLANAR,
                   2 : CYLINDRICAL,
                   3 : SPHERICAL ,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.23   Image_Signature

This data type specifies properties about an image. Allowable values are defined in Table 5.41.

Table 5.41—Image_Signature values

Value

Definition

ALPHA

Used to indicate that each texel in the <DRM Image> consists of an alpha value, representing the coverage of the texel. An alpha of 0 indicates that the texel is transparent, while an alpha of 1.0 indicates that the texel constitutes part of the important content of the <DRM Image>. An <DRM Image> with this signature may be called an alpha channel or an alpha map. For further details, see Foley, van Dam, et. al, Section 17.6, "Image Compositing", in Computer Graphics: Principles and Practice, 2nd edition. Addison-Wesley, 1992.

Note that an alpha map can be composited with:

a.   a compatible 123_COLOUR <DRM Image> to produce a 123COLOUR_ALPHA map

b.   compatible COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, and COLOUR_COORDINATE_3 <DRM Image>s to produce a 123COLOUR_ALPHA map.

c.   a compatible LUMINANCE <DRM Image> to produce a LUMINANCE_AND_ALPHA map.

FURTHER CONSTRAINTS:

d.   bits_of_alpha shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx,    max_value_of_xxx) fields shall be zero.

e.   When an object has K <DRM Image Mapping Function>s providing its texture mapping information, at most one of the K <DRM Image Mapping Function>s can legally provide an alpha map. (Multiple alpha maps produce an undefined result.)

LUMINANCE

Used to indicate that the <DRM Image> is a luminance <Image>, a.k.a.     intensity <DRM Image>, greyscale <DRM Image>, with no colour values. (The effect is that of a "black and white" television.)

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

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

FURTHER CONSTRAINTS:

f.    bits_of_luminance shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx,    max_value_of_xxx fields) shall be zero.

COLOUR_COORDINATE_1

Used to indicate that each texel in the <DRM Image> consists of one colour component, namely the first for its colour model (G for RGB, M for CMY, or S 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> 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>. (These can also be composited with a compatible alpha map to produce a 123COLOUR_ALPHA map.)

FURTHER CONSTRAINTS:

g.   bits_of_colour_coordinate_1 shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding    min_value_of_xxx, max_value_of_xxx) shall be zero.

h.   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> can be associated with a COLOUR_COORDINATE_1 <DRM Image>. (Multiple COLOUR_COORDINATE_1 <DRM Image> instances produce an undefined result.)

EXAMPLES:

·         An RGB texel shall have red as the texel value.

·         An CMY texel shall have cyan as the texel value.

·         An HSV texel shall have hue as the texel value.

COLOUR_COORDINATE_2

Used to indicate that each texel in the <DRM Image> consists of 1 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> 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>. (These can also be composited with a compatible alpha map to produce a 123COLOUR_ALPHA map.)

FURTHER CONSTRAINTS:

i.     bits_of_colour_coordinate_2 shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx, max_value_of_xxx) shall be zero.

j.     When an object has K <DRM Image Mapping Function>s providing its texture mapping information, at most one of the K <DRM Image Mapping Function>s can be associated with a COLOUR_COORDINATE_2 <DRM Image>. (Multiple COLOUR_COORDINATE_2 <DRM Image> instances produce an undefined result.).

EXAMPLES:

·         An RGB texel shall have green as the texel value.

·         An CMY texel shall have magenta as the texel value.

·         An HSV texel shall have saturation as the texel value.

COLOUR_COORDINATE_3

Used to indicate that each texel in the <DRM Image> 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> can be composited with compatible COLOUR_COORDINATE_2 and COLOUR_COORDINATE_3 <DRM Image>s of the same dimensions to produce a 123_COLOUR <DRM Image>. (These can also be composited with a compatible alpha map to produce a 123COLOUR_ALPHA map.)

FURTHER CONSTRAINTS:

k.   bits_of_colour_coordinate_3 shall equal the size per texel in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx, max_value_of_xxx) shall be zero.

l.     When an object has K <DRM Image Mapping Function> providing its texture mapping information, at most one of the K <DRM Image Mapping Function> can be associated with a COLOUR_COORDINATE_3 <DRM Image>. (Multiple COLOUR_COORDINATE_3 <DRM Image>s produce an undefined result.)

EXAMPLES:

·         An RGB texel shall have blue as the texel value.

·         An CMY texel shall have yellow as the texel value.

·         An HSV texel shall have brightness value as the texel value.

BUMP_MAP_HEIGHT

Used to indicate that the <DRM Image> 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 Watt, Alan. Section 7.8 "Bump Mapping". From Ch 7, "Shadows and Textures", 3D Computer Graphics, 2nd edition. Addison-Wesley, 1993. Pages 250-253.

FURTHER CONSTRAINTS:

m.       bits_of_bump_map_height shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx, max_value_of_xxx) fields shall be zero.

n.   When an object has k <DRM Image Mapping Function> sproviding its texture mapping information, at most one of the k <DRM Image Mapping Function>s can legally provide a bump map. (Multiple bump maps produce an undefined result.)

EDCS_CLASSIFICATION_CODE

Used to indicate that each texel in the <DRM Image> consists of one value, an EDCS Classification Code (ECC).

FURTHER CONSTRAINTS:

o.   The size per texel shall be the size of EDCS_Classification_Code.

p.   Since no bits_of, min_value, or max_value fields are needed for this    signature, all bits_of_xxx fields (and their corresponding    min_value_of_xxx, max_value_of_xxx fields) shall be zero.

LUMINANCE_AND_ALPHA

Used to indicate that the <DRM Image> is (functionally) a composite of a luminance <DRM Image> and an alpha <DRM Image> (see ALPHA, 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> can be down-sampled to produce an ALPHA <DRM Image> and a LUMINANCE <DRM Image>.

FURTHER CONSTRAINTS:

q.   bits_of_luminance + bits_of_alpha shall equal the size per texel (in    bits); all other bits_of_xxx fields shall be zero.

r.    When an object has k <DRM Image Mapping Function>s providing its texture mapping information, at most one of the k <DRM Image Mapping Function>s can legally provide a luminance and alpha map. (Multiple alpha maps produce an undefined result.)

123COLOUR

Used to indicate that each texel in the <DRM Image> 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> can be down-sampled to produce a COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, or COLOUR_COORDINATE_3 <DRM Image>.

FURTHER CONSTRAINTS:

s.   bits_of_first_colour+bits_of_second_colour+bits_of_third_colour shall    equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx, max_value_of_xxx) shall be zero.

t.    When an object has k <DRM Image Mapping Function>s providing its texture mapping information, at most one of the k <DRM Image Mapping Function>s can be associated with a 123 colour map <DRM Image>. (Multiple 123 colour maps produce an undefined result.)

EXAMPLES:

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

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

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

123COLOUR_ALPHA

Used to indicate that each texel in the <DRM Image> 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> can be down-sampled to produce a COLOUR_COORDINATE_1, COLOUR_COORDINATE_2, COLOUR_COORDINATE_3, and/or ALPHA <DRM Image>.

FURTHER CONSTRAINTS:

u.   bits_of_first_colour + bits_of_second_colour + bits_of_third_colour + bits_of_alpha shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx,  max_value_of_xxx) shall be zero.

v.   When an object has k <DRM Image Mapping Function>s providing its texture mapping information, at most one of the k <DRM Image Mapping Function> can be associated with a 123 colour and alpha map <DRM Image>. (Multiple 123 colour and alpha maps produce an undefined result.)

EXAMPLES:

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

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

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

ONE_MATERIAL

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

The bits_of_material1 field is used in place of the <DRM Property Table Reference>s’ index_on_axis fields.

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

w.       The <DRM Image> shall have at least one <DRM Property Table Reference>.    (The data producer may have as many <DRM Property Table Reference>s as desired, as long as there is at least one, and bits_of_material# will handle them.)

x.   All the <DRM Property Table>s being referred to by the <DRM Property Table Reference> shall be of the same size, since the material reference    corresponds to all of them.

y.   bits_of_material1 shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx,    max_value_of_xxx) shall be zero.

TWO_MATERIALS

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

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

z.   The <DRM Image> shall have at least one <DRM Property Table Reference>. (The data producer may have as many <DRM Property Table Reference>s as desired, as long as there is at least one, and bits_of_material# will handle them.)

aa.     All the <DRM Property Table>s being referred to by the <DRM Property Table Reference>s shall be of the same size, since the material reference corresponds to all of them.

bb.     bits_of_material1+bits_of_material2+bits_of_material2_percentage shall equal the size per texel (in bits); all other bits_of_xxx fields (and their corresponding min_value_of_xxx, max_value_of_xxx) shall be zero.

THREE_MATERIALS

Used to indicate that each texel in the <DRM Image> represents a linear     combination of three materials in the <DRM Property Table>s referenced by this <DRM Image>. That is, each texel consists of 4 values: three indexes into the <DRM Property Table>s referenced by this <DRM Image>, and the percentages (integers, 0 - 100%) of material2 and material3 These <DRM Property Table>s describe the materials. Normally, a <DRM Property Table Reference> is used to find the corresponding <DRM Property Table>’s data_table_type, which <DRM Axis> is referred to, and which hash value measurement along that <DRM Axis> is being referenced. The bits_of_material1, bits_of_material2, and bits_of_material3 fields are used in place of the <DRM Property Table Reference>s’ index_on_axis fields.

See the examples for the <DRM Image> class.

FURTHER CONSTRAINTS:

cc.     The <DRM Image> shall have at least one <DRM Property Table Reference>. (The data producer may have as many <DRM Property Table Reference>s as desired, as long as there is at least one, and bits_of_material# will handle them.)

dd.     All the <DRM Property Table>s being referred to by the <DRM Property Table Reference> shall be of the same size, since the material reference corresponds to all of them.

ee.     bits_of_material1 + bits_of_material2 + bits_of_material2_percentage    + bits_of_material3 + bits_of_material3_percentage shall equal the    size per texel (in bits); all other bits_of_xxx fields (and their    corresponding min_value_of_xxx, max_value_of_xxx) shall be zero.

IMAGE_INDEX

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

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

FURTHER CONSTRAINTS:

ff. bits_of_image_index shall equal the size per texel (a positive value), while all other bits_of_xxx fields (and their corresponding    min_value_of_xxx, max_value_of_xxx fields) shall be zero.

gg.     Each texel within the <DRM Image> shall resolve to a valid index within the <DRM Image Library> containing this image, but neither directly nor via other IMAGE_INDEX <DRM Image>s to the index of this <DRM Image>. (This would cause infinite recursion when trying to resolve the image to its component parts).

hh.     All referenced <DRM Image>s shall have the same values as the main <DRM Image> for colour_model, data_is_little_endian, data_is_3D,    component_data_type, scan_direction, and scan_direction_z.

ii.   All referenced <DRM Image>s shall have either the same image signature X, or IMAGE_INDEX which resolves to referenced images with signature X, so that the main <DRM Image> can be resolved to a single image signature.

BUMP_MAP_UV

Used to indicate that the <DRM Image> 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:

jj.   (bits_of_bump_map_u + bits_of_bump_map_v) shall equal the size per    texel (in bits); all other bits_of_xxx fields (and their    corresponding min_value_of_xxx, max_value_of_xxx) fields shall be zero.

kk.     When an object has K <DRM Image Mapping Function> providing its texture mapping information, at most one of the K <DRM Image Mapping Function> can legally provide a bump map. (Multiple bump maps produce an undefined result.)

 

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

5.2.5.24   Image_Wrap

This data types specifies how texture mapping is handled when the boundary of an image is reached. Allowable values are defined in Table 5.42.

Table 5.42—Image_Wrap values

Value

Definition

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,
                   1 : CLAMP,
                   2 : REPEAT,
         [ 3, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.25   Index_Code

This data type specifies the type of index used in an Element_Type variant record. Each value has a specific meaning and usage as defined in Table 5.43

Table 5.43—Index_Code values

Value

Definition

DATA_TABLE_COMPONENT

Used to allow a <DRM Data Table> to reference its ith ordered <DRM Data Table> component, where i is the value of the index being specified.

PROP_TABLE_REF_COMPONENT

Used to allow a <DRM Data Table> to reference its ith ordered <DRM Property Table Reference> component, where i is the value of the index being specified.

DATA_TABLE_LIBRARY

Used to allow a <DRM Data Table> to reference the ith <DRM Data Table> in its transmittal’s <Data Table Library>, where i is the value of the index being specified.

IMAGE_MAPPING_FUNCTION

Used to allow a <DRM Data Table> cell to reference the ith ordered <DRM Image Mapping Function> component of the <DRM Data Table>.

ADJACENT_MESH_FACE

Used to specify the index of a mesh face in a <DRM Mesh Face Table>, specifically as the code of its (optional) second <DRM Table Property Description>.

ADJACENT_SOLID_ELEMENT

Used to specify the index of an adjacent mesh solid in a <DRM Finite Element Mesh>’s ECC_SOLID_ELEMENT <DRM Property Table>’s second <DRM Table Property Description>.

MESH_FACE

Used to specify the index of a mesh face in a <DRM Mesh Face Table>, specifically as the axis_type of its first <DRM Regular Axis>.

MESH_NODE

Used to specify the index of a mesh node in a <DRM Mesh Face Table>, specifically as the axis_type of its second <DRM Regular Axis>.

MESH_VERTEX

Used to identify the index of a mesh vertex in the ordered <DRM Vertex> list of a <DRM Finite Element Mesh>, specifically as the axis_type of the first <DRM Regular Axis> in a <DRM Property Table> classified as ECC_MESH_NODE_PROPERTY_SET or ECC_MESH_FACE_PROPERTY_SET.

SOLID_ELEMENT

Used to identify the index of a mesh solid (three-dimensional) element in a <DRM Mesh Face Table>, specifically as the axis_type of the first <DRM Regular Axis> in a <DRM Property Table> classified as ECC_SOLID_ELEMENT or ECC_MESH_SOLID_PROPERTY_SET.

SOLID_FACE

Used to identify the index of a mesh solid (two-dimensional) face in a <DRM Property Table>, specifically as the axis_type of the second <DRM Regular Axis> in a <DRM Property Table> classified as ECC_MESH_SOLID_SET.

 

Index_Code ::= (
                 < 1 : implementation_dependent,
                   1 : DATA_TABLE_COMPONENT,
                   2 : PROP_TABLE_REF_COMPONENT,
                   3 : DATA_TABLE_LIBRARY,
                   4 : IMAGE_MAPPING_FUNCTION,
                   5 : ADJACENT_MESH_FACE,
                   6 : ADJACENT_SOLID_ELEMENT,
                   7 : MESH_FACE,
                   8 : MESH_NODE,
                   9 : MESH_VERTEX,
                  10 : SOLID_ELEMENT,
                  11 : SOLID_FACE,

        [ 12, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.26   Interpolation_Type

This data type specifies how best to interpolate the data to points that are between grid points on a <DRM Axis>. Allowable values are defined in Table 5.44.

Table 5.44—Interpolation_Type values

Value

Definition

DISALLOWED

Interpolation is disallowed by the data provider.

NOT_SUPPLIED

No preferred interpolation method was supplied.

METADATA_SPECIFIED

 The metadata for the <DRM Data Table> aggregate associated with the <DRM Axis> specifies the data provider’s preferred interpolation method.

LINEAR

 Interpolation is linear (the most common default).

NEAREST_NEIGHBOUR

 Interpolation is by nearest neighbour.

DIAGONALIZATION

 Interpolation is by diagonalization; one common use is for grids representing terrain elevation data.

OAML_DBDB_SPLINE_FIT

This enumerant represents a spline-fitting technique, specifically that used to support data derived from the U. S. Navy’s Oceanographic and Atmospheric Library (OAML). More specifically, it is used to support DBDB OAML tables.

One common use is within OAML-derived tables representing bathymetry.

OAML_GDEM_POLYN_DEFORMATION

Exists to support tables derived from data from the U. S. Navy’s Oceanographic and Atmospheric Library (OAML). Specifically, this enumerant exists to support the Generalized Digital Environmental Model, known as GDEM, which is a 4-dimensional steady-state digital model of ocean temperature and salinity, consisting of gridded sets of coefficients with very specific grid spacing values.

This interpolation method uses polynomial deformation.

One common use of this method is within tables representing sound speed profiles.

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].

KRIGING

Interpolation method which predicts unknown values from data observed at known locations. This method uses variograms to express the spatial variation , and it minimizes the error of predicted values which are estimated by spatial distribution of the predicted values.  Kriging interpolation estimates the unknown value using a weighted linear combinations 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].

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,
                   1 : DISALLOWED,
                   2 : NOT_SUPPLIED,
                   3 : METADATA_SPECIFIED,
                   4 : LINEAR,
                   5 : NEAREST_NEIGHBOR,
                   6 : DIAGONALIZATION,
                   7 : OAML_DBDB_SPLINE_FIT,
                   8 : OAML_GDEM_POLYN_DEFORMATION,
                   9 : BICUBIC_SPLINE,
                  10 : KRIGING,
                  11 : LEGRANGIAN,
                  12 : QUADRATIC,
        [ 12, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.27   Keyword_Type_Code

This data type encodes the type of information described by the keyword. Allowable values are defined in Table 5.45.

Table 5.45—Keyword_Type_Code values

Value

Definition

PLACE

Each entry in the semicolon-separated keyword list is the geographic name of a location covered by the data set being described by the given <DRM Keywords> object.

A possible thesaurus for this type of keyword would be "Geographic Names Information System".

THEME

Each entry in the semicolon-separated keyword list is a common-use word or phrase used to describe the subject of the data set being described by the given <DRM Keywords> object.

For a list of some commonly-used thesauri, see Part IV: Subject/index term sources in Network Development and MARC Standards Office, 1988, USMARC code list for relators, sources, and description conventions: Washington, Library of Congress, http://www.loc.gov/marc/relators.

DISCIPLINE

Each entry in the semicolon-separated keyword list is the name of a branch of instruction or specialized learning covered by the data set being described by the given <DRM Keywords> object.

TEMPORAL

Each entry in the semicolon-separated keyword list is the name of a time period covered by the data set being described by the given <DRM Keywords> object.

STRATUM

Each entry in the semicolon-separated keyword list is the name of a vertical location used to describe the locations covered by the data set being described by the given <DRM Keywords> object.

OTHER

The given keyword is not covered by any more specific Keyword_Type_Code.

Keyword_Type_Code ::= (
                 < 1 : implementation_dependent,
                   1 : PLACE,
                   2 : THEME,
                   3 : DISCIPLINE,
                   4 : TEMPORAL,
                   5 : STRATUM,
                   6 : OTHER,
         [ 7, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.28   LOD_Data_Type

This data type specifies the “type” of <Base Level Of Detail Data> being used to organize a <DRM Level Of Detail Related Features> or <DRM Level Of Detail Related Geometry> aggregate. The selection identifies the criteria by which the levels are defined. Valid values are described in Table 5.46.

Table 5.46 —LOD_Data_Type values

Value

Definition

DISTANCE

 Each level represents data as viewed from a different distance.

INDEX

 Each level represents data selected by an index.

MAP_SCALE

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

VOLUME

 Each level represents data that occupies a different volume.

SPATIAL_RESOLUTION

 Each level represents data that is defined for a specific spatial resolution.

 

LOD_Data_Type ::= (
                 < 1 : implementation_dependent,
                   1 : DISTANCE,
                   2 : INDEX,
                   3 : MAP_SCALE,
                   4 : VOLUME,
                   5 : SPATIAL_RESOLUTION,
         [ 5, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.29   Lookup_Signature

This data type specifies which axes are used for lookup. Allowable values are defined in Table 5.47.

Table 5.47 —Lookup_Signature values

Value

Definition

I

 One lookup axis, intensity.

I_AND_ALPHA

 Two lookup axes, intensity and alpha.

ALPHA

 One lookup axis, alpha.

RGB

 Three lookup axes (123 colour).

RGB_ALPHA

 Four lookup axes (123 colour alpha).

Lookup_Signature ::= (   
                 < 1 : implementation_dependent,
                   1 : I,
                   2 : IA,
                   3 : A,
                   4 : RGB,
                   5 : RGB_ALPHA,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.30   Lookup_Type

This data type specifies the manner of conversion needed during a lookup. Allowable value are defined in Table 5.48.

Table 5.48 —Lookup_Type values

Value

Definition

YIQ_TO_RGB

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB, and the <DRM Image>.

Convert the three colour components of a texel into three indices that are used to derive intermediate values that are recombined into a single RGB triplet.

a.   Convert the 3 colour components of the texel to an RGB triplet.

b.   The utility function RGB_To_YIQ can be used to convert the RGB triplet into a YIQ triplet, Y1, I1, Q1.

c.   The Y colour coordinate Y1 of the YIQ triplet points to an RGB triplet in the lookup table, which is then used to generate the intermediate Y value; again, the function RGB_To_YIQ can be used to convert the RGB triplet into a YIQ triplet.

Next the I index is derived from the original texel RGB triplet by the equation I_index = (0.49804 * red_component) - (0.22896 * green_component) - (0.26908 * blue_component). This index points to another RGB triplet in the lookup table. This triplet is used to derive the intermediate I value by the equation I= (0.49804 * red_component) - (0.22896 * green_component) - (0.26908 * blue_component).  The original RGB texel is used to generate the Q index by the equation q_index = (0.20093 * red_component) - (0.49804 * green_component) + (0.29711 * blue_component) This index points to another RGB triplet in the lookup table. This triplet is used to derive the intermediate Q value by the equation Q = (0.20093 * red_component) - (0.49804 * green_component) + (0.29711 * blue_component). Finally the intermediate Y, I , and Q values are combined to create the final displayed RGB triplet. The RGB triplet is derived by the equations:

 R = Y + ( 1.14423568 * I ) + ( 0.65258974 * Q )

 G = Y - ( 0.3263226  * I ) - ( 0.67923293 * Q )

 B = Y - ( 1.320834   * I ) + ( 1.7858368  * Q )

YIQ_TO_ALPHA

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is ALPHA.

Converts the RGB components of a texel into an index that points to an alpha value. The index into the translator table is derived from the red, green, and blue components of the texel by an equation of the form:

 index = (0.299 * red_component) + (0.587*green_component) +
(0.114*blue_component)

I_TO_I

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is I.

The Intensity component I in the image is a pointer to the Intensity value of the ith element in the lookup table.

I_TO_ALPHA

 This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is ALPHA.

The Intensity component I in the image is a pointer to the Alpha value of the ith element in the lookup table.

I_TO_IA

 This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is I_AND_ALPHA.

The I component in the image is a pointer to the I and Alpha values of the ith component in the lookup table.

IA_TO_IA

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is I_AND_ALPHA.

The I component in the image is a pointer to the I value of the ith element in the lookup table.

The Alpha component A in the image is a pointer to the alpha value of the ith element in the lookup table.

I_TO_RGB

This lookup type is valid only when the <DRM Image Lookup>’s  lookup table signature is RGB.

The I component is a pointer to the ith element of the lookup table that contains the R, G, B, values.

RGB_TO_RGB

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB.

The R component is a pointer to the R value of the ith element of the lookup table.

The G component is a pointer to the G value of the ith element of the lookup table.

The B component is a pointer to the B value of the ith element in the lookup table.

I_TO_RGBA

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB_ALPHA.

The I component is a pointer to the ith element of the lookup table that contains the R, G, B, and Alpha values.

IA_TO_RGBA

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB_ALPHA.

The I component is a pointer to the ith element of the lookup table that contains the R, G, B, values.

The alpha component A in the image is a pointer to the alpha value of the ith element in the lookup table.

RGB_TO_RGB_ALPHA

This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB_ALPHA.

The R component is a pointer to the R value of the ith element of the lookup table that contains the R value.

The G component is a pointer to the G value of the ith element in the lookup table.

The B component is a pointer to the B value of the ith element in the lookup table.

The A component is a pointer to the Alpha value of the ith element in the lookup table.

RGB_ALPHA_TO_RGB_ALPHA

 This lookup type is valid only when the <DRM Image Lookup>’s lookup table signature is RGB_ALPHA.

The R component is a pointer to the R value of the ith element in the lookup table.

The G component is a pointer to the G value of the ith element in the lookup table.

The B component is a pointer to the B value of the ith element in the lookup table.

The A component is a pointer to the Alpha value of the ith element in the lookup table.

Lookup_Type ::= (  
                 < 1 : implementation_dependent,
                   1 : YIQ_TO_RGB,
                   2 : YIQ_TO_ALPHA,
                   3 : I_TO_I,
                   4 : I_TO_ALPHA,
                   5 : I_TO_IA,
                   6 : IA_TO_IA,
                   7 : I_TO_RGB,
                   8 : RGB_TO_RGB,
                   9 : I_TO_RGBA,
                  10 : IA_TO_RGBA,
                  11 : RGB_TO_RGBA,
                  12 : RGBA_TO_RGBA,
        [ 13, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.31   Media_Format

This data type specifies the format of media files used by the <DRM_Browse_Media> DRM class. Allowable values are defined in Table 5.49. Information about each format is in C Media format references.

Table 5.49 — Media_Format values

Value

Definition

AVI

Audio Video Interleave

BMP

Bitmap Graphics

GIF

Graphic Interchange Format

JPEG

Joint Photographic Experts Group

HTML

Hyper Text Markup Language

RIFF

Resource Interchange File Format

RGB

Red-Green-Blue

PNG

Portable Network Graphics

QT

QuickTime

TIFF

Tagged Image File Format

WMF

Windows Metafile

XBM

X BitMap format

PICT

Picture - Macintosh graphics file format

NITFS

National Imagery Transmission Format Standard

BIIF

Binary Information Interchange Format

CGM

Computer Graphics Metafile

JPEG2000

JPEG 2000

SVG

Scalable Vector Graphics

Media_Format ::= ( 
                 < 1 : implementation_dependent,
                   1 : AVI,
                   2 : BMP,
                   3 : GIF,
                   4 : JPEG,
                   5 : HTML,
                   6 : RIFF,
                   7 : RGB,
                   8 : PNG,
                   9 : QT,
                  10 : TIFF,
                  11 : WMF,
                  12 : XBM,
                  13 : PICT,
                  14 : NITFS,
                  15 : BIIF,
                  16 : CGM,
                  17 : JPEG2000,
                  18 : SVG,
        [ 19, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.32   Ordering_Reason

This data type specifies the reason for ordering. Valid values are described in Table 5.50.

Table 5.50—Ordering_Reason values

Value

Definition

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.

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.

FIXED_LISTED

A fixed rendering order is used, typically for non-depth- buffered or hybrid image generators.

VIEWER_RANGE

The layers are ordered according to range to the viewer.

SHARED_ATTRIBUTE

The components are layered by some shared attributes.

NONE

No reason for the ordering is specified.

Ordering_Reason ::= (
                 < 1 : implementation_dependent,
                   1 : LAYERED_HIGH_QUALITY_RENDERING,
                   2 : LAYERED_FASTEST_RENDERING,
                   3 : FIXED_LISTED,
                   4 : VIEWER_RANGE,
                   5 : SHARED_ATTRIBUTE,
                   6 : NONE,
         [ 7, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.33   Pixel_Fill_Method

This data type specifies the colour blending method. Allowable values are defined in Table 5.51.

Table 5.51—Pixel_Fill_Method values

Value

Definition

CONSTANT

The geometry/polygon colour defines the constant pixel colour across the geometry attribute.

BLEND

Colour/intensity at each <DRM Vertex> is used to blend for the geometry fill method.

Pixel_Fill_Method ::= (  
                 < 1 : implementation_dependent,
                   1 : CONSTANT,
                   2 : BLEND,
         [ 3, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.34   Predefined_Function

This data type enumerates the various predefined functions which a SEDRIS implementation shall support. In the comments for this data type, the letter A indicates the first argument, the letter B indicates the second argument continuing on as necessary for the number of arguments needed. Allowable values are defined in Table 5.52.

Table 5.52—Predefined_Function values

Value

Definition

ADD

Definition: A + B

This is a binary operator, for which the first of the ordered arguments is “left” of the operator and the second is “right”.

DIVIDE

Definition: A / B

This is a binary operator, for which the first of the ordered arguments is “left” of the operator and the second is “right”.

MODULO

Definition: A modulo B

This is a binary operator, for which the first of the ordered arguments is “left” of the operator and the second is “right”.

MULTIPLY

Definition: A * B

This is a binary operator, for which the first of the ordered arguments is “left” of the operator and the second is “right”.

SUBTRACT

Definition: A - B

This is a binary operator, for which the first of the ordered arguments is “left” of the operator and the second is “right”.

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 3 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> 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> shall be specified within the scope of its <DRM Environment Root>.

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: Used to allow a <DRM Data Table> to drive a <DRM Control Link>.

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

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

 

Predefined_Function (
                 < 1 : implementation_dependent,
                   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 : TERRAIN_HEIGHT,
                  37 : CYCLE_TIME,
                  38 : TABLE_VALUE,
        [ 39, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.35   Property_Data_Value_Type

A list of the types of values that can be stored in a cell within a <DRM Data Table>, stored as the value of a <DRM Property Value>, or used as the value type of an <DRM Expression>. This is also the list used to identify the type of value for a property data value. Valid values are described in Table 5.53.

Table 5.53—Property_Data_Value_Type values

Value

Definition

BOOLEAN

The value is specified as a Boolean.

BYTE

The value is specified as a byte.

BYTE_POSITIVE

The value is specified as a positive byte.

BYTE_UNSIGNED

The value is specified as an unsigned byte.

SHORT_INTEGER

The value is specified as a short integer.

SHORT_INTEGER_POSITIVE

The value is specified as a short positive integer.

SHORT_INTEGER_UNSIGNED

The value is specified as a short unsigned integer.

INTEGER

The value is specified as an integer.

INTEGER_POSITIVE

The value is specified as a positive integer.

INTEGER_UNSIGNED

The value is specified as an unsigned integer.

INTEGER_UNSIGNED_INTERVAL

The value is specified as an interval of unsigned integers.

FLOAT

The value is specified as a floating point number.

FLOAT_INTERVAL

The value is specified as an interval of floating point numbers.

LONG_FLOAT

The value is specified as a long floating point number.

STRING

The value is specified as a string.

DATA_TABLE_COMPONENT_INDEX

The value is specified as a data table component index.

ENUMERANT_CODE

The value is specified as an enumerant code.

METADATA_CODE

The value is specified as a metadata code.

Property_Data_Value_Type ::= ( 
                 < 1 : implementation_dependent,
                   1 : BOOLEAN,
                   2 : BYTE,
                   3 : BYTE_POSITIVE,
                   4 : BYTE_UNSIGNED,
                   5 : SHORT_INTEGER,
                   6 : SHORT_INTEGER_POSITIVE,
                   7 : SHORT_INTEGER_UNSIGNED,
                   8 : INTEGER,
                   9 : INTEGER_INTERVAL,
                  10 : INTEGER_POSITIVE,
                  11 : INTEGER_UNSIGNED,
                  12 : INTEGER_UNSIGNED_INTERVAL,
                  13 : FLOAT,
                  14 : FLOAT_INTERVAL,
                  15 : LONG_FLOAT,
                  16 : STRING,
                  17 : DATA_TABLE_COMPONENT_INDEX,
                  18 : DATA_TABLE_LIBRARY_INDEX,
                  19 : ENUMERANT_CODE,
                  20 : METADATA_CODE,
        [ 21, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.36   Reference_Vector_Type

This data type specifies the type of vector being referenced. The various values have the meanings defined in Table 5.54.

Table 5.54 —Reference_Vector_Type values

Value

Definition

FACE_NORMAL

A vector perpendicular to a <DRM Polygon> face.

RENDERING_NORMAL

Used for visualization rendering.

LSR_TRANSFORMATION_AXIS

An axis of the LSR spatial reference frame.

MAJOR_AXIS

Used to specify the major axis of an <DRM Ellipse>, or the major axis of the elliptical cross-section of a <DRM Cylindrical Volume Extent> or <DRM Elliptic Cylinder>.

MINOR_AXIS

Used to specify the minor axis of an <DRM Ellipse>, or the minor axis of the elliptical cross-section of a <DRM Cylindrical Volume Extent> or <DRM Elliptic Cylinder>.

LIGHT_DIRECTION

The direction in which a light is shining.

VERTICAL_AXIS

An axis perpendicular to a horizontal plane.

MOVEMENT_DIRECTION

The direction in which movement is occurring or will occur.

PARALLELEPIPED_EDGE_DIRECTION

The direction in which an edge of a parallelepiped is aligned.

REFLECTIVITY_EMISSIVITY_NORMAL

 A normal for reflectivity and 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> is not present, this normal applies to all reflectivity and emissivity cases.

REFLECTIVITY_EMISSIVITY_AZIMUTH

 Azimuth for all Reflectivity and/or Emissivity cases.

REFLECTIVITY_NORMAL

 A normal for reflectivity/transmissivity 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> is not present, this normal applies to all reflectivity and emissivity cases.

REFLECTIVITY_AZIMUTH

 An azimuth for reflectivity/transmissivity 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> is not present, this azimuth applies to all reflectivity and transmissivity 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> is not present, this normal applies to all emissivity cases.

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> is not present, this azimuth applies to all emissivity cases.

CAMERA_FORWARD_AXIS

Used to specify the “forward” axis of a <DRM Camera Point>.

CAMERA_UP_AXIS

Used to specify the “up” axis of a <DRM Camera Point>

 

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

5.2.5.37   Search_Quality

This data type 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 (see CreateSpatialSearchBoundary) is guaranteed to include all objects that are partly included in the search area; it may include extra objects. A box search with full inclusion will return only fully included objects, but it may miss some objects. An exact search is guaranteed to be accurate to a small distance. Valid values are described in Table 5.55.

Table 5.55—Search_Quality values

Value

Definition

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,
                   1 : POINT,
                   2 : BOUNDING_BOX,
                   3 : EXACT ,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.38   Search_Rule_Type

This data type is used to specify a rule for searching. The rules define different operations which are to be performed to satisfy a search. Table 5.56 defines the meaning of the various rules:

Table 5.56—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 objects.

PREDICATE

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

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-defined function that will be used to filter objects based on whether or not the user-defined function returns TRUE or FALSE when passed an object.

value:                      set to some user-defined 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 object.

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 object being tested. (For EDCS_String fields, this   means that they shall have the same length and contain the same contents, and 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 object.

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

field_ordinal            set to the ordinal of the chosen field within the fields of the target 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 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 object.

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 object.

RESTRICTIONS:

a.   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.

b.   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.

c.   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, an object passes this test only if the specified field passes both tests.

d.   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.

4.       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.

5.       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 an 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 object.

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

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

COMPONENT_DRM_CLASS

Search for 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.

drm_class:              set to the DRM class of the target object.

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

COMPONENT_FIELD

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 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 object.

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

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

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

COMPONENT_FIELD_RANGE

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 object.

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

field_ordinal:           set to the ordinal of the chosen field within the fields of the given component 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

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 object.

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

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

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

ASSOCIATION

Objects that satisfy a search rule of this type shall have associations that can be traversed to one or more other objects.

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

rule_type:                set to ASSOCIATION.

ASSOCIATION_DRM_CLASS

Objects that satisfy a search rule of this type shall have associations that can be traversed to one or more 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 ASSOCIATION_DRM_CLASS.

drm_class:              set to the DRM class of object that shall be at the other end of a traversable association from the target object.

MAX_SEARCH_DEPTH

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

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

  • Component Iterator
  • Inherited Component Iterator
  • 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 object that is trying to satisfy this rule.

 

Search_Rule_Type ::= (   
                 < 1 : implementation_dependent,
                   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_DRM_CLASS,
                  12 : COMPONENT_FIELD,
                  13 : COMPONENT_FIELD_RANGE,
                  14 : COMPONENT_FIELD_ARRAY,
                  15 : ASSOCIATION,
                  16 : ASSOCIATION_DRM_CLASS,
                  17 : MAX_SEARCH_DEPTH,
        [ 18, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.39   Search_Value_Type

This data type specifies the type of value to be used during searching. Valid values are described in Table 5.57.

Table 5.57—Search_Value_Type values

Value

Definition

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.

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.

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.

FLOAT

The search value is specified as a floating point number.

LONG_FLOAT

The search value is specified as a long floating point number.

ENUMERATED

The search value is specified as an enumerant.

ID

The search value is specified as an ID.

STRING

The search value is specified as a string.

EDCS_ATTRIBUTE_CODE

The search value is specified as an EDCS attribute code.

EDCS_CLASSIFICATION_CODE

The search value is specified as an EDCS classification code.

Search_Value_Type ::= (  
                 < 1 : implementation_dependent,
                   1 : BOOLEAN,
                   2 : BYTE,
                   3 : BYTE_POSITIVE,
                   4 : BYTE_UNSIGNED,
                   5 : SHORT_INTEGER,
                   6 : SHORT_INTEGER_POSITIVE,
                   7 : SHORT_INTEGER_UNSIGNED,
                   8 : INTEGER,
                   9 : INTEGER_POSITIVE,
                  10 : INTEGER_UNSIGNED,
                  11 : FLOAT,
                  12 : LONG_FLOAT,
                  13 : ENUMERATED,
                  14 : ID,
                  15 : STRING,
                  16 : EDCS_ATTRIBUTE_CODE,
                  17 : EDCS_CLASSIFICATION_CODE,
        [ 18, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.40   Security_Restriction_Type

This data type specifies the type of security restriction that may be applied to a SEDRIS transmittal. Allowable values are defined in Table 5.59.

Table 5.58—Security_Restriction_Type values

Value

Definition

COPYRIGHT

The exclusive rights to the publication, production, or sale of the rights to a literary, dramatic, musical, or artistic work, or to the use of a commercial print or label, that has been granted by law for a specified period of time to an author, composer, artist, distributor.

PATENT

The exclusive right to make, sell, use or license an invention or discovery granted by a government.

PATENT_PENDING

The exclusive right to make, sell, use or license an invention or discovery that has been requested by not yet granted by a government.

TRADEMARK

A name, symbol, or other device identifying a product, officially registered and legally restricted to the use of the owner or manufacturer.

LICENSE

Formal permission to do or to use something.

INTELLECTUAL_PROPERTY_RIGHTS

Rights to financial benefit from, and control of distribution of, non-tangible property that is a result of creativity.

RESTRICTED

Withheld from general circulation or disclosure.

OTHER_RESTRICTIONS

A limitation not covered by the other cases.

Shading_Method ::= ( < 1  :     implementation_dependent,
                   1 : COPYRIGHT,
                   2 : PATENT,
                   3 : PATENT_PENDING,
                   4 : TRADEMARK,
                   5 : LICENSE,
                   6 : INTELLECTUAL_PROPERTY_RIGHTS,
                   7 : OTHER_RESTRICTIONS,
         [ 8, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.41   Shading_Method

This data type specifies the illumination method. Allowable values are defined in Table 5.59.

Table 5.59—Shading_Method values

Value

Definition

NONE

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

FLAT

The polygon face normal is used when calculating illumination of geometry.

INTERPOLATED_COLOUR

Vertex normals and light sources are taken into account when calculating illumination of a geometry attribute. This method is often called Gouraud shading.

INTERPOLATED_NORMAL

Vertex normals are interpolated as part of the illumination algorithm. This method is often called Phong shading.

Shading_Method ::= (
                 < 1 : implementation_dependent,
                   1 : NONE,
                   2 : FLAT,
                   3 : INTERPOLATED_COLOUR,
                   4 : INTERPOLATED_NORMAL,
         [ 5, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.42   Sound_Format

This data type specifies the format of sound files being played using the DRM _Sound DRM class. Allowable values are defined in Table 5.60.

Table 5.60—Sound_Format values

Value

Definition

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

Spacing_Type ::= ( 
                 < 1 : implementation_dependent,
                   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 : WVI,
        [ 15, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.43   Spacing_Type

This data type specifies the type of a <DRM Regular Axis>. Allowable values are defined in Table 5.61.

Table 5.61—Spacing_Type values

Value

Definition

ARITHMETIC

Tick marks form an arithmetic progression.

To compute nth tick value, the following formula applies:

            Tick(n) =  first_value + (n * spacing).

GEOMETRIC

Tick marks form a geometric progression.

To compute nth tick value, the following formula applies:

            Tick(n)  = first_value * (spacingn).

Spacing_Type ::= ( 
                 < 1 : implementation_dependent,
                   1 : ARITHMETIC,
                   2 : GEOMETRIC,
         [ 3, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.44   Spatial_Index_Spacing_Unit

This data type specifies the unit of distance measurement used for spatial index spacing. Allowable values are defined in Table 5.62.

Table 5.62—Spatial_Index_Spacing_Unit values

Value

Definition

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,
                   1 : METRE,
                   2 : ARC_SECOND,
            [2,1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.45   Status_Code

This data type specifies the status codes that can be returned by most API functions. The meanings for each status code are in Table 5.63. Additional information relating specific status codes with the functions which generate them may be found in Clause 7--Abstract API.

The INVALID_REQUIRED_PARAMETER takes precedence over the other failure values. If a function should fail due to multiple reasons, INVALID_REQUIRED_PARAMETER shall be returned.

Table 5.63—Status_Code values

Value

Definition

SUCCESS

This status code is returned when all parameters are valid and all operations succeeded, as a general statement. SUCCESS always indicates that the function succeeded. Note that other status codes do not necessarily indicate that the function failed. See particular functions for more information.

INVALID_OBJECT

This status code is returned when an argument of data type DRM_SEDRIS_Object_Base is invalid.

INVALID_REQUIRED_PARAMETER

This status code is returned when a required argument is invalid (e.g., when a pointer value is NULL), or when a required numerical argument is zero. This status code only applies to required parameters.

NO_OBJECT

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

MULTIPLE_OBJECTS

This status code is returned when more than one object satisfies the conditions; the function completed successfully but indicates that more objects meet the criteria.

COORDINATE_OPERATION_FAILURE

This status code is returned when:

a.   the Spatial Reference Frame has been set (via the SetSRFParameters function) to an SRF other than the SRF of the transmittal object being extracted, AND

b.   the <DRM Location> object about to be returned could not be converted into the selected SRF.

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.

UNRESOLVED_TRANSMITTAL

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

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:

a.   the access mode specified was create or update and the file was marked read-only;

b.   no access was permitted for the account running the application;

c.   create or update mode was requested but the API implementation did not support write capability;

d.   a function requiring create or update mode was invoked for an object in a transmittal that was opened in read-only mode.

UNSUPPORTED_FORMAT

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

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.

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_OBJECT

This status code is returned when a DRM object handle is encountered that references a DRM object that is not available to the SEDRIS 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_START_OBJECT

This status code is returned when an argument has been provided to an unresolved object (e.g., 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.

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.

INVALID_TRANSMITTAL

This status code is returned when an argument of data type Transmittal does not correspond to a valid, open transmittal.

FAILURE

This status code is returned for any of the following conditions:

a.   an invalid iterator or search filter is encountered, since these types do not have specific status codes;

b.   an API implementation that does not support the given function has been attached (i.e.,, a shared library has been loaded that does not implement the given function, so the call cannot be resolved properly),

c.   some other error condition has arisen that is not covered     by any of the more specific status codes.

OUT_OF_MEMORY

This status code is returned when the implementation is unable to allocate sufficient memory to satisfy the requirements of the function.

Status_Code ::= (
                 < 1 : implementation_dependent,
                   1 : SUCCESS,
                   2 : INVALID_OBJECT,
                   3 : INVALID_REQUIRED_PARAMETER,
                   4 : NO­_OBJECT,
                   5 : MULTIPLE_OBJECTS,
                   6 : COORDINATE_OPERATION_FAILURE,
                   7 : TRANSMITTAL_INACCESSIBLE,
                   8 : UNRESOLVED_TRANSMITTAL,
                   9 : INVALID_ACCESS_MODE,
                  10 : UNSUPPORTED_FORMAT,
                  11 : INVALID_TRANSMITTAL_NAME,
                  12 : UNPUBLISHED_OBJECT,
                  13 : UNRESOLVED_OBJECT,
                  14 : UNRESOLVED_START_OBJECT,
                  15 : INVALID_OBJECT_LABEL,
                  16 : DIFFERENT_TRANSMITTAL,
                  17 : INVALID_TRANSMITTAL,
            [18,999] : reserved for future standardization,
                1000 : FAILURE,
                1001 : OUT_OF_MEMORY,
        [1001, 1999] : reserved for other operating system errors,
         [2000,3999] : reserved for language binding dependent errors,
              > 4000 : reserved for registration )

5.2.5.46   Symbol_Format

This data type specifies the format of a file defining symbols used by the DRM_Symbol DRM class. Allowable values are defined in Table 5.64.

Table 5.64 —Symbol_Format values

Value

Definition

CGM

Computer Graphics Metafile

Symbol_Format ::= (
                 < 1 : implementation_dependent,
                   1 : CGM,
         [ 2, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.47   Time_Configuration

This data type specifies the configuration of time data. Valid values are described in Table 5.65.

Table 5.65—Time_Configuration values

Value

Definition

DATE_YMD_AND_TIME_HMS

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

DATE_YMD_AND_TIME_HM

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

DATE_YMD_AND_TIME_H

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

DATE_YMD

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

DATE_YD_AND_TIME_HMS

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

DATE_YD_AND_TIME_HM

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

DATE_YD_AND_TIME_H

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

DATE_YD

The time specifies the year and the day.

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,
                   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_Y,
                  10 : DATE_M,
                  11 : DATE_D,
        [ 12, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.48   Time_Data_Type

This data type specifies what “type” of time data is being used to organize a <DRM Time Related Features> or <DRM Geometry> aggregate. Valid values are described in Table 5.66.

Table 5.66—Time_Data_Type values

Value

Definition

MONTH

The time data is organized by month.

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,
                   1 : MONTH,
                   2 : SEASON,
                   3 : TIME_INTERVAL,
                   4 : TIME_OF_DAY,
                   5 : TIME_POINT,
         [ 6, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.49   Time_Measurement_Type

This data type specifies whether time is being measured in terms of absolute time, relative to the start of the exercise, or relative to some reference time. Valid values are described in Table 5.67.

Table 5.67—Time_Measurement_Type values

Value

Definition

GMT

Time is specified relative in Greenwich Mean Time.

RELATIVE_TO_EXERCISE_START

Time is specified relative to the start of the exercise.

RELATIVE_TO_REFREENCE_TIME

Time is specified relative to some stated reference time.

Time_Measurement_Type ::= (    
                 < 1 : implementation_dependent,
                   1 : GMT,
                   2 : RELATIVE_TO_EXERCISE_START,
                   3 : RELATIVE_TO_REFERENCE_TIME,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.50   Time_Significance

This data type specifies the meaning of the time represented by a <DRM Base Time Data> instance, in relation to the data set represented by the SEDRIS object aggregating that <DRM Base Time Data>. Valid values are described in Table 5.68.

Table 5.68—Time_Significance values

Value

Definition

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,
                   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.5.51   Transmittal_API_Function

This data type specifies the names of the available transmittal API functions.

TRANSMITTAL_API_FUNCTION ::= (
                 < 1 : implementation_dependent,
                   1 : ADD_ASSOCIATE_RELATIONSHIP,
                   2 : ADD_COMPONENT_RELATIONSHIP,
                   3 : CLONE_OBJECT,
                   4 : CLOSE_TRANSMITTAL,
                   5 : CMYK_TO_CMY,
                   6 : CMY_TO_CMYK,
                   7 : CONVERT_COLOR_TO_GIVEN_MODEL,
                   8 : CREATE_OBJECT,
                   9 : CREATE_SEARCH_FILTER,
                  10 : CREATE_SPATIAL_SEARCH_BOUNDARY,
                  11 : DETERMINE_SPATIAL_INCLUSION,
                  12 : FREE_ITERATOR,
                  13 : FREE_OBJECT,
                  14 : FREE_PACKED_HIERARCHY,
                  15 : FREE_REMAINING_OBJECTS_LIST,
                  16 : FREE_REMAINING_PACKED_HIERARCHIES_LIST,
                  17 : FREE_SEARCH_FILTER,
                  18 : FREE_SPATIAL_SEARCH_BOUNDARY,
                  19 : FREE_TRANSMITTAL,
                  20 : GET_AGGREGATE,
                  21 : GET_ASSOCIATE,
                  22 : GET_COLOUR_MODEL,
                  23 : GET_COMPONENT,
                  24 : GET_CONTEXT_TRANSFORMATION,
                  25 : GET_DATA_TABLE,
                  26 : GET_DRM_CLASS,
                  27 : GET_ELEMENT_OF_DATA_TABLE,
                  28 : GET_ERROR_DESCRIPTION,
                  29 : GET_FIELDS,
                  30 : GET_ID_FOR_OBJECT,
                  31 : GET_IMAGE_DATA,
                  32 : GET_IMPLEMENTATION_IDENTIFIER,
                  33 : GET_ITERATION_LENGTH_REMAINING,
                  34 : GET_NEXT_OBJECT,
                  35 : GET_NTH_ASSOCIATE_OF_DRM_CLASS,
                  36 : GET_NTH_COMPONENT_OF_DRM_CLASS,
                  37 : GET_NUMBER_OF_PATHS_TO_TRANSMITTAL_ROOT,
                  38 : GET_OBJECT_FOR_ID,
                  39 : GET_OBJECT_REFERENCE_COUNT,
                  40 : GET_PACKED_DATA_TABLE,
                  41 : GET_PACKED_HIERARCHY,
                  42 : GET_PUBLISHED_LABELS,
                  43 : GET_PUBLISHED_OBJECT_LIST,
                  44 : GET_REFERENCED_TRANSMITTAL_LIST,
                  45 : GET_RELATION_COUNTS,
                  46 : GET_REMAINING_OBJECTS_LIST,
                  47 : GET_REMAINING_PACKED_HIERARCHIES,
                  48 : GET_ROOT_OBJECT,
                  49 : GET_SORT_KEY,
                  50 : GET_SRF_PARAMETERS,
                  51 : GET_TRANSMITTAL_FROM_OBJECT,
                  52 : GET_TRANSMITTAL_LOCATION,
                  53 : GET_TRANSMITTAL_NAME,
                  54 : GET_TRANSMITTAL_VERSION_INFORMATION,
                  55 : GET_UNIQUE_TRANSMITTAL_ID,
                  56 : GET_UNRESOLVED_OBJECT_FROM_PUBLISHED_LABEL,
                  57 : GET_USER_DATA,
                  58 : HAS_AGGREGATES,
                  59 : HAS_ASSOCIATES,
                  60 : HAS_COMPONENTS,
                  61 : INITIALIZE_AGGREGATE_ITERATOR,
                  62 : INITIALIZE_ASSOCIATE_ITERATOR,
                  63 : INITIALIZE_COMPONENT_ITERATOR,
                  64 : INITIALIZE_INHERITED_COMPONENT_ITERATOR,
                  65 : OBJECT_IS_PUBLISHED,
                  66 : OBJECT_IS_RESOLVED,
                  67 : OBJECTS_ARE_SAME,
                  68 : OPEN_TRANSMITTAL_BY_LOCATION,
                  69 : OPEN_TRANSMITTAL_BY_NAME,
                  70 : PUBLISH_OBJECT,
                  71 : PUT_DATA_TABLE,
                  72 : PUT_DATA_TABLE_EXTENT,
                  73 : PUT_ELEMENT_OF_DATA_TABLE,
                  74 : PUT_ELEMENT_OF_DATA_TABLE_EXTENT,
                  75 : PUT_FIELDS,
                  76 : PUT_IMAGE_DATA,
                  77 : PUT_PACKED_DATA_TABLE,
                  78 : PUT_PACKED_DATA_TABLE_EXTENT,
                  79 : REMOVE_ASSOCIATE_RELATIONSHIP,
                  80 : REMOVE_COMPONENT_RELATIONSHIP,
                  81 : REMOVE_FROM_TRANSMITTAL,
                  82 : RESOLVE_OBJECT,
                  83 : RESOLVE_TRANSMITTAL_NAME,
                  84 : SET_COLOUR_MODEL,
                  85 : SET_FIRST_ERROR_MESSAGE,
                  86 : SET_GENERAL_CALLBACK,
                  87 : SET_GENERAL_CALLBACK_FOR_ONE_FUNCTION,
                  88 : SET_ROOT_OBJECT,
                  89 : SET_SECOND_ERROR_MESSAGE,
                  90 : SET_SPECIFIC_CALLBACK,
                  91 : SET_SRF_PARAMETERS,
                  92 : SET_TRANSMITTAL_NAME,
                  93 : SET_USER_DATA,
                  94 : TRANSMITTALS_ARE_SAME,

                      95 : UNPUBLISH_OBJECT,
                      96 : USE_DEFAULT_COLOUR_MODEL,
                      97 : USE_DEFAULT_SRF_PARAMETERS,
             [98, 1000 ] : reserved for future standardization,
                  > 1000 : reserved for registration )

5.2.5.52   Traversal_Order

This data type indicates the desired traversal order for a component iterator.  The traversal order of the branches of a <DRM Aggregate Feature> or <DRM Aggregate Geometry> is determined either by the DRM or by the hierarchy_order_parameters for the iterator, but the general traversal scheme (i.e., the order to search for objects from the <DRM Transmittal Root> 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 enumerants described in Table 5.69.

Table 5.69—Traversal_Order values

Value

Definition

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,
                   1 : BREADTH_FIRST,
                   2 : DEPTH_FIRST,
                   3 : MOST_EFFICIENT,
         [ 4, 1000 ] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.53   Underline_Style

This data type 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. Valid values are described in Table 5.70.

Table 5.70—Underline_Style values

Value

Definition

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,
                   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.5.54   Unmatched_State_Behaviour

This data type specifies what behavior should occur if the <DRM State Related Geometry> or <DRM State Related Features> state_value does not match any of the state tags supplied in the corresponding state_entry_array entry of State_Select_Parameters. Valid values are described in Table 5.71.

Table 5.71—Unmatched_State_Behaviour values

Value

Definition

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,
                   1 : NONE,
                   2 : DEFAULT,
                   3 : ALL,

            [4,1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.5.55   Volumetric_Shape

This data type specifies the shape of volume extents. Valid values are described in Table 5.72.

Table 5.72—Volumetric_Shape values

Value

Definition

SHPERE

The volume is in the shape of a sphere.

CYLINDER

The volume is in the shape of a cylinder.

PARALLELEPIPED

The volume is in the shape of a parallelepiped.

Volumetric_Shape ::= (
                 < 1 : implementation_dependent,
                   1 : SPHERE,
                   2 : CYLINDER,
                   3 : PARALLELEPIPED,

            [4,1000] : reserved for future standardization,
              > 1000 : reserved for registration )

5.2.6          Set Data Types

5.2.6.1       Introduction

Set data types are used to indicate membership in a group of properties. Each set data type consists of a listing of the names which 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.9 Registration).

5.2.6.2       Display_Side

This data type specifies which side or sides of a face should be displayed. This data type is not applicable if backfaced culling is used. Allowable set members are in Table 5.73.

Table 5.73 —Display_Side values

Value

Definition

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.6.3       Display_Style

This data type specifies a style in which to render geometric objects. Allowable set members are in Table 5.74.

Table 5.74 —Display_Style values

Value

Definition

SOLID

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

WIREFRAME

One the edges of polygons are displayed.

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

5.2.6.4       General_Hierarchy_Order

This data type indicates at a “high level” whether any components of the given <DRM Aggregate Geometry> and <DRM Aggregate Feature> objects 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 ordered specified by the Hierarchy_Order_Parameters of that type.

General_Hierarchy_Order ::= (
   ALTERNATE_HIERARCHY,
   CLASSIFICATION_RELATED,
   LEVEL_OF_DETAIL_RELATED,
   OCT_TREE_RELATED,
   QUAD_TREE_RELATED,
   SEPARATING_PLANE,
   SPATIAL_INDEX_RELATED_GENERAL,
   STATE_RELATED,
   TIME_RELATED,
   additional registered set members )

5.2.6.5       Polygon_Flags

This data type specifies flags that are used to indicate the state or use of a polygon. Details about each flag are contained in Table 5.75.

Table 5.75 —Polygon_Flag values

Flag

Definition

TERRAIN

This flag specfies that the associated polygon is a terrain polygon.

HAT_TEST

This flag specfies that this polygon is used for height above terrain tests.

COLLIDIBLE

This flag specfies that this polygon is used for collision detection. If an object collides with this polygon, a collision state is set.

PROJECTILE_COLLIDIBLE

This flag specfies that this polygon is used for projectile collision detection. If a projectile collides with this polygon, a projectile collision state is set.

BACKDROP_SKY

This flag specfies that this polygon is the default sky backdrop.

BACKDROP_GROUND

This flag specfies that this polygon is the default ground backdrop.

CUT

This flag specfies that this polygon is cut below the terrain surface. These are normally derived from <DRM Linear Feature>s, such as roads and rivers.

RAISED

This flag specfies that this polygon is a filling polygon above the terrain surface. These are normally derived from linear features such as roads. This flag also indicates that this polygon is raised above the terrain surface. These are normally derived from areal features such as forest canopies.

DECAL

This flag specfies that this polygon always has rendering priority above any other coplanar polygon. This flag will supercede the index value in the rendering priority index class.

INACTIVE

This flag specfies that this polygon is inactive, or not used.

INVISIBLE

This flag specfies that this polygon is invisible, or not seen.

FOOTPRINT

This flag specfies that this polygon is a footprint for other geometry.

WATER

This flag specfies that this polygon is water. This flag is used only when other polygons (e.g., lake bottom) are below it.

CLUTTER_ENHANCED

This flag specfies that this polygon has algorithmically scattered model instances on it.

SHADOW

This flag specfies that this polygon is in a shadow.

SUN_ILLUMINATED

This flag specfies that this polygon is illuminated depending on the position of the sun.

MOON_REFLECTION

This flag specfies that the moon reflection is to be generated upon this polygon.

ENABLE_FRACTAL

This flag specfies that the face of this polygon is allowed to fractalize in real-time. This is used for sea states.

CUT_IMAGERY

This flag specfies that this polygon is to be used to cut geospecific imagery into the cultural features.

VISIBLE_PERIMETER

This flag is used with the RAISED flag to specify that this polygon is raised but also specifies that the perimeter wall is visible.

VISIBLE_INTERIOR

This flag is used with the RAISED flag to specify that this polygon is raised but also specifies that the interior wall is visible.

VISIBLE_FLOOR

This flag is used with the RAISED flag to specify that this polygon is raised but also specifies that the floor is visible.

OPAQUE_TOP

This flag is used with the RAISED flag to specify that this polygon is raised but also specifies that the top is opaque.

LASER_RANGE_FINDING

This flag specfies that this polygon is used for horizontal tests. This flag is much like the HAT_TEST flag. Instead of testing in the vertical direction, this flag indicates the polygon is used in tests in the horizontal direction.

REFLECTIVE

This flag specfies that this polygon reflects light that is shown on it.

SITE_OCCULTING

This flag specfies that this polygon is not occulted by other polygons.

ENABLE_POLYGON_RANGE_BLENDING

This flag specfies that range ring blending is enabled for this polygon.  Polygons that have this flag set will all blend (geometry and texture) at the same range (distance).

ENABLE_FEATURE_SIZE_BLENDING

This flag specfies that feature-based blending is enabled for this polygon. Polygons that have this flag set will all blend (geometry and texture) simultaneously based on the size (radius) of the original feature from which the polygons were derived.

CONCAVE

This flag specfies that this polygon is concave.

DO_NOT_DRAPE

For conforming <DRM Polygon>s (i. e., <DRM Polygon>s specified using only <DRM LSR Location 2D>s), a <DRM Polygon> usually drapes across the terrain, breaking into multiple polygons if the draped polygon crosses terrain facets.  If this flag is set, the <DRM Polygon> is not draped and does not break at terrain facets.  Instead, terrain facets are ignored. The <DRM Polygon> is simply defined by the locations of its conformed <DRM Vertex>s.

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

5.2.6.6       Presentation_Domain

This data type indicates the intended use of a <DRM Colour>, a <DRM Colour Table>, or a <DRM Geometry> instance with <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          Introduction

Data type which 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 which group several other data types into records.

5.3.2          Array data types

Any data type can be combined in arrays. When used with the complex data type definitions, this data type provides support for instances where all of the individual data elements are of like type. Arrays may be of one, two, or three dimensions. Examples of each are shown in Table 5.76:

Table 5.76 —Array data types

One-dimensional arrays (lists):

Data_Type_Name[l]

Two-dimensional arrays:

Data_Type_Name[l,w]

Three-dimensional arrays:

Data_Type_Name[l,w,d]

The numbers l, w, and d represent the size of the corresponding length, width, and depth dimension. If the dimension is variable, an asterisk is used. A binding_specific method shall be provided for determining the size of the array. As an example, a data type for a variable length list of integers would be specified as:

Integer[*]

Similarly, a standard 4´4 matrix would be specified as:

Float[4,4]

The following standard array data types are defined:

Matrix_3x3      ::=      Long_Float[3,3]
Matrix_4x4      ::=      Long_Float[4,4]
Vector_3        ::=      Long_Float[3]

The representation of arrays may be extended to additional dimensions as needed to support new data types introduced by registration.

5.3.3          Record data types

5.3.3.1       Introduction

Data types which encompass a variety of information are called record data types. A record data type consists of a sequence of fundamental data types, which 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 defined 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.

Variant record data types are specified as follows:

record_data_type_name ::= ( variant_name variant_data_type) {
  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
}

5.3.3.2       Absolute_Time_Interval_Entry

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

Absolute_Time_Interval_Entry ::= {
   reference_time_point           Absolute_Time_Point_Fields;
   absolute_interval              Absolute_Time_Interval_Fields;
}

5.3.3.3       Absolute_Time_Interval_Fields

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

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.4       Absolute_Time_Point_Fields

This data type encapsulates the field elements of the <DRM Absolute Time Point> class.

Absolute_Time_Point_Fields ::= {
   time_significance     Time_Significance;
   year                  Integer;
   month                 Month;
   day                   Integer;
   hour                  Byte;       
Uses 24-hour clock specification.
   minutes               Byte;
   seconds               Long_Float;
   time_format           Time_Format;
}

5.3.3.5       Access_Fields

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

Access_Fields ::= {
   access_constraints             Security_Restriction_Type;
   use_constraints                Security_Restriction_Type;
   security                       Security_Information;
}

5.3.3.6       Address

This data type encapsulates the elements of address metadata.

Address ::= {
   delivery_point                 String;
   city                           String;
   administrative_area            String;
   postal_code                    String;
   country                        String;
}

5.3.3.7       AEC_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Lambert Conformal Conic (ALCC) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.8       AEC_Location_3D_Fields

This data type encapsulates the field elements of the <DRM AEC Location 3D> class.

AEC_Location_3D_Fields ::= (
   coordinate                     AEC_Coordinate_3D;
}

5.3.3.9       Aggregate_Feature_Fields

This data type specifies the specifies the data in the fields of the <DRM Aggregate Feature> class.

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

5.3.3.10   Aggregate_Geometry_Fields

This data type specifies the specifies the data in the fields of the <DRM Aggregate Geometry> class.

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

5.3.3.11   ALCC_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augemented Equidistant Cylindrical (AEC) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.12   ALCC_Location_3D_Fields

This data type specifies specifies the data in the fields of the <DRM ALCC Location 3D> class..

ALCC_Location_3D_Fields ::= {
   coordinate                     ALCC_Coordinate_3D;
}

5.3.3.13   Alternate_Hierarchy_Parameters

This data type is used to build 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> object or <DRM Alternate Hierarchy Related Geometry> object 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> or <DRM Alternate Hierarchy Related Geometry> object when encountered by a component iterator.  For the set of branches that will be traversed, the order of that traversal will be defined by the feature_hierarchy_data_array or geometry_hierarchy_data_array as appropriate in this structure. Any occurrences of branches that are traversed but are not mentioned in this traversal order array shall be traversed in a random 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>, <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.14   Alternate_Hierarchy_Related_Features_Fields

This 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.15   Alternate_Hierarchy_Related_Geometry_Fields

This 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.16          AM_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Mercator (AM) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.17   AM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM AM Location 3D> class.

AM_Location_3D_Fields ::= {
   coordinate                     AM_Coordinate_3D;
}

5.3.3.18   Animation_Behaviour_Fields

This data type specifies the data required for animation behaviour definitions.

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

5.3.3.19   Animation_Range

This data type specifies a single range of animation frames to be traversed from an <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.20   Animation_Related_Geometry_Fields

This 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.21   Animation_Select_Parameters

This data type selects which branches to traverse from a <DRM Animation Related Geometry> object when encountered by a component iterator.  Each branch of an <DRM Animation Related Geometry> 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. The ordering of beginning_frame to ending_frame is imposed by the data producer.

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

5.3.3.22   Any_Enumerated_Or_Selection_Value

This variant data type specifies an arbitrary enumerated or selection value which 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;
  CAMERA_PROJECTION_TYPE:   camera_projection_type      Camera_Projection_Type;
  COLOUR_BINDING:           colour_binding              Colour_Binding;
  COLOUR_MAPPING:           colour_mapping              Colour_Mapping;
  COLOUR_MODEL:             colour_model                Colour_Model;
  DISPLAY_SIDE:             display_side                Display_Side;
  DISPLAY_STYLE:            display_style               Display_Style;
  DISPLAY_TYPE:             display_type                Display_Type;
  DRM_CLASS:                drm_class                   DRM_Class;
  FEATURE_UNION_REASON:     feature_union_reason        Feature_Union_Reasons;
  GRID_OVERLAP_OPERATOR:    grid_overlap_operator       Grid_Overlap_Operator;
  IMAGE_COMPONENT:          image_component             Image_Component;
  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;
  INTERPOLATION_TYPE:       interpolation_type          Interpolation_Type;
  LOD_DATA_TYPE:            lod_data_type               LOD_Data_Type;
  LOOKUP_SIGNATURE:         lookup_signature            Lookup_Signature;
  LOOKUP_TYPE:              lookup_type                 Lookup_Type;
  LSR_TRANSFORMATION_AXIS:  lsr_transformation_axis     LSR_Transformation_Axis;
  MODEL_REFERENCE_TYPE:     model_reference_type        Model_Reference_Type;
  MONTH:                    month                       Month;
  MULTIPLICITY_CODE:        multiplicity_code           Multiplicity_Code;
  OCTANT:                   octant                      Octant;
  ORDERING_REASON:          ordering_reason             Ordering_Reason;
  PIXEL_FILL_METHOD:        pixel_fill_method           Pixel_Fill_Method;
  PREDEFINED_FUNCTION:      predefined_function         Predefined_Function;
  PRESENT_IN:               present_in                  Present_In;
  PROPERTY_DATA_VALUE_TYPE: property_data_value_type    Property_Data_Value_Type;
  QUADRANT:                 quadrant                    Quadrant;
  REFERENCE_VECTOR_TYPE:    reference_vector_type       Reference_Vector_Type;
  REFERENCE_SURFACE_ELEVATION_SELECT:
                             reference_surface_elevation_select
                                               Reference_Surface_Elevation_Select;
  REFERENCE_SURFACE_LOD_SELECT:
                             reference_surface_lod_select
                                               Reference_Surface_LOD_Select;
  SEASON:                   season                      Season;
  SHADING_METHOD:           shading_method              Shading_Method;
  SPACING_TYPE:             spacing_type                Spacing_Type;
  SPATIAL_INDEX_SPACING_UNIT:
                             spatial_index_spacing_unit  Spatial_Index_Spacing_Unit;     
  STATE_MISMATCH_BEHAVIOUR: state_mismatch_behaviour    State_Mismatch_Behaviour;
  TIME_DATA_TYPE:           time_data_type              Time_Data_Type;
  TIME_OF_DAY:              time_of_day                 Time_Of_Day;
  TIME_SIGNIFICANCE:        time_significance           Time_Significance;
}

5.3.3.23   Any_Search_Value

This variant data type supports all of the arbitrary data types which 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;
  ID:                       id_value                        Object_ID;
  STRING:                   string_value                    String;
  EDCS_ATTRIBUTE_CODE:      edcs_attribute_code_value       EDCS_Attribute_Code;
  EDCS_CLASSIFICATION_CODE: edcs_classification_code_value  EDCS_Classification_Code;
}

5.3.3.24   AOM_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Oblique Mercator (AOM) 3D  spatial reference frame.  It is defined in [2.I18026].

5.3.3.25   AOM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM AOM Location 3D> class.

AOM_Location_3D_Fields ::= {
   coordinate                     AOM_Coordinate_3D;
}

5.3.3.26   APS_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Polar Stereographic (APS) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.27   APS_Location_3D_Fields

This data type encapsulates the field elements of the <DRM APS Location 3D> class.

APS_Location_3D_Fields ::= {
   coordinate                     APS_Coordinate_3D;
}

5.3.3.28   Arc_Fields

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

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

5.3.3.29   ATM_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Transverse Mercator (ATM) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.30   ATM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM ATM Location 3D> class.

ATM_Location_3D_Fields ::= {
   coordinate                     ATM_Coordinate_3D;
}

5.3.3.31   Attribute_Set_Index_Fields

This data type encapsulates the field elements of the <DRM Attribute Set Index> class.

Attribute_Set_Index_Fields ::= {
   index                          Integer_Positive;
}

5.3.3.32   Attribute_Set_Index_Control_Link_Fields

This data type encapsulates the field elements of the <DRM Attribute Set Index Control Link> class.

Attribute_Set_Index_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
}

5.3.3.33   Attribute_Set_Table_Fields

This data type encapsulates the field elements of the <DRM Attribute Set Table> class.

Attribute_Set_Table_Fields ::= {
   table_usage                    String;
   regular                        Boolean;
}

5.3.3.34   Attribute_Set_Table_Group_Fields

This data type encapsulates the field elements of the <DRM Attribute Set Table Group> class.

Attribute_Set_Table_Group_Fields ::= {
   group_id                       Integer_Unsigned;
   primary_table_index            Integer_Positive;
   table_size                     Integer_Positive;
}

5.3.3.35   AUPS_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Universal Polar Stereographic (AUPS) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.36   AUPS_Location_3D_Fields

This data type encapsulates the field elements of the <DRM AUPS Location 3D> class.

AUPS_Location_3D_Fields ::= {
   coordinate                     AUPS_Coordinate_3D;
}

5.3.3.37   AUTM_Coordinate_3D

This data type specifies the data needed to define a coordinate in the Augmented Universal Transverse Mercator (AUTM) 3D spatial reference frame.  It is defined in [2.I18026].

5.3.3.38   AUTM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM AUTM Location 3D> class.

AUTM_Location_3D_Fields ::= {
   coordinate                     AUTM_Coordinate_3D;
}

5.3.3.39   Axis_Fields

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

Axis_Fields ::= {
   axis_type                      Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   axis_value_count               Short_Integer_Positive;
}

5.3.3.40   Base_Positional_Light_Fields

This 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.41   Base_Reference_Vector_Fields

This data type encapsulates the field elements of the <DRM Base Reference Vector> class.

Base_Reference_Vector_Fields ::= {
   unit_vector                    Vector_3;
   vector_type                    Reference_Vector_Type;
}

5.3.3.42   Base_Summary_Item_Fields

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

Base_Summary_Item_Fields ::= {
   type                           DRM_Class;
}

5.3.3.43   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.44   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.45   Browse_Media_Fields

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

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

5.3.3.46   Camera_Point_Fields

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

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

5.3.3.47   Citation_Fields

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

Citation_Fields ::= {
   title                          String;
   edition                        String;
   responsible_party              Contact_Information;
   series_name                    String;
   issue_id                       String;
   other                          String;
}

5.3.3.48   Classification_Data_Fields

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

Classification_Data_Fields ::= {
   tag                            EDCS_Classification_Code;
}

5.3.3.49   Classification_Entry

This data type specifies a single entry in the data provided by the Classification_Parameter data type. The qualified <DRM Classification Data> thus represented shall comply with the constraint Elaboration of classification data.

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

5.3.3.50   Classification_Parameters

This data type is used to build 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> object 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> object 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 a random 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.51   Classification_Related_Feature_Fields

This 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.52   Classification_Related_Geometry_Fields

This 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.53   CMY_Colour_Control_Link_Fields

This 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.54   CMY_Colour_Fields

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

CMY_Colour_Fields ::= {
   cmy_data                       CMY_Data;
}

5.3.3.55   CMY_Data

This data type specifies colour data using the CMY colour model.

CMY_Data ::= {
   cyan       [0,0 1,0]       Long_Float;
   magenta    [0,0 1,0]       Long_Float;
   yellow     [0,0 1,0]       Long_Float;
}

5.3.3.56   CMYK_Data

This data type specifies colour data using the CMYK colour model.

CMYK_Data ::= {
   cyan       [0,0 1,0]       Long_Float;
   magenta    [0,0 1,0]       Long_Float;
   yellow     [0,0 1,0]       Long_Float;
   black      [0,0 1,0]       Long_Float;
}

5.3.3.57   Colour_Entry_Table_Fields

This data type encapsulates the field elements of the <DRM Colour Entry Table> class.

Colour_Entry_Table_Fields ::= {
   start_index                    Integer_Positive;
}

5.3.3.58   Colour_Fields

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

Colour_Fields ::= {
   colour_mapping                 Colour_Mapping;
}

5.3.3.59   Colour_Index_Control_Link_Fields

This 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_index                Integer_Unsigned;
}

5.3.3.60   Colour_Index_Fields

This 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.61   Colour_Shininess_Fields

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

Colour_Shininess_Fields ::= {
   shininess                      Long_Float;
}

5.3.3.62   Colour_Table_Group_Fields

This 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.63   Cone_Directional_Light_Fields

This 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.64   Conformal_Behaviour_Fields

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

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

5.3.3.65   Contact_Information

This data type encapsulates the complete set of contact metadata used by <DRM Point Of Contact> and <DRM Citation>.

Contact_Information ::= {
   person_name                    String;
   position_name                  String;
   organization                   String;
   address                        Address;
   voice_phone                    String;
   fax_phone                      String;
   tdd_tty_phone                  String;
   email_address                  String;
   web_site                       String;
   hours_of_service               String;
   other                          String;
}

5.3.3.66   Continuous_LOD_Related_Geometry_Fields

This data type encapsulates the field elements of the <DRM Continuous Level Of Detail Related Geometry> class.

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

5.3.3.67   Continuous_LOD_Select_Parameters

This data type selects which branches to traverse from a <DRM Continuous Level of Detail Related Geometry> object when encountered by a component iterator.

Continuous_LOD_Select_Parameters ::= {
   continous_lod_choice           Continuous_LOD_Select_Choice;
}

5.3.3.68   Control_Link_Fields

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

Control_Link_Fields ::= {
   description                    String;
}

5.3.3.69   Cross_Reference_Fields

This data type encapsulates the field elements of the <DRM Cross Reference> class.

Cross_Reference_Fields ::= {
   relationship                   String;
}

5.3.3.70   Cylindrical_Volume_Extent_Entry

This data type specifies cylindrical <DRM Volume Level Of Detail Data>.

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

5.3.3.71   Cylindrical_Volume_Extent_Fields

This 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;
   cylindrical_length             Long_Float;
}

5.3.3.72   Data_Quality_Fields

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

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

5.3.3.73   Data_Table_Extents

This data type encapsulates the field elements of a <DRM Data Table> class.

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

5.3.3.74   Description_Fields

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

Description_Fields ::= {
   abstract                       String;
   purpose                        String;
   other                          String;
}

5.3.3.75   Distance_LOD_Data_Fields

This data type specifies  the data in the fields of the <DRM Distance Level Of Detail 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.76   DRM_Class_Fields

This variant record data type has a version for each of the non-abstract DRM classes defined. For each DRM class containing fields, a variant is provided which can represent the information in those fields.

DRM_Class_Fields ::=  (drm_class  DRM_Class ) {
  NULL:
  AMBIENT_COLOUR:
  AREAL_FEATURE:
  ATTACHMENT_POINT:
  ATTRIBUTE_SET:
  ATTRIBUTE_SET_TABLE_LIBRARY:
  BASE_LEVEL_OF_DETAIL_DATA:
  BASE_VERTEX:
  BOUNDING_VOLUME:
  CENTER_OF_BUOYANCY:
  CENTER_OF_MASS:
  CENTER_OF_PRESSURE:
  COLLISION_VOLUME:
  COLOUR_DATA:
  COLOUR_ENTRY:
  COLOUR_SET:
  COLOUR_TABLE:
  COLOUR_TABLE_LIBRARY:
  CONNECTED_FEATURE_EDGE:
  CONNECTED_GEOMETRY_EDGE:
  CONTACT_POINT:
  DATA_TABLE:
  DATA_TABLE_LIBRARY:
  DIFFUSE_COLOUR:
  DIRECTIONAL_LIGHT_BEHAVIOUR:
  EMISSIVE_COLOUR:
  EXPRESSION:
  EXTERNAL_FEATURE_FACE_RING:
  FEATURE:
  FEATURE_EDGE:
  FEATURE_FACE:
  FEATURE_FACE_RING:
  FEATURE_MODEL:
  FEATURE_MODEL_INSTANCE:
  FEATURE_NODE:
  FEATURE_SAME_AS:
  FEATURE_TOPOLOGY:
  FINITE_ELEMENT_MESH:
  GEOMETRY:
  GEOMETRY_EDGE:
  GEOMETRY_FACE:
  GEOMETRY_FACE_RING:
  GEOMETRY_HIERARCHY:
  GEOMETRY_MODEL:
  GEOMETRY_MODEL_INSTANCE:
  GEOMETRY_NODE:
  GEOMETRY_SAME_AS:
  GEOMETRY_TOPOLOGY:
  ICON:
  IMAGE_LIBRARY:
  INTERNAL_FEATURE_FACE_RING:
  LABEL:
  LIBRARY:
  LIGHT_RENDERING_BEHAVIOUR:
  LINEAR_FEATURE:
  LOCATION:
  LOCATION_2D:
  LOCATION_3D:
  LSR_TRANSFORMATION:
  LSR_TRANSFORMATION_STEP:
  MODEL_LIBRARY:
  PERIMETER_DATA:
  POINT:
  POINT_FEATURE:
  PRIMITIVE_COLOUR:
  PRIMITIVE_FEATURE:
  PRIMITIVE_GEOMETRY:
  PROPERTY_GRID_HOOK_POINT:
  PROPERTY_TABLE:
  PROPERTY_TABLE_REFERENCE_ENTRY:
  PROPERTY_TABLE_REFERENCE_SET:
  REGULAR_FEATURE_FACE:
  SAME_AS_FEATURE_EDGE:
  SAME_AS_FEATURE_FACE:
  SAME_AS_FEATURE_NODE:
  SAME_AS_GEOMETRY_EDGE:
  SAME_AS_GEOMETRY_FACE:
  SAME_AS_GEOMETRY_NODE:
  SEDRIS_ABSTRACT_BASE:
  SEPARATING_PLANE:
  SEPARATING_PLANE_RELATIONS:
  SOUND_LIBRARY:
  SOUND_VOLUME:
  SPATIAL_DOMAIN:
  SPECULAR_COLOUR:
  SURFACE_GEOMETRY:
  SYMBOL_LIBRARY:
  TACK_POINT:
  TEXTURE_COORDINATE_ENTRY:
  TEXTURE_COORDINATE_SET:
  TIME_CONSTRAINTS_DATA:
  TRANSFORMATION:
  TWINKLING_LIGHT_BEHAVIOUR:
  UNIVERSAL_FEATURE_FACE:
  VERTEX:
  VOLUME:
  VOLUME_EXTENT:
  VOLUME_GEOMETRY:
    unused_fields                         Unused_Fields;
  ABSOLUTE_TIME_INTERVAL:
    absolute_time_interval_fields         Absolute_Time_Interval_Fields;
  ABSOLUTE_TIME_POINT:
    absolute_time_point_fields            Absolute_Time_Point_Fields;
  ACCESS:
    access_fields                         Access_Fields;
  AEC_LOCATION_3D:
    aec_location_3D_fields                AEC_Location_3D_Fields;
  AGGREGATE_FEATURE:
    aggregate_feature_fields              Aggregate_Feature_Fields;
  AGGREGATE_GEOMETRY:
    aggregate_geometry_fields             Aggregate_Geometry_Fields;
  ALCC_LOCATION_3D:
    alcc_location_3D_fields               ALCC_Location_3D_Fields;
  ALTERNATE_HIERARCHY_RELATED_FEATURES:
    alternate_hierarchy_related_feature_fields Alternate_Hierarchy_Related_Features_Fields;
  ALTERNATE_HIERARCHY_RELATED_GEOMETRY:
    alternate_hierarchy_related_geometry_fields Alternate_Hierarchy_Related_Geometry_Fields;
  AM_LOCATION_3D:
    am_location_3D_fields                 AM_Location_3D_Fields;
  ANIMATION_BEHAVIOUR:
    animation_behaviour_fields            Animation_Behaviour_Fields;
  ANIMATION_RELATED_GEOMETRY:
    animation_related_geometry_fields     Animation_Related_Geometry_Fields;
  AOM_LOCATION_3D:
    aom_location_3D_fields                AOM_Location_3D_Fields;
  APS_LOCATION_3D:
    aps_location_3D_fields                APS_Location_3D_Fields;
  ARC:
    arc_fields                            Arc_Fields;
  ATM_LOCATION_3D:
    atm_location_3D_fields                ATM_Location_3D_Fields;
  ATTRIBUTE_SET_INDEX:
    attribute_set_index_fields            Attribute_Set_Index_Fields;
  ATTRIBUTE_SET_INDEX_CONTROL_LINK:
    attribute_set_index_control_link_fields  Attribute_Set_Index_Control_Link_Fields;
  ATTRIBUTE_SET_TABLE:
    attribute_set_table_fields            Attribute_Set_Table_Fields;
  ATTRIBUTE_SET_TABLE_GROUP:
    attribute_set_table_group_fields      Attribute_Set_Table_Group_Fields;
  AUPS_LOCATION_3D:
    aups_location_3D_fields               AUPS_Location_3D_Fields;
  AUTM_LOCATION_3D:
    autm_location_3D_fields               AUTM_Location_3D_Fields;
  AXIS:
    axis_fields                           Axis_Fields;
  BASE_POSITIONAL_LIGHT:
    base_positional_light_fields          Base_Positional_Light_Fields;
  BASE_REFERENCE_VECTOR:
    base_reference_vector_fields          Base_Reference_Vector_Fields;
  BASE_SUMMARY_ITEM:
    base_summary_item_fields              Base_Summary_Item_Fields;
  BASE_TIME_DATA:
    base_time_data_fields                 Base_Time_Data_Fields;
  BLEND_DIRECTIONAL_LIGHT:
    blend_directional_light_fields        Blend_Directional_Light_Fields;
  BROWSE_MEDIA:
    browse_media_fields                   Browse_Media_Fields;
  CAMERA_POINT:
    camera_point_fields                   Camera_Point_Fields;
  CITATION:
    citation_fields                       Citation_Fields;
  CLASSIFICATION_DATA:
    classification_data_fields            Classification_Data_Fields;
  CLASSIFICATION_RELATED_FEATURES:
    classification_related_features_fields Classification_Related_Features_Fields;
  CLASSIFICATION_RELATED_GEOMETRY:
    classification_related_geometry_fields Classification_Related_Geometry_Fields;
  CMY_COLOUR:
    cmy_colour_fields                     CMY_Colour_Fields;
  CMY_COLOUR_CONTROL_LINK:
    cmy_colour_control_link_fields        CMY_Colour_Control_Link_Fields;
  COLOUR:
    colour_fields                         Colour_Fields;
  COLOUR_ENTRY_TABLE:
    colour_entry_table_fields             Colour_Entry_Table_Fields;
  COLOUR_INDEX:
    colour_index_fields                   Colour_Index_Fields;
  COLOUR_INDEX_CONTROL_LINK:
    colour_index_control_link_fields      Colour_Index_Control_Link_Fields;
  COLOUR_SHININESS:
    colour_shininess_fields               Colour_Shininess_Fields;
  COLOUR_TABLE_GROUP:
    colour_table_group_fields             Colour_Table_Group_Fields;
  CONE_DIRECTIONAL_LIGHT:
    cone_directional_light_fields         Cone_Directional_Light_Fields;
  CONFORMAL_BEHAVIOUR:
    conformal_behaviour_fields            Conformal_Behaviour_Fields;
  CONTINUOUS_LEVEL_OF_DETAIL_RELATED_GEOMETRY:
    continuous_lod_related_geometry_fields Continuous_LOD_Related_Geometry_Fields;
  CONTROL_LINK:
    control_link_fields                   Control_Link_Fields;
  CYLINDRICAL_VOLUME_EXTENT:
    cylindrical_volume_extent_fields      Cylindrical_Volume_Extent_Fields;
  DATA_QUALITY:
    data_quality_fields                   Data_Quality_Fields;
  DESCRIPTION:
    description_fields                    Description_Fields;
  DISTANCE_LEVEL_OF_DETAIL_DATA:
    distance_lod_data_fields              Distance_LOD_Data_Fields;
  DRM_CLASS_SUMMARY_ITEM::
    drm_class_summary_item_fields         DRM_Class_Summary_Item_Fields;
  EC_LOCATION_2D:
    ec_location_2d_fields                 EC_Location_2D_Fields;
  EC_LOCATION_3D:
    ec_location_3d_fields                 EC_Location_3D_Fields;
  EDCS_USE_SUMMARY_ITEM:
    edcs_use_summary_item_fields          EDCS_Use_Summary_Item_Fields;
  EDGE_DIRECTION:
    edge_direction_fields                 Edge_Direction_Fields;
  ELLIPSE:
    ellipse_fields                        Ellipse_Fields;
  ELLIPTIC_CYLINDER:
    elliptical_cylinder_fields            Elliptical_Cylinder_Fields;
  ENUMERATION_AXIS:
    enumeration_axis_fields               Enumeration_Axis_Fields;
  ENVIRONMENT_ROOT:
    environment_root_fields               Environmental_Root_Fields;
  ENVIRONMENTAL_DOMAIN_SUMMARY:
    environmental_domain_summary_fields   Environmental_Domain_Summary_Fields;
  FACE_DIRECTION:
    face_direction_fields                 Face_Direction_Fields;
  FADE_RANGE:
    fade_range_fields                     Fade_Range_Fields;
  FEATURE_HIERARCHY:
    feature_hierarchy_fields              Feature_Hierarchy_Fields;
  FEATURE_ID:
    feature_id_fields                     Feature_ID_Fields;
  FEATURE_ID_CONTROL_LINK:
    feature_id_control_link_fields        Feature_ID_Control_Link_Fields;
  FEATURE_TOPOLOGY_HIERARCHY:
    feature_topology_hierarchy_fields     Feature_Topology_Hierarchy_Fields;
  FLASHING_LIGHT_BEHAVIOUR:
    flashing_light_behaviour_fields       Flashing_Light_Behaviour_Fields;
  FUNCTION:
    function_fields                       Function_Fields;
  GC_LOCATION_3D:
    gc_location_3D_fields                 GC_Location_3D_Fields;
  GCS_LOCATION_3D:
    gcs_location_3D_fields                GCS_Location_3D_Fields;
  GD_LOCATION_2D:
    gd_location_2D_fields                 GD_Location_2D_Fields;
  GD_LOCATION_3D:
    gd_location_3D_fields                 GD_Location_3D_Fields;
  GEI_LOCATION_3D:
    gei_location_3D_fields                GEI_Location_3D_Fields;
  GEOMETRY_ID:
    geometry_id_fields                    Geometry_ID_Fields;
  GEOMETRY_ID_CONTROL_LINK:
    geometry_id_control_link_fields       Geometry_ID_Control_Link_Fields;
  GEOMETRY_TOPOLOGY_HIERARCHY:
    geometry_topology_hierarchy_fields    Geometry_Topology_Hierarchy_Fields;
  GM_LOCATION_3D:
    gm_location_3D_fields                 GM_Location_3D_Fields;
  GRID_OVERLAP:
    grid_overlap_fields                   Grid_Overlap_Fields;
  GSE_LOCATION_3D:
    gse_location_3D_fields                GSE_Location_3D_Fields;
  GSM_LOCATION_3D:
    gsm_location_3D_fields                GSM_Location_3D_Fields;
  HIERARCHICAL_TABLE:
    hierarchy_data_fields                 Hierarchy_Data_Fields;
  HIERARCHY_DATA:
    hierarchical_table_fields             Hierarchical_Table_Fields;
  HIERARCHY_SUMMARY_ITEM:
    hierarchy_summary_item_fields         Hierarchy_Summary_Item_Fields;
  HSV_COLOUR:
    hsv_colour_fields                     HSV_Colour_Fields;
  HSV_COLOUR_CONTROL_LINK:
    hsv_colour_control_link_fields        HSV_Colour_Control_Link_Fields;
  IMAGE:
    image_fields                          Image_Fields;
  IMAGE_ANCHOR:
    image_anchor_fields                   Image_Anchor_Fields;
  IMAGE_LOOKUP:
    image_lookup_fields                   Image_Lookup_Fields;
  IMAGE_MAPPING_FUNCTION:
    image_mapping_function_fields         Image_Mapping_Function_Fields;
  INDEX_LEVEL_OF_DETAIL_DATA:
    index_lod_data_fields                 Index_LOD_Data_Fields;
  INFINITE_LIGHT:
    infinite_light_fields                 Infinite_Light_Fields;
  INLINE_COLOUR:
    inline_colour_fields                  Inline_Colour_Fields;
  IN_OUT:
    in_out_fields                         In_Out_Fields;
  INTERFACE_TEMPLATE:
    interface_template_fields             Interface_Template_Fields;
  INTERVAL_AXIS:
    interval_axis_fields                  Interval_Axis_Fields;
  IRREGULAR_AXIS:
    irregular_axis_fields                 Irregular_Axis_Fields;
  KEYWORDS:
    keywords_fields                       Keywords_Fields;
  LCC_LOCATION_2D:
    lcc_location_2D_fields                LCC_Location_2D_Fields;
  LEVEL_OF_DETAIL_RELATED_FEATURES:
    lod_related_features_fields           LOD_Related_Features_Fields;
  LEVEL_OF_DETAIL_RELATED_GEOMETRY:
    lod_related_geometry_fields           LOD_Related_Geometry_Fields;
  LIGHT_RENDERING_PROPERTIES:
    light_rendering_properties_fields     Light_Rendering_Properties_Fields;
  LIGHT_RENDERING_PROPERTIES_CONTROL_LINK:
    light_rendering_properties_control_link_fields                                                                                  Light_Rendering_Properties_Control_Link_Fields;
  LIGHT_SOURCE:
    light_source_fields                   Light_Source_Fields;
  LIGHT_SOURCE_CONTROL_LINK:
    light_source_control_link_fields      Light_Source_Control_Link_Fields;
  LINE:
    line_fields                           Line_Fields;
  LINEAGE:
    lineage_fields                        Lineage_Fields;
  LINEAR_GEOMETRY:
    linear_geometry_fields                Linear_Geometry_Fields;
  LITERAL:
    literal_fields                        Literal_Fields;
  LOBE_DATA:                             
    lobe_data_fields                      Lobe_Data_Fields;
  LOCAL_4X4:
    local_4x4_fields                      Local_4x4_Fields;
  LOCATION_TABLE:
    location_table_field                  Location_Table_Fields;
  LSR_LOCATION_2D:
    lsr_location_2D_fields                LSR_Location_2D_Fields;
  LSR_LOCATION_3D:
    lsr_location_3D_fields                LSR_Location_3D_Fields;
  LSR_LOCATION_3D_CONTROL_LINK:
    lsr_location_3D_control_link_fields   LSR_Location_3D_Control_Link_Fields;     
  LTP_LOCATION_2D:
    ltp_location_2D_fields                LTP_Location_2D_Fields;
  LTP_LOCATION_3D:
    ltp_location_3D_fields                LTP_Location_3D_Fields;
  M_LOCATION_2D:
    m_location_2D_fields                  M_Location_2D_Fields;
  M_LOCATION_3D:
    m_location_3D_fields                  M_Location_3D_Fields;
  MAP_SCALE_LEVEL_OF_DETAIL_DATA:
    map_scale_lod_data_map_scale          Map_Scale_LOD_Data_Fields;
  MESH_FACE_TABLE:
    mesh_face_table_fields                Mesh_Face_Table_Fields;
  MODEL:
    model_fields                          Model_Fields;
  MODEL_INSTANCE_TEMPLATE_INDEX:
    model_instance_template_index_fields  Model_Instance_Template_Index_Fields;
  MOVING_LIGHT_BEHAVIOUR:
    moving_light_behaviour_fields         Moving_Light_Behaviour_Fields;
  OCT_TREE_DATA:
    oct_tree_data_fields                  Oct_Tree_Data_Fields;
  OCT_TREE_RELATED_FEATURES:
    oct_tree_related_features_fields      Oct_Tree_Related_Features_Fields;
  OCT_TREE_RELATED_GEOMETRY:
    oct_tree_related_geometry_fields      Oct_Tree_Related_Geometry_Fields;
  OM_LOCATION_2D:
    om_location_2D_fields                 OM_Location_2D_Fields;
  OVERLOAD_PRIORITY_INDEX:
    overload_priority_index_fields        Overload_Priority_Index_Fields;
  PARALLELEPIPED_VOLUME_EXTENT:
    parallelepiped_volume_extent_fields   Parallelepiped_Volume_Extent_Fields;
  PERIMETER_RELATED_FEATURE_TOPOLOGY:
    perimeter_related_feature_topology_fields Perimeter_Related_Feature_Topology_Fields;
  PERIMETER_RELATED_FEATURES:
    perimeter_related_features_fields     Perimeter_Related_Features_Fields;
  PERIMETER_RELATED_GEOMETRY:
    perimeter_related_geometry_fields     Perimeter_Related_Geometry_Fields;
  PERIMETER_RELATED_GEOMETRY_TOPOLOGY:
    perimeter_related_geometry_topology_fields Perimeter_Related_Geometry_Topology_Fields;
  POINT_OF_CONTACT:
    point_of_contact_fields               Point_Of_Contact_Fields;
  POLYGON:
    polygon_fields                        Polygon_Fields;
  POLYGON_CONTROL_LINK:
    polygon_control_link_fields           Polygon_Control_Link_Fields;
  POSITIONAL_LIGHT:
    positional_light_fields               Positional_Light_Fields;
  PREDEFINED_FUNCTION:
    predefined_function_fields            Predefined_Function_Fields;
  PRESENTATION_DOMAIN:
    presentation_domain_fields            Presentation_Domain_Fields;
  PRIMITIVE_SUMMARY_ITEM:
    primitive_summary_item_fields         Primitive_Summary_Item_Fields;
  PROCESS_STEP:
    process_step_fields                   Process_Step_Fields;
  PROPERTY:
    property_fields                       Property_Fields;
  PROPERTY_CHARACTERISTIC:
    property_characteristic_fields        Property_Characteristic_Fields;
  PROPERTY_DESCRIPTION:
    property_description_fields           Property_Description_Fields;
  PROPERTY_GRID:
    property_grid_fields                  Property_Grid_Fields;
  PROPERTY_TABLE_REFERENCE:
    property_table_reference_fields       Property_Table_Reference_Fields;
  PROPERTY_TABLE_REFERENCE_CONTROL_LINK:
    property_table_reference_control_link_fields                                                                                    Property_Table_Reference_Control_Link_Fields;
  PROPERTY_TABLE_REFERENCE_TABLE:
    property_table_reference_table_fields Property_Table_Reference_Table_Fields;
  PROPERTY_VALUE:
    property_value_fields                 Property_Value_Fields;
  PS_LOCATION_2D:
    ps_location_2D_fields                 PS_Location_2D_Fields;
  PSEUDO_CODE_FUNCTION:
    pseudo_code_function_fields           Pseudo_Code_Function_Fields;
  PYRAMID_DIRECTIONAL_LIGHT:
    pyramid_directional_light_fields      Pyramid_Directional_Light_Fields;
  QUAD_TREE_DATA:
    quad_tree_data_fields                 Quad_Tree_Data_Fields;
  QUAD_TREE_RELATED_FEATURES:
    quad_tree_related_features_fields     Quad_Tree_Related_Features_Fields;
  QUAD_TREE_RELATED_GEOMETRY:
    quad_tree_related_geometry_fields     Quad_Tree_Related_Geometry_Fields;
  REFERENCE_ORIGIN:
    reference_origin_fields               Reference_Origin_Fields;
  REFERENCE_SURFACE:
    reference_surface_fields              Reference_Surface_Fields;
  REFERENCE_VECTOR:
    reference_vector_fields               Reference_Vector_Fields;
  REFERENCE_VECTOR_CONTROL_LINK:
    reference_vector_control_link_fields  Reference_Vector_Control_Link_Fields;
  REFERENCE_VECTOR_TABLE:
    reference_vector_table_fields         Reference_Vector_Table_Fields;
  REFERENCE_VECTOR_WITH_LOCATION_INDEX:
    reference_vector_with_location_index_fields                                                                                     Reference_Vector_With_Location_Index_Fields;
  REGULAR_AXIS:
    regular_axis_fields                   Regular_Axis_Fields;
  RELATIVE_TIME_INTERVAL:
    relative_time_interval_fields         Relative_Time_Interval_Fields;
  RELATIVE_TIME_POINT:
    relative_time_point_fields            Relative_Time_Point_Fields;
  RENDERING_PRIORITY_LEVEL:
    rendering_priority_level_fields       Rendering_Priority_Level_Fields;
  RENDERING_PROPERTIES:
    rendering_properties_fields           Rendering_Properties_Fields;
  RGB_COLOUR:
    rgb_colour_fields                     RGB_Colour_Fields;
  RGB_COLOUR_CONTROL_LINK:
    rgb_colour_control_link_fields        RGB_Colour_Control_Link_Fields;
  ROTATING_LIGHT_BEHAVIOUR:
    rotating_light_behaviour_fields       Rotating_Light_Behaviour_Fields;
  ROTATION:
    rotation_fields                       Rotation_Fields;
  ROTATION_CONTROL_LINK:
    rotation_control_link_fields          Rotation_Control_Link_Fields;
  SCALE:
    scale_fields                          Scale_Fields;
  SCALE_CONTROL_LINK:
    scale_control_link_fields             Scale_Control_Link_Fields;
  SEASON:
    season_fields                         Season_Fields;
  SEPARATING_PLANE_DATA:
    separating_plane_data_fields          Separating_Plane_Data_Fields;
  SEPARATING_PLANE_RELATED_GEOMETRY:
    separating_plane_related_geometry_fields Separating_Plane_Related_Geometry_Fields;
  SM_LOCATION_3D:
    sm_location_3D_fields                 SM_Location_3D_Fields;
  SOUND:
    sound_fields                          Sound_Fields;
  SOUND_INSTANCE:
    sound_instance_fields                 Sound_Instance_Fields;
  SOUND_INSTANCE_CONTROL_LINK:
    sound_instance_control_link_fields    Sound_Instance_Control_Link_Fields;
  SOURCE:
    source_fields                         Source_Fields;
  SPATIAL_INDEX_RELATED_FEATURE_TOPOLOGY:
    spatial_index_related_feature_topology_fields                                                                                   Spatial_Index_Related_Feature_Topology_Fields;
  SPATIAL_INDEX_RELATED_FEATURES:
    spatial_index_related_features_fields Spatial_Index_Related_Features_Fields;
  SPATIAL_INDEX_RELATED_GEOMETRY:
    spatial_index_related_geometry_fields Spatial_index_Related_Geometry_Fields;
  SPATIAL_INDEX_RELATED_GEOMETRY_TOPOLOGY:
    spatial_index_related_geometry_topology_fields                                                         Spatial_Index_Related_Geometry_Topology_Fields;
  SPATIAL_RESOLUTION_LEVEL_OF_DETAIL_DATA:
    spatial_resolution_level_of_detail_data_fields                                                                                  Spatial_Resolution_Level_Of_Detail_Data_Fields;
  SPHERICAL_VOLUME_EXTENT:
    spherical_volume_extent_fields        Spherical_Volume_Extent_Fields;
  SPOT_LIGHT:
    spot_light_fields                     Spot_Light_Fields;
  SRF_SUMMARY:
    srf_summary_fields                    SRF_Summary_Fields;
  STAMP_BEHAVIOUR:
    stamp_behaviour_fields                Stamp_Behaviour_Fields;
  STATE_CONTROL_LINK:
    state_control_link_fields             State_Control_Link_Fields;
  STATE_DATA:
    state_data_fields                     State_Data_Fields;
  STATE_RELATED_FEATURES:
    state_related_features_fields         State_Related_Features_Fields;
  STATE_RELATED_GEOMETRY:
    state_related_geometry_fields         State_Related_Geometry_Fields;
  STROBING_LIGHT_BEHAVIOUR:
    strobing_light_behaviour_fields       Strobing_Light_Behaviour_Fields;
  SYMBOL:
    symbol_fields                         Symbol_Fields;
  TABLE_PROPERTY_DESCRIPTION:
    table_property_description_fields     Table_Property_Description_Fields;
  TEXT:
    text_fields                           Text_Fields;
  TEXTURE_COORDINATE:
    texture_coordinate_fields             Texture_Coordinate_Fields;
  TEXTURE_COORDINATE_CONTROL_LINK:
    texture_coordinate_control_link_fields                                                                                          Texture_Coordinate_Control_Link_Fields;
  TEXTURE_COORDINATE_TABLE:
    texture_coordinate_table_fields       Hierarchical_Table_Fields;
  TIME_INTERVAL:
    time_interval_fields                  Time_Interval_Fields;
  TIME_OF_DAY:
    time_of_day_fields                    Time_Of_Day_Fields;
  TIME_POINT:
    time_point_fields                     Time_Point_Fields;
  TIME_RELATED_FEATURES:
    time_related_features_fields          Time_Related_Features_Fields;
  TIME_RELATED_GEOMETRY:
    time_related_geometry_fields          Time_Related_Geometry_Fields;
  TM_LOCATION_2D:
    tm_location_2D_fields                 TM_Location_2D_Fields;
  TRANSLATION:
    translation_fields                    Translation_Fields;
  TRANSLATION_CONTROL_LINK:
    translation_control_link_fields       Translation_Control_Link_Fields;
  TRANSLUCENCY:
    translucency_fields                   Translucency_Fields;
  TRANSLUCENCY_CONTROL_LINK:
    translucency_control_link_fields      Translucency_Control_Link_Fields;
  TRANSMITTAL_ROOT:
    transmittal_root_fields               Transmittal_Root_Fields;
  TRANSMITTAL_SUMMARY:
    transmittal_summary_fields            Transmittal_Summary_Fields;
  UNION_OF_FEATURE_TOPOLOGY:
    union_of_feature_topology_fields      Union_Of_Feature_Topology_Fields;
  UNION_OF_FEATURES:
    union_of_features_fields              Union_Of_Features_Fields;
  UNION_OF_GEOMETRY:
    union_of_geometry_fields              Union_Of_Geometry_Fields;
  UNION_OF_GEOMETRY_HIERARCHY:
    union_of_geometry_hierarchy_fields    Union_Of_Geometry_Hierarchy_Fields;
  UNION_OF_PRIMITIVE_GEOMETRY:
    union_of_primitive_geometry_fields    Union_Of_Geometry_Fields;
  UPS_LOCATION_2D:
    ups_location_2D_fields                UPS_Location_2D_Fields;
  UTM_LOCATION_2D:
    utm_location_2D_fields                UTM_Location_2D_Fields;
  VARIABLE:
    variable_fields                       Variable_Fields;
  VERTEX_WITH_COMPONENT_INDICES:
    vertex_with_component_indices_fields  Vertex_With_Component_Indices_Fields;
  VOLUME_LEVEL_OF_DETAIL_DATA:
    volume_lod_data_fields                Volume_LOD_Data_Fields;
  VOLUME_LIGHT_BEHAVIOUR:
    volume_light_behaviour_fields         Volume_Light_Behaviour_Fields;
  WORLD_TRANSFORMATION:
    world_transformation_fields           World_Transformation_Fields;
}

5.3.3.77   DRM_Class_Summary_Item_Fields

This 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.78   EC_2D_Coordinate

This data type specifies the data needed to define a coordinate in the EC 2D spatial reference frame.  It is defined in [2.I18026].

5.3.3.79   EC_Location_2D_Fields

This data type encapsulates the field elements of the <DRM EC Location 2D> class.

EC_Location_2D_Fields ::= {
   coordinate                     EC_Coordinate_2D;
}

5.3.3.80   EDCS_Use_Summary_Item_Fields

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

EDCS_Use_Summary_Item_Fields ::= {
   description                    String;
}

5.3.3.81   Edge_Direction_Fields

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

Edge_Direction_Fields ::= {
   forwards                       Boolean;
}

5.3.3.82   Element_Type

This data type specifies the type of data for which a DRM class instance applies.

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

5.3.3.83   Ellipse_Fields

This 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.84   Elliptic_Cylinder_Fields

This data type encapsulates the field elements of the <DRM Elliptic Cylinder> class. The axis lengths are measured from circumference intercept to opposite circumference intercept.

Elliptic_Cylinder_Fields ::= {
   major_axis_length              Long_Float;
   minor_axis_length              Long_Float;
   height                         Long_Float;
}

5.3.3.85   Enumeration_Axis_Fields

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

Enumeration_Axis_Fields ::= {
   axis_type          Element_Type;
   value_unit         EDCS_Unit_Code;
   value_scale        EDCS_Scale_Code;
   axis_value_count   Short_Integer_Positive;
   axis_value_array   EDCS_Enumerant_Code[axis_value_count];
}

5.3.3.86   Environment_Root_Fields

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

Environment_Root_Fields ::= {
   srf_parameters                                   SRF_Parameters;
}

5.3.3.87   Environmental_Domain_Summary_Fields

This 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.88   Face_Direction_Fields

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

Face_Direction_Fields ::= {
   front         Boolean;
}

5.3.3.89   Fade_Range_Fields

This 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.90   Feature_Hierarchy_Fields

This data type encapsulates the field elements of the <DRM Feature Hierarchy> class.

Feature_Hierarchy_Fields ::= {
   feature_topology_level                   Feature_Topology_Level;
}

5.3.3.91   Feature_ID_Fields

This data type encapsulates the field elements of the <DRM Feature ID> class.

Feature_ID_Fields ::= {
   feature_id    Integer_Unsigned;
}

5.3.3.92   Feature_ID_Control_Link_Fields

This data type encapsulates the field elements of the <DRM Feature ID Control Link> class.

Feature_ID_Control_Link_Fields ::= {
   description        String;
   expression_index   Integer_Unsigned
}

5.3.3.93   Feature_Hierarchy_Fields

This data type encapsulates the field elements of the <DRM Feature Hierarchy> class.

Feature_Topology_Hierarchy_Fields ::= {
   feature_topology_level                   Feature_Topology_Level;
}

5.3.3.94   Flashing_Light_Behaviour_Fields

This 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.95   Float_Interval

This data type specifies float interval data and the type of interval.

Integer_Interval ::= {
   type                           Interval_Type;
   upper_bound                    EDCS_Float;
   lower_bound                    EDCS_Float;
}

5.3.3.96   Function_Fields

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

Function_Fields ::= {
   value_type                     Property_Data_Value_Type;
}

5.3.3.97   GC_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GC spatial reference frame.  See defintion in [2.I18026].

5.3.3.98   GC_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GC Location 3D> class.

GC_Location_3D_Fields ::= {
   coordinate                     GC_Coordinate_3D;
}

5.3.3.99   GCS_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GCS spatial reference frame.  See defintion in [2.I18026].

5.3.3.100                  GCS_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GCS Location 3D> class.

GCS_Location_3D_Fields ::= {
   coordinate                     GCS_Coordinate_3D;
}

5.3.3.101                  GD_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the GD spatial reference frame.  It is defined in [2.I18026].

5.3.3.102                  GD_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GD spatial reference frame.  It is defined in [2.I18026].

5.3.3.103                  GD_Location_2D_Fields

This data type encapsulates the field elements of the <DRM GD Location 2D> class.

GD_Location_2D_Fields ::= {
   coordinate                     GD_Coordinate_2D;
}

5.3.3.104                  GD_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GD Location 3D> class.

GD_Location_3D_Fields ::= {
   coordinate                     GD_Coordinate_3D;
}

5.3.3.105                  GEI_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GEI spatial reference frame.  It is defined in [2.I18026].

5.3.3.106                  GEI_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GEI Location 3D> class.

GEI_Location_3D_Fields ::= {
   coordinate                     GEI_Coordinate_3D;
}

5.3.3.107                  General_Hierarchy_Select

This 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> (referred to as "hierarchies" in these comments) for which inclusion rules can be specified:

If an instance of hierarchy object has a Hierarchy_Inclusion value of EXCLUDE_ALL, the rules within the Hierarchy_Select_Parameters for that type of hierarchy object are not evaluated.  Objects of that hierarchy type and the components of those hierarchy objects are always excluded from the search space of the iterator.

If an instance of hierarchy object has a Hierarchy_Inclusion value of  INCLUDE_ALL, the rules within the Hierarchy_Select_Parameters for that type of hierarchy object are not evaluated. Objects of that hierarchy type and the components of those hierarchy objects are always included in the search space of the iterator.

If an instance of hierarchy object has a Hierarchy_Inclusion value of EVALUATE_RULES, the rules within the Hierarchy_Select_Parameters for that type of hierarchy object are evaluated for each hierarchy component attached to the hierarchy object.  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:

If an instance of hierarchy object has a value of FALSE, all objects of that hierarchy class and the components of those hierarchy objects are always excluded from the search space of the iterator.

If an instance of hierarchy object has a value of TRUE, all objects of that hierarchy type and the components of those hierarchy objects 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;
   oct_tree_related                Hierarchy_Inclusion;
   quad_tree_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.108                  Geometry_ID_Fields

This data type encapsulates the field elements of the <DRM Geometry ID> class.

Geometry_ID_Fields ::= {
   geometry_id     Integer_Unsigned;
}

5.3.3.109                  Geometry_ID_Control_Link_Fields

This data type encapsulates the field elements of the <DRM Geometry ID Control Link> class.

Geometry_ID_Control_Link_Fields ::= {
   description                String;
   expression_index           Integer_Unsigned
}

5.3.3.110                  Geometry_Topology_Hierarchy_Fields

This 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.111                  GM_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GM spatial reference frame.  It is defined in [2.I18026].

5.3.3.112                  GM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GM Location 3D> class.

GM_Location_3D_Fields ::= {
   coordinate                     GM_Coordinate_3D;
}

5.3.3.113                  Grid_Overlap_Fields

This 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.114                  GSE_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GSE spatial reference frame.  It is defined in [2.I18026].

5.3.3.115                  GSE_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GSE Location 3D> class.

GSE_Location_3D_Fields ::= {
   coordinate                     GSE_Coordinate_3D;
}

5.3.3.116                  GSM_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the GSM spatial reference frame.  It is defined in [2.I18026].

5.3.3.117                  GSM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM GSM Location 3D> class.

GSM_Location_3D_Fields ::= {
   coordinate                     GSM_Coordinate_3D;
}

5.3.3.118                  Hierarchy_Data_Fields

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

Hierarchy_Data_Fields ::= {
   alternate_representation_reason   String;
}

5.3.3.119                  Hierarchy_Order_Parameters

This data type determines the traversal order of the branches a <DRM Aggregate Feature> object or <DRM Aggregate Geometry> object 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 a random order, unless the aggregate object itself is defined with an ordering of branches in the data model.

GENERAL HIERARCHY MASK:

A set of Boolean, one for each “type” of aggregate hierarchy instance, to indicate 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. General_Hierarchy_Select provides more details.

ANIMATION RELATED GEOMETRY:

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

LEVEL OF DETAIL RELATED GEOMETRY & FEATURES:

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.

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.

Volume:                         Volumes that occupy more volume shall be first.

Order does not matter:    A arbitrary traversal order shall be used.

OCT TREE AND QUAD TREE RELATED GEOMETRY & FEATURES:

Ascending Order:            Traversal from SOUTHWEST to SOUTHEAST for Quad Tree and UPPER_SOUTHWEST to LOWER_NORTHEAST for Oct Tree shall be used.

Descending Order:          Traversal from SOUTHEAST  to SOUTHWEST for Quad Tree and LOWER_NORTHEAST to UPPER_SOUTHWEST for Oct Tree shall be used.

Order does not matter:    An arbitrary traversal order shall be used

SEPARATING PLANE RELATED GEOMETRY:

Ascending Order:            False branches shall be traversed first.

Descending Order:          True branches shall be traversed first.

Order does not matter:    An arbitrary traversal order shall be used.

TIME RELATED GEOMETRY & FEATURES:

Ascending Order:

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

<DRM Time Point>:       Branches with earlier times shall be first. By definition, all Exercise relative times will be considered 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.

Order does not matter:

An arbitrary traversal order shall be taken.

PERIMETER RELATED GEOMETRY:

No parameters are specified for dealing with a <DRM Perimeter Related Geometry> object.  If the order of traversal is important, the use of multiple iterators, each with a different Spatial Search Boundary, should be specified.

CONTINUOUS LEVEL OF DETAIL GEOMETRY:

No ordering is allowable.

UNION:

All of the components of a union object are already ordered by the data model, so no ordering parameters are required.

OTHER AGGREGATIONS:

For all other types of <Feature> and <Geometry> Aggregations, see the definitions for the appropriate types used in the following record data type.

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;
   oct_tree_traversal_order              Sibling_Traversal_Order;
   quad_tree_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.120                  Hierarchy_Select_Parameters

This data type determines which “branches” or “switches” to traverse from an <DRM Aggregate Feature> object or <DRM Aggregate Feature> object 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.

GENERAL HIERARCHY MASK:

A set of Boolean, one for each “type” of aggregate hierarchy instance, to indicate 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. General_Hierarchy_Select provides more details.

PERIMETER RELATED GEOMETRY:

No parameters are specified for dealing with a <DRM Perimeter Related Geometry> object.  By default, all components of a <DRM Perimeter Related Geometry> object will be traversed (unless Perimeter Related is “masked out” by an FALSE value in the general_hierarchy_mask, in which case, none of the components of a <DRM Perimeter Related Geometry> will be searched).  In order to selectively limit the components traversed from a <DRM Perimeter Related Geometry> object, a Spatial_Search_Boundary may be specified when initializing the Component Iterator.

UNION:

All components of a Union object are always traversed (unless that type of union is masked out by a FALSE value in the general_hierarchy_mask parameter, in which case none of the components for that type of union are traversed).

OTHER AGGREGATIONS:

For all other types of <DRM Feature> and <DRM Geometry> Aggregations, see the definitions for the appropriate _PARAMETERS data types used in the following data type.

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;
   oct_tree_branches;             Oct_Tree_Select_Parameters;
   quad_tree_branches             Quad_Tree_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.121                  Hierarchy_Summary_Item_Fields

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

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

5.3.3.122                  HSV_Colour_Control_Link_Fields

This 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.123                  HSV_Colour_Fields

This data type encapsulates the field elements of an <DRM HSV Colour> class.

HSV_Colour_Fields ::= {
   hsv_data                       HSV_Data;
}

5.3.3.124                  HSV_Data

This data type is used to specify the data for the Hue Saturation Value 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.

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

5.3.3.125                  Image_Anchor_Fields

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

Image_Anchor_Fields ::= {
   srf_parameters                 SRF_Parameters;
}

5.3.3.126                  Image_Fields

This 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_Fields[level_count];
   image_signature                       Image_Signature;
   scan_direction                        Image_Scan_Direction;
   scan_direction_z                      Image_Scan_Direction_Z
   component_data_type                   Image_Component;
   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.127                  Image_Lookup_Fields

This data type encapsulates the field elements of an DRM Image Lookup> class.

Image_Lookup_Fields ::= {
   lookup_signature                      Lookup_Signature;
   lookup_type                           Lookup_Type;
   colour_model                          Colour_Model;
   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;
   axis_size                             Short_Integer_Unsigned;
   axis_count                            Short_Integer_Unsigned;
}

5.3.3.128                  Image_Mapping_Function_Fields

This data type encapsulates the field elements of a <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.129                  Image_MIP_Extents

This data type specifies the number of, and information about, texels in a single MIP level of an <DRM Image>. An array of these (an array of Image_MIP_Fields) is used to define the number of texels at each MIP level of an <DRM Image>. The information provided in records of this type include the number of horizontal texels (i.e., a row) in the <DRM Image> for a particular level, the number of vertical texels (i.e., a column) in the <DRM Image> for a particular level, and the number of texels in the third dimension in the <DRM Image> for a particular level. This “z” value shall be at least one. By definition, a two-dimensional <DRM Image> 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.130                  Image_Texel_Location_3D

This 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.131                  Index_LOD_Data_Fields

This data type encapsulates the field elements of a <DRM Index Level Of Detail Data> class.

Index_LOD_Data_Fields ::= {
   index                          Integer_Positive;
}

5.3.3.132                  Index_Range

This 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.133                  Infinite_Light_Fields

This data type encapsulates the field elements of a <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.134                  Inline_Colour_Fields

This data type encapsulates the field elements of an <DRM Inline_Colour> class.

Inline_Colour_Fields ::= {
   colour_mapping                 Colour_Mapping;
}

5.3.3.135                  In_Out_Fields

This data type encapsulates the field elements of an <DRM In Out> class.

In_Out_Fields ::= {
   input                          Boolean;
}

5.3.3.136                  Integer_Interval

This data type specifies integer interval data and the type of interval.

Integer_Interval ::= {
   type                           Interval_Type;
   lower_bound                    EDCS_Integer;
   upper_bound                    EDCS_Integer;
}

5.3.3.137                  Integer_Unsigned_Interval

This data type specifies unsigned integer interval data and the type of interval.

Integer_Interval ::= {
   type                           Interval_Type;
   lower_bound                    EDCS_Integer_Unsigned;
   upper_bound                    EDCS_Integer_Unsigned;
}

5.3.3.138                  Interface_Template_Fields

This data type encapsulates the field elements of an <DRM Interface Template> class.

Interface_Template_Fields ::= {
   description                    String;
}

5.3.3.139                  Interval_Axis_Fields

This data type encapsulates the field elements of an <DRM Interval Axis> class.

Interval_Axis_Fields ::= {
   axis_type                      Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   axis_value_count               Short_Integer_Positive;
   axis_interval_value_array      Property_Data_Value[axis_value_count];
}

5.3.3.140                  Interval_Axis_Value

This data type specifies the range of one axis interval (one “tick” mark on an interval axis).

Interval_Axis_Value ::= {
   value_minimum                  Long_Float;                             
   value_maximum                  Long_Float;
}

5.3.3.141                  Irregular_Axis_Fields

This data type encapsulates the field elements of an <DRM Irregular Axis> instance.

Irregular_Axis_Fields ::= {
   axis_type                      Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   axis_value_count               Short_Integer_Unsigned;
   axis_value_array               Property_Data_Value[axis_value_count];
   interpolation_type             Interpolation_Type;
}

5.3.3.142                  Keywords_Fields

This data type encapsulates the field elements of a <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_Unsigned;
   keyword_array                  Keyword_Structure[keyword_count];
}

5.3.3.143                  Keyword_Structure

This data type specifies a list of keywords with accompanying thesaurus.

The code field categorizes the keyword based on the information it is to convey.

The thesaurus field contains a reference to a formally registered thesaurus or a similar authoritative source of keywords. This field shall be a non-empty string; if there is no thesaurus, the field shall contain the string "NONE".

The keyword_list field contains a list of synonymous keywords being provided, in the form of a semicolon-separated list; at least one keyword shall be present in this field. Each keyword is a word or phrase summarizing an aspect of the data set being described by the <DRM Keywords> object.

Keyword_Structure ::= {
   code                           Keyword_Type_Code;
   thesaurus                      String;
   keyword_list                   String;
}

5.3.3.144                  LCC_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the LCC spatial reference frame.  It is defined in [2.I18026].

5.3.3.145                  LCC_Location_2D_Fields

This data type encapsulates the field elements of the <DRM LCC Location 2D> class.

LCC_Location_2D_Fields ::= {
   coordinate                     LCC_Coordinate_2D;
}

5.3.3.146                  Light_Rendering_Properties_Control_Link_Fields

This data type encapsulates the field elements of a <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.147                  Light_Rendering_Properties_Fields

This data type encapsulates the field elements of a <DRM Light Rendering Properties> class.

Light_Rendering_Properties_Fields ::= {
   display_type                   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.148                  Light_Source_Control_Link_Fields

This data type encapsulates the field elements of a <DRM Light Source Control Link> class.

Light_Source_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
}

5.3.3.149                  Light_Source_Fields

This data type encapsulates the field elements of a <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.150                  Linear_Geometry_Fields

This data type encapsulates the field elements of a <DRM Linear Geometry> class.

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

5.3.3.151                  Line_Fields

This data type encapsulates the field elements of a <DRM Line> class.

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

5.3.3.152                  Lineage_Fields

This data type encapsulates the field elements of a <DRM Lineage> class.

Lineage_Fields ::= {
   statement                      String;
}

5.3.3.153                  Literal_Fields

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

Literal_Fields ::= {
   value                          Property_Data_Value;
}

5.3.3.154                  Lobe_Data_Fields

This data type specifies a set of information contained in the fields of a <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 0 - 2π).  The vertical_width parameter defines the vertical lobe width (in radians 0 - 2π).

Lobe_Data_Fields ::= {
   horizontal_width               Long_Float;
   vertical_width                 Long_Float;
}

5.3.3.155                  Local_4x4_Fields

This data type encapsulates the field elements of a <DRM Local 4x4> class.

Local_4x4_Fields ::= {
   matrix                         Matrix_4x4;
}

5.3.3.156                  Locale

This data type specifies the language in which a string is written along with the country for that language. Both the language and the country are specified using the language tags defined in 2.[RFC3066] which may specify only a country (using the three-character codes defined in 2.[I3166]) or both a language (using the two-character codes specified in 2.[I639]) and a country (using the three-character codes specified in 2.[I3166]) using a sub-tag structure as specified in 2.[RFC3066]. The language tags contain between one and eight characters.  Note that the characters used in the language tag are in the Basic Latin alphabet, so they are single-byte characters in the UTF-8 encoding.

Locale ::= {
   language_length                Short_Integer_Unsigned;
   language                       Character[language_length];
}

5.3.3.157                  Location_Table_Fields

This data type encapsulates the field elements of a <DRM Location Table> class.

Location_Table_Fields ::= {
   start_index                    Integer_Positive;
}

5.3.3.158                  LOD_Entry

This variant 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               Index_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.159                  LOD_Related_Features_Fields

This data type encapsulates the field elements of a <DRM Level Of Detail Related Features> class.

LOD_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   lod_data_type                  LOD_Data_Type;
}

5.3.3.160                  LOD_Related_Geometry_Fields

This data type encapsulates the field elements of a <DRM Level Of Detail Related Geometry> class.

LOD_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   lod_data_type                  LOD_Data_Type;
}

5.3.3.161                  LOD_Select_Parameters

This data type selects which branches to traverse from a <DRM Level of Detail Related Features> or <DRM Level of Detail Related Geometry> object when encountered by a component iterator. All branches with a <DRM Base Level of Detail Data> link object with values matching the ranges specified in the   lod_entry_array will be traversed.

If no rules are provided for the type of <DRM Base Level of Detail Data> of the branch in question, the branch will be traversed.  For example, if a branch is marked with distance data, but only index search values are provided, the distance branch will be taken.  When no search rules for a certain type of <DRM Base Level of Detail Data> are defined, 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.162                  LSR_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the LSR spatial reference frame.  It is defined in [2.I18026].

5.3.3.163                  LSR_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the LSR spatial reference frame.  It is defined in [2.I18026].

5.3.3.164                  LSR_Location_2D_Fields

This data type encapsulates the field elements of the <DRM LSR Location 2D> class.

LSR_Location_2D_Fields ::= {
   coordinate                     LSR_Coordinate_2D;
}

5.3.3.165                  LSR_Location_3D_Control_Link_Fields

This data type encapsulates the field elements of an <DRM LSR Location 3D Control Link> class.

LSR_Location_3D_Control_Link_Fields ::= {
   description                    String;
   x_expression_index             Integer_Unsigned;
   y_expression_index             Integer_Unsigned;
   z_expression_index             Integer_Unsigned;
}

5.3.3.166                  LSR_Location_3D_Fields

This data type encapsulates the field elements of the <DRM LSR Location 3D> class.

LSR_Location_3D_Fields ::= {
   coordinate                     LSR_Coordinate_3D;
}

5.3.3.167                  LTP_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the LTP spatial reference frame.  It is defined in [2.I18026].

5.3.3.168                  LTP_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the LTP spatial reference frame.  It is defined in [2.I18026].

5.3.3.169                  LTP_Location_2D_Fields

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

LTP_Location_2D_Fields ::= {
   coordinate                     LTP_Coordinate_2D;
}

5.3.3.170                  LTP_Location_3D_Fields

This data type encapsulates the field elements of the <DRM LTP Location 3D> class.

LTP_Location_3D_Fields ::= {
   coordinate                     LTP_Coordinate_3D;
}

5.3.3.171                  M_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the M spatial reference frame.  It is defined in [2.I18026].

5.3.3.172                  M_Location_2D_Fields

This data type encapsulates the field elements of the <DRM M Location 2D> class.

M_Location_2D_Fields ::= {
   coordinate                     M_Coordinate_2D;
}

5.3.3.173                  Map_Scale_LOD_Data_Fields

This data type encapsulates the field elements of the <DRM Map Scale Level Of Detail Data> class.

Map_Scale_LOD_Data_Fields ::= {
   map_scale                      Long_Float;
}

5.3.3.174                  Mesh_Face_Table_Fields

This data type encapsulates the field elements of the <DRM Mesh Face Table> class.

Model_Fields ::= {
   total_mesh_faces               Integer_Positive;
   max_nodes_and_rings            Integer_Positive;
   topology_present               Boolean;
}

5.3.3.175                  Model_Fields

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

Model_Fields ::= {
   name                           String;
   srf_parameters                 SRF_Parameters;
   model_reference_type           Model_Reference_Type;
   dynamic_model_processing       Boolean;
   has_units                      Boolean;
   has_moving_parts               Boolean;
}

5.3.3.176                  Model_Instance_Template_Index_Fields

This 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.177                  Moving_Light_Behaviour_Fields

This data type encapsulates the field elements of a <DRM Moving Light Behaviour> class.

Moving_Light_Behaviour_Fields ::= {
   speed                          Long_Float;
   delay                          Long_Float;
}

5.3.3.178                  Oct_Tree_Data_Fields

This data type encapsulates the field elements of a <DRM Oct Tree Data> class.

Oct_Tree_Data_Fields ::= {
   octant                         Octant;
}

5.3.3.179                  Oct_Tree_Related_Features_Fields

This data type encapsulates the field elements of the <DRM Oct Tree Related Features> class.

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

5.3.3.180                  Oct Tree_Related_Geometry_Fields

This data type encapsulates the field elements of the <DRM Oct Tree Related Geometry> class.

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

5.3.3.181                  Oct_Tree_Select_Parameters

This data type selects which branches to traverse from an <DRM Oct Tree Related Features> or <DRM Oct Tree Related Geometry> object when encountered by a component iterator. Each branch with a link object whose field values match one of the entries contained in this struct will be traversed.

Oct_Tree_Select_Parameters ::= {
   oct_tree_data_count            Integer_Unsigned;
   oct_tree_data_array            Oct_Tree_Data_Fields[oct_tree_data_count];
}

5.3.3.182                  OM_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the OM spatial reference frame.  It is defined in [2.I18026].

5.3.3.183                  OM_Location_2D_Fields

This data type encapsulates the field elements of the <DRM OM Location 2D> class.

OM_Location_2D_Fields ::= {
   coordinate                     OM_Coordinate_2D;
}

5.3.3.184                  Overload_Priority_Index_Fields

This data type encapsulates the field elements of a <DRM Overload Priority Index> class.

Overload_Priority_Index_Fields ::= {
   overload_priority              Short_Integer;
}

5.3.3.185                  Packed_Hierarchy

This data type specifies primary data structure returned from 7.3.42 GetPackedHierarchy or 7.3.48 GetRemainingPackedHierarchies. This structure represents the entry point in the 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.186                  Packed_Hierarchy_Object

This data type specifies an object in a packed hierarchy.

Packed_Hierarchy_Object ::= {
   this_object                    Object;
   components_included            Boolean;
   number_of_components           Integer_Unsigned;
   components                     Packed_Hierarchy_Reference[number_of_components];
   aggregates_included            Boolean;
   number_of_aggregates           Integer_Unsigned;
   aggregates                     Packed_Hierarchy_Reference[number_of_aggregates];
   fields                         DRM_Class_Fields;
   status                         Status_Code;}

5.3.3.187                  Packed_Hierarchy_Reference

This data type specifies a reference to an object in a packed hierarchy.

Packed_Hierarchy_Reference ::= {
   object                         Packed_Hierarchy_Object_Access;
   link_object                    Packed_Hierarchy_Object_Access;}

5.3.3.188                  Parallelepiped_Volume_Extent_Entry

This data type specifies parallelepiped <DRM Volume Level Of Detail Data>.

Parallelepiped_Volume_Extent_Entry ::= {
   parallelepiped                 Parallelepiped_Volume_Extent_Fields;
   reference_vectors              Reference_Vector_Fields[3];
}

5.3.3.189                  Parallelepiped_Volume_Extent_Fields

This data type encapsulates the field elements of a <DRM Parallelepiped Volume Extent> class.

Parallelepiped_Volume_Extent_Fields ::= {
   edge_length                    Long_Float[3];
}

5.3.3.190                  Patch_Fields

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

Patch_Fields ::= {
   patch_resource                 URN;
}

5.3.3.191                  Perimeter_Related_Feature_Topology_Fields

This 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.192                  Perimeter_Related_Features_Fields

This 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.193                  Perimeter_Related_Geometry_Fields

This 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.194                  Perimeter_Related_Geometry_Topology_Fields

This data type encapsulates the field elements of the <DRM Perimeter Related Geometry Topology> class.

Perimeter_Related_Geometry_Topology_Fields ::= {
   geometry_topology_level        Geometry_Toplogy_Level;
}

5.3.3.195                  Point_Of_Contact_Fields

This data type encapsulates the field elements of the <DRM Point Of Contact> class.

Point_Of_Contact_Fields ::= {
   point_of_contact               Contact_Information;
   responsible_party_role         CI_RoleCode;
}

5.3.3.196                  Polygon_Control_Link_Fields

This 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.197                  Polygon_Fields

This data type encapsulates the field elements of a <DRM Polygon> class.

Polygon_Fields ::= {
   polygon_flags                  Polygon_Flags;
}

5.3.3.198                  Positional_Light_Fields

This data type encapsulates the field elements of a <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.199                  Predefined_Function_Fields

This data type encapsulates the field elements of a <DRM Predefined Function> class.

Predefined_Function_Fields ::= {
   value_type                     Property_Data_Value_Type;
   function                       Predefined_Function;
}

5.3.3.200                  Presentation_Domain_Fields

This data type encapsulates the field elements of a <DRM Presentation Domain> class.

Presentation_Domain_Fields ::= {
   presentation_domain            Presentation_Domain;
}

5.3.3.201                  Primitive_Summary_Item_Fields

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

Primitive_Summary_Item_Fields ::= {
   drm_class                      DRM_Class;
   multiplicity                   Integer_Unsigned;
}

5.3.3.202                  Process_Step_Fields

This data type encapsulates the field elements of a <DRM Process> class.

Process_Step_Fields ::= {
   description                    String;
   rationale                      String;
}

5.3.3.203                  Property_Characteristic_Fields

This data type encapsulates the field elements of a <DRM Property Characteristic> class.

Property_Characteristic_Fields ::= {
   meaning                        EDCS_Metadata_Code;
   characteristic_value           Property_Data_Value;
}

5.3.3.204                  Property_Fields

This data type encapsulates the field elements of a <DRM Property> class.

Property_Fields ::= {
   meaning                        Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
}

5.3.3.205                  Property_Data_Value

This data type is a wrapper to hold a single value. This variant record type is used to represent cells in <Data Tables>, values in <Property Values>, axis values in <Enumeration Axis Entries>, and the values of <Literals>. The value type variant indicates the currently valid field of all of the legal types of values for a Property Value or Data Table.

Property_Data_Value ::= (value_type  Property_Data_Value_Type) {
  BOOLEAN :                    boolean_value                   Boolean;
  BYTE :                       byte_value                      Byte;
  BYTE_POSITIVE:               byte_positive_value             Byte_Positive;
  BYTE_UNSIGNED:               byte_unsigned_value             Byte_Unsigned;
  SHORT_INTEGER:               short_integer_value             Short_Integer;
  SHORT_INTEGER_POSITIVE:      short_integer_positive_value    Short_Integer_Positive;
  SHORT_INTEGER_UNSIGNED:      short_integer_unsigned_value    Short_Integer_Unsigned;
  INTEGER:                     integer_value                   Integer;
  INTEGER_INTERVAL:            integer_interval_value          Integer_Interval;
  INTEGER_POSITIVE:            integer_positive_value          Integer_Positive;
  INTEGER_UNSIGNED:            integer_unsigned_value          Integer_Unsigned;
  INTEGER_UNSIGNED_INTERVAL:   integer_unsigned_interval_value Integer_Unsigned_Interval;
  FLOAT:                       float_value                     Float;
  FLOAT_INTERVAL:              float_interval_value            Float_Interval;
  LONG_FLOAT:                  long_float_value                Long_Float;
  STRING:                      string_value                    String;
  DATA_TABLE_COMPONENT_INDEX:  dt_component_index_value        Integer_Unsigned;
  DATA_TABLE_LIBRARY_INDEX:    dt_library_index_value          Integer_Unsigned;
  ENUMERANT_CODE:              edcs_enumerant_code_value       EDCS_Integer;
  METADATA_CODE:               edcs_metadata_code_value        EDCS_Metadata_Code;
}

5.3.3.206                  Property_Description_Fields

This data type encapsulates the field elements of a <DRM Property Description> class.

Property_Description_Fields ::= {
   meaning                        Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
}

5.3.3.207                  Property_Grid_Fields

This data type encapsulates the field elements of a <DRM Property Grid> class.

Property_Grid_Fields ::= {
   spatial_axes_count             Short_Integer_Positive;
   location_index                 Short_Integer[spatial_axes_count];
   srf_parameters                 SRF_Parameters;
   data_present                   Boolean;
}

5.3.3.208                  Property_Table_Reference_Control_Link_Fields

This data type encapsulates the field elements of a <DRM Property Table Reference Control Link> class.

Property_Table_Reference_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
}

5.3.3.209                  Property_Table_Reference_Fields

This data type encapsulates the field elements of a <DRM Property Table Reference> class.

Property_Table_Reference_Fields ::= {
   axis_type                      Element_Type;
   index_on_axis                  Integer_Unsigned;
}

5.3.3.210                  Property_Table_Reference_Table_Fields

This data type encapsulates the field elements of a <DRM Property Table Reference Table> class.

Property_Table_Reference_Table_Fields ::= {
   start_index                    Integer_Positive;
}

5.3.3.211                  Property_Value_Fields

This data type encapsulates the field elements of a <DRM Property Value> class.

Property_Value_Fields ::= {
   meaning                        Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_code;
   value                          Property_Data_Value;
}

5.3.3.212                  PS_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the PS spatial reference frame.  It is defined in [2.I18026].

5.3.3.213                  PS_Location_2D_Fields

This data type encapsulates the field elements of the <DRM PS Location 2D> class.

PS_Location_2D_Fields ::= {
   coordinate                     PS_Coordinate_2D;
}

5.3.3.214                  Pseudo_Code_Function_Fields

This data type encapsulates the field elements of a <DRM Pseudo Code Function> class.

Pseudo_Code_Function_Fields ::= {
   value_type                     Property_Data_Value_Type;
   name                           String;
   pseudo_code                    String;
}

5.3.3.215                  Pyramid_Directional_Light_Fields

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

Pyramid_Directional_Light_Fields ::= {
   use_full_intensity             Boolean;
   minimum_colour_intensity       Long_Float;
   invisible_behind               Boolean;
}

5.3.3.216                  Quad_Tree_Data_Fields

This data type encapsulates the field elements of a <DRM Quad Tree Data> class.

Quad_Tree_Data_Fields ::= {
   quadrant                       Quadrant;
}

5.3.3.217                  Quad_Tree_Related_Features_Fields

This data type encapsulates the field elements of the <DRM Quad Tree Related Features> class.

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

5.3.3.218                  Quad Tree_Related_Geometry_Fields

This data type encapsulates the field elements of the <DRM Quad Tree Related Geometry> class.

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

5.3.3.219                  Quad_Tree_Select_Parameters

This data type selects which branches to traverse from an <DRM Quad Tree Related Features> or <DRM Quad Tree Related Geometry> object when encountered by a component iterator. Each branch with a link object whose field values match one of the entries contained in this struct will be traversed.

Quad_Tree_Select_Parameters ::= {
   quad_tree_data_count           Integer_Unsigned
   quad_tree_data_array           Quad_Tree_Data_Fields[quad_tree_data_count];
}

5.3.3.220                  Reference_Origin_Fields

This data type encapsulates the field elements of a <DRM Reference Origin> class.

Reference_Origin_Fields ::= {
   srf_parameters                 SRF_Parameters;
}

5.3.3.221                  Reference_Surface_Fields

This data type encapsulates the field elements of a <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.222                  Reference_Vector_Control_Link_Fields

This data type encapsulates the field elements of a <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.223                  Reference_Vector_Fields

This data type encapsulates the field elements of a <DRM Reference Vector> class.

Reference_Vector_Fields ::= {
   unit_vector                    Vector_3;
   vector_type                    Reference_Vector_Type;
}

5.3.3.224                  Reference_Vector_With_Control_Index_Fields

This data type encapsulates the field elements of a <DRM Reference Vector With Control Index> class.

Reference_Vector_With_Control_Index_Fields ::= {
   unit_vector                    Vector_3;
   vector_type                    Reference_Vector_Type;
   location_index                 Integer_Unsigned;
}

5.3.3.225                  Reference_Vector_Table_Fields

This data type encapsulates the field elements of a <DRM Reference Vector Table> class.

Reference_Vector_Table_Fields ::= {
   start_index                    Integer_Positive;
}

5.3.3.226                  Regular_Axis_Fields

This data type encapsulates the field elements of a <DRM Regular Axis> class.

Regular_Axis_Fields ::= {
   axis_type                      Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   axis_value_count               Short_Integer_Positive;
   interpolation_type             Interpolation_Type;
   first_value                    Property_Data_Value;
   spacing                        Property_Data_Value;
   spacing_type                   Spacing_Type;
   axis_alignment                 Axis_Alignment;
}

5.3.3.227                  Relative_Time_Interval_Fields

This data type encapsulates the field elements of a <DRM Relative Time Interval> class.

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.228                  Relative_Time_Point_Fields

This data type encapsulates the field elements of a <DRM Relative Time Point> class.

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

5.3.3.229                  Relative_To_Absolute_Time_Interval_Entry

This data type specifies an interval relative to an absolute time reference point.

Relative_To_Absolute_Time_Interval_Entry ::= {
   reference_time_point           Absolute_Time_Point_Fields;
   relative_interval              Relative_Time_Interval_Fields;
}

5.3.3.230                  Relative_To_Absolute_Time_Point_Entry

This data type specifies a time point relative to a reference time.

Relative_To_Absolute_Time_Point_Entry ::= {
   reference_time_point           Absolute_Time_Point_Fields;
   relative_time                  Relative_Time_Point_Fields;
}

5.3.3.231                  Remaining_Objects_List

This data type specifies the data objects still to be processed by an iterator.

Remaining_Objects_List ::= {
   number_of_objects              Integer_Unsigned;
   remaining_objects_list         Object[number_of_objects];
   remaining_link_objects_list    Object[number_of_objects];
   object_status_list             Status_Code[number_of_objects];
   link_object_status_list        Status_Code[number_of_objects];
}

5.3.3.232                  Remaining_Packed_Hierarchies_List

This 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.233                  Rendering_Priority_Level_Fields

This data type encapsulates the field elements of a <DRM Rendering Priority Level> class.

Rendering_Priority_Level_Fields ::= {
   rendering_group                Short_Integer_Positive;
   rendering_priority             Short_Integer;
}

5.3.3.234                  Rendering_Properties_Fields

This data type encapsulates the field elements of a <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.235                  RGB_Colour_Control_Link_Fields

This data type encapsulates the field elements of an <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.236                  RGB_Colour_Fields

This data type encapsulates the field elements of a <DRM RGB Colour> class.

RGB_Colour_Fields ::= {
   rgb_data                       RGB_Data;
}

5.3.3.237                  RGB_Data

This data type is used to specify the data for the Red Green Blue colour model. Red is a number from 0.0 to 1.0 (0 percent to 100 percent) indicating the proportion of red light contributing to the colour. Green is a number from 0.0 to 1.0 (0 percent to 100 percent) indicating the proportion of green light contributing to the colour. Blue is a number from 0.0 to 1.0 (0 percent to 100 percent) indicating the proportion of blue light contributing to the colour.

RGB_Data ::= {
   red                            Long_Float;
   green                          Long_Float;
   blue                           Long_Float;
}

5.3.3.238                  Rotating_Light_Behaviour_Fields

This data type encapsulates the field elements of a <DRM Rotating Light Behaviour> class.

Rotation_Light_Behaviour_Fields ::= {
   period                         Long_Float;
}

5.3.3.239                  Rotation_Control_Link_Fields

This data type encapsulates the field elements of the <DRM Rotation Control Link> class.

Rotation_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.240                  Rotation_Data

This data type specifies angular limits, in radians, including POSITIVE_INFINITY and NEGATIVE_INFINITY as legal values.

Rotation_Data ::= {
   ccw_limit                      Long_Float;
   cw_limit                       Long_Float;
}

5.3.3.241                  Rotation_Fields

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

Rotation_Fields ::= {
   axis                           LSR_Transformation_Axis;
   angle                          Long_Float;
}

5.3.3.242                  Scale_Control_Link_Fields

This data type encapsulates the field elements of the <DRM Scale Control Link> class.

Scale_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.243                  Scale_Fields

This data type encapsulates the field elements of a <DRM Scale> class.

Scale_Fields ::= {
   axis                           LSR_Transformation_Axis;
   scale_amount                   Long_Float;
}

5.3.3.244                  Search_Bounds

This data type specifies the geometric limits of a spatial search in the form of boundary values that are passed to 7.3.11 CreateSpatialSearchBoundary. The minimum point and maximum point shall be in the same spatial reference frame (SRF); specifically, the current user-set SRF when the Search_Bounds is passed to 7.3.11 CreateSpatialSearchBoundary.

Search_Bounds ::= {
   minimum_point                  SRM_Coordinate;
   maximum_point                  SRM_Coordinate;
}

5.3.3.245                  Search_Rule

This data type specifies a single rule in a set of rules, which 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, 5.4.7 Search_Filter for more details.)

A single search rule by itself is useless. A set of search rules is specified using an array of type Search_Rule, filled inwith a well-formed postfix notation expression, ending with an Search_Rule entry with a rule_type value of END. The sequence of Search_Rule forms an RPN logic evaluation stack.

Macros are provided (which see) that allow a somewhat morereadable pre-fix notation to be used when initializing arrays of Search_Rule in variable declarations. A static search (a search whose conditions are known at compile time) can easily be specified by taking advantage of the search macros (see the examples, given in the comments preceding the search macros).

A dynamically created search, on the other hand, requires the user to create a rules array and fill in the array with a well-formed postfix notation expression, 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:
  ASSOCIATION:             unused                  Unused;
  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_DRM_CLASS:     component_drm_class     Search_Rule_DRM_Class;
  COMPONENT_FIELD:         component_field         Search_Rule_Field;
  COMPONENT_FIELD_RANGE:   component_field_range   Search_Rule_Field_Range;
  COMPONENT_FIELD_ARRAY:   component_field_array   Search_Rule_Field_Array;
  ASSOCIATION_DRM_CLASS:   association_drm_class   DRM_Class;
  MAX_SEARCH_DEPTH:        max_search_depth        Short_Integer_Unsigned;
}

5.3.3.246                  Search_Rule_Component_DRM_Class

This data type specifies the parameters that are to be specified for a Search_Rule of type COMPONENT_DRM_CLASS.

Search_Rule_Component_DRM_Class ::= {
   drm_class                      DRM_Class;
   component_object_drm_class     DRM_Class;
}

5.3.3.247                  Search_Rule_Component_Field

This data type specifies the parameters that are to be specified 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.248                  Search_Rule_Component_Field_Array

This data type specifies the parameters that are to be specified 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;
   value                          Any_Search_Value;
}

5.3.3.249                  Search_Rule_Component_Field_Range

This data type specifies the parameters that are to be specified 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.250                  Search_Rule_Field

This data type specifies the parameters that are to be specified 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.251                  Search_Rule_Field_Array

This data type specifies the parameters that are to be specified for a Search_Rule of type FIELD_ARRAY.

Search_Rule_Field_Array ::= {
   drm_class                      DRM_Class;
   value                          Any_Search_Value;
   field_ordinal                  Short_Integer_Unsigned;
}

5.3.3.252                  Search_Rule_Field_Range

This data type specifies the parameters that are to be specified 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.253                  Search_Rule_Predicate

This data type specifies the parameters that are to be specified for a Search_Rule of type PREDICATE.

Search_Rule_Predicate ::= {
   value                          Any_Search_Value;
   user_function                  Predicate;
}

5.3.3.254                  Season_Fields

This data type encapsulates the field elements of a <DRM Season> class.

Season_Fields ::= {
   time_significance              Time_Significance;
   season                         Season;
}

5.3.3.255                  Security_Information

This data type specifies security data.

Security_Information ::= {
   system                         String;
   classification                 String;
   handling                       String;
}

5.3.3.256                  Separating_Plane_Data_Fields

This data type encapsulates the field elements of a <DRM Separating Plane Data> class.

Separating_Plane_Data ::= {
   positive                       Boolean;
}

5.3.3.257                  Separating_Plane_Related_Geometry_Fields

This 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.258                  Separating_Plane_Select_Parameters

This data type specifies which branches to traverse from a <DRM Separating Plane Related Geometry> object when encountered by a component iterator.

Separating_Plane_Select_Parameters ::= {
   traverse_positive_branches     Boolean;
   traverse_negative_branches     Boolean;
}

5.3.3.259                  SM_Coordinate_3D

This data type specifies the data needed to define a 3D coordinate in the SM spatial reference frame.  It is defined in [2.I18026].

5.3.3.260                  SM_Location_3D_Fields

This data type encapsulates the field elements of the <DRM SM Location 3D> class.

SM_Location_3D_Fields ::= {
   coordinate                     SM_Coordinate_3D;
}

5.3.3.261                  Sound_Fields

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

Sound_Fields ::= {
   name                           String;
   sound_urn                      URN;
   duration                       Float;
   sampling_rate                  Float;
   bits_per_sample                Byte_Positive;
   channel_count                  Byte_Positive;
   method                         String;
}

5.3.3.262                  Sound_Instance_Control_Link_Fields

This data type encapsulates the field elements of a <DRM Sound Instance Control Link> class.

Sound_Instance_Control_Link_Fields ::= {
   description                           String;
   active_sound_value_expression_index   Integer_Unsigned;
}

5.3.3.263                  Sound_Instance_Fields

This data type encapsulates the field elements of a <DRM Sound Instance> class.

Sound_Instance_Fields ::= {
   active_sound_value             Boolean;
}

5.3.3.264                  Source_Fields

This data type encapsulates the field elements of a <DRM Source> class.

Source_Fields ::= {
   description                    String;
   scale                          Integer_Positive;
   contribution                   String;
}

5.3.3.265                  Spatial_Index_Data_Fields

This data type encapsulates the field elements of a <DRM Spatial Index Data> class.

Spatial_Index_Data_Fields ::= {
   row_index                      Integer_Positive;
   column_index                   Integer_Positive;
}

5.3.3.266                  Spatial_Index_Parameters

This data type is used to build hierarchical search criteria.

When used within a Hierarchy_Select_Parameters record, this data type selects which branches to traverse from an <DRM Spatial Index Related Features> or <DRM Spatial Index Related Geometry> object 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 record, this data type can be used to control what order to traverse the branches from a <DRM Spatial Index Related Features> or <DRM Spatial Index Related Geometry> object when encountered by a component iterator.  For the set of branches that will be traversed, the order of that traversal will be defined by the spatial_index_data_array in this structure.  Any branches that are traversed but are not mentioned in this ordering array will be traversed in a random 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.267                  Spatial_Index_Related_Feature_Topology_Fields

This data type encapsulates the field elements of a <DRM Spatial Index Related Feature Topology> class.

Spatial_Index_Related_Feature_Topology_Fields ::= {
   sparse                         Boolean;
   column_count                   Integer_Positive;
   row_count                      Integer_Positive;
   column_width                   Long_Float;
   row_width                      Long_Float;
   spacing_units                  Spatial_Index_Spacing_Unit;
}

5.3.3.268                  Spatial_Index_Related_Features_Fields

This data type encapsulates the field elements of a <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_units                  Spatial_Index_Spacing_Unit;
}

5.3.3.269                  Spatial_Index_Related_Geometry_Fields

This data type encapsulates the field elements of a <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.270                  Spatial_Index_Related_Geometry_Topology_Fields

This data type encapsulates the field elements of a <DRM Spatial Index Related Topology Geometry> 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.271                  Spatial_Resolution_Level_Of_Detail_Data_Fields

This data type encapsulates the field elements of a <DRM Spatial Resolution Level Of Detail Data> class.

Spatial_Resolution_Level_Of_Detail_Data_Fields ::= {
   spatial_resolution             Long_Float;
   unit                           Spatial_Index_Spacing_Unit;
}

5.3.3.272                  Spherical_Volume_Extent_Fields

This data type encapsulates the field elements of a <DRM Spherical Volume Extent> class.

Spherical_Volume_Extent_Fields ::= {
   radius                         Long_Float;
}

5.3.3.273                  Spot_Light_Fields

This data type encapsulates the field elements of a <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.274                  SRF_Parameters

This data type specifies the information need to fully define a spatial reference frame.

See definition in ISO/IEC 18026—Spatial Reference Model.

5.3.3.275                  SRF_Summary_Fields

This data type encapsulates the field elements of a <DRM SRF Summary> class.

SRF_Summary_Fields ::= {
   srf_parameters                 SRF_Parameters;
}

5.3.3.276                  Stamp_Behaviour_Fields

This data type encapsulates the field elements of a <DRM Stamp Behaviour> class.

Stamp_Behaviour_Fields ::= {
   x_axis_limit                   Rotation_Data;
   y_axis_limit                   Rotation_Data;
   z_axis_limit                   Rotation_Data;
}

5.3.3.277                  State_Control_Link_Fields

This data type encapsulates the field elements of a <DRM State Control Link> class.

State_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Positive;
   mismatch_behaviour             State_Mismatch_Behaviour;
}

5.3.3.278                  State_Data_Fields

This data type specifies data in the fields of a <DRM State Data> class.

State_Data_Fields ::= {
   state_value                    Property_Data_Value;
}

5.3.3.279                  State_Entry

This data type specifies detailed information about a particular state to match during a search.

State_Entry ::= {
   state_tag                      EDCS_Attribute_Code;
   state_data                     State_Data_Fields;
}

5.3.3.280                  State_Related_Features_Fields

This data type encapsulates the field elements of a <DRM State Related Features> class.

State_Related_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   state_tag                      EDCS_Attribute_Code;
   archive_state_value            Property_Data_Value;
}

5.3.3.281                  State_Related_Geometry_Fields

This data type encapsulates the field elements of a <DRM State Related Geometry> class.

State_Related_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   state_tag                      EDCS_Attribute_Code;
   archive_state_value            Property_Data_Value;
}

5.3.3.282                  State_Select_Parameters

This data type controls the traversal order of the branches from a <DRM State Related Features> or <DRM State Related Geometry> object when encountered by a component iterator.  For the set of branches to be traversed, the order of that traversal will be defined by the state_array in this structure.  All branches that have a link object whose fields do not disagree with the entries contained in this record will be traversed

State_Select_Parameters ::= {
   default_choice                 Unmatched_State_Behaviour;
   matching_rules                 Branch_Range_Matching;
   state_entry_count              Integer_Unsigned
   state_entry_array              State_Entry[state_entry_count];
}

5.3.3.283                  String

This data type is used to specify a character string along with information which defines 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.284                  Strobing_Light_Behaviour_Fields

This data type encapsulates the field elements of a <DRM Strobing Light Behaviour> class.

Strobing_Light_Behaviour_Fields ::= {
   period                         Long_Float;
   delay                          Long_Float;
}

5.3.3.285                  Symbol_Fields

This data type encapsulates the field elements of a <DRM Symbol> class.

Symbol_Fields ::= {
   name                           String;
   symbol_urn                     URN;
}

5.3.3.286                  Table_Property_Description_Fields

This data type encapsulates the field elements of a <DRM Table Property Description> class.

Table_Property_Description_Fields ::= {
   attribute_code                 Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   value_type                     Property_Data_Value;
   component_data_table_scc       EDCS_Classification_Code;
}

5.3.3.287                  Text_Fields

This data type encapsulates the field elements of a <DRM Text> class.

Text_Fields ::= {
   text_string                    String;
   font                           String;
}

5.3.3.288                  Text_Font

This data type encapsulates the information needed to determine the appearance of displayed textual information.

The font family is the name given to a set of fonts by a font designer. The font family can identify generic (e.g., SANSERIF 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 specifies the appearance variation allowed within the font family.

The font size specifies how big the text is to be presented. Size is specified in points. It is assumed that an implementation will 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 float, 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 specifies how text is underlined. The default style is NONE. If a 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[32];
   font_style                     Font_Style;
   font_size                      Float;
   underline_style                Underline_Style;
}

5.3.3.289                  Texture_Coordinate_Control_Link_Fields

This data type encapsulates the field elements of a <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.290                  Texture_Coordinate_Fields

This data type encapsulates the field elements of a <DRM Texture Coordinate> class.

Texture_Coordinate_Fields ::= {
   s   Long_Float;
   t   Long_Float;
}

5.3.3.291                  Texture_Coordinate_Table_Fields

This data type encapsulates the field elements of a <DRM Texture Coordinate Table> class.

Texture_Coordinate_Table_Fields ::= {
   start_index                    Integer_Positive;
}

5.3.3.292                  Time_Entry

This variant record data type specifies different information depending on the type of time data provided.

Time_Entry ::= (time_entry_type  Time_Data_Type ) {
  MONTH:              month               Month;
  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.293                  Time_Interval_Entry

This variant record data type specifies different time interval information depending on the 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.294                  Time_Interval_Fields

This data type encapsulates the field elements of a <DRM Time Interval> class.

Time_Interval_Fields ::= {
   time_significance              Time_Significance;
}

5.3.3.295                  Time_Of_Day_Fields

This data type encapsulates the field elements of a <DRM Time Of Day> class.

Time_Of_Day_Fields ::= {
   time_of_day                    Time_Of_Day;
}

5.3.3.296                  Time_Point_Entry

This variant record data type specifies the appropriate time point information depending on the type time specified.

Time_Point_Entry ::= (time_type  Time_Measurement_Type ) {
  GMT:                         absolute_time           Absolute_Time_Point_Fields;
  RELATIVE_TO_EXERCISE_START:  relative_to_start       Relative_Time_Point_Fields;
  RELATIVE_TO_REFERENCE_TIME:  relative_to_reference   Relative_To_Absolute_Time_Point_Entry;
}

5.3.3.297                  Time_Point_Fields

This data type encapsulates the field elements of a <DRM Time Point> class.

Time_Point_Fields ::= {
   time_significance              Time_Significance;
}

5.3.3.298                  Time_Related_Features_Fields

This data type encapsulates the field elements of a <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.299                  Time_Related_Geometry_Fields

This data type encapsulates the field elements of a <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.300                  Time_Select_Parameters

This data type specifies which branches to traverse from a <DRM Time Related Features> or <DRM Time Related Geometry> object when encountered by a component iterator.  All branches with a <DRM Time Constraints Data> link object having <DRM Base Time Data> with values matching the ranges specified in the time_entry_array will be traversed.

If no rules are provided for the type of time data of the branch in question, the branch will be traversed.  For example, 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 defined, all values for that type of time are considered valid.  For another example, if time_interval search ranges are given, but only for GMT times and not any RELATIVE_TO_EXERCISE_START times, any branch with an 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_Matching_Rules;
   time_entry_count               Integer_Unsigned;
   time_entry_array               Time_Entry[time_entry_count];
}

5.3.3.301                  TM_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the TM spatial reference frame.  It is defined in [2.I18026].

5.3.3.302                  TM_Location_2D_Fields

This data type encapsulates the field elements of the <DRM TM Location 2D> class.

TM_Location_2D_Fields ::= {
   coordinate                     TM_Coordinate_2D;
}

5.3.3.303                  Translation_Control_Link_Fields

This data type encapsulates the field elements of <DRM Translation Control Link> class.

Translation_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
   lower_expression_index         Integer_Unsigned;
   upper_expression_index         Integer_Unsigned;
}

5.3.3.304                  Translation_Fields

This data type encapsulates the field elements of a <DRM Translation> class.

Translation_Fields ::= {
   axis                           LSR_Transformation_Axis;
   translation_amount             Long_Float;
}

5.3.3.305                  Translucency_Control_Link_Fields

This data type encapsulates the field elements of <DRM Translucency Control Link> class.

Translucency_Control_Link_Fields ::= {
   description                    String;
   expression_index               Integer_Unsigned;
}

5.3.3.306                  Translucency_Fields

This data type encapsulates the field elements of a <DRM Translucency> class.

Translucency_Fields ::= {
   translucency_value             Long_Float;
}

5.3.3.307                  Transmittal_Root_Fields

This data type encapsulates the field elements of a <DRM Transmittal Root> class.

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;
   credits                        String;
}

5.3.3.308                  Transmittal_Summary_Fields

This data type encapsulates the field elements of a <DRM Transmittal Summary> class.

Transmittal_Summary _Field ::= {
   features_present                   Present_In;
   feature_topology_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_present             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_comprehensive   Boolean
}

5.3.3.309                  Union_Of_Features_Fields

This data type encapsulates the field elements of a <DRM Union Of Features> class.

Union_Of_Features_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   union_type                     Feature_Union_Reason;
   ordering_reason                Ordering_Reason;
}

5.3.3.310                  Union_Of_Feature_Topology_Fields

This data type encapsulates the field elements of a <DRM Union Of Feature Topology> class.

Union_Of_Feature_Topology_Fields ::= {
   feature_topology_level         Feature_Toplogy_Level;
}

5.3.3.311                  Union_Of_Geometry_Fields

This data type encapsulates the field elements of a <DRM Union Of Geometry> class.

Union_Of_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   ordering_reason                Ordering_Reason;
}

5.3.3.312                  Union_Of_Geometry_Hierarchy_Fields

This data type encapsulates the field elements of a <DRM Union Of Geometry Hierarchy> class.

Union_Of_Geometry_Hierarchy_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   ordering_reason                Ordering_Reason;
}

5.3.3.313                  Union_Of_Geometry_Topology_Fields

This data type encapsulates the field elements of a <DRM Union Of Geometry Topology> class.

Union_Of_Geometry_Topology_Fields ::= {
   geometry_topology_level        Geometry_Toplogy_Level;
}

5.3.3.314                  Union_Of_Primitive_Geometry_Fields

This data type encapsulates the field elements of a <DRM Union Of Primitive Geometry> class.

Union_Of_Primitive_Geometry_Fields ::= {
   unique_descendants             Boolean;
   strict_organizing_principle    Boolean;
   ordering_reason                Ordering_Reason;
}

5.3.3.315                  Unused_Fields

This data type specifies a data type for DRM classes that have no field data. It is provided so that all variants of the Data_Item_Field data type will have an associated record data type.

Unused_Fields ::= {
   unused                         Integer;
}

5.3.3.316                  UPS_Coordinate_2D

This data type specifies the data needed to define a 2D coordinate in the Univeral Polar Sterographic (UPS) spatial reference frame.  It is defined in [2.I18026].

5.3.3.317                  UPS_Location_2D_Fields

This data type encapsulates the field elements of the <DRM UPS Location 2D> class.

UPS_Location_2D_Fields ::= {
   coordinate                     UPS_Coordinate_2D;
}

5.3.3.318                  URN

This data type is used to specify a SEDRIS Universal Resource Name (URN).  The syntax and character set for such names are defined in the Internet Engineering Task Force (IETF) RFC #<TBD>.

URN ::= {
   length                         Integer_Unsigned;
   characters                     Character[length];
}

5.3.3.319                  User_Data

This data type specifies an arbitrary set of user data:

User_Data ::= {
   length                         Integer_Unsigned;
   data                           Byte_Unsigned[length];
}

5.3.3.320                  UTM_Coordinate_2D

This data type specifies the data needed to define a coordinate in the Universal Transverse Mercator (UTM) 2D spatial reference frame.  It is defined in [2.I18026].

5.3.3.321                  UTM_Location_2D_Fields

This data type encapsulates the field elements of the <DRM UTM Location 2D> class.

UTM_Location_2D_Fields ::= {
   coordinate                     UTM_Coordinate_2D;
}

5.3.3.322                  Variable_Fields

This data type encapsulates the field elements of a <DRM Variable> class.

Variable_Fields ::= {
   meaning                        Element_Type;
   value_unit                     EDCS_Unit_Code;
   value_scale                    EDCS_Scale_Code;
   value_type                     Property_Data_Value_Type;
   description                    String;
   runtime_label                  String;
}

5.3.3.323                  Vector_3

This data type specifies the data needed to define a 3D vector.  It is defined in [2.I18026].

5.3.3.324                  Vertex_With_Component_Indices_Fields

This data type encapsulates the field elements of a <DRM Vertex With Component Indices> class.

Vertex_With_Component_Indices_Fields ::= {
   colour_index                   Integer_Unsigned;
   location_index                 Integer_Unsigned;
   reference_vector_index         Integer_Unsigned;
   texture_coordinate_index       Integer_Unsigned;
   property_table_reference_index Integer_Unsigned;
}

5.3.3.325                  Volume_Extent_Entry

This variant data type specifies volume extent data for Volume_LOD_Entry.

Volume_Extent_Entry ::= (volume_type  Volumetric_Shape ) {
  SPHERE:             sphere          Spherical_Volume_Extent_Fields;
  CYLINDER:           cylinder        Cylinder_Volume_Extent_Entry;
  PARALLELEPIPED:     parallelepiped  Parallelepiped_Volume_Extent_Entry;
}

5.3.3.326                  Volume_Light_Behaviour_Fields

This data type encapsulates the field elements of a <DRM Volume Light Behaviour> class.

Volume_Light_Behaviour_Fields ::= {
   use_full_intensity             Boolean;
   minimum_colour_intensity       Long_Float;
}

5.3.3.327                  Volume_LOD_Data_Fields

This data type encapsulates the field elements of a <DRM Volume Level Of Detail Data> class.

Volume_LOD_Data_Fields ::= {
   outside                        Boolean;
}

5.3.3.328                  Volume_LOD_Entry

This data type specifies volume LOD data.

Volume_LOD_Entry ::= {
   coordinate                     SRM_Coordinate_3D;
   volume_extent                  Volume_Extent­_Entry;
   volume_lod                     Volume_LOD_Data_Fields;
}

5.3.3.329                  World_Transformation_Fields

This data type encapsulates the field elements of the <DRM World Transformation> class.

World_Transformation_Fields ::= {
   world_3x3                      Matrix_3x3;
}

5.4    Private data types

5.4.1          Overview

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 which shall be maintained for the data type in whatever form is convenient for the implementation.

5.4.2          Iterator

This data type specifies information that is used to cycle repeatedly over some aspect of a SEDRIS data base.

An iterator allows a user to step through a collection of objects related to the iterator’s start object, where the elements of the collection satisfy the conditions used to initialize the iterator. (For instance, an iterator may be initialized with a search filter.)

The relationship of the start object to the objects in the collection depends on which function was used to initialize the iterator.

Iterators in SEDRIS have the following characteristics:

a.   All SEDRIS iterators are external iterators; that is, the user controls the iterator, and is responsible for freeing anything retrieved from the iterator.

b.   An iterator is required to be created by an initialize-iterator function before it is used.

c.   An iterator is required to be freed by 7.3.13 FreeIterator after the user is done with it.

More details are available in the various initialize-iterator functions (e.g., 7.3.62 InitializeAggregateIterator, 7.3.63 InitializeAssociateIterator, 7.3.64 InitializeComponentIterator), as well as in 7.3.35 GetNextObject, 7.3.47 GetRemainingObjectsList, and 7.3.13 FreeIterator.

More information on the iterator behavioral pattern and external iterators is available in [GAMMA].

5.4.3          Object

This data type stores a means to access a DRM class instance. An instance of this type called a DRM class handle.

A SEDRIS DRM class instance may be resolved, unresolved or unsaved:

Resolved:  the DRM class handle points to an object that is available to the SEDRIS API; i.e., the 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.

Unresolved:  the DRM class handle points to an object that the API cannot access or the application programmer has chosen not to access it; e.g., the object may reside in a transmittal that is not currently open. This means that the DRM class handle requires an inter-transmittal reference (ITR).

Unsaved:  the DRM class handle is freshly created using 7.3.9 CreateObject but has not yet been added to a transmittal. When it is added to a transmittal, it will become resolved.

NOTE: To be available for inter-transmittal referencing (ITR), a SEDRIS object shall be published.

5.4.4          Packed_Hierarchy_Object_Access

This data type stores a means to access a packed hierarchy object.

5.4.5          Search_Boundary

This data type stores information that is used by the API during spatial searches.

5.4.6          Search_Filter

This data type stores information that is used as a search filter during searches of a transmittal.

A search filter is created by calling 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:

a.   A search filter shall be created by CreateSearchFilter before it is used.

b.   To use a search filter after it has been defined, the search filter is passed as an argument to an iterator when initializing the iterator.

c.   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 retains a copy of any search filter used to initialize that iterator).

d.   A search filter shall be freed by FreeSearchFilter after it is no longer needed.

5.4.7          Test_Data

This data type supports the specification of arbitrary data to be used by the implementation during searching.

5.4.8          Transmittal

This data type is used to maintain the implementation dependent information necessary to access a transmittal.

5.5    Function data types

5.5.1          Overview

This part of ISO/IEC 18023 provides for the specification of arbitrary “call-back” functions which are provided by the application but invoked by the implementation. Such functions shall have the function signature defined for each function data type.

5.5.2          Search_Rule_Predicate

This data type is a call-back 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

5.5.3          Status_Logger

This data type is a call-back 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:     
Transmittal_API_Function
Status_Code
String
String