]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/msw/pen.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxPen class 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  16 #pragma interface "pen.h" 
  19 #include "wx/gdiobj.h" 
  20 #include "wx/bitmap.h" 
  21 #include "wx/colour.h" 
  23 typedef WXDWORD wxMSWDash
; 
  25 class WXDLLEXPORT wxPen
; 
  27 class WXDLLEXPORT wxPenRefData
: public wxGDIRefData
 
  29     friend class WXDLLEXPORT wxPen
; 
  32     wxPenRefData(const wxPenRefData
& data
); 
  48 //  DECLARE_NO_COPY_CLASS(wxPenRefData) 
  49 // because copy constructor is explicitly declared above; 
  50 // but no copy assignment operator is defined, so declare 
  51 // it private to prevent the compiler from defining it: 
  52     wxPenRefData
& operator=(const wxPenRefData
&); 
  55 #define M_PENDATA ((wxPenRefData *)m_refData) 
  56 #define wxPENDATA(x) ((wxPenRefData *)(x).m_refData) 
  59 class WXDLLEXPORT wxPen
: public wxGDIObject
 
  61   DECLARE_DYNAMIC_CLASS(wxPen
) 
  64   wxPen(const wxColour
& col
, int width 
= 1, int style 
= wxSOLID
); 
  65   wxPen(const wxBitmap
& stipple
, int width
); 
  66   inline wxPen(const wxPen
& pen
) { Ref(pen
); } 
  69   inline wxPen
& operator = (const wxPen
& pen
) { if (*this == pen
) return (*this); Ref(pen
); return *this; } 
  70   inline bool operator == (const wxPen
& pen
) const  
  72       // It is impossible to know if the user dashes have changed,  
  73       // so we must assume that they have 
  74       if ( m_refData 
&& pen
.m_refData 
) 
  76           if ( M_PENDATA
->m_nbDash 
!= 0 || wxPENDATA(pen
)->m_nbDash 
!= 0 ) 
  79       return m_refData 
== pen
.m_refData
; 
  81   inline bool operator != (const wxPen
& pen
) const  
  83       // It is impossible to know if the user dashes have changed,  
  84       // so we must assume that they have 
  85       if ( m_refData 
&& pen
.m_refData 
) 
  87           if ( M_PENDATA
->m_nbDash 
!= 0 || wxPENDATA(pen
)->m_nbDash 
!= 0 ) 
  90       return m_refData 
!= pen
.m_refData
;  
  93   virtual bool Ok() const { return (m_refData 
!= NULL
) ; } 
  95   // Override in order to recreate the pen 
  96   void SetColour(const wxColour
& col
) ; 
  97   void SetColour(unsigned char r
, unsigned char g
, unsigned char b
); 
  99   void SetWidth(int width
)  ; 
 100   void SetStyle(int style
)  ; 
 101   void SetStipple(const wxBitmap
& stipple
)  ; 
 102   void SetDashes(int nb_dashes
, const wxDash 
*dash
)  ; 
 103   void SetJoin(int join
)  ; 
 104   void SetCap(int cap
)  ; 
 106   inline wxColour
& GetColour() const { return (M_PENDATA 
? M_PENDATA
->m_colour 
: wxNullColour
); }; 
 107   inline int GetWidth() const { return (M_PENDATA 
? M_PENDATA
->m_width 
: 0); }; 
 108   inline int GetStyle() const { return (M_PENDATA 
? M_PENDATA
->m_style 
: 0); }; 
 109   inline int GetJoin() const { return (M_PENDATA 
? M_PENDATA
->m_join 
: 0); }; 
 110   inline int GetCap() const { return (M_PENDATA 
? M_PENDATA
->m_cap 
: 0); }; 
 111   inline int GetDashes(wxDash 
**ptr
) const 
 113     *ptr 
= (M_PENDATA 
? (wxDash
*)M_PENDATA
->m_dash 
: (wxDash
*) NULL
); 
 114     return (M_PENDATA 
? M_PENDATA
->m_nbDash 
: 0); 
 117   inline wxBitmap 
*GetStipple() const { return (M_PENDATA 
? (& M_PENDATA
->m_stipple
) : (wxBitmap
*) NULL
); }; 
 120   bool RealizeResource(); 
 121   bool FreeResource(bool force 
= FALSE
); 
 122   WXHANDLE 
GetResourceHandle() const; 
 127 int wx2msPenStyle(int wx_style
);