]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dibutils.cpp
Fixed my fix
[wxWidgets.git] / src / msw / dibutils.cpp
index 3ae1f94dc9f194dcb70e78578a6949ad7d71f407..31bcfb7e29144c0c9b5b45d61ffebd8e2349507f 100644 (file)
@@ -21,9 +21,9 @@
 #endif
 
 #ifndef WX_PRECOMP
-#include <stdio.h>
 #include "wx/setup.h"
 #include "wx/defs.h"
+#include "wx/string.h"
 #endif
 
 #include <windows.h>
 
 #include "wx/msw/dibutils.h"
 
+#ifdef __WXWINE__
+  #include <module.h>
+#endif
+
 #if defined(__WIN32__)
 #if !defined(__MWERKS__) && !defined(__SALFORDC__)
     #include <memory.h>             // for _fmemcpy()
 #define BFT_BITMAP 0x4d42   /* 'BM' */
 #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
 
 
 /*
@@ -78,7 +103,7 @@ void ClearSystemPalette(void)
   BOOL bOK = FALSE;
   int  nOK = 0;
   
-  //*** Reset everything in the system palette to black
+  // *** Reset everything in the system palette to black
   for(Counter = 0; Counter < 256; Counter++)
   {
     Palette.aEntries[Counter].peRed = 0;
@@ -87,8 +112,12 @@ void ClearSystemPalette(void)
     Palette.aEntries[Counter].peFlags = PC_NOCOLLAPSE;
   }
 
-  //*** Create, select, realize, deselect, and delete the palette
+  // *** Create, select, realize, deselect, and delete the palette
+#ifdef __WXWINE__
+  ScreenDC = GetDC((HWND)NULL);
+#else
   ScreenDC = GetDC(NULL);
+#endif
   ScreenPalette = CreatePalette((LOGPALETTE *)&Palette);
 
   if (ScreenPalette)
@@ -99,7 +128,11 @@ void ClearSystemPalette(void)
     bOK = DeleteObject(ScreenPalette);
   }
 
+#ifdef __WXWINE__
+  nOK = ReleaseDC((HWND)NULL, ScreenDC);
+#else
   nOK = ReleaseDC(NULL, ScreenDC);
+#endif
 
   return;
 }
@@ -113,12 +146,12 @@ void ClearSystemPalette(void)
  *   bits....
  */
 
-int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi)
+int DibWriteFile(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");
@@ -133,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__)
+  bmf.bfOffBits = sizeof(bmf) + (char FAR*)(DibPtr(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);
@@ -154,7 +187,7 @@ int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi)
   return 1;
 }
 
-PDIB DibOpenFile(LPSTR szFile)
+PDIB DibOpenFile(LPTSTR szFile)
 {
    HFILE               fh;
    DWORD               dwLen;
@@ -169,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)
    {
@@ -178,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
@@ -243,7 +278,6 @@ PDIB DibOpenFile(LPSTR szFile)
 PDIB DibReadBitmapInfo(HFILE fh)
 {
     DWORD     off;
-    HANDLE    hbi = NULL;
     int       size;
     int       i;
     int       nNumColors;
@@ -673,7 +707,7 @@ BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal)
 HPALETTE MakePalette(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) {