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 
46 typedef int LAYER_NUM;
47 
71 enum 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 
167 enum GAL_LAYER_ID: int
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 
210 };
211 
213 #define GAL_LAYER_INDEX( x ) ( x - GAL_LAYER_ID_START )
214 
215 inline GAL_LAYER_ID operator++( GAL_LAYER_ID& a )
216 {
217  a = GAL_LAYER_ID( int( a ) + 1 );
218  return a;
219 }
220 
222 inline 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 
230 enum SCH_LAYER_ID: int
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 
272 inline 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 
320 typedef std::vector<PCB_LAYER_ID> BASE_SEQ;
321 
322 
340 class LSEQ : public BASE_SEQ
341 {
342  unsigned m_index;
343 
344 public:
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 
370 typedef std::bitset<PCB_LAYER_ID_COUNT> BASE_SET;
371 
372 
380 class LSET : public BASE_SET
381 {
382 public:
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 
398  LSET() :
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 
478  static LSET AllNonCuMask();
479 
480  static LSET AllLayersMask();
481 
486  static LSET FrontTechMask();
487 
494 
499  static LSET BackTechMask();
500 
507 
512  static LSET AllTechMask();
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 
626 private:
627 
629  LSET( unsigned long __val )
630  {
631  // not usable, it's private.
632  }
633 };
634 
635 
644 inline bool IsValidLayer( LAYER_NUM aLayerId )
645 {
646  return unsigned( aLayerId ) < PCB_LAYER_ID_COUNT;
647 }
648 
655 inline bool IsPcbLayer( LAYER_NUM aLayer )
656 {
657  return aLayer >= F_Cu && aLayer < PCB_LAYER_ID_COUNT;
658 }
659 
666 inline bool IsCopperLayer( LAYER_NUM aLayerId )
667 {
668  return aLayerId >= F_Cu && aLayerId <= B_Cu;
669 }
670 
677 inline bool IsNonCopperLayer( LAYER_NUM aLayerId )
678 {
679  return aLayerId > B_Cu && aLayerId <= PCB_LAYER_ID_COUNT;
680 }
681 
688 inline 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 
706 inline 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 
729 inline 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 
759 PCB_LAYER_ID FlipLayer( PCB_LAYER_ID aLayerId, int aCopperLayersCount = 0 );
760 
769 LSET FlipLayerMask( LSET aMask, int aCopperLayersCount = 0 );
770 
771 
775 inline 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 )
782  return LAYER_PAD_FR_NETNAMES;
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 
798 inline bool IsNetnameLayer( LAYER_NUM aLayer )
799 {
800  return aLayer >= NETNAMES_LAYER_INDEX( F_Cu ) &&
801  aLayer < NETNAMES_LAYER_ID_END;
802 }
803 
804 
805 inline 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 
812 PCB_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.
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.
static const char * Name(PCB_LAYER_ID aLayerId)
Function Name returns the fixed name association with aLayerId.
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