Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenddsurf.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
1.7.6.1
|