*** Brush mask and MIX parameter If a masked brush is used in an operation involving a MIX parameter (i.e. DrvTextOut, DrvPaint, DrvStrokePath, DrvFillPath, and DrvStrokeAndFillPath), then the brush and the MIX parameter must meet the following criteria: + The brush pattern must be a 1BPP bitmap and must be the same as the mask bitmap. + Foreground and background ROP2 must be the same, or the background ROP2 must be R2_NOP (i.e. transparent background). These conditions are true under current GDI implementation. If somehow this were to be changed later, please review the code and redo DrvRealizeBrush and SelectMix. *** 32-bit coordinates Path operators should be able to take 32-bit coordinates (as well as 16-bit and 8-bit coordinates). *** Coordinate transformation NT DDI uses XFORMOBJ to pass general 2-D transformations to the driver. XL should have an operator which takes a 2-D transformation matrix (in addition to individual operators for setting scale, shear, and angle). This applies to both page and character transformation. *** Geometric wide line What's the behavior of XL given the following sequence? Define a path Set pen width and dash Save graphics state Change CTM (e.g. scale up 5x10) Stroke the path Restore graphics state NT DDI has a thing called geometric wide line. In order to support it properly, the expected behavior should be: 1. Line width and line dash are transformed 2. But the path itself is not transformed As an example, please send the following piece of PostScript code to a printer and observe the output. %!PS 100 100 translate 0 0 moveto 100 0 rlineto 0 100 rlineto -100 0 rlineto closepath 1 setlinewidth [1 1] 0 setdash gsave 5 10 scale stroke grestore showpage *** Support for ROP4? A few NT DDI interface functions use ROP4 and MIX parameters. ROP4 is used by DrvBitBlt when a 1-bpp mask bitmap is provided. You can think of a ROP4 as two separate ROP3's. One of the ROP3 is used anywhere the mask bitmap is 1. The other ROP3 is used anywhere the mask bitmap is 0. MIX parameter describes the foreground and background mix mode for a brush. It consists of two ROP2's - for brush foreground and background respectively. *** Updated documentation Newer version XL spec. What's a good reference on font and text?