mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
bltblt is hacked now. but it draw a yellow surface now
svn path=/trunk/; revision=25134
This commit is contained in:
parent
0d5961e9e4
commit
fe01bb3090
1 changed files with 33 additions and 47 deletions
|
@ -73,59 +73,45 @@ HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
|
||||||
LPDDRAWI_DDRAWSURFACE_INT ThisDest = (LPDDRAWI_DDRAWSURFACE_INT)iface;
|
LPDDRAWI_DDRAWSURFACE_INT ThisDest = (LPDDRAWI_DDRAWSURFACE_INT)iface;
|
||||||
LPDDRAWI_DDRAWSURFACE_INT ThisSrc = (LPDDRAWI_DDRAWSURFACE_INT)src;
|
LPDDRAWI_DDRAWSURFACE_INT ThisSrc = (LPDDRAWI_DDRAWSURFACE_INT)src;
|
||||||
|
|
||||||
DDHAL_BLTDATA BltData;
|
DDHAL_BLTDATA mDdBlt;
|
||||||
|
|
||||||
DX_WINDBG_trace();
|
DX_WINDBG_trace();
|
||||||
|
|
||||||
RtlZeroMemory(&BltData,sizeof(DDHAL_BLTDATA));
|
|
||||||
BltData.ddRVal = DDERR_GENERIC;
|
|
||||||
|
|
||||||
if (ThisDest->lpLcl->lpGbl->lpDD->lpDDCBtmp->cbDDSurfaceCallbacks.dwFlags & DDHAL_SURFCB32_BLT)
|
|
||||||
{
|
|
||||||
BltData.lpDD = ThisDest->lpLcl->lpGbl->lpDD;
|
|
||||||
BltData.Blt = ThisDest->lpLcl->lpGbl->lpDD->lpDDCBtmp->cbDDSurfaceCallbacks.Blt;
|
|
||||||
|
|
||||||
BltData.lpDDDestSurface = ThisDest->lpLcl;
|
|
||||||
BltData.lpDDSrcSurface = ThisSrc ? ThisSrc->lpLcl : 0;
|
|
||||||
BltData.dwFlags = dwFlags;
|
|
||||||
|
|
||||||
if (rdst != NULL)
|
mDdBlt.lpDDDestSurface = ThisDest->lpLcl->lpSurfMore->slist[0];
|
||||||
{
|
if (!DdResetVisrgn( ThisDest->lpLcl->lpSurfMore->slist[0], NULL))
|
||||||
memmove (&BltData.rSrc, rdst, sizeof (RECTL));
|
{
|
||||||
}
|
// derr(L"DirectDrawImpl[%08x]::_clear DdResetVisrgn failed", this);
|
||||||
|
}
|
||||||
|
|
||||||
if (rsrc != NULL)
|
ZeroMemory(&mDdBlt, sizeof(DDHAL_BLTDATA));
|
||||||
{
|
ZeroMemory(&mDdBlt.bltFX, sizeof(DDBLTFX));
|
||||||
memmove (&BltData.rDest, rsrc, sizeof (RECTL));
|
mDdBlt.bltFX.dwSize = sizeof(DDBLTFX);
|
||||||
}
|
|
||||||
|
|
||||||
if (lpbltfx != NULL)
|
mDdBlt.lpDD = ThisDest->lpLcl->lpSurfMore->lpDD_lcl->lpGbl;
|
||||||
{
|
mDdBlt.Blt = ThisDest->lpLcl->lpSurfMore->lpDD_lcl->lpDDCB->cbDDSurfaceCallbacks.Blt;
|
||||||
memmove (&BltData.bltFX, lpbltfx, sizeof (DDBLTFX));
|
mDdBlt.lpDDDestSurface = ThisDest->lpLcl->lpSurfMore->slist[0];
|
||||||
}
|
|
||||||
|
ThisDest->lpLcl->lpSurfMore->slist[0]->hDC = ThisDest->lpLcl->lpSurfMore->lpDD_lcl->hDC; // This->lpLcl->hWnd;
|
||||||
|
mDdBlt.rDest.top = 50;
|
||||||
|
mDdBlt.rDest.bottom = 100;
|
||||||
|
mDdBlt.rDest.left = 0;
|
||||||
|
mDdBlt.rDest.right = 100;
|
||||||
|
mDdBlt.lpDDSrcSurface = NULL;
|
||||||
|
mDdBlt.IsClipped = FALSE;
|
||||||
|
mDdBlt.bltFX.dwFillColor = 0xFFFF00;
|
||||||
|
mDdBlt.dwFlags = DDBLT_COLORFILL | DDBLT_WAIT;
|
||||||
|
|
||||||
|
if (mDdBlt.Blt(&mDdBlt) != DDHAL_DRIVER_HANDLED)
|
||||||
|
{
|
||||||
|
//printf("Fail to mDdBlt = DDHAL_DRIVER_HANDLED\n");
|
||||||
|
return DDHAL_DRIVER_HANDLED;
|
||||||
|
}
|
||||||
|
|
||||||
DX_STUB_str("FIXME : Fill the BltData member dwRectCnt, dwROPFlags, IsClipped, prDestRects, rOrigDest, rOrigSrc before calling Blt\n");
|
if (mDdBlt.ddRVal!=DD_OK)
|
||||||
|
{
|
||||||
/* FIXME
|
//printf("Fail to mDdBlt mDdBlt.ddRVal = %d:%s\n",(int)mDdBlt.ddRVal,DDErrorString(mDdBlt.ddRVal));
|
||||||
|
return mDdBlt.ddRVal;
|
||||||
// BltData.dwRectCnt
|
}
|
||||||
// BltData.dwROPFlags
|
|
||||||
// BltData.IsClipped
|
|
||||||
// BltData.prDestRects
|
|
||||||
// BltData.rOrigDest
|
|
||||||
// BltData.rOrigSrc
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!DdResetVisrgn( ThisDest->lpLcl, NULL))
|
|
||||||
{
|
|
||||||
return DDERR_NOGDI;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (BltData.Blt(&BltData) == DDHAL_DRIVER_HANDLED)
|
|
||||||
{
|
|
||||||
return BltData.ddRVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return DDERR_GENERIC;
|
return DDERR_GENERIC;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue