[WIN32K]
[reactos.git] / reactos / subsystems / win32 / win32k / include / dc.h
index 80d6620..07f412b 100644 (file)
@@ -8,6 +8,7 @@ typedef struct _DC *PDC;
 #include "bitmaps.h"
 #include "pdevobj.h"
 #include "palette.h"
+#include "region.h"
 
 /* Constants ******************************************************************/
 
@@ -22,17 +23,38 @@ typedef struct _DC *PDC;
 /* fl */
 #define DC_FL_PAL_BACK 1
 
+#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 enum
+{
+  DCTYPE_DIRECT = 0,
+  DCTYPE_MEMORY = 1,
+  DCTYPE_INFO = 2,
+} DCTYPE;
+
+
 /* Type definitions ***********************************************************/
 
 typedef struct _ROS_DC_INFO
 {
   HRGN     hClipRgn;     /* Clip region (may be 0) */
-  HRGN     hVisRgn;      /* Visible region (must never be 0) */
   HRGN     hGCClipRgn;   /* GC clip region (ClipRgn AND VisRgn) */
 
-  BYTE   bitsPerPixel;
-
-  CLIPOBJ     *CombinedClip; /* Use XCLIPOBJ in DC. */
+  CLIPOBJ     *CombinedClip;
 
   UNICODE_STRING    DriverName;
 
@@ -54,8 +76,8 @@ typedef struct _DCLEVEL
   HGDIOBJ           hPath; /* HPATH */
   FLONG             flPath;
   LINEATTRS         laPath; /* 0x20 bytes */
-  PVOID             prgnClip; /* PROSRGNDATA */
-  PVOID             prgnMeta;
+  PREGION           prgnClip;
+  PREGION           prgnMeta;
   COLORADJUSTMENT   ca;
   FLONG             flFontState;
   UNIVERSAL_FONT_ID ufi;
@@ -104,9 +126,9 @@ typedef struct _DC
   RECTL       erclWindow;
   RECTL       erclBounds;
   RECTL       erclBoundsApp;
-  PVOID       prgnAPI; /* PROSRGNDATA */
-  PVOID       prgnVis;
-  PVOID       prgnRao;
+  PREGION     prgnAPI;
+  PREGION     prgnVis; /* Visible region (must never be 0) */
+  PREGION     prgnRao;
   POINTL      ptlFillOrigin;
   EBRUSHOBJ   eboFill;
   EBRUSHOBJ   eboLine;
@@ -137,15 +159,14 @@ typedef struct _DC
 
 extern PDC defaultDCstate;
 
-NTSTATUS FASTCALL InitDcImpl(VOID);
+INIT_FUNCTION NTSTATUS NTAPI InitDcImpl();
 PPDEVOBJ FASTCALL IntEnumHDev(VOID);
-HDC  FASTCALL DC_AllocDC(PUNICODE_STRING  Driver);
+PDC NTAPI DC_AllocDcWithHandle();
 VOID FASTCALL DC_InitDC(HDC  DCToInit);
-HDC  FASTCALL DC_FindOpenDC(PUNICODE_STRING  Driver);
 VOID FASTCALL DC_AllocateDcAttr(HDC);
 VOID FASTCALL DC_FreeDcAttr(HDC);
 BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);
-BOOL FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
+BOOL FASTCALL DC_SetOwnership(HDC hDC, PEPROCESS Owner);
 VOID FASTCALL DC_LockDisplay(HDC);
 VOID FASTCALL DC_UnlockDisplay(HDC);
 BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL);
@@ -158,10 +179,16 @@ VOID FASTCALL DC_vUpdateFillBrush(PDC pdc);
 VOID FASTCALL DC_vUpdateLineBrush(PDC pdc);
 VOID FASTCALL DC_vUpdateTextBrush(PDC pdc);
 VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc);
+VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2);
+VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdc1, RECT rc1, PDC pdc2, RECT rc2);
+
+VOID NTAPI DC_vRestoreDC(IN PDC pdc, INT iSaveLevel);
 
 BOOL FASTCALL DCU_SyncDcAttrtoUser(PDC);
 BOOL FASTCALL DCU_SynchDcAttrtoUser(HDC);
 VOID FASTCALL DCU_SetDcUndeletable(HDC);
+VOID NTAPI DC_vFreeDcAttr(PDC pdc);
+VOID NTAPI DC_vInitDc(PDC pdc, DCTYPE dctype, PPDEVOBJ ppdev);
 
 COLORREF FASTCALL IntGdiSetBkColor (HDC hDC, COLORREF Color);
 INT FASTCALL IntGdiSetBkMode(HDC  hDC, INT  backgroundMode);
@@ -177,9 +204,8 @@ VOID FASTCALL IntGdiUnreferencePdev(PPDEVOBJ pPDev, DWORD CleanUpType);
 HDC FASTCALL IntGdiCreateDisplayDC(HDEV hDev, ULONG DcType, BOOL EmptyDC);
 BOOL FASTCALL IntGdiCleanDC(HDC hDC);
 VOID FASTCALL IntvGetDeviceCaps(PPDEVOBJ, PDEVCAPS);
-INT FASTCALL IntGdiGetDeviceCaps(PDC,INT);
-
-extern PPDEVOBJ pPrimarySurface;
+BOOL FASTCALL MakeInfoDC(PDC,BOOL);
+BOOL FASTCALL IntSetDefaultRegion(PDC);
 
 VOID
 FORCEINLINE
@@ -187,7 +213,10 @@ DC_vSelectSurface(PDC pdc, PSURFACE psurfNew)
 {
     PSURFACE psurfOld = pdc->dclevel.pSurface;
     if (psurfOld)
+    {
+        psurfOld->hdc = NULL;
         SURFACE_ShareUnlockSurface(psurfOld);
+    }
     if (psurfNew)
         GDIOBJ_IncrementShareCount((POBJ)psurfNew);
     pdc->dclevel.pSurface = psurfNew;
@@ -229,8 +258,6 @@ DC_vSelectPalette(PDC pdc, PPALETTE ppal)
     pdc->dclevel.ppal = ppal;
 }
 
-BOOL FASTCALL
-IntPrepareDriverIfNeeded(VOID);
-extern PDEVOBJ PrimarySurface;
+extern PBRUSH pbrDefaultBrush ;
 
 #endif /* not __WIN32K_DC_H */