| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/gdiobj.h
- // Purpose: wxGDIObject base header
- // Author: Julian Smart
- // Modified by:
- // Created:
- // Copyright: (c) Julian Smart
- // Licence: wxWindows Licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_GDIOBJ_H_BASE_
- #define _WX_GDIOBJ_H_BASE_
- #include "wx/object.h"
- // ----------------------------------------------------------------------------
- // wxGDIRefData is the base class for wxXXXData structures which contain the
- // real data for the GDI object and are shared among all wxWin objects sharing
- // the same native GDI object
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxGDIRefData : public wxObjectRefData
- {
- public:
- // Default ctor which needs to be defined just because we use
- // wxDECLARE_NO_COPY_CLASS() below.
- wxGDIRefData() { }
- // override this in the derived classes to check if this data object is
- // really fully initialized
- virtual bool IsOk() const { return true; }
- private:
- wxDECLARE_NO_COPY_CLASS(wxGDIRefData);
- };
- // ----------------------------------------------------------------------------
- // wxGDIObject: base class for bitmaps, pens, brushes, ...
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxGDIObject : public wxObject
- {
- public:
- // checks if the object can be used
- virtual bool IsOk() const
- {
- // the cast here is safe because the derived classes always create
- // wxGDIRefData objects
- return m_refData && static_cast<wxGDIRefData *>(m_refData)->IsOk();
- }
- // don't use in the new code, use IsOk() instead
- bool IsNull() const { return m_refData == NULL; }
- // older version, for backwards compatibility only (but not deprecated
- // because it's still widely used)
- bool Ok() const { return IsOk(); }
- #if defined(__WXMSW__) || defined(__WXPM__)
- // Creates the resource
- virtual bool RealizeResource() { return false; }
- // Frees the resource
- virtual bool FreeResource(bool WXUNUSED(force) = false) { return false; }
- virtual bool IsFree() const { return false; }
- // Returns handle.
- virtual WXHANDLE GetResourceHandle() const { return 0; }
- #endif // defined(__WXMSW__) || defined(__WXPM__)
- protected:
- // replace base class functions using wxObjectRefData with our own which
- // use wxGDIRefData to ensure that we always work with data objects of the
- // correct type (i.e. derived from wxGDIRefData)
- virtual wxObjectRefData *CreateRefData() const
- {
- return CreateGDIRefData();
- }
- virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const
- {
- return CloneGDIRefData(static_cast<const wxGDIRefData *>(data));
- }
- virtual wxGDIRefData *CreateGDIRefData() const = 0;
- virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const = 0;
- DECLARE_DYNAMIC_CLASS(wxGDIObject)
- };
- #endif // _WX_GDIOBJ_H_BASE_
|