blob: 47712ed42c1b970983268a4c1dad25c155e35af6 [file] [log] [blame]
Name
EXT_cmyka
Name Strings
GL_EXT_cmyka
Version
$Date: 1997/02/26 03:36:26 $ $Revision: 1.17 $
Number
18
Dependencies
EXT_abgr affects the definition of this extension
EXT_texture3D affects the definition of this extension
EXT_subtexture affects the definition of this extension
EXT_histogram affects the definition of this extension
EXT_convolution affects the definition of this extension
SGI_color_table affects the definition of this extension
SGIS_texture4D affects the definition of this extension
Overview
This extension provides a simple method for OpenGL to read and store
images whose pixels have CMYK or CMYKA formats. The algorithms used to
convert to RGBA from CMYKA and to convert back from RGBA to CMYKA are of
the "black-box" nature, meaning that the application has little control
over how the conversion is done. Also, this black-box mechanism is
available only for transfers to or from memory, not for internal copies
of pixel data (such as invoked by CopyPixels, CopyTexImage1D, etc.)
However, the defined mechanism nicely handles 5-component CMYKA images,
and it is very easy to use.
A more configurable and potentially higher quality color conversion can
be implemented using the color tables, the color matrix, and possibly 3D
and 4D texture lookup. Such a color conversion also applies to copied
pixel data.
New Procedures and Functions
None
New Tokens
Accepted by the <format> parameter of DrawPixels, ReadPixels,
TexImage1D, TexImage2D, TexImage3DEXT, TexImage4DSGIS, TexSubImage1DEXT,
TexSubImage2DEXT, TexSubImage3DEXT, TexSubImage4DSGIS, GetTexImage,
ColorTableSGI, GetColorTableSGI, ConvolutionFilter1DEXT,
ConvolutionFilter2DEXT, ConvolutionFilter3DEXT, GetConvolutionFilterEXT,
SeparableFilter2DEXT, SeparableFilter3DEXT, GetSeparableFilterEXT,
GetHistogramEXT, and GetMinmaxEXT:
CMYK_EXT 0x800C
CMYKA_EXT 0x800D
Accepted by the <target> parameter of Hint, and by the <pname>
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev:
PACK_CMYK_HINT_EXT 0x800E
UNPACK_CMYK_HINT_EXT 0x800F
Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.0 Specification (Rasterization)
Two entries are added to table 3.5 (DrawPixels and ReadPixels formats).
The new table is:
Target
Name Type Elements Buffer
---- ---- -------- ------
COLOR_INDEX Index Color Index Color
STENCIL_INDEX Index Stencil value Stencil
DEPTH_COMPONENT Component Depth value Depth
RED Component R Color
GREEN Component G Color
BLUE Component B Color
ALPHA Component A Color
RGB Component R, G, B Color
RGBA Component R, G, B, A Color
LUMINANCE Component Luminance value Color
LUMINANCE_ALPHA Component Luminance value, A Color
ABGR_EXT Component A, B, G, R Color
CMYK_EXT Component Cyan value, Color
Magenta value,
Yellow value,
Black value
CMYKA_EXT Component Cyan value, Color
Magenta value,
Yellow value,
Black value, A
Table 3.5: DrawPixels and ReadPixels formats. The third column
gives a description of and the number and order of elements in a
group.
The new formats CMYK_EXT and CMYKA_EXT are added to the discussion of
Conversion to RGB. If the format is either of these two values, then
the cyan, magenta, yellow, and black values in each group are converted
to R, G, and B values using an undefined algorithm. The value of
UNPACK_CMYK_HINT_EXT determines whether the implementation uses its
fastest, nicest, or favorite algorithm to accomplish this conversion.
The unpacking conversion hint is specified by calling Hint with
parameter <target> set to UNPACK_CMYK_HINT_EXT, and parameter <mode> set
to FASTEST, NICEST, or DONT_CARE. If the format is CMYKA_EXT, the alpha
value is copied directly to A.
Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
and the Framebuffer)
The new formats are added to the discussion of Obtaining Pixels from the
Framebuffer. It should read "If the <format> is LUMINANCE,
LUMINANCE_ALPHA, CMYK_EXT, or CMYKA_EXT, then R, G, B, and A values are
obtained. If the <format> is one of RED, GREEN, BLUE, ALPHA, RGB, RGBA,
ABGR_EXT, LUMINANCE, LUMINANCE_ALPHA, CMYK_EXT, or CMYKA_EXT, and the GL
is in color index mode, then the color index is obtained."
The new formats are added to the discussion of Index Lookup. It should
read "If <format> is one of RED, GREEN, BLUE, ALPHA, RGB, RGBA,
ABGR_EXT, LUMINANCE, LUMINANCE_ALPHA, CMYK_EXT, or CMYKA_EXT, then the
index is used to reference 4 tables of color components:
PIXEL_MAP_I_TO_R, PIXEL_MAP_I_TO_G, PIXEL_MAP_I_TO_B, and
PIXEL_MAP_I_TO_A."
A new section, "Conversion to CMYK," is added immediately following the
section "Conversion to L." It reads:
This step applies only to RGBA component groups, and only if the
<format> is either CMYK_EXT or CMYKA_EXT. Values for cyan, magenta,
yellow, and black are computed from the R, G, and B values of the
pixel group using an undefined algorithm. These cyan, magenta,
yellow, and black values replace the R, G, and B values in the
group. The value of PACK_CMYK_HINT_EXT determines whether the
implementation uses its fastest, nicest, or favorite algorithm to
accomplish this conversion. The packing conversion hint is
specified by calling Hint with parameter <target> set to
PACK_CMYK_HINT_EXT, and parameter <mode> set to FASTEST, NICEST, or
DONT_CARE.
Additions to Chapter 5 of the 1.0 Specification (Special Functions)
None
Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
Although PACK_CMYK_HINT_EXT and UNPACK_CMYK_HINT_EXT are modified using
the Hint interface, they are not included in the hint attribute set.
Rather, they are part of pixel storage state, meaning that they are not
pushed and popped by PushAttributes and PopAttributes, and that they are
client state rather than server state. Also, like all other pixel
storage parameters, the CMYK hint modes in effect when a pixel command
(such as DrawPixels) is placed in a display list control the
interpretation of memory data. The CMYK hints in effect when a display
list is executed are not significant.
Additions to the GLX Specification
None
GLX Protocol
None
Dependencies on EXT_abgr
If EXT_abgr is not implemented, then references to ABGR_EXT in this
specification are void.
Dependencies on EXT_texture3D
If EXT_texture3D is not implemented, then references to TexImage3DEXT,
TexSubImage3DEXT, ConvolutionFilter3DEXT, and SeparableFilter3DEXT in
this specification are void.
Dependencies on EXT_subtexture
If EXT_subtexture is not implemented, then references to
TexSubImage1DEXT, TexSubImage2DEXT, TexSubImage3DEXT, and
TexSubImage4DSGIS in this specification are void.
Dependencies on EXT_histogram
If EXT_histogram is not implemented, then references to GetHistogramEXT
and GetMinmaxEXT in this extension are void.
Dependencies on EXT_convolution
If EXT_convolution is not implemented, then references to
ConvolutionFilter1DEXT, ConvolutionFilter2DEXT, ConvolutionFilter3DEXT,
GetConvolutionFilterEXT, SeparableFilter2DEXT, SeparableFilter3DEXT, and
GetSeparableFilterEXT in this extension are void.
Dependencies on SGI_color_table
If SGI_color_table is not implemented, then references to ColorTableSGI
and GetColorTableSGI in this extension are void.
Dependencies on SGIS_texture4D
If SGIS_texture4D is not implemented, then references to TexImage4DSGIS
and TexSubImage4DSGIS in this extension are void.
Errors
None
New State
Get Value Get Command Type Initial Value Attrib
--------- ----------- ---- ------------- ------
PACK_CMYK_HINT_EXT GetIntegerv Z3 DONT_CARE client
UNPACK_CMYK_HINT_EXT GetIntegerv Z3 DONT_CARE client
New Implementation Dependent State
None