2.3.1.5 EMR_SETDIBITSTODEVICE Record

The EMR_SETDIBITSTODEVICE record specifies a block transfer of pixels from specified scanlines of a source bitmap to a destination rectangle.

Fields not specified in this section are specified in section 2.3.1.


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

Type

Size

Bounds

...

...

...

xDest

yDest

xSrc

ySrc

cxSrc

cySrc

offBmiSrc

cbBmiSrc

offBitsSrc

cbBitsSrc

UsageSrc

iStartScan

cScans

BitmapBuffer (variable)

...

Type (4 bytes): An unsigned integer that identifies this record type as EMR_SETDIBITSTODEVICE. This value is 0x00000050.

Bounds (16 bytes): A RectL object ([MS-WMF] section 2.2.2.19) that specifies the destination bounding rectangle in logical coordinates. If the intersection of this rectangle with the current clipping regions (section 3.1.1.2.1) in the playback device context (section 3.1) is empty, this record has no effect.

xDest (4 bytes): A signed integer that specifies the logical x-coordinate of the upper-left corner of the destination rectangle.

yDest (4 bytes): A signed integer that specifies the logical y-coordinate of the upper-left corner of the destination rectangle.

xSrc (4 bytes): A signed integer that specifies the x-coordinate in pixels of the lower-left corner of the source rectangle.

ySrc (4 bytes): A signed integer that specifies the y-coordinate in pixels of the lower-left corner of the source rectangle.

cxSrc (4 bytes): A signed integer that specifies the width in pixels of the source rectangle.

cySrc (4 bytes): A signed integer that specifies the height in pixels of the source rectangle.

offBmiSrc (4 bytes): An unsigned integer that specifies the offset in bytes, from the start of this record to the source bitmap header in the BitmapBuffer field.

cbBmiSrc (4 bytes): An unsigned integer that specifies the size in bytes, of the source bitmap header.

offBitsSrc (4 bytes): An unsigned integer that specifies the offset in bytes, from the start of this record to the source bitmap bits in the BitmapBuffer field.

cbBitsSrc (4 bytes): An unsigned integer that specifies the size in bytes, of the source bitmap bits.

UsageSrc (4 bytes): An unsigned integer that specifies how to interpret values in the color table in the source bitmap header. This value is in the DIBColors enumeration (section 2.1.9).

iStartScan (4 bytes): An unsigned integer that specifies the first scan line in the array.

cScans (4 bytes): An unsigned integer that specifies the number of scan lines.

BitmapBuffer (variable): A buffer containing the source bitmap, which is not required to be contiguous with the fixed portion of the EMR_SETDIBITSTODEVICE record. Thus, fields in this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.


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

UndefinedSpace1 (variable, optional)

...

BmiSrc (variable)

...

UndefinedSpace2 (variable, optional)

...

BitsSrc (variable)

...

BmiSrc (variable): The source bitmap header.

BitsSrc (variable): The source bitmap bits.

This record supports source images in JPEG and PNG format. The Compression field in the source bitmap header specifies the image format.

See section 2.3.1 for more bitmap record types.