diff options
Diffstat (limited to 'loader')
-rw-r--r-- | loader/vfl.c | 60 | ||||
-rw-r--r-- | loader/wine/vfw.h | 13 |
2 files changed, 73 insertions, 0 deletions
diff --git a/loader/vfl.c b/loader/vfl.c index 6af2d42bc1..a16986aa33 100644 --- a/loader/vfl.c +++ b/loader/vfl.c @@ -283,6 +283,66 @@ ICDecompress(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPB } /*********************************************************************** + * ICDecompressEx [MSVFW.26] + */ +long VFWAPIV +ICDecompressEx(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits) { + ICDECOMPRESSEX icd; + int result; + + icd.dwFlags = dwFlags; + + icd.lpbiSrc = lpbiFormat; + icd.lpSrc = lpData; + + icd.lpbiDst = lpbi; + icd.lpDst = lpBits; + + icd.xSrc=icd.ySrc=0; + icd.dxSrc=lpbiFormat->biWidth; + icd.dySrc=abs(lpbiFormat->biHeight); + + icd.xDst=icd.yDst=0; + icd.dxDst=lpbi->biWidth; + icd.dyDst=abs(lpbi->biHeight); + + //icd.ckid = 0; + STORE_ALL; + result=ICSendMessage(hic,ICM_DECOMPRESSEX,(long)&icd,sizeof(icd)); + REST_ALL; + return result; +} + +long VFWAPIV +ICUniversalEx(HIC hic,int command,LPBITMAPINFOHEADER lpbiFormat,LPBITMAPINFOHEADER lpbi) { + ICDECOMPRESSEX icd; + int result; + + icd.dwFlags = 0; + + icd.lpbiSrc = lpbiFormat; + icd.lpSrc = 0; + + icd.lpbiDst = lpbi; + icd.lpDst = 0; + + icd.xSrc=icd.ySrc=0; + icd.dxSrc=lpbiFormat->biWidth; + icd.dySrc=abs(lpbiFormat->biHeight); + + icd.xDst=icd.yDst=0; + icd.dxDst=lpbi->biWidth; + icd.dyDst=abs(lpbi->biHeight); + + //icd.ckid = 0; + STORE_ALL; + result=ICSendMessage(hic,command,(long)&icd,sizeof(icd)); + REST_ALL; + return result; +} + + +/*********************************************************************** * ICSendMessage [MSVFW.40] */ LRESULT VFWAPI diff --git a/loader/wine/vfw.h b/loader/wine/vfw.h index e60f83c502..a72da79c89 100644 --- a/loader/wine/vfw.h +++ b/loader/wine/vfw.h @@ -377,6 +377,7 @@ typedef struct { long VFWAPIV ICDecompress(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits); +long VFWAPIV ICDecompressEx(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits); #define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \ @@ -385,12 +386,24 @@ long VFWAPIV ICDecompress(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,voi (long)(void*)(lpbiOutput) \ ) +#define ICDecompressBeginEx(hic, lpbiInput, lpbiOutput) \ + ICUniversalEx( \ + hic, ICM_DECOMPRESSEX_BEGIN, (long)(void*)(lpbiInput), \ + (long)(void*)(lpbiOutput) \ + ) + #define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \ ICSendMessage( \ hic,ICM_DECOMPRESS_QUERY, (long)(void*)(lpbiInput), \ (long) (void*)(lpbiOutput) \ ) +#define ICDecompressQueryEx(hic, lpbiInput, lpbiOutput) \ + ICUniversalEx( \ + hic,ICM_DECOMPRESSEX_QUERY, (long)(void*)(lpbiInput), \ + (long) (void*)(lpbiOutput) \ + ) + #define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \ ((long)ICSendMessage( \ hic,ICM_DECOMPRESS_GET_FORMAT, (long)(void*)(lpbiInput), \ |