]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/icon.h
Use /bin/echo for creation of Mac OS X PkgInfo files.
[wxWidgets.git] / interface / wx / icon.h
index acfca502181ab2e5b7b866a0487a2365f5f914e2..083bce75340f76322c280c281c65a7ae71eb7205 100644 (file)
@@ -3,23 +3,43 @@
 // Purpose:     interface of wxIcon
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+
+
+/**
+    In wxIcon context this value means: "use the screen depth".
+*/
+#define wxICON_SCREEN_DEPTH       (-1)
+
+
 /**
     @class wxIcon
-    @wxheader{icon.h}
-
-    An icon is a small rectangular bitmap usually used for denoting a
-    minimized application. It differs from a wxBitmap in always
-    having a mask associated with it for transparent drawing. On some platforms,
-    icons and bitmaps are implemented identically, since there is no real
-    distinction between
-    a wxBitmap with a mask and an icon; and there is no specific icon format on
-    some platforms (X-based applications usually standardize on XPMs for small
-    bitmaps
-    and icons). However, some platforms (such as Windows) make the distinction, so
-    a separate class is provided.
+
+    An icon is a small rectangular bitmap usually used for denoting a minimized
+    application.
+
+    It differs from a wxBitmap in always having a mask associated with it for
+    transparent drawing. On some platforms, icons and bitmaps are implemented
+    identically, since there is no real distinction between a wxBitmap with a
+    mask and an icon; and there is no specific icon format on some platforms
+    (X-based applications usually standardize on XPMs for small bitmaps and icons).
+    However, some platforms (such as Windows) make the distinction, so a
+    separate class is provided.
+
+    @remarks
+    It is usually desirable to associate a pertinent icon with a frame.
+    Icons can also be used for other purposes, for example with wxTreeCtrl and wxListCtrl.
+    Icons have different formats on different platforms therefore separate icons
+    will usually be created for the different environments.
+    Platform-specific methods for creating a wxIcon structure are catered for,
+    and this is an occasion where conditional compilation will probably be required.
+    Note that a new icon must be created for every time the icon is to be used
+    for a new window. In Windows, the icon will not be reloaded if it has already
+    been used.
+    An icon allocated to a frame will be deleted when the frame is deleted.
+    For more information please see @ref overview_bitmap.
 
     @library{wxcore}
     @category{gdi}
     @stdobjects
     ::wxNullIcon
 
-    @see @ref overview_wxbitmapoverview "Bitmap and icon overview", @ref
-    overview_supportedbitmapformats "supported bitmap file formats", wxDC::DrawIcon, wxCursor
+    @see @ref overview_bitmap, @ref overview_bitmap_supportedformats,
+         wxDC::DrawIcon, wxCursor
 */
-class wxIcon : public wxBitmap
+class wxIcon : public wxGDIObject
 {
 public:
-    //@{
     /**
-        Loads an icon from the specified location().
-
-        @param bits
-            Specifies an array of pixel values.
-        @param width
-            Specifies the width of the icon.
-        @param height
-            Specifies the height of the icon.
-        @param desiredWidth
-            Specifies the desired width of the icon. This
-            parameter only has an effect in Windows (32-bit) where icon resources can
-        contain
-            several icons of different sizes.
-        @param desiredWidth
-            Specifies the desired height of the icon. This
-            parameter only has an effect in Windows (32-bit) where icon resources can
-        contain
-            several icons of different sizes.
-        @param depth
-            Specifies the depth of the icon. If this is omitted, the display depth of
-        the
-            screen is used.
-        @param name
-            This can refer to a resource name under MS Windows, or a filename under MS
-        Windows and X.
-            Its meaning is determined by the flags parameter.
-        @param loc
-            The object describing the location of the native icon, see
-            wxIconLocation.
-        @param type
-            May be one of the following:
-
-
-
-
-
-
-
-            wxBITMAP_TYPE_ICO
-
-
-
-
-            Load a Windows icon file.
-
-
-
-
-
-            wxBITMAP_TYPE_ICO_RESOURCE
-
-
-
-
-            Load a Windows icon from the resource database.
-
-
-
-
-
-            wxBITMAP_TYPE_GIF
-
-
-
-
-            Load a GIF bitmap file.
-
-
-
-
-
-            wxBITMAP_TYPE_XBM
-
-
-
-
-            Load an X bitmap file.
-
+        Default ctor.
 
+        Constructs an icon object with no data; an assignment or another member
+        function such as LoadFile() must be called subsequently.
+    */
+    wxIcon();
 
+    /**
+        Copy ctor.
+    */
+    wxIcon(const wxIcon& icon);
 
+    /*
+        Creates an icon from the given data, which can be of arbitrary type.
 
-            wxBITMAP_TYPE_XPM
+    wxIcon(void* data, int type, int width, int height, int depth = -1);
 
+        NOTE: this ctor is not implemented by all ports, is somewhat useless
+              without further description of the "data" supported formats and
+              uses 'int type' instead of wxBitmapType, so don't document it.
+    */
 
+    /**
+        Creates an icon from an array of bits.
+        You should only use this function for monochrome bitmaps (depth 1) in
+        portable programs: in this case the bits parameter should contain an XBM image.
 
+        For other bit depths, the behaviour is platform dependent: under Windows,
+        the data is passed without any changes to the underlying CreateBitmap() API.
+        Under other platforms, only monochrome bitmaps may be created using this
+        constructor and wxImage should be used for creating colour bitmaps from
+        static data.
 
-            Load an XPM bitmap file.
+        @param bits
+            Specifies an array of pixel values.
+        @param width
+            The width of the image.
+        @param height
+            The height of the image.
 
+        @beginWxPerlOnly
+        In wxPerl use Wx::Icon->newBits(bits, width, height, depth = -1);
+        @endWxPerlOnly
 
+        @onlyfor{wxmsw,wxosx}
+    */
+    wxIcon(const char bits[], int width, int height);
 
+    /**
+        Creates a bitmap from XPM data.
+        To use this constructor, you must first include an XPM file.
+        For example, assuming that the file mybitmap.xpm contains an XPM array
+        of character pointers called @e mybitmap:
+
+        @code
+        #include "mybitmap.xpm"
+        ...
+        wxIcon *icon = new wxIcon(mybitmap);
+        @endcode
+
+        A macro, wxICON, is available which creates an icon using an XPM on
+        the appropriate platform, or an icon resource on Windows.
+
+        @code
+        wxIcon icon(wxICON(sample));
+
+        // Equivalent to:
+        #if defined(__WXGTK__) || defined(__WXMOTIF__)
+        wxIcon icon(sample_xpm);
+        #endif
+
+        #if defined(__WXMSW__)
+        wxIcon icon("sample");
+        #endif
+        @endcode
+
+        @beginWxPerlOnly
+        In wxPerl use Wx::Icon->newFromXPM(data).
+        @endWxPerlOnly
+    */
+    wxIcon(const char* const* bits);
 
+    /**
+        Loads an icon from a file or resource.
 
-            The validity of these flags depends on the platform and wxWidgets
-        configuration.
-            If all possible wxWidgets settings are used, the Windows platform supports
-        ICO file, ICO resource,
-            XPM data, and XPM file. Under wxGTK, the available formats are BMP file,
-        XPM data, XPM file, and PNG file.
-            Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM
-        file.
+        @param name
+            This can refer to a resource name or a filename under MS Windows and X.
+            Its meaning is determined by the @a type parameter.
+        @param type
+            May be one of the ::wxBitmapType values and indicates which type of
+            bitmap should be loaded. See the note in the class detailed description.
+            Note that the wxICON_DEFAULT_TYPE constant has different value under
+            different wxWidgets ports. See the icon.h header for the value it takes
+            for a specific port.
+        @param desiredWidth
+            Specifies the desired width of the icon. This parameter only has
+            an effect in Windows where icon resources can contain several icons
+            of different sizes.
+        @param desiredHeight
+            Specifies the desired height of the icon. This parameter only has
+            an effect in Windows where icon resources can contain several icons
+            of different sizes.
+
+        @see LoadFile()
+    */
+    wxIcon(const wxString& name, wxBitmapType type = wxICON_DEFAULT_TYPE,
+           int desiredWidth = -1, int desiredHeight = -1);
 
-        @remarks The first form constructs an icon object with no data; an
-                 assignment or another member function such as Create or
-                 LoadFile must be called subsequently.
+    /**
+        Loads an icon from the specified location.
     */
-    wxIcon();
-    wxIcon(const wxIcon& icon);
-    wxIcon(void* data, int type, int width, int height,
-           int depth = -1);
-    wxIcon(const char bits[], int width, int height,
-           int depth = 1);
-    wxIcon(int width, int height, int depth = -1);
-    wxIcon(const char* const* bits);
-    wxIcon(const wxString& name, wxBitmapType type,
-           int desiredWidth = -1,
-           int desiredHeight = -1);
     wxIcon(const wxIconLocation& loc);
-    //@}
 
     /**
         Destructor.
-        See @ref overview_refcountdestruct "reference-counted object destruction" for
-        more info.
+        See @ref overview_refcount_destruct for more info.
+
         If the application omits to delete the icon explicitly, the icon will be
         destroyed automatically by wxWidgets when the application exits.
+
+        @warning
         Do not delete an icon that is selected into a memory device context.
     */
-    ~wxIcon();
+    virtual ~wxIcon();
 
     /**
-        Copies @a bmp bitmap to this icon. Under MS Windows the bitmap
-        must have mask colour set.
+        Returns disabled (dimmed) version of the icon.
+
+        This method is available in wxIcon only under wxMSW, other ports only
+        have it in wxBitmap. You can always use wxImage::ConvertToDisabled()
+        and create the icon from wxImage manually however.
 
-        LoadFile()
+        @onlyfor{wxmsw}
 
-        Wx::Icon-new( width, height, depth = -1 )
-        Wx::Icon-new( name, type, desiredWidth = -1, desiredHeight = -1 )
-        Wx::Icon-newFromBits( bits, width, height, depth = 1 )
-        Wx::Icon-newFromXPM( data )
+        @since 2.9.0
+    */
+    wxIcon ConvertToDisabled(unsigned char brightness = 255) const;
+
+    /**
+        Copies @a bmp bitmap to this icon.
+        Under MS Windows the bitmap must have mask colour set.
+
+        @see LoadFile()
     */
     void CopyFromBitmap(const wxBitmap& bmp);
 
     /**
-        Gets the colour depth of the icon. A value of 1 indicates a
-        monochrome icon.
+        Gets the colour depth of the icon.
+        A value of 1 indicates a monochrome icon.
     */
     int GetDepth() const;
 
     /**
         Gets the height of the icon in pixels.
+
+        @see GetWidth()
     */
     int GetHeight() const;
 
@@ -199,86 +223,33 @@ public:
     /**
         Returns @true if icon data is present.
     */
-    bool IsOk() const;
+    virtual bool IsOk() const;
 
     /**
         Loads an icon from a file or resource.
 
         @param name
             Either a filename or a Windows resource name.
-            The meaning of name is determined by the type parameter.
+            The meaning of name is determined by the @a type parameter.
         @param type
-            One of the following values:
-
-
-
-
-
-
-
-            wxBITMAP_TYPE_ICO
-
-
-
-
-            Load a Windows icon file.
-
-
-
-
-
-            wxBITMAP_TYPE_ICO_RESOURCE
-
-
-
-
-            Load a Windows icon from the resource database.
-
-
-
-
-
-            wxBITMAP_TYPE_GIF
-
-
-
-
-            Load a GIF bitmap file.
-
-
-
-
-
-            wxBITMAP_TYPE_XBM
-
-
-
-
-            Load an X bitmap file.
-
-
-
-
-
-            wxBITMAP_TYPE_XPM
-
-
-
-
-            Load an XPM bitmap file.
-
-
-
-
-
-            The validity of these flags depends on the platform and wxWidgets
-        configuration.
+            One of the ::wxBitmapType values; see the note in the class
+            detailed description.
+            Note that the wxICON_DEFAULT_TYPE constant has different value under
+            different wxWidgets ports. See the icon.h header for the value it takes
+            for a specific port.
+        @param desiredWidth
+            Specifies the desired width of the icon. This parameter only has
+            an effect in Windows where icon resources can contain several icons
+            of different sizes.
+        @param desiredHeight
+            Specifies the desired height of the icon. This parameter only has
+            an effect in Windows where icon resources can contain several icons
+            of different sizes.
 
         @return @true if the operation succeeded, @false otherwise.
-
-        @see wxIcon()
     */
-    bool LoadFile(const wxString& name, wxBitmapType type);
+    bool LoadFile(const wxString& name, wxBitmapType type = wxICON_DEFAULT_TYPE,
+                  int desiredWidth = -1, int desiredHeight = -1);
 
     /**
         Sets the depth member (does not affect the icon data).
@@ -305,12 +276,12 @@ public:
     void SetWidth(int width);
 
     /**
-        Assignment operator, using @ref overview_trefcount "reference counting".
+        Assignment operator, using @ref overview_refcount.
 
         @param icon
             Icon to assign.
     */
-    wxIcon operator =(const wxIcon& icon);
+    wxIcon& operator=(const wxIcon& icon);
 };
 
 /**