/* * mmioClose - cover for mmsystem function mmioClose */ UINT PASCAL mmioClose( HMMIO hmmio, UINT flags ) { UINT rc; LPMMINFOLIST curr,prev; rc = __mmioClose( hmmio, flags ); curr = mminfoListHead; prev = NULL; while( curr != NULL ) { if( curr->handle == hmmio ) { DPMIFreeHugeAlias( curr->alias, curr->size ); if( prev == NULL ) { mminfoListHead = curr->next; } else { prev->next = curr->next; } free( curr ); break; } prev = curr; curr = curr->next; } return( rc ); } /* mmioOpen */
/* * __GetBitmapBits - make sure to get alias right for bits */ LONG FAR PASCAL __GetBitmapBits( HBITMAP bm, DWORD dw, LPSTR bits ) { DWORD alias; LONG rc; DPMIGetHugeAlias( (DWORD) bits, &alias, dw ); rc = GetBitmapBits( bm, dw, (LPSTR) alias ); DPMIFreeHugeAlias( alias, dw ); return( rc ); } /* __GetBitmapBits */
/* * mmioWrite - cover for mmsystem function mmioWrite */ LONG PASCAL mmioWrite( HMMIO hmmio, const char *pch, LONG cch ) { LONG rc; DWORD alias; DPMIGetHugeAlias( (DWORD) pch, &alias, cch ); rc = __mmioWrite( hmmio, (HPSTR) alias, cch ); DPMIFreeHugeAlias( alias, cch ); return( rc ); } /* mmioWrite */
/* * mmioRead - cover for mmsystem function mmioRead */ LONG PASCAL mmioRead( HMMIO hmmio, HPSTR pch, LONG cch ) { LONG rc; DWORD alias; DPMIGetHugeAlias( (DWORD) pch, &alias, cch ); rc = __mmioRead( hmmio, (HPSTR) alias, cch ); DPMIFreeHugeAlias( alias, cch ); return( rc ); } /* mmioRead */
/* * __CreateBitmap - cover for CreateBitmap, makes sure lpbits are ok */ HBITMAP FAR PASCAL __CreateBitmap(int height, int width, BYTE nplanes, BYTE bitcount, DWORD lpbits ) { DWORD alias,size; HBITMAP rc; size = (DWORD)nplanes * (DWORD)height * (DWORD)width * (DWORD)bitcount; size = (size + 7) >> 3; DPMIGetHugeAlias( (DWORD) lpbits, &alias, size ); rc = CreateBitmap( height, width, nplanes, bitcount, (LPVOID) alias ); DPMIFreeHugeAlias( alias, size ); return( rc ); } /* CreateBitmap */
/* * __GetDIBits - make sure the right alias gets in for lpbits */ int FAR PASCAL __GetDIBits(HDC hdc,HANDLE hbitmap,WORD start,WORD num, LPSTR lpbits ,LPBITMAPINFO bmi,WORD usage) { DWORD size; DWORD alias; int rc; size = (DWORD) num * getScanLineSize( &bmi->bmiHeader ); DPMIGetHugeAlias( (DWORD) lpbits, &alias, size ); rc = GetDIBits( hdc, hbitmap, start, num, (LPSTR) alias, bmi, usage ); DPMIFreeHugeAlias( alias, size ); return( rc ); } /* __GetDIBits */
/* * __SetDIBitsToDevice - make sure the right alias gets in for lpbits */ int FAR PASCAL __SetDIBitsToDevice(HDC hdc,WORD destx,WORD desty, WORD width,WORD height, WORD srcx,WORD srcy,WORD start, WORD num, LPSTR lpbits, LPBITMAPINFO bmi,WORD usage ) { DWORD size; DWORD alias; int rc; size = (DWORD) num * getScanLineSize( &bmi->bmiHeader ); DPMIGetHugeAlias( (DWORD) lpbits, &alias, size ); rc = SetDIBitsToDevice( hdc, destx, desty, width, height, srcx, srcy, start, num, (LPSTR) alias, bmi, usage ); DPMIFreeHugeAlias( alias, size ); return( rc ); } /* __SetDIBitsToDevice */
/* * __StretchDIBits */ int FAR PASCAL __StretchDIBits( HDC hdc, WORD destx, WORD desty, WORD destwidth, WORD destheight, WORD srcx, WORD srcy, WORD srcwidth, WORD srcheight, DWORD lpbits, LPBITMAPINFO lpbitsinfo, WORD usage, DWORD rop ) { DWORD size; DWORD alias; int rc; // size = (DWORD) srcheight * getScanLineSize( &lpbitsinfo->bmiHeader ); size = (DWORD) lpbitsinfo->bmiHeader.biHeight * getScanLineSize( &lpbitsinfo->bmiHeader ); DPMIGetHugeAlias( (DWORD) lpbits, &alias, size ); rc = StretchDIBits( hdc, destx, desty, destwidth, destheight, srcx, srcy, srcwidth, srcheight, (LPVOID) alias, lpbitsinfo, usage, rop ); DPMIFreeHugeAlias( alias, size ); return( rc ); } /* __StretchDIBits */
/* * __CreateBitmapIndirect - cover for CreateBitmapIndirect */ HBITMAP FAR PASCAL __CreateBitmapIndirect( LPBITMAP bm ) { HBITMAP rc; DWORD alias,size; LPSTR old; size = (DWORD) bm->bmHeight * (DWORD) bm->bmWidthBytes; size *= (DWORD) bm->bmPlanes; DPMIGetHugeAlias( (DWORD) bm->bmBits, &alias, size ); old = bm->bmBits; bm->bmBits = (LPSTR) alias; rc = CreateBitmapIndirect( bm ); DPMIFreeHugeAlias( alias, size ); bm->bmBits = old; return( rc ); } /* __CreateBitmapIndirect */
/* * __CreateDIBitmap - make sure to get alias right for lpInitBits */ HBITMAP FAR PASCAL __CreateDIBitmap( HDC hDC, LPBITMAPINFOHEADER lpInfoHeader, DWORD dwUsage,DWORD lpInitBits, LPBITMAPINFO lpInitInfo, WORD wUsage ) { DWORD size; DWORD alias; HBITMAP rc; if( lpInitBits != 0L ) { size = (DWORD) lpInitInfo->bmiHeader.biHeight * getScanLineSize( &lpInitInfo->bmiHeader ); DPMIGetHugeAlias( (DWORD) lpInitBits, &alias, size ); } else { alias = 0; } rc = CreateDIBitmap( hDC, lpInfoHeader, dwUsage, (LPSTR) alias, lpInitInfo, wUsage ); if( alias != 0 ) { DPMIFreeHugeAlias( alias, size ); } return( rc ); } /* __CreateDIBitmap */