]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/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
18 This is the base class for implementing bitmap file loading/saving, and
19 bitmap creation from data.
20 It is used within wxBitmap and is not normally seen by the application.
22 If you wish to extend the capabilities of wxBitmap, derive a class from
23 wxBitmapHandler and add the handler using wxBitmap::AddHandler() in your
24 application initialisation.
29 @see @ref overview_bitmap, wxBitmap, wxIcon, wxCursor
31 class wxBitmapHandler
: public wxObject
37 In your own default constructor, initialise the members m_name,
38 m_extension and m_type.
43 Destroys the wxBitmapHandler object.
45 virtual ~wxBitmapHandler();
48 Creates a bitmap from the given data, which can be of arbitrary type.
49 The wxBitmap object @a bitmap is manipulated by this function.
54 The width of the bitmap in pixels.
56 The height of the bitmap in pixels.
58 The depth of the bitmap in pixels.
59 If this is ::wxBITMAP_SCREEN_DEPTH, the screen depth is used.
61 Data whose type depends on the value of type.
63 A bitmap type identifier - see ::wxBitmapType for a list
66 @return @true if the call succeeded, @false otherwise (the default).
68 virtual bool Create(wxBitmap
* bitmap
, const void* data
, wxBitmapType type
,
69 int width
, int height
, int depth
= 1);
72 Gets the file extension associated with this handler.
74 const wxString
& GetExtension() const;
77 Gets the name of this handler.
79 const wxString
& GetName() const;
82 Gets the bitmap type associated with this handler.
84 wxBitmapType
GetType() const;
87 Loads a bitmap from a file or resource, putting the resulting data into
91 The bitmap object which is to be affected by this operation.
93 Either a filename or a Windows resource name.
94 The meaning of name is determined by the type parameter.
96 See ::wxBitmapType for values this can take.
98 The desired width for the loaded bitmap.
100 The desired height for the loaded bitmap.
102 @return @true if the operation succeeded, @false otherwise.
104 @see wxBitmap::LoadFile, wxBitmap::SaveFile, SaveFile()
106 virtual bool LoadFile(wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
,
107 int desiredWidth
, int desiredHeight
);
110 Saves a bitmap in the named file.
113 The bitmap object which is to be affected by this operation.
115 A filename. The meaning of name is determined by the type parameter.
117 See ::wxBitmapType for values this can take.
119 An optional palette used for saving the bitmap.
121 @return @true if the operation succeeded, @false otherwise.
123 @see wxBitmap::LoadFile, wxBitmap::SaveFile, LoadFile()
125 virtual bool SaveFile(const wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
,
126 const wxPalette
* palette
= NULL
) const;
129 Sets the handler extension.
134 void SetExtension(const wxString
& extension
);
137 Sets the handler name.
142 void SetName(const wxString
& name
);
145 Sets the handler type.
150 void SetType(wxBitmapType type
);
157 This class encapsulates the concept of a platform-dependent bitmap,
158 either monochrome or colour or colour with alpha channel support.
160 If you need direct access the bitmap data instead going through
161 drawing to it using wxMemoryDC you need to use the wxPixelData
162 class (either wxNativePixelData for RGB bitmaps or wxAlphaPixelData
163 for bitmaps with an additionaly alpha channel).
166 Many wxBitmap functions take a @e type parameter, which is a value of the
167 ::wxBitmapType enumeration.
168 The validity of those values depends however on the platform where your program
169 is running and from the wxWidgets configuration.
170 If all possible wxWidgets settings are used, the Windows platform supports BMP file,
171 BMP resource, XPM data, and XPM.
172 Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file.
173 Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.
174 In addition, wxBitmap can load and save all formats that wxImage; see wxImage for
175 more info. Of course, you must have wxImage handlers loaded.
183 @see @ref overview_bitmap, @ref overview_bitmap_supportedformats,
184 wxDC::Blit, wxIcon, wxCursor, wxMemoryDC, wxImage, wxPixelData
186 class wxBitmap
: public wxGDIObject
192 Constructs a bitmap object with no data; an assignment or another member
193 function such as Create() or LoadFile() must be called subsequently.
198 Copy constructor, uses @ref overview_refcount "reference counting".
199 To make a real copy, you can use:
202 wxBitmap newBitmap = oldBitmap.GetSubBitmap(
203 wxRect(0, 0, oldBitmap.GetWidth(), oldBitmap.GetHeight()));
206 wxBitmap(const wxBitmap
& bitmap
);
210 Creates a bitmap from the given @a data which is interpreted in
211 platform-dependent manner.
214 Specifies the bitmap data in a platform-dependent format.
216 May be one of the ::wxBitmapType values and indicates which type of
217 bitmap does @a data contains. See the note in the class
218 detailed description.
220 Specifies the width of the bitmap.
222 Specifies the height of the bitmap.
224 Specifies the depth of the bitmap.
225 If this is omitted, the display depth of the screen is used.
226 wxBitmap(const void* data, int type, int width, int height, int depth = -1);
229 NOTE: this ctor is not implemented by all ports, is somewhat useless
230 without further description of the "data" supported formats and
231 uses 'int type' instead of wxBitmapType, so don't document it.
235 Creates a bitmap from the given array @a bits.
236 You should only use this function for monochrome bitmaps (depth 1) in
237 portable programs: in this case the bits parameter should contain an XBM image.
239 For other bit depths, the behaviour is platform dependent: under Windows,
240 the data is passed without any changes to the underlying CreateBitmap() API.
241 Under other platforms, only monochrome bitmaps may be created using this
242 constructor and wxImage should be used for creating colour bitmaps from
246 Specifies an array of pixel values.
248 Specifies the width of the bitmap.
250 Specifies the height of the bitmap.
252 Specifies the depth of the bitmap.
253 If this is omitted, then a value of 1 (monochrome bitmap) is used.
255 wxBitmap(const char bits
[], int width
, int height
, int depth
= 1);
258 Creates a new bitmap. A depth of ::wxBITMAP_SCREEN_DEPTH indicates the
259 depth of the current screen or visual.
261 Some platforms only support 1 for monochrome and ::wxBITMAP_SCREEN_DEPTH for
262 the current colour setting.
264 A depth of 32 including an alpha channel is supported under MSW, Mac and GTK+.
266 wxBitmap(int width
, int height
, int depth
= wxBITMAP_SCREEN_DEPTH
);
269 Creates a bitmap from XPM data.
271 wxBitmap(const char* const* bits
);
274 Loads a bitmap from a file or resource.
277 This can refer to a resource name or a filename under MS Windows and X.
278 Its meaning is determined by the @a type parameter.
280 May be one of the ::wxBitmapType values and indicates which type of
281 bitmap should be loaded. See the note in the class detailed description.
285 wxBitmap(const wxString
& name
, wxBitmapType type
= wxBITMAP_TYPE_XPM
);
288 Creates this bitmap object from the given image.
289 This has to be done to actually display an image as you cannot draw an
290 image directly on a window.
292 The resulting bitmap will use the provided colour depth (or that of the
293 current system if depth is ::wxBITMAP_SCREEN_DEPTH) which entails that a
294 colour reduction may take place.
296 When in 8-bit mode (PseudoColour mode), the GTK port will use a color cube
297 created on program start-up to look up colors. This ensures a very fast conversion,
298 but the image quality won't be perfect (and could be better for photo images using
299 more sophisticated dithering algorithms).
301 On Windows, if there is a palette present (set with SetPalette), it will be
302 used when creating the wxBitmap (most useful in 8-bit display mode).
303 On other platforms, the palette is currently ignored.
306 Platform-independent wxImage object.
308 Specifies the depth of the bitmap.
309 If this is omitted, the display depth of the screen is used.
311 wxBitmap(const wxImage
& img
, int depth
= wxBITMAP_SCREEN_DEPTH
);
315 See @ref overview_refcount_destruct for more info.
317 If the application omits to delete the bitmap explicitly, the bitmap will be
318 destroyed automatically by wxWidgets when the application exits.
321 Do not delete a bitmap that is selected into a memory device context.
326 Adds a handler to the end of the static list of format handlers.
329 A new bitmap format handler object. There is usually only one instance
330 of a given handler class in an application session.
334 static void AddHandler(wxBitmapHandler
* handler
);
337 Deletes all bitmap handlers.
338 This function is called by wxWidgets on exit.
340 static void CleanUpHandlers();
343 Creates an image from a platform-dependent bitmap. This preserves
344 mask information so that bitmaps and images can be converted back
345 and forth without loss in that respect.
347 virtual wxImage
ConvertToImage() const;
350 Creates the bitmap from an icon.
352 virtual bool CopyFromIcon(const wxIcon
& icon
);
355 Creates a fresh bitmap.
356 If the final argument is omitted, the display depth of the screen is used.
358 This overload works on all platforms.
360 virtual bool Create(int width
, int height
, int depth
= wxBITMAP_SCREEN_DEPTH
);
363 Creates a bitmap from the given data, which can be of arbitrary type.
366 Data whose type depends on the value of type.
368 A bitmap type identifier; see ::wxBitmapType for the list of values.
369 See the note in the class detailed description for more info.
371 The width of the bitmap in pixels.
373 The height of the bitmap in pixels.
375 The depth of the bitmap in pixels. If this is -1, the screen depth is used.
377 @return @true if the call succeeded, @false otherwise.
379 This overload depends on the @a type of data.
381 virtual bool Create(const void* data, int type, int width,
382 int height, int depth = -1);
384 NOTE: leave this undoc for the same reason of the relative ctor.
388 Finds the handler with the given @a name.
390 @return A pointer to the handler if found, @NULL otherwise.
392 static wxBitmapHandler
* FindHandler(const wxString
& name
);
395 Finds the handler associated with the given @a extension and @a type.
398 The file extension, such as "bmp" (without the dot).
400 The bitmap type managed by the handler, see ::wxBitmapType.
402 @return A pointer to the handler if found, @NULL otherwise.
404 static wxBitmapHandler
* FindHandler(const wxString
& extension
,
405 wxBitmapType bitmapType
);
408 Finds the handler associated with the given bitmap type.
411 The bitmap type managed by the handler, see ::wxBitmapType.
413 @return A pointer to the handler if found, @NULL otherwise.
418 static wxBitmapHandler
* FindHandler(wxBitmapType bitmapType
);
421 Gets the colour depth of the bitmap.
422 A value of 1 indicates a monochrome bitmap.
424 virtual int GetDepth() const;
427 Returns the static list of bitmap format handlers.
431 static wxList
GetHandlers();
434 Gets the height of the bitmap in pixels.
436 virtual int GetHeight() const;
439 Gets the associated mask (if any) which may have been loaded from a file
440 or set for the bitmap.
442 @see SetMask(), wxMask
444 virtual wxMask
* GetMask() const;
447 Gets the associated palette (if any) which may have been loaded from a file
448 or set for the bitmap.
452 virtual wxPalette
* GetPalette() const;
455 Returns a sub bitmap of the current one as long as the rect belongs entirely to
456 the bitmap. This function preserves bit depth and mask information.
458 virtual wxBitmap
GetSubBitmap(const wxRect
& rect
) const;
461 Gets the width of the bitmap in pixels.
465 virtual int GetWidth() const;
468 Adds the standard bitmap format handlers, which, depending on wxWidgets
469 configuration, can be handlers for Windows bitmap, Windows bitmap resource,
472 This function is called by wxWidgets on startup.
476 static void InitStandardHandlers();
479 Adds a handler at the start of the static list of format handlers.
482 A new bitmap format handler object. There is usually only one instance
483 of a given handler class in an application session.
487 static void InsertHandler(wxBitmapHandler
* handler
);
490 Returns @true if bitmap data is present.
495 Loads a bitmap from a file or resource.
498 Either a filename or a Windows resource name.
499 The meaning of name is determined by the @a type parameter.
501 One of the ::wxBitmapType values; see the note in the class
502 detailed description.
504 @return @true if the operation succeeded, @false otherwise.
506 @remarks A palette may be associated with the bitmap if one exists
507 (especially for colour Windows bitmaps), and if the
508 code supports it. You can check if one has been created
509 by using the GetPalette() member.
513 virtual bool LoadFile(const wxString
& name
, wxBitmapType type
);
516 Finds the handler with the given name, and removes it.
517 The handler is not deleted.
522 @return @true if the handler was found and removed, @false otherwise.
526 static bool RemoveHandler(const wxString
& name
);
529 Saves a bitmap in the named file.
532 A filename. The meaning of name is determined by the type parameter.
534 One of the ::wxBitmapType values; see the note in the class
535 detailed description.
537 An optional palette used for saving the bitmap.
539 @return @true if the operation succeeded, @false otherwise.
541 @remarks Depending on how wxWidgets has been configured, not all formats
546 virtual bool SaveFile(const wxString
& name
, wxBitmapType type
,
547 const wxPalette
* palette
= NULL
) const;
550 Sets the depth member (does not affect the bitmap data).
552 @todo since these functions do not affect the bitmap data,
558 virtual void SetDepth(int depth
);
561 Sets the height member (does not affect the bitmap data).
564 Bitmap height in pixels.
566 virtual void SetHeight(int height
);
569 Sets the mask for this bitmap.
571 @remarks The bitmap object owns the mask once this has been called.
573 @see GetMask(), wxMask
575 virtual void SetMask(wxMask
* mask
);
578 Sets the associated palette. (Not implemented under GTK+).
585 virtual void SetPalette(const wxPalette
& palette
);
588 Sets the width member (does not affect the bitmap data).
591 Bitmap width in pixels.
593 virtual void SetWidth(int width
);
597 An empty wxBitmap object.
599 wxBitmap wxNullBitmap
;
607 This class encapsulates a monochrome mask bitmap, where the masked area is
608 black and the unmasked area is white.
610 When associated with a bitmap and drawn in a device context, the unmasked
611 area of the bitmap will be drawn, and the masked area will not be drawn.
616 @see wxBitmap, wxDC::Blit, wxMemoryDC
618 class wxMask
: public wxObject
628 Constructs a mask from a bitmap and a palette index that indicates the
630 Not yet implemented for GTK.
635 Index into a palette, specifying the transparency colour.
637 wxMask(const wxBitmap
& bitmap
, int index
);
640 Constructs a mask from a monochrome bitmap.
643 This is the default constructor for wxMask in wxPython.
646 wxMask(const wxBitmap
& bitmap
);
649 Constructs a mask from a bitmap and a colour that indicates the background.
652 wxPython has an alternate wxMask constructor matching this form called wxMaskColour.
655 wxMask(const wxBitmap
& bitmap
, const wxColour
& colour
);
658 Destroys the wxMask object and the underlying bitmap data.
663 Constructs a mask from a bitmap and a palette index that indicates the
665 Not yet implemented for GTK.
670 Index into a palette, specifying the transparency colour.
672 bool Create(const wxBitmap
& bitmap
, int index
);
675 Constructs a mask from a monochrome bitmap.
677 bool Create(const wxBitmap
& bitmap
);
680 Constructs a mask from a bitmap and a colour that indicates the background.
682 bool Create(const wxBitmap
& bitmap
, const wxColour
& colour
);