]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bitmap.cpp
implemented ScrollLines/Pages; fixed bug in Thaw()
[wxWidgets.git] / src / msw / bitmap.cpp
index 46cbb8f13864b8826dc8140085aed56e55eba4a3..8e8b4e0832f465edce4c334a0f119a3b146e76e2 100644 (file)
 #include "wx/msw/private.h"
 #include "wx/log.h"
 
+#if !defined(__WXMICROWIN__)
 #include "wx/msw/dib.h"
+#endif
+
 #include "wx/image.h"
 #include "wx/xpmdecod.h"
 
@@ -112,6 +115,7 @@ void wxBitmap::Init()
 
 bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon)
 {
+#ifndef __WXMICROWIN__
     // it may be either HICON or HCURSOR
     HICON hicon = (HICON)icon.GetHandle();
 
@@ -145,6 +149,9 @@ bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon)
 #endif // WXWIN_COMPATIBILITY_2
 
     return TRUE;
+#else
+    return FALSE;
+#endif
 }
 
 #endif // Win32
@@ -219,6 +226,7 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
 {
     Init();
 
+#ifndef __WXMICROWIN__
     wxBitmapRefData *refData = new wxBitmapRefData;
     m_refData = refData;
 
@@ -234,9 +242,9 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
         // we assume that it is in XBM format which is not quite the same as
         // the format CreateBitmap() wants because the order of bytes in the
         // line is inversed!
-        static const size_t bytesPerLine = (width + 7) / 8;
-        static const size_t padding = bytesPerLine % 2;
-        static const size_t len = height * ( padding + bytesPerLine );
+        const size_t bytesPerLine = (width + 7) / 8;
+        const size_t padding = bytesPerLine % 2;
+        const size_t len = height * ( padding + bytesPerLine );
         data = (char *)malloc(len);
         const char *src = bits;
         char *dst = data;
@@ -279,6 +287,7 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
     }
 
     SetHBITMAP((WXHBITMAP)hbmp);
+#endif
 }
 
 // Create from XPM data
@@ -288,15 +297,15 @@ bool wxBitmap::CreateFromXpm(const char **data)
     Init();
 
     wxCHECK_MSG( data != NULL, FALSE, wxT("invalid bitmap data") )
-    
+
     wxXPMDecoder decoder;
     wxImage img = decoder.ReadData(data);
     wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid bitmap data") )
-    
-    *this = img.ConvertToBitmap();
+
+    *this = wxBitmap(img);
     return TRUE;
 #else
-       return FALSE;
+    return FALSE;
 #endif
 }
 
@@ -323,6 +332,7 @@ wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
 
 bool wxBitmap::Create(int w, int h, int d)
 {
+#ifndef __WXMICROWIN__
     UnRef();
 
     m_refData = new wxBitmapRefData;
@@ -358,8 +368,10 @@ bool wxBitmap::Create(int w, int h, int d)
 #if WXWIN_COMPATIBILITY_2
     GetBitmapData()->m_ok = hbmp != 0;
 #endif // WXWIN_COMPATIBILITY_2
-
     return Ok();
+#else
+    return FALSE;
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -370,6 +382,10 @@ bool wxBitmap::Create(int w, int h, int d)
 
 bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
 {
+#ifdef __WXMICROWIN__
+    // TODO
+    return FALSE;
+#else
     wxCHECK_MSG( image.Ok(), FALSE, wxT("invalid image") )
 
     m_refData = new wxBitmapRefData();
@@ -592,10 +608,15 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
     if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
 
     return TRUE;
+#endif
 }
 
 wxImage wxBitmap::ConvertToImage() const
 {
+#ifdef __WXMICROWIN__
+    // TODO
+    return wxImage();
+#else
     wxImage image;
 
     wxCHECK_MSG( Ok(), wxNullImage, wxT("invalid bitmap") );
@@ -720,6 +741,7 @@ wxImage wxBitmap::ConvertToImage() const
     free(lpBits);
 
     return image;
+#endif
 }
 
 #endif // wxUSE_IMAGE
@@ -799,6 +821,7 @@ bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *pal
 
 wxBitmap wxBitmap::GetSubBitmap( const wxRect& rect) const
 {
+#ifndef __WXMICROWIN__
     wxCHECK_MSG( Ok() &&
                  (rect.x >= 0) && (rect.y >= 0) &&
                  (rect.x+rect.width <= GetWidth()) &&
@@ -834,6 +857,9 @@ wxBitmap wxBitmap::GetSubBitmap( const wxRect& rect) const
     DeleteDC(dcSrc);
 
     return ret;
+#else
+    return wxBitmap();
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -876,6 +902,9 @@ void wxBitmap::SetMask(wxMask *mask)
 // Contributed by Frederic Villeneuve <frederic.villeneuve@natinst.com>
 wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
 {
+#ifdef __WXMICROWIN__
+    return wxBitmap();
+#else
     wxMemoryDC      memDC;
     wxBitmap        tmpBitmap(GetWidth(), GetHeight(), dc.GetDepth());
     HPALETTE        hPal = (HPALETTE) NULL;
@@ -920,6 +949,7 @@ wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
     wxFreeDIB(lpDib);
 
     return tmpBitmap;
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -963,6 +993,7 @@ wxMask::~wxMask()
 // Create a mask from a mono bitmap (copies the bitmap).
 bool wxMask::Create(const wxBitmap& bitmap)
 {
+#ifndef __WXMICROWIN__
     wxCHECK_MSG( bitmap.Ok() && bitmap.GetDepth() == 1, FALSE,
                  _T("can't create mask from invalid or not monochrome bitmap") );
 
@@ -987,6 +1018,9 @@ bool wxMask::Create(const wxBitmap& bitmap)
     SelectObject(destDC, 0);
     DeleteDC(destDC);
     return TRUE;
+#else
+    return FALSE;
+#endif
 }
 
 // Create a mask from a bitmap and a palette index indicating
@@ -1014,6 +1048,7 @@ bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex)
 // the transparent area
 bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
 {
+#ifndef __WXMICROWIN__
     wxCHECK_MSG( bitmap.Ok(), FALSE, _T("invalid bitmap in wxMask::Create") );
 
     if ( m_maskBitmap )
@@ -1039,6 +1074,10 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
 
     bool ok = TRUE;
 
+    // SelectObject() will fail
+    wxASSERT_MSG( !bitmap.GetSelectedInto(),
+                  _T("bitmap can't be selected in another DC") );
+
     HGDIOBJ hbmpSrcOld = ::SelectObject(srcDC, GetHbitmapOf(bitmap));
     if ( !hbmpSrcOld )
     {
@@ -1089,6 +1128,9 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
     ::DeleteDC(destDC);
 
     return ok;
+#else
+    return FALSE;
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -1155,6 +1197,7 @@ bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap),
 // DIB functions
 // ----------------------------------------------------------------------------
 
+#ifndef __WXMICROWIN__
 bool wxCreateDIB(long xSize, long ySize, long bitsPerPixel,
                  HPALETTE hPal, LPBITMAPINFO* lpDIBHeader)
 {
@@ -1202,6 +1245,7 @@ void wxFreeDIB(LPBITMAPINFO lpDIBHeader)
 {
     free(lpDIBHeader);
 }
+#endif
 
 // ----------------------------------------------------------------------------
 // other helper functions
@@ -1209,6 +1253,7 @@ void wxFreeDIB(LPBITMAPINFO lpDIBHeader)
 
 extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h)
 {
+#ifndef __WXMICROWIN__
     wxCHECK_MSG( hbmpMask, 0, _T("invalid bitmap in wxInvertMask") );
 
     // get width/height from the bitmap if not given
@@ -1246,4 +1291,7 @@ extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h)
     ::DeleteDC(hdcDst);
 
     return hbmpInvMask;
+#else
+    return 0;
+#endif
 }