]>
git.saurik.com Git - wxWidgets.git/blob - src/unix/utilsx11.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/unix/utilsx11.cpp
3 // Purpose: Miscellaneous X11 functions
4 // Author: Mattia Barbon
8 // Copyright: (c) wxWindows team
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 #if defined(__WXX11__) || defined(__WXGTK__) || defined(__WXMOTIF__)
14 #include "wx/unix/utilsx11.h"
15 #include "wx/iconbndl.h"
20 #pragma message disable nosimpint
23 #include <X11/Xatom.h>
25 #pragma message enable nosimpint
28 void wxSetIconsX11( WXDisplay
* display
, WXWindow window
,
29 const wxIconBundle
& ib
)
32 size_t i
, max
= ib
.m_icons
.GetCount();
34 for( i
= 0; i
< max
; ++i
)
35 size
+= 2 + ib
.m_icons
[i
].GetWidth() * ib
.m_icons
[i
].GetHeight();
37 Atom net_wm_icon
= XInternAtom( (Display
*)display
, "_NET_WM_ICON", 0 );
41 wxUint32
* data
= new wxUint32
[size
];
44 for( i
= 0; i
< max
; ++i
)
46 const wxImage image
= ib
.m_icons
[i
].ConvertToImage();
47 int width
= image
.GetWidth(), height
= image
.GetHeight();
48 unsigned char* imageData
= image
.GetData();
49 unsigned char* imageDataEnd
= imageData
+ ( width
* height
* 3 );
50 bool hasMask
= image
.HasMask();
51 unsigned char rMask
, gMask
, bMask
;
52 unsigned char r
, g
, b
, a
;
56 rMask
= image
.GetMaskRed();
57 gMask
= image
.GetMaskGreen();
58 bMask
= image
.GetMaskBlue();
64 while( imageData
< imageDataEnd
) {
68 if( hasMask
&& r
== rMask
&& g
== gMask
&& b
== bMask
)
73 *ptr
++ = ( a
<< 24 ) | ( r
<< 16 ) | ( g
<< 8 ) | b
;
79 XChangeProperty( (Display
*)display
,
84 (unsigned char*)data
, size
);
89 XDeleteProperty( (Display
*)display
,