]>
git.saurik.com Git - wxWidgets.git/blob - interface/bitmap.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxBitmap* classes
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
11 In wxBitmap and wxBitmapHandler context this value means: "use the screen depth".
13 #define wxBITMAP_SCREEN_DEPTH (-1)
16 @class wxBitmapHandler
19 This is the base class for implementing bitmap file loading/saving, and
20 bitmap creation from data.
21 It is used within wxBitmap and is not normally seen by the application.
23 If you wish to extend the capabilities of wxBitmap, derive a class from
24 wxBitmapHandler and add the handler using wxBitmap::AddHandler() in your
25 application initialisation.
30 @see @ref overview_bitmap, wxBitmap, wxIcon, wxCursor
32 class wxBitmapHandler
: public wxObject
38 In your own default constructor, initialise the members m_name,
39 m_extension and m_type.
44 Destroys the wxBitmapHandler object.
46 virtual ~wxBitmapHandler();
49 Creates a bitmap from the given data, which can be of arbitrary type.
50 The wxBitmap object @a bitmap is manipulated by this function.
55 The width of the bitmap in pixels.
57 The height of the bitmap in pixels.
59 The depth of the bitmap in pixels.
60 If this is ::wxBITMAP_SCREEN_DEPTH, the screen depth is used.
62 Data whose type depends on the value of type.
64 A bitmap type identifier - see ::wxBitmapType for a list
67 @returns @true if the call succeeded, @false otherwise (the default).
69 virtual bool Create(wxBitmap
* bitmap
, const void* data
, wxBitmapType type
,
70 int width
, int height
, int depth
= 1);
73 Gets the file extension associated with this handler.
75 const wxString
& GetExtension() const;
78 Gets the name of this handler.
80 const wxString
& GetName() const;
83 Gets the bitmap type associated with this handler.
85 wxBitmapType
GetType() const;
88 Loads a bitmap from a file or resource, putting the resulting data into
92 The bitmap object which is to be affected by this operation.
94 Either a filename or a Windows resource name.
95 The meaning of name is determined by the type parameter.
97 See ::wxBitmapType for values this can take.
99 The desired width for the loaded bitmap.
101 The desired height for the loaded bitmap.
103 @returns @true if the operation succeeded, @false otherwise.
105 @see wxBitmap::LoadFile, wxBitmap::SaveFile, SaveFile()
107 virtual bool LoadFile(wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
,
108 int desiredWidth
, int desiredHeight
);
111 Saves a bitmap in the named file.
114 The bitmap object which is to be affected by this operation.
116 A filename. The meaning of name is determined by the type parameter.
118 See ::wxBitmapType for values this can take.
120 An optional palette used for saving the bitmap.
122 @returns @true if the operation succeeded, @false otherwise.
124 @see wxBitmap::LoadFile, wxBitmap::SaveFile, LoadFile()
126 virtual bool SaveFile(const wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
,
127 const wxPalette
* palette
= NULL
) const;
130 Sets the handler extension.
135 void SetExtension(const wxString
& extension
);
138 Sets the handler name.
143 void SetName(const wxString
& name
);
146 Sets the handler type.
151 void SetType(wxBitmapType type
);
159 This class encapsulates the concept of a platform-dependent bitmap,
160 either monochrome or colour or colour with alpha channel support.
163 Many wxBitmap functions take a @e type parameter, which is a value of the
164 ::wxBitmapType enumeration.
165 The validity of those values depends however on the platform where your program
166 is running and from the wxWidgets configuration.
167 If all possible wxWidgets settings are used, the Windows platform supports BMP file,
168 BMP resource, XPM data, and XPM.
169 Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file.
170 Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.
171 In addition, wxBitmap can load and save all formats that wxImage; see wxImage for
172 more info. Of course, you must have wxImage handlers loaded.
180 @see @ref overview_bitmap, @ref overview_bitmap_supportedformats,
181 wxDC::Blit, wxIcon, wxCursor, wxBitmap, wxMemoryDC
183 class wxBitmap
: public wxGDIObject
189 Constructs a bitmap object with no data; an assignment or another member
190 function such as Create() or LoadFile() must be called subsequently.
195 Copy constructor, uses @ref overview_refcount "reference counting".
196 To make a real copy, you can use:
199 wxBitmap newBitmap = oldBitmap.GetSubBitmap(
200 wxRect(0, 0, oldBitmap.GetWidth(), oldBitmap.GetHeight()));
203 wxBitmap(const wxBitmap
& bitmap
);
207 Creates a bitmap from the given @a data which is interpreted in
208 platform-dependent manner.
211 Specifies the bitmap data in a platform-dependent format.
213 May be one of the ::wxBitmapType values and indicates which type of
214 bitmap does @a data contains. See the note in the class
215 detailed description.
217 Specifies the width of the bitmap.
219 Specifies the height of the bitmap.
221 Specifies the depth of the bitmap.
222 If this is omitted, the display depth of the screen is used.
223 wxBitmap(const void* data, int type, int width, int height, int depth = -1);
226 NOTE: this ctor is not implemented by all ports, is somewhat useless
227 without further description of the "data" supported formats and
228 uses 'int type' instead of wxBitmapType, so don't document it.
232 Creates a bitmap from the given array @a bits.
233 You should only use this function for monochrome bitmaps (depth 1) in
234 portable programs: in this case the bits parameter should contain an XBM image.
236 For other bit depths, the behaviour is platform dependent: under Windows,
237 the data is passed without any changes to the underlying CreateBitmap() API.
238 Under other platforms, only monochrome bitmaps may be created using this
239 constructor and wxImage should be used for creating colour bitmaps from
243 Specifies an array of pixel values.
245 Specifies the width of the bitmap.
247 Specifies the height of the bitmap.
249 Specifies the depth of the bitmap.
250 If this is omitted, then a value of 1 (monochrome bitmap) is used.
252 wxBitmap(const char bits
[], int width
, int height
, int depth
= 1);
255 Creates a new bitmap. A depth of ::wxBITMAP_SCREEN_DEPTH indicates the
256 depth of the current screen or visual.
258 Some platforms only support 1 for monochrome and ::wxBITMAP_SCREEN_DEPTH for
259 the current colour setting.
261 A depth of 32 including an alpha channel is supported under MSW, Mac and GTK+.
263 wxBitmap(int width
, int height
, int depth
= wxBITMAP_SCREEN_DEPTH
);
266 Creates a bitmap from XPM data.
268 wxBitmap(const char* const* bits
);
271 Loads a bitmap from a file or resource.
274 This can refer to a resource name or a filename under MS Windows and X.
275 Its meaning is determined by the @a type parameter.
277 May be one of the ::wxBitmapType values and indicates which type of
278 bitmap should be loaded. See the note in the class detailed description.
282 wxBitmap(const wxString
& name
, wxBitmapType type
= wxBITMAP_TYPE_XPM
);
285 Creates this bitmap object from the given image.
286 This has to be done to actually display an image as you cannot draw an
287 image directly on a window.
289 The resulting bitmap will use the provided colour depth (or that of the
290 current system if depth is ::wxBITMAP_SCREEN_DEPTH) which entails that a
291 colour reduction may take place.
293 When in 8-bit mode (PseudoColour mode), the GTK port will use a color cube
294 created on program start-up to look up colors. This ensures a very fast conversion,
295 but the image quality won't be perfect (and could be better for photo images using
296 more sophisticated dithering algorithms).
298 On Windows, if there is a palette present (set with SetPalette), it will be
299 used when creating the wxBitmap (most useful in 8-bit display mode).
300 On other platforms, the palette is currently ignored.
303 Platform-independent wxImage object.
305 Specifies the depth of the bitmap.
306 If this is omitted, the display depth of the screen is used.
308 wxBitmap(const wxImage
& img
, int depth
= wxBITMAP_SCREEN_DEPTH
);
312 See @ref overview_refcount_destruct for more info.
314 If the application omits to delete the bitmap explicitly, the bitmap will be
315 destroyed automatically by wxWidgets when the application exits.
318 Do not delete a bitmap that is selected into a memory device context.
323 Adds a handler to the end of the static list of format handlers.
326 A new bitmap format handler object. There is usually only one instance
327 of a given handler class in an application session.
331 static void AddHandler(wxBitmapHandler
* handler
);
334 Deletes all bitmap handlers.
335 This function is called by wxWidgets on exit.
337 static void CleanUpHandlers();
340 Creates an image from a platform-dependent bitmap. This preserves
341 mask information so that bitmaps and images can be converted back
342 and forth without loss in that respect.
344 virtual wxImage
ConvertToImage() const;
347 Creates the bitmap from an icon.
349 virtual bool CopyFromIcon(const wxIcon
& icon
);
352 Creates a fresh bitmap.
353 If the final argument is omitted, the display depth of the screen is used.
355 This overload works on all platforms.
357 virtual bool Create(int width
, int height
, int depth
= wxBITMAP_SCREEN_DEPTH
);
360 Creates a bitmap from the given data, which can be of arbitrary type.
363 Data whose type depends on the value of type.
365 A bitmap type identifier; see ::wxBitmapType for the list of values.
366 See the note in the class detailed description for more info.
368 The width of the bitmap in pixels.
370 The height of the bitmap in pixels.
372 The depth of the bitmap in pixels. If this is -1, the screen depth is used.
374 @returns @true if the call succeeded, @false otherwise.
376 This overload depends on the @a type of data.
378 virtual bool Create(const void* data, int type, int width,
379 int height, int depth = -1);
381 NOTE: leave this undoc for the same reason of the relative ctor.
385 Finds the handler with the given @a name.
387 @returns A pointer to the handler if found, @NULL otherwise.
389 static wxBitmapHandler
* FindHandler(const wxString
& name
);
392 Finds the handler associated with the given @a extension and @a type.
395 The file extension, such as "bmp" (without the dot).
397 The bitmap type managed by the handler, see ::wxBitmapType.
399 @returns A pointer to the handler if found, @NULL otherwise.
401 static wxBitmapHandler
* FindHandler(const wxString
& extension
,
402 wxBitmapType bitmapType
);
405 Finds the handler associated with the given bitmap type.
408 The bitmap type managed by the handler, see ::wxBitmapType.
410 @returns A pointer to the handler if found, @NULL otherwise.
415 static wxBitmapHandler
* FindHandler(wxBitmapType bitmapType
);
418 Gets the colour depth of the bitmap.
419 A value of 1 indicates a monochrome bitmap.
421 virtual int GetDepth() const;
424 Returns the static list of bitmap format handlers.
428 static wxList
GetHandlers();
431 Gets the height of the bitmap in pixels.
433 virtual int GetHeight() const;
436 Gets the associated mask (if any) which may have been loaded from a file
437 or set for the bitmap.
439 @see SetMask(), wxMask
441 virtual wxMask
* GetMask() const;
444 Gets the associated palette (if any) which may have been loaded from a file
445 or set for the bitmap.
449 virtual wxPalette
* GetPalette() const;
452 Returns a sub bitmap of the current one as long as the rect belongs entirely to
453 the bitmap. This function preserves bit depth and mask information.
455 virtual wxBitmap
GetSubBitmap(const wxRect
& rect
) const;
458 Gets the width of the bitmap in pixels.
462 virtual int GetWidth() const;
465 Adds the standard bitmap format handlers, which, depending on wxWidgets
466 configuration, can be handlers for Windows bitmap, Windows bitmap resource,
469 This function is called by wxWidgets on startup.
473 static void InitStandardHandlers();
476 Adds a handler at the start of the static list of format handlers.
479 A new bitmap format handler object. There is usually only one instance
480 of a given handler class in an application session.
484 static void InsertHandler(wxBitmapHandler
* handler
);
487 Returns @true if bitmap data is present.
492 Loads a bitmap from a file or resource.
495 Either a filename or a Windows resource name.
496 The meaning of name is determined by the @a type parameter.
498 One of the ::wxBitmapType values; see the note in the class
499 detailed description.
501 @returns @true if the operation succeeded, @false otherwise.
503 @remarks A palette may be associated with the bitmap if one exists
504 (especially for colour Windows bitmaps), and if the
505 code supports it. You can check if one has been created
506 by using the GetPalette() member.
510 virtual bool LoadFile(const wxString
& name
, wxBitmapType type
);
513 Finds the handler with the given name, and removes it.
514 The handler is not deleted.
519 @returns @true if the handler was found and removed, @false otherwise.
523 static bool RemoveHandler(const wxString
& name
);
526 Saves a bitmap in the named file.
529 A filename. The meaning of name is determined by the type parameter.
531 One of the ::wxBitmapType values; see the note in the class
532 detailed description.
534 An optional palette used for saving the bitmap.
536 @returns @true if the operation succeeded, @false otherwise.
538 @remarks Depending on how wxWidgets has been configured, not all formats
543 virtual bool SaveFile(const wxString
& name
, wxBitmapType type
,
544 const wxPalette
* palette
= NULL
) const;
547 Sets the depth member (does not affect the bitmap data).
549 @todo since these functions do not affect the bitmap data,
555 virtual void SetDepth(int depth
);
558 Sets the height member (does not affect the bitmap data).
561 Bitmap height in pixels.
563 virtual void SetHeight(int height
);
566 Sets the mask for this bitmap.
568 @remarks The bitmap object owns the mask once this has been called.
570 @see GetMask(), wxMask
572 virtual void SetMask(wxMask
* mask
);
575 Sets the associated palette. (Not implemented under GTK+).
582 virtual void SetPalette(const wxPalette
& palette
);
585 Sets the width member (does not affect the bitmap data).
588 Bitmap width in pixels.
590 virtual void SetWidth(int width
);
594 An empty wxBitmap object.
596 wxBitmap wxNullBitmap
;
605 This class encapsulates a monochrome mask bitmap, where the masked area is
606 black and the unmasked area is white.
608 When associated with a bitmap and drawn in a device context, the unmasked
609 area of the bitmap will be drawn, and the masked area will not be drawn.
614 @see wxBitmap, wxDC::Blit, wxMemoryDC
616 class wxMask
: public wxObject
626 Constructs a mask from a bitmap and a palette index that indicates the
628 Not yet implemented for GTK.
633 Index into a palette, specifying the transparency colour.
635 wxMask(const wxBitmap
& bitmap
, int index
);
638 Constructs a mask from a monochrome bitmap.
641 This is the default constructor for wxMask in wxPython.
644 wxMask(const wxBitmap
& bitmap
);
647 Constructs a mask from a bitmap and a colour that indicates the background.
650 wxPython has an alternate wxMask constructor matching this form called wxMaskColour.
653 wxMask(const wxBitmap
& bitmap
, const wxColour
& colour
);
656 Destroys the wxMask object and the underlying bitmap data.
661 Constructs a mask from a bitmap and a palette index that indicates the
663 Not yet implemented for GTK.
668 Index into a palette, specifying the transparency colour.
670 bool Create(const wxBitmap
& bitmap
, int index
);
673 Constructs a mask from a monochrome bitmap.
675 bool Create(const wxBitmap
& bitmap
);
678 Constructs a mask from a bitmap and a colour that indicates the background.
680 bool Create(const wxBitmap
& bitmap
, const wxColour
& colour
);