Difference between revisions of "Techwiki:Win32k/DC"

From ReactOS Wiki
Jump to: navigation, search
Line 73: Line 73:
 
  #define DCPATH_SAVE 2
 
  #define DCPATH_SAVE 2
 
  #define DCPATH_CLOCKWISE 4
 
  #define DCPATH_CLOCKWISE 4
 +
 +
flFontState:
 +
#define DC_DIRTYFONT_XFORM 1
 +
#define DC_DIRTYFONT_LFONT 2
 +
#define DC_UFI_MAPPING 4
  
  

Revision as of 02:55, 15 March 2009

Windows XP version of DCOBJ

typedef enum
{
  DCTYPE_DIRECT = 0
  DCTYPE_MEMORY = 1
  DCTYPE_INFO = 2
} DCTYPE;

fs:

#define DC_DISPLAY  1
#define DC_DIRECT 2
#define DC_CANCELED 4
#define DC_PERMANANT 0x08
#define DC_DIRTY_RAO 0x10
#define DC_ACCUM_WMGR 0x20
#define DC_ACCUM_APP 0x40
#define DC_RESET 0x80
#define DC_SYNCHRONIZEACCESS 0x100
#define DC_EPSPRINTINGESCAPE 0x200
#define DC_TEMPINFODC 0x400
#define DC_FULLSCREEN 0x800
#define DC_IN_CLONEPDEV 0x1000
#define DC_REDIRECTION 0x2000
#define DC_SHAREACCESS 0x4000
typedef struct
{ //                                              W2k WXP Note
  BASEOBJECT  BaseObject;                      // 000 000
  DHPDEV      dhpdev;                          // 010 010 Device handle to PDEV
  DCTYPE      dctype;                          // 014 014 DC Type
  DWORD       fs;                              // 018 018 Flags
  PPDEVOBJ    ppdev;                           // 01C 01C
  PVOID       hsem;                            // 020 020
  FLONG       flGraphicsCaps;                  // 024 024
  FLONG       flGraphicsCaps2;                 // 028 028
  PVOID       pdcattr;                         // 02c 02c XP points to user mode DCATTR */
  DCLEVEL     dclevel;                         // 030 030 DCLEVEL is 0x1B8 Bytes
  DC_ATTR     dcattr;                          // 1E8 1E8 DC_ATTR is 0x1D0 Bytes
  HDC         hdcNext;                         // 3B8 3B8
  HDC         hdcPrev;                         // 3BC 3BC
  RECTL       erclClip;                        // 3C0 3C0
  POINTL      ptlDCOrig;                       // 3D0 3D0 Ref in XDCOBJ::bCleanDC
  RECTL       erclWindow;                      // 3D8 3D8 See note 1
  RECTL       erclBounds;                      // 3E8 3E8 SetGetBoundsRect stores the value here
  RECTL       erclBoundsApp;                   // 3F8 3F8
  PVOID       prgnAPI;                         // 408 408
  PVOID       prgnVis;                         // 40C 40C
  PVOID       prgnRao;                         // 410 410
  POINTL      ptlFillOrigin;                   // 414 414
  EBRUSHOBJ   eboFill;                         // 41C 41C Ref in XDCOBJ::bDeleteDC
  EBRUSHOBJ   eboLine;                         // 470 478        "
  EBRUSHOBJ   eboText;                         // 4c4 4D4        "
  EBRUSHOBJ   eboBackground;                   // 518 530        "
  HFONT       hlfntCur;                        // 56c 58C
  FLONG       flSimulationFlags;               // 570 590 // 0x20 Italic & 0x80 Underline
  LONG        lEscapement;                     // 574 594
  RFONT *     prfnt;                           // 578 598 -> 'Gfnt'
  XCLIPOBJ    co;                              // 57c 59C Ref in NtGdiSetPixel called XCLIPOBJ::vSetup
  PPFF        pPFFList;                        // 5f8 618 PFF* Ref in XDCOBJ::bDeleteDC
  PVOID       pClrxFormLnk;                    //     61C Ref in XDCOBJ::vCleanupColorTransform,
                                                          COLORTRANSFORMOBJ see Note 2.
  INT         ipfdDevMax;                      // 600 620 Ref in XDCOBJ::ipfdDevMax/Get, -1 NtGdiEndPage, 
                                                          0 GreDoBanding
  ULONG       ulCopyCount;                     // 604 624 Ref in NtGdiGetAndSetDCDword
  PVOID       pSurfInfo;                       // 608 628 Ref in DC::bMakeInfoDC Copy from DCLEVEL.pSurface
  POINTL      ptlDoBanding;                    // 60C 62C Ref in GreDoBanding
  /* DCMEMOBJ XP size == 0x634 */
} DCOBJ;

flPath:

#define DCPATH_ACTIVE 1
#define DCPATH_SAVE 2
#define DCPATH_CLOCKWISE 4

flFontState:

#define DC_DIRTYFONT_XFORM 1
#define DC_DIRTYFONT_LFONT 2
#define DC_UFI_MAPPING 4


Note:

1. NtGdiGetDeviceWidth

erclWindow: Rectangle Window
3D8 = LONG left; 
3DC = LONG top; 
3E0 = LONG right; 
3E4 = LONG bottom;
return (right - left);

2. Pointer to a link list of Color Transforms.

  • The regions prgnAPI, prgnVis and prgnRao don't have a handle.