2.2.2 ColorAdjustment Object

The ColorAdjustment object defines values for adjusting the colors in source bitmaps in bit-block transfers.<42>


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Size

Values

IlluminantIndex

RedGamma

GreenGamma

BlueGamma

ReferenceBlack

ReferenceWhite

Contrast

Brightness

Colorfulness

RedGreenTint

Size (2 bytes): An unsigned integer that specifies the size in bytes of this object. This value is 0x0018.

Values (2 bytes): An unsigned integer that specifies how to prepare the output image. This field can be set to NULL or to any combination of values in the ColorAdjustment enumeration (section 2.1.5).

IlluminantIndex (2 bytes): An unsigned integer that specifies the type of standard light source under which the image is viewed, from the Illuminant enumeration (section 2.1.19).

RedGamma (2 bytes): An unsigned integer that specifies the nth power gamma correction value for the red primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000.<43> A value of 10,000 means gamma correction MUST NOT be performed.

GreenGamma (2 bytes): An unsigned integer that specifies the nth power gamma correction value for the green primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000. A value of 10,000 means gamma correction MUST NOT be performed.

BlueGamma (2 bytes): An unsigned integer that specifies the nth power gamma correction value for the blue primary of the source colors. This value SHOULD be in the range from 2,500 to 65,000. A value of 10,000 means gamma correction MUST NOT be performed.

ReferenceBlack (2 bytes): An unsigned integer that specifies the black reference for the source colors. Any colors that are darker than this are treated as black. This value SHOULD be in the range from zero to 4,000.

ReferenceWhite (2 bytes): An unsigned integer that specifies the white reference for the source colors. Any colors that are lighter than this are treated as white. This value SHOULD be in the range from 6,000 to 10,000.

Contrast (2 bytes): A signed integer that specifies the amount of contrast to be applied to the source object. This value SHOULD be in the range from –100 to 100. A value of zero means contrast adjustment MUST NOT be performed.

Brightness (2 bytes): A signed integer that specifies the amount of brightness to be applied to the source object. This value SHOULD be in the range from –100 to 100. A value of zero means brightness adjustment MUST NOT be performed.

Colorfulness (2 bytes): A signed integer that specifies the amount of colorfulness to be applied to the source object. This value SHOULD be in the range from –100 to 100. A value of zero means colorfulness adjustment MUST NOT be performed.

RedGreenTint (2 bytes): A signed integer that specifies the amount of red or green tint adjustment to be applied to the source object. This value SHOULD be in the range from –100 to 100. Positive numbers adjust towards red and negative numbers adjust towards green. A value of zero means tint adjustment MUST NOT be performed.

The ColorAdjustment object is used in bit-block transfers performed by EMR_STRETCHBLT and EMR_STRETCHDIBITS records when the StretchMode enumeration (section 2.1.32) value is STRETCH_HALFTONE. The color adjustment values can apply a color filter or lighten or darken an image.

An EMR_SETCOLORADJUSTMENT record (section 2.3.11.13) sets the current ColorAdjustment object in the playback device context. That ColorAdjustment object affects all subsequent EMR_STRETCHBLT and EMR_STRETCHDIBITS records until a different ColorAdjustment object is specified by another EMR_SETCOLORADJUSTMENT record, or until the object is removed by a EMR_DELETEOBJECT record.