]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/bitmap.cpp
Fixed various typos.
[wxWidgets.git] / src / x11 / bitmap.cpp
index e528547e835e1dca13ba9f3c8b3d11229adc770e..cded72e272f89cd6142b8e21a4fab87d1b4d7bb7 100644 (file)
 bool wxGetImageFromDrawable(GR_DRAW_ID drawable, int srcX, int srcY, int width, int height, wxImage& image);
 #endif
 
+static WXPixmap wxGetSubPixmap( WXDisplay* xdisplay, WXPixmap xpixmap,
+                                int x, int y, int width, int height,
+                                int depth );
+
 #if wxUSE_XPM
 #if wxHAVE_LIB_XPM
 #include <X11/xpm.h>
@@ -55,6 +59,24 @@ wxMask::wxMask()
     m_display = NULL;
 }
 
+wxMask::wxMask(const wxMask& mask)
+{
+    m_display = mask.m_display;
+    if ( !mask.m_bitmap )
+    {
+        m_bitmap = NULL;
+        return;
+    }
+
+    m_size = mask.m_size;
+
+    // Duplicate the mask bitmap using the existing wxGetSubPixmap() function.
+    // There are probably/surely better ways to do it.
+    m_bitmap = wxGetSubPixmap(m_display, mask.m_bitmap,
+                              0, 0, m_size.x, m_size.y,
+                              1);
+}
+
 wxMask::wxMask( const wxBitmap& bitmap, const wxColour& colour )
 {
     m_bitmap = NULL;
@@ -82,6 +104,8 @@ wxMask::~wxMask()
 bool wxMask::Create( const wxBitmap& bitmap,
                      const wxColour& colour )
 {
+    m_size = bitmap.GetSize();
+
 #if !wxUSE_NANOX
     if (m_bitmap)
     {
@@ -295,7 +319,7 @@ bool wxBitmapRefData::Create(int width, int height, int depth)
 #else // !wxUSE_NANOX
     Window xroot = RootWindow(m_display, xscreen);
 
-    *(depth == 1 ? &m_bitmap : &m_pixmap) = 
+    *(depth == 1 ? &m_bitmap : &m_pixmap) =
         XCreatePixmap(m_display, xroot, width, height, depth);
 #endif // wxUSE_NANOX/!wxUSE_NANOX
 
@@ -1072,8 +1096,7 @@ void wxBitmap::SetPalette(const wxPalette& palette)
                 wxT("cannot set palette for bitmap of this depth"));
 
     AllocExclusive();
-    delete M_BMPDATA->m_palette;
-    M_BMPDATA->m_palette = NULL;
+    wxDELETE(M_BMPDATA->m_palette);
 
     if (!palette.Ok()) return;