KiCad PCB EDA Suite
Loading...
Searching...
No Matches
layer_ids.h
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 (C) 2014 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
5 * Copyright (C) 2010 Jean-Pierre Charras, jp.charras at wanadoo.fr
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#ifndef LAYER_IDS_H
23#define LAYER_IDS_H
24
25#include <set>
26#include <vector>
27#include <bitset>
28#include <stdexcept>
29#include <wx/string.h>
30#include <kicommon.h>
31
32
47
48
55enum PCB_LAYER_ID: int
56{
59
60 F_Cu = 0,
61 B_Cu = 2,
62 In1_Cu = 4,
63 In2_Cu = 6,
64 In3_Cu = 8,
65 In4_Cu = 10,
66 In5_Cu = 12,
67 In6_Cu = 14,
68 In7_Cu = 16,
69 In8_Cu = 18,
70 In9_Cu = 20,
71 In10_Cu = 22,
72 In11_Cu = 24,
73 In12_Cu = 26,
74 In13_Cu = 28,
75 In14_Cu = 30,
76 In15_Cu = 32,
77 In16_Cu = 34,
78 In17_Cu = 36,
79 In18_Cu = 38,
80 In19_Cu = 40,
81 In20_Cu = 42,
82 In21_Cu = 44,
83 In22_Cu = 46,
84 In23_Cu = 48,
85 In24_Cu = 50,
86 In25_Cu = 52,
87 In26_Cu = 54,
88 In27_Cu = 56,
89 In28_Cu = 58,
90 In29_Cu = 60,
91 In30_Cu = 62,
92
93 F_Mask = 1,
94 B_Mask = 3,
95
99 B_Adhes = 11,
102
107
109 Margin = 27,
110
113
114 B_Fab = 33,
115 F_Fab = 35,
116
117 Rescue = 37,
118
119 // User definable layers.
120 User_1 = 39,
121 User_2 = 41,
122 User_3 = 43,
123 User_4 = 45,
124 User_5 = 47,
125 User_6 = 49,
126 User_7 = 51,
127 User_8 = 53,
128 User_9 = 55,
151 User_32 = 101,
152 User_33 = 103,
153 User_34 = 105,
154 User_35 = 107,
155 User_36 = 109,
156 User_37 = 111,
157 User_38 = 113,
158 User_39 = 115,
159 User_40 = 117,
160 User_41 = 119,
161 User_42 = 121,
162 User_43 = 123,
163 User_44 = 125,
164 User_45 = 127,
165
166
168};
169
171
172#define MAX_CU_LAYERS 32
173#define MAX_USER_DEFINED_LAYERS 45
174
185
203
205#define NETNAMES_LAYER_INDEX( layer ) ( static_cast<int>( NETNAMES_LAYER_ID_START ) + layer )
206
207#define GAL_UI_LAYER_COUNT 10
208
224{
226
233
237
238// LAYER_MOD_TEXT_BK deprecated + 6,
239
240// DEPRECATED, UNUSED SINCE 9.0. text marked as invisible.
241// LAYER_HIDDEN_TEXT = GAL_LAYER_ID_START + 7,
242
245
246// LAYER_PADS_SMD_FR = GAL_LAYER_ID_START + 9, // Deprecated since 9.0
247// LAYER_PADS_SMD_BK = GAL_LAYER_ID_START + 10, // Deprecated since 9.0
248
252
253// LAYER_NO_CONNECTS deprecated + 14, // show a marker on pads with no nets
254
257
260
264
265// LAYER_PADS_TH = GAL_LAYER_ID_START + 20, ///< Deprecated since 9.0
266
268
271
281
284
285 // Layers in this section have visibility controls but were not present in legacy board files.
286
289
292
295
298
302
304
307
310
311// LAYER_DRC_SHAPES = GAL_LAYER_ID_START + 42, ///< Deprecated since 11.0
312// LAYER_DRC_SHAPE2 = GAL_LAYER_ID_START + 43, ///< Deprecated since 10.0
313
315
318
321
324
327
328 // Add layers below this point that do not have visibility controls, so don't need explicit
329 // enum values
330
333
336
338
339 // Constraint tints themed and drawn by overlay with no visibility control of their own
343
346
349
353
357
361
365
369
373
374 // Layers for drawing on-canvas UI
377
384
386};
387
389#define GAL_LAYER_INDEX( x ) ( x - GAL_LAYER_ID_START )
390
392#define BITMAP_LAYER_FOR( boardLayer ) ( LAYER_BITMAP_START + boardLayer )
393#define ZONE_LAYER_FOR( boardLayer ) ( LAYER_ZONE_START + boardLayer )
394#define PAD_COPPER_LAYER_FOR( boardLayer ) ( LAYER_PAD_COPPER_START + boardLayer )
395#define VIA_COPPER_LAYER_FOR( boardLayer ) ( LAYER_VIA_COPPER_START + boardLayer )
396#define CLEARANCE_LAYER_FOR( boardLayer ) ( LAYER_CLEARANCE_START + boardLayer )
397#define DRILL_SYMBOL_LAYER_FOR( boardLayer ) ( LAYER_DRILL_SYMBOL_START + boardLayer )
398#define BOARD_LAYER_FOR_DRILL_SYMBOL( galLayer ) \
399 ( (PCB_LAYER_ID) ( ( galLayer ) - LAYER_DRILL_SYMBOL_START ) )
400#define POINT_LAYER_FOR( boardLayer ) ( LAYER_POINT_START + boardLayer )
401
403
405{
406 a = GAL_LAYER_ID( int( a ) + 1 );
407 return a;
408}
409
410inline GAL_LAYER_ID ToGalLayer( int aInteger )
411{
412 wxASSERT( aInteger >= GAL_LAYER_ID_START && aInteger <= GAL_LAYER_ID_END );
413 return static_cast<GAL_LAYER_ID>( aInteger );
414}
415
417inline GAL_LAYER_ID operator+( const GAL_LAYER_ID& a, int b )
418{
419 GAL_LAYER_ID t = GAL_LAYER_ID( int( a ) + b );
420 wxASSERT( t <= GAL_LAYER_ID_END );
421 return t;
422}
423
424
426typedef std::bitset<GAL_LAYER_ID_COUNT> GAL_BASE_SET;
427
428
431{
432
433private:
434 static constexpr int start = static_cast<int>( GAL_LAYER_ID_START );
435
436public:
438 {
439 }
440
441 GAL_SET( const GAL_SET& aOther ) : std::bitset<GAL_LAYER_ID_COUNT>( aOther )
442 {
443 }
444
445 GAL_SET( const GAL_LAYER_ID* aArray, unsigned aCount );
446
448 {
449 GAL_BASE_SET::set();
450 return *this;
451 }
452
453 GAL_SET& set( int aPos, bool aVal = true )
454 {
455 GAL_BASE_SET::set( aPos, aVal );
456 return *this;
457 }
458
459 GAL_SET& set( GAL_LAYER_ID aPos, bool aVal = true )
460 {
461 GAL_BASE_SET::set( static_cast<std::size_t>( aPos ) - start, aVal );
462 return *this;
463 }
464
466 {
467 return test( static_cast<std::size_t>( aPos ) - start );
468 }
469
470 std::vector<GAL_LAYER_ID> Seq() const;
471
472 static GAL_SET DefaultVisible();
473};
474
535
536#define SCH_LAYER_ID_COUNT ( SCH_LAYER_ID_END - SCH_LAYER_ID_START )
537
538#define SCH_LAYER_INDEX( x ) ( x - SCH_LAYER_ID_START )
539
541{
542 a = SCH_LAYER_ID( int( a ) + 1 );
543 return a;
544}
545
547#define GERBER_DRAWLAYERS_COUNT static_cast<int>( PCB_LAYER_ID_COUNT )
548
567
568#define GERBER_DRAW_LAYER( x ) ( GERBVIEW_LAYER_ID_START + x )
569
570#define GERBER_DCODE_LAYER( x ) ( GERBER_DRAWLAYERS_COUNT + x )
571
572#define GERBER_DRAW_LAYER_INDEX( x ) ( x - GERBVIEW_LAYER_ID_START )
573
574
576enum LAYER_3D_ID : int
577{
579
653
654 // Inner copper layers are appended here to keep existing enum values stable.
685
687};
688
690#define LAYER_ID_COUNT LAYER_3D_END
691
692
698KICOMMON_API wxString LayerName( int aLayer );
699
700
701// Some elements do not have yet a visibility control
702// from a dialog, but have a visibility control flag.
703// Here is a mask to set them visible, to be sure they are displayed
704// after loading a board for instance
705#define MIN_VISIBILITY_MASK int( ( 1 << GAL_LAYER_INDEX( LAYER_PAD_PLATEDHOLES ) ) +\
706 ( 1 << GAL_LAYER_INDEX( LAYER_VIA_HOLES ) ) +\
707 ( 1 << GAL_LAYER_INDEX( LAYER_SELECT_OVERLAY ) ) +\
708 ( 1 << GAL_LAYER_INDEX( LAYER_GP_OVERLAY ) ) +\
709 ( 1 << GAL_LAYER_INDEX( LAYER_RATSNEST ) ) )
710
711
719inline bool IsValidLayer( int aLayerId )
720{
721 return unsigned( aLayerId ) < PCB_LAYER_ID_COUNT;
722}
723
730inline bool IsPcbLayer( int aLayer )
731{
732 return aLayer >= F_Cu && aLayer < PCB_LAYER_ID_COUNT;
733}
734
741inline bool IsCopperLayer( int aLayerId )
742{
743 return !( aLayerId & 1 ) && aLayerId < PCB_LAYER_ID_COUNT && aLayerId >= 0;
744}
745
752inline bool IsExternalCopperLayer( int aLayerId )
753{
754 return aLayerId == F_Cu || aLayerId == B_Cu;
755}
756
763inline bool IsInnerCopperLayer( int aLayerId )
764{
765 return IsCopperLayer( aLayerId ) && !IsExternalCopperLayer( aLayerId );
766}
767
774inline bool IsNonCopperLayer( int aLayerId )
775{
776 return ( aLayerId & 1 ) && aLayerId <= PCB_LAYER_ID_COUNT;
777}
778
787inline bool IsCopperLayer( int aLayerId, bool aIncludeSyntheticCopperLayers )
788{
789 if( aIncludeSyntheticCopperLayers )
790 return !IsNonCopperLayer( aLayerId );
791 else
792 return IsCopperLayer( aLayerId );
793}
794
795inline bool IsViaPadLayer( int aLayer )
796{
797 return aLayer == LAYER_VIA_THROUGH
798 || aLayer == LAYER_VIA_MICROVIA
799 || aLayer == LAYER_VIA_BLIND
800 || aLayer == LAYER_VIA_BURIED;
801}
802
803inline bool IsHoleLayer( int aLayer )
804{
805 return aLayer == LAYER_VIA_HOLES
806 || aLayer == LAYER_VIA_HOLEWALLS
807 || aLayer == LAYER_PAD_PLATEDHOLES
808 || aLayer == LAYER_PAD_HOLEWALLS
809 || aLayer == LAYER_NON_PLATEDHOLES;
810}
811
812inline bool IsSolderMaskLayer( int aLayer )
813{
814 return aLayer == F_Mask || aLayer == B_Mask;
815}
816
823inline bool IsUserLayer( PCB_LAYER_ID aLayerId )
824{
825 return aLayerId == Dwgs_User || aLayerId == Cmts_User || aLayerId == Eco1_User
826 || aLayerId == Eco2_User || ( aLayerId >= User_1 && !IsCopperLayer( aLayerId ) );
827}
828
829
830/*
831 * IMPORTANT: If a layer is not a front layer that doesn't necessarily mean it's a back layer.
832 *
833 * So a layer can be:
834 * - Front
835 * - Back
836 * - Neither (internal or auxiliary)
837 *
838 * The check most frequent is for back layers, since it involves flips.
839 */
840
844inline bool IsFrontLayer( PCB_LAYER_ID aLayerId )
845{
846 switch( aLayerId )
847 {
848 case F_Cu:
849 case F_Adhes:
850 case F_Paste:
851 case F_SilkS:
852 case F_Mask:
853 case F_CrtYd:
854 case F_Fab:
855 return true;
856 default:
857 ;
858 }
859
860 return false;
861}
862
863
867inline bool IsBackLayer( PCB_LAYER_ID aLayerId )
868{
869 switch( aLayerId )
870 {
871 case B_Cu:
872 case B_Adhes:
873 case B_Paste:
874 case B_SilkS:
875 case B_Mask:
876 case B_CrtYd:
877 case B_Fab:
878 return true;
879 default:
880 return false;
881 }
882}
883
884
888inline bool IsCopperLayerLowerThan( PCB_LAYER_ID aLayerA, PCB_LAYER_ID aLayerB )
889{
890 if( aLayerA == aLayerB )
891 return false;
892
893 if( aLayerA == B_Cu )
894 return true;
895
896 if( aLayerB == B_Cu )
897 return false;
898
899 return aLayerA > aLayerB;
900}
901
902
912KICOMMON_API PCB_LAYER_ID FlipLayer( PCB_LAYER_ID aLayerId, int aCopperLayersCount = 0 );
913
914
918inline int GetNetnameLayer( int aLayer )
919{
920 if( IsCopperLayer( aLayer ) || IsViaPadLayer( aLayer ) )
921 return NETNAMES_LAYER_INDEX( aLayer );
922
923 // Fallback
924 return Cmts_User;
925}
926
933inline bool IsNetnameLayer( int aLayer )
934{
935 return aLayer >= NETNAMES_LAYER_INDEX( F_Cu ) && aLayer < NETNAMES_LAYER_ID_END;
936}
937
938
939inline bool IsZoneFillLayer( int aLayer )
940{
941 return aLayer >= LAYER_ZONE_START && aLayer <= LAYER_ZONE_END;
942}
943
944
945inline bool IsPadCopperLayer( int aLayer )
946{
947 return aLayer >= LAYER_PAD_COPPER_START && aLayer <= LAYER_PAD_COPPER_END;
948}
949
950
951inline bool IsViaCopperLayer( int aLayer )
952{
953 return aLayer >= LAYER_VIA_COPPER_START && aLayer <= LAYER_VIA_COPPER_END;
954}
955
956
957inline bool IsClearanceLayer( int aLayer )
958{
959 return aLayer >= LAYER_CLEARANCE_START && aLayer <= LAYER_CLEARANCE_END;
960}
961
962
963inline bool IsDrillSymbolLayer( int aLayer )
964{
965 return aLayer >= LAYER_DRILL_SYMBOL_START && aLayer < LAYER_DRILL_SYMBOL_END;
966}
967
968
969inline bool IsPointsLayer( int aLayer )
970{
971 return aLayer >= LAYER_POINT_START && aLayer <= LAYER_POINT_END;
972}
973
974
975inline bool IsDCodeLayer( int aLayer )
976{
978 && aLayer < ( GERBVIEW_LAYER_ID_START + ( 2 * GERBER_DRAWLAYERS_COUNT ) );
979}
980
981
983inline size_t CopperLayerToOrdinal( PCB_LAYER_ID aLayer )
984{
985 wxCHECK( IsCopperLayer( aLayer ), 0 );
986
987 switch( aLayer )
988 {
989 case F_Cu: return 0;
990 case B_Cu: return MAX_CU_LAYERS - 1;
991 default: return ( aLayer - B_Cu ) / 2;
992 }
993}
994
995
1000
1001
1004
1005
1007
1008#endif // LAYER_IDS_H
Helper for storing and iterating over GAL_LAYER_IDs.
Definition layer_ids.h:431
bool Contains(GAL_LAYER_ID aPos)
Definition layer_ids.h:465
GAL_SET & set()
Definition layer_ids.h:447
static constexpr int start
Definition layer_ids.h:434
GAL_SET(const GAL_SET &aOther)
Definition layer_ids.h:441
GAL_SET & set(int aPos, bool aVal=true)
Definition layer_ids.h:453
GAL_SET & set(GAL_LAYER_ID aPos, bool aVal=true)
Definition layer_ids.h:459
#define KICOMMON_API
Definition kicommon.h:27
bool IsSolderMaskLayer(int aLayer)
Definition layer_ids.h:812
NETNAMES_LAYER_ID
Dedicated layers for net names used in Pcbnew.
Definition layer_ids.h:188
@ LAYER_PAD_FR_NETNAMES
Additional netnames layers (not associated with a PCB layer).
Definition layer_ids.h:196
@ LAYER_PAD_BK_NETNAMES
Definition layer_ids.h:197
@ LAYER_PAD_NETNAMES
Definition layer_ids.h:198
@ NETNAMES_LAYER_ID_START
Definition layer_ids.h:190
@ NETNAMES_LAYER_ID_END
Definition layer_ids.h:201
@ LAYER_VIA_NETNAMES
Definition layer_ids.h:199
@ NETNAMES_LAYER_ID_RESERVED
Reserved space for board layer netnames.
Definition layer_ids.h:193
std::bitset< GAL_LAYER_ID_COUNT > GAL_BASE_SET
Wraps a std::bitset.
Definition layer_ids.h:426
bool IsDrillSymbolLayer(int aLayer)
Definition layer_ids.h:963
GAL_LAYER_ID operator++(GAL_LAYER_ID &a)
Definition layer_ids.h:404
GERBVIEW_LAYER_ID
Gerbview draw layers.
Definition layer_ids.h:551
@ GERBVIEW_LAYER_ID_RESERVED
Gerbview draw layers and d-code layers.
Definition layer_ids.h:555
@ LAYER_GERBVIEW_DRAWINGSHEET
Definition layer_ids.h:562
@ GERBVIEW_LAYER_ID_START
Definition layer_ids.h:552
@ LAYER_GERBVIEW_BACKGROUND
Definition layer_ids.h:561
@ LAYER_DCODES
Definition layer_ids.h:557
@ LAYER_NEGATIVE_OBJECTS
Definition layer_ids.h:558
@ LAYER_GERBVIEW_PAGE_LIMITS
Definition layer_ids.h:563
@ GERBVIEW_LAYER_ID_END
Definition layer_ids.h:565
@ LAYER_GERBVIEW_AXES
Definition layer_ids.h:560
@ LAYER_GERBVIEW_GRID
Definition layer_ids.h:559
KICOMMON_API PCB_LAYER_ID Map3DLayerToPCBLayer(int aLayer)
Definition layer_id.cpp:279
GAL_LAYER_ID operator+(const GAL_LAYER_ID &a, int b)
Used for via types.
Definition layer_ids.h:417
bool IsPcbLayer(int aLayer)
Test whether a layer is a valid layer for Pcbnew.
Definition layer_ids.h:730
bool IsPadCopperLayer(int aLayer)
Definition layer_ids.h:945
LAYER_3D_ID
3D Viewer virtual layers for color settings
Definition layer_ids.h:577
@ LAYER_3D_COPPER_INNER_30
Definition layer_ids.h:684
@ LAYER_3D_COPPER_INNER_29
Definition layer_ids.h:683
@ LAYER_3D_USER_1
Definition layer_ids.h:599
@ LAYER_3D_COPPER_INNER_6
Definition layer_ids.h:660
@ LAYER_3D_COPPER_INNER_4
Definition layer_ids.h:658
@ LAYER_3D_COPPER_INNER_13
Definition layer_ids.h:667
@ LAYER_3D_SOLDERMASK_TOP
Definition layer_ids.h:588
@ LAYER_3D_COPPER_INNER_19
Definition layer_ids.h:673
@ LAYER_3D_USER_8
Definition layer_ids.h:606
@ LAYER_3D_COPPER_INNER_20
Definition layer_ids.h:674
@ LAYER_3D_USER_22
Definition layer_ids.h:620
@ LAYER_3D_USER_44
Definition layer_ids.h:642
@ LAYER_3D_USER_23
Definition layer_ids.h:621
@ LAYER_3D_NAVIGATOR
Definition layer_ids.h:649
@ LAYER_3D_USER_28
Definition layer_ids.h:626
@ LAYER_3D_COPPER_INNER_26
Definition layer_ids.h:680
@ LAYER_3D_BOUNDING_BOXES
Definition layer_ids.h:650
@ LAYER_3D_COPPER_INNER_5
Definition layer_ids.h:659
@ LAYER_3D_COPPER_INNER_9
Definition layer_ids.h:663
@ LAYER_3D_START
Definition layer_ids.h:578
@ LAYER_3D_USER_32
Definition layer_ids.h:630
@ LAYER_3D_USER_19
Definition layer_ids.h:617
@ LAYER_3D_USER_25
Definition layer_ids.h:623
@ LAYER_3D_ADHESIVE
Definition layer_ids.h:590
@ LAYER_3D_USER_3
Definition layer_ids.h:601
@ LAYER_3D_COPPER_INNER_23
Definition layer_ids.h:677
@ LAYER_3D_USER_21
Definition layer_ids.h:619
@ LAYER_3D_USER_26
Definition layer_ids.h:624
@ LAYER_3D_SMD_MODELS
Definition layer_ids.h:645
@ LAYER_3D_USER_24
Definition layer_ids.h:622
@ LAYER_3D_USER_43
Definition layer_ids.h:641
@ LAYER_3D_COPPER_INNER_10
Definition layer_ids.h:664
@ LAYER_3D_BACKGROUND_TOP
Definition layer_ids.h:581
@ LAYER_3D_USER_COMMENTS
Definition layer_ids.h:591
@ LAYER_3D_SOLDERMASK_BOTTOM
Definition layer_ids.h:587
@ LAYER_3D_USER_11
Definition layer_ids.h:609
@ LAYER_3D_USER_41
Definition layer_ids.h:639
@ LAYER_3D_USER_17
Definition layer_ids.h:615
@ LAYER_3D_BOARD
Definition layer_ids.h:582
@ LAYER_3D_PLATED_BARRELS
Definition layer_ids.h:652
@ LAYER_3D_USER_ECO1
Definition layer_ids.h:593
@ LAYER_3D_COPPER_INNER_14
Definition layer_ids.h:668
@ LAYER_3D_COPPER_INNER_2
Definition layer_ids.h:656
@ LAYER_3D_COPPER_INNER_1
Definition layer_ids.h:655
@ LAYER_3D_USER_20
Definition layer_ids.h:618
@ LAYER_3D_COPPER_INNER_27
Definition layer_ids.h:681
@ LAYER_3D_USER_31
Definition layer_ids.h:629
@ LAYER_3D_USER_ECO2
Definition layer_ids.h:594
@ LAYER_3D_TH_MODELS
Definition layer_ids.h:644
@ LAYER_3D_COPPER_INNER_25
Definition layer_ids.h:679
@ LAYER_3D_B_FAB
Definition layer_ids.h:596
@ LAYER_3D_USER_15
Definition layer_ids.h:613
@ LAYER_3D_USER_38
Definition layer_ids.h:636
@ LAYER_3D_USER_13
Definition layer_ids.h:611
@ LAYER_3D_COPPER_INNER_8
Definition layer_ids.h:662
@ LAYER_3D_USER_33
Definition layer_ids.h:631
@ LAYER_3D_USER_35
Definition layer_ids.h:633
@ LAYER_3D_USER_29
Definition layer_ids.h:627
@ LAYER_3D_COPPER_INNER_18
Definition layer_ids.h:672
@ LAYER_3D_USER_40
Definition layer_ids.h:638
@ LAYER_3D_SILKSCREEN_TOP
Definition layer_ids.h:586
@ LAYER_3D_B_COURTYARD
Definition layer_ids.h:598
@ LAYER_3D_COPPER_INNER_7
Definition layer_ids.h:661
@ LAYER_3D_VIRTUAL_MODELS
Definition layer_ids.h:646
@ LAYER_3D_MODELS_MARKED_DNP
Definition layer_ids.h:648
@ LAYER_3D_USER_7
Definition layer_ids.h:605
@ LAYER_3D_COPPER_TOP
Definition layer_ids.h:583
@ LAYER_3D_COPPER_INNER_11
Definition layer_ids.h:665
@ LAYER_3D_USER_12
Definition layer_ids.h:610
@ LAYER_3D_SOLDERPASTE
Definition layer_ids.h:589
@ LAYER_3D_USER_30
Definition layer_ids.h:628
@ LAYER_3D_USER_36
Definition layer_ids.h:634
@ LAYER_3D_COPPER_INNER_22
Definition layer_ids.h:676
@ LAYER_3D_COPPER_INNER_21
Definition layer_ids.h:675
@ LAYER_3D_USER_2
Definition layer_ids.h:600
@ LAYER_3D_COPPER_INNER_16
Definition layer_ids.h:670
@ LAYER_3D_USER_18
Definition layer_ids.h:616
@ LAYER_3D_OFF_BOARD_SILK
Definition layer_ids.h:651
@ LAYER_3D_COPPER_INNER_15
Definition layer_ids.h:669
@ LAYER_3D_USER_14
Definition layer_ids.h:612
@ LAYER_3D_USER_5
Definition layer_ids.h:603
@ LAYER_3D_USER_37
Definition layer_ids.h:635
@ LAYER_3D_USER_10
Definition layer_ids.h:608
@ LAYER_3D_COPPER_INNER_3
Definition layer_ids.h:657
@ LAYER_3D_MODELS_NOT_IN_POS
Definition layer_ids.h:647
@ LAYER_3D_USER_42
Definition layer_ids.h:640
@ LAYER_3D_USER_45
Definition layer_ids.h:643
@ LAYER_3D_USER_6
Definition layer_ids.h:604
@ LAYER_3D_USER_4
Definition layer_ids.h:602
@ LAYER_3D_USER_27
Definition layer_ids.h:625
@ LAYER_3D_COPPER_INNER_24
Definition layer_ids.h:678
@ LAYER_3D_USER_DRAWINGS
Definition layer_ids.h:592
@ LAYER_3D_COPPER_BOTTOM
Definition layer_ids.h:584
@ LAYER_3D_USER_39
Definition layer_ids.h:637
@ LAYER_3D_USER_9
Definition layer_ids.h:607
@ LAYER_3D_BACKGROUND_BOTTOM
Definition layer_ids.h:580
@ LAYER_3D_USER_16
Definition layer_ids.h:614
@ LAYER_3D_SILKSCREEN_BOTTOM
Definition layer_ids.h:585
@ LAYER_3D_COPPER_INNER_28
Definition layer_ids.h:682
@ LAYER_3D_F_COURTYARD
Definition layer_ids.h:597
@ LAYER_3D_USER_34
Definition layer_ids.h:632
@ LAYER_3D_END
Definition layer_ids.h:686
@ LAYER_3D_F_FAB
Definition layer_ids.h:595
@ LAYER_3D_COPPER_INNER_12
Definition layer_ids.h:666
@ LAYER_3D_COPPER_INNER_17
Definition layer_ids.h:671
bool IsUserLayer(PCB_LAYER_ID aLayerId)
Test whether a layer is a non copper and a non tech layer.
Definition layer_ids.h:823
bool IsCopperLayerLowerThan(PCB_LAYER_ID aLayerA, PCB_LAYER_ID aLayerB)
Return true if copper aLayerA is placed lower than aLayerB, false otherwise.
Definition layer_ids.h:888
constexpr PCB_LAYER_ID PCBNEW_LAYER_ID_START
Definition layer_ids.h:170
KICOMMON_API 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:229
#define NETNAMES_LAYER_INDEX(layer)
Macro for obtaining netname layer for a given PCB layer.
Definition layer_ids.h:205
GAL_LAYER_ID ToGalLayer(int aInteger)
Definition layer_ids.h:410
constexpr int GAL_LAYER_ID_COUNT
Definition layer_ids.h:402
bool IsPointsLayer(int aLayer)
Definition layer_ids.h:969
bool IsFrontLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a front layer.
Definition layer_ids.h:844
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition layer_ids.h:180
@ NEVER_FLASHED
Never flashed for connectivity.
Definition layer_ids.h:183
@ ALWAYS_FLASHED
Always flashed for connectivity.
Definition layer_ids.h:182
bool IsDCodeLayer(int aLayer)
Definition layer_ids.h:975
bool IsBackLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a back layer.
Definition layer_ids.h:867
#define MAX_CU_LAYERS
Definition layer_ids.h:172
KICOMMON_API PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount=0)
Definition layer_id.cpp:181
bool IsNonCopperLayer(int aLayerId)
Test whether a layer is a non copper layer.
Definition layer_ids.h:774
int GetNetnameLayer(int aLayer)
Return a netname layer corresponding to the given layer.
Definition layer_ids.h:918
KICOMMON_API wxString LayerName(int aLayer)
Return the string equivalent of a given layer.
Definition layer_id.cpp:31
bool IsClearanceLayer(int aLayer)
Definition layer_ids.h:957
#define GAL_UI_LAYER_COUNT
Definition layer_ids.h:207
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
Definition layer_ids.h:741
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
Definition layer_ids.h:224
@ LAYER_GRID
Definition layer_ids.h:250
@ LAYER_DRILL_SYMBOL_START
Drill symbols, one channel per board layer.
Definition layer_ids.h:382
@ LAYER_POINTS
PCB reference/manual snap points visibility.
Definition layer_ids.h:317
@ GAL_LAYER_ID_START
Definition layer_ids.h:225
@ 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_PAD_COPPER_START
Virtual layers for pad copper on a given copper layer.
Definition layer_ids.h:355
@ LAYER_VIA_HOLEWALLS
Definition layer_ids.h:294
@ LAYER_CLEARANCE_END
Definition layer_ids.h:364
@ LAYER_GRID_AXES
Definition layer_ids.h:251
@ LAYER_DRAWINGSHEET_PAGEn
Sheet Editor previewing pages after first page.
Definition layer_ids.h:332
@ LAYER_FILLED_SHAPES
Copper graphic shape opacity/visibility (color ignored).
Definition layer_ids.h:309
@ 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_ZONE_END
Definition layer_ids.h:352
@ 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_DRAW_BITMAPS
Draw images.
Definition layer_ids.h:280
@ 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_POINT_END
Definition layer_ids.h:372
@ LAYER_ZONES
Control for copper zone opacity/visibility (color ignored).
Definition layer_ids.h:291
@ LAYER_DRC_HIGHLIGHTED
Color for highlighted DRC markers.
Definition layer_ids.h:337
@ LAYER_PADS
Meta control for all pads opacity/visibility (color ignored).
Definition layer_ids.h:288
@ LAYER_DRC_WARNING
Layer for DRC markers with RPT_SEVERITY_WARNING.
Definition layer_ids.h:297
@ LAYER_UI_START
Definition layer_ids.h:375
@ LAYER_PAD_PLATEDHOLES
to draw pad holes (plated)
Definition layer_ids.h:267
@ GAL_LAYER_ID_END
Definition layer_ids.h:385
@ LAYER_GP_OVERLAY
General purpose overlay.
Definition layer_ids.h:275
@ GAL_LAYER_ID_BITMASK_END
This is the end of the layers used for visibility bit masks in legacy board files.
Definition layer_ids.h:283
@ LAYER_VIA_COPPER_START
Virtual layers for via copper on a given copper layer.
Definition layer_ids.h:359
@ LAYER_TRACKS
Definition layer_ids.h:263
@ LAYER_CONSTRAINT_SHADOW
Shadow layer for items bound to a constraint.
Definition layer_ids.h:320
@ LAYER_ROUTER_PREVIEW_COLLISION
Router preview collision marker, drawn above all board items.
Definition layer_ids.h:348
@ 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_CLEARANCE_START
Virtual layers for pad/via/track clearance outlines for a given copper layer.
Definition layer_ids.h:363
@ LAYER_ROUTER_PREVIEW_SHADOW
Router preview clearance shadow, drawn behind board copper.
Definition layer_ids.h:345
@ LAYER_DRILL_SYMBOL_END
Definition layer_ids.h:383
@ LAYER_PAD_COPPER_END
Definition layer_ids.h:356
@ LAYER_ZONE_START
Virtual layers for stacking zones and tracks on a given copper layer.
Definition layer_ids.h:351
@ 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_UI_END
Definition layer_ids.h:376
@ 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_DRAWINGSHEET_PAGE1
Sheet Editor previewing first page.
Definition layer_ids.h:331
@ LAYER_VIA_BURIED
Draw blind vias.
Definition layer_ids.h:231
@ LAYER_CONSTRAINT_WELL
Fully constrained.
Definition layer_ids.h:341
@ LAYER_VIA_COPPER_END
Definition layer_ids.h:360
@ 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_POINT_START
Virtual layers for points per board layer.
Definition layer_ids.h:371
@ 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_BITMAP_END
Definition layer_ids.h:368
@ LAYER_BITMAP_START
Virtual layers for background images per board layer.
Definition layer_ids.h:367
@ LAYER_DRC_ERROR
Layer for DRC markers with RPT_SEVERITY_ERROR.
Definition layer_ids.h:273
@ LAYER_VIAS
Meta control for all vias opacity/visibility.
Definition layer_ids.h:228
@ LAYER_PAD_HOLEWALLS
Definition layer_ids.h:293
SCH_LAYER_ID
Eeschema drawing layers.
Definition layer_ids.h:477
@ LAYER_DANGLING
Definition layer_ids.h:505
@ LAYER_SHAPES_BACKGROUND
Definition layer_ids.h:511
@ LAYER_SHEETNAME
Definition layer_ids.h:500
@ LAYER_ERC_WARN
Definition layer_ids.h:507
@ LAYER_SCHEMATIC_ANCHOR
Definition layer_ids.h:528
@ LAYER_SHEETLABEL
Definition layer_ids.h:503
@ LAYER_PINNUM
Definition layer_ids.h:486
@ LAYER_RULE_AREAS
Definition layer_ids.h:493
@ LAYER_DEVICE
Definition layer_ids.h:494
@ LAYER_SHEET_BACKGROUND
Definition layer_ids.h:513
@ LAYER_EXCLUDED_FROM_SIM
Definition layer_ids.h:510
@ LAYER_BRIGHTENED
Definition layer_ids.h:519
@ LAYER_ERC_EXCLUSION
Definition layer_ids.h:509
@ LAYER_HIDDEN
Definition layer_ids.h:520
@ LAYER_HIERLABEL
Definition layer_ids.h:485
@ LAYER_PINNAM
Definition layer_ids.h:487
@ LAYER_PRIVATE_NOTES
Definition layer_ids.h:496
@ LAYER_HOVERED
Definition layer_ids.h:518
@ LAYER_GLOBLABEL
Definition layer_ids.h:484
@ LAYER_WIRE
Definition layer_ids.h:480
@ LAYER_NOTES
Definition layer_ids.h:495
@ LAYER_NET_COLOR_HIGHLIGHT
Definition layer_ids.h:521
@ LAYER_ERC_ERR
Definition layer_ids.h:508
@ LAYER_PIN
Definition layer_ids.h:498
@ LAYER_VALUEPART
Definition layer_ids.h:489
@ LAYER_BUS
Definition layer_ids.h:481
@ LAYER_SCHEMATIC_CURSOR
Definition layer_ids.h:517
@ LAYER_GROUP
Definition layer_ids.h:531
@ SCH_LAYER_ID_END
Definition layer_ids.h:533
@ LAYER_FIELDS
Definition layer_ids.h:490
@ LAYER_DEVICE_BACKGROUND
Definition layer_ids.h:512
@ SCH_LAYER_ID_START
Definition layer_ids.h:478
@ LAYER_SCHEMATIC_DRAWINGSHEET
Definition layer_ids.h:524
@ LAYER_LOCLABEL
Definition layer_ids.h:483
@ LAYER_JUNCTION
Definition layer_ids.h:482
@ LAYER_SHEETFIELDS
Definition layer_ids.h:502
@ LAYER_SCHEMATIC_GRID_AXES
Definition layer_ids.h:515
@ LAYER_REFERENCEPART
Definition layer_ids.h:488
@ LAYER_NETCLASS_REFS
Definition layer_ids.h:492
@ LAYER_NOTES_BACKGROUND
Definition layer_ids.h:497
@ LAYER_OP_CURRENTS
Definition layer_ids.h:530
@ LAYER_SCHEMATIC_PAGE_LIMITS
Definition layer_ids.h:525
@ LAYER_SHEET
Definition layer_ids.h:499
@ LAYER_DRAG_NET_COLLISION
Definition layer_ids.h:522
@ LAYER_SELECTION_SHADOWS
Definition layer_ids.h:523
@ LAYER_SCHEMATIC_BACKGROUND
Definition layer_ids.h:516
@ LAYER_SCHEMATIC_AUX_ITEMS
Definition layer_ids.h:527
@ LAYER_INTERSHEET_REFS
Definition layer_ids.h:491
@ LAYER_OP_VOLTAGES
Definition layer_ids.h:529
@ LAYER_SHEETFILENAME
Definition layer_ids.h:501
@ LAYER_BUS_JUNCTION
Definition layer_ids.h:526
@ LAYER_DNP_MARKER
Definition layer_ids.h:506
@ LAYER_NOCONNECT
Definition layer_ids.h:504
@ LAYER_SCHEMATIC_GRID
Definition layer_ids.h:514
size_t CopperLayerToOrdinal(PCB_LAYER_ID aLayer)
Converts KiCad copper layer enum to an ordinal between the front and back layers.
Definition layer_ids.h:983
bool IsViaCopperLayer(int aLayer)
Definition layer_ids.h:951
bool IsNetnameLayer(int aLayer)
Test whether a layer is a netname layer.
Definition layer_ids.h:933
KICOMMON_API PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition lset.cpp:750
bool IsHoleLayer(int aLayer)
Definition layer_ids.h:803
bool IsViaPadLayer(int aLayer)
Definition layer_ids.h:795
bool IsInnerCopperLayer(int aLayerId)
Test whether a layer is an inner (In1_Cu to In30_Cu) copper layer.
Definition layer_ids.h:763
bool IsExternalCopperLayer(int aLayerId)
Test whether a layer is an external (F_Cu or B_Cu) copper layer.
Definition layer_ids.h:752
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
@ User_16
Definition layer_ids.h:135
@ In22_Cu
Definition layer_ids.h:83
@ In11_Cu
Definition layer_ids.h:72
@ User_29
Definition layer_ids.h:148
@ In29_Cu
Definition layer_ids.h:90
@ In30_Cu
Definition layer_ids.h:91
@ 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
@ In17_Cu
Definition layer_ids.h:78
@ 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
@ In9_Cu
Definition layer_ids.h:70
@ Cmts_User
Definition layer_ids.h:104
@ User_6
Definition layer_ids.h:125
@ User_7
Definition layer_ids.h:126
@ In19_Cu
Definition layer_ids.h:80
@ User_19
Definition layer_ids.h:138
@ User_23
Definition layer_ids.h:142
@ In7_Cu
Definition layer_ids.h:68
@ In28_Cu
Definition layer_ids.h:89
@ In26_Cu
Definition layer_ids.h:87
@ 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
@ In21_Cu
Definition layer_ids.h:82
@ User_42
Definition layer_ids.h:161
@ User_43
Definition layer_ids.h:162
@ In23_Cu
Definition layer_ids.h:84
@ B_Paste
Definition layer_ids.h:101
@ In15_Cu
Definition layer_ids.h:76
@ In2_Cu
Definition layer_ids.h:63
@ 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
@ In10_Cu
Definition layer_ids.h:71
@ Margin
Definition layer_ids.h:109
@ F_SilkS
Definition layer_ids.h:96
@ In4_Cu
Definition layer_ids.h:65
@ B_CrtYd
Definition layer_ids.h:111
@ UNDEFINED_LAYER
Definition layer_ids.h:57
@ Eco2_User
Definition layer_ids.h:106
@ In16_Cu
Definition layer_ids.h:77
@ In24_Cu
Definition layer_ids.h:85
@ 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
@ In13_Cu
Definition layer_ids.h:74
@ User_4
Definition layer_ids.h:123
@ In8_Cu
Definition layer_ids.h:69
@ User_21
Definition layer_ids.h:140
@ In14_Cu
Definition layer_ids.h:75
@ 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
@ In12_Cu
Definition layer_ids.h:73
@ User_17
Definition layer_ids.h:136
@ In27_Cu
Definition layer_ids.h:88
@ In6_Cu
Definition layer_ids.h:67
@ In5_Cu
Definition layer_ids.h:66
@ User_33
Definition layer_ids.h:152
@ User_26
Definition layer_ids.h:145
@ In3_Cu
Definition layer_ids.h:64
@ User_32
Definition layer_ids.h:151
@ In20_Cu
Definition layer_ids.h:81
@ User_18
Definition layer_ids.h:137
@ User_44
Definition layer_ids.h:163
@ F_Cu
Definition layer_ids.h:60
@ In18_Cu
Definition layer_ids.h:79
@ In25_Cu
Definition layer_ids.h:86
@ B_Fab
Definition layer_ids.h:114
bool IsValidLayer(int aLayerId)
Test whether a given integer is a valid layer index, i.e.
Definition layer_ids.h:719
KICOMMON_API int MapPCBLayerTo3DLayer(PCB_LAYER_ID aLayer)
Definition layer_id.cpp:354
#define GERBER_DRAWLAYERS_COUNT
Number of draw layers in Gerbview.
Definition layer_ids.h:547
bool IsZoneFillLayer(int aLayer)
Definition layer_ids.h:939
STL namespace.