]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dibutils.cpp
another segfault fix
[wxWidgets.git] / src / msw / dibutils.cpp
index 6736a42d66083e2eef5f3ddf70e4e4128ab1df1a..6ee22bf3042319fadbeb2a968f3f190f656c45ed 100644 (file)
@@ -48,7 +48,7 @@
 
 #define BFT_ICON   0x4349   /* 'IC' */
 #define BFT_BITMAP 0x4d42   /* 'BM' */
 
 #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 */
 
 #ifndef SEEK_CUR
 /* flags for _lseek */
@@ -78,7 +78,7 @@
 
 
 /*
 
 
 /*
- *  Clear the System Palette so that we can ensure an identity palette 
+ *  Clear the System Palette so that we can ensure an identity palette
  *  mapping for fast performance.
  */
 
  *  mapping for fast performance.
  */
 
@@ -102,7 +102,7 @@ void wxClearSystemPalette(void)
   UINT nMapped = 0;
   BOOL bOK = FALSE;
   int  nOK = 0;
   UINT nMapped = 0;
   BOOL bOK = FALSE;
   int  nOK = 0;
-  
+
   // *** Reset everything in the system palette to black
   for(Counter = 0; Counter < 256; Counter++)
   {
   // *** Reset everything in the system palette to black
   for(Counter = 0; Counter < 256; Counter++)
   {
@@ -162,26 +162,25 @@ int wxDibWriteFile(LPTSTR szFile, LPBITMAPINFOHEADER lpbi)
 
   // write file header
   BITMAPFILEHEADER bmf;
 
   // write file header
   BITMAPFILEHEADER bmf;
-  bmf.bfType = 'BM';
+  bmf.bfType = BFT_BITMAP;
   bmf.bfSize = sizeof(bmf) + size;
   bmf.bfReserved1 = 0;
   bmf.bfReserved2 = 0;
   bmf.bfOffBits = sizeof(bmf) + (char FAR*)(wxDibPtr(lpbi)) - (char FAR*)lpbi;
   bmf.bfSize = sizeof(bmf) + size;
   bmf.bfReserved1 = 0;
   bmf.bfReserved2 = 0;
   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);
-//   printf("la regamos1");
-    return 0;
-  }
-#else
-  if (_hwrite(fh, (LPBYTE)(&bmf), sizeof(bmf))<0 ||
-  _hwrite(fh, (LPBYTE)lpbi, size)<0) {
+#if 1 // defined( __WATCOMC__) || defined(__VISUALC__) || defined(__SC__) || defined(__SALFORDC__) || defined(__MWERKS__) || wxUSE_NORLANDER_HEADERS
+  #define HWRITE_2ND_ARG_TYPE   LPCSTR
+#else // don't know who needs this...
+  #define HWRITE_2ND_ARG_TYPE   LPBYTE
+#endif
+
+  if ( _hwrite(fh, (HWRITE_2ND_ARG_TYPE)(&bmf), sizeof(bmf)) < 0 ||
+       _hwrite(fh, (HWRITE_2ND_ARG_TYPE)lpbi, size) < 0 )
+  {
     _lclose(fh);
     _lclose(fh);
-//   printf("la regamos1");
     return 0;
   }
     return 0;
   }
-#endif
+
+#undef HWRITE_2ND_ARG_TYPE
 
   _lclose(fh);
   return 1;
 
   _lclose(fh);
   return 1;
@@ -322,8 +321,8 @@ PDIB wxDibReadBitmapInfo(HFILE fh)
             bi.biSize               = sizeof(BITMAPINFOHEADER);
             bi.biWidth              = (DWORD)bc.bcWidth;
             bi.biHeight             = (DWORD)bc.bcHeight;
             bi.biSize               = sizeof(BITMAPINFOHEADER);
             bi.biWidth              = (DWORD)bc.bcWidth;
             bi.biHeight             = (DWORD)bc.bcHeight;
-            bi.biPlanes             =  (UINT)bc.bcPlanes;
-            bi.biBitCount           =  (UINT)bc.bcBitCount;
+            bi.biPlanes             = (WORD)bc.bcPlanes;
+            bi.biBitCount           = (WORD)bc.bcBitCount;
             bi.biCompression        = BI_RGB;
             bi.biSizeImage          = 0;
             bi.biXPelsPerMeter      = 0;
             bi.biCompression        = BI_RGB;
             bi.biSizeImage          = 0;
             bi.biXPelsPerMeter      = 0;
@@ -417,7 +416,7 @@ BOOL wxDibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage)
         return FALSE;
 
     nColors = wxDibNumColors(pdib);
         return FALSE;
 
     nColors = wxDibNumColors(pdib);
-    
+
     if (nColors == 3 && wxDibCompression(pdib) == BI_BITFIELDS)
         nColors = 0;
 
     if (nColors == 3 && wxDibCompression(pdib) == BI_BITFIELDS)
         nColors = 0;
 
@@ -550,7 +549,7 @@ static void xlatClut4(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat)
 #define RLE_EOF     1
 #define RLE_JMP     2
 
 #define RLE_EOF     1
 #define RLE_JMP     2
 
-static void xlatRle8(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat)
+static void xlatRle8(BYTE FAR *pb, DWORD WXUNUSED(dwSize), BYTE FAR *xlat)
 {
     BYTE    cnt;
     BYTE    b;
 {
     BYTE    cnt;
     BYTE    b;
@@ -596,7 +595,7 @@ static void xlatRle8(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat)
     }
 }
 
     }
 }
 
-static void xlatRle4(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat)
+static void xlatRle4(BYTE FAR *WXUNUSED(pb), DWORD WXUNUSED(dwSize), BYTE FAR *WXUNUSED(xlat))
 {
 }
 
 {
 }
 
@@ -709,7 +708,7 @@ HPALETTE wxMakePalette(const BITMAPINFO FAR* Info, UINT flags)
   HPALETTE hPalette;
   const RGBQUAD FAR* rgb = Info->bmiColors;
 
   HPALETTE hPalette;
   const RGBQUAD FAR* rgb = Info->bmiColors;
 
-  WORD nColors = Info->bmiHeader.biClrUsed;
+  WORD nColors = (WORD)Info->bmiHeader.biClrUsed;
   if (nColors) {
    LOGPALETTE* logPal = (LOGPALETTE*)
      new BYTE[sizeof(LOGPALETTE) + (nColors-1)*sizeof(PALETTEENTRY)];
   if (nColors) {
    LOGPALETTE* logPal = (LOGPALETTE*)
      new BYTE[sizeof(LOGPALETTE) + (nColors-1)*sizeof(PALETTEENTRY)];