]>
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 if( ib
.m_icons
[i
].Ok() )
36 size
+= 2 + ib
.m_icons
[i
].GetWidth() * ib
.m_icons
[i
].GetHeight();
38 Atom net_wm_icon
= XInternAtom( (Display
*)display
, "_NET_WM_ICON", 0 );
42 wxUint32
* data
= new wxUint32
[size
];
45 for( i
= 0; i
< max
; ++i
)
47 const wxImage image
= ib
.m_icons
[i
].ConvertToImage();
48 int width
= image
.GetWidth(), height
= image
.GetHeight();
49 unsigned char* imageData
= image
.GetData();
50 unsigned char* imageDataEnd
= imageData
+ ( width
* height
* 3 );
51 bool hasMask
= image
.HasMask();
52 unsigned char rMask
, gMask
, bMask
;
53 unsigned char r
, g
, b
, a
;
57 rMask
= image
.GetMaskRed();
58 gMask
= image
.GetMaskGreen();
59 bMask
= image
.GetMaskBlue();
65 while( imageData
< imageDataEnd
) {
69 if( hasMask
&& r
== rMask
&& g
== gMask
&& b
== bMask
)
74 *ptr
++ = ( a
<< 24 ) | ( r
<< 16 ) | ( g
<< 8 ) | b
;
80 XChangeProperty( (Display
*)display
,
85 (unsigned char*)data
, size
);
90 XDeleteProperty( (Display
*)display
,