2.1.16 GraphicsMode Enumeration
The GraphicsMode enumeration is used to specify how to interpret shape data such as rectangle coordinates.
-
typedef enum { GM_COMPATIBLE = 0x00000001, GM_ADVANCED = 0x00000002 } GraphicsMode;
GM_COMPATIBLE: TrueType text MUST be written from left to right and right side up, even if the rest of the graphics are rotated about the x-axis or y-axis because of the current world-to-device transform. Only the height of the text SHOULD be scaled.<30>
-
Arcs MUST be drawn using the current arc direction, but they MUST NOT reflect the current world-to-device transform, which might require a rotation along the x-axis or y-axis.
-
The world-to-device transform is modified by changing the window and viewport extents and origins, using the EMR_SETWINDOWEXTEX (section 2.3.11.30) and EMR_SETVIEWPORTEXTEX (section 2.3.11.28) records, and the EMR_SETWINDOWORGEX (section 2.3.11.31) and EMR_SETVIEWPORTORGEX (section 2.3.11.29) records, respectively.
-
The world-to-device transform can be changed by EMR_MODIFYWORLDTRANSFORM (section 2.3.12.1) and EMR_SETWORLDTRANSFORM (section 2.3.12.2) records.
-
In GM_COMPATIBLE graphics mode, bottom and rightmost edges MUST be excluded when rectangles are drawn.
GM_ADVANCED: TrueType text output SHOULD<31> fully conform to the current world-to-device transform.
-
Arcs MUST be drawn in the counterclockwise direction in world space; however, both arc control points and the arcs themselves MUST reflect the current world-to-device transform.
-
The world-to-device transform can be modified directly by EMR_MODIFYWORLDTRANSFORM and EMR_SETWORLDTRANSFORM records, or indirectly by changing the window and viewport extents and origins, using the EMR_SETWINDOWEXTEX and EMR_SETVIEWPORTEXTEX records, and the EMR_SETWINDOWORGEX and EMR_SETVIEWPORTORGEX records, respectively.
-
In GM_ADVANCED graphics mode, bottom and rightmost edges MUST be included when rectangles are drawn.