Introduce wxGraphicsPenInfo class
This commit is contained in:
committed by
Vadim Zeitlin
parent
bc562289c6
commit
2305604565
@@ -285,9 +285,11 @@ class WXDLLIMPEXP_CORE wxCairoPenData : public wxCairoPenBrushBaseData
|
||||
{
|
||||
public:
|
||||
wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen );
|
||||
wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPenInfo &info );
|
||||
~wxCairoPenData();
|
||||
|
||||
void Init();
|
||||
void InitFromPenInfo( const wxGraphicsPenInfo& info );
|
||||
|
||||
virtual void Apply( wxGraphicsContext* context ) wxOVERRIDE;
|
||||
virtual wxDouble GetWidth() { return m_width; }
|
||||
@@ -735,13 +737,36 @@ void wxCairoPenData::Init()
|
||||
|
||||
wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen )
|
||||
: wxCairoPenBrushBaseData(renderer, pen.GetColour(), pen.IsTransparent())
|
||||
{
|
||||
wxDash *dashes;
|
||||
int nb_dashes = pen.GetDashes(&dashes);
|
||||
InitFromPenInfo(wxGraphicsPenInfo()
|
||||
.Colour(pen.GetColour())
|
||||
.Width(pen.GetWidth())
|
||||
.Style(pen.GetStyle())
|
||||
.Stipple(*pen.GetStipple())
|
||||
.Dashes(nb_dashes, dashes)
|
||||
.Join(pen.GetJoin())
|
||||
.Cap(pen.GetCap())
|
||||
);
|
||||
}
|
||||
|
||||
wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxGraphicsPenInfo &info )
|
||||
: wxCairoPenBrushBaseData(renderer, info.GetColour(), info.IsTransparent())
|
||||
{
|
||||
InitFromPenInfo(info);
|
||||
}
|
||||
|
||||
void wxCairoPenData::InitFromPenInfo( const wxGraphicsPenInfo &info )
|
||||
{
|
||||
Init();
|
||||
m_width = pen.GetWidth();
|
||||
m_width = info.GetWidthF();
|
||||
if (m_width < 0)
|
||||
m_width = info.GetWidth();
|
||||
if (m_width <= 0.0)
|
||||
m_width = 0.1;
|
||||
|
||||
switch ( pen.GetCap() )
|
||||
switch ( info.GetCap() )
|
||||
{
|
||||
case wxCAP_ROUND :
|
||||
m_cap = CAIRO_LINE_CAP_ROUND;
|
||||
@@ -760,7 +785,7 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen )
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( pen.GetJoin() )
|
||||
switch ( info.GetJoin() )
|
||||
{
|
||||
case wxJOIN_BEVEL :
|
||||
m_join = CAIRO_LINE_JOIN_BEVEL;
|
||||
@@ -797,7 +822,7 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen )
|
||||
9.0 , 6.0 , 3.0 , 3.0
|
||||
};
|
||||
|
||||
switch ( pen.GetStyle() )
|
||||
switch ( info.GetStyle() )
|
||||
{
|
||||
case wxPENSTYLE_SOLID :
|
||||
break;
|
||||
@@ -827,7 +852,7 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen )
|
||||
case wxPENSTYLE_USER_DASH :
|
||||
{
|
||||
wxDash *wxdashes ;
|
||||
m_count = pen.GetDashes( &wxdashes ) ;
|
||||
m_count = info.GetDashes( &wxdashes ) ;
|
||||
if ((wxdashes != NULL) && (m_count > 0))
|
||||
{
|
||||
m_userLengths = new double[m_count] ;
|
||||
@@ -848,14 +873,14 @@ wxCairoPenData::wxCairoPenData( wxGraphicsRenderer* renderer, const wxPen &pen )
|
||||
case wxPENSTYLE_STIPPLE :
|
||||
case wxPENSTYLE_STIPPLE_MASK :
|
||||
case wxPENSTYLE_STIPPLE_MASK_OPAQUE :
|
||||
InitStipple(pen.GetStipple());
|
||||
InitStipple(((wxGraphicsPenInfo&) info).GetStipple());
|
||||
break;
|
||||
|
||||
default :
|
||||
if ( pen.GetStyle() >= wxPENSTYLE_FIRST_HATCH
|
||||
&& pen.GetStyle() <= wxPENSTYLE_LAST_HATCH )
|
||||
if ( info.GetStyle() >= wxPENSTYLE_FIRST_HATCH
|
||||
&& info.GetStyle() <= wxPENSTYLE_LAST_HATCH )
|
||||
{
|
||||
InitHatch(static_cast<wxHatchStyle>(pen.GetStyle()));
|
||||
InitHatch(static_cast<wxHatchStyle>(info.GetStyle()));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2901,6 +2926,7 @@ public :
|
||||
|
||||
|
||||
virtual wxGraphicsPen CreatePen(const wxPen& pen) wxOVERRIDE ;
|
||||
virtual wxGraphicsPen CreatePen(const wxGraphicsPenInfo& info) wxOVERRIDE ;
|
||||
|
||||
virtual wxGraphicsBrush CreateBrush(const wxBrush& brush ) wxOVERRIDE ;
|
||||
|
||||
@@ -3087,6 +3113,17 @@ wxGraphicsPen wxCairoRenderer::CreatePen(const wxPen& pen)
|
||||
return p;
|
||||
}
|
||||
|
||||
wxGraphicsPen wxCairoRenderer::CreatePen(const wxGraphicsPenInfo& info)
|
||||
{
|
||||
wxGraphicsPen p;
|
||||
ENSURE_LOADED_OR_RETURN(p);
|
||||
if (info.GetStyle() != wxPENSTYLE_TRANSPARENT)
|
||||
{
|
||||
p.SetRefData(new wxCairoPenData( this, info ));
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
wxGraphicsBrush wxCairoRenderer::CreateBrush(const wxBrush& brush )
|
||||
{
|
||||
wxGraphicsBrush p;
|
||||
|
Reference in New Issue
Block a user