Updated brush/pen implementation for OS/2 to current implementation style.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2008-03-23 17:41:16 +00:00
parent fcda20eb04
commit 1aca6611e6
4 changed files with 285 additions and 167 deletions

View File

@@ -17,49 +17,14 @@
typedef long wxPMDash;
class WXDLLIMPEXP_FWD_CORE wxPen;
class WXDLLEXPORT wxPenRefData: public wxGDIRefData
{
friend class WXDLLIMPEXP_FWD_CORE wxPen;
public:
wxPenRefData();
wxPenRefData(const wxPenRefData& rData);
virtual ~wxPenRefData();
bool operator==(const wxPenRefData& data) const
{
// we intentionally don't compare m_hPen fields here
return m_nStyle == data.m_nStyle &&
m_nWidth == data.m_nWidth &&
m_nJoin == data.m_nJoin &&
m_nCap == data.m_nCap &&
m_vColour == data.m_vColour &&
(m_nStyle != wxPENSTYLE_STIPPLE || m_vStipple.IsSameAs(data.m_vStipple)) &&
(m_nStyle != wxPENSTYLE_USER_DASH ||
(m_dash == data.m_dash &&
memcmp(m_dash, data.m_dash, m_nbDash*sizeof(wxDash)) == 0));
}
protected:
int m_nWidth;
wxPenStyle m_nStyle;
wxPenJoin m_nJoin;
wxPenCap m_nCap;
wxBitmap m_vStipple;
int m_nbDash;
wxDash * m_dash;
wxColour m_vColour;
WXHPEN m_hPen;// in OS/2 GPI this will be the PS the pen is associated with
};
#define M_PENDATA ((wxPenRefData *)m_refData)
// ----------------------------------------------------------------------------
// Pen
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxPen : public wxPenBase
{
public:
wxPen();
wxPen() { }
wxPen( const wxColour& rColour
,int nWidth = 1
,wxPenStyle nStyle = wxPENSTYLE_SOLID
@@ -71,16 +36,9 @@ public:
wxPen( const wxBitmap& rStipple
,int nWidth
);
virtual ~wxPen();
inline bool operator == (const wxPen& rPen) const
{
const wxPenRefData *penData = (wxPenRefData *)rPen.m_refData;
// an invalid pen is only equal to another invalid pen
return m_refData ? penData && *M_PENDATA == *penData : !penData;
}
virtual ~wxPen() { }
bool operator == (const wxPen& rPen) const;
inline bool operator != (const wxPen& rPen) const
{ return !(*this == rPen); }
@@ -100,21 +58,16 @@ public:
void SetCap(wxPenCap nCap);
void SetPS(HPS hPS);
inline wxColour& GetColour(void) const { return (M_PENDATA ? M_PENDATA->m_vColour : wxNullColour); };
inline int GetWidth(void) const { return (M_PENDATA ? M_PENDATA->m_nWidth : -1); };
inline wxPenStyle GetStyle(void) const { return (M_PENDATA ? M_PENDATA->m_nStyle : wxPENSTYLE_INVALID); };
inline wxPenJoin GetJoin(void) const { return (M_PENDATA ? M_PENDATA->m_nJoin : wxJOIN_INVALID); };
inline wxPenCap GetCap(void) const { return (M_PENDATA ? M_PENDATA->m_nCap : wxCAP_INVALID); };
inline int GetPS(void) const { return (M_PENDATA ? M_PENDATA->m_hPen : 0); };
inline int GetDashes(wxDash **ptr) const
{
*ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*) NULL);
return (M_PENDATA ? M_PENDATA->m_nbDash : -1);
}
inline wxDash* GetDash() const { return (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*)NULL); };
inline int GetDashCount() const { return (M_PENDATA ? M_PENDATA->m_nbDash : 0); };
inline wxBitmap* GetStipple(void) const { return (M_PENDATA ? (& M_PENDATA->m_vStipple) : (wxBitmap*) NULL); };
wxColour& GetColour(void) const;
int GetWidth(void) const;
wxPenStyle GetStyle(void) const;
wxPenJoin GetJoin(void) const;
wxPenCap GetCap(void) const;
int GetPS(void) const;
int GetDashes(wxDash **ptr) const;
wxDash* GetDash() const;
int GetDashCount() const;
wxBitmap* GetStipple(void) const;
//
// Implementation