KiCad PCB EDA Suite
PCB_LAYER_COLLECTOR Class Reference

Collect all BOARD_ITEM objects on a given layer. More...

#include <collectors.h>

Inheritance diagram for PCB_LAYER_COLLECTOR:
PCB_COLLECTOR COLLECTOR

Public Types

using ITER = std::vector< EDA_ITEM * >::iterator
 
using CITER = std::vector< EDA_ITEM * >::const_iterator
 

Public Member Functions

 PCB_LAYER_COLLECTOR (PCB_LAYER_ID aLayerId=UNDEFINED_LAYER)
 
void SetLayerId (PCB_LAYER_ID aLayerId)
 
SEARCH_RESULT Inspect (EDA_ITEM *testItem, void *testData) override
 The examining function within the INSPECTOR which is passed to the iterate function. More...
 
void Collect (BOARD_ITEM *aBoard, const KICAD_T aScanList[])
 Tests a BOARD_ITEM using this class's Inspector method, which does the collection. More...
 
BOARD_ITEMoperator[] (int ndx) const override
 Overload the COLLECTOR::operator[](int) to return a BOARD_ITEM instead of an EDA_ITEM. More...
 
ITER begin ()
 
CITER begin () const
 
ITER end ()
 
CITER end () const
 
int GetCount () const
 Function GetCount returns the number of objects in the list. More...
 
void Empty ()
 Function Empty sets the list to empty. More...
 
void Append (EDA_ITEM *item)
 Function Append adds an item to the end of the list. More...
 
void Remove (int aIndex)
 Function Remove removes the item at aIndex (first position is 0);. More...
 
void Remove (const EDA_ITEM *aItem)
 Function Remove removes the item aItem (if exists in the collector). More...
 
bool HasAdditionalItems ()
 Test if the collector has heuristic backup items. More...
 
void Combine ()
 Re-combines the backup list into the main list of the collector. More...
 
void Transfer (int aIndex)
 Moves the item at aIndex (first position is 0) to the backup list. More...
 
void Transfer (EDA_ITEM *aItem)
 Moves the item aItem (if exists in the collector) to the backup list. More...
 
bool HasItem (const EDA_ITEM *aItem) const
 Function HasItem tests if aItem has already been collected. More...
 
void SetScanTypes (const KICAD_T *scanTypes)
 Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() function. More...
 
void SetRefPos (const wxPoint &aRefPos)
 
const EDA_RECTGetBoundingBox () const
 
int CountType (KICAD_T aType)
 Function CountType counts the number of items matching aType. More...
 

Public Attributes

int m_Threshold
 
wxString m_MenuTitle
 
bool m_MenuCancelled
 

Protected Attributes

std::vector< EDA_ITEM * > m_list
 
std::vector< EDA_ITEM * > m_backupList
 
const KICAD_Tm_scanTypes
 
INSPECTOR_FUNC m_inspector
 
wxPoint m_refPos
 
EDA_RECT m_refBox
 

Private Attributes

PCB_LAYER_ID m_layer_id
 

Detailed Description

Collect all BOARD_ITEM objects on a given layer.

This only uses the primary object layer for comparison.

Definition at line 641 of file collectors.h.

Member Typedef Documentation

◆ CITER

using COLLECTOR::CITER = std::vector<EDA_ITEM*>::const_iterator
inherited

Definition at line 93 of file collector.h.

◆ ITER

using COLLECTOR::ITER = std::vector<EDA_ITEM*>::iterator
inherited

Definition at line 92 of file collector.h.

Constructor & Destructor Documentation

◆ PCB_LAYER_COLLECTOR()

PCB_LAYER_COLLECTOR::PCB_LAYER_COLLECTOR ( PCB_LAYER_ID  aLayerId = UNDEFINED_LAYER)
inline

Definition at line 646 of file collectors.h.

646  :
647  m_layer_id( aLayerId )
648  {
649  }
PCB_LAYER_ID m_layer_id
Definition: collectors.h:643

Member Function Documentation

◆ Append()

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 95 of file collector.h.

95 { return m_list.begin(); }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 97 of file collector.h.

97 { return m_list.cbegin(); }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

◆ Collect()

void PCB_LAYER_COLLECTOR::Collect ( BOARD_ITEM aBoard,
const KICAD_T  aScanList[] 
)

Tests a BOARD_ITEM using this class's Inspector method, which does the collection.

Parameters
aBoardThe BOARD_ITEM to scan.
aScanListThe KICAD_Ts to gather up.

Definition at line 617 of file collectors.cpp.

618 {
619  Empty();
620 
621  aBoard->Visit( m_inspector, NULL, aScanList );
622 }
void Empty()
Function Empty sets the list to empty.
Definition: collector.h:113
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...
Definition: eda_item.cpp:107
INSPECTOR_FUNC m_inspector
Definition: collector.h:61
#define NULL

References COLLECTOR::Empty(), COLLECTOR::m_inspector, NULL, and EDA_ITEM::Visit().

Referenced by PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().

◆ Combine()

void COLLECTOR::Combine ( )
inlineinherited

Re-combines the backup list into the main list of the collector.

Definition at line 165 of file collector.h.

166  {
167  std::copy( m_backupList.begin(), m_backupList.end(), std::back_inserter( m_list ) );
168  m_backupList.clear();
169  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:58

References COLLECTOR::m_backupList, and COLLECTOR::m_list.

Referenced by EE_SELECTION_TOOL::doSelectionMenu(), and SELECTION_TOOL::doSelectionMenu().

◆ CountType()

int COLLECTOR::CountType ( KICAD_T  aType)
inlineinherited

Function CountType counts the number of items matching aType.

Parameters
aTypetype we are interested in
Returns
number of occurences

Definition at line 252 of file collector.h.

253  {
254  int cnt = 0;
255  for( size_t i = 0; i < m_list.size(); i++ )
256  {
257  if( m_list[i]->Type() == aType )
258  cnt++;
259  }
260  return cnt;
261  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

Referenced by ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty()

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 96 of file collector.h.

96 { return m_list.end(); }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 98 of file collector.h.

98 { return m_list.cend(); }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

◆ GetBoundingBox()

const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 244 of file collector.h.

244 { return m_refBox; }
EDA_RECT m_refBox
Definition: collector.h:63

References COLLECTOR::m_refBox.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Function GetCount returns the number of objects in the list.

Definition at line 104 of file collector.h.

105  {
106  return (int) m_list.size();
107  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

Referenced by BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), EE_SELECTION_TOOL::collectHits(), connectedItemFilter(), FOOTPRINT::CoverageRatio(), SCH_EDIT_TOOL::DeleteItemCursor(), PCBNEW_CONTROL::DeleteItemCursor(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), EditToolSelectionFilter(), PAD_TOOL::EnumeratePads(), SELECTION_TOOL::FilterCollectedItems(), SELECTION_TOOL::FilterCollectorForGroups(), EDIT_TOOL::FootprintFilter(), DSN::SPECCTRA_DB::FromBOARD(), EE_SELECTION_TOOL::GetNode(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), PL_SELECTION_TOOL::guessSelectionCandidates(), SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), PCB_INSPECTION_TOOL::highlightNet(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), EE_COLLECTOR::IsCorner(), CONVERT_TOOL::LinesToPoly(), EE_SELECTION_TOOL::Main(), DSN::SPECCTRA_DB::makeIMAGE(), EE_SELECTION_TOOL::narrowSelection(), ROUTER_TOOL::NeighboringSegmentFilter(), EE_COLLECTOR::operator[](), GERBER_COLLECTOR::operator[](), COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PadFilter(), SELECTION_TOOL::pickSmallestComponent(), CONVERT_TOOL::PolyToLines(), CONVERT_TOOL::SegmentToArc(), PL_SELECTION_TOOL::SelectPoint(), GERBVIEW_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::selectPoint(), SELECTION_TOOL::selectPoint(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().

◆ HasAdditionalItems()

bool COLLECTOR::HasAdditionalItems ( )
inlineinherited

Test if the collector has heuristic backup items.

Returns
true if Combine() can run to bring secondary items into the list

Definition at line 157 of file collector.h.

158  {
159  return !m_backupList.empty();
160  }
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:58

References COLLECTOR::m_backupList.

Referenced by EE_SELECTION_TOOL::doSelectionMenu(), and SELECTION_TOOL::doSelectionMenu().

◆ HasItem()

bool COLLECTOR::HasItem ( const EDA_ITEM aItem) const
inlineinherited

Function HasItem tests if aItem has already been collected.

Parameters
aItemThe EDA_ITEM* to be tested.
Returns
True if aItem is already collected.

Definition at line 219 of file collector.h.

220  {
221  for( size_t i = 0; i < m_list.size(); i++ )
222  {
223  if( m_list[i] == aItem )
224  return true;
225  }
226 
227  return false;
228  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57

References COLLECTOR::m_list.

Referenced by EditToolSelectionFilter(), and SELECTION_TOOL::FilterCollectorForGroups().

◆ Inspect()

SEARCH_RESULT PCB_LAYER_COLLECTOR::Inspect ( EDA_ITEM testItem,
void *  testData 
)
overridevirtual

The examining function within the INSPECTOR which is passed to the iterate function.

Parameters
testItemAn EDA_ITEM to examine.
testDatais not used in this class.
Returns
SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan, else SCAN_CONTINUE;

Reimplemented from COLLECTOR.

Definition at line 606 of file collectors.cpp.

607 {
608  BOARD_ITEM* item = (BOARD_ITEM*) testItem;
609 
610  if( item->IsOnLayer( m_layer_id ) )
611  Append( testItem );
612 
614 }
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Definition: board_item.h:86
PCB_LAYER_ID m_layer_id
Definition: collectors.h:643
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:123
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
Definition: board_item.h:239

References COLLECTOR::Append(), CONTINUE, BOARD_ITEM::IsOnLayer(), and m_layer_id.

◆ operator[]()

BOARD_ITEM* PCB_COLLECTOR::operator[] ( int  ndx) const
inlineoverridevirtualinherited

Overload the COLLECTOR::operator[](int) to return a BOARD_ITEM instead of an EDA_ITEM.

Parameters
ndxThe index into the list.
Returns
BOARD_ITEM* - or something derived from it, or NULL.

Reimplemented from COLLECTOR.

Definition at line 222 of file collectors.h.

223  {
224  if( (unsigned)ndx < (unsigned)GetCount() )
225  return (BOARD_ITEM*) m_list[ ndx ];
226 
227  return NULL;
228  }
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Definition: board_item.h:86
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:104
#define NULL

References COLLECTOR::GetCount(), COLLECTOR::m_list, and NULL.

◆ Remove() [1/2]

void COLLECTOR::Remove ( int  aIndex)
inlineinherited

◆ Remove() [2/2]

void COLLECTOR::Remove ( const EDA_ITEM aItem)
inlineinherited

Function Remove removes the item aItem (if exists in the collector).

Parameters
aItemthe item to be removed.

Definition at line 143 of file collector.h.

144  {
145  m_list.erase( std::remove_if( m_list.begin(), m_list.end(),
146  [&aItem]( const EDA_ITEM* aCandidate )
147  {
148  return aCandidate == aItem;
149  } ),
150  m_list.end() );
151  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57
EDA_ITEM is a base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:148

References COLLECTOR::m_list.

◆ SetLayerId()

void PCB_LAYER_COLLECTOR::SetLayerId ( PCB_LAYER_ID  aLayerId)
inline

◆ SetRefPos()

void COLLECTOR::SetRefPos ( const wxPoint &  aRefPos)
inlineinherited

Definition at line 242 of file collector.h.

242 { m_refPos = aRefPos; }
wxPoint m_refPos
Definition: collector.h:62

References COLLECTOR::m_refPos.

Referenced by EE_COLLECTOR::Collect(), GERBER_COLLECTOR::Collect(), and GENERAL_COLLECTOR::Collect().

◆ SetScanTypes()

void COLLECTOR::SetScanTypes ( const KICAD_T scanTypes)
inlineinherited

Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() function.

Parameters
scanTypesAn array of KICAD_T, terminated by EOT. No copy is is made of this array (so cannot come from caller's stack).

Definition at line 237 of file collector.h.

238  {
239  m_scanTypes = scanTypes;
240  }
const KICAD_T * m_scanTypes
Definition: collector.h:60

References COLLECTOR::m_scanTypes.

Referenced by EE_COLLECTOR::Collect(), GERBER_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), EE_COLLECTOR::EE_COLLECTOR(), GENERAL_COLLECTOR::GENERAL_COLLECTOR(), and GERBER_COLLECTOR::GERBER_COLLECTOR().

◆ Transfer() [1/2]

void COLLECTOR::Transfer ( int  aIndex)
inlineinherited

Moves the item at aIndex (first position is 0) to the backup list.

Parameters
aIndexThe index into the list.

Definition at line 175 of file collector.h.

176  {
177  m_backupList.push_back( m_list[aIndex] );
178  m_list.erase( m_list.begin() + aIndex );
179  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:58

References COLLECTOR::m_backupList, and COLLECTOR::m_list.

Referenced by PL_SELECTION_TOOL::guessSelectionCandidates(), SELECTION_TOOL::GuessSelectionCandidates(), and EE_SELECTION_TOOL::GuessSelectionCandidates().

◆ Transfer() [2/2]

void COLLECTOR::Transfer ( EDA_ITEM aItem)
inlineinherited

Moves the item aItem (if exists in the collector) to the backup list.

Parameters
aItemthe item to be moved.

Definition at line 185 of file collector.h.

186  {
187  for( size_t i = 0; i < m_list.size(); i++ )
188  {
189  if( m_list[i] == aItem )
190  {
191  m_list.erase( m_list.begin() + i );
192  m_backupList.push_back( aItem );
193  return;
194  }
195  }
196  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:57
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:58

References COLLECTOR::m_backupList, and COLLECTOR::m_list.

Member Data Documentation

◆ m_backupList

std::vector<EDA_ITEM*> COLLECTOR::m_backupList
protectedinherited

◆ m_inspector

INSPECTOR_FUNC COLLECTOR::m_inspector
protectedinherited

◆ m_layer_id

PCB_LAYER_ID PCB_LAYER_COLLECTOR::m_layer_id
private

Definition at line 643 of file collectors.h.

Referenced by Inspect(), and SetLayerId().

◆ m_list

◆ m_MenuCancelled

bool COLLECTOR::m_MenuCancelled
inherited

◆ m_MenuTitle

◆ m_refBox

EDA_RECT COLLECTOR::m_refBox
protectedinherited

Definition at line 63 of file collector.h.

Referenced by COLLECTOR::GetBoundingBox().

◆ m_refPos

wxPoint COLLECTOR::m_refPos
protectedinherited

◆ m_scanTypes

const KICAD_T* COLLECTOR::m_scanTypes
protectedinherited

◆ m_Threshold


The documentation for this class was generated from the following files: