Applied part of #10034: wxImage::ConvertToDisabled()
[wxWidgets.git] / interface / wx / icon.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: icon.h
3 // Purpose: interface of wxIcon
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9
10
11 /**
12 In wxIcon context this value means: "use the screen depth".
13 */
14 #define wxICON_SCREEN_DEPTH (-1)
15
16
17 /**
18 @class wxIcon
19
20 An icon is a small rectangular bitmap usually used for denoting a minimized
21 application.
22
23 It differs from a wxBitmap in always having a mask associated with it for
24 transparent drawing. On some platforms, icons and bitmaps are implemented
25 identically, since there is no real distinction between a wxBitmap with a
26 mask and an icon; and there is no specific icon format on some platforms
27 (X-based applications usually standardize on XPMs for small bitmaps and icons).
28 However, some platforms (such as Windows) make the distinction, so a
29 separate class is provided.
30
31 @remarks
32 It is usually desirable to associate a pertinent icon with a frame.
33 Icons can also be used for other purposes, for example with wxTreeCtrl and wxListCtrl.
34 Icons have different formats on different platforms therefore separate icons
35 will usually be created for the different environments.
36 Platform-specific methods for creating a wxIcon structure are catered for,
37 and this is an occasion where conditional compilation will probably be required.
38 Note that a new icon must be created for every time the icon is to be used
39 for a new window. In Windows, the icon will not be reloaded if it has already
40 been used.
41 An icon allocated to a frame will be deleted when the frame is deleted.
42 For more information please see @ref overview_bitmap.
43
44 @library{wxcore}
45 @category{gdi}
46
47 @stdobjects
48 ::wxNullIcon
49
50 @see @ref overview_bitmap, @ref overview_bitmap_supportedformats,
51 wxDC::DrawIcon, wxCursor
52 */
53 class wxIcon : public wxBitmap
54 {
55 public:
56 /**
57 Default ctor.
58
59 Constructs an icon object with no data; an assignment or another member
60 function such as LoadFile() must be called subsequently.
61 */
62 wxIcon();
63
64 /**
65 Copy ctor.
66 */
67 wxIcon(const wxIcon& icon);
68
69 /*
70 Creates an icon from the given data, which can be of arbitrary type.
71
72 wxIcon(void* data, int type, int width, int height, int depth = -1);
73
74 NOTE: this ctor is not implemented by all ports, is somewhat useless
75 without further description of the "data" supported formats and
76 uses 'int type' instead of wxBitmapType, so don't document it.
77 */
78
79 /**
80 Creates an icon from an array of bits.
81 You should only use this function for monochrome bitmaps (depth 1) in
82 portable programs: in this case the bits parameter should contain an XBM image.
83
84 For other bit depths, the behaviour is platform dependent: under Windows,
85 the data is passed without any changes to the underlying CreateBitmap() API.
86 Under other platforms, only monochrome bitmaps may be created using this
87 constructor and wxImage should be used for creating colour bitmaps from
88 static data.
89
90 @param bits
91 Specifies an array of pixel values.
92 @param width
93 The width of the image.
94 @param height
95 The height of the image.
96
97 @onlyfor{wxmsw,wxosx}
98 */
99 wxIcon(const char bits[], int width, int height);
100
101 /**
102 Creates a bitmap from XPM data.
103 To use this constructor, you must first include an XPM file.
104 For example, assuming that the file mybitmap.xpm contains an XPM array
105 of character pointers called @e mybitmap:
106
107 @code
108 #include "mybitmap.xpm"
109 ...
110 wxIcon *icon = new wxIcon(mybitmap);
111 @endcode
112
113 A macro, wxICON, is available which creates an icon using an XPM on
114 the appropriate platform, or an icon resource on Windows.
115
116 @code
117 wxIcon icon(wxICON(mondrian));
118
119 // Equivalent to:
120 #if defined(__WXGTK__) || defined(__WXMOTIF__)
121 wxIcon icon(mondrian_xpm);
122 #endif
123
124 #if defined(__WXMSW__)
125 wxIcon icon("mondrian");
126 #endif
127 @endcode
128 */
129 wxIcon(const char* const* bits);
130
131 /**
132 Loads an icon from a file or resource.
133
134 @param name
135 This can refer to a resource name or a filename under MS Windows and X.
136 Its meaning is determined by the @a type parameter.
137 @param type
138 May be one of the ::wxBitmapType values and indicates which type of
139 bitmap should be loaded. See the note in the class detailed description.
140 Note that the wxICON_DEFAULT_TYPE constant has different value under
141 different wxWidgets ports. See the icon.h header for the value it takes
142 for a specific port.
143 @param desiredWidth
144 Specifies the desired width of the icon. This parameter only has
145 an effect in Windows where icon resources can contain several icons
146 of different sizes.
147 @param desiredHeight
148 Specifies the desired height of the icon. This parameter only has
149 an effect in Windows where icon resources can contain several icons
150 of different sizes.
151
152 @see LoadFile()
153 */
154 wxIcon(const wxString& name, wxBitmapType type = wxICON_DEFAULT_TYPE,
155 int desiredWidth = -1, int desiredHeight = -1);
156
157 /**
158 Loads an icon from the specified location.
159 */
160 wxIcon(const wxIconLocation& loc);
161
162 /**
163 Destructor.
164 See @ref overview_refcount_destruct for more info.
165
166 If the application omits to delete the icon explicitly, the icon will be
167 destroyed automatically by wxWidgets when the application exits.
168
169 @warning
170 Do not delete an icon that is selected into a memory device context.
171 */
172 virtual ~wxIcon();
173
174 /**
175 Returns disabled (dimmed) version of the icon. MSW only.
176 @since 2.9.0
177 */
178 wxIcon ConvertToDisabled(unsigned char brightness = 255) const;
179
180 /**
181 Copies @a bmp bitmap to this icon.
182 Under MS Windows the bitmap must have mask colour set.
183
184 @see LoadFile()
185 */
186 void CopyFromBitmap(const wxBitmap& bmp);
187
188 /**
189 Gets the colour depth of the icon.
190 A value of 1 indicates a monochrome icon.
191 */
192 int GetDepth() const;
193
194 /**
195 Gets the height of the icon in pixels.
196
197 @see GetWidth()
198 */
199 int GetHeight() const;
200
201 /**
202 Gets the width of the icon in pixels.
203
204 @see GetHeight()
205 */
206 int GetWidth() const;
207
208 /**
209 Returns @true if icon data is present.
210 */
211 virtual bool IsOk() const;
212
213 /**
214 Loads an icon from a file or resource.
215
216 @param name
217 Either a filename or a Windows resource name.
218 The meaning of name is determined by the @a type parameter.
219 @param type
220 One of the ::wxBitmapType values; see the note in the class
221 detailed description.
222 Note that the wxICON_DEFAULT_TYPE constant has different value under
223 different wxWidgets ports. See the icon.h header for the value it takes
224 for a specific port.
225 @param desiredWidth
226 Specifies the desired width of the icon. This parameter only has
227 an effect in Windows where icon resources can contain several icons
228 of different sizes.
229 @param desiredHeight
230 Specifies the desired height of the icon. This parameter only has
231 an effect in Windows where icon resources can contain several icons
232 of different sizes.
233
234 @return @true if the operation succeeded, @false otherwise.
235 */
236 bool LoadFile(const wxString& name, wxBitmapType type = wxICON_DEFAULT_TYPE,
237 int desiredWidth = -1, int desiredHeight = -1);
238
239 /**
240 Sets the depth member (does not affect the icon data).
241
242 @param depth
243 Icon depth.
244 */
245 void SetDepth(int depth);
246
247 /**
248 Sets the height member (does not affect the icon data).
249
250 @param height
251 Icon height in pixels.
252 */
253 void SetHeight(int height);
254
255 /**
256 Sets the width member (does not affect the icon data).
257
258 @param width
259 Icon width in pixels.
260 */
261 void SetWidth(int width);
262
263 /**
264 Assignment operator, using @ref overview_refcount.
265
266 @param icon
267 Icon to assign.
268 */
269 wxIcon& operator=(const wxIcon& icon);
270 };
271
272 /**
273 An empty wxIcon.
274 */
275 wxIcon wxNullIcon;
276
277