]>
git.saurik.com Git - wxWidgets.git/blob - src/common/iconbndl.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxIconBundle
4 // Author: Mattia Barbon
7 // Copyright: (c) Mattia barbon
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
12 #pragma implementation "iconbndl.h"
15 // For compilers that support precompilation, includes "wx.h".
16 #include "wx/wxprec.h"
23 #include "wx/settings.h"
33 #include "wx/iconbndl.h"
34 #include "wx/arrimpl.cpp"
36 WX_DEFINE_OBJARRAY(wxIconArray
)
38 const wxIconBundle
& wxIconBundle::operator =( const wxIconBundle
& ic
)
40 if( this == &ic
) return *this;
42 size_t i
, max
= ic
.m_icons
.GetCount();
45 for( i
= 0; i
< max
; ++i
)
46 m_icons
.Add( ic
.m_icons
[i
] );
51 void wxIconBundle::DeleteIcons()
56 void wxIconBundle::AddIcon( const wxString
& file
, long type
)
58 size_t count
= wxImage::GetImageCount( file
, type
);
63 for( i
= 0; i
< count
; ++i
)
65 if( !image
.LoadFile( file
, type
, i
) )
67 wxLogError( _("Failed to load image %d from file '%s'."),
72 tmp
.CopyFromBitmap( wxBitmap( image
) );
77 const wxIcon
& wxIconBundle::GetIcon( const wxSize
& size
) const
79 size_t i
, max
= m_icons
.GetCount();
80 wxCoord sysX
= wxSystemSettings::GetMetric( wxSYS_ICON_X
),
81 sysY
= wxSystemSettings::GetMetric( wxSYS_ICON_Y
);
84 for( i
= 0; i
< max
; ++i
)
86 if( !m_icons
[i
].Ok() )
88 wxCoord sx
= m_icons
[i
].GetWidth(), sy
= m_icons
[i
].GetHeight();
90 if( sx
== size
.x
&& sy
== size
.y
)
92 // keep track if there is a system-size icon
93 if( sx
== sysX
&& sy
== sysY
)
94 sysIcon
= &m_icons
[i
];
97 // return the system-sized icon if we've got one
98 if( sysIcon
) return *sysIcon
;
99 // return the first icon, if we have one
100 return max
> 0 ? m_icons
[0] : wxNullIcon
;
103 void wxIconBundle::AddIcon( const wxIcon
& icon
)
105 size_t i
, max
= m_icons
.GetCount();
107 for( i
= 0; i
< max
; ++i
)
109 wxIcon
& tmp
= m_icons
[i
];
110 if( tmp
.Ok() && tmp
.GetWidth() == icon
.GetWidth() &&
111 tmp
.GetHeight() == icon
.GetHeight() )