2.3.2 Clipping Record Types
The Clipping record types define and manage clipping regions. The clipping regions used by clipping record types are part of the Regions state element (section 3.1.1.2.1) in the playback device context (section 3.1).
Note: The EMR_SETMETARGN record does not specify parameters.
The following are the clipping record types.
Name |
Section |
Description |
---|---|---|
EMR_EXCLUDECLIPRECT |
Specifies a clipping region that consists of the current clipping region minus the specified rectangle. |
|
EMR_EXTSELECTCLIPRGN |
Combines the specified region with the current clipping region, using the specified mode. |
|
EMR_INTERSECTCLIPRECT |
Specifies a clipping region from the intersection of the current clipping region and the specified rectangle. |
|
EMR_OFFSETCLIPRGN |
Specifies a clipping region as the current clipping region moved by a specified offset. |
|
EMR_SELECTCLIPPATH |
Specifies a clipping region as the current clipping region combined with the current path bracket, using the specified mode. |
|
EMR_SETMETARGN |
2.3.2 |
If the current metaregion is null, it is set to the current clipping region. Otherwise, the current metaregion is intersected with the current clipping region, and the result is the new metaregion. After the operation, the current clipping region is set to null. During playback, drawing occurs only within the intersection of the metaregion and clipping region. This EMF record specifies no parameters. |
The generic structure of clipping records is specified as follows.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type |
|||||||||||||||||||||||||||||||
Size |
|||||||||||||||||||||||||||||||
ClippingRecordBuffer (variable, optional) |
|||||||||||||||||||||||||||||||
... |
Type (4 bytes): An unsigned integer that defines the type of record. The clipping record types are listed in the following table. See the preceding table for descriptions of these record types.
-
Name
Value
EMR_OFFSETCLIPRGN
0x0000001A
EMR_SETMETARGN
0x0000001C
EMR_EXCLUDECLIPRECT
0x0000001D
EMR_INTERSECTCLIPRECT
0x0000001E
EMR_SELECTCLIPPATH
0x00000043
EMR_EXTSELECTCLIPRGN
0x0000004B
Size (4 bytes): An unsigned integer that specifies the size in bytes of this record in the metafile. This value MUST be a multiple of 4 bytes.
ClippingRecordBuffer (variable, optional): An array of bytes that contains the data for the clipping record. The size of this field is a multiple of 4 bytes.
-
The EMR_SETMETARGN record does not contain this field.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1ClippingRecordParm (variable)
...
AlignmentPadding (variable, optional)
...
-
ClippingRecordParm (variable): An array of bytes that contains the parameters for the clipping record.
-
AlignmentPadding (variable, optional): An array of up to 3 bytes that pads the record so that its total size is a multiple of 4 bytes. This field MUST be ignored.
See section 2.3 for more EMF record types.