/***************************************************************************/ /* class_board_design_settings.cpp - EDA_BoardDesignSettings class functions */ /***************************************************************************/ #include "fctsys.h" #include "common.h" #include "pcbnew.h" #include "class_board_design_settings.h" /*****************************************************/ EDA_BoardDesignSettings::EDA_BoardDesignSettings() /*****************************************************/ // Default values for designing boards { int ii; static const int default_layer_color[32] = { GREEN, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, RED, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, MAGENTA, CYAN, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY }; m_EnabledLayers = ALL_LAYERS; // All layers enabled at first. // SetCopperLayerCount() will adjust thist. m_VisibleLayers = 0xffffffff; // IMB: All layers visible at first. TODO: Use a macro for the initial value. m_VisibleElements = 0x00000fff; // IMB: All elements visible at first. TODO: Use a macro for the initial value. SetCopperLayerCount( 2 ); // Default design is a double sided board m_CurrentViaType = VIA_THROUGH; // via type (VIA_BLIND_BURIED, VIA_THROUGH VIA_MICROVIA) m_UseConnectedTrackWidth = false; // if true, when creating a new track starting on an existing track, use this track width m_MicroViasAllowed = false; // true to allow micro vias m_DrawSegmentWidth = 100; // current graphic line width (not EDGE layer) m_EdgeSegmentWidth = 100; // current graphic line width (EDGE layer only) m_PcbTextWidth = 100; // current Pcb (not module) Text width m_PcbTextSize = wxSize( 500, 500 ); // current Pcb (not module) Text size m_TrackMinWidth = 80; // track min value for width ((min copper size value m_ViasMinSize = 350; // vias (not micro vias) min diameter m_ViasMinDrill = 200; // vias (not micro vias) min drill diameter m_MicroViasMinSize = 200; // micro vias (not vias) min diameter m_MicroViasMinDrill = 50; // micro vias (not vias) min drill diameter m_MaskMargin = 150; // Solder mask margin /* Color options for screen display of the Printed Board: */ for( ii = 0; ii < 32; ii++ ) m_LayerColor[ii] = default_layer_color[ii]; // Layer colors (tracks and graphic items) m_ViaColor[VIA_NOT_DEFINED] = DARKGRAY; m_ViaColor[VIA_MICROVIA] = CYAN; m_ViaColor[VIA_BLIND_BURIED] = BROWN; m_ViaColor[VIA_THROUGH] = WHITE; m_RatsnestColor = WHITE; // Ratsnest color } // see pcbstruct.h int EDA_BoardDesignSettings::GetVisibleLayers() const { return m_VisibleLayers; } void EDA_BoardDesignSettings::SetVisibleLayers( int aMask ) { m_VisibleLayers = aMask & m_EnabledLayers & ALL_LAYERS; } void EDA_BoardDesignSettings::SetLayerVisibility( int aLayerIndex, bool aNewState ) { // Altough Pcbnew uses only 29, Gerbview uses all 32 layers if( aLayerIndex < 0 || aLayerIndex >= 32 ) return; if( aNewState && IsLayerEnabled( aLayerIndex )) m_VisibleLayers |= 1 << aLayerIndex; else m_VisibleLayers &= ~( 1 << aLayerIndex ); } void EDA_BoardDesignSettings::SetElementVisibility( int aElementCategory, bool aNewState ) { if( aElementCategory < 0 || aElementCategory > PAD_CMP_VISIBLE ) return; if( aNewState ) m_VisibleElements |= 1 << aElementCategory; else m_VisibleElements &= ~( 1 << aElementCategory ); } /** * Function SetCopperLayerCount * do what its name says... * @param aNewLayerCount = The new number of enabled copper layers */ void EDA_BoardDesignSettings::SetCopperLayerCount( int aNewLayerCount ) { m_CopperLayerCount = aNewLayerCount; // ensure consistency with the m_EnabledLayers member m_EnabledLayers &= ~ALL_CU_LAYERS; m_EnabledLayers |= CUIVRE_LAYER; if ( m_CopperLayerCount > 1 ) m_EnabledLayers |= CMP_LAYER; for( int ii = 1; ii < aNewLayerCount-1; ii++ ) m_EnabledLayers |= 1 << ii; }