KiCad PCB EDA Suite
GERBER_COLLECTOR Class Reference

Use when the right click button is pressed or when the select tool is in effect. More...

#include <gerber_collectors.h>

Inheritance diagram for GERBER_COLLECTOR:
COLLECTOR

Public Types

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

Public Member Functions

 GERBER_COLLECTOR ()
 
EDA_ITEMoperator[] (int ndx) const override
 Overload the [](int) operator to return a EDA_ITEM* instead of an EDA_ITEM* type. More...
 
INSPECT_RESULT Inspect (EDA_ITEM *testItem, void *testData) override
 The examining function within the INSPECTOR which is passed to the Iterate function. More...
 
void Collect (EDA_ITEM *aItem, const std::vector< KICAD_T > &aScanTypes, const VECTOR2I &aRefPos)
 Scan an EDA_ITEM using this class's Inspector method, which does the collection. 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 std::vector< KICAD_T > &aTypes)
 Record the list of KICAD_T types to consider for collection by the Inspect() function. More...
 
void SetRefPos (const VECTOR2I &aRefPos)
 
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
 
std::vector< KICAD_Tm_scanTypes
 
INSPECTOR_FUNC m_inspector
 
VECTOR2I m_refPos
 

Detailed Description

Use when the right click button is pressed or when the select tool is in effect.

Definition at line 28 of file gerber_collectors.h.

Member Typedef Documentation

◆ CITER

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

Definition at line 71 of file collector.h.

◆ ITER

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

Definition at line 70 of file collector.h.

Constructor & Destructor Documentation

◆ GERBER_COLLECTOR()

GERBER_COLLECTOR::GERBER_COLLECTOR ( )
inline

Definition at line 31 of file gerber_collectors.h.

32 {
34 }
void SetScanTypes(const std::vector< KICAD_T > &aTypes)
Record the list of KICAD_T types to consider for collection by the Inspect() function.
Definition: collector.h:211
@ GERBER_DRAW_ITEM_T
Definition: typeinfo.h:215
@ GERBER_IMAGE_T
Definition: typeinfo.h:216
@ GERBER_LAYOUT_T
Definition: typeinfo.h:214

References GERBER_DRAW_ITEM_T, GERBER_IMAGE_T, GERBER_LAYOUT_T, and COLLECTOR::SetScanTypes().

Member Function Documentation

◆ Append()

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 73 of file collector.h.

73{ return m_list.begin(); }

References COLLECTOR::m_list.

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 75 of file collector.h.

75{ return m_list.cbegin(); }

References COLLECTOR::m_list.

◆ Collect()

void GERBER_COLLECTOR::Collect ( EDA_ITEM aItem,
const std::vector< KICAD_T > &  aScanTypes,
const VECTOR2I aRefPos 
)

Scan an EDA_ITEM using this class's Inspector method, which does the collection.

Parameters
aItemAn EDA_ITEM to scan
aScanTypesA list of KICAD_Ts that specs what is to be collected and the priority order of the resultant collection in "m_list".
aRefPosA VECTOR2I to use in hit-testing.

Definition at line 39 of file gerber_collectors.cpp.

41{
42 Empty(); // empty the collection, primary criteria list
43
44 SetScanTypes( aScanTypes );
45
46 // remember where the snapshot was taken from and pass refPos to
47 // the Inspect() function.
48 SetRefPos( aRefPos );
49
50 aItem->Visit( m_inspector, nullptr, m_scanTypes );
51}
INSPECTOR_FUNC m_inspector
Definition: collector.h:244
void Empty()
Clear the list.
Definition: collector.h:89
void SetRefPos(const VECTOR2I &aRefPos)
Definition: collector.h:213
std::vector< KICAD_T > m_scanTypes
Definition: collector.h:243
virtual INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes)
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:91

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

Referenced by GERBVIEW_SELECTION_TOOL::selectPoint().

◆ Combine()

void COLLECTOR::Combine ( )
inlineinherited

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

Definition at line 140 of file collector.h.

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

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

Referenced by 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 221 of file collector.h.

222 {
223 int cnt = 0;
224
225 for( size_t i = 0; i < m_list.size(); i++ )
226 {
227 if( m_list[i]->Type() == aType )
228 cnt++;
229 }
230
231 return cnt;
232 }

References COLLECTOR::m_list.

Referenced by ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty()

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 74 of file collector.h.

74{ return m_list.end(); }

References COLLECTOR::m_list.

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 76 of file collector.h.

76{ return m_list.cend(); }

References COLLECTOR::m_list.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Return the number of objects in the list.

Definition at line 81 of file collector.h.

82 {
83 return (int) m_list.size();
84 }

References COLLECTOR::m_list.

Referenced by BOARD_EDITOR_CONTROL::AssignNetclass(), BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), EDIT_TOOL::ChangeTrackWidth(), EE_SELECTION_TOOL::CollectHits(), connectedItemFilter(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), CONVERT_TOOL::CreateLines(), SCH_EDIT_TOOL::DeleteItemCursor(), PCB_CONTROL::DeleteItemCursor(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), SELECTION_TOOL::doSelectionMenu(), EDIT_TOOL::Drag(), PAD_TOOL::EnumeratePads(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectedItems(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_SELECTION_TOOL::FilterCollectorForMarkers(), EDIT_TOOL::FootprintFilter(), 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(), EE_SELECTION_TOOL::GuessSelectionCandidates(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), BOARD_INSPECTION_TOOL::highlightNet(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), EE_COLLECTOR::IsCorner(), EE_SELECTION_TOOL::Main(), DSN::SPECCTRA_DB::makeIMAGE(), EE_SELECTION_TOOL::narrowSelection(), ROUTER_TOOL::NeighboringSegmentFilter(), COLLECTOR::operator[](), EE_COLLECTOR::operator[](), operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PackAndMoveFootprints(), EDIT_TOOL::PadFilter(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::selectionContains(), GERBVIEW_SELECTION_TOOL::selectPoint(), PL_SELECTION_TOOL::SelectPoint(), PCB_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::selectPoint(), EDIT_TOOL::Swap(), 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 132 of file collector.h.

133 {
134 return !m_backupList.empty();
135 }

References COLLECTOR::m_backupList.

Referenced by 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 195 of file collector.h.

196 {
197 for( size_t i = 0; i < m_list.size(); i++ )
198 {
199 if( m_list[i] == aItem )
200 return true;
201 }
202
203 return false;
204 }

References COLLECTOR::m_list.

Referenced by EE_SELECTION_TOOL::CollectHits(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), and PCB_SELECTION_TOOL::FilterCollectorForHierarchy().

◆ Inspect()

INSPECT_RESULT GERBER_COLLECTOR::Inspect ( EDA_ITEM testItem,
void *  testData 
)
overridevirtual

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

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.
Parameters
testItemis an EDA_ITEM to examine.
testDatais not used here.
Returns
SEARCH_QUIT if the iterator is to stop the scan, else SCAN_CONTINUE.

Reimplemented from COLLECTOR.

Definition at line 30 of file gerber_collectors.cpp.

31{
32 if( testItem->HitTest( m_refPos ) )
33 Append( testItem );
34
36}
VECTOR2I m_refPos
Definition: collector.h:246
void Append(EDA_ITEM *item)
Add an item to the end of the list.
Definition: collector.h:99
virtual bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const
Test if aPosition is inside or on the boundary of this item.
Definition: eda_item.h:222

References COLLECTOR::Append(), CONTINUE, EDA_ITEM::HitTest(), and COLLECTOR::m_refPos.

◆ operator[]()

EDA_ITEM * GERBER_COLLECTOR::operator[] ( int  ndx) const
inlineoverridevirtual

Overload the [](int) operator to return a EDA_ITEM* instead of an EDA_ITEM* type.

Parameters
ndxThe index into the list.
Returns
the item collected or NULL.

Reimplemented from COLLECTOR.

Definition at line 42 of file gerber_collectors.h.

43 {
44 if( (unsigned)ndx < (unsigned)GetCount() )
45 return (EDA_ITEM*) m_list[ ndx ];
46
47 return nullptr;
48 }
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:81
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85

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

◆ Remove() [1/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 119 of file collector.h.

120 {
121 alg::delete_if( m_list, [&aItem]( const EDA_ITEM* aCandidate )
122 {
123 return aCandidate == aItem;
124 } );
125 }
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.

◆ Remove() [2/2]

◆ SetRefPos()

void COLLECTOR::SetRefPos ( const VECTOR2I aRefPos)
inlineinherited

Definition at line 213 of file collector.h.

213{ m_refPos = aRefPos; }

References COLLECTOR::m_refPos.

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

◆ SetScanTypes()

void COLLECTOR::SetScanTypes ( const std::vector< KICAD_T > &  aTypes)
inlineinherited

Record the list of KICAD_T types to consider for collection by the Inspect() function.

Parameters
aScanTypesA list of KICAD_Ts.

Definition at line 211 of file collector.h.

211{ m_scanTypes = aTypes; }

References COLLECTOR::m_scanTypes.

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

◆ Transfer() [1/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 162 of file collector.h.

163 {
164 for( size_t i = 0; i < m_list.size(); i++ )
165 {
166 if( m_list[i] == aItem )
167 {
168 m_list.erase( m_list.begin() + i );
169 m_backupList.push_back( aItem );
170 return;
171 }
172 }
173 }

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

◆ Transfer() [2/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 151 of file collector.h.

152 {
153 m_backupList.push_back( m_list[aIndex] );
154 m_list.erase( m_list.begin() + aIndex );
155 }

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

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

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

wxString COLLECTOR::m_MenuTitle
inherited

Definition at line 236 of file collector.h.

Referenced by SELECTION_TOOL::doSelectionMenu().

◆ m_refPos

VECTOR2I COLLECTOR::m_refPos
protectedinherited

◆ m_scanTypes

std::vector<KICAD_T> COLLECTOR::m_scanTypes
protectedinherited

◆ m_Threshold


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