------------------------------------------------------------------ -- -- NAME: BINARY_ENCODER_CONSTANTS -- DISCREPANCY REPORTS: -- ------------------------------------------------------------------ -- file : BIN_ENCODER_CONS.ADA -- level : 0a with BINARY_ENCODER_TYPES; with CGM_STANDARD_TYPES; use BINARY_ENCODER_TYPES; use CGM_STANDARD_TYPES; package BINARY_ENCODER_CONSTANTS is -- There are three methods of encoding CGM data, this package contains -- the constants required for procedures (in package BINARY_ENCODER) -- to encode CGM data in the BINARY format. Specifically, constants -- required to compose the binary encoded command header portion of -- CGM elements are included. ------------------------------------------------------------------- EXTENDED_LENGTH : constant := 31; -- Constant used in a long-form command header to specify that the -- parameter list length is encoded in extended format (word 2 of -- the command header, see BIN_ENCODER_TYPES.ADA). -------------------------------------------------------------------- -- NOTE: ANSI X3.122-1986 provides for 8 classes of elements -- and each class contains 1..n elements each of which has -- an element type number by which it is identified in the -- binary encoding format for CGM data. -- The 8 defined element classes are as follows : DELIMITER_CLASS : constant CLASS_TYPE := 0; METAFILE_DESCRIPTOR_CLASS : constant CLASS_TYPE := 1; PICTURE_DESCRIPTOR_CLASS : constant CLASS_TYPE := 2; CONTROL_CLASS : constant CLASS_TYPE := 3; GRAPHICAL_PRIMITIVE_CLASS : constant CLASS_TYPE := 4; ATTRIBUTE_CLASS : constant CLASS_TYPE := 5; ESCAPE_CLASS : constant CLASS_TYPE := 6; EXTERNAL_CLASS : constant CLASS_TYPE := 7; UNDEFINED_CLASS : constant CLASS_TYPE := 15; -------------------------------------------------------------------- -- Within the classes, the element types are assigned as follows: -- Delimiter elements: Class 0 NO_OP : constant ELEMENT_TYPE := 0; BEGIN_METAFILE : constant ELEMENT_TYPE := 1; END_METAFILE : constant ELEMENT_TYPE := 2; BEGIN_PICTURE : constant ELEMENT_TYPE := 3; BEGIN_PICTURE_BODY : constant ELEMENT_TYPE := 4; END_PICTURE : constant ELEMENT_TYPE := 5; -- Metafile Descriptor Elements: Class 1 METAFILE_VERSION : constant ELEMENT_TYPE := 1; METAFILE_DESCRIPTION : constant ELEMENT_TYPE := 2; VDC_TYPE : constant ELEMENT_TYPE := 3; INTEGER_PRECISION : constant ELEMENT_TYPE := 4; REAL_PRECISION : constant ELEMENT_TYPE := 5; INDEX_PRECISION : constant ELEMENT_TYPE := 6; COLOUR_PRECISION : constant ELEMENT_TYPE := 7; COLOUR_INDEX_PRECISION : constant ELEMENT_TYPE := 8; MAXIMUM_COLOUR_INDEX : constant ELEMENT_TYPE := 9; COLOUR_VALUE_EXTENT : constant ELEMENT_TYPE := 10; METAFILE_ELEMENT_LIST : constant ELEMENT_TYPE := 11; METAFILE_DEFAULTS_REPLACEMENT : constant ELEMENT_TYPE := 12; FONT_LIST : constant ELEMENT_TYPE := 13; CHAR_SET_LIST : constant ELEMENT_TYPE := 14; CHAR_CODING_ANNOUNCER : constant ELEMENT_TYPE := 15; -- Picture Descriptor Elements: Class 2 SCALING_MODE : constant ELEMENT_TYPE := 1; COLOUR_SELECTION_MODE : constant ELEMENT_TYPE := 2; LINE_WIDTH_SPEC_MODE : constant ELEMENT_TYPE := 3; MARKER_SIZE_SPEC_MODE : constant ELEMENT_TYPE := 4; EDGE_WIDTH_SPEC_MODE : constant ELEMENT_TYPE := 5; VDC_EXTENT : constant ELEMENT_TYPE := 6; BACKGROUND_COLOUR : constant ELEMENT_TYPE := 7; -- Control Elements: Class 3 VDC_INTEGER_PRECISION : constant ELEMENT_TYPE := 1; VDC_REAL_PRECISION : constant ELEMENT_TYPE := 2; AUXILIARY_COLOUR : constant ELEMENT_TYPE := 3; TRANSPARENCY : constant ELEMENT_TYPE := 4; CLIP_RECTANGLE : constant ELEMENT_TYPE := 5; CLIP_INDICATOR : constant ELEMENT_TYPE := 6; -- Graphical Primitive Elements: Class 4 POLYLINE : constant ELEMENT_TYPE := 1; DISJOINT_POLYLINE : constant ELEMENT_TYPE := 2; POLYMARKER : constant ELEMENT_TYPE := 3; TEXT : constant ELEMENT_TYPE := 4; RESTRICTED_TEXT : constant ELEMENT_TYPE := 5; APPEND_TEXT : constant ELEMENT_TYPE := 6; POLYGON : constant ELEMENT_TYPE := 7; POLYGON_SET : constant ELEMENT_TYPE := 8; CELL_ARRAY : constant ELEMENT_TYPE := 9; GENERALIZED_DRAWING_PRIMITIVE : constant ELEMENT_TYPE := 10; RECTANGLE : constant ELEMENT_TYPE := 11; CIRCLE : constant ELEMENT_TYPE := 12; CIRCULAR_ARC_3_POINT : constant ELEMENT_TYPE := 13; CIRCULAR_ARC_3_POINT_CLOSE : constant ELEMENT_TYPE := 14; CIRCULAR_ARC_CENTRE : constant ELEMENT_TYPE := 15; CIRCULAR_ARC_CENTRE_CLOSE : constant ELEMENT_TYPE := 16; ELLIPSE : constant ELEMENT_TYPE := 17; ELLIPTICAL_ARC : constant ELEMENT_TYPE := 18; ELLIPTICAL_ARC_CLOSE : constant ELEMENT_TYPE := 19; -- Attribute Elements: Class 5 LINE_BUNDLE_INDEX : constant ELEMENT_TYPE := 1; LINE_TYPE : constant ELEMENT_TYPE := 2; LINE_WIDTH : constant ELEMENT_TYPE := 3; LINE_COLOUR : constant ELEMENT_TYPE := 4; MARKER_BUNDLE_INDEX : constant ELEMENT_TYPE := 5; MARKER_TYPE : constant ELEMENT_TYPE := 6; MARKER_SIZE : constant ELEMENT_TYPE := 7; MARKER_COLOUR : constant ELEMENT_TYPE := 8; TEXT_BUNDLE_INDEX : constant ELEMENT_TYPE := 9; TEXT_FONT_INDEX : constant ELEMENT_TYPE := 10; TEXT_PRECISION : constant ELEMENT_TYPE := 11; CHAR_EXPANSION_FACTOR : constant ELEMENT_TYPE := 12; CHAR_SPACING : constant ELEMENT_TYPE := 13; TEXT_COLOUR : constant ELEMENT_TYPE := 14; CHAR_HEIGHT : constant ELEMENT_TYPE := 15; CHAR_ORIENTATION : constant ELEMENT_TYPE := 16; TEXT_PATH : constant ELEMENT_TYPE := 17; TEXT_ALIGNMENT : constant ELEMENT_TYPE := 18; CHAR_SET_INDEX : constant ELEMENT_TYPE := 19; ALTERNATE_CHARACTER_SET_INDEX : constant ELEMENT_TYPE := 20; FILL_BUNDLE_INDEX : constant ELEMENT_TYPE := 21; INTERIOR_STYLE : constant ELEMENT_TYPE := 22; FILL_COLOUR : constant ELEMENT_TYPE := 23; HATCH_INDEX : constant ELEMENT_TYPE := 24; PATTERN_INDEX : constant ELEMENT_TYPE := 25; EDGE_BUNDLE_INDEX : constant ELEMENT_TYPE := 26; EDGE_TYPE : constant ELEMENT_TYPE := 27; EDGE_WIDTH : constant ELEMENT_TYPE := 28; EDGE_COLOUR : constant ELEMENT_TYPE := 29; EDGE_VISIBILITY : constant ELEMENT_TYPE := 30; FILL_REFERENCE_POINT : constant ELEMENT_TYPE := 31; PATTERN_TABLE : constant ELEMENT_TYPE := 32; PATTERN_SIZE : constant ELEMENT_TYPE := 33; COLOUR_TABLE : constant ELEMENT_TYPE := 34; ASPECT_SOURCE_FLAGS : constant ELEMENT_TYPE := 35; -- Escape Elements: Class 6 ESCAPE : constant ELEMENT_TYPE := 1; -- External Elements: Class 7 MESSAGE : constant ELEMENT_TYPE := 1; APPLICATION_DATA : constant ELEMENT_TYPE := 2; -- Undefined Elements: Class 15 UNDEFINED_ELEMENT : constant ELEMENT_TYPE := 127; -- NOTE: This is not an ANSI X3.122-1986 standard class but is -- required for this generator. Also, 127 equals the -- maximum number that fits in the 7 bit element field -- (i.e. all bits set). -------------------------------------------------------------------- -- NOTE: The following 2 data types and 1 object associate the -- elements with their class and type (identification) in -- a single data structure. type ELEMENT_DATA is -- Data structure defining the identifiers of the CGM elements, -- as broken down into Class and Element type (identifier). record CLASS : CLASS_TYPE; ELEMENT : ELEMENT_TYPE; end record; type ELEMENT_LIST is array (CGM_ELEMENTS) of ELEMENT_DATA; -- An array indexed by the CGM_ELEMENTS, of the data -- structure that defines the identifiers (CLASS, ELEMENT) of -- each element. CGM_ELEMENT_LIST : constant ELEMENT_LIST := -- Object of the element array to be referenced by a single -- CGM element and returning the data structure values that -- indicate the CLASS, and ELEMENT. ( CGM_DRAWING_SET => ( UNDEFINED_CLASS, UNDEFINED_ELEMENT ), CGM_DRAWING_PLUS_CONTROL_SET => ( UNDEFINED_CLASS, UNDEFINED_ELEMENT ), CGM_NO_OP => ( DELIMITER_CLASS, NO_OP ), CGM_BEGIN_METAFILE => ( DELIMITER_CLASS, BEGIN_METAFILE ), CGM_END_METAFILE => ( DELIMITER_CLASS, END_METAFILE ), CGM_BEGIN_PICTURE => ( DELIMITER_CLASS, BEGIN_PICTURE ), CGM_BEGIN_PICTURE_BODY => ( DELIMITER_CLASS, BEGIN_PICTURE_BODY ), CGM_END_PICTURE => ( DELIMITER_CLASS, END_PICTURE ), CGM_METAFILE_VERSION => ( METAFILE_DESCRIPTOR_CLASS, METAFILE_VERSION ), CGM_METAFILE_DESCRIPTION => ( METAFILE_DESCRIPTOR_CLASS, METAFILE_DESCRIPTION ), CGM_VDC_TYPE => ( METAFILE_DESCRIPTOR_CLASS, VDC_TYPE ), CGM_INTEGER_PRECISION => ( METAFILE_DESCRIPTOR_CLASS, INTEGER_PRECISION ), CGM_REAL_PRECISION => ( METAFILE_DESCRIPTOR_CLASS, REAL_PRECISION ), CGM_INDEX_PRECISION => ( METAFILE_DESCRIPTOR_CLASS, INDEX_PRECISION ), CGM_COLOUR_PRECISION => ( METAFILE_DESCRIPTOR_CLASS, COLOUR_PRECISION ), CGM_COLOUR_INDEX_PRECISION => ( METAFILE_DESCRIPTOR_CLASS, COLOUR_INDEX_PRECISION ), CGM_MAXIMUM_COLOUR_INDEX => ( METAFILE_DESCRIPTOR_CLASS, MAXIMUM_COLOUR_INDEX ), CGM_COLOUR_VALUE_EXTENT => ( METAFILE_DESCRIPTOR_CLASS, COLOUR_VALUE_EXTENT ), CGM_METAFILE_ELEMENT_LIST => ( METAFILE_DESCRIPTOR_CLASS, METAFILE_ELEMENT_LIST ), CGM_METAFILE_DEFAULTS_REPLACEMENT => ( METAFILE_DESCRIPTOR_CLASS, METAFILE_DEFAULTS_REPLACEMENT ), CGM_FONT_LIST => ( METAFILE_DESCRIPTOR_CLASS, FONT_LIST ), CGM_CHAR_SET_LIST => ( METAFILE_DESCRIPTOR_CLASS, CHAR_SET_LIST ), CGM_CHAR_CODING_ANNOUNCER => ( METAFILE_DESCRIPTOR_CLASS, CHAR_CODING_ANNOUNCER ), CGM_SCALING_MODE => ( PICTURE_DESCRIPTOR_CLASS, SCALING_MODE ), CGM_COLOUR_SELECTION_MODE => ( PICTURE_DESCRIPTOR_CLASS, COLOUR_SELECTION_MODE ), CGM_LINE_WIDTH_SPEC_MODE => ( PICTURE_DESCRIPTOR_CLASS, LINE_WIDTH_SPEC_MODE ), CGM_MARKER_SIZE_SPEC_MODE => ( PICTURE_DESCRIPTOR_CLASS, MARKER_SIZE_SPEC_MODE ), CGM_EDGE_WIDTH_SPEC_MODE => ( PICTURE_DESCRIPTOR_CLASS, EDGE_WIDTH_SPEC_MODE ), CGM_VDC_EXTENT => ( PICTURE_DESCRIPTOR_CLASS, VDC_EXTENT ), CGM_BACKGROUND_COLOUR => ( PICTURE_DESCRIPTOR_CLASS, BACKGROUND_COLOUR ), CGM_VDC_INTEGER_PRECISION => ( CONTROL_CLASS, VDC_INTEGER_PRECISION ), CGM_VDC_REAL_PRECISION => ( CONTROL_CLASS, VDC_REAL_PRECISION ), CGM_AUXILIARY_COLOUR => ( CONTROL_CLASS, AUXILIARY_COLOUR ), CGM_TRANSPARENCY => ( CONTROL_CLASS, TRANSPARENCY ), CGM_CLIP_RECTANGLE => ( CONTROL_CLASS, CLIP_RECTANGLE ), CGM_CLIP_INDICATOR => ( CONTROL_CLASS, CLIP_INDICATOR ), CGM_POLYLINE => ( GRAPHICAL_PRIMITIVE_CLASS, POLYLINE ), CGM_DISJOINT_POLYLINE => ( GRAPHICAL_PRIMITIVE_CLASS, DISJOINT_POLYLINE ), CGM_POLYMARKER => ( GRAPHICAL_PRIMITIVE_CLASS, POLYMARKER ), CGM_TEXT => ( GRAPHICAL_PRIMITIVE_CLASS, TEXT ), CGM_RESTRICTED_TEXT => ( GRAPHICAL_PRIMITIVE_CLASS, RESTRICTED_TEXT ), CGM_APPEND_TEXT => ( GRAPHICAL_PRIMITIVE_CLASS, APPEND_TEXT ), CGM_POLYGON => ( GRAPHICAL_PRIMITIVE_CLASS, POLYGON ), CGM_POLYGON_SET => ( GRAPHICAL_PRIMITIVE_CLASS, POLYGON_SET ), CGM_CELL_ARRAY => ( GRAPHICAL_PRIMITIVE_CLASS, CELL_ARRAY ), CGM_GDP => ( GRAPHICAL_PRIMITIVE_CLASS, GENERALIZED_DRAWING_PRIMITIVE ), CGM_RECTANGLE => ( GRAPHICAL_PRIMITIVE_CLASS, RECTANGLE ), CGM_CIRCLE => ( GRAPHICAL_PRIMITIVE_CLASS, CIRCLE ), CGM_CIRCULAR_ARC_3_POINT => ( GRAPHICAL_PRIMITIVE_CLASS, CIRCULAR_ARC_3_POINT ), CGM_CIRCULAR_ARC_3_POINT_CLOSE => ( GRAPHICAL_PRIMITIVE_CLASS, CIRCULAR_ARC_3_POINT_CLOSE ), CGM_CIRCULAR_ARC_CENTRE => ( GRAPHICAL_PRIMITIVE_CLASS, CIRCULAR_ARC_CENTRE ), CGM_CIRCULAR_ARC_CENTRE_CLOSE => ( GRAPHICAL_PRIMITIVE_CLASS, CIRCULAR_ARC_CENTRE_CLOSE ), CGM_ELLIPSE => ( GRAPHICAL_PRIMITIVE_CLASS, ELLIPSE ), CGM_ELLIPTICAL_ARC => ( GRAPHICAL_PRIMITIVE_CLASS, ELLIPTICAL_ARC ), CGM_ELLIPTICAL_ARC_CLOSE => ( GRAPHICAL_PRIMITIVE_CLASS, ELLIPTICAL_ARC_CLOSE ), CGM_LINE_BUNDLE_INDEX => ( ATTRIBUTE_CLASS, LINE_BUNDLE_INDEX ), CGM_LINE_TYPE => ( ATTRIBUTE_CLASS, LINE_TYPE ), CGM_LINE_WIDTH => ( ATTRIBUTE_CLASS, LINE_WIDTH ), CGM_LINE_COLOUR => ( ATTRIBUTE_CLASS, LINE_COLOUR ), CGM_MARKER_BUNDLE_INDEX => ( ATTRIBUTE_CLASS, MARKER_BUNDLE_INDEX ), CGM_MARKER_TYPE => ( ATTRIBUTE_CLASS, MARKER_TYPE ), CGM_MARKER_SIZE => ( ATTRIBUTE_CLASS, MARKER_SIZE ), CGM_MARKER_COLOUR => ( ATTRIBUTE_CLASS, MARKER_COLOUR ), CGM_TEXT_BUNDLE_INDEX => ( ATTRIBUTE_CLASS, TEXT_BUNDLE_INDEX ), CGM_TEXT_FONT_INDEX => ( ATTRIBUTE_CLASS, TEXT_FONT_INDEX ), CGM_TEXT_PRECISION => ( ATTRIBUTE_CLASS, TEXT_PRECISION ), CGM_CHAR_EXPANSION_FACTOR => ( ATTRIBUTE_CLASS, CHAR_EXPANSION_FACTOR ), CGM_CHAR_SPACING => ( ATTRIBUTE_CLASS, CHAR_SPACING ), CGM_TEXT_COLOUR => ( ATTRIBUTE_CLASS, TEXT_COLOUR ), CGM_CHAR_HEIGHT => ( ATTRIBUTE_CLASS, CHAR_HEIGHT ), CGM_CHAR_ORIENTATION => ( ATTRIBUTE_CLASS, CHAR_ORIENTATION ), CGM_TEXT_PATH => ( ATTRIBUTE_CLASS, TEXT_PATH ), CGM_TEXT_ALIGNMENT => ( ATTRIBUTE_CLASS, TEXT_ALIGNMENT ), CGM_CHAR_SET_INDEX => ( ATTRIBUTE_CLASS, CHAR_SET_INDEX ), CGM_ALTERNATE_CHAR_SET_INDEX => ( ATTRIBUTE_CLASS, ALTERNATE_CHARACTER_SET_INDEX ), CGM_FILL_BUNDLE_INDEX => ( ATTRIBUTE_CLASS, FILL_BUNDLE_INDEX ), CGM_INTERIOR_STYLE => ( ATTRIBUTE_CLASS, INTERIOR_STYLE ), CGM_FILL_COLOUR => ( ATTRIBUTE_CLASS, FILL_COLOUR ), CGM_HATCH_INDEX => ( ATTRIBUTE_CLASS, HATCH_INDEX ), CGM_PATTERN_INDEX => ( ATTRIBUTE_CLASS, PATTERN_INDEX ), CGM_EDGE_BUNDLE_INDEX => ( ATTRIBUTE_CLASS, EDGE_BUNDLE_INDEX ), CGM_EDGE_TYPE => ( ATTRIBUTE_CLASS, EDGE_TYPE ), CGM_EDGE_WIDTH => ( ATTRIBUTE_CLASS, EDGE_WIDTH ), CGM_EDGE_COLOUR => ( ATTRIBUTE_CLASS, EDGE_COLOUR ), CGM_EDGE_VISIBILITY => ( ATTRIBUTE_CLASS, EDGE_VISIBILITY ), CGM_FILL_REFERENCE_POINT => ( ATTRIBUTE_CLASS, FILL_REFERENCE_POINT ), CGM_PATTERN_TABLE => ( ATTRIBUTE_CLASS, PATTERN_TABLE ), CGM_PATTERN_SIZE => ( ATTRIBUTE_CLASS, PATTERN_SIZE ), CGM_COLOUR_TABLE => ( ATTRIBUTE_CLASS, COLOUR_TABLE ), CGM_ASPECT_SOURCE_FLAGS => ( ATTRIBUTE_CLASS, ASPECT_SOURCE_FLAGS ), CGM_ESCAPE => ( ESCAPE_CLASS, ESCAPE ), CGM_MESSAGE => ( EXTERNAL_CLASS, MESSAGE ), CGM_APPLICATION_DATA => ( EXTERNAL_CLASS, APPLICATION_DATA) ); ------------------------------------------------------------------ end BINARY_ENCODER_CONSTANTS;