| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/msw/gdiimage.h
 
- // Purpose:     wxGDIImage class: base class for wxBitmap, wxIcon, wxCursor
 
- //              under MSW
 
- // Author:      Vadim Zeitlin
 
- // Modified by:
 
- // Created:     20.11.99
 
- // Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- // NB: this is a private header, it is not intended to be directly included by
 
- //     user code (but may be included from other, public, wxWin headers
 
- #ifndef _WX_MSW_GDIIMAGE_H_
 
- #define _WX_MSW_GDIIMAGE_H_
 
- #include "wx/gdiobj.h"          // base class
 
- #include "wx/gdicmn.h"          // wxBITMAP_TYPE_INVALID
 
- #include "wx/list.h"
 
- class WXDLLIMPEXP_FWD_CORE wxGDIImageRefData;
 
- class WXDLLIMPEXP_FWD_CORE wxGDIImageHandler;
 
- class WXDLLIMPEXP_FWD_CORE wxGDIImage;
 
- WX_DECLARE_EXPORTED_LIST(wxGDIImageHandler, wxGDIImageHandlerList);
 
- // ----------------------------------------------------------------------------
 
- // wxGDIImageRefData: common data fields for all derived classes
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxGDIImageRefData : public wxGDIRefData
 
- {
 
- public:
 
-     wxGDIImageRefData()
 
-     {
 
-         m_width = m_height = m_depth = 0;
 
-         m_handle = 0;
 
-     }
 
-     wxGDIImageRefData(const wxGDIImageRefData& data) : wxGDIRefData()
 
-     {
 
-         m_width = data.m_width;
 
-         m_height = data.m_height;
 
-         m_depth = data.m_depth;
 
-         // can't copy handles like this, derived class copy ctor must do it!
 
-         m_handle = NULL;
 
-     }
 
-     // accessors
 
-     virtual bool IsOk() const { return m_handle != 0; }
 
-     void SetSize(int w, int h) { m_width = w; m_height = h; }
 
-     // free the ressources we allocated
 
-     virtual void Free() = 0;
 
-     // for compatibility, the member fields are public
 
-     // the size of the image
 
-     int m_width, m_height;
 
-     // the depth of the image
 
-     int m_depth;
 
-     // the handle to it
 
-     union
 
-     {
 
-         WXHANDLE  m_handle;     // for untyped access
 
-         WXHBITMAP m_hBitmap;
 
-         WXHICON   m_hIcon;
 
-         WXHCURSOR m_hCursor;
 
-     };
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxGDIImage: this class supports GDI image handlers which may be registered
 
- // dynamically and will be used for loading/saving the images in the specified
 
- // format. It also falls back to wxImage if no appropriate image is found.
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxGDIImage : public wxGDIObject
 
- {
 
- public:
 
-     // handlers list interface
 
-     static wxGDIImageHandlerList& GetHandlers() { return ms_handlers; }
 
-     static void AddHandler(wxGDIImageHandler *handler);
 
-     static void InsertHandler(wxGDIImageHandler *handler);
 
-     static bool RemoveHandler(const wxString& name);
 
-     static wxGDIImageHandler *FindHandler(const wxString& name);
 
-     static wxGDIImageHandler *FindHandler(const wxString& extension, long type);
 
-     static wxGDIImageHandler *FindHandler(long type);
 
-     static void InitStandardHandlers();
 
-     static void CleanUpHandlers();
 
-     // access to the ref data casted to the right type
 
-     wxGDIImageRefData *GetGDIImageData() const
 
-         { return (wxGDIImageRefData *)m_refData; }
 
-     // accessors
 
-     WXHANDLE GetHandle() const
 
-         { return IsNull() ? 0 : GetGDIImageData()->m_handle; }
 
-     void SetHandle(WXHANDLE handle)
 
-         { AllocExclusive(); GetGDIImageData()->m_handle = handle; }
 
-     int GetWidth() const { return IsNull() ? 0 : GetGDIImageData()->m_width; }
 
-     int GetHeight() const { return IsNull() ? 0 : GetGDIImageData()->m_height; }
 
-     int GetDepth() const { return IsNull() ? 0 : GetGDIImageData()->m_depth; }
 
-     wxSize GetSize() const
 
-     {
 
-         return IsNull() ? wxSize(0,0) :
 
-                wxSize(GetGDIImageData()->m_width, GetGDIImageData()->m_height);
 
-     }
 
-     void SetWidth(int w) { AllocExclusive(); GetGDIImageData()->m_width = w; }
 
-     void SetHeight(int h) { AllocExclusive(); GetGDIImageData()->m_height = h; }
 
-     void SetDepth(int d) { AllocExclusive(); GetGDIImageData()->m_depth = d; }
 
-     void SetSize(int w, int h)
 
-     {
 
-         AllocExclusive();
 
-         GetGDIImageData()->SetSize(w, h);
 
-     }
 
-     void SetSize(const wxSize& size) { SetSize(size.x, size.y); }
 
-     // forward some of base class virtuals to wxGDIImageRefData
 
-     bool FreeResource(bool force = false);
 
-     virtual WXHANDLE GetResourceHandle() const;
 
- protected:
 
-     // create the data for the derived class here
 
-     virtual wxGDIImageRefData *CreateData() const = 0;
 
-     // implement the wxGDIObject method in terms of our, more specific, one
 
-     virtual wxGDIRefData *CreateGDIRefData() const { return CreateData(); }
 
-     // we can't [efficiently] clone objects of this class
 
-     virtual wxGDIRefData *
 
-     CloneGDIRefData(const wxGDIRefData *WXUNUSED(data)) const
 
-     {
 
-         wxFAIL_MSG( wxT("must be implemented if used") );
 
-         return NULL;
 
-     }
 
-     static wxGDIImageHandlerList ms_handlers;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxGDIImageHandler: a class which knows how to load/save wxGDIImages.
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxGDIImageHandler : public wxObject
 
- {
 
- public:
 
-     // ctor
 
-     wxGDIImageHandler() { m_type = wxBITMAP_TYPE_INVALID; }
 
-     wxGDIImageHandler(const wxString& name,
 
-                       const wxString& ext,
 
-                       wxBitmapType type)
 
-         : m_name(name), m_extension(ext), m_type(type) { }
 
-     // accessors
 
-     void SetName(const wxString& name) { m_name = name; }
 
-     void SetExtension(const wxString& ext) { m_extension = ext; }
 
-     void SetType(wxBitmapType type) { m_type = type; }
 
-     const wxString& GetName() const { return m_name; }
 
-     const wxString& GetExtension() const { return m_extension; }
 
-     wxBitmapType GetType() const { return m_type; }
 
-     // real handler operations: to implement in derived classes
 
-     virtual bool Create(wxGDIImage *image,
 
-                         const void* data,
 
-                         wxBitmapType flags,
 
-                         int width, int height, int depth = 1) = 0;
 
-     virtual bool Load(wxGDIImage *image,
 
-                       const wxString& name,
 
-                       wxBitmapType flags,
 
-                       int desiredWidth, int desiredHeight) = 0;
 
-     virtual bool Save(const wxGDIImage *image,
 
-                       const wxString& name,
 
-                       wxBitmapType type) const = 0;
 
- protected:
 
-     wxString  m_name;
 
-     wxString  m_extension;
 
-     wxBitmapType m_type;
 
- };
 
- #endif // _WX_MSW_GDIIMAGE_H_
 
 
  |