Commit a731a6b7 authored by Marco Mattila's avatar Marco Mattila
Browse files

Add more pad local copper zone settings in pcbnew. Tune the pad properties dialog a little.

parent e90cc8ad
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@ MODULE::MODULE( BOARD* parent ) :
    m_LocalSolderPasteMargin = 0;
    m_LocalSolderPasteMarginRatio = 0.0;
    m_ZoneConnection = UNDEFINED_CONNECTION; // Use zone setting by default
    m_ThermalWidth = 0; // Use zone setting by default
    m_ThermalGap = 0; // Use zone setting by default

    m_Reference = new TEXTE_MODULE( this, TEXT_is_REFERENCE );

@@ -103,6 +105,8 @@ MODULE::MODULE( const MODULE& aModule ) :
    m_LocalSolderPasteMargin = aModule.m_LocalSolderPasteMargin;
    m_LocalSolderPasteMarginRatio = aModule.m_LocalSolderPasteMarginRatio;
    m_ZoneConnection = aModule.m_ZoneConnection;
    m_ThermalWidth = aModule.m_ThermalWidth;
    m_ThermalGap = aModule.m_ThermalGap;

    // Copy reference and value.
    m_Reference = new TEXTE_MODULE( *aModule.m_Reference );
@@ -219,6 +223,8 @@ void MODULE::Copy( MODULE* aModule )
    m_LocalSolderPasteMargin        = aModule->m_LocalSolderPasteMargin;
    m_LocalSolderPasteMarginRatio   = aModule->m_LocalSolderPasteMarginRatio;
    m_ZoneConnection                = aModule->m_ZoneConnection;
    m_ThermalWidth                  = aModule->m_ThermalWidth;
    m_ThermalGap                    = aModule->m_ThermalGap;

    // Copy reference and value.
    m_Reference->Copy( aModule->m_Reference );
+7 −0
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ public:
    // The final margin is the sum of these 2 values

    ZoneConnection m_ZoneConnection;
    int m_ThermalWidth, m_ThermalGap;

public:
    MODULE( BOARD* parent );
@@ -198,6 +199,12 @@ public:
    void SetZoneConnection( ZoneConnection aType ) { m_ZoneConnection = aType; }
    ZoneConnection GetZoneConnection() const { return m_ZoneConnection; }

    void SetThermalWidth( int aWidth ) { m_ThermalWidth = aWidth; }
    int GetThermalWidth() const { return m_ThermalWidth; }

    void SetThermalGap( int aGap ) { m_ThermalGap = aGap; }
    int GetThermalGap() const { return m_ThermalGap; }

    int GetAttributes() const { return m_Attributs; }
    void SetAttributes( int aAttributes ) { m_Attributs = aAttributes; }

+26 −0
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ D_PAD::D_PAD( MODULE* parent ) :
    m_LocalSolderPasteMargin = 0;
    m_LocalSolderPasteMarginRatio = 0.0;
    m_ZoneConnection = UNDEFINED_CONNECTION; // Use parent setting by default
    m_ThermalWidth = 0; // Use parent setting by default
    m_ThermalGap = 0; // Use parent setting by default

    // set layers mask to default for a standard pad
    m_layerMask = PAD_STANDARD_DEFAULT_LAYERS;
@@ -305,6 +307,8 @@ void D_PAD::Copy( D_PAD* source )
    m_LocalSolderPasteMargin = source->m_LocalSolderPasteMargin;
    m_LocalSolderPasteMarginRatio = source->m_LocalSolderPasteMarginRatio;
    m_ZoneConnection = source->m_ZoneConnection;
    m_ThermalWidth = source->m_ThermalWidth;
    m_ThermalGap = source->m_ThermalGap;

    SetSubRatsnest( 0 );
    SetSubNet( 0 );
@@ -453,6 +457,28 @@ ZoneConnection D_PAD::GetZoneConnection() const
}


int D_PAD::GetThermalWidth() const
{
    MODULE* module = (MODULE*) GetParent();

    if( m_ThermalWidth == 0 && module )
        return module->GetThermalWidth();
    else
        return m_ThermalWidth;
}


int D_PAD::GetThermalGap() const
{
    MODULE* module = (MODULE*) GetParent();

    if( m_ThermalGap == 0 && module )
        return module->GetThermalGap();
    else
        return m_ThermalGap;
}


void D_PAD::DisplayInfo( EDA_DRAW_FRAME* frame )
{
    MODULE*     module;
+7 −0
Original line number Diff line number Diff line
@@ -269,6 +269,12 @@ public:
    void SetZoneConnection( ZoneConnection aType ) { m_ZoneConnection = aType; }
    ZoneConnection GetZoneConnection() const;

    void SetThermalWidth( int aWidth ) { m_ThermalWidth = aWidth; }
    int GetThermalWidth() const;

    void SetThermalGap( int aGap ) { m_ThermalGap = aGap; }
    int GetThermalGap() const;

    /* Reading and writing data on files */
    int ReadDescr( LINE_READER* aReader );

@@ -534,6 +540,7 @@ private:
    double      m_LocalSolderPasteMarginRatio;  ///< Local solder mask margin ratio value of pad size
                                                ///< The final margin is the sum of these 2 values
    ZoneConnection m_ZoneConnection;
    int m_ThermalWidth, m_ThermalGap;
};

#endif  // PAD_H_
+18 −1
Original line number Diff line number Diff line
@@ -450,6 +450,24 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( EDA_DRAW_PANEL* panel, wxDC* DC, in
}


int ZONE_CONTAINER::GetThermalReliefGap( D_PAD* aPad ) const
{
    if( aPad == NULL || aPad->GetThermalGap() == 0 )
        return m_ThermalReliefGap;
    else
        return aPad->GetThermalGap();
}


int ZONE_CONTAINER::GetThermalReliefCopperBridge( D_PAD* aPad ) const
{
    if( aPad == NULL || aPad->GetThermalWidth() == 0 )
        return m_ThermalReliefCopperBridge;
    else
        return aPad->GetThermalWidth();
}


bool ZONE_CONTAINER::HitTest( const wxPoint& refPos )
{
    if( HitTestForCorner( refPos ) )
@@ -888,7 +906,6 @@ ZoneConnection ZONE_CONTAINER::GetPadConnection( D_PAD* aPad ) const
        return m_PadConnection;
    else
        return aPad->GetZoneConnection();

}


Loading