Commit c2fa1b88 authored by Dick Hollenbeck's avatar Dick Hollenbeck
Browse files

* 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
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -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
+2 −9
Original line number Diff line number Diff line
@@ -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
+8 −5
Original line number Diff line number Diff line
@@ -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; }
+6 −0
Original line number Diff line number Diff line
@@ -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
+0 −6
Original line number Diff line number Diff line
@@ -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.
Loading