]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/bitmap.h
Make the CreateTool factories be public so they can be used from application code
[wxWidgets.git] / interface / wx / bitmap.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: bitmap.h
698d17c3 3// Purpose: interface of wxBitmap* classes
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
8024723d
FM
9
10/**
11 In wxBitmap and wxBitmapHandler context this value means: "use the screen depth".
12*/
13#define wxBITMAP_SCREEN_DEPTH (-1)
14
23324ae1
FM
15/**
16 @class wxBitmapHandler
7c913512 17
698d17c3
FM
18 This is the base class for implementing bitmap file loading/saving, and
19 bitmap creation from data.
23324ae1 20 It is used within wxBitmap and is not normally seen by the application.
7c913512 21
23324ae1 22 If you wish to extend the capabilities of wxBitmap, derive a class from
1413ac04 23 wxBitmapHandler and add the handler using wxBitmap::AddHandler() in your
c83d207b 24 application initialization.
7c913512 25
427c415b
FM
26 Note that all wxBitmapHandlers provided by wxWidgets are part of the
27 @ref page_libs_wxcore library.
28 For details about the default handlers, please see the note in the
29 wxBitmap class documentation.
30
23324ae1 31 @library{wxcore}
3c99e2fd 32 @category{gdi}
7c913512 33
698d17c3 34 @see @ref overview_bitmap, wxBitmap, wxIcon, wxCursor
23324ae1
FM
35*/
36class wxBitmapHandler : public wxObject
37{
38public:
39 /**
698d17c3
FM
40 Default constructor.
41
42 In your own default constructor, initialise the members m_name,
43 m_extension and m_type.
23324ae1
FM
44 */
45 wxBitmapHandler();
46
47 /**
48 Destroys the wxBitmapHandler object.
49 */
d2aa927a 50 virtual ~wxBitmapHandler();
23324ae1
FM
51
52 /**
698d17c3
FM
53 Creates a bitmap from the given data, which can be of arbitrary type.
54 The wxBitmap object @a bitmap is manipulated by this function.
55
7c913512 56 @param bitmap
4cc4bfaf 57 The wxBitmap object.
7c913512 58 @param width
4cc4bfaf 59 The width of the bitmap in pixels.
7c913512 60 @param height
4cc4bfaf 61 The height of the bitmap in pixels.
7c913512 62 @param depth
8024723d
FM
63 The depth of the bitmap in pixels.
64 If this is ::wxBITMAP_SCREEN_DEPTH, the screen depth is used.
7c913512 65 @param data
4cc4bfaf 66 Data whose type depends on the value of type.
7c913512 67 @param type
698d17c3 68 A bitmap type identifier - see ::wxBitmapType for a list
4cc4bfaf 69 of possible values.
698d17c3 70
d29a9a8a 71 @return @true if the call succeeded, @false otherwise (the default).
23324ae1 72 */
8024723d 73 virtual bool Create(wxBitmap* bitmap, const void* data, wxBitmapType type,
1413ac04 74 int width, int height, int depth = 1);
23324ae1
FM
75
76 /**
77 Gets the file extension associated with this handler.
78 */
8024723d 79 const wxString& GetExtension() const;
23324ae1
FM
80
81 /**
82 Gets the name of this handler.
83 */
8024723d 84 const wxString& GetName() const;
23324ae1
FM
85
86 /**
87 Gets the bitmap type associated with this handler.
88 */
8024723d 89 wxBitmapType GetType() const;
23324ae1
FM
90
91 /**
698d17c3
FM
92 Loads a bitmap from a file or resource, putting the resulting data into
93 @a bitmap.
94
7c913512 95 @param bitmap
4cc4bfaf 96 The bitmap object which is to be affected by this operation.
7c913512 97 @param name
4cc4bfaf
FM
98 Either a filename or a Windows resource name.
99 The meaning of name is determined by the type parameter.
7c913512 100 @param type
8024723d 101 See ::wxBitmapType for values this can take.
2fd0ada5
FM
102 @param desiredWidth
103 The desired width for the loaded bitmap.
104 @param desiredHeight
105 The desired height for the loaded bitmap.
698d17c3 106
d29a9a8a 107 @return @true if the operation succeeded, @false otherwise.
698d17c3 108
4cc4bfaf 109 @see wxBitmap::LoadFile, wxBitmap::SaveFile, SaveFile()
23324ae1 110 */
1413ac04
FM
111 virtual bool LoadFile(wxBitmap* bitmap, const wxString& name, wxBitmapType type,
112 int desiredWidth, int desiredHeight);
23324ae1
FM
113
114 /**
115 Saves a bitmap in the named file.
698d17c3 116
7c913512 117 @param bitmap
4cc4bfaf 118 The bitmap object which is to be affected by this operation.
7c913512 119 @param name
4cc4bfaf 120 A filename. The meaning of name is determined by the type parameter.
7c913512 121 @param type
8024723d 122 See ::wxBitmapType for values this can take.
7c913512 123 @param palette
4cc4bfaf 124 An optional palette used for saving the bitmap.
698d17c3 125
d29a9a8a 126 @return @true if the operation succeeded, @false otherwise.
698d17c3 127
4cc4bfaf 128 @see wxBitmap::LoadFile, wxBitmap::SaveFile, LoadFile()
23324ae1 129 */
1413ac04 130 virtual bool SaveFile(const wxBitmap* bitmap, const wxString& name, wxBitmapType type,
2fd0ada5 131 const wxPalette* palette = NULL) const;
23324ae1
FM
132
133 /**
134 Sets the handler extension.
698d17c3 135
7c913512 136 @param extension
4cc4bfaf 137 Handler extension.
23324ae1
FM
138 */
139 void SetExtension(const wxString& extension);
140
141 /**
142 Sets the handler name.
698d17c3 143
7c913512 144 @param name
4cc4bfaf 145 Handler name.
23324ae1
FM
146 */
147 void SetName(const wxString& name);
148
149 /**
150 Sets the handler type.
698d17c3 151
698d17c3 152 @param type
4cc4bfaf 153 Handler type.
23324ae1 154 */
8024723d 155 void SetType(wxBitmapType type);
23324ae1
FM
156};
157
158
159/**
160 @class wxBitmap
7c913512 161
23324ae1
FM
162 This class encapsulates the concept of a platform-dependent bitmap,
163 either monochrome or colour or colour with alpha channel support.
cbea3ec6 164
de022e4f
RR
165 If you need direct access the bitmap data instead going through
166 drawing to it using wxMemoryDC you need to use the wxPixelData
167 class (either wxNativePixelData for RGB bitmaps or wxAlphaPixelData
f090e4ef 168 for bitmaps with an additionally alpha channel).
7c913512 169
c83d207b
FM
170 Note that many wxBitmap functions take a @e type parameter, which is a
171 value of the ::wxBitmapType enumeration.
698d17c3
FM
172 The validity of those values depends however on the platform where your program
173 is running and from the wxWidgets configuration.
c83d207b
FM
174 If all possible wxWidgets settings are used:
175 - wxMSW supports BMP and ICO files, BMP and ICO resources;
176 - wxGTK supports XPM files;
177 - wxMac supports PICT resources;
178 - wxX11 supports XPM files, XPM data, XBM data;
179
180 In addition, wxBitmap can load and save all formats that wxImage can; see wxImage
181 for more info. Of course, you must have loaded the wxImage handlers
182 (see ::wxInitAllImageHandlers() and wxImage::AddHandler).
183 Note that all available wxBitmapHandlers for a given wxWidgets port are
184 automatically loaded at startup so you won't need to use wxBitmap::AddHandler.
698d17c3 185
fcd9ed6c
JC
186 More on the difference between wxImage and wxBitmap: wxImage is just a
187 buffer of RGB bytes with an optional buffer for the alpha bytes. It is all
188 generic, platform independent and image file format independent code. It
189 includes generic code for scaling, resizing, clipping, and other manipulations
190 of the image data. OTOH, wxBitmap is intended to be a wrapper of whatever is
191 the native image format that is quickest/easiest to draw to a DC or to be the
192 target of the drawing operations performed on a wxMemoryDC. By splitting the
193 responsibilities between wxImage/wxBitmap like this then it's easier to use
194 generic code shared by all platforms and image types for generic operations and
195 platform specific code where performance or compatibility is needed.
196
23324ae1
FM
197 @library{wxcore}
198 @category{gdi}
7c913512 199
23324ae1 200 @stdobjects
698d17c3 201 ::wxNullBitmap
7c913512 202
698d17c3 203 @see @ref overview_bitmap, @ref overview_bitmap_supportedformats,
de022e4f 204 wxDC::Blit, wxIcon, wxCursor, wxMemoryDC, wxImage, wxPixelData
23324ae1
FM
205*/
206class wxBitmap : public wxGDIObject
207{
208public:
23324ae1 209 /**
698d17c3
FM
210 Default constructor.
211
212 Constructs a bitmap object with no data; an assignment or another member
213 function such as Create() or LoadFile() must be called subsequently.
214 */
215 wxBitmap();
216
217 /**
218 Copy constructor, uses @ref overview_refcount "reference counting".
219 To make a real copy, you can use:
220
221 @code
222 wxBitmap newBitmap = oldBitmap.GetSubBitmap(
223 wxRect(0, 0, oldBitmap.GetWidth(), oldBitmap.GetHeight()));
224 @endcode
225 */
226 wxBitmap(const wxBitmap& bitmap);
227
8024723d
FM
228
229 /*
698d17c3
FM
230 Creates a bitmap from the given @a data which is interpreted in
231 platform-dependent manner.
232
233 @param data
234 Specifies the bitmap data in a platform-dependent format.
235 @param type
236 May be one of the ::wxBitmapType values and indicates which type of
237 bitmap does @a data contains. See the note in the class
238 detailed description.
239 @param width
240 Specifies the width of the bitmap.
241 @param height
242 Specifies the height of the bitmap.
243 @param depth
244 Specifies the depth of the bitmap.
245 If this is omitted, the display depth of the screen is used.
8024723d 246 wxBitmap(const void* data, int type, int width, int height, int depth = -1);
698d17c3 247
698d17c3 248
1413ac04 249 NOTE: this ctor is not implemented by all ports, is somewhat useless
8024723d
FM
250 without further description of the "data" supported formats and
251 uses 'int type' instead of wxBitmapType, so don't document it.
698d17c3 252 */
698d17c3
FM
253
254 /**
255 Creates a bitmap from the given array @a bits.
256 You should only use this function for monochrome bitmaps (depth 1) in
257 portable programs: in this case the bits parameter should contain an XBM image.
258
259 For other bit depths, the behaviour is platform dependent: under Windows,
260 the data is passed without any changes to the underlying CreateBitmap() API.
8024723d
FM
261 Under other platforms, only monochrome bitmaps may be created using this
262 constructor and wxImage should be used for creating colour bitmaps from
263 static data.
698d17c3 264
7c913512 265 @param bits
4cc4bfaf 266 Specifies an array of pixel values.
7c913512 267 @param width
4cc4bfaf 268 Specifies the width of the bitmap.
7c913512 269 @param height
4cc4bfaf 270 Specifies the height of the bitmap.
7c913512 271 @param depth
698d17c3 272 Specifies the depth of the bitmap.
8024723d 273 If this is omitted, then a value of 1 (monochrome bitmap) is used.
1058f652
MB
274
275 @beginWxPerlOnly
276 In wxPerl use Wx::Bitmap->newFromBits(bits, width, height, depth).
277 @endWxPerlOnly
698d17c3 278 */
ab6a33b4 279 wxBitmap(const char bits[], int width, int height, int depth = 1);
698d17c3
FM
280
281 /**
8024723d
FM
282 Creates a new bitmap. A depth of ::wxBITMAP_SCREEN_DEPTH indicates the
283 depth of the current screen or visual.
1413ac04 284
8024723d 285 Some platforms only support 1 for monochrome and ::wxBITMAP_SCREEN_DEPTH for
698d17c3
FM
286 the current colour setting.
287
288 A depth of 32 including an alpha channel is supported under MSW, Mac and GTK+.
289 */
8024723d 290 wxBitmap(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH);
732d8c74
FM
291
292 /**
293 @overload
294 */
295 wxBitmap(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH);
698d17c3
FM
296
297 /**
298 Creates a bitmap from XPM data.
1058f652
MB
299
300 @beginWxPerlOnly
301 In wxPerl use Wx::Bitmap->newFromXPM(data).
302 @endWxPerlOnly
698d17c3
FM
303 */
304 wxBitmap(const char* const* bits);
305
306 /**
307 Loads a bitmap from a file or resource.
308
7c913512 309 @param name
698d17c3
FM
310 This can refer to a resource name or a filename under MS Windows and X.
311 Its meaning is determined by the @a type parameter.
7c913512 312 @param type
698d17c3
FM
313 May be one of the ::wxBitmapType values and indicates which type of
314 bitmap should be loaded. See the note in the class detailed description.
cbea3ec6
FM
315 Note that the wxBITMAP_DEFAULT_TYPE constant has different value under
316 different wxWidgets ports. See the bitmap.h header for the value it takes
317 for a specific port.
698d17c3 318
4cc4bfaf 319 @see LoadFile()
23324ae1 320 */
cbea3ec6 321 wxBitmap(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
698d17c3
FM
322
323 /**
8024723d
FM
324 Creates this bitmap object from the given image.
325 This has to be done to actually display an image as you cannot draw an
326 image directly on a window.
698d17c3
FM
327
328 The resulting bitmap will use the provided colour depth (or that of the
8024723d
FM
329 current system if depth is ::wxBITMAP_SCREEN_DEPTH) which entails that a
330 colour reduction may take place.
698d17c3
FM
331
332 When in 8-bit mode (PseudoColour mode), the GTK port will use a color cube
333 created on program start-up to look up colors. This ensures a very fast conversion,
334 but the image quality won't be perfect (and could be better for photo images using
335 more sophisticated dithering algorithms).
336
337 On Windows, if there is a palette present (set with SetPalette), it will be
338 used when creating the wxBitmap (most useful in 8-bit display mode).
339 On other platforms, the palette is currently ignored.
340
341 @param img
342 Platform-independent wxImage object.
343 @param depth
344 Specifies the depth of the bitmap.
345 If this is omitted, the display depth of the screen is used.
346 */
8024723d 347 wxBitmap(const wxImage& img, int depth = wxBITMAP_SCREEN_DEPTH);
23324ae1
FM
348
349 /**
350 Destructor.
698d17c3
FM
351 See @ref overview_refcount_destruct for more info.
352
23324ae1
FM
353 If the application omits to delete the bitmap explicitly, the bitmap will be
354 destroyed automatically by wxWidgets when the application exits.
698d17c3
FM
355
356 @warning
23324ae1
FM
357 Do not delete a bitmap that is selected into a memory device context.
358 */
d2aa927a 359 virtual ~wxBitmap();
23324ae1
FM
360
361 /**
362 Adds a handler to the end of the static list of format handlers.
698d17c3 363
7c913512 364 @param handler
4cc4bfaf
FM
365 A new bitmap format handler object. There is usually only one instance
366 of a given handler class in an application session.
c83d207b
FM
367
368 Note that unlike wxImage::AddHandler, there's no documented list of
369 the wxBitmapHandlers available in wxWidgets.
370 This is because they are platform-specific and most important, they are
371 all automatically loaded at startup.
372
373 If you want to be sure that wxBitmap can load a certain type of image,
374 you'd better use wxImage::AddHandler.
698d17c3 375
4cc4bfaf 376 @see wxBitmapHandler
23324ae1
FM
377 */
378 static void AddHandler(wxBitmapHandler* handler);
379
380 /**
381 Deletes all bitmap handlers.
23324ae1
FM
382 This function is called by wxWidgets on exit.
383 */
384 static void CleanUpHandlers();
385
386 /**
387 Creates an image from a platform-dependent bitmap. This preserves
388 mask information so that bitmaps and images can be converted back
389 and forth without loss in that respect.
390 */
1413ac04 391 virtual wxImage ConvertToImage() const;
23324ae1
FM
392
393 /**
394 Creates the bitmap from an icon.
395 */
1413ac04 396 virtual bool CopyFromIcon(const wxIcon& icon);
23324ae1 397
698d17c3
FM
398 /**
399 Creates a fresh bitmap.
400 If the final argument is omitted, the display depth of the screen is used.
732d8c74
FM
401
402 @return @true if the creation was successful.
698d17c3 403 */
1413ac04 404 virtual bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH);
732d8c74
FM
405
406 /**
407 @overload
408 */
409 virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH);
698d17c3 410
8024723d 411 /*
23324ae1 412 Creates a bitmap from the given data, which can be of arbitrary type.
698d17c3
FM
413
414 @param data
415 Data whose type depends on the value of type.
416 @param type
417 A bitmap type identifier; see ::wxBitmapType for the list of values.
418 See the note in the class detailed description for more info.
7c913512 419 @param width
4cc4bfaf 420 The width of the bitmap in pixels.
7c913512 421 @param height
4cc4bfaf 422 The height of the bitmap in pixels.
7c913512 423 @param depth
4cc4bfaf 424 The depth of the bitmap in pixels. If this is -1, the screen depth is used.
698d17c3 425
d29a9a8a 426 @return @true if the call succeeded, @false otherwise.
698d17c3
FM
427
428 This overload depends on the @a type of data.
698d17c3 429
7c913512 430 virtual bool Create(const void* data, int type, int width,
698d17c3 431 int height, int depth = -1);
23324ae1 432
8024723d
FM
433 NOTE: leave this undoc for the same reason of the relative ctor.
434 */
435
23324ae1 436 /**
698d17c3
FM
437 Finds the handler with the given @a name.
438
d29a9a8a 439 @return A pointer to the handler if found, @NULL otherwise.
698d17c3
FM
440 */
441 static wxBitmapHandler* FindHandler(const wxString& name);
442
443 /**
444 Finds the handler associated with the given @a extension and @a type.
445
7c913512 446 @param extension
698d17c3 447 The file extension, such as "bmp" (without the dot).
7c913512 448 @param bitmapType
698d17c3
FM
449 The bitmap type managed by the handler, see ::wxBitmapType.
450
d29a9a8a 451 @return A pointer to the handler if found, @NULL otherwise.
23324ae1 452 */
7c913512
FM
453 static wxBitmapHandler* FindHandler(const wxString& extension,
454 wxBitmapType bitmapType);
698d17c3
FM
455
456 /**
457 Finds the handler associated with the given bitmap type.
458
459 @param bitmapType
460 The bitmap type managed by the handler, see ::wxBitmapType.
461
d29a9a8a 462 @return A pointer to the handler if found, @NULL otherwise.
698d17c3
FM
463
464 @see wxBitmapHandler
465 */
466
7c913512 467 static wxBitmapHandler* FindHandler(wxBitmapType bitmapType);
23324ae1
FM
468
469 /**
8024723d
FM
470 Gets the colour depth of the bitmap.
471 A value of 1 indicates a monochrome bitmap.
23324ae1 472 */
1413ac04 473 virtual int GetDepth() const;
23324ae1
FM
474
475 /**
476 Returns the static list of bitmap format handlers.
698d17c3 477
4cc4bfaf 478 @see wxBitmapHandler
23324ae1 479 */
382f12e4 480 static wxList& GetHandlers();
23324ae1
FM
481
482 /**
483 Gets the height of the bitmap in pixels.
c74b07ac
FM
484
485 @see GetWidth(), GetSize()
23324ae1 486 */
1413ac04 487 virtual int GetHeight() const;
23324ae1
FM
488
489 /**
490 Gets the associated mask (if any) which may have been loaded from a file
491 or set for the bitmap.
698d17c3 492
4cc4bfaf 493 @see SetMask(), wxMask
23324ae1 494 */
1413ac04 495 virtual wxMask* GetMask() const;
23324ae1
FM
496
497 /**
498 Gets the associated palette (if any) which may have been loaded from a file
499 or set for the bitmap.
698d17c3 500
4cc4bfaf 501 @see wxPalette
23324ae1 502 */
1413ac04 503 virtual wxPalette* GetPalette() const;
23324ae1
FM
504
505 /**
506 Returns a sub bitmap of the current one as long as the rect belongs entirely to
507 the bitmap. This function preserves bit depth and mask information.
508 */
1413ac04 509 virtual wxBitmap GetSubBitmap(const wxRect& rect) const;
23324ae1 510
c74b07ac
FM
511 /**
512 Returns the size of the bitmap in pixels.
513
514 @since 2.9.0
515
516 @see GetHeight(), GetWidth()
517 */
518 wxSize GetSize() const;
519
198c264d
JS
520 /**
521 Returns disabled (dimmed) version of the bitmap.
ac04aa99
VZ
522
523 This method is not available when <code>wxUSE_IMAGE == 0</code>.
524
198c264d
JS
525 @since 2.9.0
526 */
527 wxBitmap ConvertToDisabled(unsigned char brightness = 255) const;
528
23324ae1
FM
529 /**
530 Gets the width of the bitmap in pixels.
698d17c3 531
c74b07ac 532 @see GetHeight(), GetSize()
23324ae1 533 */
1413ac04 534 virtual int GetWidth() const;
23324ae1
FM
535
536 /**
537 Adds the standard bitmap format handlers, which, depending on wxWidgets
698d17c3
FM
538 configuration, can be handlers for Windows bitmap, Windows bitmap resource,
539 and XPM.
540
23324ae1 541 This function is called by wxWidgets on startup.
698d17c3 542
4cc4bfaf 543 @see wxBitmapHandler
23324ae1
FM
544 */
545 static void InitStandardHandlers();
546
547 /**
548 Adds a handler at the start of the static list of format handlers.
698d17c3 549
7c913512 550 @param handler
4cc4bfaf
FM
551 A new bitmap format handler object. There is usually only one instance
552 of a given handler class in an application session.
698d17c3 553
4cc4bfaf 554 @see wxBitmapHandler
23324ae1
FM
555 */
556 static void InsertHandler(wxBitmapHandler* handler);
557
558 /**
559 Returns @true if bitmap data is present.
560 */
0004982c 561 virtual bool IsOk() const;
23324ae1
FM
562
563 /**
564 Loads a bitmap from a file or resource.
698d17c3 565
7c913512 566 @param name
4cc4bfaf 567 Either a filename or a Windows resource name.
698d17c3 568 The meaning of name is determined by the @a type parameter.
7c913512 569 @param type
698d17c3
FM
570 One of the ::wxBitmapType values; see the note in the class
571 detailed description.
cbea3ec6
FM
572 Note that the wxBITMAP_DEFAULT_TYPE constant has different value under
573 different wxWidgets ports. See the bitmap.h header for the value it takes
574 for a specific port.
698d17c3 575
d29a9a8a 576 @return @true if the operation succeeded, @false otherwise.
698d17c3 577
23324ae1 578 @remarks A palette may be associated with the bitmap if one exists
4cc4bfaf
FM
579 (especially for colour Windows bitmaps), and if the
580 code supports it. You can check if one has been created
698d17c3
FM
581 by using the GetPalette() member.
582
4cc4bfaf 583 @see SaveFile()
23324ae1 584 */
cbea3ec6 585 virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
23324ae1
FM
586
587 /**
698d17c3
FM
588 Finds the handler with the given name, and removes it.
589 The handler is not deleted.
590
7c913512 591 @param name
4cc4bfaf 592 The handler name.
698d17c3 593
d29a9a8a 594 @return @true if the handler was found and removed, @false otherwise.
698d17c3 595
4cc4bfaf 596 @see wxBitmapHandler
23324ae1
FM
597 */
598 static bool RemoveHandler(const wxString& name);
599
600 /**
601 Saves a bitmap in the named file.
698d17c3 602
7c913512 603 @param name
4cc4bfaf 604 A filename. The meaning of name is determined by the type parameter.
7c913512 605 @param type
698d17c3
FM
606 One of the ::wxBitmapType values; see the note in the class
607 detailed description.
7c913512 608 @param palette
4cc4bfaf 609 An optional palette used for saving the bitmap.
698d17c3 610
d29a9a8a 611 @return @true if the operation succeeded, @false otherwise.
698d17c3 612
23324ae1 613 @remarks Depending on how wxWidgets has been configured, not all formats
4cc4bfaf 614 may be available.
698d17c3 615
4cc4bfaf 616 @see LoadFile()
23324ae1 617 */
1413ac04
FM
618 virtual bool SaveFile(const wxString& name, wxBitmapType type,
619 const wxPalette* palette = NULL) const;
23324ae1
FM
620
621 /**
622 Sets the depth member (does not affect the bitmap data).
698d17c3
FM
623
624 @todo since these functions do not affect the bitmap data,
625 why they exist??
626
7c913512 627 @param depth
4cc4bfaf 628 Bitmap depth.
23324ae1 629 */
1413ac04 630 virtual void SetDepth(int depth);
23324ae1
FM
631
632 /**
633 Sets the height member (does not affect the bitmap data).
698d17c3 634
7c913512 635 @param height
4cc4bfaf 636 Bitmap height in pixels.
23324ae1 637 */
1413ac04 638 virtual void SetHeight(int height);
23324ae1
FM
639
640 /**
641 Sets the mask for this bitmap.
698d17c3 642
23324ae1 643 @remarks The bitmap object owns the mask once this has been called.
698d17c3 644
4cc4bfaf 645 @see GetMask(), wxMask
23324ae1 646 */
1413ac04 647 virtual void SetMask(wxMask* mask);
23324ae1
FM
648
649 /**
650 Sets the associated palette. (Not implemented under GTK+).
698d17c3 651
7c913512 652 @param palette
4cc4bfaf 653 The palette to set.
698d17c3 654
4cc4bfaf 655 @see wxPalette
23324ae1 656 */
1413ac04 657 virtual void SetPalette(const wxPalette& palette);
23324ae1
FM
658
659 /**
660 Sets the width member (does not affect the bitmap data).
698d17c3 661
7c913512 662 @param width
4cc4bfaf 663 Bitmap width in pixels.
23324ae1 664 */
1413ac04 665 virtual void SetWidth(int width);
23324ae1
FM
666};
667
e54c96f1 668/**
698d17c3 669 An empty wxBitmap object.
e54c96f1
FM
670*/
671wxBitmap wxNullBitmap;
672
673
674
675
23324ae1
FM
676/**
677 @class wxMask
7c913512 678
23324ae1 679 This class encapsulates a monochrome mask bitmap, where the masked area is
698d17c3
FM
680 black and the unmasked area is white.
681
682 When associated with a bitmap and drawn in a device context, the unmasked
683 area of the bitmap will be drawn, and the masked area will not be drawn.
7c913512 684
23324ae1
FM
685 @library{wxcore}
686 @category{gdi}
7c913512 687
e54c96f1 688 @see wxBitmap, wxDC::Blit, wxMemoryDC
23324ae1
FM
689*/
690class wxMask : public wxObject
691{
692public:
698d17c3
FM
693
694 /**
695 Default constructor.
696 */
697 wxMask();
698
23324ae1
FM
699 /**
700 Constructs a mask from a bitmap and a palette index that indicates the
698d17c3
FM
701 background.
702 Not yet implemented for GTK.
703
7c913512 704 @param bitmap
4cc4bfaf 705 A valid bitmap.
7c913512 706 @param index
4cc4bfaf 707 Index into a palette, specifying the transparency colour.
23324ae1 708 */
7c913512 709 wxMask(const wxBitmap& bitmap, int index);
698d17c3
FM
710
711 /**
712 Constructs a mask from a monochrome bitmap.
713
714 @beginWxPythonOnly
715 This is the default constructor for wxMask in wxPython.
716 @endWxPythonOnly
717 */
718 wxMask(const wxBitmap& bitmap);
719
720 /**
721 Constructs a mask from a bitmap and a colour that indicates the background.
722
723 @beginWxPythonOnly
724 wxPython has an alternate wxMask constructor matching this form called wxMaskColour.
725 @endWxPythonOnly
726 */
727 wxMask(const wxBitmap& bitmap, const wxColour& colour);
23324ae1
FM
728
729 /**
730 Destroys the wxMask object and the underlying bitmap data.
731 */
d2aa927a 732 virtual ~wxMask();
23324ae1 733
23324ae1
FM
734 /**
735 Constructs a mask from a bitmap and a palette index that indicates the
698d17c3
FM
736 background.
737 Not yet implemented for GTK.
738
7c913512 739 @param bitmap
4cc4bfaf 740 A valid bitmap.
7c913512 741 @param index
4cc4bfaf 742 Index into a palette, specifying the transparency colour.
23324ae1 743 */
698d17c3
FM
744 bool Create(const wxBitmap& bitmap, int index);
745
746 /**
747 Constructs a mask from a monochrome bitmap.
748 */
23324ae1 749 bool Create(const wxBitmap& bitmap);
698d17c3
FM
750
751 /**
752 Constructs a mask from a bitmap and a colour that indicates the background.
753 */
7c913512 754 bool Create(const wxBitmap& bitmap, const wxColour& colour);
23324ae1 755};
e54c96f1 756