]>
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. 
  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. 
  34     @see @ref overview_bitmap, wxBitmap, wxIcon, wxCursor 
  36 class wxBitmapHandler 
: public wxObject
 
  42         In your own default constructor, initialise the members m_name, 
  43         m_extension and m_type. 
  48         Destroys the wxBitmapHandler object. 
  50     virtual ~wxBitmapHandler(); 
  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. 
  59             The width of the bitmap in pixels. 
  61             The height of the bitmap in pixels. 
  63             The depth of the bitmap in pixels. 
  64             If this is ::wxBITMAP_SCREEN_DEPTH, the screen depth is used. 
  66             Data whose type depends on the value of type. 
  68             A bitmap type identifier - see ::wxBitmapType for a list 
  71         @return @true if the call succeeded, @false otherwise (the default). 
  73     virtual bool Create(wxBitmap
* bitmap
, const void* data
, wxBitmapType type
, 
  74                         int width
, int height
, int depth 
= 1); 
  77         Gets the file extension associated with this handler. 
  79     const wxString
& GetExtension() const; 
  82         Gets the name of this handler. 
  84     const wxString
& GetName() const; 
  87         Gets the bitmap type associated with this handler. 
  89     wxBitmapType 
GetType() const; 
  92         Loads a bitmap from a file or resource, putting the resulting data into 
  96             The bitmap object which is to be affected by this operation. 
  98             Either a filename or a Windows resource name. 
  99             The meaning of name is determined by the type parameter. 
 101             See ::wxBitmapType for values this can take. 
 103             The desired width for the loaded bitmap. 
 105             The desired height for the loaded bitmap. 
 107         @return @true if the operation succeeded, @false otherwise. 
 109         @see wxBitmap::LoadFile, wxBitmap::SaveFile, SaveFile() 
 111     virtual bool LoadFile(wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
, 
 112                           int desiredWidth
, int desiredHeight
); 
 115         Saves a bitmap in the named file. 
 118             The bitmap object which is to be affected by this operation. 
 120             A filename. The meaning of name is determined by the type parameter. 
 122             See ::wxBitmapType for values this can take. 
 124             An optional palette used for saving the bitmap. 
 126         @return @true if the operation succeeded, @false otherwise. 
 128         @see wxBitmap::LoadFile, wxBitmap::SaveFile, LoadFile() 
 130     virtual bool SaveFile(const wxBitmap
* bitmap
, const wxString
& name
, wxBitmapType type
, 
 131                           const wxPalette
* palette 
= NULL
) const; 
 134         Sets the handler extension. 
 139     void SetExtension(const wxString
& extension
); 
 142         Sets the handler name. 
 147     void SetName(const wxString
& name
); 
 150         Sets the handler type. 
 155     void SetType(wxBitmapType type
); 
 162     This class encapsulates the concept of a platform-dependent bitmap, 
 163     either monochrome or colour or colour with alpha channel support. 
 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 
 168     for bitmaps with an additionaly alpha channel). 
 171     Many wxBitmap functions take a @e type parameter, which is a value of the 
 172     ::wxBitmapType enumeration. 
 173     The validity of those values depends however on the platform where your program 
 174     is running and from the wxWidgets configuration. 
 175     If all possible wxWidgets settings are used, the Windows platform supports BMP file, 
 176     BMP resource, XPM data, and XPM. 
 177     Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file. 
 178     Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file. 
 179     In addition, wxBitmap can load and save all formats that wxImage; see wxImage for 
 180     more info. Of course, you must have wxImage handlers loaded. 
 188     @see @ref overview_bitmap, @ref overview_bitmap_supportedformats, 
 189          wxDC::Blit, wxIcon, wxCursor, wxMemoryDC, wxImage, wxPixelData 
 191 class wxBitmap 
: public wxGDIObject
 
 197         Constructs a bitmap object with no data; an assignment or another member 
 198         function such as Create() or LoadFile() must be called subsequently. 
 203         Copy constructor, uses @ref overview_refcount "reference counting". 
 204         To make a real copy, you can use: 
 207         wxBitmap newBitmap = oldBitmap.GetSubBitmap( 
 208                              wxRect(0, 0, oldBitmap.GetWidth(), oldBitmap.GetHeight())); 
 211     wxBitmap(const wxBitmap
& bitmap
); 
 215         Creates a bitmap from the given @a data which is interpreted in 
 216         platform-dependent manner. 
 219             Specifies the bitmap data in a platform-dependent format. 
 221             May be one of the ::wxBitmapType values and indicates which type of 
 222             bitmap does @a data contains. See the note in the class 
 223             detailed description. 
 225             Specifies the width of the bitmap. 
 227             Specifies the height of the bitmap. 
 229             Specifies the depth of the bitmap. 
 230             If this is omitted, the display depth of the screen is used. 
 231     wxBitmap(const void* data, int type, int width, int height, int depth = -1); 
 234         NOTE: this ctor is not implemented by all ports, is somewhat useless 
 235               without further description of the "data" supported formats and 
 236               uses 'int type' instead of wxBitmapType, so don't document it. 
 240         Creates a bitmap from the given array @a bits. 
 241         You should only use this function for monochrome bitmaps (depth 1) in 
 242         portable programs: in this case the bits parameter should contain an XBM image. 
 244         For other bit depths, the behaviour is platform dependent: under Windows, 
 245         the data is passed without any changes to the underlying CreateBitmap() API. 
 246         Under other platforms, only monochrome bitmaps may be created using this 
 247         constructor and wxImage should be used for creating colour bitmaps from 
 251             Specifies an array of pixel values. 
 253             Specifies the width of the bitmap. 
 255             Specifies the height of the bitmap. 
 257             Specifies the depth of the bitmap. 
 258             If this is omitted, then a value of 1 (monochrome bitmap) is used. 
 260     wxBitmap(const char bits
[], int width
, int height
, int depth 
= 1); 
 263         Creates a new bitmap. A depth of ::wxBITMAP_SCREEN_DEPTH indicates the 
 264         depth of the current screen or visual. 
 266         Some platforms only support 1 for monochrome and ::wxBITMAP_SCREEN_DEPTH for 
 267         the current colour setting. 
 269         A depth of 32 including an alpha channel is supported under MSW, Mac and GTK+. 
 271     wxBitmap(int width
, int height
, int depth 
= wxBITMAP_SCREEN_DEPTH
); 
 274         Creates a bitmap from XPM data. 
 276     wxBitmap(const char* const* bits
); 
 279         Loads a bitmap from a file or resource. 
 282             This can refer to a resource name or a filename under MS Windows and X. 
 283             Its meaning is determined by the @a type parameter. 
 285             May be one of the ::wxBitmapType values and indicates which type of 
 286             bitmap should be loaded. See the note in the class detailed description. 
 287             Note that the wxBITMAP_DEFAULT_TYPE constant has different value under 
 288             different wxWidgets ports. See the bitmap.h header for the value it takes 
 293     wxBitmap(const wxString
& name
, wxBitmapType type 
= wxBITMAP_DEFAULT_TYPE
); 
 296         Creates this bitmap object from the given image. 
 297         This has to be done to actually display an image as you cannot draw an 
 298         image directly on a window. 
 300         The resulting bitmap will use the provided colour depth (or that of the 
 301         current system if depth is ::wxBITMAP_SCREEN_DEPTH) which entails that a 
 302         colour reduction may take place. 
 304         When in 8-bit mode (PseudoColour mode), the GTK port will use a color cube 
 305         created on program start-up to look up colors. This ensures a very fast conversion, 
 306         but the image quality won't be perfect (and could be better for photo images using 
 307         more sophisticated dithering algorithms). 
 309         On Windows, if there is a palette present (set with SetPalette), it will be 
 310         used when creating the wxBitmap (most useful in 8-bit display mode). 
 311         On other platforms, the palette is currently ignored. 
 314             Platform-independent wxImage object. 
 316             Specifies the depth of the bitmap. 
 317             If this is omitted, the display depth of the screen is used. 
 319     wxBitmap(const wxImage
& img
, int depth 
= wxBITMAP_SCREEN_DEPTH
); 
 323         See @ref overview_refcount_destruct for more info. 
 325         If the application omits to delete the bitmap explicitly, the bitmap will be 
 326         destroyed automatically by wxWidgets when the application exits. 
 329         Do not delete a bitmap that is selected into a memory device context. 
 334         Adds a handler to the end of the static list of format handlers. 
 337             A new bitmap format handler object. There is usually only one instance 
 338             of a given handler class in an application session. 
 342     static void AddHandler(wxBitmapHandler
* handler
); 
 345         Deletes all bitmap handlers. 
 346         This function is called by wxWidgets on exit. 
 348     static void CleanUpHandlers(); 
 351         Creates an image from a platform-dependent bitmap. This preserves 
 352         mask information so that bitmaps and images can be converted back 
 353         and forth without loss in that respect. 
 355     virtual wxImage 
ConvertToImage() const; 
 358         Creates the bitmap from an icon. 
 360     virtual bool CopyFromIcon(const wxIcon
& icon
); 
 363         Creates a fresh bitmap. 
 364         If the final argument is omitted, the display depth of the screen is used. 
 366         This overload works on all platforms. 
 368     virtual bool Create(int width
, int height
, int depth 
= wxBITMAP_SCREEN_DEPTH
); 
 371         Creates a bitmap from the given data, which can be of arbitrary type. 
 374             Data whose type depends on the value of type. 
 376             A bitmap type identifier; see ::wxBitmapType for the list of values. 
 377             See the note in the class detailed description for more info. 
 379             The width of the bitmap in pixels. 
 381             The height of the bitmap in pixels. 
 383             The depth of the bitmap in pixels. If this is -1, the screen depth is used. 
 385         @return @true if the call succeeded, @false otherwise. 
 387         This overload depends on the @a type of data. 
 389     virtual bool Create(const void* data, int type, int width, 
 390                         int height, int depth = -1); 
 392         NOTE: leave this undoc for the same reason of the relative ctor. 
 396         Finds the handler with the given @a name. 
 398         @return A pointer to the handler if found, @NULL otherwise. 
 400     static wxBitmapHandler
* FindHandler(const wxString
& name
); 
 403         Finds the handler associated with the given @a extension and @a type. 
 406             The file extension, such as "bmp" (without the dot). 
 408             The bitmap type managed by the handler, see ::wxBitmapType. 
 410         @return A pointer to the handler if found, @NULL otherwise. 
 412     static wxBitmapHandler
* FindHandler(const wxString
& extension
, 
 413                                         wxBitmapType bitmapType
); 
 416         Finds the handler associated with the given bitmap type. 
 419             The bitmap type managed by the handler, see ::wxBitmapType. 
 421         @return A pointer to the handler if found, @NULL otherwise. 
 426     static wxBitmapHandler
* FindHandler(wxBitmapType bitmapType
); 
 429         Gets the colour depth of the bitmap. 
 430         A value of 1 indicates a monochrome bitmap. 
 432     virtual int GetDepth() const; 
 435         Returns the static list of bitmap format handlers. 
 439     static wxList 
GetHandlers(); 
 442         Gets the height of the bitmap in pixels. 
 444         @see GetWidth(), GetSize() 
 446     virtual int GetHeight() const; 
 449         Gets the associated mask (if any) which may have been loaded from a file 
 450         or set for the bitmap. 
 452         @see SetMask(), wxMask 
 454     virtual wxMask
* GetMask() const; 
 457         Gets the associated palette (if any) which may have been loaded from a file 
 458         or set for the bitmap. 
 462     virtual wxPalette
* GetPalette() const; 
 465         Returns a sub bitmap of the current one as long as the rect belongs entirely to 
 466         the bitmap. This function preserves bit depth and mask information. 
 468     virtual wxBitmap 
GetSubBitmap(const wxRect
& rect
) const; 
 471         Returns the size of the bitmap in pixels. 
 475         @see GetHeight(), GetWidth() 
 477     wxSize 
GetSize() const; 
 480         Gets the width of the bitmap in pixels. 
 482         @see GetHeight(), GetSize() 
 484     virtual int GetWidth() const; 
 487         Adds the standard bitmap format handlers, which, depending on wxWidgets 
 488         configuration, can be handlers for Windows bitmap, Windows bitmap resource, 
 491         This function is called by wxWidgets on startup. 
 495     static void InitStandardHandlers(); 
 498         Adds a handler at the start of the static list of format handlers. 
 501             A new bitmap format handler object. There is usually only one instance 
 502             of a given handler class in an application session. 
 506     static void InsertHandler(wxBitmapHandler
* handler
); 
 509         Returns @true if bitmap data is present. 
 511     virtual bool IsOk() const; 
 514         Loads a bitmap from a file or resource. 
 517             Either a filename or a Windows resource name. 
 518             The meaning of name is determined by the @a type parameter. 
 520             One of the ::wxBitmapType values; see the note in the class 
 521             detailed description. 
 522             Note that the wxBITMAP_DEFAULT_TYPE constant has different value under 
 523             different wxWidgets ports. See the bitmap.h header for the value it takes 
 526         @return @true if the operation succeeded, @false otherwise. 
 528         @remarks A palette may be associated with the bitmap if one exists 
 529                  (especially for colour Windows bitmaps), and if the 
 530                  code supports it. You can check if one has been created 
 531                  by using the GetPalette() member. 
 535     virtual bool LoadFile(const wxString
& name
, wxBitmapType type 
= wxBITMAP_DEFAULT_TYPE
); 
 538         Finds the handler with the given name, and removes it. 
 539         The handler is not deleted. 
 544         @return @true if the handler was found and removed, @false otherwise. 
 548     static bool RemoveHandler(const wxString
& name
); 
 551         Saves a bitmap in the named file. 
 554             A filename. The meaning of name is determined by the type parameter. 
 556             One of the ::wxBitmapType values; see the note in the class 
 557             detailed description. 
 559             An optional palette used for saving the bitmap. 
 561         @return @true if the operation succeeded, @false otherwise. 
 563         @remarks Depending on how wxWidgets has been configured, not all formats 
 568     virtual bool SaveFile(const wxString
& name
, wxBitmapType type
, 
 569                           const wxPalette
* palette 
= NULL
) const; 
 572         Sets the depth member (does not affect the bitmap data). 
 574         @todo since these functions do not affect the bitmap data, 
 580     virtual void SetDepth(int depth
); 
 583         Sets the height member (does not affect the bitmap data). 
 586             Bitmap height in pixels. 
 588     virtual void SetHeight(int height
); 
 591         Sets the mask for this bitmap. 
 593         @remarks The bitmap object owns the mask once this has been called. 
 595         @see GetMask(), wxMask 
 597     virtual void SetMask(wxMask
* mask
); 
 600         Sets the associated palette. (Not implemented under GTK+). 
 607     virtual void SetPalette(const wxPalette
& palette
); 
 610         Sets the width member (does not affect the bitmap data). 
 613             Bitmap width in pixels. 
 615     virtual void SetWidth(int width
); 
 619     An empty wxBitmap object. 
 621 wxBitmap wxNullBitmap
; 
 629     This class encapsulates a monochrome mask bitmap, where the masked area is 
 630     black and the unmasked area is white. 
 632     When associated with a bitmap and drawn in a device context, the unmasked 
 633     area of the bitmap will be drawn, and the masked area will not be drawn. 
 638     @see wxBitmap, wxDC::Blit, wxMemoryDC 
 640 class wxMask 
: public wxObject
 
 650         Constructs a mask from a bitmap and a palette index that indicates the 
 652         Not yet implemented for GTK. 
 657             Index into a palette, specifying the transparency colour. 
 659     wxMask(const wxBitmap
& bitmap
, int index
); 
 662         Constructs a mask from a monochrome bitmap. 
 665         This is the default constructor for wxMask in wxPython. 
 668     wxMask(const wxBitmap
& bitmap
); 
 671         Constructs a mask from a bitmap and a colour that indicates the background. 
 674         wxPython has an alternate wxMask constructor matching this form called wxMaskColour. 
 677     wxMask(const wxBitmap
& bitmap
, const wxColour
& colour
); 
 680         Destroys the wxMask object and the underlying bitmap data. 
 685         Constructs a mask from a bitmap and a palette index that indicates the 
 687         Not yet implemented for GTK. 
 692             Index into a palette, specifying the transparency colour. 
 694     bool Create(const wxBitmap
& bitmap
, int index
); 
 697         Constructs a mask from a monochrome bitmap. 
 699     bool Create(const wxBitmap
& bitmap
); 
 702         Constructs a mask from a bitmap and a colour that indicates the background. 
 704     bool Create(const wxBitmap
& bitmap
, const wxColour
& colour
);