mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-03-30 06:46:55 +00:00
Default to 4 user defined layers
This commit is contained in:
parent
9ab4fef369
commit
59a4cc2e4b
common
include
pcbnew
@ -654,17 +654,21 @@ LSET LSET::PhysicalLayersMask()
|
||||
}
|
||||
|
||||
|
||||
LSET LSET::UserDefinedLayers()
|
||||
LSET LSET::UserDefinedLayersMask( int aUserDefinedLayerCount )
|
||||
{
|
||||
static const LSET saved(
|
||||
{ User_1, User_2, User_3, User_4, User_5, User_6, User_7, User_8, User_9,
|
||||
User_10, User_11, User_12, User_13, User_14, User_15, User_16, User_17, User_18,
|
||||
User_19, User_20, User_21, User_22, User_23, User_24, User_25, User_26, User_27,
|
||||
User_28, User_29, User_30, User_31, User_32, User_33, User_34, User_35, User_36,
|
||||
User_37, User_38, User_39, User_40, User_41, User_42, User_43, User_44, User_45 } );
|
||||
LSET ret;
|
||||
size_t layer = User_1;
|
||||
|
||||
for( int ulayer = 1; ulayer <= aUserDefinedLayerCount; ulayer++ )
|
||||
{
|
||||
if( layer > ret.size() )
|
||||
break;
|
||||
|
||||
return saved;
|
||||
ret.set( layer );
|
||||
layer += 2;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -910,4 +914,13 @@ LSET& LSET::ClearNonCopperLayers()
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
LSET& LSET::ClearUserDefinedLayers()
|
||||
{
|
||||
for( size_t ii = User_1; ii < size(); ii += 2 )
|
||||
reset( ii );
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -612,6 +612,21 @@ public:
|
||||
*/
|
||||
void SetCopperLayerCount( int aNewLayerCount );
|
||||
|
||||
/**
|
||||
* @return the number of enabled user defined layers.
|
||||
*/
|
||||
inline int GetUserDefinedLayerCount() const
|
||||
{
|
||||
return m_userDefinedLayerCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the number of user defined layers to \a aNewLayerCount.
|
||||
*
|
||||
* @param aNewLayerCount The new number of enabled user defined layers.
|
||||
*/
|
||||
void SetUserDefinedLayerCount( int aNewLayerCount );
|
||||
|
||||
/**
|
||||
* The full thickness of the board including copper and masks.
|
||||
* @return
|
||||
@ -796,6 +811,8 @@ private:
|
||||
|
||||
int m_copperLayerCount; ///< Number of copper layers for this design
|
||||
|
||||
int m_userDefinedLayerCount; ///< Number of user defined layers for this design
|
||||
|
||||
LSET m_enabledLayers; ///< Bit-mask for layer enabling
|
||||
|
||||
int m_boardThickness; ///< Board thickness for 3D viewer
|
||||
|
@ -173,7 +173,8 @@ enum PCB_LAYER_ID: int
|
||||
|
||||
constexpr PCB_LAYER_ID PCBNEW_LAYER_ID_START = F_Cu;
|
||||
|
||||
#define MAX_CU_LAYERS 32
|
||||
#define MAX_CU_LAYERS 32
|
||||
#define MAX_USER_DEFINED_LAYERS 45
|
||||
|
||||
/**
|
||||
* Enum used during connectivity building to ensure we do not query connectivity while building
|
||||
|
@ -185,9 +185,11 @@ public:
|
||||
static LSET PhysicalLayersMask();
|
||||
|
||||
/**
|
||||
* Return a mask with all of the allowable user defined layers.
|
||||
* Return a mask with the requested number of user defined layers.
|
||||
*
|
||||
* @param aUserDefinedLayerCount The number of user defined layers
|
||||
*/
|
||||
static LSET UserDefinedLayers();
|
||||
static LSET UserDefinedLayersMask( int aUserDefinedLayerCount = MAX_USER_DEFINED_LAYERS );
|
||||
|
||||
/**
|
||||
* Layers which are not allowed within footprint definitions.
|
||||
@ -294,6 +296,11 @@ public:
|
||||
*/
|
||||
LSET& ClearNonCopperLayers();
|
||||
|
||||
/**
|
||||
* Clear the user defined layers in this set.
|
||||
*/
|
||||
LSET& ClearUserDefinedLayers();
|
||||
|
||||
#ifndef SWIG
|
||||
// Custom iterator to iterate over all set bits
|
||||
class KICOMMON_API all_set_layers_iterator : public BASE_SET::set_bits_iterator
|
||||
|
@ -792,6 +792,17 @@ void BOARD::SetCopperLayerCount( int aCount )
|
||||
}
|
||||
|
||||
|
||||
int BOARD::GetUserDefinedLayerCount() const
|
||||
{
|
||||
return GetDesignSettings().GetUserDefinedLayerCount();
|
||||
}
|
||||
|
||||
|
||||
void BOARD::SetUserDefinedLayerCount( int aCount )
|
||||
{
|
||||
return GetDesignSettings().SetUserDefinedLayerCount( aCount );
|
||||
}
|
||||
|
||||
PCB_LAYER_ID BOARD::GetCopperLayerStackMaxId() const
|
||||
{
|
||||
int imax = GetCopperLayerCount();
|
||||
|
@ -578,6 +578,9 @@ public:
|
||||
int GetCopperLayerCount() const;
|
||||
void SetCopperLayerCount( int aCount );
|
||||
|
||||
int GetUserDefinedLayerCount() const;
|
||||
void SetUserDefinedLayerCount( int aCount );
|
||||
|
||||
/**
|
||||
* @return The copper layer max PCB_LAYER_ID in the BOARD.
|
||||
* similar to GetCopperLayerCount(), but returns the max PCB_LAYER_ID
|
||||
|
@ -57,10 +57,13 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS( JSON_SETTINGS* aParent, const std:
|
||||
SetDefaultMasterPad();
|
||||
|
||||
LSET all_set = LSET().set();
|
||||
m_enabledLayers = all_set; // All layers enabled at first.
|
||||
// SetCopperLayerCount() will adjust this.
|
||||
m_enabledLayers = all_set; // All layers enabled at first.
|
||||
// SetCopperLayerCount() will adjust this.
|
||||
|
||||
// Default design is a double layer board with 4 user defined layers
|
||||
SetCopperLayerCount( 2 );
|
||||
SetUserDefinedLayerCount( 4 );
|
||||
|
||||
SetCopperLayerCount( 2 ); // Default design is a double sided board
|
||||
m_CurrentViaType = VIATYPE::THROUGH;
|
||||
|
||||
// if true, when creating a new track starting on an existing track, use this track width
|
||||
@ -1020,6 +1023,7 @@ void BOARD_DESIGN_SETTINGS::initFromOther( const BOARD_DESIGN_SETTINGS& aOther )
|
||||
m_useCustomDiffPair = aOther.m_useCustomDiffPair;
|
||||
m_customDiffPair = aOther.m_customDiffPair;
|
||||
m_copperLayerCount = aOther.m_copperLayerCount;
|
||||
m_userDefinedLayerCount = aOther.m_userDefinedLayerCount;
|
||||
m_enabledLayers = aOther.m_enabledLayers;
|
||||
m_boardThickness = aOther.m_boardThickness;
|
||||
m_currentNetClassName = aOther.m_currentNetClassName;
|
||||
@ -1115,6 +1119,7 @@ bool BOARD_DESIGN_SETTINGS::operator==( const BOARD_DESIGN_SETTINGS& aOther ) co
|
||||
if( m_useCustomDiffPair != aOther.m_useCustomDiffPair ) return false;
|
||||
if( m_customDiffPair != aOther.m_customDiffPair ) return false;
|
||||
if( m_copperLayerCount != aOther.m_copperLayerCount ) return false;
|
||||
if( m_userDefinedLayerCount != aOther.m_userDefinedLayerCount ) return false;
|
||||
if( m_enabledLayers != aOther.m_enabledLayers ) return false;
|
||||
if( m_boardThickness != aOther.m_boardThickness ) return false;
|
||||
if( m_currentNetClassName != aOther.m_currentNetClassName ) return false;
|
||||
@ -1446,6 +1451,17 @@ void BOARD_DESIGN_SETTINGS::SetCopperLayerCount( int aNewLayerCount )
|
||||
}
|
||||
|
||||
|
||||
void BOARD_DESIGN_SETTINGS::SetUserDefinedLayerCount( int aNewLayerCount )
|
||||
{
|
||||
m_userDefinedLayerCount = aNewLayerCount;
|
||||
|
||||
m_enabledLayers.ClearUserDefinedLayers();
|
||||
|
||||
if( aNewLayerCount > 0 )
|
||||
m_enabledLayers |= LSET::UserDefinedLayersMask( aNewLayerCount );
|
||||
}
|
||||
|
||||
|
||||
void BOARD_DESIGN_SETTINGS::SetEnabledLayers( LSET aMask )
|
||||
{
|
||||
// Ensures mandatory back and front layers are always enabled regardless of board file
|
||||
@ -1457,8 +1473,9 @@ void BOARD_DESIGN_SETTINGS::SetEnabledLayers( LSET aMask )
|
||||
|
||||
m_enabledLayers = aMask;
|
||||
|
||||
// update m_CopperLayerCount to ensure its consistency with m_EnabledLayers
|
||||
m_copperLayerCount = (int) aMask.ClearNonCopperLayers().count();
|
||||
// update layer counts to ensure their consistency with m_EnabledLayers
|
||||
m_copperLayerCount = (int) aMask.ClearNonCopperLayers().count();
|
||||
m_userDefinedLayerCount = (int) ( aMask & LSET::UserDefinedLayersMask() ).count();
|
||||
}
|
||||
|
||||
|
||||
|
@ -450,7 +450,7 @@ void PANEL_SETUP_LAYERS::initialize_layers_controls()
|
||||
m_layersControls[Cmts_User] = PANEL_SETUP_LAYERS_CTLs( m_CommentsName, m_CommentsCheckBox, m_CommentsStaticText );
|
||||
m_layersControls[Dwgs_User] = PANEL_SETUP_LAYERS_CTLs( m_DrawingsName, m_DrawingsCheckBox, m_DrawingsStaticText );
|
||||
|
||||
layers &= LSET::UserDefinedLayers();
|
||||
layers &= LSET::UserDefinedLayersMask();
|
||||
|
||||
for( auto it = layers.non_copper_layers_begin(); it != layers.non_copper_layers_end(); ++it )
|
||||
{
|
||||
@ -554,7 +554,7 @@ void PANEL_SETUP_LAYERS::SyncCopperLayers( int aNumCopperLayers )
|
||||
|
||||
void PANEL_SETUP_LAYERS::setUserDefinedLayerCheckBoxes()
|
||||
{
|
||||
LSET layers = m_enabledLayers & LSET::UserDefinedLayers();
|
||||
LSET layers = m_enabledLayers & LSET::UserDefinedLayersMask();
|
||||
|
||||
for( PCB_LAYER_ID layer : layers )
|
||||
setLayerCheckBox( layer, m_pcb->IsLayerEnabled( layer ) );
|
||||
@ -609,7 +609,7 @@ void PANEL_SETUP_LAYERS::showLayerTypes()
|
||||
|
||||
}
|
||||
|
||||
layers = m_enabledLayers & LSET::UserDefinedLayers();
|
||||
layers = m_enabledLayers & LSET::UserDefinedLayersMask();
|
||||
|
||||
for( PCB_LAYER_ID layer : layers )
|
||||
{
|
||||
@ -891,7 +891,7 @@ bool PANEL_SETUP_LAYERS::TransferDataFromWindow()
|
||||
}
|
||||
}
|
||||
|
||||
LSET layers = m_enabledLayers & LSET::UserDefinedLayers();
|
||||
LSET layers = m_enabledLayers & LSET::UserDefinedLayersMask();
|
||||
|
||||
for( PCB_LAYER_ID layer : layers )
|
||||
{
|
||||
@ -1127,7 +1127,7 @@ void PANEL_SETUP_LAYERS::addUserDefinedLayer( wxCommandEvent& aEvent )
|
||||
// Build the available user-defined layers list:
|
||||
std::vector<wxArrayString> list;
|
||||
|
||||
for( PCB_LAYER_ID layer : LSET::UserDefinedLayers().Seq() )
|
||||
for( PCB_LAYER_ID layer : LSET::UserDefinedLayersMask().Seq() )
|
||||
{
|
||||
wxCheckBox* checkBox = getCheckBox( layer );
|
||||
|
||||
@ -1157,7 +1157,7 @@ void PANEL_SETUP_LAYERS::addUserDefinedLayer( wxCommandEvent& aEvent )
|
||||
|
||||
PCB_LAYER_ID layer = UNDEFINED_LAYER;
|
||||
|
||||
for( PCB_LAYER_ID layer2 : LSET::UserDefinedLayers().Seq() )
|
||||
for( PCB_LAYER_ID layer2 : LSET::UserDefinedLayersMask().Seq() )
|
||||
{
|
||||
if( LayerName( layer2 ) == dlg.GetTextSelection() )
|
||||
{
|
||||
|
@ -79,6 +79,9 @@ bool PCB_EDIT_FRAME::Clear_Pcb( bool doAskAboutUnsavedChanges, bool aFinal )
|
||||
// Default copper layers count set to 2: double layer board
|
||||
GetBoard()->SetCopperLayerCount( 2 );
|
||||
|
||||
// Default user defined layers count set to 4
|
||||
GetBoard()->SetUserDefinedLayerCount( 4 );
|
||||
|
||||
// Update display (some options depend on the board setup)
|
||||
GetBoard()->SetVisibleLayers( LSET().set() );
|
||||
ReCreateLayerBox();
|
||||
|
@ -1121,7 +1121,7 @@ void ALTIUM_PCB::remapUnsureLayers( std::vector<ABOARD6_LAYER_STACKUP>& aStackup
|
||||
{
|
||||
LSET enabledLayers = m_board->GetEnabledLayers();
|
||||
LSET validRemappingLayers = enabledLayers | LSET::AllBoardTechMask() |
|
||||
LSET::UserMask() | LSET::UserDefinedLayers();
|
||||
LSET::UserMask() | LSET::UserDefinedLayersMask();
|
||||
|
||||
if( aStackup.size() == 0 )
|
||||
return;
|
||||
|
@ -687,7 +687,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::remapUnsureLayers()
|
||||
{
|
||||
LSET enabledLayers = m_board->GetEnabledLayers();
|
||||
LSET validRemappingLayers = enabledLayers | LSET::AllBoardTechMask() |
|
||||
LSET::UserMask() | LSET::UserDefinedLayers();
|
||||
LSET::UserMask() | LSET::UserDefinedLayersMask();
|
||||
|
||||
std::vector<INPUT_LAYER_DESC> inputLayers;
|
||||
std::map<wxString, LAYER_ID> cadstarLayerNameMap;
|
||||
@ -4167,7 +4167,7 @@ LSET CADSTAR_PCB_ARCHIVE_LOADER::getKiCadLayerSet( const LAYER_ID& aCadstarLayer
|
||||
PCB_LAYER_ID::Cmts_User,
|
||||
PCB_LAYER_ID::Eco1_User,
|
||||
PCB_LAYER_ID::Eco2_User } )
|
||||
| LSET::UserDefinedLayers();
|
||||
| LSET::UserDefinedLayersMask();
|
||||
|
||||
case LAYER_TYPE::ALLELEC:
|
||||
return LSET::AllCuMask( m_numCopperLayers );
|
||||
@ -4178,7 +4178,7 @@ LSET CADSTAR_PCB_ARCHIVE_LOADER::getKiCadLayerSet( const LAYER_ID& aCadstarLayer
|
||||
PCB_LAYER_ID::Cmts_User,
|
||||
PCB_LAYER_ID::Eco1_User,
|
||||
PCB_LAYER_ID::Eco2_User } )
|
||||
| LSET::UserDefinedLayers()
|
||||
| LSET::UserDefinedLayersMask()
|
||||
| LSET::AllBoardTechMask();
|
||||
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user