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

ddsurf.c
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:        See COPYING in the top level directory
00003  * PROJECT:          ReactOS kernel
00004  * PURPOSE:          Native DirectDraw implementation
00005  * FILE:             subsystems/win32/win32k/ntddraw/ddsurf.c
00006  * PROGRAMER:        Magnus Olsen (greatlord@reactos.org)
00007  * REVISION HISTORY:
00008  *       19/7-2006  Magnus Olsen
00009  */
00010 
00011 #include <win32k.h>
00012 #include <debug.h>
00013 
00014 /************************************************************************/
00015 /* NtGdiDdDestroySurface                                                */
00016 /************************************************************************/
00017 DWORD
00018 APIENTRY
00019 NtGdiDdDestroySurface(HANDLE hSurface, BOOL bRealDestroy)
00020 {
00021     PGD_DXDDDESTROYSURFACE pfnDdDestroySurface = (PGD_DXDDDESTROYSURFACE)gpDxFuncs[DXG_INDEX_DxDdDestroySurface].pfn;
00022     
00023     if (pfnDdDestroySurface == NULL)
00024     {
00025         DPRINT1("Warning: no pfnDdDestroySurface");
00026         return DDHAL_DRIVER_NOTHANDLED;
00027     }
00028 
00029     DPRINT1("Calling on dxg.sys pfnDdDestroySurface");
00030     return pfnDdDestroySurface(hSurface, bRealDestroy);
00031 }
00032 
00033 /************************************************************************/
00034 /* NtGdiDdFlip                                                          */
00035 /************************************************************************/
00036 DWORD
00037 APIENTRY
00038 NtGdiDdFlip(HANDLE hSurfaceCurrent,
00039             HANDLE hSurfaceTarget,
00040             HANDLE hSurfaceCurrentLeft,
00041             HANDLE hSurfaceTargetLeft,
00042             PDD_FLIPDATA puFlipData)
00043 {
00044     PGD_DXDDFLIP pfnDdDdFlip = (PGD_DXDDFLIP)gpDxFuncs[DXG_INDEX_DxDdFlip].pfn;
00045    
00046     if (pfnDdDdFlip == NULL)
00047     {
00048         DPRINT1("Warning: no pfnDdDdFlip");
00049         return DDHAL_DRIVER_NOTHANDLED;
00050     }
00051 
00052     DPRINT1("Calling on dxg.sys pfnDdDdFlip");
00053     return pfnDdDdFlip(hSurfaceCurrent, hSurfaceTarget, hSurfaceCurrentLeft, hSurfaceTargetLeft, puFlipData);
00054 }
00055 
00056 /************************************************************************/
00057 /* NtGdiDdUnlock                                                        */
00058 /************************************************************************/
00059 DWORD
00060 APIENTRY
00061 NtGdiDdLock(HANDLE hSurface,
00062             PDD_LOCKDATA puLockData,
00063             HDC hdcClip)
00064 {
00065     PGD_DXDDLOCK pfnDdLock = (PGD_DXDDLOCK)gpDxFuncs[DXG_INDEX_DxDdLock].pfn;
00066     
00067     if (pfnDdLock == NULL)
00068     {
00069         DPRINT1("Warning: no pfnDdLock");
00070         return DDHAL_DRIVER_NOTHANDLED;
00071     }
00072 
00073     DPRINT1("Calling on dxg.sys pfnDdLock");
00074     return pfnDdLock(hSurface, puLockData, hdcClip);
00075 }
00076 
00077 /************************************************************************/
00078 /* NtGdiDdunlock                                                        */
00079 /************************************************************************/
00080 DWORD
00081 APIENTRY
00082 NtGdiDdUnlock(HANDLE hSurface, 
00083               PDD_UNLOCKDATA puUnlockData)
00084 {
00085     PGD_DXDDUNLOCK pfnDdUnlock = (PGD_DXDDUNLOCK)gpDxFuncs[DXG_INDEX_DxDdUnlock].pfn;
00086    
00087     if (pfnDdUnlock == NULL)
00088     {
00089         DPRINT1("Warning: no pfnDdUnlock");
00090         return DDHAL_DRIVER_NOTHANDLED;
00091     }
00092 
00093     DPRINT1("Calling on dxg.sys pfnDdUnlock");
00094     return pfnDdUnlock(hSurface, puUnlockData);
00095 }
00096 
00097 /************************************************************************/
00098 /* NtGdiDdBlt                                                           */
00099 /************************************************************************/
00100 DWORD
00101 APIENTRY
00102 NtGdiDdBlt(HANDLE hSurfaceDest,
00103            HANDLE hSurfaceSrc,
00104            PDD_BLTDATA puBltData)
00105 {
00106     PGD_DDBLT pfnDdBlt = (PGD_DDBLT)gpDxFuncs[DXG_INDEX_DxDdBlt].pfn;
00107     
00108     if (pfnDdBlt == NULL)
00109     {
00110         DPRINT1("Warning: no pfnDdBlt");
00111         return DDHAL_DRIVER_NOTHANDLED;
00112     }
00113 
00114     DPRINT1("Calling on dxg.sys DdBlt");
00115     return pfnDdBlt(hSurfaceDest,hSurfaceSrc,puBltData);
00116 }
00117 
00118 /************************************************************************/
00119 /* NtGdiDdSetColorKey                                                   */
00120 /************************************************************************/
00121 DWORD
00122 APIENTRY
00123 NtGdiDdSetColorKey(HANDLE hSurface,
00124                    PDD_SETCOLORKEYDATA puSetColorKeyData)
00125 {
00126     PGD_DXDDSETCOLORKEY pfnDdSetColorKey = (PGD_DXDDSETCOLORKEY)gpDxFuncs[DXG_INDEX_DxDdSetColorKey].pfn;
00127     
00128     if (pfnDdSetColorKey == NULL)
00129     {
00130         DPRINT1("Warning: no pfnDdSetColorKey");
00131         return DDHAL_DRIVER_NOTHANDLED;
00132     }
00133 
00134     DPRINT1("Calling on dxg.sys pfnDdSetColorKey");
00135     return pfnDdSetColorKey(hSurface,puSetColorKeyData);
00136 
00137 }
00138 
00139 /************************************************************************/
00140 /* NtGdiDdAddAttachedSurface                                            */
00141 /************************************************************************/
00142 
00143 DWORD
00144 APIENTRY
00145 NtGdiDdAddAttachedSurface(HANDLE hSurface,
00146                           HANDLE hSurfaceAttached,
00147                           PDD_ADDATTACHEDSURFACEDATA puAddAttachedSurfaceData)
00148 {
00149     PGD_DDADDATTACHEDSURFACE pfnDdAddAttachedSurface = (PGD_DDADDATTACHEDSURFACE)gpDxFuncs[DXG_INDEX_DxDdAddAttachedSurface].pfn;
00150     
00151     if (pfnDdAddAttachedSurface == NULL)
00152     {
00153         DPRINT1("Warning: no pfnDdAddAttachedSurface");
00154         return DDHAL_DRIVER_NOTHANDLED;
00155     }
00156 
00157     DPRINT1("Calling on dxg.sys DdAddAttachedSurface");
00158     return pfnDdAddAttachedSurface(hSurface,hSurfaceAttached,puAddAttachedSurfaceData);
00159 }
00160 
00161 /************************************************************************/
00162 /* NtGdiDdGetBltStatus                                                  */
00163 /************************************************************************/
00164 DWORD
00165 APIENTRY
00166 NtGdiDdGetBltStatus(HANDLE hSurface,
00167                     PDD_GETBLTSTATUSDATA puGetBltStatusData)
00168 {
00169     PGD_DXDDGETBLTSTATUS pfnDdGetBltStatus = (PGD_DXDDGETBLTSTATUS)gpDxFuncs[DXG_INDEX_DxDdGetBltStatus].pfn;
00170     
00171     if (pfnDdGetBltStatus == NULL)
00172     {
00173         DPRINT1("Warning: no pfnDdGetBltStatus");
00174         return DDHAL_DRIVER_NOTHANDLED;
00175     }
00176 
00177     DPRINT1("Calling on dxg.sys pfnDdGetBltStatus");
00178     return pfnDdGetBltStatus(hSurface,puGetBltStatusData);
00179 }
00180 
00181 /************************************************************************/
00182 /* NtGdiDdGetFlipStatus                                                 */
00183 /************************************************************************/
00184 DWORD
00185 APIENTRY
00186 NtGdiDdGetFlipStatus(HANDLE hSurface,
00187                      PDD_GETFLIPSTATUSDATA puGetFlipStatusData)
00188 {
00189     PGD_DXDDGETFLIPSTATUS pfnDdGetFlipStatus = (PGD_DXDDGETFLIPSTATUS)gpDxFuncs[DXG_INDEX_DxDdGetFlipStatus].pfn;
00190     
00191     if (pfnDdGetFlipStatus == NULL)
00192     {
00193         DPRINT1("Warning: no pfnDdGetFlipStatus");
00194         return DDHAL_DRIVER_NOTHANDLED;
00195     }
00196 
00197     DPRINT1("Calling on dxg.sys pfnDdGetFlipStatus");
00198     return pfnDdGetFlipStatus(hSurface,puGetFlipStatusData);
00199 }
00200 
00201 /************************************************************************/
00202 /* NtGdiDdUpdateOverlay                                                 */
00203 /************************************************************************/
00204 DWORD
00205 APIENTRY
00206 NtGdiDdUpdateOverlay(HANDLE hSurfaceDestination,
00207                      HANDLE hSurfaceSource,
00208                      PDD_UPDATEOVERLAYDATA puUpdateOverlayData)
00209 {
00210     PGD_DXDDUPDATEOVERLAY pfnDdUpdateOverlay = (PGD_DXDDUPDATEOVERLAY)gpDxFuncs[DXG_INDEX_DxDdUpdateOverlay].pfn;
00211    
00212     if (pfnDdUpdateOverlay == NULL)
00213     {
00214         DPRINT1("Warning: no pfnDdUpdateOverlay");
00215         return DDHAL_DRIVER_NOTHANDLED;
00216     }
00217 
00218     DPRINT1("Calling on dxg.sys pfnDdUpdateOverlay");
00219     return pfnDdUpdateOverlay(hSurfaceDestination,hSurfaceSource,puUpdateOverlayData);
00220 }
00221 
00222 /************************************************************************/
00223 /* NtGdiDdSetOverlayPosition                                            */
00224 /************************************************************************/
00225 
00226 DWORD
00227 APIENTRY
00228 NtGdiDdSetOverlayPosition(HANDLE hSurfaceSource,
00229                           HANDLE hSurfaceDestination,
00230                           PDD_SETOVERLAYPOSITIONDATA puSetOverlayPositionData)
00231 {
00232     PGD_DXDDSETOVERLAYPOSITION pfnDdSetOverlayPosition = (PGD_DXDDSETOVERLAYPOSITION)gpDxFuncs[DXG_INDEX_DxDdSetOverlayPosition].pfn;
00233   
00234     if (pfnDdSetOverlayPosition == NULL)
00235     {
00236         DPRINT1("Warning: no pfnDdSetOverlayPosition");
00237         return DDHAL_DRIVER_NOTHANDLED;
00238     }
00239 
00240     DPRINT1("Calling on dxg.sys pfnDdSetOverlayPosition");
00241     return pfnDdSetOverlayPosition(hSurfaceSource,hSurfaceDestination,puSetOverlayPositionData);
00242 }
00243 
00244 /************************************************************************/
00245 /* This is not part of the ddsurface interface but it                   */
00246 /* deals with the surface                                               */
00247 /************************************************************************/
00248 
00249 
00250 /************************************************************************/
00251 /* NtGdiDdAlphaBlt                                                      */
00252 /************************************************************************/
00253 DWORD
00254 APIENTRY
00255 NtGdiDdAlphaBlt(HANDLE hSurfaceDest,
00256                 HANDLE hSurfaceSrc,
00257                 PDD_BLTDATA puBltData)
00258 {
00259     PGD_DDALPHABLT pfnDdAlphaBlt = (PGD_DDALPHABLT)gpDxFuncs[DXG_INDEX_DxDdAlphaBlt].pfn;
00260    
00261     if (pfnDdAlphaBlt == NULL)
00262     {
00263         DPRINT1("Warning: no pfnDdAlphaBlt");
00264         return DDHAL_DRIVER_NOTHANDLED;
00265     }
00266 
00267     DPRINT1("Calling on dxg.sys DdAlphaBlt");
00268     return pfnDdAlphaBlt(hSurfaceDest,hSurfaceSrc,puBltData);
00269 }
00270 
00271 /************************************************************************/
00272 /* NtGdiDdAttachSurface                                                 */
00273 /************************************************************************/
00274 BOOL
00275 APIENTRY
00276 NtGdiDdAttachSurface(HANDLE hSurfaceFrom,
00277                      HANDLE hSurfaceTo
00278 )
00279 {
00280     PGD_DDATTACHSURFACE pfnDdAttachSurface = (PGD_DDATTACHSURFACE)gpDxFuncs[DXG_INDEX_DxDdAttachSurface].pfn;
00281   
00282     if (pfnDdAttachSurface == NULL)
00283     {
00284         DPRINT1("Warning: no pfnDdAttachSurface");
00285         return DDHAL_DRIVER_NOTHANDLED;
00286     }
00287 
00288     DPRINT1("Calling on dxg.sys pfnDdAttachSurface");
00289     return pfnDdAttachSurface(hSurfaceFrom,hSurfaceTo);
00290 }
00291 
00292 /************************************************************************/
00293 /* NtGdiDdUnattachSurface                                               */
00294 /************************************************************************/
00295 /* Note:  MSDN protypes is VOID APIENTRY NtGdiDdUnattachSurface(HANDLE hSurface, HANDLE hSurfaceAttached)
00296           But it say it return either DDHAL_DRIVER_NOTHANDLED or DDHAL_DRIVER_HANDLED
00297           so I guess it is a typo in MSDN for this prototype for the info contradicts itself.
00298 */
00299 DWORD
00300 APIENTRY
00301 NtGdiDdUnattachSurface(HANDLE hSurface,
00302                        HANDLE hSurfaceAttached)
00303 {
00304     PGD_DXDDUNATTACHSURFACE pfnDdUnattachSurface = (PGD_DXDDUNATTACHSURFACE)gpDxFuncs[DXG_INDEX_DxDdUnattachSurface].pfn;  
00305     if (pfnDdUnattachSurface == NULL)
00306     {
00307         DPRINT1("Warning: no pfnDdUnattachSurface");
00308         return DDHAL_DRIVER_NOTHANDLED;
00309     }
00310 
00311     DPRINT1("Calling on dxg.sys pfnDdUnattachSurface");
00312     return pfnDdUnattachSurface(hSurface,hSurfaceAttached);
00313 }

Generated on Fri May 25 2012 04:36:45 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.