ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dc.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.