X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d84afea9d1ec41ee4e2ebb3bf6b87926cf5f04d1..d968078adbfb147e913b9a33fc54242a36f117ce:/src/gtk1/pen.cpp diff --git a/src/gtk1/pen.cpp b/src/gtk1/pen.cpp index 11f787bd32..008a98cb1a 100644 --- a/src/gtk1/pen.cpp +++ b/src/gtk1/pen.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp +// Name: src/gtk1/pen.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -7,20 +7,22 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/pen.h" +#ifndef WX_PRECOMP + #include "wx/colour.h" +#endif + #include //----------------------------------------------------------------------------- // wxPen //----------------------------------------------------------------------------- -class wxPenRefData: public wxObjectRefData +class wxPenRefData : public wxGDIRefData { public: wxPenRefData() @@ -32,9 +34,9 @@ public: m_dash = (wxGTKDash*) NULL; m_countDashes = 0; } - + wxPenRefData( const wxPenRefData& data ) - : wxObjectRefData() + : wxGDIRefData() { m_style = data.m_style; m_width = data.m_width; @@ -42,22 +44,35 @@ public: m_capStyle = data.m_capStyle; m_colour = data.m_colour; m_countDashes = data.m_countDashes; -/* - if (data.m_dash) TODO - m_dash = new -*/ m_dash = data.m_dash; } bool operator == (const wxPenRefData& data) const { - return (m_style == data.m_style && - m_width == data.m_width && - m_joinStyle == data.m_joinStyle && - m_capStyle == data.m_capStyle && - m_colour == data.m_colour); + if ( m_countDashes != data.m_countDashes ) + return false; + + if ( m_dash ) + { + if ( !data.m_dash || + memcmp(m_dash, data.m_dash, m_countDashes*sizeof(wxGTKDash)) ) + { + return false; + } + } + else if ( data.m_dash ) + { + return false; + } + + + return m_style == data.m_style && + m_width == data.m_width && + m_joinStyle == data.m_joinStyle && + m_capStyle == data.m_capStyle && + m_colour == data.m_colour; } - + int m_width; int m_style; int m_joinStyle; @@ -86,72 +101,72 @@ wxPen::~wxPen() // m_refData unrefed in ~wxObject } -wxObjectRefData *wxPen::CreateRefData() const +wxGDIRefData *wxPen::CreateGDIRefData() const { return new wxPenRefData; } -wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const +wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const { return new wxPenRefData(*(wxPenRefData *)data); } bool wxPen::operator == ( const wxPen& pen ) const { - if (m_refData == pen.m_refData) return TRUE; - - if (!m_refData || !pen.m_refData) return FALSE; - + if (m_refData == pen.m_refData) return true; + + if (!m_refData || !pen.m_refData) return false; + return ( *(wxPenRefData*)m_refData == *(wxPenRefData*)pen.m_refData ); } void wxPen::SetColour( const wxColour &colour ) { AllocExclusive(); - + M_PENDATA->m_colour = colour; } void wxPen::SetDashes( int number_of_dashes, const wxDash *dash ) { AllocExclusive(); - + M_PENDATA->m_countDashes = number_of_dashes; - M_PENDATA->m_dash = (wxGTKDash *)dash; /* TODO */ + M_PENDATA->m_dash = (wxGTKDash *)dash; } -void wxPen::SetColour( int red, int green, int blue ) +void wxPen::SetColour( unsigned char red, unsigned char green, unsigned char blue ) { AllocExclusive(); - + M_PENDATA->m_colour.Set( red, green, blue ); } void wxPen::SetCap( int capStyle ) { AllocExclusive(); - + M_PENDATA->m_capStyle = capStyle; } void wxPen::SetJoin( int joinStyle ) { AllocExclusive(); - + M_PENDATA->m_joinStyle = joinStyle; } void wxPen::SetStyle( int style ) { AllocExclusive(); - + M_PENDATA->m_style = style; } void wxPen::SetWidth( int width ) { AllocExclusive(); - + M_PENDATA->m_width = width; } @@ -205,4 +220,3 @@ wxColour &wxPen::GetColour() const return M_PENDATA->m_colour; } -