KiCad PCB EDA Suite
class_board.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) 2007 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
5  * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
30 #ifndef CLASS_BOARD_H_
31 #define CLASS_BOARD_H_
32 
33 
34 #include <dlist.h>
35 #include <core/iterators.h>
36 
37 #include <common.h> // PAGE_INFO
39 #include <netinfo.h>
40 #include <class_pad.h>
41 #include <colors_design_settings.h>
42 #include <board_design_settings.h>
43 #include <title_block.h>
44 #include <zone_settings.h>
45 #include <pcb_plot_params.h>
46 #include <board_item_container.h>
47 #include <eda_rect.h>
48 
49 #include <memory>
50 
51 using std::unique_ptr;
52 
53 class PCB_BASE_FRAME;
54 class PCB_EDIT_FRAME;
55 class PICKED_ITEMS_LIST;
56 class BOARD;
57 class ZONE_CONTAINER;
58 class SEGZONE;
59 class TRACK;
60 class D_PAD;
61 class MARKER_PCB;
62 class MSG_PANEL_ITEM;
63 class NETLIST;
64 class REPORTER;
65 class SHAPE_POLY_SET;
66 class CONNECTIVITY_DATA;
67 class COMPONENT;
68 
73 enum LAYER_T
74 {
80 };
81 
82 
87 struct LAYER
88 {
90  {
91  clear();
92  }
93 
94  void clear()
95  {
96  m_type = LT_SIGNAL;
97  m_visible = true;
98  m_number = 0;
99  m_name.clear();
100  }
101 
102  /*
103  LAYER( const wxString& aName = wxEmptyString,
104  LAYER_T aType = LT_SIGNAL, bool aVisible = true, int aNumber = -1 ) :
105  m_name( aName ),
106  m_type( aType ),
107  m_visible( aVisible ),
108  m_number( aNumber )
109  {
110  }
111  */
112 
113  wxString m_name;
114 
116 
117  bool m_visible;
118 
119  int m_number;
120 
127  static const char* ShowType( LAYER_T aType );
128 
136  static LAYER_T ParseType( const char* aType );
137 };
138 
139 
140 // Helper class to handle high light nets
142 {
143  friend class BOARD;
144 
145 protected:
146  int m_netCode; // net selected for highlight (-1 when no net selected )
147  bool m_highLightOn; // highlight active
148 
149  void Clear()
150  {
151  m_netCode = -1;
152  m_highLightOn = false;
153  }
154 
156  {
157  Clear();
158  }
159 };
160 
161 
162 DECL_VEC_FOR_SWIG(MARKERS, MARKER_PCB*)
163 DECL_VEC_FOR_SWIG(ZONE_CONTAINERS, ZONE_CONTAINER*)
164 DECL_VEC_FOR_SWIG(TRACKS, TRACK*)
165 
166 
167 
172 {
173  friend class PCB_EDIT_FRAME;
174 
175 private:
177  wxString m_fileName;
178 
180  MARKERS m_markers;
181 
183  ZONE_CONTAINERS m_ZoneDescriptorList;
184 
186 
187  // if true m_highLight_NetCode is used
188  HIGH_LIGHT_INFO m_highLight; // current high light data
189  HIGH_LIGHT_INFO m_highLightPrevious; // a previously stored high light data
190 
192 
193  std::shared_ptr<CONNECTIVITY_DATA> m_connectivity;
194 
202 
213  void chainMarkedSegments( TRACK* aTrackList, wxPoint aPosition,
214  const LSET& aLayerSet, TRACKS* aList );
215 
216  // The default copy constructor & operator= are inadequate,
217  // either write one or do not use it at all
218  BOARD( const BOARD& aOther ) :
219  BOARD_ITEM_CONTAINER( aOther ), m_NetInfo( this )
220  {
221  assert( false );
222  }
223 
224  BOARD& operator=( const BOARD& aOther )
225  {
226  assert( false );
227  return *this; // just to mute warning
228  }
229 
230 public:
231  static inline bool ClassOf( const EDA_ITEM* aItem )
232  {
233  return aItem && PCB_T == aItem->Type();
234  }
235 
236  void SetFileName( const wxString& aFileName ) { m_fileName = aFileName; }
237 
238  const wxString &GetFileName() const { return m_fileName; }
239 
242 
243 
244 private:
245  DLIST<BOARD_ITEM> m_Drawings; // linked list of lines & texts
246 
247 public:
248 
249  DLIST<MODULE> m_Modules; // linked list of MODULEs
250  DLIST<TRACK> m_Track; // linked list of TRACKs and VIAs
251  DLIST<SEGZONE> m_SegZoneDeprecated; // linked list of SEGZONEs, for really very old boards
252  // should be removed one day
253 
257  ZONE_CONTAINERS& Zones() { return m_ZoneDescriptorList; }
258  const std::vector<BOARD_CONNECTED_ITEM*> AllConnectedItems();
259 
260  // will be deprecated as soon as append board functionality is fixed
261  DLIST<BOARD_ITEM>& DrawingsList() { return m_Drawings; }
262 
265 
266  BOARD();
267  ~BOARD();
268 
269  virtual const wxPoint GetPosition() const override;
270 
271  virtual void SetPosition( const wxPoint& aPos ) override;
272 
273  bool IsEmpty() const
274  {
275  return m_Drawings.GetCount() == 0 && m_Modules.GetCount() == 0 &&
276  m_Track.GetCount() == 0 && m_SegZoneDeprecated.GetCount() == 0;
277  }
278 
279  void Move( const wxPoint& aMoveVector ) override;
280 
281  void SetFileFormatVersionAtLoad( int aVersion ) { m_fileFormatVersionAtLoad = aVersion; }
282  int GetFileFormatVersionAtLoad() const { return m_fileFormatVersionAtLoad; }
283 
284  void Add( BOARD_ITEM* aItem, ADD_MODE aMode = ADD_INSERT ) override;
285 
286  void Remove( BOARD_ITEM* aBoardItem ) override;
287 
288  BOARD_ITEM* GetItem( void* aWeakReference );
289 
290  BOARD_ITEM* Duplicate( const BOARD_ITEM* aItem, bool aAddToBoard = false );
291 
297  std::shared_ptr<CONNECTIVITY_DATA> GetConnectivity() const
298  {
299  return m_connectivity;
300  }
301 
307  void BuildConnectivity();
308 
309 
314  void DeleteMARKERs();
315 
320  void DeleteZONEOutlines();
321 
328  MARKER_PCB* GetMARKER( int index ) const
329  {
330  if( (unsigned) index < m_markers.size() )
331  return m_markers[index];
332 
333  return NULL;
334  }
335 
340  int GetMARKERCount() const
341  {
342  return (int) m_markers.size();
343  }
344 
349  void SetAuxOrigin( const wxPoint& aPoint ) { m_designSettings.m_AuxOrigin = aPoint; }
350  const wxPoint& GetAuxOrigin() const { return m_designSettings.m_AuxOrigin; }
351 
356  void SetGridOrigin( const wxPoint& aPoint ) { m_designSettings.m_GridOrigin = aPoint; }
357  const wxPoint& GetGridOrigin() const { return m_designSettings.m_GridOrigin; }
358 
364  {
365  m_highLight.Clear();
366  m_highLightPrevious.Clear();
367  }
368 
373  int GetHighLightNetCode() const { return m_highLight.m_netCode; }
374 
379  void SetHighLightNet( int aNetCode)
380  {
381  m_highLight.m_netCode = aNetCode;
382  }
383 
388  bool IsHighLightNetON() const { return m_highLight.m_highLightOn; }
389 
394  void HighLightOFF() { m_highLight.m_highLightOn = false; }
395 
401  void HighLightON() { m_highLight.m_highLightOn = true; }
402 
407  void PushHighLight();
408 
413  void PopHighLight();
414 
419  int GetCopperLayerCount() const;
420 
421  void SetCopperLayerCount( int aCount );
422 
429  LSET GetEnabledLayers() const;
430 
437  void SetEnabledLayers( LSET aLayerMask );
438 
446  bool IsLayerEnabled( PCB_LAYER_ID aLayer ) const
447  {
448  return m_designSettings.IsLayerEnabled( aLayer );
449  }
450 
458  bool IsLayerVisible( PCB_LAYER_ID aLayer ) const
459  {
460  return m_designSettings.IsLayerVisible( aLayer );
461  }
462 
469  LSET GetVisibleLayers() const;
470 
477  void SetVisibleLayers( LSET aLayerMask );
478 
479  // these 2 functions are not tidy at this time, since there are PCB_LAYER_IDs that
480  // are not stored in the bitmap.
481 
489  int GetVisibleElements() const;
490 
498  void SetVisibleElements( int aMask );
499 
505  void SetVisibleAlls();
506 
515  bool IsElementVisible( GAL_LAYER_ID aLayer ) const;
516 
524  void SetElementVisibility( GAL_LAYER_ID aLayer, bool aNewState );
525 
533  bool IsModuleLayerVisible( PCB_LAYER_ID aLayer );
534 
540  {
541  // remove const-ness with cast.
542  return (BOARD_DESIGN_SETTINGS&) m_designSettings;
543  }
544 
549  void SetDesignSettings( const BOARD_DESIGN_SETTINGS& aDesignSettings )
550  {
551  m_designSettings = aDesignSettings;
552  }
553 
554  const PAGE_INFO& GetPageSettings() const { return m_paper; }
555  void SetPageSettings( const PAGE_INFO& aPageSettings ) { m_paper = aPageSettings; }
556 
557  const PCB_PLOT_PARAMS& GetPlotOptions() const { return m_plotOptions; }
558  void SetPlotOptions( const PCB_PLOT_PARAMS& aOptions ) { m_plotOptions = aOptions; }
559 
560  TITLE_BLOCK& GetTitleBlock() { return m_titles; }
561  void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) { m_titles = aTitleBlock; }
562 
563  const ZONE_SETTINGS& GetZoneSettings() const { return m_zoneSettings; }
564  void SetZoneSettings( const ZONE_SETTINGS& aSettings ) { m_zoneSettings = aSettings; }
565 
566  wxString GetSelectMenuText( EDA_UNITS_T aUnits ) const override;
567 
572  const COLORS_DESIGN_SETTINGS& Colors() const { return *m_colorsSettings; }
573 
578  void SetColorsSettings( COLORS_DESIGN_SETTINGS* aColorsSettings )
579  {
580  m_colorsSettings = aColorsSettings;
581  }
597  bool GetBoardPolygonOutlines( SHAPE_POLY_SET& aOutlines,
598  wxString* aErrorText = nullptr, wxPoint* aErrorLocation = nullptr );
599 
611  void ConvertBrdLayerToPolygonalContours( PCB_LAYER_ID aLayer, SHAPE_POLY_SET& aOutlines );
612 
623  const PCB_LAYER_ID GetLayerID( const wxString& aLayerName ) const;
624 
635  const wxString GetLayerName( PCB_LAYER_ID aLayer ) const;
636 
646  bool SetLayerName( PCB_LAYER_ID aLayer, const wxString& aLayerName );
647 
659  static wxString GetStandardLayerName( PCB_LAYER_ID aLayerId )
660  {
661  // a BOARD's standard layer name is the PCB_LAYER_ID fixed name
662  return LSET::Name( aLayerId );
663  }
664 
673  bool SetLayerDescr( PCB_LAYER_ID aIndex, const LAYER& aLayer );
674 
683  LAYER_T GetLayerType( PCB_LAYER_ID aLayer ) const;
684 
693  bool SetLayerType( PCB_LAYER_ID aLayer, LAYER_T aLayerType );
694 
696  int GetNumSegmTrack() const;
697 
699  int GetNumSegmZone() const;
700 
706  unsigned GetNodesCount( int aNet = -1 );
707 
712  unsigned GetUnconnectedNetCount() const;
713 
718  unsigned GetPadCount();
719 
724  D_PAD* GetPad( unsigned aIndex ) const;
725 
733  const std::vector<D_PAD*> GetPads();
734 
736  {
737  m_NetInfo.buildListOfNets();
738  }
739 
746  NETINFO_ITEM* FindNet( int aNetcode ) const;
747 
754  NETINFO_ITEM* FindNet( const wxString& aNetname ) const;
755 
757  {
758  return m_NetInfo;
759  }
760 
761 #ifndef SWIG
762 
767  {
768  return m_NetInfo.begin();
769  }
770 
776  {
777  return m_NetInfo.end();
778  }
779 #endif
780 
785  unsigned GetNetCount() const
786  {
787  return m_NetInfo.GetNetCount();
788  }
789 
796  EDA_RECT ComputeBoundingBox( bool aBoardEdgesOnly = false ) const;
797 
798  const EDA_RECT GetBoundingBox() const override
799  {
800  return ComputeBoundingBox( false );
801  }
802 
811  {
812  return ComputeBoundingBox( true );
813  }
814 
815  void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
816 
825  void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC,
826  GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset ) override;
827 
837  void DrawHighLight( EDA_DRAW_PANEL* aDrawPanel, wxDC* aDC, int aNetCode );
838 
852  SEARCH_RESULT Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] ) override;
853 
863  MODULE* FindModuleByReference( const wxString& aReference ) const;
864 
874  MODULE* FindModule( const wxString& aRefOrTimeStamp, bool aSearchByTimeStamp = false ) const;
875 
908  void ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
909  std::vector<MODULE*>* aNewFootprints, REPORTER& aReporter );
910 
911  void updateComponentPadConnections( NETLIST& aNetlist, MODULE* footprint,
912  COMPONENT* component, REPORTER& aReporter );
920  int SortedNetnamesList( wxArrayString& aNames, bool aSortbyPadsCount );
921 
929  void SynchronizeNetsAndNetClasses();
930 
931  /***************************************************************************/
932 
933  wxString GetClass() const override
934  {
935  return wxT( "BOARD" );
936  }
937 
938 #if defined(DEBUG)
939  void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
940 #endif
941 
942 
943  /*************************/
944  /* Copper Areas handling */
945  /*************************/
946 
958  ZONE_CONTAINER* HitTestForAnyFilledArea( const wxPoint& aRefPos,
959  PCB_LAYER_ID aStartLayer,
960  PCB_LAYER_ID aEndLayer,
961  int aNetCode );
962 
967  void RedrawAreasOutlines( EDA_DRAW_PANEL* aPanel,
968  wxDC* aDC,
969  GR_DRAWMODE aDrawMode,
970  PCB_LAYER_ID aLayer );
971 
976  void RedrawFilledAreas( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDrawMode,
977  PCB_LAYER_ID aLayer );
978 
989  int SetAreasNetCodesFromNetNames( void );
990 
997  ZONE_CONTAINER* GetArea( int index ) const
998  {
999  if( (unsigned) index < m_ZoneDescriptorList.size() )
1000  return m_ZoneDescriptorList[index];
1001 
1002  return NULL;
1003  }
1004 
1011  int GetAreaIndex( const ZONE_CONTAINER* aArea ) const
1012  {
1013  for( int ii = 0; ii < GetAreaCount(); ii++ ) // Search for aArea in list
1014  {
1015  if( aArea == GetArea( ii ) ) // Found !
1016  return ii;
1017  }
1018 
1019  return -1;
1020  }
1021 
1026  int GetAreaCount() const
1027  {
1028  return (int) m_ZoneDescriptorList.size();
1029  }
1030 
1031  /* Functions used in test, merge and cut outlines */
1032 
1044  ZONE_CONTAINER* AddArea( PICKED_ITEMS_LIST* aNewZonesList, int aNetcode,
1045  PCB_LAYER_ID aLayer, wxPoint aStartPointPosition, int aHatch );
1046 
1057  ZONE_CONTAINER* InsertArea( int aNetcode, int aAreaIdx, PCB_LAYER_ID aLayer,
1058  int aCornerX, int aCornerY, int aHatch );
1059 
1069  bool NormalizeAreaPolygon( PICKED_ITEMS_LIST* aNewZonesList, ZONE_CONTAINER* aCurrArea );
1070 
1081  bool OnAreaPolygonModified( PICKED_ITEMS_LIST* aModifiedZonesList,
1082  ZONE_CONTAINER* modified_area );
1083 
1094  bool CombineAllAreasInNet( PICKED_ITEMS_LIST* aDeletedList,
1095  int aNetCode,
1096  bool aUseLocalFlags );
1097 
1105  void RemoveArea( PICKED_ITEMS_LIST* aDeletedList, ZONE_CONTAINER* area_to_remove );
1106 
1112  bool TestAreaIntersections( ZONE_CONTAINER* area_to_test );
1113 
1122  bool TestAreaIntersection( ZONE_CONTAINER* area_ref, ZONE_CONTAINER* area_to_test );
1123 
1135  bool CombineAreas( PICKED_ITEMS_LIST* aDeletedList,
1136  ZONE_CONTAINER* area_ref,
1137  ZONE_CONTAINER* area_to_combine );
1138 
1151  VIA* GetViaByPosition( const wxPoint& aPosition,
1152  PCB_LAYER_ID aLayer = PCB_LAYER_ID( -1 ) ) const;
1153 
1162  std::list<TRACK*> GetTracksByPosition( const wxPoint& aPosition, PCB_LAYER_ID aLayer = PCB_LAYER_ID( -1 ) ) const;
1163 
1172  D_PAD* GetPad( const wxPoint& aPosition, LSET aLayerMask );
1173  D_PAD* GetPad( const wxPoint& aPosition )
1174  {
1175  return GetPad( aPosition, LSET().set() );
1176  }
1177 
1186  D_PAD* GetPad( TRACK* aTrace, ENDPOINT_T aEndPoint );
1187 
1198  D_PAD* GetPadFast( const wxPoint& aPosition, LSET aLayerMask );
1199 
1215  D_PAD* GetPad( std::vector<D_PAD*>& aPadList, const wxPoint& aPosition, LSET aLayerMask );
1216 
1223  void PadDelete( D_PAD* aPad );
1224 
1237  void GetSortedPadListByXthenYCoord( std::vector<D_PAD*>& aVector, int aNetCode = -1 );
1238 
1252  TRACK* GetVisibleTrack( TRACK* aStartingTrace, const wxPoint& aPosition, LSET aLayerSet ) const;
1253 
1280  TRACK* MarkTrace( TRACK* aTrackList, TRACK* aTrace, int* aCount, double* aTraceLength,
1281  double* aInPackageLength, bool aReorder );
1282 
1290  TRACKS TracksInNet( int aNetCode );
1291 
1309  TRACKS TracksInNetBetweenPoints( const wxPoint& aStartPos, const wxPoint& aGoalPos, int aNetCode );
1310 
1325  MODULE* GetFootprint( const wxPoint& aPosition, PCB_LAYER_ID aActiveLayer,
1326  bool aVisibleOnly, bool aIgnoreLocked = false );
1327 
1341  BOARD_CONNECTED_ITEM* GetLockPoint( const wxPoint& aPosition, LSET aLayerMask );
1342 
1360  TRACK* CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS_LIST* aList );
1361 
1366  void ClearAllNetCodes();
1367 
1368  void SanitizeNetcodes();
1369 };
1370 
1371 #endif // CLASS_BOARD_H_
void SetColorsSettings(COLORS_DESIGN_SETTINGS *aColorsSettings)
Function SetColorsSettings.
Definition: class_board.h:578
KICAD_T Type() const
Function Type()
Definition: base_struct.h:201
Wrapper class, so you can iterate through NETINFO_ITEM*s, not std::pair<int/wxString, NETINFO_ITEM*>
Definition: netinfo.h:486
void SetFileFormatVersionAtLoad(int aVersion)
Definition: class_board.h:281
D_PAD * GetPad(const wxPoint &aPosition)
Definition: class_board.h:1173
void BuildListOfNets()
Definition: class_board.h:735
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
Definition: class_board.h:798
Class ZONE_CONTAINER handles a list of polygons defining a copper zone.
Definition: class_zone.h:59
NETINFO_LIST::iterator BeginNets() const
Function BeginNets.
Definition: class_board.h:766
void SetZoneSettings(const ZONE_SETTINGS &aSettings)
Definition: class_board.h:564
MARKER_PCB * GetMARKER(int index) const
Function GetMARKER returns the MARKER at a given index.
Definition: class_board.h:328
void SetElementVisibility(GAL_LAYER_ID aElement, bool aNewState)
Function SetElementVisibility changes the visibility of an element category.
static bool ClassOf(const EDA_ITEM *aItem)
Definition: class_board.h:231
const ZONE_SETTINGS & GetZoneSettings() const
Definition: class_board.h:563
Definition: typeinfo.h:85
wxPoint m_GridOrigin
origin for grid offsets
void SetGridOrigin(const wxPoint &aPoint)
Function SetGridOrigin sets the origin point of the grid.
Definition: class_board.h:356
BOARD(const BOARD &aOther)
Definition: class_board.h:218
wxString m_name
The name of the layer, there should be no spaces in this name.
Definition: class_board.h:113
const wxPoint & GetGridOrigin() const
Definition: class_board.h:357
wxString m_fileName
the board filename
Definition: class_board.h:177
Handle colors used to draw all items or layers.
void SetPosition(wxString aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock)
Definition: class_board.h:561
PAGE_INFO m_paper
Definition: class_board.h:198
DLIST< BOARD_ITEM > & DrawingsList()
Definition: class_board.h:261
bool IsLayerEnabled(PCB_LAYER_ID aLayer) const
Function IsLayerEnabled is a proxy function that calls the correspondent function in m_BoardSettings ...
Definition: class_board.h:446
void SetPageSettings(const PAGE_INFO &aPageSettings)
Definition: class_board.h:555
LAYER_T m_type
The type of the layer.
Definition: class_board.h:115
COLORS_DESIGN_SETTINGS * m_colorsSettings
Definition: class_board.h:197
bool IsLayerEnabled(PCB_LAYER_ID aLayerId) const
Function IsLayerEnabled tests whether a given layer is enabled.
void ResetHighLight()
Function ResetHighLight Reset all high light data to the init state.
Definition: class_board.h:363
ZONE_CONTAINER * m_CurrentZoneContour
zone contour currently in progress
Definition: class_board.h:264
unsigned GetNetCount() const
Function GetNetCount.
Definition: netinfo.h:442
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
void HighLightOFF()
Function HighLightOFF Disable highlight.
Definition: class_board.h:394
LAYER()
Definition: class_board.h:89
BOARD & operator=(const BOARD &aOther)
Definition: class_board.h:224
HIGH_LIGHT_INFO m_highLight
Definition: class_board.h:188
NETINFO_LIST m_NetInfo
net info list (name, design constraints ..
Definition: class_board.h:201
bool IsLayerVisible(PCB_LAYER_ID aLayerId) const
Function IsLayerVisible tests whether a given layer is visible.
Class REPORTER is a pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:61
HIGH_LIGHT_INFO m_highLightPrevious
Definition: class_board.h:189
NETINFO_LIST::iterator EndNets() const
Function EndNets.
Definition: class_board.h:775
Class TITLE_BLOCK holds the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:40
Class BOARD_CONNECTED_ITEM is a base class derived from BOARD_ITEM for items that can be connected an...
PCB_PLOT_PARAMS m_plotOptions
Definition: class_board.h:200
void SetVisibleAlls()
Function SetVisibleAlls Set the status of all visible element categories and layers to VISIBLE...
void SetAuxOrigin(const wxPoint &aPoint)
Function SetAuxOrigin sets the origin point used for plotting.
Definition: class_board.h:349
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
ENDPOINT_T
Flag used in locate routines (from which endpoint work)
Definition: pcbnew.h:58
static const char * ShowType(LAYER_T aType)
Function ShowType converts a LAYER_T enum to a const char*.
const EDA_RECT GetBoardEdgesBoundingBox() const
Function GetBoardEdgesBoundingBox Returns the board bounding box calculated using exclusively the boa...
Definition: class_board.h:810
const INSPECTOR_FUNC & INSPECTOR
Definition: base_struct.h:102
ZONE_SETTINGS m_zoneSettings
Definition: class_board.h:196
bool IsElementVisible(GAL_LAYER_ID aElement) const
Function IsElementVisible tests whether a given element category is visible.
PCB_LAYER_ID
A quick note on layer IDs:
Class LSET is a set of PCB_LAYER_IDs.
Class NETLIST stores all of information read from a netlist along with the flags used to update the N...
Definition: pcb_netlist.h:214
DLIST_ITERATOR_WRAPPER< MODULE > Modules()
Definition: class_board.h:255
static const wxChar * Name(PCB_LAYER_ID aLayerId)
Function Name returns the fixed name association with aLayerId.
Definition: lset.cpp:73
Class NETINFO_LIST is a container class for NETINFO_ITEM elements, which are the nets.
Definition: netinfo.h:415
const wxString & GetFileName() const
Definition: class_board.h:238
GR_DRAWMODE
Drawmode. Compositing mode plus a flag or two.
Definition: gr_basic.h:37
Class SHAPE_POLY_SET.
const COLORS_DESIGN_SETTINGS & Colors() const
Function GetColorSettings.
Definition: class_board.h:572
Class PAGE_INFO describes the page size and margins of a paper page on which to eventually print or p...
Definition: page_info.h:54
bool IsEmpty() const
Definition: class_board.h:273
DLIST< SEGZONE > m_SegZoneDeprecated
Definition: class_board.h:251
LAYER_T
Enum LAYER_T gives the allowed types of layers, same as Specctra DSN spec.
Definition: class_board.h:73
TITLE_BLOCK m_titles
text in lower right of screen and plots
Definition: class_board.h:199
const PCB_PLOT_PARAMS & GetPlotOptions() const
Definition: class_board.h:557
bool m_visible
Definition: class_board.h:117
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Function GetDesignSettings.
Definition: class_board.h:539
#define DECL_VEC_FOR_SWIG(TypeName, MemberType)
Declare a std::vector but no swig template.
Definition: macros.h:146
DLIST< BOARD_ITEM > m_Drawings
Definition: class_board.h:245
void SetDesignSettings(const BOARD_DESIGN_SETTINGS &aDesignSettings)
Function SetDesignSettings.
Definition: class_board.h:549
int GetAreaCount() const
Function GetAreaCount.
Definition: class_board.h:1026
MARKERS m_markers
MARKER_PCBs for clearance problems, owned by pointer.
Definition: class_board.h:180
void SetFileName(const wxString &aFileName)
Definition: class_board.h:236
void SetPlotOptions(const PCB_PLOT_PARAMS &aOptions)
Definition: class_board.h:558
Class PICKED_ITEMS_LIST is a holder to handle information on schematic or board items.
static LAYER_T ParseType(const char *aType)
Function ParseType converts a string to a LAYER_T.
Class PCB_PLOT_PARAMS handles plot parameters and options when plotting/printing a board...
NETINFO_LIST & GetNetInfo()
Definition: class_board.h:756
const PAGE_INFO & GetPageSettings() const
Definition: class_board.h:554
Pad object description.
int GetFileFormatVersionAtLoad() const
Definition: class_board.h:282
void HighLightON()
Function HighLightON Enable highlight.
Definition: class_board.h:401
Class COMPONENT is used to store components and all of their related information found in a netlist...
Definition: pcb_netlist.h:83
Class ZONE_SETTINGS handles zones parameters.
Definition: zone_settings.h:48
const wxPoint & GetAuxOrigin() const
Definition: class_board.h:350
void SetHighLightNet(int aNetCode)
Function SetHighLightNet.
Definition: class_board.h:379
void clear()
Definition: class_board.h:94
Class NETINFO_ITEM handles the data for a net.
Definition: netinfo.h:69
iterator begin() const
Definition: netinfo.h:532
ZONE_CONTAINERS & Zones()
Definition: class_board.h:257
TITLE_BLOCK & GetTitleBlock()
Definition: class_board.h:560
ZONE_CONTAINER * GetArea(int index) const
Function GetArea returns the Area (Zone Container) at a given index.
Definition: class_board.h:997
Board layer functions and definitions.
int m_fileFormatVersionAtLoad
the version loaded from the file
Definition: class_board.h:191
iterator end() const
Definition: netinfo.h:537
Class LAYER holds information pertinent to a layer of a BOARD.
Definition: class_board.h:87
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:171
DLIST< MODULE > m_Modules
Definition: class_board.h:249
ZONE_CONTAINERS m_ZoneDescriptorList
edge zone descriptors, owned by pointer.
Definition: class_board.h:183
std::shared_ptr< CONNECTIVITY_DATA > m_connectivity
Definition: class_board.h:193
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
Class PCB_EDIT_FRAME is the main frame for Pcbnew.
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:154
The common library.
wxString GetClass() const override
Function GetClass returns the class name.
Definition: class_board.h:933
Class COLORS_DESIGN_SETTINGS is a list of color settings for designs in Pcbnew.
unsigned GetCount() const
Function GetCount returns the number of elements in the list.
Definition: dlist.h:126
bool IsHighLightNetON() const
Function IsHighLightNetON.
Definition: class_board.h:388
DLIST_ITERATOR_WRAPPER< TRACK > Tracks()
Definition: class_board.h:254
int GetHighLightNetCode() const
Function GetHighLightNetCode.
Definition: class_board.h:373
DLIST< TRACK > m_Track
Definition: class_board.h:250
BOARD_DESIGN_SETTINGS m_designSettings
Definition: class_board.h:195
Abstract interface for BOARD_ITEMs capable of storing other items inside.
int m_number
Definition: class_board.h:119
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
SEARCH_RESULT
Definition: base_struct.h:66
int GetAreaIndex(const ZONE_CONTAINER *aArea) const
Function GetAreaIndex returns the Area Index for the given Zone Container.
Definition: class_board.h:1011
std::shared_ptr< CONNECTIVITY_DATA > GetConnectivity() const
Function GetConnectivity() returns list of missing connections between components/tracks.
Definition: class_board.h:297
wxPoint m_AuxOrigin
origin for plot exports
class PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer...
EDA_UNITS_T
Definition: common.h:159
void buildListOfNets()
Function buildListOfNets builds or rebuilds the list of NETINFO_ITEMs The list is sorted by names...
DLIST_ITERATOR_WRAPPER< BOARD_ITEM > Drawings()
Definition: class_board.h:256
int GetMARKERCount() const
Function GetMARKERCount.
Definition: class_board.h:340
unsigned GetNetCount() const
Function GetNetCount.
Definition: class_board.h:785
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Function GetStandardLayerName returns an "English Standard" name of a PCB layer when given aLayerNumb...
Definition: class_board.h:659
Class BOARD_DESIGN_SETTINGS contains design settings for a BOARD object.
bool IsLayerVisible(PCB_LAYER_ID aLayer) const
Function IsLayerVisible is a proxy function that calls the correspondent function in m_BoardSettings ...
Definition: class_board.h:458
int m_Status_Pcb
Flags used in ratsnest calculation and update.
Definition: class_board.h:241