KiCad PCB EDA Suite
Loading...
Searching...
No Matches
layer_id.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20#include <layer_ids.h>
21#include <magic_enum.hpp>
22#include <wx/translation.h>
23
31wxString LayerName( int aLayer )
32{
33 switch( aLayer )
34 {
35 // PCB_LAYER_ID
37 case UNDEFINED_LAYER: return _( "undefined" );
38
39 // Copper
40 case PCB_LAYER_ID::F_Cu: return wxT( "F.Cu" );
41 case PCB_LAYER_ID::B_Cu: return wxT( "B.Cu" );
42
43 // Technicals
44 case PCB_LAYER_ID::B_Adhes: return wxT( "B.Adhesive" );
45 case PCB_LAYER_ID::F_Adhes: return wxT( "F.Adhesive" );
46 case PCB_LAYER_ID::B_Paste: return wxT( "B.Paste" );
47 case PCB_LAYER_ID::F_Paste: return wxT( "F.Paste" );
48 case PCB_LAYER_ID::B_SilkS: return wxT( "B.Silkscreen" );
49 case PCB_LAYER_ID::F_SilkS: return wxT( "F.Silkscreen" );
50 case PCB_LAYER_ID::B_Mask: return wxT( "B.Mask" );
51 case PCB_LAYER_ID::F_Mask: return wxT( "F.Mask" );
52
53 // Users
54 case PCB_LAYER_ID::Dwgs_User: return wxT( "User.Drawings" );
55 case PCB_LAYER_ID::Cmts_User: return wxT( "User.Comments" );
56 case PCB_LAYER_ID::Eco1_User: return wxT( "User.Eco1" );
57 case PCB_LAYER_ID::Eco2_User: return wxT( "User.Eco2" );
58 case PCB_LAYER_ID::Edge_Cuts: return wxT( "Edge.Cuts" );
59 case PCB_LAYER_ID::Margin: return wxT( "Margin" );
60
61 // Footprint
62 case PCB_LAYER_ID::F_CrtYd: return wxT( "F.Courtyard" );
63 case PCB_LAYER_ID::B_CrtYd: return wxT( "B.Courtyard" );
64 case PCB_LAYER_ID::F_Fab: return wxT( "F.Fab" );
65 case PCB_LAYER_ID::B_Fab: return wxT( "B.Fab" );
66
67 // Rescue
68 case PCB_LAYER_ID::Rescue: return _( "Rescue" );
69
70 // SCH_LAYER_ID
71
72 case LAYER_WIRE: return _( "Wires" );
73 case LAYER_BUS: return _( "Buses" );
74 case LAYER_BUS_JUNCTION: return _( "Bus junctions" );
75 case LAYER_JUNCTION: return _( "Junctions" );
76 case LAYER_LOCLABEL: return _( "Labels" );
77 case LAYER_GLOBLABEL: return _( "Global labels" );
78 case LAYER_HIERLABEL: return _( "Hierarchical labels" );
79 case LAYER_PINNUM: return _( "Pin numbers" );
80 case LAYER_PINNAM: return _( "Pin names" );
81 case LAYER_REFERENCEPART: return _( "Symbol references" );
82 case LAYER_VALUEPART: return _( "Symbol values" );
83 case LAYER_FIELDS: return _( "Symbol fields" );
84 case LAYER_INTERSHEET_REFS: return _( "Sheet references" );
85 case LAYER_NETCLASS_REFS: return _( "Net class references" );
86 case LAYER_RULE_AREAS: return _( "Rule areas" );
87 case LAYER_DEVICE: return _( "Symbol body outlines" );
88 case LAYER_DEVICE_BACKGROUND: return _( "Symbol body fills" );
89 case LAYER_SHAPES_BACKGROUND: return _( "Shape fills" );
90 case LAYER_NOTES: return _( "Schematic text && graphics" );
91 case LAYER_PRIVATE_NOTES: return _( "Symbol private text && graphics" );
92 case LAYER_NOTES_BACKGROUND: return _( "Schematic text && graphics backgrounds" );
93 case LAYER_PIN: return _( "Pins" );
94 case LAYER_SHEET: return _( "Sheet borders" );
95 case LAYER_SHEET_BACKGROUND: return _( "Sheet backgrounds" );
96 case LAYER_SHEETNAME: return _( "Sheet names" );
97 case LAYER_SHEETFIELDS: return _( "Sheet fields" );
98 case LAYER_SHEETFILENAME: return _( "Sheet file names" );
99 case LAYER_SHEETLABEL: return _( "Sheet pins" );
100 case LAYER_NOCONNECT: return _( "No-connect symbols" );
101 case LAYER_DNP_MARKER: return _( "DNP markers" );
102 case LAYER_EXCLUDED_FROM_SIM: return _( "Excluded-from-simulation markers" );
103 case LAYER_ERC_WARN: return _( "ERC warnings" );
104 case LAYER_ERC_ERR: return _( "ERC errors" );
105 case LAYER_ERC_EXCLUSION: return _( "ERC exclusions" );
106 case LAYER_SCHEMATIC_ANCHOR: return _( "Anchors" );
107 case LAYER_SCHEMATIC_AUX_ITEMS: return _( "Helper items" );
108 case LAYER_SCHEMATIC_GRID: return _( "Grid" );
109 case LAYER_SCHEMATIC_GRID_AXES: return _( "Axes" );
110 case LAYER_SCHEMATIC_BACKGROUND: return _( "Background" );
111 case LAYER_SCHEMATIC_CURSOR: return _( "Cursor" );
112 case LAYER_HOVERED: return _( "Hovered items" );
113 case LAYER_BRIGHTENED: return _( "Highlighted items" );
114 case LAYER_HIDDEN: return _( "Hidden items" );
115 case LAYER_NET_COLOR_HIGHLIGHT: return _( "Net color highlight" );
116 case LAYER_DRAG_NET_COLLISION: return _( "Drag net collisions" );
117 case LAYER_SELECTION_SHADOWS: return _( "Selection highlight" );
118 case LAYER_SCHEMATIC_DRAWINGSHEET: return _( "Drawing sheet" );
119 case LAYER_SCHEMATIC_PAGE_LIMITS: return _( "Page limits" );
120 case LAYER_OP_VOLTAGES: return _( "Operating point voltages" );
121 case LAYER_OP_CURRENTS: return _( "Operating point currents" );
122
123 // GAL_LAYER_ID
124
125 case LAYER_FOOTPRINTS_FR: return _( "Footprints front" );
126 case LAYER_FOOTPRINTS_BK: return _( "Footprints back" );
127 case LAYER_FP_VALUES: return _( "Values" );
128 case LAYER_FP_REFERENCES: return _( "Reference designators" );
129 case LAYER_FP_TEXT: return _( "Footprint text" );
130 case LAYER_TRACKS: return _( "Tracks" );
131 case LAYER_VIA_THROUGH: return _( "Through vias" );
132 case LAYER_VIA_BLIND: return _( "Blind vias" );
133 case LAYER_VIA_BURIED: return _( "Buried vias" );
134 case LAYER_VIA_MICROVIA: return _( "Micro-vias" );
135 case LAYER_VIA_HOLES: return _( "Via holes" );
136 case LAYER_VIA_HOLEWALLS: return _( "Via hole walls" );
137 case LAYER_PAD_PLATEDHOLES: return _( "Plated holes" );
138 case LAYER_PAD_HOLEWALLS: return _( "Plated hole walls" );
139 case LAYER_NON_PLATEDHOLES: return _( "Non-plated holes" );
140 case LAYER_RATSNEST: return _( "Ratsnest" );
141 case LAYER_DRC_WARNING: return _( "DRC warnings" );
142 case LAYER_DRC_ERROR: return _( "DRC errors" );
143 case LAYER_DRC_EXCLUSION: return _( "DRC exclusions" );
144 case LAYER_MARKER_SHADOWS: return _( "DRC marker shadows" );
145 case LAYER_DRC_HIGHLIGHTED: return _( "DRC highlighted" );
146 case LAYER_ANCHOR: return _( "Anchors" );
147 case LAYER_POINTS: return _( "Points" );
148 case LAYER_SUBGRIDS: return _( "Grids" );
149 case LAYER_VIA_STITCHING: return _( "Via stitching" );
150 case LAYER_DRAWINGSHEET: return _( "Drawing sheet" );
151 case LAYER_PAGE_LIMITS: return _( "Page limits" );
152 case LAYER_CURSOR: return _( "Cursor" );
153 case LAYER_AUX_ITEMS: return _( "Helper items" );
154 case LAYER_GRID: return _( "Grid" );
155 case LAYER_GRID_AXES: return _( "Grid axes" );
156 case LAYER_PCB_BACKGROUND: return _( "Background" );
157 case LAYER_SELECT_OVERLAY: return _( "Selection highlight" );
158 case LAYER_LOCKED_ITEM_SHADOW: return _( "Locked item shadow" );
159 case LAYER_CONFLICTS_SHADOW: return _( "Courtyard collision shadow" );
160 case LAYER_CONSTRAINT_SHADOW: return _( "Constrained item shadow" );
161 case LAYER_CONSTRAINT_UNDER: return _( "Under-constrained tint" );
162 case LAYER_CONSTRAINT_WELL: return _( "Fully constrained tint" );
163 case LAYER_CONSTRAINT_OVER: return _( "Over-constrained tint" );
164 case LAYER_BOARD_OUTLINE_AREA: return _( "Board outline area" );
165 case NETNAMES_LAYER_ID_START: return _( "Track net names" );
166 case LAYER_PAD_NETNAMES: return _( "Pad net names" );
167 case LAYER_VIA_NETNAMES: return _( "Via net names" );
168
169 default:
170 // Catch the general board layers that have numerically increasing names
171 if( aLayer > 0 && aLayer < PCB_LAYER_ID_COUNT && aLayer & 1 )
172 return wxString::Format( wxT( "User.%d" ), ( aLayer - PCB_LAYER_ID::User_1 ) / 2 + 1 );
173
174 return wxString::Format( wxT( "In%d.Cu" ), ( aLayer - PCB_LAYER_ID::In1_Cu ) / 2 + 1 );
175 }
176}
177
178
179PCB_LAYER_ID FlipLayer( PCB_LAYER_ID aLayerId, int aCopperLayersCount )
180{
181 switch( aLayerId )
182 {
183 case B_Cu: return F_Cu;
184 case F_Cu: return B_Cu;
185
186 case B_SilkS: return F_SilkS;
187 case F_SilkS: return B_SilkS;
188
189 case B_Adhes: return F_Adhes;
190 case F_Adhes: return B_Adhes;
191
192 case B_Mask: return F_Mask;
193 case F_Mask: return B_Mask;
194
195 case B_Paste: return F_Paste;
196 case F_Paste: return B_Paste;
197
198 case B_CrtYd: return F_CrtYd;
199 case F_CrtYd: return B_CrtYd;
200
201 case B_Fab: return F_Fab;
202 case F_Fab: return B_Fab;
203
204 default: // change internal layer if aCopperLayersCount is >= 4
205 if( IsCopperLayer( aLayerId ) && aCopperLayersCount >= 4 )
206 {
207 int innerIndex = ( aLayerId - In1_Cu ) / 2;
208 int flippedIndex = aCopperLayersCount - 3 - innerIndex;
209
210 if( flippedIndex < 0 )
211 flippedIndex = 0;
212
213 int maxIndex = aCopperLayersCount - 3;
214
215 if( flippedIndex > maxIndex )
216 flippedIndex = maxIndex;
217
218 return PCB_LAYER_ID( In1_Cu + flippedIndex * 2 );
219 }
220
221 // No change for the other layers
222 return aLayerId;
223 }
224}
225
226
228{
229 switch( aLegacyId )
230 {
231 case 0: return F_Cu;
232 case 31: return B_Cu;
233
234 default:
235 if( aLegacyId < 0 )
236 return magic_enum::enum_cast<PCB_LAYER_ID>( aLegacyId ).value_or( UNDEFINED_LAYER );
237
238 if( aLegacyId < 31 )
239 return static_cast<PCB_LAYER_ID>( In1_Cu + ( aLegacyId - 1 ) * 2 );
240
241 switch( aLegacyId )
242 {
243 case 32: return B_Adhes;
244 case 33: return F_Adhes;
245 case 34: return B_Paste;
246 case 35: return F_Paste;
247 case 36: return B_SilkS;
248 case 37: return F_SilkS;
249 case 38: return B_Mask;
250 case 39: return F_Mask;
251 case 40: return Dwgs_User;
252 case 41: return Cmts_User;
253 case 42: return Eco1_User;
254 case 43: return Eco2_User;
255 case 44: return Edge_Cuts;
256 case 45: return Margin;
257 case 46: return B_CrtYd;
258 case 47: return F_CrtYd;
259 case 48: return B_Fab;
260 case 49: return F_Fab;
261 case 50: return User_1;
262 case 51: return User_2;
263 case 52: return User_3;
264 case 53: return User_4;
265 case 54: return User_5;
266 case 55: return User_6;
267 case 56: return User_7;
268 case 57: return User_8;
269 case 58: return User_9;
270 case 59: return Rescue;
271 default: return UNDEFINED_LAYER;
272 }
273 }
274}
275
276
278{
279 // NOTE: User_1..User45 are NOT consecutive numbers!
280
281 switch( aLayer )
282 {
283 case LAYER_3D_COPPER_TOP: return F_Cu;
284 case LAYER_3D_COPPER_BOTTOM: return B_Cu;
286 case LAYER_3D_SILKSCREEN_TOP: return F_SilkS;
288 case LAYER_3D_SOLDERMASK_TOP: return F_Mask;
291 case LAYER_3D_USER_ECO1: return Eco1_User;
292 case LAYER_3D_USER_ECO2: return Eco2_User;
293 case LAYER_3D_F_FAB: return F_Fab;
294 case LAYER_3D_B_FAB: return B_Fab;
295 case LAYER_3D_F_COURTYARD: return F_CrtYd;
296 case LAYER_3D_B_COURTYARD: return B_CrtYd;
297 case LAYER_3D_USER_1: return User_1;
298 case LAYER_3D_USER_2: return User_2;
299 case LAYER_3D_USER_3: return User_3;
300 case LAYER_3D_USER_4: return User_4;
301 case LAYER_3D_USER_5: return User_5;
302 case LAYER_3D_USER_6: return User_6;
303 case LAYER_3D_USER_7: return User_7;
304 case LAYER_3D_USER_8: return User_8;
305 case LAYER_3D_USER_9: return User_9;
306 case LAYER_3D_USER_10: return User_10;
307 case LAYER_3D_USER_11: return User_11;
308 case LAYER_3D_USER_12: return User_12;
309 case LAYER_3D_USER_13: return User_13;
310 case LAYER_3D_USER_14: return User_14;
311 case LAYER_3D_USER_15: return User_15;
312 case LAYER_3D_USER_16: return User_16;
313 case LAYER_3D_USER_17: return User_17;
314 case LAYER_3D_USER_18: return User_18;
315 case LAYER_3D_USER_19: return User_19;
316 case LAYER_3D_USER_20: return User_20;
317 case LAYER_3D_USER_21: return User_21;
318 case LAYER_3D_USER_22: return User_22;
319 case LAYER_3D_USER_23: return User_23;
320 case LAYER_3D_USER_24: return User_24;
321 case LAYER_3D_USER_25: return User_25;
322 case LAYER_3D_USER_26: return User_26;
323 case LAYER_3D_USER_27: return User_27;
324 case LAYER_3D_USER_28: return User_28;
325 case LAYER_3D_USER_29: return User_29;
326 case LAYER_3D_USER_30: return User_30;
327 case LAYER_3D_USER_31: return User_31;
328 case LAYER_3D_USER_32: return User_32;
329 case LAYER_3D_USER_33: return User_33;
330 case LAYER_3D_USER_34: return User_34;
331 case LAYER_3D_USER_35: return User_35;
332 case LAYER_3D_USER_36: return User_36;
333 case LAYER_3D_USER_37: return User_37;
334 case LAYER_3D_USER_38: return User_38;
335 case LAYER_3D_USER_39: return User_39;
336 case LAYER_3D_USER_40: return User_40;
337 case LAYER_3D_USER_41: return User_41;
338 case LAYER_3D_USER_42: return User_42;
339 case LAYER_3D_USER_43: return User_43;
340 case LAYER_3D_USER_44: return User_44;
341 case LAYER_3D_USER_45: return User_45;
342 default: return UNDEFINED_LAYER;
343 }
344}
345
346
348{
349 // NOTE: User_1..User45 are NOT consecutive numbers!
350
351 switch( aLayer )
352 {
353 case F_Cu: return LAYER_3D_COPPER_TOP;
354 case B_Cu: return LAYER_3D_COPPER_BOTTOM;
356 case F_SilkS: return LAYER_3D_SILKSCREEN_TOP;
358 case F_Mask: return LAYER_3D_SOLDERMASK_TOP;
361 case Eco1_User: return LAYER_3D_USER_ECO1;
362 case Eco2_User: return LAYER_3D_USER_ECO2;
363 case F_Fab: return LAYER_3D_F_FAB;
364 case B_Fab: return LAYER_3D_B_FAB;
365 case F_CrtYd: return LAYER_3D_F_COURTYARD;
366 case B_CrtYd: return LAYER_3D_B_COURTYARD;
367 case User_1: return LAYER_3D_USER_1;
368 case User_2: return LAYER_3D_USER_2;
369 case User_3: return LAYER_3D_USER_3;
370 case User_4: return LAYER_3D_USER_4;
371 case User_5: return LAYER_3D_USER_5;
372 case User_6: return LAYER_3D_USER_6;
373 case User_7: return LAYER_3D_USER_7;
374 case User_8: return LAYER_3D_USER_8;
375 case User_9: return LAYER_3D_USER_9;
376 case User_10: return LAYER_3D_USER_10;
377 case User_11: return LAYER_3D_USER_11;
378 case User_12: return LAYER_3D_USER_12;
379 case User_13: return LAYER_3D_USER_13;
380 case User_14: return LAYER_3D_USER_14;
381 case User_15: return LAYER_3D_USER_15;
382 case User_16: return LAYER_3D_USER_16;
383 case User_17: return LAYER_3D_USER_17;
384 case User_18: return LAYER_3D_USER_18;
385 case User_19: return LAYER_3D_USER_19;
386 case User_20: return LAYER_3D_USER_20;
387 case User_21: return LAYER_3D_USER_21;
388 case User_22: return LAYER_3D_USER_22;
389 case User_23: return LAYER_3D_USER_23;
390 case User_24: return LAYER_3D_USER_24;
391 case User_25: return LAYER_3D_USER_25;
392 case User_26: return LAYER_3D_USER_26;
393 case User_27: return LAYER_3D_USER_27;
394 case User_28: return LAYER_3D_USER_28;
395 case User_29: return LAYER_3D_USER_29;
396 case User_30: return LAYER_3D_USER_30;
397 case User_31: return LAYER_3D_USER_31;
398 case User_32: return LAYER_3D_USER_32;
399 case User_33: return LAYER_3D_USER_33;
400 case User_34: return LAYER_3D_USER_34;
401 case User_35: return LAYER_3D_USER_35;
402 case User_36: return LAYER_3D_USER_36;
403 case User_37: return LAYER_3D_USER_37;
404 case User_38: return LAYER_3D_USER_38;
405 case User_39: return LAYER_3D_USER_39;
406 case User_40: return LAYER_3D_USER_40;
407 case User_41: return LAYER_3D_USER_41;
408 case User_42: return LAYER_3D_USER_42;
409 case User_43: return LAYER_3D_USER_43;
410 case User_44: return LAYER_3D_USER_44;
411 case User_45: return LAYER_3D_USER_45;
412 default: return UNDEFINED_LAYER;
413 }
414}
#define _(s)
PCB_LAYER_ID Map3DLayerToPCBLayer(int aLayer)
Definition layer_id.cpp:277
int MapPCBLayerTo3DLayer(PCB_LAYER_ID aLayer)
Definition layer_id.cpp:347
PCB_LAYER_ID BoardLayerFromLegacyId(int aLegacyId)
Retrieve a layer ID from an integer converted from a legacy (pre-V9) enum value.
Definition layer_id.cpp:227
PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount)
Definition layer_id.cpp:179
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition layer_id.cpp:31
@ LAYER_PAD_NETNAMES
Definition layer_ids.h:198
@ NETNAMES_LAYER_ID_START
Definition layer_ids.h:190
@ LAYER_VIA_NETNAMES
Definition layer_ids.h:199
@ LAYER_3D_USER_1
Definition layer_ids.h:593
@ LAYER_3D_SOLDERMASK_TOP
Definition layer_ids.h:582
@ LAYER_3D_USER_8
Definition layer_ids.h:600
@ LAYER_3D_USER_22
Definition layer_ids.h:614
@ LAYER_3D_USER_44
Definition layer_ids.h:636
@ LAYER_3D_USER_23
Definition layer_ids.h:615
@ LAYER_3D_USER_28
Definition layer_ids.h:620
@ LAYER_3D_USER_32
Definition layer_ids.h:624
@ LAYER_3D_USER_19
Definition layer_ids.h:611
@ LAYER_3D_USER_25
Definition layer_ids.h:617
@ LAYER_3D_USER_3
Definition layer_ids.h:595
@ LAYER_3D_USER_21
Definition layer_ids.h:613
@ LAYER_3D_USER_26
Definition layer_ids.h:618
@ LAYER_3D_USER_24
Definition layer_ids.h:616
@ LAYER_3D_USER_43
Definition layer_ids.h:635
@ LAYER_3D_USER_COMMENTS
Definition layer_ids.h:585
@ LAYER_3D_SOLDERMASK_BOTTOM
Definition layer_ids.h:581
@ LAYER_3D_USER_11
Definition layer_ids.h:603
@ LAYER_3D_USER_41
Definition layer_ids.h:633
@ LAYER_3D_USER_17
Definition layer_ids.h:609
@ LAYER_3D_USER_ECO1
Definition layer_ids.h:587
@ LAYER_3D_USER_20
Definition layer_ids.h:612
@ LAYER_3D_USER_31
Definition layer_ids.h:623
@ LAYER_3D_USER_ECO2
Definition layer_ids.h:588
@ LAYER_3D_B_FAB
Definition layer_ids.h:590
@ LAYER_3D_USER_15
Definition layer_ids.h:607
@ LAYER_3D_USER_38
Definition layer_ids.h:630
@ LAYER_3D_USER_13
Definition layer_ids.h:605
@ LAYER_3D_USER_33
Definition layer_ids.h:625
@ LAYER_3D_USER_35
Definition layer_ids.h:627
@ LAYER_3D_USER_29
Definition layer_ids.h:621
@ LAYER_3D_USER_40
Definition layer_ids.h:632
@ LAYER_3D_SILKSCREEN_TOP
Definition layer_ids.h:580
@ LAYER_3D_B_COURTYARD
Definition layer_ids.h:592
@ LAYER_3D_USER_7
Definition layer_ids.h:599
@ LAYER_3D_COPPER_TOP
Definition layer_ids.h:577
@ LAYER_3D_USER_12
Definition layer_ids.h:604
@ LAYER_3D_USER_30
Definition layer_ids.h:622
@ LAYER_3D_USER_36
Definition layer_ids.h:628
@ LAYER_3D_USER_2
Definition layer_ids.h:594
@ LAYER_3D_USER_18
Definition layer_ids.h:610
@ LAYER_3D_USER_14
Definition layer_ids.h:606
@ LAYER_3D_USER_5
Definition layer_ids.h:597
@ LAYER_3D_USER_37
Definition layer_ids.h:629
@ LAYER_3D_USER_10
Definition layer_ids.h:602
@ LAYER_3D_USER_42
Definition layer_ids.h:634
@ LAYER_3D_USER_45
Definition layer_ids.h:637
@ LAYER_3D_USER_6
Definition layer_ids.h:598
@ LAYER_3D_USER_4
Definition layer_ids.h:596
@ LAYER_3D_USER_27
Definition layer_ids.h:619
@ LAYER_3D_USER_DRAWINGS
Definition layer_ids.h:586
@ LAYER_3D_COPPER_BOTTOM
Definition layer_ids.h:578
@ LAYER_3D_USER_39
Definition layer_ids.h:631
@ LAYER_3D_USER_9
Definition layer_ids.h:601
@ LAYER_3D_USER_16
Definition layer_ids.h:608
@ LAYER_3D_SILKSCREEN_BOTTOM
Definition layer_ids.h:579
@ LAYER_3D_F_COURTYARD
Definition layer_ids.h:591
@ LAYER_3D_USER_34
Definition layer_ids.h:626
@ LAYER_3D_F_FAB
Definition layer_ids.h:589
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
Definition layer_ids.h:703
@ LAYER_GRID
Definition layer_ids.h:250
@ LAYER_POINTS
PCB reference/manual snap points visibility.
Definition layer_ids.h:317
@ LAYER_PAGE_LIMITS
Color for drawing the page extents (visibility stored in PCBNEW_SETTINGS::m_ShowPageLimits)
Definition layer_ids.h:334
@ LAYER_LOCKED_ITEM_SHADOW
Shadow layer for locked items.
Definition layer_ids.h:303
@ LAYER_VIA_HOLEWALLS
Definition layer_ids.h:294
@ LAYER_GRID_AXES
Definition layer_ids.h:251
@ LAYER_CONFLICTS_SHADOW
Shadow layer for items flagged conflicting.
Definition layer_ids.h:306
@ LAYER_FOOTPRINTS_FR
Show footprints on front.
Definition layer_ids.h:255
@ LAYER_NON_PLATEDHOLES
Draw usual through hole vias.
Definition layer_ids.h:235
@ LAYER_VIA_STITCHING
Outline of via stitching generators.
Definition layer_ids.h:326
@ LAYER_DRAWINGSHEET
Sheet frame and title block.
Definition layer_ids.h:274
@ LAYER_FP_REFERENCES
Show footprints references (when texts are visible).
Definition layer_ids.h:262
@ LAYER_BOARD_OUTLINE_AREA
PCB board outline.
Definition layer_ids.h:314
@ LAYER_DRC_EXCLUSION
Layer for DRC markers which have been individually excluded.
Definition layer_ids.h:300
@ LAYER_PCB_BACKGROUND
PCB background color.
Definition layer_ids.h:277
@ LAYER_DRC_HIGHLIGHTED
Color for highlighted DRC markers.
Definition layer_ids.h:337
@ LAYER_DRC_WARNING
Layer for DRC markers with #SEVERITY_WARNING.
Definition layer_ids.h:297
@ LAYER_PAD_PLATEDHOLES
to draw pad holes (plated)
Definition layer_ids.h:267
@ LAYER_TRACKS
Definition layer_ids.h:263
@ LAYER_CONSTRAINT_SHADOW
Shadow layer for items bound to a constraint.
Definition layer_ids.h:320
@ LAYER_CURSOR
PCB cursor.
Definition layer_ids.h:278
@ LAYER_AUX_ITEMS
Auxiliary items (guides, rule, etc).
Definition layer_ids.h:279
@ LAYER_RATSNEST
Definition layer_ids.h:249
@ LAYER_CONSTRAINT_UNDER
Under-constrained (free DOF remain).
Definition layer_ids.h:340
@ LAYER_FP_TEXT
Definition layer_ids.h:236
@ LAYER_FOOTPRINTS_BK
Show footprints on back.
Definition layer_ids.h:256
@ LAYER_ANCHOR
Anchor of items having an anchor point (texts, footprints).
Definition layer_ids.h:244
@ LAYER_CONSTRAINT_OVER
Over-constrained / conflicting.
Definition layer_ids.h:342
@ LAYER_VIA_BURIED
Draw blind vias.
Definition layer_ids.h:231
@ LAYER_CONSTRAINT_WELL
Fully constrained.
Definition layer_ids.h:341
@ LAYER_MARKER_SHADOWS
Shadows for DRC markers.
Definition layer_ids.h:301
@ LAYER_VIA_HOLES
Draw via holes (pad holes do not use this layer).
Definition layer_ids.h:270
@ LAYER_VIA_BLIND
Draw micro vias.
Definition layer_ids.h:230
@ LAYER_FP_VALUES
Show footprints values (when texts are visible).
Definition layer_ids.h:259
@ LAYER_VIA_MICROVIA
Definition layer_ids.h:229
@ LAYER_SELECT_OVERLAY
Selected items overlay.
Definition layer_ids.h:276
@ LAYER_VIA_THROUGH
Draw buried vias.
Definition layer_ids.h:232
@ LAYER_SUBGRIDS
Routing/placement subgrids (PCB_GRID_ITEM) visibility and color.
Definition layer_ids.h:323
@ LAYER_DRC_ERROR
Layer for DRC markers with #SEVERITY_ERROR.
Definition layer_ids.h:273
@ LAYER_PAD_HOLEWALLS
Definition layer_ids.h:293
@ LAYER_SHAPES_BACKGROUND
Definition layer_ids.h:505
@ LAYER_SHEETNAME
Definition layer_ids.h:494
@ LAYER_ERC_WARN
Definition layer_ids.h:501
@ LAYER_SCHEMATIC_ANCHOR
Definition layer_ids.h:522
@ LAYER_SHEETLABEL
Definition layer_ids.h:497
@ LAYER_PINNUM
Definition layer_ids.h:480
@ LAYER_RULE_AREAS
Definition layer_ids.h:487
@ LAYER_DEVICE
Definition layer_ids.h:488
@ LAYER_SHEET_BACKGROUND
Definition layer_ids.h:507
@ LAYER_EXCLUDED_FROM_SIM
Definition layer_ids.h:504
@ LAYER_BRIGHTENED
Definition layer_ids.h:513
@ LAYER_ERC_EXCLUSION
Definition layer_ids.h:503
@ LAYER_HIDDEN
Definition layer_ids.h:514
@ LAYER_HIERLABEL
Definition layer_ids.h:479
@ LAYER_PINNAM
Definition layer_ids.h:481
@ LAYER_PRIVATE_NOTES
Definition layer_ids.h:490
@ LAYER_HOVERED
Definition layer_ids.h:512
@ LAYER_GLOBLABEL
Definition layer_ids.h:478
@ LAYER_WIRE
Definition layer_ids.h:474
@ LAYER_NOTES
Definition layer_ids.h:489
@ LAYER_NET_COLOR_HIGHLIGHT
Definition layer_ids.h:515
@ LAYER_ERC_ERR
Definition layer_ids.h:502
@ LAYER_PIN
Definition layer_ids.h:492
@ LAYER_VALUEPART
Definition layer_ids.h:483
@ LAYER_BUS
Definition layer_ids.h:475
@ LAYER_SCHEMATIC_CURSOR
Definition layer_ids.h:511
@ LAYER_FIELDS
Definition layer_ids.h:484
@ LAYER_DEVICE_BACKGROUND
Definition layer_ids.h:506
@ LAYER_SCHEMATIC_DRAWINGSHEET
Definition layer_ids.h:518
@ LAYER_LOCLABEL
Definition layer_ids.h:477
@ LAYER_JUNCTION
Definition layer_ids.h:476
@ LAYER_SHEETFIELDS
Definition layer_ids.h:496
@ LAYER_SCHEMATIC_GRID_AXES
Definition layer_ids.h:509
@ LAYER_REFERENCEPART
Definition layer_ids.h:482
@ LAYER_NETCLASS_REFS
Definition layer_ids.h:486
@ LAYER_NOTES_BACKGROUND
Definition layer_ids.h:491
@ LAYER_OP_CURRENTS
Definition layer_ids.h:524
@ LAYER_SCHEMATIC_PAGE_LIMITS
Definition layer_ids.h:519
@ LAYER_SHEET
Definition layer_ids.h:493
@ LAYER_DRAG_NET_COLLISION
Definition layer_ids.h:516
@ LAYER_SELECTION_SHADOWS
Definition layer_ids.h:517
@ LAYER_SCHEMATIC_BACKGROUND
Definition layer_ids.h:510
@ LAYER_SCHEMATIC_AUX_ITEMS
Definition layer_ids.h:521
@ LAYER_INTERSHEET_REFS
Definition layer_ids.h:485
@ LAYER_OP_VOLTAGES
Definition layer_ids.h:523
@ LAYER_SHEETFILENAME
Definition layer_ids.h:495
@ LAYER_BUS_JUNCTION
Definition layer_ids.h:520
@ LAYER_DNP_MARKER
Definition layer_ids.h:500
@ LAYER_NOCONNECT
Definition layer_ids.h:498
@ LAYER_SCHEMATIC_GRID
Definition layer_ids.h:508
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
@ User_16
Definition layer_ids.h:135
@ User_29
Definition layer_ids.h:148
@ User_40
Definition layer_ids.h:159
@ User_15
Definition layer_ids.h:134
@ User_8
Definition layer_ids.h:127
@ F_CrtYd
Definition layer_ids.h:112
@ User_11
Definition layer_ids.h:130
@ User_25
Definition layer_ids.h:144
@ User_34
Definition layer_ids.h:153
@ User_45
Definition layer_ids.h:164
@ B_Adhes
Definition layer_ids.h:99
@ User_36
Definition layer_ids.h:155
@ Edge_Cuts
Definition layer_ids.h:108
@ Dwgs_User
Definition layer_ids.h:103
@ F_Paste
Definition layer_ids.h:100
@ Cmts_User
Definition layer_ids.h:104
@ User_6
Definition layer_ids.h:125
@ User_7
Definition layer_ids.h:126
@ User_19
Definition layer_ids.h:138
@ User_23
Definition layer_ids.h:142
@ F_Adhes
Definition layer_ids.h:98
@ User_41
Definition layer_ids.h:160
@ B_Mask
Definition layer_ids.h:94
@ B_Cu
Definition layer_ids.h:61
@ User_14
Definition layer_ids.h:133
@ User_39
Definition layer_ids.h:158
@ User_5
Definition layer_ids.h:124
@ User_20
Definition layer_ids.h:139
@ Eco1_User
Definition layer_ids.h:105
@ F_Mask
Definition layer_ids.h:93
@ User_42
Definition layer_ids.h:161
@ User_43
Definition layer_ids.h:162
@ B_Paste
Definition layer_ids.h:101
@ User_10
Definition layer_ids.h:129
@ User_9
Definition layer_ids.h:128
@ User_27
Definition layer_ids.h:146
@ User_28
Definition layer_ids.h:147
@ UNSELECTED_LAYER
Definition layer_ids.h:58
@ F_Fab
Definition layer_ids.h:115
@ Margin
Definition layer_ids.h:109
@ F_SilkS
Definition layer_ids.h:96
@ B_CrtYd
Definition layer_ids.h:111
@ UNDEFINED_LAYER
Definition layer_ids.h:57
@ Eco2_User
Definition layer_ids.h:106
@ In1_Cu
Definition layer_ids.h:62
@ User_35
Definition layer_ids.h:154
@ Rescue
Definition layer_ids.h:117
@ User_31
Definition layer_ids.h:150
@ User_3
Definition layer_ids.h:122
@ User_1
Definition layer_ids.h:120
@ User_12
Definition layer_ids.h:131
@ B_SilkS
Definition layer_ids.h:97
@ User_30
Definition layer_ids.h:149
@ User_37
Definition layer_ids.h:156
@ User_22
Definition layer_ids.h:141
@ User_38
Definition layer_ids.h:157
@ User_4
Definition layer_ids.h:123
@ User_21
Definition layer_ids.h:140
@ User_24
Definition layer_ids.h:143
@ PCB_LAYER_ID_COUNT
Definition layer_ids.h:167
@ User_13
Definition layer_ids.h:132
@ User_2
Definition layer_ids.h:121
@ User_17
Definition layer_ids.h:136
@ User_33
Definition layer_ids.h:152
@ User_26
Definition layer_ids.h:145
@ User_32
Definition layer_ids.h:151
@ User_18
Definition layer_ids.h:137
@ User_44
Definition layer_ids.h:163
@ F_Cu
Definition layer_ids.h:60
@ B_Fab
Definition layer_ids.h:114