KiCad PCB EDA Suite
|
Used when the right click button is pressed, or when the select tool is in effect. More...
#include <collectors.h>
Public Types | |
using | ITER = std::vector< EDA_ITEM * >::iterator |
using | CITER = std::vector< EDA_ITEM * >::const_iterator |
Public Member Functions | |
GENERAL_COLLECTOR () | |
void | Empty2nd () |
void | Append2nd (EDA_ITEM *item) |
void | SetGuide (const COLLECTORS_GUIDE *aGuide) |
Record which COLLECTORS_GUIDE to use. | |
const COLLECTORS_GUIDE * | GetGuide () const |
INSPECT_RESULT | Inspect (EDA_ITEM *aTestItem, void *aTestData) override |
The examining function within the INSPECTOR which is passed to the Iterate function. | |
void | Collect (BOARD_ITEM *aItem, const std::vector< KICAD_T > &aScanList, const VECTOR2I &aRefPos, const COLLECTORS_GUIDE &aGuide) |
Scan a BOARD_ITEM using this class's Inspector method, which does the collection. | |
BOARD_ITEM * | operator[] (int ndx) const override |
Overload the COLLECTOR::operator[](int) to return a BOARD_ITEM instead of an EDA_ITEM. | |
ITER | begin () |
CITER | begin () const |
ITER | end () |
CITER | end () const |
int | GetCount () const |
Return the number of objects in the list. | |
void | Empty () |
Clear the list. | |
void | Append (EDA_ITEM *item) |
Add an item to the end of the list. | |
void | Remove (int aIndex) |
Remove the item at aIndex (first position is 0). | |
void | Remove (const EDA_ITEM *aItem) |
Remove the item aItem (if exists in the collector). | |
bool | HasAdditionalItems () |
Test if the collector has heuristic backup items. | |
void | Combine () |
Re-combine the backup list into the main list of the collector. | |
void | Transfer (int aIndex) |
Move the item at aIndex (first position is 0) to the backup list. | |
void | Transfer (EDA_ITEM *aItem) |
Move aItem (if exists in the collector) to the backup list. | |
bool | HasItem (const EDA_ITEM *aItem) const |
Tests if aItem has already been collected. | |
void | SetScanTypes (const std::vector< KICAD_T > &aTypes) |
Record the list of KICAD_T types to consider for collection by the Inspect() function. | |
void | SetRefPos (const VECTOR2I &aRefPos) |
int | CountType (KICAD_T aType) |
Count the number of items matching aType. | |
Public Attributes | |
int | m_Threshold |
wxString | m_MenuTitle |
bool | m_MenuCancelled |
Static Public Attributes | |
static const std::vector< KICAD_T > | AllBoardItems |
A scan list for all editable board items. | |
static const std::vector< KICAD_T > | Zones |
A scan list for zones outlines only. | |
static const std::vector< KICAD_T > | BoardLevelItems |
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT, such as PAD and PCB_TEXT. | |
static const std::vector< KICAD_T > | Footprints |
A scan list for only FOOTPRINTs. | |
static const std::vector< KICAD_T > | PadsOrTracks |
A scan list for PADs, TRACKs, or VIAs. | |
static const std::vector< KICAD_T > | FootprintItems |
A scan list for primary footprint items. | |
static const std::vector< KICAD_T > | Tracks |
A scan list for only TRACKs and ARCs. | |
static const std::vector< KICAD_T > | Dimensions |
A scan list for dimensions. | |
static const std::vector< KICAD_T > | DraggableItems |
A scan list for items that can be dragged. | |
Protected Attributes | |
std::vector< EDA_ITEM * > | m_List2nd |
A place to hold collected objects which don't match precisely the search criteria, but would be acceptable if nothing else is found. | |
const COLLECTORS_GUIDE * | m_Guide |
Determine which items are to be collected by Inspect(). | |
std::vector< EDA_ITEM * > | m_list |
std::vector< EDA_ITEM * > | m_backupList |
std::vector< KICAD_T > | m_scanTypes |
INSPECTOR_FUNC | m_inspector |
VECTOR2I | m_refPos |
Used when the right click button is pressed, or when the select tool is in effect.
This class can be used by window classes such as PCB_EDIT_FRAME.
Philosophy: this class knows nothing of the context in which a BOARD is used and that means it knows nothing about which layers are visible or current, but can handle those concerns by the SetPreferredLayer() function and the SetLayerSet() function.
Definition at line 201 of file collectors.h.
|
inherited |
Definition at line 71 of file collector.h.
|
inherited |
Definition at line 70 of file collector.h.
|
inline |
Definition at line 265 of file collectors.h.
References AllBoardItems, and COLLECTOR::SetScanTypes().
|
inlineinherited |
Add an item to the end of the list.
item | An EDA_ITEM* to add. |
Definition at line 99 of file collector.h.
References COLLECTOR::m_list.
Referenced by Collect(), EE_SELECTION_TOOL::CollectHits(), SELECTION_TOOL::doSelectionMenu(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_SELECTION_TOOL::FilterCollectorForTableCells(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), EE_COLLECTOR::Inspect(), Inspect(), GERBER_COLLECTOR::Inspect(), PCB_TYPE_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ROUTER_TOOL::NeighboringSegmentFilter(), PCB_SELECTION_TOOL::RequestSelection(), PCB_SELECTION_TOOL::SelectAll(), PCB_SELECTION_TOOL::selectMultiple(), and PL_SELECTION_TOOL::SelectPoint().
|
inline |
|
inlineinherited |
Definition at line 73 of file collector.h.
References COLLECTOR::m_list.
|
inlineinherited |
Definition at line 75 of file collector.h.
References COLLECTOR::m_list.
void GENERAL_COLLECTOR::Collect | ( | BOARD_ITEM * | aItem, |
const std::vector< KICAD_T > & | aScanList, | ||
const VECTOR2I & | aRefPos, | ||
const COLLECTORS_GUIDE & | aGuide | ||
) |
Scan a BOARD_ITEM using this class's Inspector method, which does the collection.
aItem | A BOARD_ITEM to scan, may be a BOARD or FOOTPRINT, or whatever. |
aScanList | A list of KICAD_Ts that specs what is to be collected and the priority order of the resultant collection in "m_list". |
aRefPos | A wxPoint to use in hit-testing. |
aGuide | The COLLECTORS_GUIDE to use in collecting items. |
Definition at line 482 of file collectors.cpp.
References COLLECTOR::Append(), COLLECTOR::Empty(), Empty2nd(), COLLECTOR::m_inspector, m_List2nd, COLLECTOR::m_scanTypes, SetGuide(), COLLECTOR::SetRefPos(), COLLECTOR::SetScanTypes(), and EDA_ITEM::Visit().
Referenced by PAD_TOOL::EnumeratePads(), BOARD_INSPECTION_TOOL::highlightNet(), PCB_CONTROL::InteractiveDelete(), PCB_SELECTION_TOOL::Main(), DRAWING_TOOL::PlaceTuningPattern(), PCB_SELECTION_TOOL::selectAllConnectedShapes(), PCB_TEST_SELECTION_TOOL::selectPoint(), and PCB_SELECTION_TOOL::selectPoint().
|
inlineinherited |
Re-combine the backup list into the main list of the collector.
Definition at line 140 of file collector.h.
References COLLECTOR::m_backupList, and COLLECTOR::m_list.
Referenced by SELECTION_TOOL::doSelectionMenu().
|
inlineinherited |
Count the number of items matching aType.
aType | type we are interested in. |
Definition at line 221 of file collector.h.
References COLLECTOR::m_list.
Referenced by ROUTER_TOOL::NeighboringSegmentFilter().
|
inlineinherited |
Clear the list.
Definition at line 89 of file collector.h.
References COLLECTOR::m_list.
Referenced by PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), Collect(), GERBER_COLLECTOR::Collect(), EE_COLLECTOR::Collect(), SELECTION_TOOL::doSelectionMenu(), PAD_TOOL::EnumeratePads(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), and ROUTER_TOOL::NeighboringSegmentFilter().
|
inline |
|
inlineinherited |
Definition at line 74 of file collector.h.
References COLLECTOR::m_list.
|
inlineinherited |
Definition at line 76 of file collector.h.
References COLLECTOR::m_list.
|
inlineinherited |
Return the number of objects in the list.
Definition at line 81 of file collector.h.
References COLLECTOR::m_list.
Referenced by BOARD_EDITOR_CONTROL::AssignNetclass(), EDIT_TOOL::BooleanPolygons(), BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), EDIT_TOOL::ChangeTrackWidth(), EE_SELECTION_TOOL::CollectHits(), connectedItemFilter(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), CONVERT_TOOL::CreateLines(), BOARD_INSPECTION_TOOL::DiffFootprint(), SELECTION_TOOL::doSelectionMenu(), PAD_TOOL::EnumeratePads(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectedItems(), PCB_SELECTION_TOOL::FilterCollectorForFootprints(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_SELECTION_TOOL::FilterCollectorForMarkers(), PCB_SELECTION_TOOL::FilterCollectorForTableCells(), EDIT_TOOL::FootprintFilter(), EE_SELECTION_TOOL::GetNode(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), PCB_EDIT_TABLE_TOOL::getTableCellSelection(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), GROUP_TOOL::Group(), PL_SELECTION_TOOL::guessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), EDIT_TOOL::HealShapes(), BOARD_INSPECTION_TOOL::highlightNet(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), SCH_EDIT_TOOL::InteractiveDelete(), PCB_CONTROL::InteractiveDelete(), EE_COLLECTOR::IsCorner(), EE_SELECTION_TOOL::Main(), PCB_SELECTION_TOOL::Main(), DSN::SPECCTRA_DB::makeIMAGE(), EDIT_TOOL::ModifyLines(), EE_SELECTION_TOOL::narrowSelection(), ROUTER_TOOL::NeighboringSegmentFilter(), COLLECTOR::operator[](), EE_COLLECTOR::operator[](), GERBER_COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), CONVERT_TOOL::OutsetItems(), EDIT_TOOL::PackAndMoveFootprints(), EDIT_TOOL::PadFilter(), DRAWING_TOOL::PlaceTuningPattern(), PCB_SELECTION_TOOL::pruneObscuredSelectionCandidates(), GENERATOR_TOOL::RegenerateSelected(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), PCB_TEST_SELECTION_TOOL::selectPoint(), PL_SELECTION_TOOL::SelectPoint(), PCB_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::selectPoint(), EDIT_TOOL::SimplifyPolygons(), SCH_EDITOR_CONTROL::SimProbe(), SCH_EDITOR_CONTROL::SimTune(), EDIT_TOOL::Swap(), TestBoardOutlinesGraphicItems(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().
|
inline |
Definition at line 288 of file collectors.h.
References m_Guide.
Referenced by FOOTPRINT::CoverageRatio(), FOOTPRINT::GetCoverageArea(), and PCB_SELECTION_TOOL::GuessSelectionCandidates().
|
inlineinherited |
Test if the collector has heuristic backup items.
Definition at line 132 of file collector.h.
References COLLECTOR::m_backupList.
Referenced by SELECTION_TOOL::doSelectionMenu().
|
inlineinherited |
Tests if aItem has already been collected.
aItem | The EDA_ITEM* to be tested. |
Definition at line 195 of file collector.h.
References COLLECTOR::m_list.
Referenced by EE_SELECTION_TOOL::CollectHits(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), and PCB_SELECTION_TOOL::FilterCollectorForTableCells().
|
overridevirtual |
The examining function within the INSPECTOR which is passed to the Iterate function.
Search and collect all the objects which match the test data.
testItem | An EDA_ITEM to examine. |
aTestData | is not used in this class. |
Reimplemented from COLLECTOR.
Definition at line 146 of file collectors.cpp.
References COLLECTORS_GUIDE::Accuracy(), COLLECTOR::Append(), Append2nd(), B_Cu, F_Cu, BOARD_ITEM::GetLayer(), ZONE::GetLayerSet(), BOARD_ITEM::GetParentFootprint(), COLLECTORS_GUIDE::GetPreferredLayer(), FOOTPRINT::GetSide(), group, EDA_ITEM::HitTest(), FOOTPRINT::HitTest(), PCB_MARKER::HitTest(), FOOTPRINT::HitTestAccurate(), ZONE::HitTestFilledArea(), ZONE::HitTestForCorner(), ZONE::HitTestForEdge(), COLLECTORS_GUIDE::IgnoreBlindBuriedVias(), COLLECTORS_GUIDE::IgnoreFootprintsOnBack(), COLLECTORS_GUIDE::IgnoreFootprintsOnFront(), COLLECTORS_GUIDE::IgnoreFPReferences(), COLLECTORS_GUIDE::IgnoreFPTextOnBack(), COLLECTORS_GUIDE::IgnoreFPTextOnFront(), COLLECTORS_GUIDE::IgnoreFPValues(), COLLECTORS_GUIDE::IgnoreLockedItems(), COLLECTORS_GUIDE::IgnoreMicroVias(), COLLECTORS_GUIDE::IgnorePads(), COLLECTORS_GUIDE::IgnorePadsOnBack(), COLLECTORS_GUIDE::IgnorePadsOnFront(), COLLECTORS_GUIDE::IgnoreThroughVias(), COLLECTORS_GUIDE::IgnoreTracks(), COLLECTORS_GUIDE::IgnoreZoneFills(), COLLECTORS_GUIDE::IncludeSecondary(), IsBackLayer(), KIGFX::VIEW_ITEM::IsBOARD_ITEM(), IsFrontLayer(), COLLECTORS_GUIDE::IsLayerVisible(), BOARD_ITEM::IsLocked(), BOARD_ITEM::IsOnLayer(), PCB_FIELD::IsReference(), PCB_FIELD::IsValue(), KI_FALLTHROUGH, KiROUND(), m_Guide, COLLECTOR::m_refPos, pad, PCB_ARC_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FIELD_T, PCB_FOOTPRINT_T, PCB_GROUP_T, PCB_MARKER_T, PCB_PAD_T, PCB_SHAPE_T, PCB_TABLE_T, PCB_TABLECELL_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, LSET::Seq(), text, EDA_ITEM::Type(), and via.
|
inlineoverridevirtualinherited |
Overload the COLLECTOR::operator[](int) to return a BOARD_ITEM instead of an EDA_ITEM.
ndx | The index into the list. |
Reimplemented from COLLECTOR.
Definition at line 183 of file collectors.h.
References COLLECTOR::GetCount(), and COLLECTOR::m_list.
|
inlineinherited |
Remove the item aItem (if exists in the collector).
aItem | the item to be removed. |
Definition at line 119 of file collector.h.
References alg::delete_if(), and COLLECTOR::m_list.
|
inlineinherited |
Remove the item at aIndex (first position is 0).
aIndex | The index into the list. |
Definition at line 109 of file collector.h.
References COLLECTOR::m_list.
Referenced by BOARD_EDITOR_CONTROL::AssignNetclass(), EDIT_TOOL::BooleanPolygons(), connectedItemFilter(), PCB_SELECTION_TOOL::FilterCollectedItems(), PCB_SELECTION_TOOL::FilterCollectorForFootprints(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_SELECTION_TOOL::FilterCollectorForMarkers(), PCB_SELECTION_TOOL::FilterCollectorForTableCells(), EDIT_TOOL::FootprintFilter(), PCB_EDIT_TABLE_TOOL::getTableCellSelection(), GROUP_TOOL::Group(), EDIT_TOOL::HealShapes(), PCB_CONTROL::InteractiveDelete(), EDIT_TOOL::ModifyLines(), EE_SELECTION_TOOL::narrowSelection(), CONVERT_TOOL::OutsetItems(), EDIT_TOOL::PadFilter(), PCB_SELECTION_TOOL::pruneObscuredSelectionCandidates(), GENERATOR_TOOL::RegenerateSelected(), GERBVIEW_SELECTION_TOOL::selectPoint(), PCB_SELECTION_TOOL::selectPoint(), and EDIT_TOOL::SimplifyPolygons().
|
inline |
Record which COLLECTORS_GUIDE to use.
aGuide | Which guide to use in the collection. |
Definition at line 286 of file collectors.h.
References m_Guide.
Referenced by Collect(), and PCB_SELECTION_TOOL::RequestSelection().
|
inlineinherited |
Definition at line 213 of file collector.h.
References COLLECTOR::m_refPos.
Referenced by Collect(), GERBER_COLLECTOR::Collect(), and EE_COLLECTOR::Collect().
|
inlineinherited |
Record the list of KICAD_T types to consider for collection by the Inspect() function.
aScanTypes | A list of KICAD_Ts. |
Definition at line 211 of file collector.h.
References COLLECTOR::m_scanTypes.
Referenced by Collect(), GERBER_COLLECTOR::Collect(), EE_COLLECTOR::Collect(), GENERAL_COLLECTOR(), and GERBER_COLLECTOR::GERBER_COLLECTOR().
|
inlineinherited |
Move aItem (if exists in the collector) to the backup list.
aItem | the item to be moved. |
Definition at line 162 of file collector.h.
References COLLECTOR::m_backupList, and COLLECTOR::m_list.
|
inlineinherited |
Move the item at aIndex (first position is 0) to the backup list.
aIndex | The index into the list. |
Definition at line 151 of file collector.h.
References COLLECTOR::m_backupList, and COLLECTOR::m_list.
Referenced by PL_SELECTION_TOOL::guessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), and PCB_SELECTION_TOOL::GuessSelectionCandidates().
|
static |
A scan list for all editable board items.
Definition at line 222 of file collectors.h.
Referenced by GENERAL_COLLECTOR(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), PCB_CONTROL::Paste(), PCB_SELECTION_TOOL::RebuildSelection(), PCB_TEST_SELECTION_TOOL::selectPoint(), and PCB_SELECTION_TOOL::selectPoint().
|
static |
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT, such as PAD and PCB_TEXT.
Definition at line 233 of file collectors.h.
Referenced by PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), PCB_CONTROL::InteractiveDelete(), BOARD::Move(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().
|
static |
A scan list for dimensions.
Definition at line 258 of file collectors.h.
|
static |
A scan list for items that can be dragged.
Definition at line 263 of file collectors.h.
Referenced by ROUTER_TOOL::CanInlineDrag(), and EDIT_TOOL::Init().
|
static |
A scan list for primary footprint items.
Definition at line 248 of file collectors.h.
Referenced by PANEL_SETUP_LAYERS::getNonRemovableLayers(), PCB_CONTROL::InteractiveDelete(), PCB_SELECTION_TOOL::RebuildSelection(), and PCB_SELECTION_TOOL::selectPoint().
|
static |
A scan list for only FOOTPRINTs.
Definition at line 238 of file collectors.h.
|
protectedinherited |
Definition at line 241 of file collector.h.
Referenced by COLLECTOR::Combine(), COLLECTOR::HasAdditionalItems(), and COLLECTOR::Transfer().
|
protected |
Determine which items are to be collected by Inspect().
Definition at line 215 of file collectors.h.
Referenced by GetGuide(), Inspect(), and SetGuide().
|
protectedinherited |
Definition at line 244 of file collector.h.
Referenced by PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), Collect(), GERBER_COLLECTOR::Collect(), and EE_COLLECTOR::Collect().
|
protectedinherited |
Definition at line 240 of file collector.h.
Referenced by COLLECTOR::Append(), COLLECTOR::begin(), COLLECTOR::Combine(), COLLECTOR::CountType(), COLLECTOR::Empty(), COLLECTOR::end(), COLLECTOR::GetCount(), COLLECTOR::HasItem(), EE_COLLECTOR::IsCorner(), COLLECTOR::operator[](), EE_COLLECTOR::operator[](), GERBER_COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), COLLECTOR::Remove(), and COLLECTOR::Transfer().
|
protected |
A place to hold collected objects which don't match precisely the search criteria, but would be acceptable if nothing else is found.
"2nd" choice, which will be appended to the end of COLLECTOR's prime "list" at the end of the search.
Definition at line 210 of file collectors.h.
Referenced by Append2nd(), Collect(), and Empty2nd().
|
inherited |
Definition at line 237 of file collector.h.
Referenced by SELECTION_TOOL::SelectionMenu(), GERBVIEW_SELECTION_TOOL::selectPoint(), PL_SELECTION_TOOL::SelectPoint(), and EE_SELECTION_TOOL::selectPoint().
|
inherited |
Definition at line 236 of file collector.h.
Referenced by SELECTION_TOOL::doSelectionMenu().
|
protectedinherited |
Definition at line 246 of file collector.h.
Referenced by EE_COLLECTOR::Inspect(), Inspect(), GERBER_COLLECTOR::Inspect(), and COLLECTOR::SetRefPos().
|
protectedinherited |
Definition at line 243 of file collector.h.
Referenced by Collect(), GERBER_COLLECTOR::Collect(), EE_COLLECTOR::Collect(), and COLLECTOR::SetScanTypes().
|
inherited |
Definition at line 234 of file collector.h.
Referenced by EE_COLLECTOR::Collect(), EE_SELECTION_TOOL::CollectHits(), EE_SELECTION_TOOL::GetNode(), EE_SELECTION_TOOL::GuessSelectionCandidates(), EE_COLLECTOR::Inspect(), SCH_EDIT_TOOL::InteractiveDelete(), PCB_CONTROL::InteractiveDelete(), DRAWING_TOOL::PlaceTuningPattern(), EE_SELECTION_TOOL::selectPoint(), SCH_EDITOR_CONTROL::SimProbe(), and SCH_EDITOR_CONTROL::SimTune().
|
static |
A scan list for PADs, TRACKs, or VIAs.
Definition at line 243 of file collectors.h.
|
static |
A scan list for only TRACKs and ARCs.
Definition at line 253 of file collectors.h.
Referenced by BOARD::TracksInNet().
|
static |
A scan list for zones outlines only.
Definition at line 227 of file collectors.h.