X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c455ab932f89cc166fc38d3f2c2f942f6a130649..b4a2ab728bf4627ab2b41385b69e31f10c1fd3b1:/src/msw/dibutils.cpp diff --git a/src/msw/dibutils.cpp b/src/msw/dibutils.cpp index 3acbd1fbea..cd99d6f028 100644 --- a/src/msw/dibutils.cpp +++ b/src/msw/dibutils.cpp @@ -21,9 +21,9 @@ #endif #ifndef WX_PRECOMP -#include #include "wx/setup.h" #include "wx/defs.h" +#include "wx/string.h" #endif #include @@ -48,12 +48,33 @@ #define BFT_ICON 0x4349 /* 'IC' */ #define BFT_BITMAP 0x4d42 /* 'BM' */ -#define BFT_CURSOR 0x5450 /* 'PT' */ +#define BFT_CURSOR 0x5450 /* 'PT(' */ +#ifndef SEEK_CUR /* flags for _lseek */ #define SEEK_CUR 1 #define SEEK_END 2 #define SEEK_SET 0 +#endif + +/* Copied from PNGhandler for coompilation with MingW32, RR */ + +#ifndef GlobalAllocPtr +#define GlobalPtrHandle(lp) \ + ((HGLOBAL)GlobalHandle(lp)) + +#define GlobalLockPtr(lp) \ + ((BOOL)GlobalLock(GlobalPtrHandle(lp))) +#define GlobalUnlockPtr(lp) \ + GlobalUnlock(GlobalPtrHandle(lp)) + +#define GlobalAllocPtr(flags, cb) \ + (GlobalLock(GlobalAlloc((flags), (cb)))) +#define GlobalReAllocPtr(lp, cbNew, flags) \ + (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags)))) +#define GlobalFreePtr(lp) \ + (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp))) +#endif /* @@ -61,7 +82,7 @@ * mapping for fast performance. */ -void ClearSystemPalette(void) +void wxClearSystemPalette(void) { //*** A dummy palette setup struct @@ -125,19 +146,19 @@ void ClearSystemPalette(void) * bits.... */ -int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi) +int wxDibWriteFile(LPTSTR szFile, LPBITMAPINFOHEADER lpbi) { HFILE fh; OFSTRUCT of; - fh = OpenFile(szFile, &of, OF_WRITE | OF_CREATE); + fh = OpenFile(wxConvFile.cWX2MB(szFile), &of, OF_WRITE | OF_CREATE); if (!fh) { // printf("la regamos0"); return 0; } - long size = DibSize(lpbi); + long size = wxDibSize(lpbi); // write file header BITMAPFILEHEADER bmf; @@ -145,8 +166,8 @@ int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi) bmf.bfSize = sizeof(bmf) + size; bmf.bfReserved1 = 0; bmf.bfReserved2 = 0; - bmf.bfOffBits = sizeof(bmf) + (char far*)(DibPtr(lpbi)) - (char far*)lpbi; -#if defined( __WATCOMC__) || defined(__VISUALC__) || defined(__SC__) || defined(__SALFORDC__) || defined(__MWERKS__) + bmf.bfOffBits = sizeof(bmf) + (char FAR*)(wxDibPtr(lpbi)) - (char FAR*)lpbi; +#if defined( __WATCOMC__) || defined(__VISUALC__) || defined(__SC__) || defined(__SALFORDC__) || defined(__MWERKS__) || defined(wxUSE_NORLANDER_HEADERS) if (_hwrite(fh, (LPCSTR)(&bmf), sizeof(bmf))<0 || _hwrite(fh, (LPCSTR)lpbi, size)<0) { _lclose(fh); @@ -166,7 +187,7 @@ int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi) return 1; } -PDIB DibOpenFile(LPSTR szFile) +PDIB wxDibOpenFile(LPTSTR szFile) { HFILE fh; DWORD dwLen; @@ -181,7 +202,7 @@ PDIB DibOpenFile(LPSTR szFile) #define GetCurrentInstance() (HINSTANCE)SELECTOROF((LPVOID)&of) #endif - fh = OpenFile(szFile, &of, OF_READ); + fh = OpenFile(wxConvFile.cWX2MB(szFile), &of, OF_READ); if (fh == -1) { @@ -190,6 +211,8 @@ PDIB DibOpenFile(LPSTR szFile) // TODO: Unicode version #ifdef __WIN16__ h = FindResource(GetCurrentInstance(), szFile, RT_BITMAP); +#elif wxUSE_UNICODE + h = FindResourceW(GetCurrentInstance(), szFile, RT_BITMAP); #else h = FindResourceA(GetCurrentInstance(), szFile, RT_BITMAP); #endif @@ -208,7 +231,7 @@ PDIB DibOpenFile(LPSTR szFile) if (fh == -1) return NULL; - pdib = DibReadBitmapInfo(fh); + pdib = wxDibReadBitmapInfo(fh); if (!pdib) return NULL; @@ -216,7 +239,7 @@ PDIB DibOpenFile(LPSTR szFile) /* How much memory do we need to hold the DIB */ dwBits = pdib->biSizeImage; - dwLen = pdib->biSize + DibPaletteSize(pdib) + dwBits; + dwLen = pdib->biSize + wxDibPaletteSize(pdib) + dwBits; /* Can we get more memory? */ @@ -235,7 +258,7 @@ PDIB DibOpenFile(LPSTR szFile) if (pdib) { /* read in the bits */ - _hread(fh, (LPBYTE)pdib + (UINT)pdib->biSize + DibPaletteSize(pdib), dwBits); + _hread(fh, (LPBYTE)pdib + (UINT)pdib->biSize + wxDibPaletteSize(pdib), dwBits); } _lclose(fh); @@ -252,7 +275,7 @@ PDIB DibOpenFile(LPSTR szFile) * bitmap formats, but will always return a "new" BITMAPINFO. */ -PDIB DibReadBitmapInfo(HFILE fh) +PDIB wxDibReadBitmapInfo(HFILE fh) { DWORD off; int size; @@ -313,16 +336,16 @@ PDIB DibReadBitmapInfo(HFILE fh) break; } - nNumColors = DibNumColors(&bi); + nNumColors = wxDibNumColors(&bi); #if 0 if (bi.biSizeImage == 0) bi.biSizeImage = DibSizeImage(&bi); if (bi.biClrUsed == 0) - bi.biClrUsed = DibNumColors(&bi); + bi.biClrUsed = wxDibNumColors(&bi); #else - FixBitmapInfo(&bi); + wxFixBitmapInfo(&bi); #endif pdib = (PDIB)GlobalAllocPtr(GMEM_MOVEABLE,(LONG)bi.biSize + nNumColors * sizeof(RGBQUAD)); @@ -332,7 +355,7 @@ PDIB DibReadBitmapInfo(HFILE fh) *pdib = bi; - pRgb = DibColors(pdib); + pRgb = wxDibColors(pdib); if (nNumColors) { @@ -379,7 +402,7 @@ PDIB DibReadBitmapInfo(HFILE fh) * in the passed palette */ -BOOL DibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage) +BOOL wxDibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage) { PALETTEENTRY ape[256]; RGBQUAD FAR * pRgb; @@ -393,14 +416,14 @@ BOOL DibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage) if (!pdib) return FALSE; - nColors = DibNumColors(pdib); + nColors = wxDibNumColors(pdib); - if (nColors == 3 && DibCompression(pdib) == BI_BITFIELDS) + if (nColors == 3 && wxDibCompression(pdib) == BI_BITFIELDS) nColors = 0; if (nColors > 0) { - pRgb = DibColors(pdib); + pRgb = wxDibColors(pdib); switch (wUsage) { @@ -441,7 +464,7 @@ BOOL DibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage) * given number of bits per pixel */ -PDIB DibCreate(int bits, int dx, int dy) +PDIB wxDibCreate(int bits, int dx, int dy) { LPBITMAPINFOHEADER lpbi ; DWORD dwSizeImage; @@ -593,7 +616,7 @@ static void hmemmove(BYTE _huge *d, BYTE _huge *s, LONG len) * the colors of the given palette. */ -BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal) +BOOL wxDibMapToPalette(PDIB pdib, HPALETTE hpal) { LPBITMAPINFOHEADER lpbi; PALETTEENTRY pe; @@ -609,13 +632,13 @@ BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal) return FALSE; lpbi = (LPBITMAPINFOHEADER)pdib; - lpRgb = DibColors(pdib); + lpRgb = wxDibColors(pdib); GetObject(hpal,sizeof(int),(LPSTR)&nPalColors); - nDibColors = DibNumColors(pdib); + nDibColors = wxDibNumColors(pdib); if ((SizeImage = lpbi->biSizeImage) == 0) - SizeImage = DibSizeImage(lpbi); + SizeImage = wxDibSizeImage(lpbi); // // build a xlat table. from the current DIB colors to the given @@ -624,7 +647,7 @@ BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal) for (n=0; nbiClrUsed = nPalColors; // @@ -633,14 +656,14 @@ BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal) if (nPalColors > nDibColors) { GlobalReAllocPtr(lpbi, lpbi->biSize + nPalColors*sizeof(RGBQUAD) + SizeImage, 0); - hmemmove((BYTE _huge *)DibPtr(lpbi), (BYTE _huge *)lpBits, SizeImage); - lpBits = (LPBYTE)DibPtr(lpbi); + hmemmove((BYTE _huge *)wxDibPtr(lpbi), (BYTE _huge *)lpBits, SizeImage); + lpBits = (LPBYTE)wxDibPtr(lpbi); } else if (nPalColors < nDibColors) { - hmemcpy(DibPtr(lpbi), lpBits, SizeImage); + hmemcpy(wxDibPtr(lpbi), lpBits, SizeImage); GlobalReAllocPtr(lpbi, lpbi->biSize + nPalColors*sizeof(RGBQUAD) + SizeImage, 0); - lpBits = (LPBYTE)DibPtr(lpbi); + lpBits = (LPBYTE)wxDibPtr(lpbi); } // @@ -681,10 +704,10 @@ BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal) } -HPALETTE MakePalette(const BITMAPINFO FAR* Info, UINT flags) +HPALETTE wxMakePalette(const BITMAPINFO FAR* Info, UINT flags) { HPALETTE hPalette; - const RGBQUAD far* rgb = Info->bmiColors; + const RGBQUAD FAR* rgb = Info->bmiColors; WORD nColors = Info->bmiHeader.biClrUsed; if (nColors) { @@ -693,7 +716,7 @@ HPALETTE MakePalette(const BITMAPINFO FAR* Info, UINT flags) logPal->palVersion = 0x300; // Windows 3.0 version logPal->palNumEntries = nColors; - for (short n = 0; n < nColors; n++) { + for (WORD n = 0; n < nColors; n++) { logPal->palPalEntry[n].peRed = rgb[n].rgbRed; logPal->palPalEntry[n].peGreen = rgb[n].rgbGreen; logPal->palPalEntry[n].peBlue = rgb[n].rgbBlue;