Horizon
layers_id_colors_and_visibility.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 <dick@softplc.com>
5 * Copyright (C) 2010 Jean-Pierre Charras, jp.charras at wanadoo.fr
6 * Copyright (C) 2007-2017 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, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
31#ifndef LAYERS_ID_AND_VISIBILITY_H_
32#define LAYERS_ID_AND_VISIBILITY_H_
33
34#include <vector>
35#include <bitset>
36//#include <wx/string.h>
37//#include <macros.h>
38
39
46typedef int LAYER_NUM;
47
71enum PCB_LAYER_ID: int
72{
73 UNDEFINED_LAYER = -1,
74 UNSELECTED_LAYER = -2,
75
76 PCBNEW_LAYER_ID_START = 0,
77 F_Cu = PCBNEW_LAYER_ID_START,
78 In1_Cu,
79 In2_Cu,
80 In3_Cu,
81 In4_Cu,
82 In5_Cu,
83 In6_Cu,
84 In7_Cu,
85 In8_Cu,
86 In9_Cu,
87 In10_Cu,
88 In11_Cu,
89 In12_Cu,
90 In13_Cu,
91 In14_Cu,
92 In15_Cu,
93 In16_Cu,
94 In17_Cu,
95 In18_Cu,
96 In19_Cu,
97 In20_Cu,
98 In21_Cu,
99 In22_Cu,
100 In23_Cu,
101 In24_Cu,
102 In25_Cu,
103 In26_Cu,
104 In27_Cu,
105 In28_Cu,
106 In29_Cu,
107 In30_Cu,
108 B_Cu, // 31
109
110 B_Adhes,
111 F_Adhes,
112
113 B_Paste,
114 F_Paste,
115
116 B_SilkS,
117 F_SilkS,
118
119 B_Mask,
120 F_Mask,
121
122 Dwgs_User,
123 Cmts_User,
124 Eco1_User,
125 Eco2_User,
126 Edge_Cuts,
127 Margin,
128
129 B_CrtYd,
130 F_CrtYd,
131
132 B_Fab,
133 F_Fab,
134
135 Rescue,
136
137 PCB_LAYER_ID_COUNT
138};
139
140#define MAX_CU_LAYERS (B_Cu - F_Cu + 1)
141
144{
145
146 NETNAMES_LAYER_ID_START = PCB_LAYER_ID_COUNT,
147
149
150 NETNAMES_LAYER_ID_RESERVED = NETNAMES_LAYER_ID_START + PCB_LAYER_ID_COUNT,
151
153
155 LAYER_PAD_BK_NETNAMES,
156 LAYER_PADS_NETNAMES,
157 LAYER_VIAS_NETNAMES,
158
159 NETNAMES_LAYER_ID_END
160};
161
163#define NETNAMES_LAYER_INDEX( layer ) ( NETNAMES_LAYER_ID_START + layer )
164
168{
169 GAL_LAYER_ID_START = NETNAMES_LAYER_ID_END,
170
171 LAYER_VIAS = GAL_LAYER_ID_START,
176 LAYER_MOD_TEXT_FR,
177 LAYER_MOD_TEXT_BK,
182 LAYER_RATSNEST,
183 LAYER_GRID,
184 LAYER_GRID_AXES,
190 LAYER_TRACKS,
202
206
208
211
213#define GAL_LAYER_INDEX( x ) ( x - GAL_LAYER_ID_START )
214
215inline GAL_LAYER_ID operator++( GAL_LAYER_ID& a )
216{
217 a = GAL_LAYER_ID( int( a ) + 1 );
218 return a;
219}
220
222inline GAL_LAYER_ID operator+( const GAL_LAYER_ID& a, int b )
223{
224 GAL_LAYER_ID t = GAL_LAYER_ID( int( a ) + b );
225 // wxASSERT( t <= GAL_LAYER_ID_END );
226 return t;
227}
228
231{
232 SCH_LAYER_ID_START = GAL_LAYER_ID_END,
233
234 LAYER_WIRE = SCH_LAYER_ID_START,
235 LAYER_BUS,
236 LAYER_JUNCTION,
237 LAYER_LOCLABEL,
238 LAYER_GLOBLABEL,
239 LAYER_HIERLABEL,
240 LAYER_PINNUM,
241 LAYER_PINNAM,
242 LAYER_REFERENCEPART,
243 LAYER_VALUEPART,
244 LAYER_FIELDS,
245 LAYER_DEVICE,
246 LAYER_NOTES,
247 LAYER_NETNAM,
248 LAYER_PIN,
249 LAYER_SHEET,
250 LAYER_SHEETNAME,
251 LAYER_SHEETFILENAME,
252 LAYER_SHEETLABEL,
253 LAYER_NOCONNECT,
254 LAYER_ERC_WARN,
255 LAYER_ERC_ERR,
256 LAYER_DEVICE_BACKGROUND,
257 LAYER_SHEET_BACKGROUND,
258 LAYER_SCHEMATIC_BITMAPS,
259 LAYER_SCHEMATIC_GRID,
260 LAYER_SCHEMATIC_BACKGROUND,
261 LAYER_SCHEMATIC_CURSOR,
262 LAYER_BRIGHTENED,
263 LAYER_HIDDEN,
264
265 SCH_LAYER_ID_END
266};
267
268#define SCH_LAYER_ID_COUNT ( SCH_LAYER_ID_END - SCH_LAYER_ID_START )
269
270#define SCH_LAYER_INDEX( x ) ( x - SCH_LAYER_ID_START )
271
272inline SCH_LAYER_ID operator++( SCH_LAYER_ID& a )
273{
274 a = SCH_LAYER_ID( int( a ) + 1 );
275 return a;
276}
277
278// number of draw layers in Gerbview
279#define GERBER_DRAWLAYERS_COUNT PCB_LAYER_ID_COUNT
280
283{
284 GERBVIEW_LAYER_ID_START = SCH_LAYER_ID_END,
285
287 GERBVIEW_LAYER_ID_RESERVED = GERBVIEW_LAYER_ID_START + ( 2 * GERBER_DRAWLAYERS_COUNT ),
288
289 LAYER_DCODES,
290 LAYER_NEGATIVE_OBJECTS,
291 LAYER_GERBVIEW_GRID,
292 LAYER_GERBVIEW_AXES,
293 LAYER_GERBVIEW_BACKGROUND,
294
295 GERBVIEW_LAYER_ID_END
296};
297
298#define GERBER_DRAW_LAYER( x ) ( GERBVIEW_LAYER_ID_START + x )
299
300#define GERBER_DCODE_LAYER( x ) ( GERBER_DRAWLAYERS_COUNT + x )
301
302#define GERBER_DRAW_LAYER_INDEX( x ) ( x - GERBVIEW_LAYER_ID_START )
303
305#define LAYER_ID_COUNT GERBVIEW_LAYER_ID_END
306
307
308// Some elements do not have yet a visibility control
309// from a dialog, but have a visibility control flag.
310// Here is a mask to set them visible, to be sure they are displayed
311// after loading a board for instance
312#define MIN_VISIBILITY_MASK int( ( 1 << GAL_LAYER_INDEX( LAYER_PADS_PLATEDHOLES ) ) +\
313 ( 1 << GAL_LAYER_INDEX( LAYER_VIAS_HOLES ) ) +\
314 ( 1 << GAL_LAYER_INDEX( LAYER_DRC ) ) +\
315 ( 1 << GAL_LAYER_INDEX( LAYER_SELECT_OVERLAY ) ) +\
316 ( 1 << GAL_LAYER_INDEX( LAYER_GP_OVERLAY ) ) )
317
318
320typedef std::vector<PCB_LAYER_ID> BASE_SEQ;
321
322
340class LSEQ : public BASE_SEQ
341{
342 unsigned m_index;
343
344public:
345
346 LSEQ() :
347 m_index( 0 )
348 {}
349
350 template <class InputIterator>
351 LSEQ( InputIterator aStart, InputIterator aEnd ) :
352 BASE_SEQ( aStart, aEnd ), m_index( 0 )
353 {}
354
355 void Rewind() { m_index = 0; }
356
357 void operator ++ () { ++m_index; } // returns nothing, used in simple statements only.
358
359 void operator ++ (int) { ++m_index; }
360
361 operator bool () { return m_index < size(); }
362
363 PCB_LAYER_ID operator * () const
364 {
365 return at( m_index ); // throws std::out_of_range
366 }
367};
368
369
370typedef std::bitset<PCB_LAYER_ID_COUNT> BASE_SET;
371
372
380class LSET : public BASE_SET
381{
382public:
383
384 // The constructor flavors are carefully chosen to prevent LSET( int ) from compiling.
385 // That excludes "LSET s = 0;" and excludes "LSET s = -1;", etc.
386 // LSET s = 0; needs to be removed from the code, this accomplishes that.
387 // Remember LSET( PCB_LAYER_ID(0) ) sets bit 0, so "LSET s = 0;" is illegal
388 // to prevent that surprize. Therefore LSET's constructor suite is significantly
389 // different than the base class from which it is derived.
390
391 // Other member functions (non-constructor functions) are identical to the base
392 // class's and therefore are re-used from the base class.
393
399 BASE_SET() // all bits are set to zero in BASE_SET()
400 {
401 }
402
403 LSET( const BASE_SET& aOther ) :
404 BASE_SET( aOther )
405 {
406 }
407
423 LSET( PCB_LAYER_ID aLayer ) : // PCB_LAYER_ID deliberately exludes int and relatives
424 BASE_SET()
425 {
426 set( aLayer );
427 }
428
433 LSET( const PCB_LAYER_ID* aArray, unsigned aCount );
434
447 LSET( unsigned aIdCount, int aFirst, ... ); // args chosen to prevent LSET( int ) from compiling
448
453 static const char* Name( PCB_LAYER_ID aLayerId );
454
461
466 static LSET AllCuMask( int aCuLayerCount = MAX_CU_LAYERS );
467
473
479
480 static LSET AllLayersMask();
481
487
494
500
507
513
519
524 static LSET FrontMask();
525
530 static LSET BackMask();
531
532 static LSET UserMask();
533
541
547
554 LSEQ CuStack() const;
555
562 LSEQ Technicals( LSET aSubToOmit = LSET() ) const;
563
565 LSEQ Users() const;
566
569
570 LSEQ UIOrder() const;
571
580 LSEQ Seq( const PCB_LAYER_ID* aWishListSequence, unsigned aCount ) const;
581
589 LSEQ Seq() const;
590
597
602 std::string FmtHex() const;
603
612 int ParseHex( const char* aStart, int aCount );
613
618 std::string FmtBin() const;
619
625
626private:
627
629 LSET( unsigned long __val )
630 {
631 // not usable, it's private.
632 }
633};
634
635
644inline bool IsValidLayer( LAYER_NUM aLayerId )
645{
646 return unsigned( aLayerId ) < PCB_LAYER_ID_COUNT;
647}
648
655inline bool IsPcbLayer( LAYER_NUM aLayer )
656{
657 return aLayer >= F_Cu && aLayer < PCB_LAYER_ID_COUNT;
658}
659
666inline bool IsCopperLayer( LAYER_NUM aLayerId )
667{
668 return aLayerId >= F_Cu && aLayerId <= B_Cu;
669}
670
677inline bool IsNonCopperLayer( LAYER_NUM aLayerId )
678{
679 return aLayerId > B_Cu && aLayerId <= PCB_LAYER_ID_COUNT;
680}
681
688inline bool IsUserLayer( PCB_LAYER_ID aLayerId )
689{
690 return aLayerId >= Dwgs_User && aLayerId <= Eco2_User;
691}
692
693/* IMPORTANT: If a layer is not a front layer not necessarily is true
694 the converse. The same hold for a back layer.
695 So a layer can be:
696 - Front
697 - Back
698 - Neither (internal or auxiliary)
699
700 The check most frequent is for back layers, since it involves flips */
701
702
706inline bool IsFrontLayer( PCB_LAYER_ID aLayerId )
707{
708 switch( aLayerId )
709 {
710 case F_Cu:
711 case F_Adhes:
712 case F_Paste:
713 case F_SilkS:
714 case F_Mask:
715 case F_CrtYd:
716 case F_Fab:
717 return true;
718 default:
719 ;
720 }
721
722 return false;
723}
724
725
729inline bool IsBackLayer( PCB_LAYER_ID aLayerId )
730{
731 switch( aLayerId )
732 {
733 case B_Cu:
734 case B_Adhes:
735 case B_Paste:
736 case B_SilkS:
737 case B_Mask:
738 case B_CrtYd:
739 case B_Fab:
740 return true;
741 default:
742 ;
743 }
744
745 return false;
746}
747
748
759PCB_LAYER_ID FlipLayer( PCB_LAYER_ID aLayerId, int aCopperLayersCount = 0 );
760
769LSET FlipLayerMask( LSET aMask, int aCopperLayersCount = 0 );
770
771
775inline int GetNetnameLayer( int aLayer )
776{
777 if( IsCopperLayer( aLayer ) )
778 return NETNAMES_LAYER_INDEX( aLayer );
779 else if( aLayer == LAYER_PADS_TH )
780 return LAYER_PADS_NETNAMES;
781 else if( aLayer == LAYER_PAD_FR )
783 else if( aLayer == LAYER_PAD_BK )
784 return LAYER_PAD_BK_NETNAMES;
785 else if( aLayer >= LAYER_VIA_MICROVIA && aLayer <= LAYER_VIA_THROUGH )
786 return LAYER_VIAS_NETNAMES;
787
788 // Fallback
789 return Cmts_User;
790}
791
798inline bool IsNetnameLayer( LAYER_NUM aLayer )
799{
800 return aLayer >= NETNAMES_LAYER_INDEX( F_Cu ) &&
801 aLayer < NETNAMES_LAYER_ID_END;
802}
803
804
805inline bool IsDCodeLayer( int aLayer )
806{
807 return aLayer >= (GERBVIEW_LAYER_ID_START + GERBER_DRAWLAYERS_COUNT) &&
808 aLayer < (GERBVIEW_LAYER_ID_START + (2 * GERBER_DRAWLAYERS_COUNT));
809}
810
811
812PCB_LAYER_ID ToLAYER_ID( int aLayer );
813
814#endif // LAYERS_ID_AND_VISIBILITY_H_
Class LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layers_id_colors_and_visibility.h:341
Class LSET is a set of PCB_LAYER_IDs.
Definition: layers_id_colors_and_visibility.h:381
static LSET BackBoardTechMask()
Function BackBoardTechMask returns a mask holding technical layers used in a board fabrication (no CU...
int ParseHex(const char *aStart, int aCount)
Function ParseHex understands the output of FmtHex() and replaces this set's values with those given ...
static LSET FrontMask()
Function FrontMask returns a mask holding all technical layers and the external CU layer on front sid...
static LSET BackTechMask()
Function BackTechMask returns a mask holding all technical layers (no CU layer) on back side.
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Function AllCuMask returns a mask holding the requested number of Cu PCB_LAYER_IDs.
LSET(PCB_LAYER_ID aLayer)
Constructor LSET( PCB_LAYER_ID ) takes a PCB_LAYER_ID and sets that bit.
Definition: layers_id_colors_and_visibility.h:423
static LSET ForbiddenFootprintLayers()
Function ForbiddenFootprintLayers Layers which are not allowed within footprint definitions.
static LSET AllTechMask()
Function AllTechMask returns a mask holding all technical layers (no CU layer) on both side.
static const char * Name(PCB_LAYER_ID aLayerId)
Function Name returns the fixed name association with aLayerId.
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Function Seq returns an LSEQ from the union of this LSET and a desired sequence.
LSEQ CuStack() const
Function CuStack returns a sequence of copper layers in starting from the front/top and extending to ...
PCB_LAYER_ID ExtractLayer() const
Find the first set PCB_LAYER_ID.
LSEQ SeqStackupBottom2Top() const
Function SeqStackBottom2Top returns the sequence that is typical for a bottom-to-top stack-up.
LSEQ TechAndUserUIOrder() const
Returns the technical and user layers in the order shown in layer widget.
LSET(unsigned aIdCount, int aFirst,...)
Constructor LSET( unsigned, PCB_LAYER_ID, ...) takes one or more PCB_LAYER_IDs in the argument list t...
static LSET FrontBoardTechMask()
Function FrontBoardTechMask returns a mask holding technical layers used in a board fabrication (no C...
LSEQ Seq() const
Function Seq returns a LSEQ from this LSET in ascending PCB_LAYER_ID order.
std::string FmtHex() const
Function FmtHex returns a hex string showing contents of this LSEQ.
static LSET ExternalCuMask()
Function ExternalCuMask returns a mask holding the Front and Bottom layers.
static LSET ForbiddenTextLayers()
Function ForbiddenTextLayers Layers which are now allowed to have text on them.
LSEQ Technicals(LSET aSubToOmit=LSET()) const
Function Technicals returns a sequence of technical layers.
static LSET InternalCuMask()
Function InternalCuMask() returns a complete set of internal copper layers, which is all Cu layers ex...
std::string FmtBin() const
Function FmtBin returns a binary string showing contents of this LSEQ.
LSET(const PCB_LAYER_ID *aArray, unsigned aCount)
Constructor LSET( const PCB_LAYER_ID* aArray, unsigned aCount ) works well with an array or LSEQ.
LSEQ Users() const
*_User layers.
static LSET FrontTechMask()
Function FrontTechMask returns a mask holding all technical layers (no CU layer) on front side.
LSET()
Constructor LSET() creates an empty (cleared) set.
Definition: layers_id_colors_and_visibility.h:398
static LSET AllNonCuMask()
Function AllNonCuMask returns a mask holding all layer minus CU layers.
static LSET BackMask()
Function BackMask returns a mask holding all technical layers and the external CU layer on back side.
static LSET AllBoardTechMask()
Function AllTechMask returns a mask holding board technical layers (no CU layer) on both side.
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
Definition: layers_id_colors_and_visibility.h:666
NETNAMES_LAYER_ID
Dedicated layers for net names used in Pcbnew.
Definition: layers_id_colors_and_visibility.h:144
@ LAYER_PAD_FR_NETNAMES
Additional netnames layers (not associated with a PCB layer)
Definition: layers_id_colors_and_visibility.h:154
@ NETNAMES_LAYER_ID_RESERVED
Reserved space for board layer netnames.
Definition: layers_id_colors_and_visibility.h:150
std::vector< PCB_LAYER_ID > BASE_SEQ
A sequence of layers, a sequence provides a certain order.
Definition: layers_id_colors_and_visibility.h:320
GERBVIEW_LAYER_ID
GerbView draw layers.
Definition: layers_id_colors_and_visibility.h:283
@ GERBVIEW_LAYER_ID_RESERVED
GerbView draw layers and d-code layers.
Definition: layers_id_colors_and_visibility.h:287
bool IsNetnameLayer(LAYER_NUM aLayer)
Function IsNetnameLayer tests whether a layer is a netname layer.
Definition: layers_id_colors_and_visibility.h:798
GAL_LAYER_ID operator+(const GAL_LAYER_ID &a, int b)
Used for via types.
Definition: layers_id_colors_and_visibility.h:222
bool IsPcbLayer(LAYER_NUM aLayer)
Function IsPcbLayer tests whether a layer is a valid layer for pcbnew.
Definition: layers_id_colors_and_visibility.h:655
LSET FlipLayerMask(LSET aMask, int aCopperLayersCount=0)
Calculate the mask layer when flipping a footprint BACK and FRONT copper layers, mask,...
bool IsUserLayer(PCB_LAYER_ID aLayerId)
Function IsUserLayer tests whether a layer is a non copper and a non tech layer.
Definition: layers_id_colors_and_visibility.h:688
#define NETNAMES_LAYER_INDEX(layer)
Macro for obtaining netname layer for a given PCB layer.
Definition: layers_id_colors_and_visibility.h:163
bool IsFrontLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a front layer.
Definition: layers_id_colors_and_visibility.h:706
bool IsBackLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a back layer.
Definition: layers_id_colors_and_visibility.h:729
int LAYER_NUM
Type LAYER_NUM can be replaced with int and removed.
Definition: layers_id_colors_and_visibility.h:46
int GetNetnameLayer(int aLayer)
Returns a netname layer corresponding to the given layer.
Definition: layers_id_colors_and_visibility.h:775
bool IsValidLayer(LAYER_NUM aLayerId)
Function IsValidLayer tests whether a given integer is a valid layer index, i.e.
Definition: layers_id_colors_and_visibility.h:644
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
Definition: layers_id_colors_and_visibility.h:168
@ LAYER_MOD_TEXT_INVISIBLE
text marked as invisible
Definition: layers_id_colors_and_visibility.h:178
@ LAYER_NON_PLATEDHOLES
handle color for not plated holes (holes, not pads)
Definition: layers_id_colors_and_visibility.h:175
@ LAYER_VIAS_HOLES
to draw via holes (pad holes do not use this layer)
Definition: layers_id_colors_and_visibility.h:193
@ LAYER_PAD_FR
smd pads, front layer
Definition: layers_id_colors_and_visibility.h:180
@ LAYER_DRAW_BITMAPS
to handle and draw images bitmaps
Definition: layers_id_colors_and_visibility.h:201
@ LAYER_DRC
drc markers
Definition: layers_id_colors_and_visibility.h:194
@ LAYER_PCB_BACKGROUND
PCB background color.
Definition: layers_id_colors_and_visibility.h:198
@ GAL_LAYER_ID_END
Add new GAL layers here.
Definition: layers_id_colors_and_visibility.h:209
@ LAYER_PADS_PLATEDHOLES
to draw pad holes (plated)
Definition: layers_id_colors_and_visibility.h:192
@ LAYER_GP_OVERLAY
general purpose overlay
Definition: layers_id_colors_and_visibility.h:196
@ GAL_LAYER_ID_BITMASK_END
This is the end of the layers used for visibility bitmasks in Pcbnew There can be at most 32 layers a...
Definition: layers_id_colors_and_visibility.h:205
@ LAYER_WORKSHEET
worksheet frame
Definition: layers_id_colors_and_visibility.h:195
@ LAYER_CURSOR
PCB cursor.
Definition: layers_id_colors_and_visibility.h:199
@ LAYER_AUX_ITEMS
Auxiliary items (guides, rule, etc)
Definition: layers_id_colors_and_visibility.h:200
@ LAYER_MOD_FR
show modules on front
Definition: layers_id_colors_and_visibility.h:186
@ LAYER_ANCHOR
anchor of items having an anchor point (texts, footprints)
Definition: layers_id_colors_and_visibility.h:179
@ LAYER_PAD_BK
smd pads, back layer
Definition: layers_id_colors_and_visibility.h:181
@ LAYER_MOD_VALUES
show modules values (when texts are visibles)
Definition: layers_id_colors_and_visibility.h:188
@ LAYER_PADS_TH
multilayer pads, usually with holes
Definition: layers_id_colors_and_visibility.h:191
@ LAYER_VIA_MICROVIA
to draw micro vias
Definition: layers_id_colors_and_visibility.h:172
@ LAYER_SELECT_OVERLAY
currently selected items overlay
Definition: layers_id_colors_and_visibility.h:197
@ LAYER_VIA_THROUGH
to draw usual through hole vias
Definition: layers_id_colors_and_visibility.h:174
@ LAYER_MOD_BK
show modules on back
Definition: layers_id_colors_and_visibility.h:187
@ LAYER_MOD_REFERENCES
show modules references (when texts are visibles)
Definition: layers_id_colors_and_visibility.h:189
@ LAYER_VIA_BBLIND
to draw blind/buried vias
Definition: layers_id_colors_and_visibility.h:173
@ LAYER_NO_CONNECTS
show a marker on pads with no nets
Definition: layers_id_colors_and_visibility.h:185
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layers_id_colors_and_visibility.h:231
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layers_id_colors_and_visibility.h:72
PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount=0)
Function FlippedLayerNumber.
bool IsNonCopperLayer(LAYER_NUM aLayerId)
Function IsNonCopperLayer tests whether a layer is a non copper layer.
Definition: layers_id_colors_and_visibility.h:677