KiCad PCB EDA Suite
PCB_TYPE_COLLECTOR Class Reference

Collect all BOARD_ITEM objects of a given set of KICAD_T type(s). More...

#include <collectors.h>

Inheritance diagram for PCB_TYPE_COLLECTOR:
PCB_COLLECTOR COLLECTOR

Public Types

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

Public Member Functions

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[])
 Collect BOARD_ITEM objects 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
 Return the number of objects in the list. More...
 
void Empty ()
 Clear the list. More...
 
void Append (EDA_ITEM *item)
 Add an item to the end of the list. More...
 
void Remove (int aIndex)
 Remove the item at aIndex (first position is 0). More...
 
void Remove (const EDA_ITEM *aItem)
 Remove the item aItem (if exists in the collector). More...
 
bool HasAdditionalItems ()
 Test if the collector has heuristic backup items. More...
 
void Combine ()
 Re-combine the backup list into the main list of the collector. More...
 
void Transfer (int aIndex)
 Move the item at aIndex (first position is 0) to the backup list. More...
 
void Transfer (EDA_ITEM *aItem)
 Move aItem (if exists in the collector) to the backup list. More...
 
bool HasItem (const EDA_ITEM *aItem) const
 Tests if aItem has already been collected. More...
 
void SetScanTypes (const KICAD_T *scanTypes)
 Record 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)
 Count 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
 

Detailed Description

Collect all BOARD_ITEM objects of a given set of KICAD_T type(s).

See also
class COLLECTOR

Definition at line 614 of file collectors.h.

Member Typedef Documentation

◆ CITER

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

Definition at line 72 of file collector.h.

◆ ITER

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

Definition at line 71 of file collector.h.

Member Function Documentation

◆ Append()

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 74 of file collector.h.

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

References COLLECTOR::m_list.

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 76 of file collector.h.

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

References COLLECTOR::m_list.

◆ Collect()

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

Collect BOARD_ITEM objects 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 609 of file collectors.cpp.

610 {
611  Empty(); // empty any existing collection
612 
613  aBoard->Visit( m_inspector, nullptr, aScanList );
614 }
void Empty()
Clear the list.
Definition: collector.h:90
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:93
INSPECTOR_FUNC m_inspector
Definition: collector.h:251

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

Referenced by BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), DSN::SPECCTRA_DB::FromBOARD(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), and DSN::SPECCTRA_DB::makeIMAGE().

◆ Combine()

void COLLECTOR::Combine ( )
inlineinherited

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

Definition at line 141 of file collector.h.

142  {
143  std::copy( m_backupList.begin(), m_backupList.end(), std::back_inserter( m_list ) );
144  m_backupList.clear();
145  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:248

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

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

◆ CountType()

int COLLECTOR::CountType ( KICAD_T  aType)
inlineinherited

Count the number of items matching aType.

Parameters
aTypetype we are interested in.
Returns
number of occurrences.

Definition at line 228 of file collector.h.

229  {
230  int cnt = 0;
231 
232  for( size_t i = 0; i < m_list.size(); i++ )
233  {
234  if( m_list[i]->Type() == aType )
235  cnt++;
236  }
237 
238  return cnt;
239  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247

References COLLECTOR::m_list.

Referenced by ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty()

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 75 of file collector.h.

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

References COLLECTOR::m_list.

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 77 of file collector.h.

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

References COLLECTOR::m_list.

◆ GetBoundingBox()

const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 220 of file collector.h.

220 { return m_refBox; }
EDA_RECT m_refBox
Definition: collector.h:253

References COLLECTOR::m_refBox.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Return the number of objects in the list.

Definition at line 82 of file collector.h.

83  {
84  return (int) m_list.size();
85  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247

References COLLECTOR::m_list.

Referenced by BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), EDIT_TOOL::ChangeTrackWidth(), EE_SELECTION_TOOL::CollectHits(), connectedItemFilter(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), CONVERT_TOOL::CreateLines(), CONVERT_TOOL::CreatePolys(), SCH_EDIT_TOOL::DeleteItemCursor(), PCB_CONTROL::DeleteItemCursor(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), EDIT_TOOL::doMoveSelection(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), PCB_SELECTION_TOOL::doSelectionMenu(), EDIT_TOOL::Drag(), EDIT_TOOL::Duplicate(), PAD_TOOL::EnumeratePads(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectedItems(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), EDIT_TOOL::FootprintFilter(), DSN::SPECCTRA_DB::FromBOARD(), EE_SELECTION_TOOL::GetNode(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), GROUP_TOOL::Group(), PL_SELECTION_TOOL::guessSelectionCandidates(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), BOARD_INSPECTION_TOOL::highlightNet(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), EE_COLLECTOR::IsCorner(), EE_SELECTION_TOOL::Main(), DSN::SPECCTRA_DB::makeIMAGE(), EDIT_TOOL::MoveExact(), EE_SELECTION_TOOL::narrowSelection(), ROUTER_TOOL::NeighboringSegmentFilter(), GERBER_COLLECTOR::operator[](), EE_COLLECTOR::operator[](), COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PadFilter(), POSITION_RELATIVE_TOOL::PositionRelative(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::selectionContains(), PL_SELECTION_TOOL::SelectPoint(), GERBVIEW_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::selectPoint(), PCB_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 133 of file collector.h.

134  {
135  return !m_backupList.empty();
136  }
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:248

References COLLECTOR::m_backupList.

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

◆ HasItem()

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

Tests if aItem has already been collected.

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

Definition at line 196 of file collector.h.

197  {
198  for( size_t i = 0; i < m_list.size(); i++ )
199  {
200  if( m_list[i] == aItem )
201  return true;
202  }
203 
204  return false;
205  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247

References COLLECTOR::m_list.

Referenced by EDIT_TOOL::copyToClipboard(), EDIT_TOOL::doMoveSelection(), EDIT_TOOL::Drag(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), and POSITION_RELATIVE_TOOL::PositionRelative().

◆ Inspect()

SEARCH_RESULT PCB_TYPE_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_QUIT if the Iterator is to stop the scan, else SCAN_CONTINUE;

Reimplemented from COLLECTOR.

Definition at line 599 of file collectors.cpp.

600 {
601  // The Visit() function only visits the testItem if its type was in the
602  // the scanList, so therefore we can collect anything given to us here.
603  Append( testItem );
604 
605  return SEARCH_RESULT::CONTINUE; // always when collecting
606 }
void Append(EDA_ITEM *item)
Add an item to the end of the list.
Definition: collector.h:100

References COLLECTOR::Append(), and CONTINUE.

◆ 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
a board item or NULL.

Reimplemented from COLLECTOR.

Definition at line 221 of file collectors.h.

222  {
223  if( (unsigned)ndx < (unsigned)GetCount() )
224  return (BOARD_ITEM*) m_list[ ndx ];
225 
226  return nullptr;
227  }
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:82

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

◆ Remove() [1/2]

◆ Remove() [2/2]

void COLLECTOR::Remove ( const EDA_ITEM aItem)
inlineinherited

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

Parameters
aItemthe item to be removed.

Definition at line 120 of file collector.h.

121  {
122  alg::delete_if( m_list, [&aItem]( const EDA_ITEM* aCandidate )
123  {
124  return aCandidate == aItem;
125  } );
126  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:100
void delete_if(_Container &__c, _Function &&__f)
Deletes all values from __c for which __f returns true.
Definition: kicad_algo.h:173

References alg::delete_if(), and COLLECTOR::m_list.

◆ SetRefPos()

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

Definition at line 218 of file collector.h.

218 { m_refPos = aRefPos; }
wxPoint m_refPos
Definition: collector.h:252

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

Record 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 213 of file collector.h.

214  {
215  m_scanTypes = scanTypes;
216  }
const KICAD_T * m_scanTypes
Definition: collector.h:250

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

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

Parameters
aIndexThe index into the list.

Definition at line 152 of file collector.h.

153  {
154  m_backupList.push_back( m_list[aIndex] );
155  m_list.erase( m_list.begin() + aIndex );
156  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:248

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

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

◆ Transfer() [2/2]

void COLLECTOR::Transfer ( EDA_ITEM aItem)
inlineinherited

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

Parameters
aItemthe item to be moved.

Definition at line 163 of file collector.h.

164  {
165  for( size_t i = 0; i < m_list.size(); i++ )
166  {
167  if( m_list[i] == aItem )
168  {
169  m_list.erase( m_list.begin() + i );
170  m_backupList.push_back( aItem );
171  return;
172  }
173  }
174  }
std::vector< EDA_ITEM * > m_list
Definition: collector.h:247
std::vector< EDA_ITEM * > m_backupList
Definition: collector.h:248

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_list

◆ m_MenuCancelled

bool COLLECTOR::m_MenuCancelled
inherited

◆ m_MenuTitle

◆ m_refBox

EDA_RECT COLLECTOR::m_refBox
protectedinherited

Definition at line 253 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: