Commit c2fa1b88 authored by Dick Hollenbeck's avatar Dick Hollenbeck

* Remove virtual BOARD_ITEM::{Get,Set}Position() which in turn means all

    derived classes' implementations of these functions become non virtual and
    can be truly _inlined_ for speed!  All GetPosition() in derived classes were also
    changed to return const wxPoint&, that is, a reference rather than a
    full copy of the position wxPoint. There was no need for polymorphism in
    {Get,Set}Position() since we never call these functions via generic pointer.
  * Remove BOARD::{Get,Set}Position() since they were only there to satisfy
    the pure virtuals established in BOARD_ITEM, which are now gone.
  * Added const wxPoint& CPolyLine::GetPos(), made CPolyLine::Get{X,Y}() inline.
  * Derive CPolyPt from wxPoint so we can return "const wxPoint&" fromt
    CPolyLine::GetPos().
parents f1e5be9a 107ef8f1
......@@ -7,7 +7,23 @@ email address.
2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* remove global g_Pad_Master global and put it into BOARD_DESIGN_SETTINGS
* Remove virtual BOARD_ITEM::{Get,Set}Position() which in turn means all
derived classes' implementations of these functions become non virtual and
can be truly _inlined_ for speed! All GetPosition() in derived classes were also
changed to return const wxPoint&, that is, a reference rather than a
full copy of the position wxPoint. There was no need for polymorphism in
{Get,Set}Position() since we never call these functions via generic pointer.
* Remove BOARD::{Get,Set}Position() since they were only there to satisfy
the pure virtuals established in BOARD_ITEM, which are now gone.
* Added const wxPoint& CPolyLine::GetPos(), made CPolyLine::Get{X,Y}() inline.
* Derive CPolyPt from wxPoint so we can return "const wxPoint&" fromt
CPolyLine::GetPos().
2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* remove global g_Pad_Master and put it into BOARD_DESIGN_SETTINGS
which is in turn already within BOARD.
* encapsulate class D_PAD with accessors, making data private.
* make D_PAD::GetBoundingRadius() do its longer calculation lazily, based on
......
......@@ -167,15 +167,8 @@ public:
* @return const wxPoint& - The position of this object.
* This function exists mainly to satisfy the virtual GetPosition() in parent class
*/
const wxPoint GetPosition() const
{
return m_Start; // it had to be start or end.
}
void SetPosition( const wxPoint& aPos )
{
m_Start = aPos;
}
const wxPoint& GetPosition() const { return m_Start; }
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; }
/**
* Function GetABPosition
......
......@@ -65,7 +65,7 @@ enum KICAD_T {
PCB_MODULE_TEXT_T, ///< class TEXTE_MODULE, text in a footprint
PCB_MODULE_EDGE_T, ///< class EDGE_MODULE, a footprint edge
PCB_TRACE_T, ///< class TRACKE, a track segment (segment on a copper layer)
PCB_VIA_T, ///< class VIA, a via (like a track segment on a copper layer)
PCB_VIA_T, ///< class SEGVIA, a via (like a track segment on a copper layer)
PCB_ZONE_T, ///< class SEGZONE, a segment used to fill a zone area (segment on a
///< copper layer)
PCB_MARKER_T, ///< class MARKER_PCB, a marker used to show something
......@@ -239,16 +239,19 @@ public:
*/
bool Contains( const EDA_RECT& aRect ) const;
wxSize GetSize() const { return m_Size; }
const wxSize& GetSize() const { return m_Size; }
int GetX() const { return m_Pos.x; }
int GetY() const { return m_Pos.y; }
wxPoint GetOrigin() const { return m_Pos; }
wxPoint GetPosition() const { return m_Pos; }
wxPoint GetEnd() const { return wxPoint( GetRight(), GetBottom() ); }
const wxPoint& GetOrigin() const { return m_Pos; }
const wxPoint& GetPosition() const { return m_Pos; }
const wxPoint GetEnd() const { return wxPoint( GetRight(), GetBottom() ); }
int GetWidth() const { return m_Size.x; }
int GetHeight() const { return m_Size.y; }
int GetRight() const { return m_Pos.x + m_Size.x; }
int GetBottom() const { return m_Pos.y + m_Size.y; }
void SetOrigin( const wxPoint& pos ) { m_Pos = pos; }
void SetOrigin( int x, int y ) { m_Pos.x = x; m_Pos.y = y; }
void SetSize( const wxSize& size ) { m_Size = size; }
......
......@@ -94,6 +94,11 @@ public:
BOARD_ITEM* Back() const { return (BOARD_ITEM*) Pback; }
BOARD_ITEM* GetParent() const { return (BOARD_ITEM*) m_Parent; }
#if 0
// DICK: there is no value in having a polymorphic {Get,Set}Position(). We never
// call GetPosition() using a generic pointer, and the virtual is slower and
// can never be inlined.
/**
* Function GetPosition
* returns the position of this object.
......@@ -107,6 +112,7 @@ public:
* @param aPos is the new position of this object
*/
virtual void SetPosition( const wxPoint& aPos ) = 0;
#endif
/**
* Function GetLayer
......
......@@ -268,12 +268,6 @@ public:
*/
static wxString GetDefaultLayerName( int aLayerNumber );
const wxPoint GetPosition() const // overload
{
return wxPoint( 0, 0 ); // dummy for pure virtual
}
void SetPosition( const wxPoint& aPos ) {} // overload
/**
* Function Add
* adds the given item to this BOARD and takes ownership of its memory.
......
......@@ -65,7 +65,7 @@ public:
~DIMENSION();
const wxPoint GetPosition() const { return m_Pos; }
const wxPoint& GetPosition() const { return m_Pos; }
void SetPosition( const wxPoint& aPos ); // override, sets m_Text's position too
......
......@@ -94,7 +94,7 @@ public:
const wxPoint& GetBezControl2() const { return m_BezierC2; }
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; } // override
const wxPoint GetPosition() const { return m_Start; } // override
const wxPoint& GetPosition() const { return m_Start; } // override
/**
* Function GetStart
......
......@@ -77,11 +77,7 @@ public:
DrawMarker( aPanel, aDC, aDrawMode, aOffset );
}
const wxPoint GetPosition() const
{
return m_Pos;
}
const wxPoint& GetPosition() const { return m_Pos; }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; }
/**
......
......@@ -61,7 +61,7 @@ public:
PCB_TARGET* Back() const { return (PCB_TARGET*) Pnext; }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; } // override
const wxPoint GetPosition() const { return m_Pos; } // override
const wxPoint& GetPosition() const { return m_Pos; } // override
void SetShape( int aShape ) { m_Shape = aShape; }
int GetShape() const { return m_Shape; }
......
......@@ -163,8 +163,8 @@ public:
*/
EDA_RECT GetBoundingBox() const;
void SetPosition( const wxPoint& aPos ); // overload
const wxPoint GetPosition() const { return m_Pos; } // overload
void SetPosition( const wxPoint& aPos ); // was overload
const wxPoint& GetPosition() const { return m_Pos; } // was overload
void SetOrientation( double newangle );
double GetOrientation() const { return m_Orient; }
......
......@@ -140,8 +140,8 @@ public:
PAD_SHAPE_T GetShape() const { return m_PadShape; }
void SetShape( PAD_SHAPE_T aShape ) { m_PadShape = aShape; m_boundingRadius = -1; }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; } // overload
const wxPoint GetPosition() const { return m_Pos; } // overload
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; } // was overload
const wxPoint& GetPosition() const { return m_Pos; } // was overload
void SetY( int y ) { m_Pos.y = y; }
void SetX( int x ) { m_Pos.x = x; }
......
......@@ -47,12 +47,12 @@ public:
~TEXTE_PCB();
const wxPoint GetPosition() const // is an overload
const wxPoint& GetPosition() const // was overload
{
return m_Pos; // within EDA_TEXT
}
void SetPosition( const wxPoint& aPos ) // is an overload
void SetPosition( const wxPoint& aPos ) // was overload
{
m_Pos = aPos; // within EDA_TEXT
}
......
......@@ -76,12 +76,12 @@ public:
TEXTE_MODULE* Back() const { return (TEXTE_MODULE*) Pback; }
void SetPosition( const wxPoint& aPos ) // overload a base
void SetPosition( const wxPoint& aPos ) // was overload
{
m_Pos = aPos; // in EDA_TEXT
}
const wxPoint GetPosition() const // overload a base
const wxPoint& GetPosition() const // was overload
{
return m_Pos; // from EDA_TEXT
}
......
......@@ -125,8 +125,8 @@ public:
*/
virtual void Flip( const wxPoint& aCentre );
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; } // overload
const wxPoint GetPosition() const { return m_Start; } // overload
void SetPosition( const wxPoint& aPos ) { m_Start = aPos; } // was overload
const wxPoint& GetPosition() const { return m_Start; } // was overload
void SetWidth( int aWidth ) { m_Width = aWidth; }
int GetWidth() const { return m_Width; }
......@@ -479,12 +479,8 @@ public:
*/
void ReturnLayerPair( int* top_layer, int* bottom_layer ) const;
const wxPoint GetPosition() const // overload
{
return m_Start;
}
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; } // overload
const wxPoint& GetPosition() const { return m_Start; } // was overload
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; } // was overload
/**
* Function GetClass
......
......@@ -113,13 +113,12 @@ bool ZONE_CONTAINER::UnFill()
}
const wxPoint ZONE_CONTAINER::GetPosition() const
const wxPoint& ZONE_CONTAINER::GetPosition() const
{
return m_Poly? GetCornerPosition( 0 ) : wxPoint( 0, 0 );
}
static const wxPoint dummy;
void ZONE_CONTAINER::SetPosition( const wxPoint& aPos ) {}
return m_Poly ? GetCornerPosition( 0 ) : dummy;
}
void ZONE_CONTAINER::SetNet( int aNetCode )
......
......@@ -150,8 +150,8 @@ public:
* Function GetPosition
* @return a wxPoint, position of the first point of the outline
*/
const wxPoint GetPosition() const; // overload
void SetPosition( const wxPoint& aPos ); // overload
const wxPoint& GetPosition() const; // was overload
void SetPosition( const wxPoint& aPos ) {} // was overload
/**
* Function SetPriority
......@@ -481,9 +481,9 @@ public:
m_Poly->RemoveAllContours();
}
wxPoint GetCornerPosition( int aCornerIndex ) const
const wxPoint& GetCornerPosition( int aCornerIndex ) const
{
return wxPoint( m_Poly->GetX( aCornerIndex ), m_Poly->GetY( aCornerIndex ) );
return m_Poly->GetPos( aCornerIndex );
}
void SetCornerPosition( int aCornerIndex, wxPoint new_pos )
......
......@@ -55,19 +55,21 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, M
if( aItem ) // aItem might be NULL
{
textB = aItem->GetSelectMenuText();
posB = aItem->GetPosition();
if( aItem->Type() == PCB_PAD_T )
{
position = aItem->GetPosition();
posB = position = ((D_PAD*)aItem)->GetPosition();
}
else if( aItem->Type() == PCB_VIA_T )
{
position = aItem->GetPosition();
posB = position = ((SEGVIA*)aItem)->GetPosition();
}
else if( aItem->Type() == PCB_TRACE_T )
{
TRACK* track = (TRACK*) aItem;
posB = track->GetPosition();
wxPoint endPos = track->m_End;
// either of aItem's start or end will be used for the marker position
......
......@@ -179,6 +179,9 @@ void PCB_BASE_FRAME::Import_Pad_Settings( D_PAD* aPad, bool aDraw )
case PAD_CONN:
aPad->SetDrillSize( wxSize( 0, 0 ) );
aPad->SetOffset( wxPoint( 0, 0 ) );
break;
default:
;
}
if( aDraw )
......
......@@ -1172,18 +1172,6 @@ void CPolyLine::UnHatch()
}
int CPolyLine::GetX( int ic )
{
return corner[ic].x;
}
int CPolyLine::GetY( int ic )
{
return corner[ic].y;
}
int CPolyLine::GetEndContour( int ic )
{
return corner[ic].end_contour;
......
......@@ -19,6 +19,7 @@
#include <kbool/include/kbool/booleng.h>
#include <pad_shapes.h>
#include <wx/gdicmn.h>
// inflection modes for DS_LINE and DS_LINE_VERTEX, used in math_for_graphics.cpp
enum
......@@ -48,6 +49,7 @@ public:
int left, right, top, bottom;
};
class CPoint
{
public:
......@@ -57,6 +59,7 @@ public:
CPoint( int i, int j ) { x = i; y = j; };
};
class CSegment
{
public:
......@@ -82,14 +85,13 @@ public:
bool bFound;
};
class CPolyPt
class CPolyPt : public wxPoint
{
public:
CPolyPt( int qx = 0, int qy = 0, bool qf = false, int aUtility = 0 )
{ x = qx; y = qy; end_contour = qf; utility = aUtility; };
int x;
int y;
bool end_contour;
int utility;
......@@ -100,6 +102,7 @@ public:
{ return (x != cpt2.x) || (y != cpt2.y) || (end_contour != cpt2.end_contour); }
};
#include <polygon_test_point_inside.h>
class CPolyLine
......@@ -166,8 +169,12 @@ public:
int GetContourStart( int icont );
int GetContourEnd( int icont );
int GetContourSize( int icont );
int GetX( int ic );
int GetY( int ic );
int GetX( int ic ) const { return corner[ic].x; }
int GetY( int ic ) const { return corner[ic].y; }
const wxPoint& GetPos( int ic ) const { return corner[ic]; }
int GetEndContour( int ic );
int GetUtility( int ic ) { return corner[ic].utility; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment