Techwiki:Win32k/DCLEVEL

From ReactOS Wiki
Jump to: navigation, search

DCLEVEL from Windows XP.

size is 440(0x1B8) bytes

typedef struct
{                                       W2k WXP
  HPALETTE          hpal;            // 000 000
  PPALETTE          ppal;            //     004
  COLORSPACE *      pColorSpace;     //     008
  LONG              lIcmMode;        //     00c
  LONG              lSaveDepth;      //     010
  LONG              lSaveDepthStartDoc; //  014
  HDC               hdcSave;         //     018
  POINTL            ptlBrushOrigin;  //     01c
  PBRUSH            pbrFill;         //     024
  PBRUSH            pbrLine;         //     028
  LFONTOBJ *        pFont;           //     02c
  HGDIOBJ           hpath;           //     030
  FLONG             flPath;          //     034  PathFlags
  LINEATTRS         lapath;          //     038  0x20 bytes
  PREGION           prgnClip;        //     058
  PREGION           prgnMeta;        //     05c
  COLORADJUSTMENT   ca;              //     060  0x18 bytes
  FLONG             flFontState;     //     078
  UNIVERSAL_FONT_ID ufi;             //     07c
  UNIVERSAL_FONT_ID ufiLoc[4];       //     084  Local List.
  UNIVERSAL_FONT_ID *pUFI;           //     094
  ULONG             uNumUFIs;        //     098
  BOOL              ufiSet;          //     09C
  FLONG             fl;              //     0b0
  FLONG             flbrush;         //     0b4
  MATRIX            mxWorldToDevice; //     0b8
  MATRIX            mxDeviceToWorld; //     0f4
  MATRIX            mxWorldToPage;   //     130
  EFLOATOBJ         efM11PtoD;       //     16c
  EFLOATOBJ         efM22PtoD;       //     174
  EFLOATOBJ         efDxPtoD;        //     17c
  EFLOATOBJ         efDyPtoD;        //     184
  EFLOATOBJ         efM11_TWIPS;     //     18c
  EFLOATOBJ         efM22_TWIPS;     //     194
  EFLOATOBJ         efPr11;          //     19c
  EFLOATOBJ         efPr22;          //     1a4
  SURFACE *         pSurface;        //     1ac
  SIZEL             sizl;            //     1b0
} DCLEVEL;

Fields

lSaveDepth

The depth of the saved state list. This field is initialized with 1.

hdcSave

Handle of the DC that keeps this DCs last saved state. All saved states build up a linked list of HDCs.
Saved DCs don't belong to the current process. This field is initialized with 0. For more information, see DC State Saving

pbrFill

Pointer to the BRUSH structure for the selecte brush. If DC_BRUSH is selected, it points to the stock object.

pbrLine

Pointer to the BRUSH structure for the selecte pen. If DC_PEN is selected, it points to the stock object.

flPath

Describes the state of the path. May be a combination of the following values:
#define DCPATH_ACTIVE    0x1
#define DCPATH_SAVE      0x2
#define DCPATH_CLOCKWISE 0x4

prgnClip

Pointer to a region object, describing the currently selected clip region. NULL when the DC is created.

prgnMeta

Pointer to a region object, describing the meta region. NULL when the DC is created.

flFontState

State of the font. May be a combination of the following values:
#define DC_DIRTYFONT_XFORM 0x1
#define DC_DIRTYFONT_LFONT 0x2
#define DC_UFI_MAPPING     0x4

fl

#define DC_FL_PAL_BACK 1

pSurface

For display DCs this is a pointer to the display surface. For memory DCs it's a pointer to the bitmap that was selected into the DC and NULL after creation of the DC, before a bitmap is selected. The SURFACE's shared ref count is incremented and the bitmap cannot be deleted. Copied from PDEVOBJ and the rule applies here as well, (CONTAINING_RECORD +10h = SURFOBJ), the pointer will start at SURFOBJ of the SURFACE structure.