// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __VMS
+#define XShapeQueryExtension XSHAPEQUERYEXTENSION
+#endif
+
#include "wx/x11/privx.h"
+#ifdef HAVE_XSHAPE
+
+ #ifndef WX_PRECOMP
+ #include "wx/bitmap.h"
+ #include "wx/region.h"
+ #endif
+
+ #ifdef __VMS
+ #include "wx/vms_x_fix.h"
+ #include <X11/shape.h>
+ #else
+ #include <X11/extensions/shape.h>
+ #endif
+
+ #include "wx/dcmemory.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XShape code
+// ----------------------------------------------------------------------------
+
+#ifdef HAVE_XSHAPE
+
+bool wxDoSetShape( Display* xdisplay,
+ Window xwindow,
+ const wxRegion& region )
+{
+ int dummy1, dummy2;
+
+ if( !XShapeQueryExtension( xdisplay, &dummy1, &dummy2 ) )
+ return false;
+
+ if( region.IsEmpty() )
+ {
+ XShapeCombineMask( xdisplay, xwindow, ShapeBounding, 0, 0,
+ None, ShapeSet );
+ }
+ else
+ {
+ // wxRegion::ConvertToBitmap gives us the wrong Pixmap:
+ // polychrome and with black and white reversed
+ wxRect box = region.GetBox();
+ wxBitmap bmp(box.GetRight(), box.GetBottom(), 1);
+ wxMemoryDC dc;
+ dc.SelectObject(bmp);
+ dc.SetBackground(*wxBLACK_BRUSH);
+ dc.Clear();
+ dc.SetDeviceClippingRegion(region);
+ dc.SetBackground(*wxWHITE_BRUSH);
+ dc.Clear();
+ dc.SelectObject(wxNullBitmap);
+
+ XShapeCombineMask( xdisplay, xwindow, ShapeBounding, 0, 0,
+ (Pixmap)bmp.GetDrawable(), ShapeSet );
+ }
+
+ return true;
+}
+
+#else
+
+bool wxDoSetShape( Display* WXUNUSED(xdisplay),
+ Window WXUNUSED(xwindow),
+ const wxRegion& WXUNUSED(region) )
+{
+ return false;
+}
+
+#endif
+
// ----------------------------------------------------------------------------
// wxXVisualInfo
// ----------------------------------------------------------------------------
XColor* colors = (XColor*) m_visualColormap;
for (int i = 0; i < m_visualColormapSize; i++)
- colors[i].pixel = i;
+ colors[i].pixel = i;
XQueryColors( dpy, DefaultColormap(dpy, vi->screen),
colors, m_visualColormapSize );
index |= (g >> (5 - m_visualGreenPrec)) << m_visualGreenShift;
index |= (b >> (5 - m_visualBluePrec)) << m_visualBlueShift;
}
- m_colorCube[ (r*1024) + (g*32) + b ] = index;
+ m_colorCube[ (r*1024) + (g*32) + b ] = (unsigned char)index;
}
}
}