/*
 * ENUM: SE_IMAGE_SIGNATURE_ENUM
 *
 *   Used in an <Image> object to indicate how texels are represented
 *   within the <Image>.
 */
typedef enum
{
SE_IMAGE_SIGNATURE_ALPHA, (notes)
SE_IMAGE_SIGNATURE_LUMINANCE, (notes)
SE_IMAGE_SIGNATURE_FIRST_COLOR_COORD, (notes)
SE_IMAGE_SIGNATURE_SECOND_COLOR_COORD, (notes)
SE_IMAGE_SIGNATURE_THIRD_COLOR_COORD, (notes)
SE_IMAGE_SIGNATURE_BUMP, (notes)
SE_IMAGE_SIGNATURE_EDCS_CLASSIFICATION_CODE = 7, (notes)
SE_IMAGE_SIGNATURE_LUMINANCE_AND_ALPHA = 11, (notes)
SE_IMAGE_SIGNATURE_123COLOR, (notes)
SE_IMAGE_SIGNATURE_123COLOR_ALPHA, (notes)
SE_IMAGE_SIGNATURE_1MATERIAL = 16, (notes)
SE_IMAGE_SIGNATURE_2MATERIALS, (notes)
SE_IMAGE_SIGNATURE_3MATERIALS, (notes)
SE_IMAGE_SIGNATURE_IMAGE_ID (notes)
} SE_IMAGE_SIGNATURE_ENUM;


Enumerator Notes

SE_IMAGE_SIGNATURE_ALPHA

 Used to indicate that each texel in the <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
     indicates that the texel constitutes part of the important
     content of the <Image>. An <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 compatible 123_COLOR <Image> to produce a 123COLOR_ALPHA map
 - compatible FIRST, SECOND, and THIRD_COLOR_COORD <Images> to
   produce a 123COLOR_ALPHA map.
 - a compatible LUMINANCE <Image> to produce a LUMINANCE_AND_ALPHA map.

 FURTHER CONSTRAINTS:
 1) bits_of_alpha must 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 must be zero.

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

SE_IMAGE_SIGNATURE_LUMINANCE

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

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

 An example of compositing LUMINANCE <Images> is the case of
 large areas of terrain <Polygons>, where the same textures for dirt
 are repeated over and over. To avoid creating a "quilt" effect on
 the terrain, a LUMINANCE <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:
 1) bits_of_luminance must 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) must be zero.

SE_IMAGE_SIGNATURE_FIRST_COLOR_COORD

 Used to indicate that each texel in the <Image> consists of 1 color
     component, namely the first for its color model (G for RGB, M
     for CMY, or S for HSV). The first color component of the color
     model must be the only value in the texel.

 Note that a FIRST_COLOR_COORD <Image> can be composited with compatible
 SECOND_COLOR_COORD and THIRD_COLOR_COORD <Images> of the same
 dimensions to produce a 123_COLOR <Image>. (These can also be composited
 with a compatible alpha map to produce a 123COLOR_ALPHA map.)

 FURTHER CONSTRAINTS:
 1) bits_of_first_color must equal the size per texel (in bits); all
    other bits_of_xxx fields (and their corresponding min_value_of_xxx,
    max_value_of_xxx) must be zero.

 2) When an object K has <Image Mapping Functions> providing K's texture
    mapping information, at most one of K's <Image Mapping Functions> can
    be associated with a FIRST_COLOR_COORD <Image>. (Multiple
    FIRST_COLOR_COORD <Images> produce an undefined result.)

 EXAMPLES:
 1) An RGB texel must have red as the texel value.

 2) An CMY texel must have cyan as the texel value.

 3) An HSV texel must have hue as the texel value.

SE_IMAGE_SIGNATURE_SECOND_COLOR_COORD

 Used to indicate that each texel in the <Image> consists of 1 color
     component, namely the second for its color model (G for RGB, M
     for CMY, or S for HSV). The second color component of the color
     model must be the only value in the texel.

 Note that a SECOND_COLOR_COORD <Image> can be composited with compatible
 FIRST_COLOR_COORD and THIRD_COLOR_COORD <Images> of the same
 dimensions to produce a 123_COLOR <Image>. (These can also be composited
 with a compatible alpha map to produce a 123COLOR_ALPHA map.)

 FURTHER CONSTRAINTS:
 1) bits_of_second_color must equal the size per texel (in bits); all
    other bits_of_xxx fields (and their corresponding min_value_of_xxx,
    max_value_of_xxx) must be zero.

 2) When an object K has <Image Mapping Functions> providing K's texture
    mapping information, at most one of K's <Image Mapping Functions> can
    be associated with a SECOND_COLOR_COORD <Image>. (Multiple
    SECOND_COLOR_COORD <Images> produce an undefined result.)

 EXAMPLES:
 1) An RGB texel must have green as the texel value.

 2) An CMY texel must have magenta as the texel value.

 3) An HSV texel must have saturation as the texel value.

SE_IMAGE_SIGNATURE_THIRD_COLOR_COORD

 Used to indicate that each texel in the <Image> consists of 1 color
     component, namely the third for its color model (B for RGB, Y
     for CMY, or V for HSV). The third color component of the color
     model must be the only value in the texel.

 Note that a THIRD_COLOR_COORD <Image> can be composited with compatible
 FIRST_COLOR_COORD and SECOND_COLOR_COORD <Images> of the same
 dimensions to produce a 123_COLOR <Image>. (These can also be composited
 with a compatible alpha map to produce a 123COLOR_ALPHA map.)

 FURTHER CONSTRAINTS:
 1) bits_of_third_color must equal the size per texel (in bits); all
    other bits_of_xxx fields (and their corresponding min_value_of_xxx,
    max_value_of_xxx) must be zero.

 2) When an object K has <Image Mapping Functions> providing K's texture
    mapping information, at most one of K's <Image Mapping Functions> can
    be associated with a THIRD_COLOR_COORD <Image>. (Multiple
    THIRD_COLOR_COORD <Images> produce an undefined result.)

 EXAMPLES:
 1) An RGB texel must have blue as the texel value.

 2) An CMY texel must have yellow as the texel value.

 3) An HSV texel must have brightness value as the texel value.

SE_IMAGE_SIGNATURE_BUMP

 Used to indicate that the <Image> represents a 2-D bump 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).

 Rather than manipulating the color 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:
 1) bits_of_bump must 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 must be zero.

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

SE_IMAGE_SIGNATURE_EDCS_CLASSIFICATION_CODE

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

 CONSTRAINTS:
 1) The size per texel must be the size of EDCS_CC_ID.

 2) 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) must be zero.

SE_IMAGE_SIGNATURE_LUMINANCE_AND_ALPHA

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

 FURTHER CONSTRAINTS:
 1) bits_of_luminance + bits_of_alpha must equal the size per texel (in
    bits); all other bits_of_xxx fields must be zero.

 2) When an object K has <Image Mapping Functions> providing its texture
    mapping information, at most one of K's <Image Mapping Functions> can
    legally provide a luminance & alpha map. (Multiple alpha maps produce
    an undefined result.)

SE_IMAGE_SIGNATURE_123COLOR

 Used to indicate that each texel in the <Image> consists of 3 color
     components (RGB, CMY, or HSV). The first color component of the
     color model must be the first value in the texel, the second color
     component of the color model must be the second value in the texel,
     and the third color component of the color model must be the third
     value in the texel. No other ordering is possible with this
     signature.

 Note that a 123COLOR <Image> can be down-sampled to produce a FIRST,
 SECOND, or THIRD_COLOR_COORD <Image>.

 FURTHER CONSTRAINTS:
 1) bits_of_first_color+bits_of_second_color+bits_of_third_color must
    equal the size per texel (in bits); all other bits_of_xxx fields
    (and their corresponding min_value_of_xxx, max_value_of_xxx) must
    be zero.

 2) When an object K has <Image Mapping Functions> providing K's texture
    mapping information, at most one of K's <Image Mapping Functions> can
    be associated with a 123 color map <Image>. (Multiple 123 color maps
    produce an undefined result.)

 EXAMPLES:
 1) An RGB texel must have red as the first value in the texel, green
    next and finally blue.

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

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

SE_IMAGE_SIGNATURE_123COLOR_ALPHA

 Used to indicate that each texel in the <Image> consists of 3 color
     components (RGB, CMY, or HSV) and an alpha value. The first color
     component of the color model must be the first value in the texel,
     the second color component of the color model must be the second
     value in the texel, the third color component of the color model
     must be the third value in the texel, and the alpha value must be
     the last value in the texel. No other ordering is possible with
     this signature.

 Note that a 123COLOR_ALPHA <Image> can be down-sampled to produce a
 FIRST_COLOR_COORD, SECOND_COLOR_COORD, THIRD_COLOR_COORD, and/or
 ALPHA <Image>.

 FURTHER CONSTRAINTS:
 1) bits_of_first_color+bits_of_second_color+bits_of_third_color+
    bits_of_alpha must equal the size per texel (in bits); all other
    bits_of_xxx fields (and their corresponding min_value_of_xxx,
    max_value_of_xxx) must be zero.

 2) When an object K has <Image Mapping Functions> providing K's texture
    mapping information, at most one of K's <Image Mapping Functions> can
    be associated with a 123 color & alpha map <Image>. (Multiple 123
    color & alpha maps produce an undefined result.)

 EXAMPLES:
 1) An RGBA texel must have red as the first value in the texel, green
    next, then blue, and finally alpha.

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

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

SE_IMAGE_SIGNATURE_1MATERIAL

 Used to indicate that each texel in the <Image> consists of 1 value,
     an index into the <Property Tables> referenced by this <Image>.
     These <Property Tables> describe the material. Normally, a
     <Property Table Reference> is used to find the corresponding
     <Property Table>'s data_table_type, which <Axis> is referred to, and
     which hash value measurement along that <Axis> is being referenced.
     The bits_of_material1 field is used in place of the <Property Table
     References>' index_on_axis fields.

 See the examples for the <Image> class.

 CONSTRAINTS:
 1) The <Image> must have at least one <Property Table Reference>.
    (The data producer may have as many <Property Table References>
    as desired, as long as there is at least one, and bits_of_material#
    will handle them.)

 2) All the <Property Tables> being referred to by the <Property Table
    References> must be of the same size, since the material reference
    corresponds to all of them.

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

SE_IMAGE_SIGNATURE_2MATERIALS

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

 See the examples for the <Image> class.

 CONSTRAINTS:
 1) The <Image> must have at least one <Property Table Reference>.
    (The data producer may have as many <Property Table References>
    as desired, as long as there is at least one, and bits_of_material#
    will handle them.)

 2) All the <Property Tables> being referred to by the <Property Table
    References> must be of the same size, since the material reference
    corresponds to all of them.

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

SE_IMAGE_SIGNATURE_3MATERIALS

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

 See the examples for the <Image> class.

 CONSTRAINTS:
 1) The <Image> must have at least one <Property Table Reference>.
    (The data producer may have as many <Property Table References>
    as desired, as long as there is at least one, and bits_of_material#
    will handle them.)

 2) All the <Property Tables> being referred to by the <Property Table
    References> must be of the same size, since the material reference
    corresponds to all of them.

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

SE_IMAGE_SIGNATURE_IMAGE_ID

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

 Each *texel* is to be replaced by the *entire <Image>* identified by the
 <Image> whose ID is specified by that texel. This allows data providers
 to put together a gigantic <Image> formed by many smaller <Images>.

 FURTHER CONSTRAINTS:
 1) bits_of_image_id must 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) must be zero.

 2) Each texel within the <Image> must resolve to a valid ID within the
    transmittal's <Image Library>, but neither directly or indirectly
    (via other IMAGE_ID <Images>) to the ID of this <Image>. (This
    would cause infinite recursion when trying to resolve the image to
    its component parts).

 3) All referenced <Images> must have the same values as the main <Image>
    for color_model, data_is_little_endian, data_is_3D,
    component_data_type, scan_direction, and scan_direction_z.

 4) All referenced <Images> must have either the same image signature X,
    or SE_IMAGE_SIGNATURE_IMAGE_ID which resolves to referenced images
    with signature X, so that the main <Image> can be resolved to a
    single image signature.
Prev: SE_IMAGE_SCAN_DIRECTION_Z_ENUM. Next: SE_IMAGE_WRAP_ENUM. Up:Index