removed wxLoadBitmap() introduced in 1.37 -> 1.38; just use DIBs under Windows CE as well, we surely shouldn't duplicate system functions _especially_ on a platform with limited resources such as CE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
71f2ad997a
commit
a91bcd3b54
@ -54,15 +54,6 @@
|
||||
#include "wx/listimpl.cpp"
|
||||
WX_DEFINE_LIST(wxGDIImageHandlerList);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// auxiliary functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXWINCE__
|
||||
// Used in wxBMPFileHandler::LoadFile
|
||||
HBITMAP wxLoadBMP(const wxString& filename) ;
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -372,14 +363,8 @@ bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap,
|
||||
|
||||
wxDIB dib(name);
|
||||
|
||||
bool ok = dib.IsOk() && bitmap->CopyFromDIB(dib);
|
||||
return ok;
|
||||
return dib.IsOk() && bitmap->CopyFromDIB(dib);
|
||||
#else
|
||||
WXHBITMAP hBitmap = (WXHBITMAP)wxLoadBMP(name);
|
||||
if(hBitmap) {
|
||||
bitmap->SetHBITMAP(hBitmap);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@ -622,80 +607,3 @@ wxSize wxGetHiconSize(HICON hicon)
|
||||
|
||||
#endif // __WXMICROWIN__
|
||||
|
||||
#ifdef __WXWINCE__
|
||||
// Used in wxBMPFileHandler::LoadFile
|
||||
HBITMAP wxLoadBMP(const wxString& filename)
|
||||
{
|
||||
wxFile file;
|
||||
if(!file.Open(filename))
|
||||
return 0;
|
||||
|
||||
// The first part of the file contains the file header.
|
||||
// This will tell us if it is a bitmap, how big the header is, and how big
|
||||
// the file is. The header size in the file header includes the color table.
|
||||
BITMAPFILEHEADER BmpFileHdr;
|
||||
BITMAPINFO *pBmpInfo = (BITMAPINFO*)malloc(sizeof(BITMAPINFO)+255*sizeof(RGBQUAD));
|
||||
BYTE* pBits = 0;
|
||||
HBITMAP hBitmap = 0;
|
||||
|
||||
if(file.Read(&BmpFileHdr, sizeof(BmpFileHdr))==sizeof(BmpFileHdr)
|
||||
&& !strncmp((char*)&BmpFileHdr.bfType,"BM",2)
|
||||
&& file.Read(pBmpInfo, sizeof(BITMAPINFOHEADER))==sizeof(BITMAPINFOHEADER)
|
||||
&& pBmpInfo->bmiHeader.biSize == sizeof(BITMAPINFOHEADER)) {
|
||||
|
||||
|
||||
unsigned int nColors = pBmpInfo->bmiHeader.biClrUsed ?
|
||||
pBmpInfo->bmiHeader.biClrUsed : 1 << pBmpInfo->bmiHeader.biBitCount;
|
||||
if (nColors < 1
|
||||
|| file.Read(pBmpInfo->bmiColors, nColors * sizeof(RGBQUAD))
|
||||
== (ssize_t)(nColors * sizeof(RGBQUAD))) {
|
||||
|
||||
// So how big the bitmap surface is.
|
||||
int nBitsSize = BmpFileHdr.bfSize - BmpFileHdr.bfOffBits;
|
||||
|
||||
// Allocate the memory for the bits and read the bits from the file.
|
||||
pBits = (BYTE*) malloc(nBitsSize*2);
|
||||
if (pBits) {
|
||||
// Seek to the bits in the file.
|
||||
file.Seek(BmpFileHdr.bfOffBits);
|
||||
|
||||
// read the bits
|
||||
if(file.Read(pBits, nBitsSize)==nBitsSize) {
|
||||
// Everything went OK.
|
||||
pBmpInfo->bmiHeader.biSizeImage = nBitsSize;
|
||||
|
||||
//HBITMAP hBitmap=SetBitmap((LPBITMAPINFO)pBmpInfo, pBits);
|
||||
//DWORD dwBitmapInfoSize = sizeof(BITMAPINFO) + nColors*sizeof(RGBQUAD);
|
||||
|
||||
// Create a DC which will be used to get DIB, then create DIBsection
|
||||
HDC hDC = ::GetDC(NULL);
|
||||
if (hDC) {
|
||||
LPVOID bits;
|
||||
hBitmap = CreateDIBSection(hDC, (const BITMAPINFO*) pBmpInfo,
|
||||
DIB_RGB_COLORS, &bits, NULL, 0);
|
||||
ReleaseDC(0,hDC);
|
||||
|
||||
if (hBitmap) {
|
||||
DWORD dwImageSize = pBmpInfo->bmiHeader.biSizeImage;
|
||||
if (dwImageSize == 0) {
|
||||
int nBytesPerLine = pBmpInfo->bmiHeader.biWidth * pBmpInfo->bmiHeader.biBitCount;
|
||||
nBytesPerLine = ( (nBytesPerLine + 31) & (~31) ) / 8;
|
||||
dwImageSize = nBytesPerLine * pBmpInfo->bmiHeader.biHeight;
|
||||
}
|
||||
memcpy(bits, pBits, dwImageSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(pBmpInfo)
|
||||
free(pBmpInfo);
|
||||
if(pBits)
|
||||
free(pBits);
|
||||
|
||||
return hBitmap;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user