-- Module Colour-Attributes (T.415:03/1993)
-- See also ITU-T T.415 (03/1993)
-- See also the index of all ASN.1 assignments needed in this document

Colour-Attributes {2 8 1 5 14} DEFINITIONS ::=
BEGIN

EXPORTS
  Colour-Expression, Colour-Table, Colour-Spaces-List, Colour-Characteristics;

IMPORTS Character-Data
          FROM Document-Profile-Descriptor; --  see 7.7 

Real-Or-Int ::= CHOICE {a  REAL,
                        b  INTEGER
}

Colour-Expression ::= SEQUENCE {
  colour-access-mode  [0] IMPLICIT INTEGER {direct(0), indexed(1)},
  a
    [1]  CHOICE {direct-colour   [0] IMPLICIT Direct-Colour,
                 indexed-colour  [1] IMPLICIT Indexed-Colour}
}

Direct-Colour ::= SET {
  colour-space-id       [0] IMPLICIT INTEGER OPTIONAL,
  colour-specification  [1]  Colour-Specification OPTIONAL,
  colour-tolerance      [2]  Colour-Tolerance OPTIONAL
}

Colour-Specification ::= CHOICE {
  cmyk-colour  [0] IMPLICIT CMYK-Colour,
  rgb-colour   [1] IMPLICIT RGB-Colour,
  cie-colour   [2] IMPLICIT CIE-Colour
}

CMYK-Colour ::= SET {
  c-value  [0]  Real-Or-Int,
  m-value  [1]  Real-Or-Int,
  y-value  [2]  Real-Or-Int,
  k-value  [3]  Real-Or-Int OPTIONAL
}

RGB-Colour ::= SET {
  r-value  [0]  Real-Or-Int,
  g-value  [1]  Real-Or-Int,
  b-value  [2]  Real-Or-Int
}

CIE-Colour ::= SET {
  x-value  [0]  Real-Or-Int,
  y-value  [1]  Real-Or-Int,
  z-value  [2]  Real-Or-Int
}

Colour-Tolerance ::= CHOICE {
  unspecified-tolerance  [0] IMPLICIT NULL,
  specified-tolerance    [1] IMPLICIT Specified-Tolerance
}

Specified-Tolerance ::= SET {
  tolerance-value  [0]  Real-Or-Int,
  tolerance-space  [1] IMPLICIT INTEGER {cieluv(3), cielab(4)}
}

Indexed-Colour ::= SET {index  [0] IMPLICIT INTEGER OPTIONAL
}

Colour-Table ::= SET {
  colour-space-id       [0] IMPLICIT INTEGER,
  colour-table-entries
    [1] IMPLICIT SET OF
                   SET {index               [0] IMPLICIT INTEGER,
                        colour-coordinates  [1]  Colour-Specification,
                        colour-tolerance    [2]  Colour-Tolerance OPTIONAL
                   }
}

Colour-Characteristics ::= SET {
  colour-spaces-present
    [0] IMPLICIT SEQUENCE OF
                   SET {colour-space-type        [0] IMPLICIT Colour-Space-Type,
                        colour-calibration-type
                          [1] IMPLICIT Colour-Space-Calibration-Type},
  colour-modes-present         [1] IMPLICIT Colour-Modes-Present,
  minimum-colour-tolerance     [2]  Colour-Tolerance OPTIONAL,
  maximum-colour-table-length  [3] IMPLICIT INTEGER OPTIONAL,
  -- "maximum number of colour table entries" 
  maximum-rgb-lut-length       [4] IMPLICIT INTEGER OPTIONAL,
  -- "maximum number of look-up table entries" 
  maximum-cmy-k-grid-size      [5] IMPLICIT INTEGER OPTIONAL
}

Colour-Space-Type ::= INTEGER {rgb(0), cmyk(1), cmy(2), cieluv(3), cielab(4)}

Colour-Space-Calibration-Type ::= INTEGER {
  no-calibration(0), matrices(1), lookup-tables(2),
  matrices-and-lookup-tables(3)}

Colour-Modes-Present ::= INTEGER {direct(0), indexed(1), both(2)}

Colour-Spaces-List ::= SET OF Colour-Space

Colour-Space ::= SET {
  colour-space-id      [0] IMPLICIT INTEGER,
  colour-space-type    [1] IMPLICIT Colour-Space-Type,
  colour-space-name    [2] IMPLICIT Character-Data OPTIONAL,
  colour-data-scaling  [3]  Colour-Data-Scaling OPTIONAL,
  calibration-data     [4]  Calibration-Data OPTIONAL
}

Colour-Data-Scaling ::= SET {
  first-component   [0] IMPLICIT Scale-And-Offset,
  second-component  [1] IMPLICIT Scale-And-Offset,
  third-component   [2] IMPLICIT Scale-And-Offset,
  fourth-component  [3] IMPLICIT Scale-And-Offset OPTIONAL
}

Scale-And-Offset ::= SET {
  colour-scale   [0]  Real-Or-Int,
  colour-offset  [1]  Real-Or-Int
}

Calibration-Data ::= CHOICE {
  rgb     [0] IMPLICIT RGB-Calibration,
  cmyk    [1] IMPLICIT CMY-K-Calibration,
  cmy     [2] IMPLICIT CMY-K-Calibration,
  cieluv  [3] IMPLICIT CIE-Calibration,
  cielab  [4] IMPLICIT CIE-Calibration
}

CIE-Calibration ::= SET {reference-white  [0] IMPLICIT CIE-Ref
}

RGB-Calibration ::= SET {
  reference-white  [0] IMPLICIT CIE-Ref,
  matrix1          [1] IMPLICIT Three-by-Three-Matrix OPTIONAL,
  lookup-table     [3] IMPLICIT Colour-Lookup-Table OPTIONAL,
  matrix2          [2] IMPLICIT Three-by-Three-Matrix OPTIONAL
}

Three-by-Three-Matrix ::= SEQUENCE {
  row-1  Three-Nums,
  row-2  Three-Nums,
  row-3  Three-Nums
}

Three-Nums ::= SEQUENCE {
  column-1  Real-Or-Int,
  column-2  Real-Or-Int,
  column-3  Real-Or-Int
}

Colour-Lookup-Table ::= SET {
  number-of-entries  [0] IMPLICIT INTEGER,
  m                  [1] IMPLICIT INTEGER,
  n                  [2] IMPLICIT INTEGER,
  colour-table       [3] IMPLICIT SET OF Colour-Table-Entry
}

Colour-Table-Entry ::= SET {
  index  [3] IMPLICIT INTEGER,
  r      [0]  Real-Or-Int,
  g      [1]  Real-Or-Int,
  b      [2]  Real-Or-Int
}

CMY-K-Calibration ::= SET {
  reference-white  [0] IMPLICIT CIE-Ref,
  comment          [1] IMPLICIT Character-Data OPTIONAL,
  cmyk-lut         [2] IMPLICIT Grid-Specification
}

Grid-Specification ::=
  SET OF
    SET {grid-location  [0] IMPLICIT CMYK-Colour,
         grid-value     [1] IMPLICIT Grid-Value}

Grid-Value ::= SET {
  x-value  [0] IMPLICIT REAL,
  y-value  [1] IMPLICIT REAL,
  z-value  [2] IMPLICIT REAL
}

CIE-Ref ::= SET {
  xn-value  [0]  Real-Or-Int,
  yn-value  [1]  Real-Or-Int,
  zn-value  [2]  Real-Or-Int
}

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D