/* * KiRouter - a push-and-(sometimes-)shove PCB router * * Copyright (C) 2014 CERN * Author: Tomasz Wlostowski * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef __PNS_SIZES_SETTINGS_H #define __PNS_SIZES_SETTINGS_H #include #include #include "../class_track.h" // for VIATYPE_T class BOARD; class BOARD_DESIGN_SETTINGS; class PNS_ITEM; class PNS_SIZES_SETTINGS { public: PNS_SIZES_SETTINGS() : m_trackWidth( 100000 ), m_diffPairWidth( 100000 ), m_diffPairGap( 125000 ), m_viaDiameter( 500000 ), m_viaDrill( 200000 ), m_viaType( VIA_THROUGH ) {}; ~PNS_SIZES_SETTINGS() {}; void Init( BOARD* aBoard, PNS_ITEM* aStartItem = NULL, int aNet = -1 ); void ImportCurrent ( BOARD_DESIGN_SETTINGS& aSettings ); void ClearLayerPairs(); void AddLayerPair( int aL1, int aL2 ); int TrackWidth() const { return m_trackWidth; } void SetTrackWidth( int aWidth ) { m_trackWidth = aWidth; } int DiffPairWidth() const { return m_diffPairWidth; } int DiffPairGap() const { return m_diffPairGap; } int ViaDiameter() const { return m_viaDiameter; } void SetViaDiameter( int aDiameter) { m_viaDiameter = aDiameter; } int ViaDrill() const { return m_viaDrill; } void SetViaDrill( int aDrill ) { m_viaDrill = aDrill; } boost::optional PairedLayer ( int aLayerId ) { if( m_layerPairs.find(aLayerId) == m_layerPairs.end() ) return boost::optional(); return m_layerPairs [ aLayerId ]; } int GetLayerTop() const; int GetLayerBottom() const; void SetViaType( VIATYPE_T aViaType ) { m_viaType = aViaType; } VIATYPE_T ViaType() const { return m_viaType; } private: int inheritTrackWidth( PNS_ITEM* aItem ); int m_trackWidth; int m_diffPairWidth; int m_diffPairGap; int m_viaDiameter; int m_viaDrill; VIATYPE_T m_viaType; std::map m_layerPairs; }; #endif // __PNS_SIZES_SETTINGS_H