KiCad PCB EDA Suite
layers_id_colors_and_visibility.h File Reference

Board layer functions and definitions. More...

#include <set>
#include <vector>
#include <bitset>
#include <wx/string.h>

Go to the source code of this file.

Classes

class  GAL_SET
 Helper for storing and iterating over GAL_LAYER_IDs. More...
 
class  LSEQ
 LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs. More...
 
class  LSET
 LSET is a set of PCB_LAYER_IDs. More...
 

Macros

#define MAX_CU_LAYERS   (B_Cu - F_Cu + 1)
 
#define NETNAMES_LAYER_INDEX(layer)   ( NETNAMES_LAYER_ID_START + layer )
 Macro for obtaining netname layer for a given PCB layer. More...
 
#define GAL_LAYER_INDEX(x)   ( x - GAL_LAYER_ID_START )
 Use this macro to convert a GAL layer to a 0-indexed offset from LAYER_VIAS. More...
 
#define ZONE_LAYER_FOR(copperLayer)   ( LAYER_ZONE_START + copperLayer )
 Macro for getting the zone layer for a given copper layer. More...
 
#define SCH_LAYER_ID_COUNT   ( SCH_LAYER_ID_END - SCH_LAYER_ID_START )
 
#define SCH_LAYER_INDEX(x)   ( x - SCH_LAYER_ID_START )
 
#define GERBER_DRAWLAYERS_COUNT   PCB_LAYER_ID_COUNT
 
#define GERBER_DRAW_LAYER(x)   ( GERBVIEW_LAYER_ID_START + x )
 
#define GERBER_DCODE_LAYER(x)   ( GERBER_DRAWLAYERS_COUNT + x )
 
#define GERBER_DRAW_LAYER_INDEX(x)   ( x - GERBVIEW_LAYER_ID_START )
 
#define LAYER_ID_COUNT   LAYER_3D_END
 Must update this if you add any enums after GerbView! More...
 
#define MIN_VISIBILITY_MASK
 

Typedefs

typedef int LAYER_NUM
 This can be replaced with int and removed. More...
 
typedef std::bitset< GAL_LAYER_ID_COUNTGAL_BASE_SET
 
typedef std::vector< PCB_LAYER_IDBASE_SEQ
 A sequence of layers, a sequence provides a certain order. More...
 
typedef std::bitset< PCB_LAYER_ID_COUNTBASE_SET
 

Enumerations

enum  PCB_LAYER_ID : int {
  UNDEFINED_LAYER = -1, UNSELECTED_LAYER = -2, PCBNEW_LAYER_ID_START = 0, F_Cu = PCBNEW_LAYER_ID_START,
  In1_Cu, In2_Cu, In3_Cu, In4_Cu,
  In5_Cu, In6_Cu, In7_Cu, In8_Cu,
  In9_Cu, In10_Cu, In11_Cu, In12_Cu,
  In13_Cu, In14_Cu, In15_Cu, In16_Cu,
  In17_Cu, In18_Cu, In19_Cu, In20_Cu,
  In21_Cu, In22_Cu, In23_Cu, In24_Cu,
  In25_Cu, In26_Cu, In27_Cu, In28_Cu,
  In29_Cu, In30_Cu, B_Cu, B_Adhes,
  F_Adhes, B_Paste, F_Paste, B_SilkS,
  F_SilkS, B_Mask, F_Mask, Dwgs_User,
  Cmts_User, Eco1_User, Eco2_User, Edge_Cuts,
  Margin, B_CrtYd, F_CrtYd, B_Fab,
  F_Fab, User_1, User_2, User_3,
  User_4, User_5, User_6, User_7,
  User_8, User_9, Rescue, PCB_LAYER_ID_COUNT
}
 A quick note on layer IDs: More...
 
enum  NETNAMES_LAYER_ID : int {
  NETNAMES_LAYER_ID_START = PCB_LAYER_ID_COUNT, NETNAMES_LAYER_ID_RESERVED = NETNAMES_LAYER_ID_START + PCB_LAYER_ID_COUNT, LAYER_PAD_FR_NETNAMES, LAYER_PAD_BK_NETNAMES,
  LAYER_PADS_NETNAMES, LAYER_VIAS_NETNAMES, NETNAMES_LAYER_ID_END
}
 Dedicated layers for net names used in Pcbnew. More...
 
enum  GAL_LAYER_ID : int {
  GAL_LAYER_ID_START = NETNAMES_LAYER_ID_END, LAYER_VIAS = GAL_LAYER_ID_START, LAYER_VIA_MICROVIA, LAYER_VIA_BBLIND,
  LAYER_VIA_THROUGH, LAYER_NON_PLATEDHOLES, LAYER_MOD_TEXT_FR, LAYER_MOD_TEXT_BK,
  LAYER_MOD_TEXT_INVISIBLE, LAYER_ANCHOR, LAYER_PAD_FR, LAYER_PAD_BK,
  LAYER_RATSNEST, LAYER_GRID, LAYER_GRID_AXES, LAYER_NO_CONNECTS,
  LAYER_MOD_FR, LAYER_MOD_BK, LAYER_MOD_VALUES, LAYER_MOD_REFERENCES,
  LAYER_TRACKS, LAYER_PADS_TH, LAYER_PADS_PLATEDHOLES, LAYER_VIAS_HOLES,
  LAYER_DRC_ERROR, LAYER_DRC_WARNING, LAYER_DRC_EXCLUSION, LAYER_MARKER_SHADOWS,
  LAYER_WORKSHEET, LAYER_GP_OVERLAY, LAYER_SELECT_OVERLAY, LAYER_PCB_BACKGROUND,
  LAYER_CURSOR, LAYER_AUX_ITEMS, LAYER_DRAW_BITMAPS, GAL_LAYER_ID_BITMASK_END,
  LAYER_WORKSHEET_PAGE1, LAYER_WORKSHEET_PAGEn, LAYER_PADS, LAYER_ZONES,
  LAYER_ZONE_START, LAYER_ZONE_END = LAYER_ZONE_START + PCB_LAYER_ID_COUNT, GAL_LAYER_ID_END
}
 GAL layers are "virtual" layers, i.e. More...
 
enum  SCH_LAYER_ID : int {
  SCH_LAYER_ID_START = GAL_LAYER_ID_END, LAYER_WIRE = SCH_LAYER_ID_START, LAYER_BUS, LAYER_JUNCTION,
  LAYER_LOCLABEL, LAYER_GLOBLABEL, LAYER_HIERLABEL, LAYER_PINNUM,
  LAYER_PINNAM, LAYER_REFERENCEPART, LAYER_VALUEPART, LAYER_FIELDS,
  LAYER_DEVICE, LAYER_NOTES, LAYER_NETNAM, LAYER_PIN,
  LAYER_SHEET, LAYER_SHEETNAME, LAYER_SHEETFILENAME, LAYER_SHEETFIELDS,
  LAYER_SHEETLABEL, LAYER_NOCONNECT, LAYER_ERC_WARN, LAYER_ERC_ERR,
  LAYER_DEVICE_BACKGROUND, LAYER_SHEET_BACKGROUND, LAYER_SCHEMATIC_GRID, LAYER_SCHEMATIC_GRID_AXES,
  LAYER_SCHEMATIC_BACKGROUND, LAYER_SCHEMATIC_CURSOR, LAYER_BRIGHTENED, LAYER_HIDDEN,
  LAYER_SELECTION_SHADOWS, LAYER_SCHEMATIC_WORKSHEET, LAYER_BUS_JUNCTION, LAYER_SCHEMATIC_AUX_ITEMS,
  SCH_LAYER_ID_END
}
 Eeschema drawing layers. More...
 
enum  GERBVIEW_LAYER_ID : int {
  GERBVIEW_LAYER_ID_START = SCH_LAYER_ID_END, GERBVIEW_LAYER_ID_RESERVED = GERBVIEW_LAYER_ID_START + ( 2 * GERBER_DRAWLAYERS_COUNT ), LAYER_DCODES, LAYER_NEGATIVE_OBJECTS,
  LAYER_GERBVIEW_GRID, LAYER_GERBVIEW_AXES, LAYER_GERBVIEW_BACKGROUND, LAYER_GERBVIEW_WORKSHEET,
  GERBVIEW_LAYER_ID_END
}
 GerbView draw layers. More...
 
enum  LAYER_3D_ID : int {
  LAYER_3D_START = GERBVIEW_LAYER_ID_END, LAYER_3D_BACKGROUND_BOTTOM, LAYER_3D_BACKGROUND_TOP, LAYER_3D_BOARD,
  LAYER_3D_COPPER, LAYER_3D_SILKSCREEN_BOTTOM, LAYER_3D_SILKSCREEN_TOP, LAYER_3D_SOLDERMASK,
  LAYER_3D_SOLDERPASTE, LAYER_3D_END = LAYER_3D_SOLDERPASTE
}
 3D Viewer virtual layers for color settings More...
 

Functions

GAL_LAYER_ID operator++ (GAL_LAYER_ID &a)
 
GAL_LAYER_ID ToGalLayer (int aInteger)
 
GAL_LAYER_ID operator+ (const GAL_LAYER_ID &a, int b)
 Used for via types. More...
 
SCH_LAYER_ID operator++ (SCH_LAYER_ID &a)
 
wxString LayerName (int aLayer)
 Returns the string equivalent of a given layer. More...
 
bool IsValidLayer (LAYER_NUM aLayerId)
 Test whether a given integer is a valid layer index, i.e. More...
 
bool IsPcbLayer (LAYER_NUM aLayer)
 Test whether a layer is a valid layer for Pcbnew. More...
 
bool IsCopperLayer (LAYER_NUM aLayerId)
 Tests whether a layer is a copper layer. More...
 
bool IsNonCopperLayer (LAYER_NUM aLayerId)
 Test whether a layer is a non copper layer. More...
 
bool IsUserLayer (PCB_LAYER_ID aLayerId)
 Test whether a layer is a non copper and a non tech layer. More...
 
bool IsFrontLayer (PCB_LAYER_ID aLayerId)
 Layer classification: check if it's a front layer. More...
 
bool IsBackLayer (PCB_LAYER_ID aLayerId)
 Layer classification: check if it's a back layer. More...
 
PCB_LAYER_ID FlipLayer (PCB_LAYER_ID aLayerId, int aCopperLayersCount=0)
 
LSET FlipLayerMask (LSET aMask, int aCopperLayersCount=0)
 Calculate the mask layer when flipping a footprint. More...
 
int GetNetnameLayer (int aLayer)
 Returns a netname layer corresponding to the given layer. More...
 
bool IsNetnameLayer (LAYER_NUM aLayer)
 Test whether a layer is a netname layer. More...
 
bool IsZoneLayer (LAYER_NUM aLayer)
 
bool IsDCodeLayer (int aLayer)
 
bool IsNetCopperLayer (LAYER_NUM aLayer)
 Checks if the given layer is "net copper", meaning it is eligible for net coloring. More...
 
PCB_LAYER_ID ToLAYER_ID (int aLayer)
 

Variables

constexpr int GAL_LAYER_ID_COUNT = GAL_LAYER_ID_END - GAL_LAYER_ID_START
 

Detailed Description

Board layer functions and definitions.

Definition in file layers_id_colors_and_visibility.h.

Macro Definition Documentation

◆ GAL_LAYER_INDEX

#define GAL_LAYER_INDEX (   x)    ( x - GAL_LAYER_ID_START )

Use this macro to convert a GAL layer to a 0-indexed offset from LAYER_VIAS.

Definition at line 237 of file layers_id_colors_and_visibility.h.

◆ GERBER_DCODE_LAYER

#define GERBER_DCODE_LAYER (   x)    ( GERBER_DRAWLAYERS_COUNT + x )

Definition at line 388 of file layers_id_colors_and_visibility.h.

◆ GERBER_DRAW_LAYER

#define GERBER_DRAW_LAYER (   x)    ( GERBVIEW_LAYER_ID_START + x )

Definition at line 386 of file layers_id_colors_and_visibility.h.

◆ GERBER_DRAW_LAYER_INDEX

#define GERBER_DRAW_LAYER_INDEX (   x)    ( x - GERBVIEW_LAYER_ID_START )

Definition at line 390 of file layers_id_colors_and_visibility.h.

◆ GERBER_DRAWLAYERS_COUNT

#define GERBER_DRAWLAYERS_COUNT   PCB_LAYER_ID_COUNT

Definition at line 366 of file layers_id_colors_and_visibility.h.

◆ LAYER_ID_COUNT

#define LAYER_ID_COUNT   LAYER_3D_END

Must update this if you add any enums after GerbView!

Definition at line 411 of file layers_id_colors_and_visibility.h.

◆ MAX_CU_LAYERS

#define MAX_CU_LAYERS   (B_Cu - F_Cu + 1)

Definition at line 151 of file layers_id_colors_and_visibility.h.

◆ MIN_VISIBILITY_MASK

#define MIN_VISIBILITY_MASK
Value:
to draw via holes (pad holes do not use this layer)
#define GAL_LAYER_INDEX(x)
Use this macro to convert a GAL layer to a 0-indexed offset from LAYER_VIAS.
currently selected items overlay

Definition at line 425 of file layers_id_colors_and_visibility.h.

◆ NETNAMES_LAYER_INDEX

#define NETNAMES_LAYER_INDEX (   layer)    ( NETNAMES_LAYER_ID_START + layer )

Macro for obtaining netname layer for a given PCB layer.

Definition at line 174 of file layers_id_colors_and_visibility.h.

◆ SCH_LAYER_ID_COUNT

#define SCH_LAYER_ID_COUNT   ( SCH_LAYER_ID_END - SCH_LAYER_ID_START )

Definition at line 355 of file layers_id_colors_and_visibility.h.

◆ SCH_LAYER_INDEX

#define SCH_LAYER_INDEX (   x)    ( x - SCH_LAYER_ID_START )

Definition at line 357 of file layers_id_colors_and_visibility.h.

◆ ZONE_LAYER_FOR

#define ZONE_LAYER_FOR (   copperLayer)    ( LAYER_ZONE_START + copperLayer )

Macro for getting the zone layer for a given copper layer.

Definition at line 240 of file layers_id_colors_and_visibility.h.

Typedef Documentation

◆ BASE_SEQ

typedef std::vector<PCB_LAYER_ID> BASE_SEQ

A sequence of layers, a sequence provides a certain order.

Definition at line 433 of file layers_id_colors_and_visibility.h.

◆ BASE_SET

typedef std::bitset<PCB_LAYER_ID_COUNT> BASE_SET

Definition at line 482 of file layers_id_colors_and_visibility.h.

◆ GAL_BASE_SET

typedef std::bitset<GAL_LAYER_ID_COUNT> GAL_BASE_SET

Definition at line 264 of file layers_id_colors_and_visibility.h.

◆ LAYER_NUM

typedef int LAYER_NUM

This can be replaced with int and removed.

Until then, it is something you can increment, and its meaning is only advisory but can extend beyond PCB layers into view layers and gerber layers.

Definition at line 45 of file layers_id_colors_and_visibility.h.

Enumeration Type Documentation

◆ GAL_LAYER_ID

enum GAL_LAYER_ID : int

GAL layers are "virtual" layers, i.e.

not tied into design data. Some layers here are shared between applications.

Enumerator
GAL_LAYER_ID_START 
LAYER_VIAS 

Meta control for all vias opacity/visibility.

LAYER_VIA_MICROVIA 

to draw micro vias

LAYER_VIA_BBLIND 

to draw blind/buried vias

LAYER_VIA_THROUGH 

to draw usual through hole vias

LAYER_NON_PLATEDHOLES 

handle color for not plated holes (holes, not pads)

LAYER_MOD_TEXT_FR 
LAYER_MOD_TEXT_BK 
LAYER_MOD_TEXT_INVISIBLE 

text marked as invisible

LAYER_ANCHOR 

anchor of items having an anchor point (texts, footprints)

LAYER_PAD_FR 

smd pads, front layer

LAYER_PAD_BK 

smd pads, back layer

LAYER_RATSNEST 
LAYER_GRID 
LAYER_GRID_AXES 
LAYER_NO_CONNECTS 

show a marker on pads with no nets

LAYER_MOD_FR 

show footprints on front

LAYER_MOD_BK 

show footprints on back

LAYER_MOD_VALUES 

show footprints values (when texts are visibles)

LAYER_MOD_REFERENCES 

show footprints references (when texts are visibles)

LAYER_TRACKS 
LAYER_PADS_TH 

multilayer pads, usually with holes

LAYER_PADS_PLATEDHOLES 

to draw pad holes (plated)

LAYER_VIAS_HOLES 

to draw via holes (pad holes do not use this layer)

LAYER_DRC_ERROR 

layer for drc markers with SEVERITY_ERROR

LAYER_DRC_WARNING 

layer for drc markers with SEVERITY_WARNING

LAYER_DRC_EXCLUSION 

layer for drc markers which have been individually excluded

LAYER_MARKER_SHADOWS 

shadows for drc markers

LAYER_WORKSHEET 

worksheet frame

LAYER_GP_OVERLAY 

general purpose overlay

LAYER_SELECT_OVERLAY 

currently selected items overlay

LAYER_PCB_BACKGROUND 

PCB background color.

LAYER_CURSOR 

PCB cursor.

LAYER_AUX_ITEMS 

Auxiliary items (guides, rule, etc)

LAYER_DRAW_BITMAPS 

to handle and draw images bitmaps

GAL_LAYER_ID_BITMASK_END 

This is the end of the layers used for visibility bit masks in Pcbnew There can be at most 32 layers above here.

LAYER_WORKSHEET_PAGE1 

for pageLayout editor previewing

LAYER_WORKSHEET_PAGEn 

for pageLayout editor previewing

LAYER_PADS 

Meta control for all pads opacity/visibility (color ignored)

LAYER_ZONES 

Control for copper zone opacity/visibility (color ignored)

LAYER_ZONE_START 

Virtual layers for stacking zones and tracks on a given copper layer.

LAYER_ZONE_END 
GAL_LAYER_ID_END 

Add new GAL layers here.

Definition at line 178 of file layers_id_colors_and_visibility.h.

178  : int
179 {
181 
190  LAYER_ANCHOR,
191  LAYER_PAD_FR,
192  LAYER_PAD_BK,
194  LAYER_GRID,
197  LAYER_MOD_FR,
198  LAYER_MOD_BK,
201  LAYER_TRACKS,
202  LAYER_PADS_TH,
213  LAYER_CURSOR,
216 
220 
223 
224  LAYER_PADS,
225  LAYER_ZONES,
226 
230 
232 
234 };
Virtual layers for stacking zones and tracks on a given copper layer.
to draw blind/buried vias
show a marker on pads with no nets
for pageLayout editor previewing
multilayer pads, usually with holes
to handle and draw images bitmaps
handle color for not plated holes (holes, not pads)
anchor of items having an anchor point (texts, footprints)
Control for copper zone opacity/visibility (color ignored)
show footprints on back
to draw via holes (pad holes do not use this layer)
show footprints values (when texts are visibles)
This is the end of the layers used for visibility bit masks in Pcbnew There can be at most 32 layers ...
Add new GAL layers here.
show footprints on front
Auxiliary items (guides, rule, etc)
Meta control for all pads opacity/visibility (color ignored)
to draw usual through hole vias
layer for drc markers which have been individually excluded
layer for drc markers with SEVERITY_WARNING
smd pads, front layer
Meta control for all vias opacity/visibility.
currently selected items overlay
for pageLayout editor previewing
show footprints references (when texts are visibles)
layer for drc markers with SEVERITY_ERROR

◆ GERBVIEW_LAYER_ID

enum GERBVIEW_LAYER_ID : int

GerbView draw layers.

Enumerator
GERBVIEW_LAYER_ID_START 
GERBVIEW_LAYER_ID_RESERVED 

GerbView draw layers and d-code layers.

LAYER_DCODES 
LAYER_NEGATIVE_OBJECTS 
LAYER_GERBVIEW_GRID 
LAYER_GERBVIEW_AXES 
LAYER_GERBVIEW_BACKGROUND 
LAYER_GERBVIEW_WORKSHEET 
GERBVIEW_LAYER_ID_END 

Definition at line 369 of file layers_id_colors_and_visibility.h.

◆ LAYER_3D_ID

◆ NETNAMES_LAYER_ID

enum NETNAMES_LAYER_ID : int

Dedicated layers for net names used in Pcbnew.

Enumerator
NETNAMES_LAYER_ID_START 
NETNAMES_LAYER_ID_RESERVED 

Reserved space for board layer netnames.

LAYER_PAD_FR_NETNAMES 

Additional netnames layers (not associated with a PCB layer)

LAYER_PAD_BK_NETNAMES 
LAYER_PADS_NETNAMES 
LAYER_VIAS_NETNAMES 
NETNAMES_LAYER_ID_END 

Definition at line 154 of file layers_id_colors_and_visibility.h.

◆ PCB_LAYER_ID

enum PCB_LAYER_ID : int

A quick note on layer IDs:

The layers are stored in separate enums so that certain functions can take in the enums as data types and don't have to know about layers from other applications.

Layers that are shared between applications should be in the GAL_LAYER_ID enum.

The PCB_LAYER_ID struct must start at zero for compatibility with legacy board files.

Some functions accept any layer ID, so they start at zero (i.e. F_Cu) and go up to the LAYER_ID_COUNT, which needs to be kept up-to-date if new enums are added.This is the definition of all layers used in Pcbnew.

The PCB layer types are fixed at value 0 through LAYER_ID_COUNT to ensure compatibility with legacy board files.

Enumerator
UNDEFINED_LAYER 
UNSELECTED_LAYER 
PCBNEW_LAYER_ID_START 
F_Cu 
In1_Cu 
In2_Cu 
In3_Cu 
In4_Cu 
In5_Cu 
In6_Cu 
In7_Cu 
In8_Cu 
In9_Cu 
In10_Cu 
In11_Cu 
In12_Cu 
In13_Cu 
In14_Cu 
In15_Cu 
In16_Cu 
In17_Cu 
In18_Cu 
In19_Cu 
In20_Cu 
In21_Cu 
In22_Cu 
In23_Cu 
In24_Cu 
In25_Cu 
In26_Cu 
In27_Cu 
In28_Cu 
In29_Cu 
In30_Cu 
B_Cu 
B_Adhes 
F_Adhes 
B_Paste 
F_Paste 
B_SilkS 
F_SilkS 
B_Mask 
F_Mask 
Dwgs_User 
Cmts_User 
Eco1_User 
Eco2_User 
Edge_Cuts 
Margin 
B_CrtYd 
F_CrtYd 
B_Fab 
F_Fab 
User_1 
User_2 
User_3 
User_4 
User_5 
User_6 
User_7 
User_8 
User_9 
Rescue 
PCB_LAYER_ID_COUNT 

Definition at line 69 of file layers_id_colors_and_visibility.h.

69  : int
70 {
71  UNDEFINED_LAYER = -1,
72  UNSELECTED_LAYER = -2,
73 
76  In1_Cu,
77  In2_Cu,
78  In3_Cu,
79  In4_Cu,
80  In5_Cu,
81  In6_Cu,
82  In7_Cu,
83  In8_Cu,
84  In9_Cu,
85  In10_Cu,
86  In11_Cu,
87  In12_Cu,
88  In13_Cu,
89  In14_Cu,
90  In15_Cu,
91  In16_Cu,
92  In17_Cu,
93  In18_Cu,
94  In19_Cu,
95  In20_Cu,
96  In21_Cu,
97  In22_Cu,
98  In23_Cu,
99  In24_Cu,
100  In25_Cu,
101  In26_Cu,
102  In27_Cu,
103  In28_Cu,
104  In29_Cu,
105  In30_Cu,
106  B_Cu, // 31
107 
108  B_Adhes,
109  F_Adhes,
110 
111  B_Paste,
112  F_Paste,
113 
114  B_SilkS,
115  F_SilkS,
116 
117  B_Mask,
118  F_Mask, // 39
119 
120  Dwgs_User,
121  Cmts_User,
122  Eco1_User,
123  Eco2_User,
124  Edge_Cuts,
125  Margin, // 45
126 
127  B_CrtYd,
128  F_CrtYd,
129 
130  B_Fab,
131  F_Fab, // 49
132 
133  // User definable layers.
134  User_1,
135  User_2,
136  User_3,
137  User_4,
138  User_5,
139  User_6,
140  User_7,
141  User_8,
142  User_9,
143 
144  Rescue, // 59
145 
146  // Four reserved layers (60 - 63) for future expansion within the 64 bit integer limit.
147 
149 };

◆ SCH_LAYER_ID

enum SCH_LAYER_ID : int

Eeschema drawing layers.

Enumerator
SCH_LAYER_ID_START 
LAYER_WIRE 
LAYER_BUS 
LAYER_JUNCTION 
LAYER_LOCLABEL 
LAYER_GLOBLABEL 
LAYER_HIERLABEL 
LAYER_PINNUM 
LAYER_PINNAM 
LAYER_REFERENCEPART 
LAYER_VALUEPART 
LAYER_FIELDS 
LAYER_DEVICE 
LAYER_NOTES 
LAYER_NETNAM 
LAYER_PIN 
LAYER_SHEET 
LAYER_SHEETNAME 
LAYER_SHEETFILENAME 
LAYER_SHEETFIELDS 
LAYER_SHEETLABEL 
LAYER_NOCONNECT 
LAYER_ERC_WARN 
LAYER_ERC_ERR 
LAYER_DEVICE_BACKGROUND 
LAYER_SHEET_BACKGROUND 
LAYER_SCHEMATIC_GRID 
LAYER_SCHEMATIC_GRID_AXES 
LAYER_SCHEMATIC_BACKGROUND 
LAYER_SCHEMATIC_CURSOR 
LAYER_BRIGHTENED 
LAYER_HIDDEN 
LAYER_SELECTION_SHADOWS 
LAYER_SCHEMATIC_WORKSHEET 
LAYER_BUS_JUNCTION 
LAYER_SCHEMATIC_AUX_ITEMS 
SCH_LAYER_ID_END 

Definition at line 312 of file layers_id_colors_and_visibility.h.

312  : int
313 {
315 
317  LAYER_BUS,
322  LAYER_PINNUM,
323  LAYER_PINNAM,
326  LAYER_FIELDS,
327  LAYER_DEVICE,
328  LAYER_NOTES,
329  LAYER_NETNAM,
330  LAYER_PIN,
331  LAYER_SHEET,
346  LAYER_HIDDEN,
351 
353 };
Add new GAL layers here.

Function Documentation

◆ FlipLayer()

PCB_LAYER_ID FlipLayer ( PCB_LAYER_ID  aLayerId,
int  aCopperLayersCount = 0 
)
Returns
the layer number after flipping an item some (not all) layers: external copper, and paired layers( Mask, Paste, solder ... ) are swapped between front and back sides internal layers are flipped only if the copper layers count is known
Parameters
aLayerId= the PCB_LAYER_ID to flip
aCopperLayersCount= the number of copper layers. if 0 (in fact if < 4 ) internal layers will be not flipped because the layer count is not known

Definition at line 521 of file lset.cpp.

522 {
523  switch( aLayerId )
524  {
525  case B_Cu: return F_Cu;
526  case F_Cu: return B_Cu;
527 
528  case B_SilkS: return F_SilkS;
529  case F_SilkS: return B_SilkS;
530 
531  case B_Adhes: return F_Adhes;
532  case F_Adhes: return B_Adhes;
533 
534  case B_Mask: return F_Mask;
535  case F_Mask: return B_Mask;
536 
537  case B_Paste: return F_Paste;
538  case F_Paste: return B_Paste;
539 
540  case B_CrtYd: return F_CrtYd;
541  case F_CrtYd: return B_CrtYd;
542 
543  case B_Fab: return F_Fab;
544  case F_Fab: return B_Fab;
545 
546  default: // change internal layer if aCopperLayersCount is >= 4
547  if( IsCopperLayer( aLayerId ) && aCopperLayersCount >= 4 )
548  {
549  // internal copper layers count is aCopperLayersCount-2
550  PCB_LAYER_ID fliplayer = PCB_LAYER_ID(aCopperLayersCount - 2 - ( aLayerId - In1_Cu ) );
551  // Ensure fliplayer has a value which does not crash Pcbnew:
552  if( fliplayer < F_Cu )
553  fliplayer = F_Cu;
554 
555  if( fliplayer > B_Cu )
556  fliplayer = B_Cu;
557 
558  return fliplayer;
559  }
560 
561  // No change for the other layers
562  return aLayerId;
563  }
564 }
PCB_LAYER_ID
A quick note on layer IDs:
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.

References B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, In1_Cu, and IsCopperLayer().

Referenced by PCAD2KICAD::PCB_FOOTPRINT::AddToBoard(), PCAD2KICAD::PCB_PAD::Flip(), PCAD2KICAD::PCB_ARC::Flip(), PCAD2KICAD::PCB_LINE::Flip(), PCAD2KICAD::PCB_POLYGON::Flip(), PCB_TARGET::Flip(), PCB_TEXT::Flip(), FP_SHAPE::Flip(), TRACK::Flip(), FP_TEXT::Flip(), DIMENSION_BASE::Flip(), FOOTPRINT::Flip(), ARC::Flip(), PCB_SHAPE::Flip(), VIA::Flip(), and ZONE::Flip().

◆ FlipLayerMask()

LSET FlipLayerMask ( LSET  aMask,
int  aCopperLayersCount = 0 
)

Calculate the mask layer when flipping a footprint.

BACK and FRONT copper layers, mask, paste, solder layers are swapped internal layers are flipped only if the copper layers count is known

Parameters
aMask= the LSET to flip
aCopperLayersCount= the number of copper layers. if 0 (in fact if < 4 ) internal layers will be not flipped because the layer count is not known

Definition at line 567 of file lset.cpp.

568 {
569  // layers on physical outside of a board:
570  const static LSET and_mask( 16, // !! update count
571  B_Cu, F_Cu,
572  B_SilkS, F_SilkS,
573  B_Adhes, F_Adhes,
574  B_Mask, F_Mask,
575  B_Paste, F_Paste,
576  B_Adhes, F_Adhes,
577  B_CrtYd, F_CrtYd,
578  B_Fab, F_Fab
579  );
580 
581  LSET newMask = aMask & ~and_mask;
582 
583  if( aMask[B_Cu] )
584  newMask.set( F_Cu );
585 
586  if( aMask[F_Cu] )
587  newMask.set( B_Cu );
588 
589  if( aMask[B_SilkS] )
590  newMask.set( F_SilkS );
591 
592  if( aMask[F_SilkS] )
593  newMask.set( B_SilkS );
594 
595  if( aMask[B_Adhes] )
596  newMask.set( F_Adhes );
597 
598  if( aMask[F_Adhes] )
599  newMask.set( B_Adhes );
600 
601  if( aMask[B_Mask] )
602  newMask.set( F_Mask );
603 
604  if( aMask[F_Mask] )
605  newMask.set( B_Mask );
606 
607  if( aMask[B_Paste] )
608  newMask.set( F_Paste );
609 
610  if( aMask[F_Paste] )
611  newMask.set( B_Paste );
612 
613  if( aMask[B_Adhes] )
614  newMask.set( F_Adhes );
615 
616  if( aMask[F_Adhes] )
617  newMask.set( B_Adhes );
618 
619  if( aMask[B_CrtYd] )
620  newMask.set( F_CrtYd );
621 
622  if( aMask[F_CrtYd] )
623  newMask.set( B_CrtYd );
624 
625  if( aMask[B_Fab] )
626  newMask.set( F_Fab );
627 
628  if( aMask[F_Fab] )
629  newMask.set( B_Fab );
630 
631  if( aCopperLayersCount >= 4 ) // Internal layers exist
632  {
633  LSET internalMask = aMask & LSET::InternalCuMask();
634 
635  if( internalMask != LSET::InternalCuMask() )
636  {
637  // the mask does not include all internal layers. Therefore
638  // the flipped mask for internal copper layers must be built
639  int innerLayerCnt = aCopperLayersCount -2;
640 
641  // the flipped mask is the innerLayerCnt bits rewritten in reverse order
642  // ( bits innerLayerCnt to 1 rewritten in bits 1 to innerLayerCnt )
643  for( int ii = 0; ii < innerLayerCnt; ii++ )
644  {
645  if( internalMask[innerLayerCnt - ii] )
646  {
647  newMask.set( ii + In1_Cu );
648  }
649  else
650  {
651  newMask.reset( ii + In1_Cu );
652  }
653  }
654  }
655  }
656 
657  return newMask;
658 }
LSET is a set of PCB_LAYER_IDs.
static LSET InternalCuMask()
Return a complete set of internal copper layers which is all Cu layers except F_Cu and B_Cu.
Definition: lset.cpp:710

References B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, In1_Cu, and LSET::InternalCuMask().

Referenced by PAD::Flip(), ZONE::Flip(), and ALTIUM_PCB::ParsePads6Data().

◆ GetNetnameLayer()

int GetNetnameLayer ( int  aLayer)
inline

Returns a netname layer corresponding to the given layer.

Definition at line 883 of file layers_id_colors_and_visibility.h.

884 {
885  if( IsCopperLayer( aLayer ) )
886  return NETNAMES_LAYER_INDEX( aLayer );
887  else if( aLayer == LAYER_PADS_TH )
888  return LAYER_PADS_NETNAMES;
889  else if( aLayer == LAYER_PAD_FR )
890  return LAYER_PAD_FR_NETNAMES;
891  else if( aLayer == LAYER_PAD_BK )
892  return LAYER_PAD_BK_NETNAMES;
893  else if( aLayer >= LAYER_VIA_MICROVIA && aLayer <= LAYER_VIA_THROUGH )
894  return LAYER_VIAS_NETNAMES;
895 
896  // Fallback
897  return Cmts_User;
898 }
multilayer pads, usually with holes
to draw usual through hole vias
smd pads, front layer
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.
#define NETNAMES_LAYER_INDEX(layer)
Macro for obtaining netname layer for a given PCB layer.
Additional netnames layers (not associated with a PCB layer)

References Cmts_User, IsCopperLayer(), LAYER_PAD_BK, LAYER_PAD_BK_NETNAMES, LAYER_PAD_FR, LAYER_PAD_FR_NETNAMES, LAYER_PADS_NETNAMES, LAYER_PADS_TH, LAYER_VIA_MICROVIA, LAYER_VIA_THROUGH, LAYER_VIAS_NETNAMES, and NETNAMES_LAYER_INDEX.

Referenced by KIGFX::PCB_RENDER_SETTINGS::LoadColors(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), PCB_DRAW_PANEL_GAL::setDefaultLayerDeps(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and TRACK::ViewGetLayers().

◆ IsBackLayer()

bool IsBackLayer ( PCB_LAYER_ID  aLayerId)
inline

◆ IsCopperLayer()

bool IsCopperLayer ( LAYER_NUM  aLayerId)
inline

Tests whether a layer is a copper layer.

Parameters
aLayerId= Layer to test
Returns
true if aLayer is a valid copper layer

Definition at line 770 of file layers_id_colors_and_visibility.h.

771 {
772  return aLayerId >= F_Cu && aLayerId <= B_Cu;
773 }

References B_Cu, and F_Cu.

Referenced by BOARD::Add(), BOARD_ADAPTER::AddPadsWithClearanceToContainer(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), BOARD::BOARD(), PCB_ONE_LAYER_SELECTOR::buildList(), SELECT_COPPER_LAYERS_PAIR_DIALOG::buildList(), BOARD_ADAPTER::createLayers(), KIGFX::PCB_PAINTER::draw(), PCB_EDIT_FRAME::Edit_Zone_Params(), FlipLayer(), DSN::SPECCTRA_DB::FromBOARD(), GenCADLayerName(), GetGerberFileFunctionAttribute(), GetGerberFilePolarityAttribute(), GetGerberProtelExtension(), BOARD_DESIGN_SETTINGS::GetLayerClass(), BOARD::GetLayerType(), GetNetnameLayer(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), DIALOG_EXPORT_SVG::initDialog(), IsNetCopperLayer(), BOARD_ITEM::IsOnCopperLayer(), PCBNEW_CONTROL::LayerNext(), PCBNEW_CONTROL::LayerPrev(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadPolygon(), EAGLE_PLUGIN::loadSignals(), DIALOG_PLOT::OnPopUpLayers(), EAGLE_PLUGIN::packageSMD(), ALTIUM_PCB::ParseVias6Data(), PNS::TOOL_BASE::pickSingleItem(), PlotOneBoardLayer(), BRDITEMS_PLOTTER::PlotPcbShape(), BRDITEMS_PLOTTER::PlotPcbText(), CONVERT_TOOL::PolyToLines(), ROUTER_TOOL::prepareInteractive(), C3D_RENDER_RAYTRACING::Reload(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::Run(), PCB_DRAW_PANEL_GAL::setDefaultLayerDeps(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), BOARD::SetLayerType(), PCB_DRAW_PANEL_GAL::SetTopLayer(), PCBNEW_PRINTOUT::setupViewLayers(), PCB_BASE_FRAME::SwitchLayer(), PCB_EDIT_FRAME::SwitchLayer(), PNS_KICAD_IFACE_BASE::syncGraphicalItem(), PNS_KICAD_IFACE_BASE::syncTextItem(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), and FOOTPRINT::TransformPadsWithClearanceToPolygon().

◆ IsDCodeLayer()

◆ IsFrontLayer()

bool IsFrontLayer ( PCB_LAYER_ID  aLayerId)
inline

Layer classification: check if it's a front layer.

Definition at line 814 of file layers_id_colors_and_visibility.h.

815 {
816  switch( aLayerId )
817  {
818  case F_Cu:
819  case F_Adhes:
820  case F_Paste:
821  case F_SilkS:
822  case F_Mask:
823  case F_CrtYd:
824  case F_Fab:
825  return true;
826  default:
827  ;
828  }
829 
830  return false;
831 }

References F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, and F_SilkS.

Referenced by GENERAL_COLLECTOR::Inspect(), PCB_DRAW_PANEL_GAL::SetTopLayer(), FP_TEXT::ViewGetLOD(), and PAD::ViewGetLOD().

◆ IsNetCopperLayer()

bool IsNetCopperLayer ( LAYER_NUM  aLayer)
inline

Checks if the given layer is "net copper", meaning it is eligible for net coloring.

Parameters
aLayeris the layer to test
Returns
true if the layer is one that participates in net coloring

Definition at line 932 of file layers_id_colors_and_visibility.h.

933 {
934  static std::set<LAYER_NUM> netCopperLayers =
935  {
936  LAYER_PAD_FR,
937  LAYER_PAD_BK,
942  };
943 
944  return IsCopperLayer( aLayer ) || netCopperLayers.count( aLayer );
945 }
to draw blind/buried vias
multilayer pads, usually with holes
to draw usual through hole vias
smd pads, front layer
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.

References IsCopperLayer(), LAYER_PAD_BK, LAYER_PAD_FR, LAYER_PADS_TH, LAYER_VIA_BBLIND, LAYER_VIA_MICROVIA, and LAYER_VIA_THROUGH.

Referenced by KIGFX::PCB_RENDER_SETTINGS::GetColor().

◆ IsNetnameLayer()

bool IsNetnameLayer ( LAYER_NUM  aLayer)
inline

Test whether a layer is a netname layer.

Parameters
aLayer= Layer to test
Returns
true if aLayer is a valid netname layer

Definition at line 906 of file layers_id_colors_and_visibility.h.

907 {
908  return aLayer >= NETNAMES_LAYER_INDEX( F_Cu ) &&
909  aLayer < NETNAMES_LAYER_ID_END;
910 }
#define NETNAMES_LAYER_INDEX(layer)
Macro for obtaining netname layer for a given PCB layer.

References F_Cu, NETNAMES_LAYER_ID_END, and NETNAMES_LAYER_INDEX.

Referenced by KIGFX::PCB_PAINTER::draw(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), PCB_DRAW_PANEL_GAL::setDefaultLayerDeps(), TRACK::ViewGetLOD(), VIA::ViewGetLOD(), and PAD::ViewGetLOD().

◆ IsNonCopperLayer()

bool IsNonCopperLayer ( LAYER_NUM  aLayerId)
inline

Test whether a layer is a non copper layer.

Parameters
aLayerId= Layer to test
Returns
true if aLayer is a non copper layer

Definition at line 781 of file layers_id_colors_and_visibility.h.

782 {
783  return aLayerId > B_Cu && aLayerId <= PCB_LAYER_ID_COUNT;
784 }

References B_Cu, and PCB_LAYER_ID_COUNT.

Referenced by PCAD2KICAD::PCB_ARC::AddToFootprint(), PCAD2KICAD::PCB_LINE::AddToFootprint(), PCAD2KICAD::PCB_POLYGON::AddToFootprint(), and PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

◆ IsPcbLayer()

bool IsPcbLayer ( LAYER_NUM  aLayer)
inline

Test whether a layer is a valid layer for Pcbnew.

Parameters
aLayer= Layer to test
Returns
true if aLayer is a layer valid in Pcbnew

Definition at line 759 of file layers_id_colors_and_visibility.h.

760 {
761  return aLayer >= F_Cu && aLayer < PCB_LAYER_ID_COUNT;
762 }

References F_Cu, and PCB_LAYER_ID_COUNT.

Referenced by GBR_TO_PCB_EXPORTER::ExportPcb().

◆ IsUserLayer()

bool IsUserLayer ( PCB_LAYER_ID  aLayerId)
inline

Test whether a layer is a non copper and a non tech layer.

Parameters
aLayerId= Layer to test
Returns
true if aLayer is a user layer

Definition at line 792 of file layers_id_colors_and_visibility.h.

793 {
794  return aLayerId >= Dwgs_User && aLayerId <= Eco2_User;
795 }

References Dwgs_User, and Eco2_User.

◆ IsValidLayer()

bool IsValidLayer ( LAYER_NUM  aLayerId)
inline

Test whether a given integer is a valid layer index, i.e.

can be safely put in a PCB_LAYER_ID

Parameters
aLayerId= Layer index to test. It can be an int, so its useful during I/O
Returns
true if aLayerIndex is a valid layer index

Definition at line 748 of file layers_id_colors_and_visibility.h.

749 {
750  return unsigned( aLayerId ) < PCB_LAYER_ID_COUNT;
751 }

References PCB_LAYER_ID_COUNT.

Referenced by LAYERS_MAP_DIALOG::OnSelectLayer().

◆ IsZoneLayer()

bool IsZoneLayer ( LAYER_NUM  aLayer)
inline

Definition at line 913 of file layers_id_colors_and_visibility.h.

914 {
915  return aLayer >= LAYER_ZONE_START && aLayer <= LAYER_ZONE_END;
916 }
Virtual layers for stacking zones and tracks on a given copper layer.

References LAYER_ZONE_END, and LAYER_ZONE_START.

Referenced by KIGFX::PCB_PAINTER::draw(), and KIGFX::PCB_RENDER_SETTINGS::GetColor().

◆ LayerName()

wxString LayerName ( int  aLayer)

Returns the string equivalent of a given layer.

Parameters
aLayeris a valid layer ID

Returns the string equivalent of a given layer.

These are not the same as the canonical name in LSET::Name(), which is used in board files and cannot be translated or changed.

Definition at line 27 of file layer_id.cpp.

28 {
29  switch( aLayer )
30  {
31  // PCB_LAYER_ID
32  case F_Cu: return _( "F.Cu" );
33  case In1_Cu: return _( "In1.Cu" );
34  case In2_Cu: return _( "In2.Cu" );
35  case In3_Cu: return _( "In3.Cu" );
36  case In4_Cu: return _( "In4.Cu" );
37  case In5_Cu: return _( "In5.Cu" );
38  case In6_Cu: return _( "In6.Cu" );
39  case In7_Cu: return _( "In7.Cu" );
40  case In8_Cu: return _( "In8.Cu" );
41  case In9_Cu: return _( "In9.Cu" );
42  case In10_Cu: return _( "In10.Cu" );
43  case In11_Cu: return _( "In11.Cu" );
44  case In12_Cu: return _( "In12.Cu" );
45  case In13_Cu: return _( "In13.Cu" );
46  case In14_Cu: return _( "In14.Cu" );
47  case In15_Cu: return _( "In15.Cu" );
48  case In16_Cu: return _( "In16.Cu" );
49  case In17_Cu: return _( "In17.Cu" );
50  case In18_Cu: return _( "In18.Cu" );
51  case In19_Cu: return _( "In19.Cu" );
52  case In20_Cu: return _( "In20.Cu" );
53  case In21_Cu: return _( "In21.Cu" );
54  case In22_Cu: return _( "In22.Cu" );
55  case In23_Cu: return _( "In23.Cu" );
56  case In24_Cu: return _( "In24.Cu" );
57  case In25_Cu: return _( "In25.Cu" );
58  case In26_Cu: return _( "In26.Cu" );
59  case In27_Cu: return _( "In27.Cu" );
60  case In28_Cu: return _( "In28.Cu" );
61  case In29_Cu: return _( "In29.Cu" );
62  case In30_Cu: return _( "In30.Cu" );
63  case B_Cu: return _( "B.Cu" );
64 
65  // Technicals
66  case B_Adhes: return _( "B.Adhesive" );
67  case F_Adhes: return _( "F.Adhesive" );
68  case B_Paste: return _( "B.Paste" );
69  case F_Paste: return _( "F.Paste" );
70  case B_SilkS: return _( "B.Silkscreen" );
71  case F_SilkS: return _( "F.Silkscreen" );
72  case B_Mask: return _( "B.Mask" );
73  case F_Mask: return _( "F.Mask" );
74 
75  // Users
76  case Dwgs_User: return _( "User.Drawings" );
77  case Cmts_User: return _( "User.Comments" );
78  case Eco1_User: return _( "User.Eco1" );
79  case Eco2_User: return _( "User.Eco2" );
80  case Edge_Cuts: return _( "Edge.Cuts" );
81  case Margin: return _( "Margin" );
82 
83  // Footprint
84  case F_CrtYd: return _( "F.Courtyard" );
85  case B_CrtYd: return _( "B.Courtyard" );
86  case F_Fab: return _( "F.Fab" );
87  case B_Fab: return _( "B.Fab" );
88 
89  // User definable layers.
90  case User_1: return _( "User.1" );
91  case User_2: return _( "User.2" );
92  case User_3: return _( "User.3" );
93  case User_4: return _( "User.4" );
94  case User_5: return _( "User.5" );
95  case User_6: return _( "User.6" );
96  case User_7: return _( "User.7" );
97  case User_8: return _( "User.8" );
98  case User_9: return _( "User.9" );
99 
100  // Rescue
101  case Rescue: return _( "Rescue" );
102 
103  // SCH_LAYER_ID
104 
105  case LAYER_WIRE: return _( "Wires" );
106  case LAYER_BUS: return _( "Buses" );
107  case LAYER_BUS_JUNCTION: return _( "Bus junctions" );
108  case LAYER_JUNCTION: return _( "Junctions" );
109  case LAYER_LOCLABEL: return _( "Labels" );
110  case LAYER_GLOBLABEL: return _( "Global labels" );
111  case LAYER_HIERLABEL: return _( "Hierarchical labels" );
112  case LAYER_PINNUM: return _( "Pin numbers" );
113  case LAYER_PINNAM: return _( "Pin names" );
114  case LAYER_REFERENCEPART: return _( "Symbol references" );
115  case LAYER_VALUEPART: return _( "Symbol values" );
116  case LAYER_FIELDS: return _( "Symbol fields" );
117  case LAYER_DEVICE: return _( "Symbol body outlines" );
118  case LAYER_DEVICE_BACKGROUND: return _( "Symbol body fills" );
119  case LAYER_NOTES: return _( "Notes" );
120  case LAYER_NETNAM: return _( "Net names" );
121  case LAYER_PIN: return _( "Pins" );
122  case LAYER_SHEET: return _( "Sheet borders" );
123  case LAYER_SHEET_BACKGROUND: return _( "Sheet backgrounds" );
124  case LAYER_SHEETNAME: return _( "Sheet names" );
125  case LAYER_SHEETFIELDS: return _( "Sheet fields" );
126  case LAYER_SHEETFILENAME: return _( "Sheet file names" );
127  case LAYER_SHEETLABEL: return _( "Sheet labels" );
128  case LAYER_NOCONNECT: return _( "No-connect symbols" );
129  case LAYER_ERC_WARN: return _( "ERC warnings" );
130  case LAYER_ERC_ERR: return _( "ERC errors" );
131  case LAYER_SCHEMATIC_AUX_ITEMS: return _( "Helper items" );
132  case LAYER_SCHEMATIC_GRID: return _( "Grid" );
133  case LAYER_SCHEMATIC_GRID_AXES: return _( "Axes" );
134  case LAYER_SCHEMATIC_BACKGROUND: return _( "Background" );
135  case LAYER_SCHEMATIC_CURSOR: return _( "Cursor" );
136  case LAYER_BRIGHTENED: return _( "Highlighted items" );
137  case LAYER_HIDDEN: return _( "Hidden items" );
138  case LAYER_SELECTION_SHADOWS: return _( "Selection highlight" );
139  case LAYER_SCHEMATIC_WORKSHEET: return _( "Worksheet" );
140 
141  // GAL_LAYER_ID
142 
143  case LAYER_MOD_FR: return _( "Footprints front" );
144  case LAYER_MOD_BK: return _( "Footprints back" );
145  case LAYER_MOD_VALUES: return _( "Values" );
146  case LAYER_MOD_REFERENCES: return _( "Reference designators" );
147  case LAYER_MOD_TEXT_FR: return _( "Footprint text front" );
148  case LAYER_MOD_TEXT_BK: return _( "Footprint text back" );
149  case LAYER_MOD_TEXT_INVISIBLE: return _( "Hidden text" );
150  case LAYER_PAD_FR: return _( "Pads front" );
151  case LAYER_PAD_BK: return _( "Pads back" );
152  case LAYER_PADS_TH: return _( "Through-hole pads" );
153  case LAYER_TRACKS: return _( "Tracks" );
154  case LAYER_VIA_THROUGH: return _( "Through vias" );
155  case LAYER_VIA_BBLIND: return _( "Bl/Buried vias" );
156  case LAYER_VIA_MICROVIA: return _( "Micro-vias" );
157  case LAYER_VIAS_HOLES: return _( "Via holes" );
158  case LAYER_NON_PLATEDHOLES: return _( "Non-plated holes" );
159  case LAYER_RATSNEST: return _( "Ratsnest" );
160  case LAYER_NO_CONNECTS: return _( "No-connects" );
161  case LAYER_DRC_WARNING: return _( "DRC warnings" );
162  case LAYER_DRC_ERROR: return _( "DRC errors" );
163  case LAYER_DRC_EXCLUSION: return _( "DRC exclusions" );
164  case LAYER_MARKER_SHADOWS: return _( "DRC marker shadows" );
165  case LAYER_ANCHOR: return _( "Anchors" );
166  case LAYER_WORKSHEET: return _( "Worksheet" );
167  case LAYER_CURSOR: return _( "Cursor" );
168  case LAYER_AUX_ITEMS: return _( "Helper items" );
169  case LAYER_GRID: return _( "Grid" );
170  case LAYER_GRID_AXES: return _( "Grid axes" );
171  case LAYER_PCB_BACKGROUND: return _( "Background" );
172  case LAYER_SELECT_OVERLAY: return _( "Selection highlight" );
173 
174  default:
175  wxCHECK_MSG( false, wxEmptyString, wxString::Format( "Unknown layer ID %d", aLayer ) );
176  }
177 }
to draw blind/buried vias
show a marker on pads with no nets
multilayer pads, usually with holes
handle color for not plated holes (holes, not pads)
anchor of items having an anchor point (texts, footprints)
show footprints on back
to draw via holes (pad holes do not use this layer)
show footprints values (when texts are visibles)
show footprints on front
Auxiliary items (guides, rule, etc)
to draw usual through hole vias
layer for drc markers which have been individually excluded
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
layer for drc markers with SEVERITY_WARNING
smd pads, front layer
#define _(s)
Definition: 3d_actions.cpp:33
currently selected items overlay
show footprints references (when texts are visibles)
layer for drc markers with SEVERITY_ERROR

References _, B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, Cmts_User, Dwgs_User, Eco1_User, Eco2_User, Edge_Cuts, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, Format(), In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In30_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, LAYER_ANCHOR, LAYER_AUX_ITEMS, LAYER_BRIGHTENED, LAYER_BUS, LAYER_BUS_JUNCTION, LAYER_CURSOR, LAYER_DEVICE, LAYER_DEVICE_BACKGROUND, LAYER_DRC_ERROR, LAYER_DRC_EXCLUSION, LAYER_DRC_WARNING, LAYER_ERC_ERR, LAYER_ERC_WARN, LAYER_FIELDS, LAYER_GLOBLABEL, LAYER_GRID, LAYER_GRID_AXES, LAYER_HIDDEN, LAYER_HIERLABEL, LAYER_JUNCTION, LAYER_LOCLABEL, LAYER_MARKER_SHADOWS, LAYER_MOD_BK, LAYER_MOD_FR, LAYER_MOD_REFERENCES, LAYER_MOD_TEXT_BK, LAYER_MOD_TEXT_FR, LAYER_MOD_TEXT_INVISIBLE, LAYER_MOD_VALUES, LAYER_NETNAM, LAYER_NO_CONNECTS, LAYER_NOCONNECT, LAYER_NON_PLATEDHOLES, LAYER_NOTES, LAYER_PAD_BK, LAYER_PAD_FR, LAYER_PADS_TH, LAYER_PCB_BACKGROUND, LAYER_PIN, LAYER_PINNAM, LAYER_PINNUM, LAYER_RATSNEST, LAYER_REFERENCEPART, LAYER_SCHEMATIC_AUX_ITEMS, LAYER_SCHEMATIC_BACKGROUND, LAYER_SCHEMATIC_CURSOR, LAYER_SCHEMATIC_GRID, LAYER_SCHEMATIC_GRID_AXES, LAYER_SCHEMATIC_WORKSHEET, LAYER_SELECT_OVERLAY, LAYER_SELECTION_SHADOWS, LAYER_SHEET, LAYER_SHEET_BACKGROUND, LAYER_SHEETFIELDS, LAYER_SHEETFILENAME, LAYER_SHEETLABEL, LAYER_SHEETNAME, LAYER_TRACKS, LAYER_VALUEPART, LAYER_VIA_BBLIND, LAYER_VIA_MICROVIA, LAYER_VIA_THROUGH, LAYER_VIAS_HOLES, LAYER_WIRE, LAYER_WORKSHEET, Margin, Rescue, User_1, User_2, User_3, User_4, User_5, User_6, User_7, User_8, and User_9.

Referenced by DIALOG_IMPORTED_LAYERS::AddMappings(), PANEL_SETUP_LAYERS::addUserDefinedLayer(), AUTOPLACE_TOOL::autoplace(), PANEL_FP_EDITOR_COLOR_SETTINGS::createSwatches(), PANEL_PCBNEW_COLOR_SETTINGS::createSwatches(), PANEL_EESCHEMA_COLOR_SETTINGS::createSwatches(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), PANEL_SETUP_LAYERS::getAvailableUserDefinedLayers(), DIALOG_IMPORTED_LAYERS::GetSelectedLayerID(), BOARD::GetStandardLayerName(), and DIALOG_IMPORTED_LAYERS::OnAutoMatchLayersClicked().

◆ operator+()

GAL_LAYER_ID operator+ ( const GAL_LAYER_ID a,
int  b 
)
inline

Used for via types.

Definition at line 257 of file layers_id_colors_and_visibility.h.

258 {
259  GAL_LAYER_ID t = GAL_LAYER_ID( int( a ) + b );
260  wxASSERT( t <= GAL_LAYER_ID_END );
261  return t;
262 }
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
Add new GAL layers here.

References GAL_LAYER_ID_END.

◆ operator++() [1/2]

GAL_LAYER_ID operator++ ( GAL_LAYER_ID a)
inline

Definition at line 244 of file layers_id_colors_and_visibility.h.

245 {
246  a = GAL_LAYER_ID( int( a ) + 1 );
247  return a;
248 }
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.

◆ operator++() [2/2]

SCH_LAYER_ID operator++ ( SCH_LAYER_ID a)
inline

Definition at line 359 of file layers_id_colors_and_visibility.h.

360 {
361  a = SCH_LAYER_ID( int( a ) + 1 );
362  return a;
363 }
SCH_LAYER_ID
Eeschema drawing layers.

◆ ToGalLayer()

GAL_LAYER_ID ToGalLayer ( int  aInteger)
inline

Definition at line 250 of file layers_id_colors_and_visibility.h.

251 {
252  wxASSERT( aInteger >= GAL_LAYER_ID_START && aInteger <= GAL_LAYER_ID_END );
253  return static_cast<GAL_LAYER_ID>( aInteger );
254 }
Add new GAL layers here.

References GAL_LAYER_ID_END, and GAL_LAYER_ID_START.

Referenced by APPEARANCE_CONTROLS::rebuildObjects(), and APPEARANCE_CONTROLS::syncObjectSettings().

◆ ToLAYER_ID()

PCB_LAYER_ID ToLAYER_ID ( int  aLayer)

Definition at line 898 of file lset.cpp.

899 {
900  wxASSERT( aLayer < GAL_LAYER_ID_END );
901  return PCB_LAYER_ID( aLayer );
902 }
Add new GAL layers here.
PCB_LAYER_ID
A quick note on layer IDs:

References GAL_LAYER_ID_END.

Referenced by DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), PNS_KICAD_IFACE::AddItem(), GRID_CELL_LAYER_SELECTOR::BeginEdit(), BOARD::BOARD(), DSN::SPECCTRA_DB::buildLayerMaps(), BOARD_ADAPTER::createLayers(), GRID_CELL_LAYER_RENDERER::Draw(), KIGFX::PCB_PAINTER::draw(), DRAWING_TOOL::DrawVia(), PCB_LAYER_VALUE::EqualTo(), existsOnLayer(), GENDRILL_WRITER_BASE::GenDrillReportFile(), GetGerberFileFunctionAttribute(), BOARD::GetLayerID(), PCB_LAYER_SELECTOR::getLayerName(), PCB_LAYER_BOX_SELECTOR::getLayerName(), DIALOG_IMPORTED_LAYERS::GetSelectedLayerID(), GRID_CELL_LAYER_SELECTOR::GetValue(), PCB_LAYER_BOX_SELECTOR::isLayerEnabled(), PCBNEW_CONTROL::LayerNext(), PCBNEW_CONTROL::LayerPrev(), PCAD2KICAD::PCB::MapLayer(), APPEARANCE_CONTROLS::onLayerClick(), DIALOG_RULE_AREA_PROPERTIES::OnLayerSelection(), DIALOG_NON_COPPER_ZONES_EDITOR::OnLayerSelection(), DIALOG_COPPER_ZONE::OnLayerSelection(), PLOT_CONTROLLER::OpenPlotfile(), DRC_RULES_PARSER::parseLayer(), ROUTER_TOOL::performRouting(), LENGTH_TUNER_TOOL::performTuning(), PLOT_CONTROLLER::PlotLayer(), ROUTER_TOOL::prepareInteractive(), PCB_EDIT_FRAME::Process_Special_Functions(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), SELECTION_TOOL::Selectable(), FOOTPRINT_EDIT_FRAME::SelectLayer(), PCB_BASE_FRAME::SelectLayer(), DIALOG_GLOBAL_DELETION::SetCurrentLayer(), APPEARANCE_CONTROLS::SetLayerVisible(), TEXT_MOD_GRID_TABLE::SetValueAsLong(), ROUTER_TOOL::switchLayerOnViaPlacement(), PNS_KICAD_IFACE_BASE::syncZone(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and DIALOG_TEXT_PROPERTIES::TransferDataFromWindow().

Variable Documentation

◆ GAL_LAYER_ID_COUNT

constexpr int GAL_LAYER_ID_COUNT = GAL_LAYER_ID_END - GAL_LAYER_ID_START

Definition at line 242 of file layers_id_colors_and_visibility.h.