KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pns_sizes_settings.h
Go to the documentation of this file.
1/*
2 * KiRouter - a push-and-(sometimes-)shove PCB router
3 *
4 * Copyright (C) 2014 CERN
5 * Copyright (C) 2016, 2023 KiCad Developers, see AUTHORS.txt for contributors.
6 * Author: Tomasz Wlostowski <[email protected]>
7 *
8 * This program is free software: you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22#ifndef __PNS_SIZES_SETTINGS_H
23#define __PNS_SIZES_SETTINGS_H
24
25#include <map>
26#include <optional>
27
28#include "pcb_track.h" // for VIATYPE_T
29
30class BOARD;
32
33namespace PNS {
34
35class ITEM;
36
38{
39public:
41 m_clearance( 0 ),
42 m_minClearance( 0 ),
43 m_trackWidth( 155000 ),
47 m_viaDiameter( 600000 ),
48 m_viaDrill( 250000 ),
49 m_diffPairWidth( 125000 ),
50 m_diffPairGap( 180000 ),
51 m_diffPairViaGap( 180000 ),
53 m_holeToHole( 0 ),
55 {};
56
58
59 void ClearLayerPairs();
60 void AddLayerPair( int aL1, int aL2 );
61
62 // The working clearance, from the current net to anything else (without knowing the net of the
63 // other object). Specific clearance to another object may be resolved differently.
64 int Clearance() const { return m_clearance; }
65 void SetClearance( int aClearance ) { m_clearance = aClearance; }
66
67 // The absolute minimum clearance from the board
68 int MinClearance() const { return m_minClearance; }
69 void SetMinClearance( int aClearance ) { m_minClearance = aClearance; }
70
71 int TrackWidth() const { return m_trackWidth; }
72 void SetTrackWidth( int aWidth ) { m_trackWidth = aWidth; }
73
75 void SetTrackWidthIsExplicit( bool aIsExplicit ) { m_trackWidthIsExplicit = aIsExplicit; }
76
78 void SetBoardMinTrackWidth( int aWidth ) { m_boardMinTrackWidth = aWidth; }
79
80 int DiffPairWidth() const { return m_diffPairWidth; }
81 int DiffPairGap() const { return m_diffPairGap; }
82
83 int DiffPairViaGap() const
84 {
86 }
87
89
90 void SetDiffPairWidth( int aWidth ) { m_diffPairWidth = aWidth; }
91 void SetDiffPairGap( int aGap ) { m_diffPairGap = aGap; }
92 void SetDiffPairViaGapSameAsTraceGap ( bool aEnable )
93 {
95 }
96
97 void SetDiffPairViaGap( int aGap ) { m_diffPairViaGap = aGap; }
98
99 int ViaDiameter() const { return m_viaDiameter; }
100 void SetViaDiameter( int aDiameter ) { m_viaDiameter = aDiameter; }
101
102 int ViaDrill() const { return m_viaDrill; }
103 void SetViaDrill( int aDrill ) { m_viaDrill = aDrill; }
104
105 std::optional<int> PairedLayer( int aLayerId )
106 {
107 if( m_layerPairs.find(aLayerId) == m_layerPairs.end() )
108 return std::optional<int>();
109
110 return m_layerPairs[aLayerId];
111 }
112
113 int GetLayerTop() const;
114 int GetLayerBottom() const;
115
116 void SetHoleToHole( int aHoleToHole ) { m_holeToHole = aHoleToHole; }
117 int GetHoleToHole() const { return m_holeToHole; }
118
119 void SetViaType( VIATYPE aViaType ) { m_viaType = aViaType; }
120 VIATYPE ViaType() const { return m_viaType; }
121
122 wxString GetClearanceSource() const { return m_clearanceSource; }
123 void SetClearanceSource( const wxString& aSource ) { m_clearanceSource = aSource; }
124
125 wxString GetWidthSource() const { return m_widthSource; }
126 void SetWidthSource( const wxString& aSource ) { m_widthSource = aSource; }
127
129 void SetDiffPairWidthSource( const wxString& aSource ) { m_diffPairWidthSource = aSource; }
130
131 wxString GetDiffPairGapSource() const { return m_diffPairGapSource; }
132 void SetDiffPairGapSource( const wxString& aSource ) { m_diffPairGapSource = aSource; }
133
134 void SetDiffPairHoleToHole( int aHoleToHole ) { m_diffPairHoleToHole = aHoleToHole; }
136
137private:
143
147
152
155
156 std::map<int, int> m_layerPairs;
157
162};
163
164}
165
166#endif // __PNS_SIZES_SETTINGS_H
Container for design settings for a BOARD object.
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:290
void SetViaType(VIATYPE aViaType)
VIATYPE ViaType() const
void SetTrackWidth(int aWidth)
void SetBoardMinTrackWidth(int aWidth)
void SetDiffPairViaGapSameAsTraceGap(bool aEnable)
bool DiffPairViaGapSameAsTraceGap() const
void SetDiffPairWidth(int aWidth)
void SetDiffPairWidthSource(const wxString &aSource)
void SetDiffPairGapSource(const wxString &aSource)
std::map< int, int > m_layerPairs
void SetDiffPairGap(int aGap)
void SetHoleToHole(int aHoleToHole)
void SetViaDrill(int aDrill)
wxString GetClearanceSource() const
void SetDiffPairViaGap(int aGap)
wxString GetDiffPairGapSource() const
void SetDiffPairHoleToHole(int aHoleToHole)
void SetMinClearance(int aClearance)
wxString GetDiffPairWidthSource() const
void AddLayerPair(int aL1, int aL2)
void SetClearance(int aClearance)
std::optional< int > PairedLayer(int aLayerId)
bool TrackWidthIsExplicit() const
void SetViaDiameter(int aDiameter)
int GetDiffPairHoleToHole() const
int BoardMinTrackWidth() const
void SetClearanceSource(const wxString &aSource)
wxString GetWidthSource() const
void SetWidthSource(const wxString &aSource)
void SetTrackWidthIsExplicit(bool aIsExplicit)
Push and Shove diff pair dimensions (gap) settings dialog.
VIATYPE
Definition: pcb_track.h:66