1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/iconbndl.h
3 // Purpose:     wxIconBundle
4 // Author:      Mattia barbon
5 // Modified by:
6 // Created:     23.03.02
7 // RCS-ID:      $Id: iconbndl.h 49563 2007-10-31 20:46:21Z VZ $
8 // Copyright:   (c) Mattia Barbon
9 // Licence:     wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_ICONBNDL_H_
13 #define _WX_ICONBNDL_H_
14 
15 #include "wx/dynarray.h"
16 // for wxSize
17 #include "wx/gdicmn.h"
18 
19 class WXDLLIMPEXP_FWD_CORE wxIcon;
20 class WXDLLIMPEXP_FWD_BASE wxString;
21 
22 WX_DECLARE_EXPORTED_OBJARRAY( wxIcon, wxIconArray );
23 
24 // this class can't load bitmaps of type wxBITMAP_TYPE_ICO_RESOURCE,
25 // if you need them, you have to load them manually and call
26 // wxIconCollection::AddIcon
27 class WXDLLEXPORT wxIconBundle
28 {
29 public:
30     // default constructor
wxIconBundle()31     wxIconBundle() : m_icons() {}
32     // initializes the bundle with the icon(s) found in the file
wxIconBundle(const wxString & file,long type)33     wxIconBundle( const wxString& file, long type ) : m_icons()
34         { AddIcon( file, type ); }
35     // initializes the bundle with a single icon
wxIconBundle(const wxIcon & icon)36     wxIconBundle( const wxIcon& icon ) : m_icons()
37         { AddIcon( icon ); }
38 
39     const wxIconBundle& operator =( const wxIconBundle& ic );
wxIconBundle(const wxIconBundle & ic)40     wxIconBundle( const wxIconBundle& ic ) : m_icons()
41         { *this = ic; }
42 
~wxIconBundle()43     ~wxIconBundle() { DeleteIcons(); }
44 
45     // adds all the icons contained in the file to the collection,
46     // if the collection already contains icons with the same
47     // width and height, they are replaced
48     void AddIcon( const wxString& file, long type );
49     // adds the icon to the collection, if the collection already
50     // contains an icon with the same width and height, it is
51     // replaced
52     void AddIcon( const wxIcon& icon );
53 
54     // returns the icon with the given size; if no such icon exists,
55     // returns the icon with size wxSYS_ICON_[XY]; if no such icon exists,
56     // returns the first icon in the bundle
57     const wxIcon& GetIcon( const wxSize& size ) const;
58     // equivalent to GetIcon( wxSize( size, size ) )
59     const wxIcon& GetIcon( wxCoord size = wxDefaultCoord ) const
60         { return GetIcon( wxSize( size, size ) ); }
61 private:
62     // delete all icons
63     void DeleteIcons();
64 public:
65     wxIconArray m_icons;
66 };
67 
68 #endif
69     // _WX_ICONBNDL_H_
70