ISO/IEC 8632-3:1999
(Main)Information technology — Computer graphics — Metafile for the storage and transfer of picture description information — Part 3: Binary encoding
Information technology — Computer graphics — Metafile for the storage and transfer of picture description information — Part 3: Binary encoding
This part of ISO/IEC 8632 specifies a binary encoding of the Computer Graphics Metafile. For each of the elements specified in ISO/IEC 8632-1, this part specifies an encoding in terms of data types. For each of these data types, an explicit representation in terms of bits, octets and words is specified. For some data types, the exact representation is a function of the precisions being used in the metafile, as recorded in the Metafile Descriptor. This encoding of the Computer Graphics Metafile will, in many circumstances, minimize the effort required to generate and interpret the metafile.
Technologies de l'information — Infographie — Métafichier de stockage et de transfert des informations de description d'images — Partie 3: Codage binaire
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 8632-3
Second edition
1999-12-15
Information technology — Computer
graphics — Metafile for the storage and
transfer of picture description
information —
Part 3:
Binary encoding
Technologies de l'information — Infographie — Métafichier de stockage
et de transfert des informations de description d'images —
Partie 3: Codage binaire
Reference number
©
ISO/IEC 1999
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but shall not
be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this
file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat accepts no liability in this
area.
Adobe is a trademark of Adobe Systems Incorporated.
Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters
were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event
that a problem relating to it is found, please inform the Central Secretariat at the address given below.
© ISO/IEC 1999
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means, electronic
or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or ISO's member body
in the country of the requester.
ISO copyright office
Case postale 56 � CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 734 10 79
E-mail copyright@iso.ch
Web www.iso.ch
Printed in Switzerland
ii © ISO/IEC 1999 – All rights reserved
Contents Page
1 Scope.1
2 Conformance .1
3 Normative references .2
4 Notational conventions .2
5 Overall structure .2
5.1 General form of metafile.2
5.2 General form of pictures .2
5.3 General structure of the binary metafile.3
5.4 Structure of the command header .4
6 Primitive data forms.6
6.1 Signed integer .6
6.1.1 Signed integer at 8-bit precision .6
6.1.2 Signed integer at 16-bit precision .6
6.1.3 Signed integer at 24-bit precision .7
6.1.4 Signed integer at 32-bit precision .7
6.2 Unsigned integer.7
6.2.1 Unsigned integers at 8-bit precision.7
6.2.2 Unsigned integers at 16-bit precision.7
6.2.3 Unsigned integers at 24-bit precision.7
6.2.4 Unsigned integers at 32-bit precision.8
6.3 Character.8
6.4 Fixed point real.8
6.4.1 Fixed point real at 32-bit precision.8
6.4.2 Fixed point real at 64-bit precision.8
6.4.3 Value of fixed point reals.8
6.5 Floating point .9
6.5.1 Floating point real at 32-bit precision.9
© ISO/IEC 1999 – All rights reserved
iii
6.5.2 Floating point real at 64-bit precision .10
7 Representation of abstract parameter types.10
8 Representation of each element.15
8.1 Method of presentation .15
8.2 Delimiter elements .16
8.3 Metafile descriptor elements.18
8.4 Picture descriptor elements.25
8.5 Control elements.30
8.6 Graphical primitive elements .33
8.7 Attribute elements.41
8.8 Escape element .50
8.9 External elements.51
8.10 Segment control and segment attribute elements .52
8.11 Application structure descriptor elements.56
9 Defaults .57
10 Profile encoding rules, proforma, and Model Profile .57
10.1 Encodings .57
10.2 Metafile defaults .57
10.3 Floating point values .57
10.4 Profile proforma tables (PPF) .57
10.5 Permissible alternative coding representation .58
Annex A (normative) Formal grammar.59
Annex B (informative) Examples.61
Annex C (informative) List of binary encoding metafile element codes.64
iv © ISO/IEC 1999 – All rights reserved
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission)
form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC
participate in the development of International Standards through technical committees established by the
respective organization to deal with particular fields of technical activity. ISO and IEC technical committees
collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in
liaison with ISO and IEC, also take part in the work.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 3.
In the field of information technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
Draft International Standards adopted by the joint technical committee are circulated to national bodies for voting.
Publication as an International Standard requires approval by at least 75 % of the national bodies casting a vote.
Attention is drawn to the possibility that some of the elements of this part of ISO/IEC 8632 may be the subject of
patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.
International Standard ISO/IEC 8632-3 was prepared by Joint Technical Committee ISO/IEC JTC 1, Information
technology, Subcommittee SC 24, Computer graphics and image processing.
This second edition cancels and replaces the first edition (ISO/IEC 8632-3:1992), which has been technically
revised. It also incorporates Amendment 1:1994 and Amendment 2:1995. Note that the previous edition of
ISO/IEC 8632-3, published in 1992, was a first edition but second edition was indicated by error on its cover page
and in the foreword.
ISO/IEC 8632 consists of the following parts, under the general title Information technology — Computer graphics
— Metafile for the storage and transfer of picture description information:
— Part 1: Functional specification
— Part 3: Binary encoding
— Part 4: Clear text encoding
Annex A forms a normative part of this part of ISO/IEC 8632. Annexes B and C are for information only.
NOTE In previous editions of ISO/IEC 8632, Part 2 defined a Character Encoding. Part 2 was withdrawn in 1998, due to its lack
of implementation and use.
© ISO/IEC 1999 – All rights reserved
v
Introduction
0.1 Purpose of the Binary Encoding
The Binary Encoding of the Computer Graphics Metafile (CGM) provides a representation of the Metafile syntax
that can be optimized for speed of generation and interpretation, while still providing a standard means of
interchange among computer systems. The encoding uses binary data formats that are much more similar to the
data representations used within computer systems than the data formats of the other encodings.
Some of the data formats may exactly match those of some computer systems. In such cases processing is
reduced very much relative to the other standardized encodings.
On most computer systems processing requirements for the Binary Encoding will be substantially lower than
another encoding.
In cases where a computer system’s architecture does not match the standard formats used in the Binary
Encoding, and where absolute minimization of processing requirements is critical, and where interchange among
dissimilar systems does not matter, it may be more appropriate to use a private encoding, conforming to the rules
specified in clause 7 of ISO/IEC 8632-1.
0.2 Objectives
This encoding has the following features.
a) Partitioning of parameter lists: metafile elements are coded in the Binary Encoding by one or more
partitions (see clause 5); the first (or only) partition of an element contains the opcode (Element Class plus
Element Id).
b) Alignment of elements: every element begins on a word boundary. When the data of an element (whether
partitioned or not) does not terminate on an even-octet boundary, then the following element is aligned by
padding after the data of the preceding element with zero bits to the next even-octet boundary. A no-op
element is available in this encoding. It is skipped and ignored by interpreters. It may be used to align
data on machine-dependent record boundaries for speed of processing.
c) Uniformity of format: all elements have an associated parameter length value. The length is specified as
an octet count. As a result, it is possible to scan the metafile, without interpreting it, at high speed.
d) Alignment of coordinate data: at default precisions and by virtue of alignment of elements, coordinate data
always start on word boundaries. This minimises processing by ensuring, on a wide class of computing
systems, that single coordinates do not have to be assembled from pieces of multiple computer words.
e) Efficiency of encoding integer data: other data such as indexes, colour and characters are encoded as one
or more octets. The precision of every parameter is determined by the appropriate precision as given in
the Metafile Descriptor.
f) Order of bit data: in each word, or unit within a word, the bit with the highest number is the most significant
bit. Likewise, when data words are accessed sequentially, the least significant word follows the most
significant.
g) Extensibility: the arrangement of Element Class and Element Id values has been designed to allow future
growth, such as new graphical elements.
h) Format of real data: real numbers are encoded using either IEEE floating point representation or a metafile
fixed-point representation.
i) Run length encoding: if many adjacent cells have the same colour (or colour index) efficient encoding is
possible. For each run a cell count is specified followed by the colour (or colour index).
j) Packed list encoding: if adjacent colour cells do not have the same colour (or colour index) the metafile
provides bit-stream lists in which the values are packed as closely as possible.
vi © ISO/IEC 1999 – All rights reserved
0.3 Relationship to other International Standards
The floating point representation of real data in this part of ISO/IEC 8632 is that in ANSI/IEEE 754-1986.
The representation of character data in this part of ISO/IEC 8632 follows the rules of ISO/IEC 646 and ISO 2022.
For certain elements, the CGM defines value ranges as being reserved for registration. The values and their
meanings will be defined using the established procedures (see ISO/IEC 8632-1, 6.12.)
© ISO/IEC 1999 – All rights reserved
vii
INTERNATIONAL STANDARD ISO/IEC 8632-3:1999(E)
Information technology — Computer graphics — Metafile for the
storage and transfer of picture description information —
Part 3:
Binary encoding
1 Scope
This part of ISO/IEC 8632 specifies a binary encoding of the Computer Graphics Metafile. For each of the
elements specified in ISO/IEC 8632-1, this part specifies an encoding in terms of data types.
For each of these data types, an explicit representation in terms of bits, octets and words is specified. For some
data types, the exact representation is a function of the precisions being used in the metafile, as recorded in the
Metafile Descriptor.
This encoding of the Computer Graphics Metafile will, in many circumstances, minimize the effort required to
generate and interpret the metafile.
2 Conformance
Conformance of metafiles to ISO/IEC 8632 is defined in terms of profiles. A metafile conforms to this encoding if it
conforms to a profile and meets the following criteria:
� Each metafile element described in this part shall be encoded in the manner described in this part of this
International Standard and a profile.
� Metafile elements which are not defined in Part 1 or in this encoding are all encoded using the GENERALIZED
DRAWING PRIMITIVE or ESCAPE metafile elements as appropriate. According to the profile rules of Part 1
(see clause 9, subclause 9.5.2.8), such elements shall either be profile defined or registered, in order that the
profile be valid. Inclusion of private elements is not permissible in a valid profile of ISO/IEC 8632 and this
encoding.
� Values of index parameters, which are used as enumeration selectors from lists of implicitly defined attribute
values, shall either be standard, registered, or profile defined. The standard and registered values are all non-
negative, and the profile-defined shall be negative. Use of private, implicitly-defined negative index values
which are not profile defined is not permissible in a valid profile of ISO/IEC 8632 and this encoding.
� Values specified as being "reserved for registered values" shall not be used unless their meaning has been
registered or standardized.
� Inclusion of non-graphical data in the metafile shall be accomplished with the APPLICATION DATA element or
with the APPLICATION STRUCTURE ATTRIBUTE element.
See clause 10 for additional conformance information about this encoding.
© ISO/IEC 1999 – All rights reserved 1
3 Normative references
The following normative documents contain provisions which, through reference in this text, constitute provisions of
this part of ISO/IEC 8632. For dated references, subsequent amendments to, or revisions of, any of these
publications do not apply. However, parties to agreements based on this part of ISO/IEC 8632 are encouraged to
investigate the possibility of applying the most recent editions of the normative documents indicated below. For
undated references, the latest edition of the normative document referred to applies. Members of ISO and IEC
maintain registers of currently valid International Standards.
ISO/IEC 646:1991, Information technology — ISO 7-bit coded character set for information interchange.
ISO 2022:1986, Information processing — ISO 7-bit and 8-bit coded character sets — Code extension techniques.
ANSI/IEEE 754, Standard for Binary Floating Point Arithmetic.
4 Notational conventions
“Command Header” is used throughout this part of ISO/IEC 8632 to refer to that portion of a Binary-Encoded
element that contains the opcode (element class plus element id) and parameter length information (see clause 5).
Within this part, the terms “octet” and “word” have specific meanings. These meanings may not match those of a
particular computer system on which this encoding of the metafile is used.
An octet is an 8-bit entity. All bits are significant. The bits are numbered from 7 (most significant) to 0 (least
significant).
A word is a 16-bit entity. All bits are significant. The bits are numbered from 15 (most significant) to 0 (least
significant).
5 Overall structure
5.1 General form of metafile
All elements in the metafile are encoded using a uniform scheme. The elements are represented as variable length
data structures, each consisting of opcode information (element class plus element id) designating the particular
element, the length of its parameter data and finally the parameter data (if any).
The structure of the metafile is as follows. (For the purposes of this diagram only, MF is used as an abbreviation
for METAFILE.)
BEGIN MF MD
The BEGIN METAFILE element is followed by the Metafile Descriptor (MD). After this the pictures follow, each
logically independent of each other. Finally the Metafile is ended with an END METAFILE element.
5.2 General form of pictures
Apart from the BEGIN METAFILE, END METAFILE and Metafile Descriptor elements, the metafile is partitioned
into pictures. All pictures are mutually independent. A picture consists of a BEGIN PICTURE element, a Picture
Descriptor (PD), a BEGIN PICTURE BODY element, an arbitrary number of control, graphical and attribute
elements, and finally an END PICTURE element.
(For the purpose of this diagram only, PIC is used as an abbreviation for PICTURE and BEGIN BODY for BEGIN
PICTURE BODY.)
BEGIN PIC PD BEGIN BODY . END PIC
2 © ISO/IEC 1999 – All rights reserved
5.3 General structure of the binary metafile
The binary encoding of the metafile is a logical data structure consisting of a sequential collection of bits.
For convenience in describing the length and alignment of metafile elements, fields of two different sizes are
defined within the structure. These fields are used in the remainder of this part of ISO/IEC 8632 for illustrating the
contents and structure of elements and parameters.
For measuring the lengths of elements the metafile is partitioned into octets, which are 8-bit fields.
The structure is also partitioned into 16-bit fields called words (these are logical metafile words). To optimize
processing of the binary metafile on a wide collection of computers, metafile elements are constrained to start on
word boundaries within the binary data structure (this alignment may necessitate padding an element with bits to a
word boundary if the parameter data of the element does not fill to such a boundary).
The octet is the fundamental unit of organization of the binary metafile.
The bits of an octet are numbered 7 to 0, with 7 being the most significant bit. The bits of a word are numbered 15
to 0, with 15 being the most significant bit.
b7 b0
+-+-+-+-+-+-+-+-+
octet: | |
+-+-+-+-+-+-+-+-+
msb lsb
b15 b8.b7 b0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
word: | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
msb lsb
In the preceding diagram, msb means most significant bit and lsb means least significant bit.
If the consecutive bits of the binary data structure are numbered 1.N, and the consecutive octets are numbered
1.N/8, and the consecutive words are numbered 1.N/16, then the logical correspondence of bits, octets, and
words in the binary data structure is as illustrated in the following table:
metafile octet word
bit bit bit
number number number
1 b7/octet1 b15/word1
.. .
.. .
8 b0/octet1 b8/word1
9 b7/octet2 b7/word1
.. .
.. .
16 b0/octet2 b0/word1
17 b7/octet3 b15/word2
.. .
.. .
24 b0/octet3 b8/word2
25 b7/octet4 b7/word2
.. .
.. .
© ISO/IEC 1999 – All rights reserved 3
5.4 Structure of the command header
Throughout this sub-clause, the term “command” is used to denote a binary-encoded element. Metafile elements
are represented in the Binary Encoding in one of two forms — short-form commands and long-form commands.
There are two differences between them:
— a short-form command always contains a complete element; the long-form command can accommodate
partial elements (the data lists of elements can be partitioned);
— a short-form command only accommodates parameter lists up to 30 octets in length; the long-form
command accommodates lengths up to 32767 octets per data partition.
The forms differ in the format of the Command Header that precedes the parameter list. The command form for an
element (short or long) is established by the first word of the element. For the short-form, the Command Header
consists of a single word divided into three fields: element class, element id and parameter list length.
15 14 13 12 11 1098765 43210
Word 1 element class element id parameter list length
Figure 1 — Format of a short-form Command Header
The fields in the short-form Command Header are as follows:
bits 15 to 12 element class (value range 0 to 15)
bits 11 to 5 element id (value range 0 to 127)
bits 4 to 0 parameter list length: the number of octets of parameter data that follow for this command
(value range 0 to 30)
This Command Header is then followed by the parameter list.
The first word of a long-form command is identical in structure to the first word of a short-form command. The
presence of the value 11111 binary (decimal 31) in the parameter list length field indicates that the command is a
long-form command.The Command Header for the long-form command consists of two words. The second word
contains the actual parameter list length. The two header words are then followed by the parameter list.
In addition to allowing longer parameter lists, the long-form command allows the parameter list to be partitioned.
Bit 15 of the second word indicates whether the given data complete the element or more data follow. For
subsequent data partitions of the element, the first word of the long-form Command Header (containing element
class and element id) is omitted; only the second word, containing the parameter list length, is given. The
parameter list length for each partition specifies the length of that partition, not the length of the complete element.
The final partition of an element is indicated by bit 15 of the parameter list length word being zero.
15 14 13 12 11 1098765 43210
Word1 elementclass elementid 1111 1
Word 2 P parameter list length
Figure 2 — Format of a long-form Command Header
4 © ISO/IEC 1999 – All rights reserved
The fields in the long-form Command Header are as follows:
Word 1
bits 15 to 12 element class (value range 0 to 15)
bits 11 to 5 element id (value range 0 to 127)
bits 4 to 0 binary value 11111 (decimal 31) indicating long-form
Word 2
bit 15 partition flag
— 0 for 'last' partition
— 1 for 'not-last' partition
bits 14 to 0 parameter list length: the number of octets of parameter data that follow for this command or
partition (value range 0 to 32767).
The parameter values follow the parameter list length for either the long-form or short-form commands. The
number of values is determined from the parameter list length and the type and precision of the operands. These
parameter values have the format illustrated in clause 5 of this part of ISO/IEC 8632. The parameter type for
coordinates is indicated in the Metafile Descriptor. For non-coordinate parameters, the parameter type is as
specified in clause 5 of ISO/IEC 8632-1. If the parameter type is encoding dependent, its code is specified in the
coding tables of clause 7 of this part. Unless otherwise stated, the order of parameters is as listed in clause 5 of
ISO/IEC 8632-1.
Every command is constrained to begin on a word boundary. This necessitates padding the command with a
single null octet at the end of the command if the command contains an odd number of octets of parameter data.
In addition, in elements with parameters whose precisions are shorter than one octet (i.e., those containing a 'local
colour precision’ parameter) it is necessary to pad the last data-containing octet with null bits if the data do not fill
the octet. In all cases, the parameter list length is the count of octets actually containing parameter data — it does
not include the padding octet if one is present. It is only at the end of a command that padding is performed, with
the single exception of the CELL ARRAY element.
The purpose of this command alignment constraint is to optimize processing on a wide class of computers. At the
default metafile precisions, the parameters which are expected to occur in greatest numbers (coordinates, etc) will
align on 16-bit boundaries, and Command Headers will align on 16-bit boundaries. Thus, at the default precisions
the most frequently parsed entities will lie entirely within machine words in a large number of computer designs.
The avoidance of assembling single metafile parameters from pieces of several computer words will approximately
halve the amount of processing required to recover element parameters and command header fields from a binary
metafile data stream.
This optimization may be compromised or destroyed altogether if the metafile precisions are changed from default.
Commands are still constrained to begin on 16-bit boundaries, but the most frequently expected parameters may
no longer align on such boundaries as they do at the default precisions.
The short form command header with element class 15, element id 127, and parameter list length 0 is reserved for
extension of the number of available element classes in future revisions of this part of ISO/IEC 8632. It should be
treated by interpreters as any other element, as far as parsing is concerned. The next “normal” element
encountered will have an actual class value different from that encountered in the “element class” field of the
command header — it will be adjusted by a bias as will be defined in a future revision of this part of ISO/IEC 8632.
© ISO/IEC 1999 – All rights reserved 5
6 Primitive data forms
The Binary Encoding of the CGM uses five primitive data forms to represent the various abstract data types used to
describe parameters in ISO/IEC 8632-1.
The primitive data forms and the symbols used to represent them are as follows.
SI Signed Integer
UI Unsigned Integer
C Character
FX Fixed Point Real
FP Floating Point Real
Each of these primitive forms (except Character) can be used in a number of precisions. The definitions of the
primitive data forms in 6.1 to 6.5 show the allowed precisions for each primitive data form. The definitions are in
terms of 'metafile words’ which are 16-bit units.
The following terms are used in the following diagrams when displaying the form of numeric values.
msb most significant bit
lsb least significant bit
Ssignbit
The data types in the following data diagrams are illustrated for the case that the parameter begins on a metafile
word boundary. In general, parameters may align on odd or even octet boundaries, because they may be
preceded by an odd or even number of octets of other parameter data. Elements containing the local colour
precision parameter may have parameters shorter than one octet. It is possible in such cases that the parameters
will not align on octet boundaries.
6.1 Signed integer
Signed integers are represented in “two’s complement” format. Four precisions may be specified for signed
integers: 8-bit, 16-bit, 24-bit and 32-bit. (Integer coordinate data encoded with this primitive data form do not use
the 8-bit precision.) In the diagrams of the following subsections, 'value’ indicates the value for positive integers
and the two’s complement of the value for negative integers.
6.1.1 Signed integer at 8-bit precision
Each value occupies half a metafile word (one octet).
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S msb value i lsb S msb value i+1 lsb
6.1.2 Signed integer at 16-bit precision
Each value occupies one metafile word.
15 14 13 12 11 10987 6 5 432 10
Smsb value lsb
6 © ISO/IEC 1999 – All rights reserved
6.1.3 Signed integer at 24-bit precision
Each value straddles two successive metafile words.
15 14 13 12 11 10 9 8 7 6 54321 0
Word 1 S msb value i
Word 2 value i lsb S msb value i+1
Word 3 value i+1 lsb
6.1.4 Signed integer at 32-bit precision
Each value fills two complete metafile words.
15 14 13 12 11 10 9 8 76543 210
Word 1 S msb value i
Word 2 value i lsb
6.2 Unsigned integer
Four precisions may be specified for unsigned integers: 8-bit, 16-bit, 24-bit and 32-bit.
6.2.1 Unsigned integers at 8-bit precision
Each value occupies half a metafile word.
15 14 13 12 11 109 8 7654321 0
msb value i lsb msb value i+1 lsb
6.2.2 Unsigned integers at 16-bit precision
Each value occupies one metafile word.
15 14 13 12 11 10 9 8 76543 210
msb value lsb
6.2.3 Unsigned integers at 24-bit precision
Each value straddles two successive metafile words.
15 14 13 12 11 10 987654 3210
Word 1 msb value i
Word 2 value i lsb msb value i+1
Word 3 value i+1 lsb
© ISO/IEC 1999 – All rights reserved 7
6.2.4 Unsigned integers at 32-bit precision
Each value fills two complete metafile words.
15 14 13 12 11 10 987654 3210
Word 1 msb value i
Word 2 value i lsb
6.3 Character
Each character is stored in 1 or more consecutive octets, depending upon the coding of the particular character set.
The following illustrates characters which are coded with 1 octet each.
15 14 13 12 11 10 9 876543 210
Character i Character i+1
6.4 Fixed point real
Fixed point real values are stored as two integers; the first represents the “whole part” and has the same form as a
Signed Integer (SI; see 6.1); the second represents the “fractional part” and has the same form as an Unsigned
Integer (UI; see 6.2). Two precisions may be specified for Fixed Point Reals: 32-bit or 64-bit.
6.4.1 Fixed point real at 32-bit precision
Each Fixed Point Real occupies 2 complete metafile words; the first has the form of a 16-bit Signed Integer and the
second the form of a 16-bit Unsigned Integer.
15 14 13 12 11 10 9 8765 4 3210
Word 1 S msb Whole part lsb
Word 2 msb Fraction part lsb
6.4.2 Fixed point real at 64-bit precision
Each Fixed Point Real occupies 4 complete metafile words; the first has the form of a 32-bit Signed Integer and the
second the form of a 32-bit Unsigned Integer.
15 14 13 12 11 10 9 8765 4 3210
Word 1 S msb whole part
Word 2 whole part lsb
Word 3 msb fraction part
Word 4 fraction part lsb
6.4.3 Value of fixed point reals
The values of the represented real numbers are given by:
�UI �
for 32 bits: real_value = SI +
� �
� �
8 © ISO/IEC 1999 – All rights reserved
UI
� �
for 64 bits: real_value = SI +
� 32 �
� �
SI stands for the “whole part” and UI stands for the “fractional part” in these equations. SI, the whole part, is the
largest integer less than or equal to the real number being represented.
6.5 Floating point
Floating Point Real values are represented in the floating point format of ANSI/IEEE 754. This format contains
three parts:
� a sign bit ('s');
� a biased exponent part ('e');
� afractionpart('f').
The value is a function of these three values ('s’, 'e’ and 'f’). If 's’ is '0’, the value is positive; if 's’ is '1’, the value is
negative. Two precisions may be specified for Floating Point Reals: 32-bit or 64-bit. The magnitude of the value is
calculated as follows for 32-bit representation.
a) If e = 255 and f� 0, then the value is undefined.
b) If e = 255 and f = 0, then the value is as large a positive (s=0) or negative (s=1) value as possible.
e�127
c) If 0 < e < 255, then the magnitude of the value is (1. f )(2 ) .
�126
d) If e = 0 and f� 0, then the magnitude of the value is (0. f )(2 ) .
e) If e = 0 and f = 0, then the value is 0.
The magnitude of the value is calculated as follows for 64-bit representation.
a) If e = 2047 and f� 0, then the value is undefined.
b) If e = 2047 and f = 0, then the value is as large a positive (s=0) or negative (s=1) value as possible.
e�1023
c) If 0 < e < 2047, then the magnitude of the value is (1. f )(2 ) .
�1022
d) If e = 0 and f� 0, then the magnitude of the value is (0. f )(2 ) .
e) If e = 0 and f = 0, then the value is 0.
6.5.1 Floating point real at 32-bit precision
Each Floating Point Real value occupies 2 metafile words. The size of each field in the value is as follows:
sign 1 bit
exponent 8 bits
fraction 23 bits
15 14 13 12 11 10 987654 3210
Word 1 S msb Exponent lsb msb Fraction
Word 2 Fraction lsb
© ISO/IEC 1999 – All rights reserved 9
6.5.2 Floating point real at 64-bit precision
Each Floating Point Real value occupies 4 metafile words. The size of each field in the value is as follows:
sign 1 bit
exponent 11 bits
fraction 52 bits
15 14 13 12 11 10 987654 3210
Word 1 S msb Exponent lsb msb
Word 2 Fraction
Word 3 Fraction
Word 4 Fraction lsb
7 Representation of abstract parameter types
Table 1 shows, for each of the abstract parameter types, how it is represented in the Binary Encoding of the CGM
in terms of primitive data forms. The columns of the table are as follows:
1) The symbol for the abstract parameter type, as it is specified in clause 5 of ISO/IEC 8632-1.
2) The way the parameter type is constructed in terms of the primitive data forms, at the appropriate
precisions. The precisions are those defined in clause 5 of ISO/IEC 8632-1.
3) The symbol for the number of octets required to represent one instance (occurrence) of the given
parameter, at the given precision, and the formula for computing the number.
4) The symbol for the range of values which the parameter can assume, followed by the numerical values
which the parameter can assume, followed by the numerical values which define the range.
The symbols of columns 3 and 4 are used extensively in the code tables in clause 7. Also used in the code tables
are variations on those symbols:
+IR, +RR, . denote the range of positive integers, range of positive reals, .
-IR, -RR, . denote the range of negative integers, range of negative reals, .
++IR, ++RR, . denote the range of non-negative integers, range of non-negative reals, .
mI, mR,. denotes 'm' integers, reals, .
I*, R*,. denotes an unbounded number of integers, reals, .
Combinations are used:
2R, 2I, IX*,. indicates a parameter that is represented by 2 reals, then a parameter that is represented by 2
integers and finally a parameter that contains an unlimited number of index values.
10 © ISO/IEC 1999 – All rights reserved
Table 1 — Representation of abstract data types
Abstract Parameter construction Octets per parameter: Parameter range: symbol and value
symbol from primitive forms symbol and value
cip
CI UI at colour index BCI {=cip/8} CIR {0.(2 -1)}
precision (cip)
CCO UI at direct colour BCCO {=dcp/8} CCOR
dcp
precision (dcp) {0.(2 -1)}
{see NOTE 2}
CD (CCO,CCO,CCO) BCD CCOR
or ={3*BCCO} {see NOTE 1, NOTE 16}
(CCO,CCO,CCO,CCO)
BCD
={4*BCCO}
ixp-1
IX SI at index BIX IXR {-2
precision (ixp) {=ixp/8} to
ixp-1
2 -1}
15 15
ESIatfixed BE {-2 to 2 -1}
precision (16-bit) {=2} {see NOTE 18}
{see NOTE 3}
ip-1
I SI at integer BI IR {-2
precision (ip) {=ip/8} to
ip-1
2 -1}
RFPorFXatreal BR {=sum(rp)/8} RR {=FPR or FXR,
precision (rp) {see NOTE 4} see NOTE 5, NOTE 10}
S,SF,D UI,nC BS SR
{see NOTE } {see NOTE 6, NOTE 12}
VDC SI at VDC integer BVDC VDCR
vip-1
precision (vip) {=vip/8} {-2 to
vip-1
2 -1}
or or or
VDCR
FP or FX at VDC real BVDC {=sum(vrp)/8} {see NOTE 1, NOTE 5, NOTE 7,
precision (vrp) {see NOTE 4} NOTE 8}
P (VDC,VDC) BP VDCR
{=2*BVDC} {see NOTE 1, NOTE 5, NOTE 7,
NOTE 8}
CO CI BCO {=BCI} COR {=CIR}
{see NOTE 9, NOTE 11}
or or or
CD BCO {=BCD} COR {=CCOR}
np-1
NSIatname BN NR {-2
precision (np) {=np/8} to
np-1
2 -1}
VC I BVC {=BI} VCR {=IR}
{see NOTE 13}
or or or
R BVC {=BR} VCR {=RR}
VP (VC,VC) BVP {=2*BVC} VCR
{see NOTE 1, NOTE 13, NOTE 14}
© ISO/IEC 1999 – All rights reserved 11
Table 1 — Representation of abstract data types (continued)
Abstract Parameter construction Octets per parameter: Parameter range: symbol and value
symbol from primitive forms symbol and value
BS nUI at fixed BBS BSR
precision (16-bit) {=2n} {see NOTE 15}
{see NOTE 15}
UI8 UIatfixed BUI8 {=1} UI8R
precision (8-bit) {0.255}
UI32 UI at fixed BUI32 {=4} UI32R
precision (32-bit) {0.2 -1}
SDR {see NOTE 17} BSDR n/a
SS VDC BSS {=BVDC} SSR {=VDCR}
{see NOTE 19}
or
or or
R BSS {=BR} SSR {=RR}
The following 19 notes contain additional normative specifications of this encoding:
NOTE 1 For parameters that are composed of multiple identical components (e.g., DIRECT COLOUR, CD, and
POINT, P) the range value represents the range of a single component.
NOTE 2 For colour models RGB and CMYK a direct colour component is abstractly a real in the range [0,1]. For colour
models CIELAB, CIELUV, and RGB-related it is abstractly a real in the respective colour spaces with possibly different
ranges for the direct colour components. The COLOUR VALUE EXTENT element provides for the mapping between a
direct colour component represented as UI and the corresponding real value.
NOTE 3 Abstract parameter type Enumeration, E, is encoded identically to abstract type Index, IX, at 16-bit precision.
NOTE 4 The REAL PRECISION element contains an indicator (fixed or floating point) and two precision components.
The symbol "sum(rp)" in the table indicates the sum of the number of bits specified in the two components. The same
considerations apply to the VDC REAL PRECISION element and the symbol "sum(vrp)" in the tables. The VDC REAL
PRECISION control element may cause ‘vrp’ to be updated in the body of metafile.
NOTE 5 FPR and VDCR (when VDC are floating point reals) are computed following the ANSI/IEEE 754 floating point
standard (see clause 6 on the floating point data form).
NOTE 6 The range for parameter types S and SF is not applicable. The range for character data is not applicable. A
string is encoded as a count (unsigned integer) followed by characters. The count is a count of octets in the string, not
whole character codes (the two are equal for single byte codes, but not for multi-byte codes).
The encoding of the count is similar to the encoding of length information for metafile commands themselves. If the
first octet is in the range 0.254, then it represents the character count for the complete string. If the first octet is 255,
then the next 16 bits contain the character count and a continuation flag. The first bit is used as a continuation flag
(allowing strings longer than 32767 characters) and the next 15 bits represent the count, 0.32767, for the partial string.
If the first bit is 0, then this partial string completes the string parameter. If 1, then this partial string will be followed by
another.
If the number of whole character codes in a string is n, and the number of octets per character code is constant within
the string and equal to m, and if the string is not continued (as a long-form string may be), then the number of octets in
the string parameter is either n·m+1 or n·m+3, depending upon whether the string is short-form or long-form,
respectively. If the number of octets per character code is not constant and/or the string is a continued long-form
string, then the number of octets is the string is not so easily expressed, but is the total of the octets used in the "data"
part of the string and the number of octets used for length information.
12 © ISO/IEC 1999 – All rights reserved
Table 1 — Representation of abstract data types (continued)
NOTE 7 The abstract parameter type VDC, a single VDC value, is either a real or an integer, depending on the
declaration of the Metafile Descriptor function VDC TYPE. Subsequent tables use a single set of symbols, VDC,
BVDC and VDCR, recognizing that they are computed differently depending on VDC TYPE.
NOTE 8 The abstract parameter type VDC is a single value; a point, P, is an ordered pair of VDC.
NOTE 9 The parameter type symbol CO corresponds to the data type CO of ISO/IEC 8632-1. It is either direct colour
(CD) or indexed colour (CI),
...








Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.
Loading comments...