2.2.2.2.1.1.2.3 PatBlt (PATBLT_ORDER)
The PatBlt Primary Drawing Order is used to paint a rectangle by using a specified brush and three-way raster operation.
-
Encoding order number: 1 (0x01) Negotiation order number: 1 (0x01) Number of fields: 12 Number of field encoding bytes: 2 Maximum encoded field length: 26 bytes
Note that the negotiation order number for the PatBlt Primary Drawing Order (0x01) is the same as that for the OpaqueRect Primary Drawing Order (section 2.2.2.2.1.1.2.5). Hence support for PatBlt implies support for OpaqueRect. The converse is also true.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nLeftRect (variable) |
nTopRect (variable) |
||||||||||||||||||||||||||||||
nWidth (variable) |
nHeight (variable) |
||||||||||||||||||||||||||||||
bRop (optional) |
BackColor (optional) |
||||||||||||||||||||||||||||||
ForeColor (optional) |
BrushOrgX (optional) |
||||||||||||||||||||||||||||||
BrushOrgY (optional) |
BrushStyle (optional) |
BrushHatch (optional) |
BrushExtra |
||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
... |
nLeftRect (variable): Left coordinate of the destination rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1).
nTopRect (variable): Top coordinate of the destination rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1).
nWidth (variable): Width of the destination rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1).
nHeight (variable): Height of the destination rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1).
bRop (1 byte): Index of the ternary raster operation to perform (see section 2.2.2.2.1.1.1.7).
BackColor (3 bytes): Background color described using a Generic Color (section 2.2.2.2.1.1.1.8) structure.
ForeColor (3 bytes): Foreground color described using a Generic Color (section 2.2.2.2.1.1.1.8) structure.
BrushOrgX (1 byte): An 8-bit, signed integer. The x-coordinate of the point where the top leftmost pixel of a brush pattern MUST be anchored.
BrushOrgY (1 byte): An 8-bit, signed integer. The y-coordinate of the point where the top leftmost pixel of a brush pattern MUST be anchored.
BrushStyle (1 byte): An 8-bit, unsigned integer. The style of the brush used in the drawing operation.
-
If the TS_CACHED_BRUSH (0x80) flag is set in the most significant bit of the BrushStyle field, a brush that was previously cached using the Cache Bitmap Secondary Order (see section 2.2.2.2.1.2.7) MUST be used. In this case, the BrushHatch field MUST contain the index of the Brush Cache entry that holds the selected brush to use, and the low nibble of the BrushStyle field MUST contain an identifier describing the color depth of the cached brush.
-
Value
Meaning
BMF_1BPP
0x1
1 bit per pixel
BMF_8BPP
0x3
8 bits per pixel
BMF_16BPP
0x4
15 or 16 bits per pixel
BMF_24BPP
0x5
24 bits per pixel
BMF_32BPP
0x6
32 bits per pixel
-
If the TS_CACHED_BRUSH (0x80) flag is not set in the most significant bit of the BrushStyle field, an 8-by-8-pixel brush MUST be used, and one of the following style identifiers MUST be present in the field.
-
Value
Meaning
BS_SOLID
0x00
Solid color brush. The BrushHatch field SHOULD be set to 0.
BS_NULL
0x01
Hollow brush. The BrushHatch field SHOULD be set to 0.
BS_HATCHED
0x02
Hatched brush. The hatch pattern MUST be described by the BrushHatch field (there are six possible hatch patterns).
BS_PATTERN
0x03
Pattern brush. The pixel pattern MUST be described by the BrushExtra and BrushHatch fields.
BrushHatch (1 byte): An 8-bit, unsigned integer. Holds a brush hatch identifier or a Brush Cache index, depending on the contents of the BrushStyle field.
-
If the TS_CACHED_BRUSH (0x80) flag is set in the most significant bit of the BrushStyle field, the BrushHatch value MUST contain the index of the Brush Cache entry that holds the selected brush to use.
-
If the BrushStyle field is set to BS_SOLID (0x00) or BS_NULL (0x01), the BrushHatch field SHOULD be set to 0.
-
If the BrushStyle field is set to BS_HATCHED (0x02), the BrushHatch field MUST contain one of the following hatch constants.
-
Value
Meaning
HS_HORIZONTAL
0x00
Horizontal hatching as in the following figure.
Figure 2: Horizontal hatch
HS_VERTICAL
0x01
Vertical hatching as in the following figure.
Figure 3: Vertical hatch
HS_FDIAGONAL
0x02
Diagonal hatching as in the following figure.
Figure 4: 45-degree downward, left-to-right hatch
HS_BDIAGONAL
0x03
Diagonal hatching as in the following figure.
Figure 5: 45-degree upward, left-to-right hatch
HS_CROSS
0x04
Cross-hatching as in the following figure.
Figure 6: Horizontal and vertical cross-hatch
HS_DIAGCROSS
0x05
Cross-hatching as in the following figure.
Figure 7: 45-degree cross-hatch
-
If the BrushStyle field is set to BS_PATTERN (0x03), the BrushHatch field MUST encode the pixel pattern present in the bottom row of the 8x8 pattern brush (the pixel patterns in the top seven rows MUST be encoded in the BrushExtra field). For example, if the bottom row of the pattern brush contains an alternating series of black and white pixels, BrushHatch will contain either 0xAA or 0x55.
BrushExtra (7 bytes): A byte array of length 7. BrushExtra contains an array of bitmap bits that encodes the pixel pattern present in the top seven rows of the 8x8 pattern brush. The pixel pattern present in the bottom row is encoded in the BrushHatch field. The BrushExtra field is only present if the BrushStyle is set to BS_PATTERN (0x03). The rows are encoded in reverse order, that is, the pixels in the penultimate row are encoded in the first byte, and the pixels in the top row are encoded in the seventh byte. For example, a 45-degree downward sloping left-to-right line would be encoded in BrushExtra as { 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 } with BrushHatch containing the value 0x01 (the bottom row).