]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/microwin.c
no need to %import gdi.i
[wxWidgets.git] / src / msw / microwin.c
index 3763ce7872142e1fa9c40343a0100cca379f3394..fbb20d0cd4771f7d756046ed9f3eb37eeb4f98d7 100644 (file)
@@ -6,20 +6,16 @@
 // Created:     2001-05-31
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:     wxWindows licence
+// Licence:     wxWidgets licence
 /////////////////////////////////////////////////////////////////////////////
 
 */
 
-#ifdef __GNUG__
-    #pragma implementation "microwin.h"
-#endif
-
 #include "mwtypes.h"
 #include "windows.h"
 #include "wintern.h"
 #include "device.h"
-#include "wx/microwin/microwin.h"
+#include "wx/msw/microwin.h"
 
 void GdMoveCursor(MWCOORD x, MWCOORD y);
 void MwSetCursor(HWND wp, PMWCURSOR pcursor);
@@ -283,3 +279,87 @@ int GetObject(HGDIOBJ hObj, int sz, LPVOID logObj)
         return 0;
     }
 }
+
+/* Not in wingdi.c in earlier versions of MicroWindows */
+#if 0
+HBITMAP WINAPI
+CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight)
+{
+       MWBITMAPOBJ *   hbitmap;
+       int             size;
+       int             linelen;
+
+       if(!hdc)
+               return NULL;
+
+       nWidth = MWMAX(nWidth, 1);
+       nHeight = MWMAX(nHeight, 1);
+
+       /* calc memory allocation size and linelen from width and height*/
+       if(!GdCalcMemGCAlloc(hdc->psd, nWidth, nHeight, 0, 0, &size, &linelen))
+               return NULL;
+
+       /* allocate gdi object*/
+       hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
+       if(!hbitmap)
+               return NULL;
+       hbitmap->hdr.type = OBJ_BITMAP;
+       hbitmap->hdr.stockobj = FALSE;
+       hbitmap->width = nWidth;
+       hbitmap->height = nHeight;
+
+       /* create compatible with hdc*/
+       hbitmap->planes = hdc->psd->planes;
+       hbitmap->bpp = hdc->psd->bpp;
+       hbitmap->linelen = linelen;
+       hbitmap->size = size;
+
+       return (HBRUSH)hbitmap;
+}
+#endif
+
+/* Attempt by JACS to create arbitrary bitmap
+ * TODO: make use of lpData
+ */
+
+HBITMAP WINAPI
+CreateBitmap( int nWidth, int nHeight, int nPlanes, int bPP, LPCVOID lpData)
+{
+       MWBITMAPOBJ *   hbitmap;
+       int             size;
+       int             linelen;
+
+        HDC hScreenDC;
+
+        hScreenDC = GetDC(NULL);
+
+       nWidth = MWMAX(nWidth, 1);
+       nHeight = MWMAX(nHeight, 1);
+
+       /* calc memory allocation size and linelen from width and height*/
+       if(!GdCalcMemGCAlloc(hScreenDC->psd, nWidth, nHeight, nPlanes, bPP, &size, &linelen))
+        {
+                ReleaseDC(NULL, hScreenDC);
+               return NULL;
+       }
+        ReleaseDC(NULL, hScreenDC);
+
+       /* allocate gdi object*/
+       hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
+       if(!hbitmap)
+               return NULL;
+       hbitmap->hdr.type = OBJ_BITMAP;
+       hbitmap->hdr.stockobj = FALSE;
+       hbitmap->width = nWidth;
+       hbitmap->height = nHeight;
+
+       /* create with specified parameters */
+       hbitmap->planes = nPlanes;
+       hbitmap->bpp = bPP;
+       hbitmap->linelen = linelen;
+       hbitmap->size = size;
+
+        /* TODO: copy data */
+
+       return (HBRUSH)hbitmap;
+}