]>
git.saurik.com Git - wxWidgets.git/blob - src/dfb/pen.cpp
4db8f6df5514e030702cb2d52741ca58e447d59f
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        src/dfb/pen.cpp 
   3 // Purpose:     wxPen class implementation 
   4 // Author:      Vaclav Slavik 
   7 // Copyright:   (c) 2006 REA Elektronik GmbH 
   8 // Licence:     wxWindows licence 
   9 ///////////////////////////////////////////////////////////////////////////// 
  11 // For compilers that support precompilation, includes "wx.h". 
  12 #include "wx/wxprec.h" 
  21     #include "wx/bitmap.h" 
  22     #include "wx/colour.h" 
  25 //----------------------------------------------------------------------------- 
  27 //----------------------------------------------------------------------------- 
  29 class wxPenRefData 
: public wxGDIRefData
 
  32     wxPenRefData(const wxColour
& clr 
= wxNullColour
, wxPenStyle style 
= wxPENSTYLE_SOLID
) 
  38     wxPenRefData(const wxPenRefData
& data
) 
  39         : m_style(data
.m_style
), m_colour(data
.m_colour
) {} 
  41     virtual bool IsOk() const { return m_colour
.IsOk(); } 
  43     void SetStyle(int style
) 
  45         if ( style 
!= wxPENSTYLE_SOLID 
&& style 
!= wxPENSTYLE_TRANSPARENT 
) 
  47             wxFAIL_MSG( "only wxSOLID and wxTRANSPARENT styles are supported" ); 
  48             style 
= wxPENSTYLE_SOLID
; 
  58 //----------------------------------------------------------------------------- 
  60 #define M_PENDATA ((wxPenRefData *)m_refData) 
  62 IMPLEMENT_DYNAMIC_CLASS(wxPen
, wxGDIObject
) 
  64 wxPen::wxPen(const wxColour 
&colour
, int width
, wxPenStyle style
) 
  66     wxASSERT_MSG( width 
<= 1, "only width=0,1 are supported" ); 
  68     m_refData 
= new wxPenRefData(colour
, style
); 
  71 #if FUTURE_WXWIN_COMPATIBILITY_3_0 
  72 wxPen::wxPen(const wxColour
& col
, int width
, int style
) 
  74     m_refData 
= new wxPenRefData(col
, (wxPenStyle
)style
); 
  78 wxPen::wxPen(const wxBitmap
& WXUNUSED(stipple
), int WXUNUSED(width
)) 
  80     wxFAIL_MSG( "stipple pens not supported" ); 
  82     m_refData 
= new wxPenRefData(); 
  85 bool wxPen::operator==(const wxPen
& pen
) const 
  87 #warning "this is incorrect (MGL too)" 
  88     return m_refData 
== pen
.m_refData
; 
  91 void wxPen::SetColour(const wxColour 
&colour
) 
  94     M_PENDATA
->m_colour 
= colour
; 
  97 void wxPen::SetDashes(int WXUNUSED(number_of_dashes
), const wxDash 
*WXUNUSED(dash
)) 
  99     wxFAIL_MSG( "SetDashes not implemented" ); 
 102 void wxPen::SetColour(unsigned char red
, unsigned char green
, unsigned char blue
) 
 105     M_PENDATA
->m_colour
.Set(red
, green
, blue
); 
 108 void wxPen::SetCap(wxPenCap 
WXUNUSED(capStyle
)) 
 110     wxFAIL_MSG( "SetCap not implemented" ); 
 113 void wxPen::SetJoin(wxPenJoin 
WXUNUSED(joinStyle
)) 
 115     wxFAIL_MSG( "SetJoin not implemented" ); 
 118 void wxPen::SetStyle(wxPenStyle style
) 
 121     M_PENDATA
->SetStyle(style
); 
 124 void wxPen::SetStipple(const wxBitmap
& WXUNUSED(stipple
)) 
 126     wxFAIL_MSG( "SetStipple not implemented" ); 
 129 void wxPen::SetWidth(int width
) 
 131     wxASSERT_MSG( width 
<= 1, "only width=0,1 are implemented" ); 
 134 int wxPen::GetDashes(wxDash 
**ptr
) const 
 136     wxFAIL_MSG( "GetDashes not implemented" ); 
 142 int wxPen::GetDashCount() const 
 144     wxFAIL_MSG( "GetDashCount not implemented" ); 
 149 wxDash
* wxPen::GetDash() const 
 151     wxFAIL_MSG( "GetDash not implemented" ); 
 156 wxPenCap 
wxPen::GetCap() const 
 158     wxCHECK_MSG( Ok(), wxCAP_INVALID
, wxT("invalid pen") ); 
 160     wxFAIL_MSG( "GetCap not implemented" ); 
 161     return wxCAP_INVALID
; 
 164 wxPenJoin 
wxPen::GetJoin() const 
 166     wxCHECK_MSG( Ok(), wxJOIN_INVALID
, wxT("invalid pen") ); 
 168     wxFAIL_MSG( "GetJoin not implemented" ); 
 169     return wxJOIN_INVALID
; 
 172 wxPenStyle 
wxPen::GetStyle() const 
 174     wxCHECK_MSG( Ok(), wxPENSTYLE_INVALID
, wxT("invalid pen") ); 
 176     return M_PENDATA
->m_style
; 
 179 int wxPen::GetWidth() const 
 181     wxCHECK_MSG( Ok(), -1, wxT("invalid pen") ); 
 186 wxColour 
wxPen::GetColour() const 
 188     wxCHECK_MSG( Ok(), wxNullColour
, wxT("invalid pen") ); 
 190     return M_PENDATA
->m_colour
; 
 193 wxBitmap 
*wxPen::GetStipple() const 
 195     wxCHECK_MSG( Ok(), NULL
, wxT("invalid pen") ); 
 197     wxFAIL_MSG( "GetStipple not implemented" ); 
 201 wxGDIRefData 
*wxPen::CreateGDIRefData() const 
 203     return new wxPenRefData
; 
 206 wxGDIRefData 
*wxPen::CloneGDIRefData(const wxGDIRefData 
*data
) const 
 208     return new wxPenRefData(*(wxPenRefData 
*)data
);