int D_PAD::GetSolderMaskMargin() const { int margin = m_LocalSolderMaskMargin; MODULE* module = GetParent(); if( module ) { if( margin == 0 ) { if( module->GetLocalSolderMaskMargin() ) margin = module->GetLocalSolderMaskMargin(); } if( margin == 0 ) { BOARD* brd = GetBoard(); margin = brd->GetDesignSettings().m_SolderMaskMargin; } } // ensure mask have a size always >= 0 if( margin < 0 ) { int minsize = -std::min( m_Size.x, m_Size.y ) / 2; if( margin < minsize ) margin = minsize; } return margin; }
int D_PAD::GetSolderMaskMargin() const { // The pad inherits the margin only to calculate a default shape, // therefore only if it is also a copper layer // Pads defined only on mask layers (and perhaps on other tech layers) use the shape // defined by the pad settings only bool isOnCopperLayer = ( m_layerMask & LSET::AllCuMask() ).any(); if( !isOnCopperLayer ) return 0; int margin = m_LocalSolderMaskMargin; MODULE* module = GetParent(); if( module ) { if( margin == 0 ) { if( module->GetLocalSolderMaskMargin() ) margin = module->GetLocalSolderMaskMargin(); } if( margin == 0 ) { BOARD* brd = GetBoard(); if( brd ) { margin = brd->GetDesignSettings().m_SolderMaskMargin; } } } // ensure mask have a size always >= 0 if( margin < 0 ) { int minsize = -std::min( m_Size.x, m_Size.y ) / 2; if( margin < minsize ) margin = minsize; } return margin; }