Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendc.h
Go to the documentation of this file.
00001 #ifndef __WIN32K_DC_H 00002 #define __WIN32K_DC_H 00003 00004 /* Constants ******************************************************************/ 00005 00006 /* Get/SetBounds/Rect support. */ 00007 #define DCB_WINDOWMGR 0x8000 /* Queries the Windows bounding rectangle instead of the application's */ 00008 00009 /* flFontState */ 00010 #define DC_DIRTYFONT_XFORM 1 00011 #define DC_DIRTYFONT_LFONT 2 00012 #define DC_UFI_MAPPING 4 00013 00014 /* fl */ 00015 #define DC_FL_PAL_BACK 1 00016 00017 #define DC_DISPLAY 1 00018 #define DC_DIRECT 2 00019 #define DC_CANCELED 4 00020 #define DC_PERMANANT 0x08 00021 #define DC_DIRTY_RAO 0x10 00022 #define DC_ACCUM_WMGR 0x20 00023 #define DC_ACCUM_APP 0x40 00024 #define DC_RESET 0x80 00025 #define DC_SYNCHRONIZEACCESS 0x100 00026 #define DC_EPSPRINTINGESCAPE 0x200 00027 #define DC_TEMPINFODC 0x400 00028 #define DC_FULLSCREEN 0x800 00029 #define DC_IN_CLONEPDEV 0x1000 00030 #define DC_REDIRECTION 0x2000 00031 #define DC_SHAREACCESS 0x4000 00032 00033 typedef enum 00034 { 00035 DCTYPE_DIRECT = 0, 00036 DCTYPE_MEMORY = 1, 00037 DCTYPE_INFO = 2, 00038 } DCTYPE; 00039 00040 00041 /* Type definitions ***********************************************************/ 00042 00043 typedef struct _ROS_DC_INFO 00044 { 00045 HRGN hClipRgn; /* Clip region (may be 0) */ 00046 HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */ 00047 00048 CLIPOBJ *CombinedClip; 00049 } ROS_DC_INFO; 00050 00051 typedef struct _DCLEVEL 00052 { 00053 HPALETTE hpal; 00054 struct _PALETTE * ppal; 00055 PVOID pColorSpace; /* COLORSPACE* */ 00056 LONG lIcmMode; 00057 LONG lSaveDepth; 00058 DWORD unk1_00000000; 00059 HGDIOBJ hdcSave; 00060 POINTL ptlBrushOrigin; 00061 PBRUSH pbrFill; 00062 PBRUSH pbrLine; 00063 PVOID plfnt; /* LFONTOBJ* (TEXTOBJ*) */ 00064 HGDIOBJ hPath; /* HPATH */ 00065 FLONG flPath; 00066 LINEATTRS laPath; /* 0x20 bytes */ 00067 PREGION prgnClip; 00068 PREGION prgnMeta; 00069 COLORADJUSTMENT ca; 00070 FLONG flFontState; 00071 UNIVERSAL_FONT_ID ufi; 00072 UNIVERSAL_FONT_ID ufiLoc[4]; /* Local List. */ 00073 UNIVERSAL_FONT_ID *pUFI; 00074 ULONG uNumUFIs; 00075 BOOL ufiSet; 00076 FLONG fl; 00077 FLONG flBrush; 00078 MATRIX mxWorldToDevice; 00079 MATRIX mxDeviceToWorld; 00080 MATRIX mxWorldToPage; 00081 FLOATOBJ efM11PtoD; 00082 FLOATOBJ efM22PtoD; 00083 FLOATOBJ efDxPtoD; 00084 FLOATOBJ efDyPtoD; 00085 FLOATOBJ efM11_TWIPS; 00086 FLOATOBJ efM22_TWIPS; 00087 FLOATOBJ efPr11; 00088 FLOATOBJ efPr22; 00089 PSURFACE pSurface; 00090 SIZE sizl; 00091 } DCLEVEL, *PDCLEVEL; 00092 00093 /* The DC object structure */ 00094 typedef struct _DC 00095 { 00096 /* Header for all gdi objects in the handle table. 00097 Do not (re)move this. */ 00098 BASEOBJECT BaseObject; 00099 00100 DHPDEV dhpdev; /* <- PDEVOBJ.hPDev DHPDEV for device. */ 00101 INT dctype; 00102 INT fs; 00103 PPDEVOBJ ppdev; 00104 PVOID hsem; /* PERESOURCE aka HSEMAPHORE */ 00105 FLONG flGraphicsCaps; 00106 FLONG flGraphicsCaps2; 00107 PDC_ATTR pdcattr; 00108 DCLEVEL dclevel; 00109 DC_ATTR dcattr; 00110 HDC hdcNext; 00111 HDC hdcPrev; 00112 RECTL erclClip; 00113 POINTL ptlDCOrig; 00114 RECTL erclWindow; 00115 RECTL erclBounds; 00116 RECTL erclBoundsApp; 00117 PREGION prgnAPI; 00118 PREGION prgnVis; /* Visible region (must never be 0) */ 00119 PREGION prgnRao; 00120 POINTL ptlFillOrigin; 00121 EBRUSHOBJ eboFill; 00122 EBRUSHOBJ eboLine; 00123 EBRUSHOBJ eboText; 00124 EBRUSHOBJ eboBackground; 00125 HFONT hlfntCur; 00126 FLONG flSimulationFlags; 00127 LONG lEscapement; 00128 PVOID prfnt; /* RFONT* */ 00129 XCLIPOBJ co; /* CLIPOBJ */ 00130 PVOID pPFFList; /* PPFF* */ 00131 PVOID pClrxFormLnk; 00132 INT ipfdDevMax; 00133 ULONG ulCopyCount; 00134 PVOID pSurfInfo; 00135 POINTL ptlDoBanding; 00136 00137 /* Reactos specific members */ 00138 ROS_DC_INFO rosdc; 00139 } DC; 00140 00141 extern PDC defaultDCstate; 00142 00143 /* Internal functions *********************************************************/ 00144 00145 /* dcobjs.c */ 00146 00147 VOID FASTCALL DC_vUpdateFillBrush(PDC pdc); 00148 VOID FASTCALL DC_vUpdateLineBrush(PDC pdc); 00149 VOID FASTCALL DC_vUpdateTextBrush(PDC pdc); 00150 VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc); 00151 00152 HPALETTE 00153 NTAPI 00154 GdiSelectPalette( 00155 HDC hDC, 00156 HPALETTE hpal, 00157 BOOL ForceBackground); 00158 00159 00160 00161 INIT_FUNCTION NTSTATUS NTAPI InitDcImpl(VOID); 00162 PPDEVOBJ FASTCALL IntEnumHDev(VOID); 00163 PDC NTAPI DC_AllocDcWithHandle(VOID); 00164 BOOL NTAPI DC_bAllocDcAttr(PDC pdc); 00165 BOOL NTAPI DC_Cleanup(PVOID ObjectBody); 00166 BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL); 00167 00168 BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest); 00169 VOID FASTCALL DC_vUpdateViewportExt(PDC pdc); 00170 VOID FASTCALL DC_vCopyState(PDC pdcSrc, PDC pdcDst, BOOL to); 00171 VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2); 00172 VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdc1, RECT rc1, PDC pdc2, RECT rc2); 00173 00174 VOID NTAPI DC_vRestoreDC(IN PDC pdc, INT iSaveLevel); 00175 00176 VOID FASTCALL DCU_SetDcUndeletable(HDC); 00177 VOID NTAPI DC_vFreeDcAttr(PDC pdc); 00178 VOID NTAPI DC_vInitDc(PDC pdc, DCTYPE dctype, PPDEVOBJ ppdev); 00179 00180 COLORREF FASTCALL IntGdiSetBkColor (HDC hDC, COLORREF Color); 00181 INT FASTCALL IntGdiSetBkMode(HDC hDC, INT backgroundMode); 00182 COLORREF FASTCALL IntGdiSetTextColor(HDC hDC, COLORREF color); 00183 UINT FASTCALL IntGdiSetTextAlign(HDC hDC, UINT Mode); 00184 VOID FASTCALL IntGdiReferencePdev(PPDEVOBJ pPDev); 00185 VOID FASTCALL IntGdiUnreferencePdev(PPDEVOBJ pPDev, DWORD CleanUpType); 00186 HDC FASTCALL IntGdiCreateDisplayDC(HDEV hDev, ULONG DcType, BOOL EmptyDC); 00187 BOOL FASTCALL IntGdiCleanDC(HDC hDC); 00188 VOID FASTCALL IntvGetDeviceCaps(PPDEVOBJ, PDEVCAPS); 00189 BOOL FASTCALL IntSetDefaultRegion(PDC); 00190 BOOL NTAPI GreSetDCOwner(HDC hdc, ULONG ulOwner); 00191 00192 VOID 00193 NTAPI 00194 DC_vSetBrushOrigin(PDC pdc, LONG x, LONG y); 00195 00196 FORCEINLINE 00197 PDC 00198 DC_LockDc(HDC hdc) 00199 { 00200 //if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE) return NULL; ??? 00201 return GDIOBJ_LockObject(hdc, GDIObjType_DC_TYPE); 00202 } 00203 00204 FORCEINLINE 00205 VOID 00206 DC_UnlockDc(PDC pdc) 00207 { 00208 GDIOBJ_vUnlockObject(&pdc->BaseObject); 00209 } 00210 00211 VOID 00212 FORCEINLINE 00213 DC_vSelectSurface(PDC pdc, PSURFACE psurfNew) 00214 { 00215 PSURFACE psurfOld = pdc->dclevel.pSurface; 00216 if (psurfOld) 00217 { 00218 psurfOld->hdc = NULL; 00219 SURFACE_ShareUnlockSurface(psurfOld); 00220 } 00221 if (psurfNew) 00222 GDIOBJ_vReferenceObjectByPointer((POBJ)psurfNew); 00223 pdc->dclevel.pSurface = psurfNew; 00224 } 00225 00226 VOID 00227 FORCEINLINE 00228 DC_vSelectFillBrush(PDC pdc, PBRUSH pbrFill) 00229 { 00230 PBRUSH pbrFillOld = pdc->dclevel.pbrFill; 00231 if (pbrFillOld) 00232 BRUSH_ShareUnlockBrush(pbrFillOld); 00233 if (pbrFill) 00234 GDIOBJ_vReferenceObjectByPointer((POBJ)pbrFill); 00235 pdc->dclevel.pbrFill = pbrFill; 00236 } 00237 00238 VOID 00239 FORCEINLINE 00240 DC_vSelectLineBrush(PDC pdc, PBRUSH pbrLine) 00241 { 00242 PBRUSH pbrLineOld = pdc->dclevel.pbrLine; 00243 if (pbrLineOld) 00244 BRUSH_ShareUnlockBrush(pbrLineOld); 00245 if (pbrLine) 00246 GDIOBJ_vReferenceObjectByPointer((POBJ)pbrLine); 00247 pdc->dclevel.pbrLine = pbrLine; 00248 } 00249 00250 VOID 00251 FORCEINLINE 00252 DC_vSelectPalette(PDC pdc, PPALETTE ppal) 00253 { 00254 PPALETTE ppalOld = pdc->dclevel.ppal; 00255 if (ppalOld) 00256 PALETTE_ShareUnlockPalette(ppalOld); 00257 if (ppal) 00258 GDIOBJ_vReferenceObjectByPointer((POBJ)ppal); 00259 pdc->dclevel.ppal = ppal; 00260 } 00261 00262 extern PBRUSH pbrDefaultBrush ; 00263 00264 #endif /* not __WIN32K_DC_H */ Generated on Sun May 27 2012 04:38:24 for ReactOS by
1.7.6.1
|