pzData = (char *)zBits; // const_cast is harmless
}
+ if (nDepth > 24)
+ nDepth = 24; // MAX supported in PM
memset(&vHeader, '\0', 16);
vHeader.cbFix = 16;
vHeader.cx = (USHORT)nWidth;
hDCScreen = ::GpiQueryDevice(hPSScreen);
::DevQueryCaps(hDCScreen, CAPS_COLOR_BITCOUNT, 1L, &lBitCount);
+ if (lBitCount > 24)
+ lBitCount = 24;
+
memset(&vHeader, '\0', 16);
vHeader.cbFix = 16;
vHeader.cx = nW;
vHeader.cPlanes = 1L;
vHeader.cBitCount = 24;
- memset(&vInfo, '\0', 16);
- vInfo.cbFix = 16;
- vInfo.cx = (ULONG)nWidth;
- vInfo.cy = (ULONG)nHeight;
- vInfo.cPlanes = 1L;
- vInfo.cBitCount = 24;
//
// Memory for DIB data
//
wxFAIL_MSG(wxT("could not allocate memory for DIB"));
return FALSE;
}
+ memset(pucBits, '\0', (nBytePerLine * nHeight));
//
// Create and set the device-dependent bitmap
HDC hDC = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE);
HPS hPS = ::GpiCreatePS(vHabmain, hDC, &vSize, PU_PELS | GPIA_ASSOC);
LONG lScans;
- HDC hDCScreen = ::WinOpenWindowDC(HWND_DESKTOP);
+ HDC hDCScreen = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE);
HPS hPSScreen;
HBITMAP hBmp;
HBITMAP hBmpOld;
+ memset(&vInfo, '\0', 16);
+ vInfo.cbFix = 16;
+ vInfo.cx = (ULONG)nWidth;
+ vInfo.cy = (ULONG)nHeight;
+ vInfo.cPlanes = 1;
+ vInfo.cBitCount = 24; // Set to desired count going in
+
hBmp = ::GpiCreateBitmap( hPS
,&vHeader
,0L
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
}
+ //
+ // Debug stuff
+ //
hPSScreen = ::GpiCreatePS( vHabmain
,hDCScreen
//
if (rImage.HasMask())
{
- vHeader.cbFix = sizeof(BITMAPINFOHEADER2);
+ vHeader.cbFix = 16;
vHeader.cx = nWidth;
vHeader.cy = nHeight;
vHeader.cPlanes = 1;
- vHeader.cBitCount = 1;
+ vHeader.cBitCount = 24;
hBmp = ::GpiCreateBitmap( hPS
,&vHeader
,0L
else
nHeight = nSizeLimit / nBytePerLine;
vHeader.cy = (DWORD)(nHeight);
- vHeader.cbImage = nBytePerLine * nHeight;
nOrigin = 0;
unsigned char cRed = rImage.GetMaskRed();
//
nHeight = nHRemain;
vHeader.cy = (DWORD)(nHeight);
- vHeader.cbImage = nBytePerLine * nHeight;
}
ptbits = pucBits;
for (int j = 0; j < nHeight; j++)
pMask->SetMaskBitmap((WXHBITMAP)hBmp);
SetMask(pMask);
- hBmpOld = ::GpiSetBitmap(hPS, hBmp);
+ hBmpOld = ::GpiSetBitmap(hPS, hBmpOld);
}
//
//
::GpiSetBitmap(hPS, NULLHANDLE);
::GpiDestroyPS(hPS);
+ ::DevCloseDC(hDCScreen);
::DevCloseDC(hDC);
free(pucBits);
return TRUE;
free(pData);
return wxNullImage;
}
+ memset(lpBits, '\0', (nBytePerLine * nHeight));
+ hBitmap = (HBITMAP)GetHBITMAP();
//
// May already be selected into a PS
,&vSizlPage
,PU_PELS | GPIA_ASSOC
);
- hBitmap = (HBITMAP)GetHBITMAP();
if ((hOldBitmap = ::GpiSetBitmap(hPSMem, hBitmap)) == HBM_ERROR)
{
ERRORID vError;
HPS hMemPS = ::GpiCreatePS( vHabmain
,hMemDC
,&vSizlPage
- ,PU_PELS | GPIA_ASSOC | GPIT_MICRO
+ ,PU_PELS | GPIA_ASSOC
);
::GpiSetColor(hMemPS, OS2RGB(0, 0, 0));
::GpiSetBackColor(hMemPS, OS2RGB(255, 255, 255) );