KiCad PCB EDA Suite
GENERAL_COLLECTOR Class Reference

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

#include <collectors.h>

Inheritance diagram for GENERAL_COLLECTOR:
PCB_COLLECTOR COLLECTOR

Public Types

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

Public Member Functions

 GENERAL_COLLECTOR ()
 Constructor GENERALCOLLECTOR. More...
 
void Empty2nd ()
 
void Append2nd (BOARD_ITEM *item)
 
void SetGuide (const COLLECTORS_GUIDE *aGuide)
 Record which COLLECTORS_GUIDE to use. More...
 
const COLLECTORS_GUIDEGetGuide ()
 
int GetPrimaryCount ()
 
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 *aItem, const KICAD_T aScanList[], const wxPoint &aRefPos, const COLLECTORS_GUIDE &aGuide)
 Scan a BOARD_ITEM using this class's Inspector method, which does the collection. More...
 
BOARD_ITEMoperator[] (int ndx) const
 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
 
bool IsValidIndex (int aIndex)
 Function IsValidIndex tests if aIndex is with the limits of the list of collected items. More...
 
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...
 
EDA_ITEM *const * BasePtr () const
 Function BasePtr returns the address of the first element in the array. 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 SetTimeNow ()
 
timestamp_t GetTime ()
 
void SetRefPos (const wxPoint &aRefPos)
 
const wxPoint & GetRefPos () const
 
void SetBoundingBox (const EDA_RECT &aRefBox)
 
const EDA_RECTGetBoundingBox () const
 
bool IsSimilarPointAndTime (const wxPoint &aRefPos)
 Function IsSimilarPointAndTime returns true if the given reference point is "similar" (defined here) to the internal reference point and the current time is within a few seconds of the internal m_TimeAtCollection. More...
 
int CountType (KICAD_T aType)
 Function CountType counts the number of items matching aType. More...
 

Static Public Attributes

static const KICAD_T AllBoardItems []
 A scan list for all editable board items, like PcbGeneralLocateAndDisplay() More...
 
static const KICAD_T AllButZones []
 A scan list for all editable board items, except zones. More...
 
static const KICAD_T Zones []
 A scan list for zones outlines only. More...
 
static const KICAD_T BoardLevelItems []
 A scan list for all primary board items, omitting items which are subordinate to a MODULE, such as D_PAD and TEXTEMODULE. More...
 
static const KICAD_T Modules []
 A scan list for only MODULEs. More...
 
static const KICAD_T PadsOrModules []
 A scan list for PADs or MODULEs. More...
 
static const KICAD_T PadsOrTracks []
 A scan list for PADs, TRACKs, or VIAs. More...
 
static const KICAD_T ModulesAndTheirItems []
 A scan list for MODULEs and their items (for Modedit) More...
 
static const KICAD_T ModuleItems []
 A scan list for primary module items. More...
 
static const KICAD_T Tracks []
 A scan list for only TRACKS. More...
 
static const KICAD_T LockableItems []
 A scan list for TRACKS, VIAS, MODULES. More...
 

Protected Attributes

std::vector< BOARD_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. More...
 
const COLLECTORS_GUIDEm_Guide
 Determines which items are to be collected by Inspect() More...
 
int m_PrimaryLength
 The number of items that were originally in the primary list before the m_List2nd was concatenated onto the end of it. More...
 
INSPECTOR_FUNC m_inspector
 a class common bridge into the polymorphic Inspect() More...
 
const KICAD_Tm_ScanTypes
 Which object types to scan. More...
 
std::vector< EDA_ITEM * > m_List
 A place to hold collected objects without taking ownership of their memory. More...
 
wxPoint m_RefPos
 A point to test against, and that was used to make the collection. More...
 
EDA_RECT m_RefBox
 A bounding box to test against, and that was used to make the collection. More...
 
timestamp_t m_TimeAtCollection
 The time at which the collection was made. More...
 

Detailed Description

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 245 of file collectors.h.

Member Typedef Documentation

◆ CITER

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

Definition at line 90 of file collector.h.

◆ ITER

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

Definition at line 89 of file collector.h.

Constructor & Destructor Documentation

◆ GENERAL_COLLECTOR()

GENERAL_COLLECTOR::GENERAL_COLLECTOR ( )
inline

Constructor GENERALCOLLECTOR.

Definition at line 328 of file collectors.h.

329  {
330  m_Guide = NULL;
331  m_PrimaryLength = 0;
333  }
static const KICAD_T AllBoardItems[]
A scan list for all editable board items, like PcbGeneralLocateAndDisplay()
Definition: collectors.h:272
void SetScanTypes(const KICAD_T *scanTypes)
Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() f...
Definition: collector.h:215
int m_PrimaryLength
The number of items that were originally in the primary list before the m_List2nd was concatenated on...
Definition: collectors.h:265
const COLLECTORS_GUIDE * m_Guide
Determines which items are to be collected by Inspect()
Definition: collectors.h:259

References AllBoardItems, m_Guide, m_PrimaryLength, and COLLECTOR::SetScanTypes().

Member Function Documentation

◆ Append()

void COLLECTOR::Append ( EDA_ITEM item)
inlineinherited

Function Append adds an item to the end of the list.

Parameters
itemAn EDA_ITEM* to add.

Definition at line 133 of file collector.h.

134  {
135  m_List.push_back( item );
136  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by Collect(), DIALOG_DRC_CONTROL::doSelectionMenu(), EditToolSelectionFilter(), SELECTION_TOOL::guessSelectionCandidates(), GERBER_COLLECTOR::Inspect(), LIB_COLLECTOR::Inspect(), SCH_COLLECTOR::Inspect(), Inspect(), SCH_FIND_COLLECTOR::Inspect(), SCH_TYPE_COLLECTOR::Inspect(), PCB_TYPE_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ROUTER_TOOL::NeighboringSegmentFilter(), and SELECTION_TOOL::RequestSelection().

◆ Append2nd()

void GENERAL_COLLECTOR::Append2nd ( BOARD_ITEM item)
inline

Definition at line 340 of file collectors.h.

341  {
342  m_List2nd.push_back( item );
343  }
std::vector< BOARD_ITEM * > m_List2nd
A place to hold collected objects which don't match precisely the search criteria,...
Definition: collectors.h:254

References m_List2nd.

Referenced by Inspect().

◆ BasePtr()

EDA_ITEM* const* COLLECTOR::BasePtr ( ) const
inlineinherited

Function BasePtr returns the address of the first element in the array.

Only call this if there is at least one element in the vector m_List, otherwise a C++ exception should get thrown.

Definition at line 185 of file collector.h.

186  {
187  return &m_List[0];
188  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 92 of file collector.h.

92 { return m_List.begin(); }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by SELECTION_TOOL::RequestSelection().

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 94 of file collector.h.

94 { return m_List.cbegin(); }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

◆ Collect()

void GENERAL_COLLECTOR::Collect ( BOARD_ITEM aItem,
const KICAD_T  aScanList[],
const wxPoint &  aRefPos,
const COLLECTORS_GUIDE aGuide 
)

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

Parameters
aItemA BOARD_ITEM to scan, may be a BOARD or MODULE, or whatever.
aScanListA list of KICAD_Ts with a terminating EOT, that specs what is to be collected and the priority order of the resultant collection in "m_List".
aRefPosA wxPoint to use in hit-testing.
aGuideThe COLLECTORS_GUIDE to use in collecting items.

Definition at line 482 of file collectors.cpp.

484 {
485  Empty(); // empty the collection, primary criteria list
486  Empty2nd(); // empty the collection, secondary criteria list
487 
488  // remember guide, pass it to Inspect()
489  SetGuide( &aGuide );
490 
491  SetScanTypes( aScanList );
492 
493  // remember where the snapshot was taken from and pass refPos to
494  // the Inspect() function.
495  SetRefPos( aRefPos );
496 
497  aItem->Visit( m_inspector, NULL, m_ScanTypes );
498 
499  SetTimeNow(); // when snapshot was taken
500 
501  // record the length of the primary list before concatenating on to it.
502  m_PrimaryLength = m_List.size();
503 
504  // append 2nd list onto end of the first list
505  for( unsigned i = 0; i<m_List2nd.size(); ++i )
506  Append( m_List2nd[i] );
507 
508  Empty2nd();
509 }
void Empty()
Function Empty sets the list to empty.
Definition: collector.h:123
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...
void SetScanTypes(const KICAD_T *scanTypes)
Function SetScanTypes records the list of KICAD_T types to consider for collection by the Inspect() f...
Definition: collector.h:215
std::vector< BOARD_ITEM * > m_List2nd
A place to hold collected objects which don't match precisely the search criteria,...
Definition: collectors.h:254
int m_PrimaryLength
The number of items that were originally in the primary list before the m_List2nd was concatenated on...
Definition: collectors.h:265
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:133
void SetGuide(const COLLECTORS_GUIDE *aGuide)
Record which COLLECTORS_GUIDE to use.
Definition: collectors.h:350
INSPECTOR_FUNC m_inspector
a class common bridge into the polymorphic Inspect()
Definition: collector.h:59
void SetRefPos(const wxPoint &aRefPos)
Definition: collector.h:230
void SetTimeNow()
Definition: collector.h:220
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:62

References COLLECTOR::Append(), COLLECTOR::Empty(), Empty2nd(), i, COLLECTOR::m_inspector, COLLECTOR::m_List, m_List2nd, m_PrimaryLength, COLLECTOR::m_ScanTypes, SetGuide(), COLLECTOR::SetRefPos(), COLLECTOR::SetScanTypes(), COLLECTOR::SetTimeNow(), and EDA_ITEM::Visit().

Referenced by MODULE_EDITOR_TOOLS::EnumeratePads(), highlightNet(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), PCB_EDIT_FRAME::SelectHighLight(), and SELECTION_TOOL::selectPoint().

◆ 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 265 of file collector.h.

266  {
267  int cnt = 0;
268  for( size_t i = 0; i < m_List.size(); i++ )
269  {
270  if( m_List[i]->Type() == aType )
271  cnt++;
272  }
273  return cnt;
274  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References i, and COLLECTOR::m_List.

Referenced by SELECTION_TOOL::guessSelectionCandidates(), and ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty()

void COLLECTOR::Empty ( )
inlineinherited

Function Empty sets the list to empty.

Definition at line 123 of file collector.h.

124  {
125  m_List.clear();
126  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by GERBER_COLLECTOR::Collect(), LIB_COLLECTOR::Collect(), SCH_COLLECTOR::Collect(), Collect(), SCH_TYPE_COLLECTOR::Collect(), PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::Empty(), MODULE_EDITOR_TOOLS::EnumeratePads(), SELECTION_TOOL::guessSelectionCandidates(), and ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty2nd()

void GENERAL_COLLECTOR::Empty2nd ( )
inline

Definition at line 335 of file collectors.h.

336  {
337  m_List2nd.clear();
338  }
std::vector< BOARD_ITEM * > m_List2nd
A place to hold collected objects which don't match precisely the search criteria,...
Definition: collectors.h:254

References m_List2nd.

Referenced by Collect().

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 93 of file collector.h.

93 { return m_List.end(); }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by SELECTION_TOOL::RequestSelection().

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 95 of file collector.h.

95 { return m_List.cend(); }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

◆ GetBoundingBox()

const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 234 of file collector.h.

234 { return m_RefBox; }
EDA_RECT m_RefBox
A bounding box to test against, and that was used to make the collection.
Definition: collector.h:71

References COLLECTOR::m_RefBox.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Function GetCount returns the number of objects in the list.

Definition at line 114 of file collector.h.

115  {
116  return (int) m_List.size();
117  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by AllAreModulesAndReturnSmallestIfSo(), SCH_EDIT_FRAME::AppendSchematic(), BuildBoardPolygonOutlines(), calcMaxArea(), connectedItemFilter(), connectedTrackFilter(), MODULE::CoverageRatio(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), SELECTION_TOOL::doSelectionMenu(), EditToolSelectionFilter(), MODULE_EDITOR_TOOLS::EnumeratePads(), EDIT_TOOL::FootprintFilter(), DSN::SPECCTRA_DB::FromBOARD(), SCH_FIND_COLLECTOR::GetItem(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), SCH_FIND_COLLECTOR::GetText(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), SELECTION_TOOL::guessSelectionCandidates(), highlightNet(), SCH_EDIT_FRAME::importFile(), SCH_COLLECTOR::IsCorner(), LIB_EDIT_FRAME::locateItem(), SCH_EDIT_FRAME::LocateItem(), DSN::SPECCTRA_DB::makeIMAGE(), ROUTER_TOOL::NeighboringSegmentFilter(), SCH_EDIT_FRAME::OnFindSchematicItem(), LIB_EDIT_FRAME::OnSelectItem(), SCH_EDIT_FRAME::OnSelectItem(), GERBER_COLLECTOR::operator[](), LIB_COLLECTOR::operator[](), SCH_COLLECTOR::operator[](), COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PadFilter(), SCH_FIND_COLLECTOR::PassedEnd(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), SELECTION_TOOL::pickSmallestComponent(), SCH_COMPONENT::ResolveAll(), PCB_EDIT_FRAME::SelectHighLight(), GERBVIEW_SELECTION_TOOL::selectPoint(), SELECTION_TOOL::selectPoint(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), SCH_COMPONENT::UpdateAllPinCaches(), and SCH_FIND_COLLECTOR::UpdateIndex().

◆ GetGuide()

const COLLECTORS_GUIDE* GENERAL_COLLECTOR::GetGuide ( )
inline

Definition at line 352 of file collectors.h.

352 { return m_Guide; }
const COLLECTORS_GUIDE * m_Guide
Determines which items are to be collected by Inspect()
Definition: collectors.h:259

References m_Guide.

Referenced by SELECTION_TOOL::guessSelectionCandidates().

◆ GetPrimaryCount()

int GENERAL_COLLECTOR::GetPrimaryCount ( )
inline
Returns
int - The number if items which met the primary search criteria

Definition at line 357 of file collectors.h.

357 { return m_PrimaryLength; }
int m_PrimaryLength
The number of items that were originally in the primary list before the m_List2nd was concatenated on...
Definition: collectors.h:265

References m_PrimaryLength.

Referenced by AllAreModulesAndReturnSmallestIfSo(), and SELECTION_TOOL::pickSmallestComponent().

◆ GetRefPos()

const wxPoint& COLLECTOR::GetRefPos ( ) const
inlineinherited

Definition at line 231 of file collector.h.

231 { return m_RefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68

References COLLECTOR::m_RefPos.

Referenced by PCB_EDIT_FRAME::OnRightClick().

◆ GetTime()

timestamp_t COLLECTOR::GetTime ( )
inlineinherited

Definition at line 225 of file collector.h.

226  {
227  return m_TimeAtCollection;
228  }
timestamp_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:74

References COLLECTOR::m_TimeAtCollection.

◆ 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 197 of file collector.h.

198  {
199  for( size_t i = 0; i < m_List.size(); i++ )
200  {
201  if( m_List[i] == aItem )
202  return true;
203  }
204 
205  return false;
206  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References i, and COLLECTOR::m_List.

Referenced by EditToolSelectionFilter().

◆ Inspect()

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

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

Searches and collects all the objects that the old function PcbGeneralLocateAndDisplay() would find, except that it keeps all that it finds and does not do any displaying.

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;

Implements COLLECTOR.

Definition at line 151 of file collectors.cpp.

152 {
153  BOARD_ITEM* item = (BOARD_ITEM*) testItem;
154  MODULE* module = NULL;
155  D_PAD* pad = NULL;
156  bool pad_through = false;
157  VIA* via = NULL;
158  MARKER_PCB* marker = NULL;
159  ZONE_CONTAINER* zone = NULL;
160 
161 #if 0 // debugging
162  static int breakhere = 0;
163 
164  switch( item->Type() )
165  {
166  case PCB_PAD_T:
167  {
168  MODULE* m = (MODULE*) item->GetParent();
169 
170  if( m->GetReference() == wxT( "Y2" ) )
171  {
172  breakhere++;
173  }
174  }
175  break;
176 
177  case PCB_VIA_T:
178  breakhere++;
179  break;
180 
181  case PCB_TRACE_T:
182  breakhere++;
183  break;
184 
185  case PCB_SEGZONE_T:
186  breakhere++;
187  break;
188 
189  case PCB_TEXT_T:
190  breakhere++;
191  break;
192 
193  case PCB_LINE_T:
194  breakhere++;
195  break;
196 
197  case PCB_DIMENSION_T:
198  breakhere++;
199  break;
200 
201  case PCB_MODULE_TEXT_T:
202  {
203  TEXTE_MODULE* tm = (TEXTE_MODULE*) item;
204 
205  if( tm->GetText() == wxT( "10uH" ) )
206  {
207  breakhere++;
208  }
209  }
210  break;
211 
212  case PCB_MODULE_T:
213  {
214  MODULE* m = (MODULE*) item;
215 
216  if( m->GetReference() == wxT( "C98" ) )
217  {
218  breakhere++;
219  }
220  }
221  break;
222 
223  case PCB_MARKER_T:
224  breakhere++;
225  break;
226 
227  default:
228  breakhere++;
229  break;
230  }
231 
232 #endif
233 
234 
235  switch( item->Type() )
236  {
237  case PCB_PAD_T:
238  // there are pad specific visibility controls.
239  // Criterias to select a pad is:
240  // for smd pads: the module parent must be seen, and pads on the corresponding
241  // board side must be seen
242  // if pad is a thru hole, then it can be visible when its parent module is not.
243  // for through pads: pads on Front or Back board sides must be seen
244  pad = (D_PAD*) item;
245 
246  if( (pad->GetAttribute() != PAD_ATTRIB_SMD) &&
247  (pad->GetAttribute() != PAD_ATTRIB_CONN) ) // a hole is present, so multiple layers
248  {
249  // proceed to the common tests below, but without the parent module test,
250  // by leaving module==NULL, but having pad != null
251  pad_through = true;
252  }
253  else // smd, so use pads test after module test
254  {
255  module = static_cast<MODULE*>( item->GetParent() );
256  }
257 
258  break;
259 
260  case PCB_VIA_T: // vias are on many layers, so layer test is specific
261  via = static_cast<VIA*>( item );
262  break;
263 
264  case PCB_TRACE_T:
265  if( m_Guide->IgnoreTracks() )
266  goto exit;
267  break;
268 
269  case PCB_SEGZONE_T:
270  break;
271 
272  case PCB_ZONE_AREA_T:
273  zone = static_cast<ZONE_CONTAINER*>( item );
274  break;
275 
276  case PCB_TEXT_T:
277  break;
278 
279  case PCB_LINE_T:
280  break;
281 
282  case PCB_DIMENSION_T:
283  break;
284 
285  case PCB_TARGET_T:
286  break;
287 
288  case PCB_MODULE_TEXT_T:
289  {
290  TEXTE_MODULE *text = static_cast<TEXTE_MODULE*>( item );
291  if( m_Guide->IgnoreMTextsMarkedNoShow() && !text->IsVisible() )
292  goto exit;
293 
294  if( m_Guide->IgnoreMTextsOnBack() && IsBackLayer( text->GetLayer() ) )
295  goto exit;
296 
297  if( m_Guide->IgnoreMTextsOnFront() && IsFrontLayer( text->GetLayer() ) )
298  goto exit;
299 
300  /* The three text types have different criteria: reference
301  * and value have their own ignore flags; user text instead
302  * follows their layer visibility. Checking this here is
303  * simpler than later (when layer visibility is checked for
304  * other entities) */
305 
306  switch( text->GetType() )
307  {
309  if( m_Guide->IgnoreModulesRefs() )
310  goto exit;
311  break;
312 
314  if( m_Guide->IgnoreModulesVals() )
315  goto exit;
316  break;
317 
319  if( !m_Guide->IsLayerVisible( text->GetLayer() )
321  goto exit;
322  break;
323  }
324 
325  // Extract the module since it could be hidden
326  module = static_cast<MODULE*>( item->GetParent() );
327  }
328  break;
329 
330  case PCB_MODULE_T:
331  module = static_cast<MODULE*>( item );
332  break;
333 
334  case PCB_MARKER_T:
335  marker = static_cast<MARKER_PCB*>( item );
336  break;
337 
338  default:
339  break;
340  }
341 
342  // common tests:
343 
344  if( module ) // true from case PCB_PAD_T, PCB_MODULE_TEXT_T, or PCB_MODULE_T
345  {
346  if( m_Guide->IgnoreModulesOnBack() && (module->GetLayer() == B_Cu) )
347  goto exit;
348 
349  if( m_Guide->IgnoreModulesOnFront() && (module->GetLayer() == F_Cu) )
350  goto exit;
351  }
352 
353  // Pads are not sensitive to the layer visibility controls.
354  // They all have their own separate visibility controls
355  // skip them if not visible
356  if( pad )
357  {
358  if( m_Guide->IgnorePads() )
359  goto exit;
360 
361  if( ! pad_through )
362  {
363  if( m_Guide->IgnorePadsOnFront() && pad->IsOnLayer(F_Cu ) )
364  goto exit;
365 
366  if( m_Guide->IgnorePadsOnBack() && pad->IsOnLayer(B_Cu ) )
367  goto exit;
368  }
369  }
370 
371  if( marker )
372  {
373  // Markers are not sensitive to the layer
374  if( marker->HitTest( m_RefPos ) )
375  Append( item );
376 
377  goto exit;
378  }
379 
380  if( via )
381  {
382  auto type = via->GetViaType();
383 
384  if( ( m_Guide->IgnoreThroughVias() && type == VIA_THROUGH ) ||
385  ( m_Guide->IgnoreBlindBuriedVias() && type == VIA_BLIND_BURIED ) ||
386  ( m_Guide->IgnoreMicroVias() && type == VIA_MICROVIA ) )
387  {
388  goto exit;
389  }
390  }
391 
393  {
394  PCB_LAYER_ID layer = item->GetLayer();
395 
396  // Modules and their subcomponents: reference, value and pads are not sensitive
397  // to the layer visibility controls. They all have their own separate visibility
398  // controls for vias, GetLayer() has no meaning, but IsOnLayer() works fine. User
399  // text in module *is* sensitive to layer visibility but that was already handled.
400 
401  if( via || module || pad || m_Guide->IsLayerVisible( layer )
403  {
404  if( !m_Guide->IsLayerLocked( layer ) || !m_Guide->IgnoreLockedLayers() )
405  {
406  if( !item->IsLocked() || !m_Guide->IgnoreLockedItems() )
407  {
408  if( zone )
409  {
410  bool testFill = !m_Guide->IgnoreZoneFills();
411  int accuracy = KiROUND( 5 * m_Guide->OnePixelInIU() );
412 
413  if( zone->HitTestForCorner( m_RefPos, accuracy * 2 )
414  || zone->HitTestForEdge( m_RefPos, accuracy )
415  || ( testFill && zone->HitTestFilledArea( m_RefPos ) ) )
416  {
417  Append( item );
418  goto exit;
419  }
420  }
421  else if( item->HitTest( m_RefPos ) )
422  {
423  if( !module || module->HitTestAccurate( m_RefPos ) )
424  Append( item );
425 
426  goto exit;
427  }
428  }
429  }
430  }
431  }
432 
433 
434  if( m_Guide->IncludeSecondary() )
435  {
436  // for now, "secondary" means "tolerate any layer". It has
437  // no effect on other criteria, since there is a separate "ignore" control for
438  // those in the COLLECTORS_GUIDE
439 
440  PCB_LAYER_ID layer = item->GetLayer();
441 
442  // Modules and their subcomponents: reference, value and pads are not sensitive
443  // to the layer visibility controls. They all have their own separate visibility
444  // controls for vias, GetLayer() has no meaning, but IsOnLayer() works fine. User
445  // text in module *is* sensitive to layer visibility but that was already handled.
446 
447  if( via || module || pad || m_Guide->IsLayerVisible( layer )
449  {
450  if( !m_Guide->IsLayerLocked( layer ) || !m_Guide->IgnoreLockedLayers() )
451  {
452  if( !item->IsLocked() || !m_Guide->IgnoreLockedItems() )
453  {
454  if( zone )
455  {
456  bool testFill = !m_Guide->IgnoreZoneFills();
457  int accuracy = KiROUND( 5 * m_Guide->OnePixelInIU() );
458 
459  if( zone->HitTestForCorner( m_RefPos, accuracy * 2 )
460  || zone->HitTestForEdge( m_RefPos, accuracy )
461  || ( testFill && zone->HitTestFilledArea( m_RefPos ) ) )
462  {
463  Append2nd( item );
464  goto exit;
465  }
466  }
467  else if( item->HitTest( m_RefPos ) )
468  {
469  Append2nd( item );
470  goto exit;
471  }
472  }
473  }
474  }
475  }
476 
477 exit:
478  return SEARCH_CONTINUE; // always when collecting
479 }
virtual bool IsLayerLocked(PCB_LAYER_ID layer) const =0
Class ZONE_CONTAINER handles a list of polygons defining a copper zone.
Definition: class_zone.h:59
virtual bool IgnoreBlindBuriedVias() const =0
virtual bool IgnoreModulesOnFront() const =0
static int KiROUND(double v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:121
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
virtual double OnePixelInIU() const =0
bool IsBackLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a back layer.
bool IsVisible() const
Definition: eda_text.h:189
bool HitTestForCorner(const wxPoint &refPos, int aAccuracy, SHAPE_POLY_SET::VERTEX_INDEX &aCornerHit) const
Function HitTestForCorner tests if the given wxPoint is near a corner.
Definition: class_zone.cpp:683
virtual bool IgnoreZoneFills() const =0
virtual bool IgnoreNonVisibleLayers() const =0
Smd pad, appears on the solder paste layer (default)
Definition: pad_shapes.h:62
class ZONE_CONTAINER, a zone area
Definition: typeinfo.h:102
void Append2nd(BOARD_ITEM *item)
Definition: collectors.h:340
bool HitTest(const wxPoint &aPosition) const override
Function HitTest tests if aPosition is contained within or on the bounding area of an item.
class TEXTE_PCB, text on a layer
Definition: typeinfo.h:92
virtual PCB_LAYER_ID GetPreferredLayer() const =0
bool HitTestFilledArea(const wxPoint &aRefPos) const
Function HitTestFilledArea tests if the given wxPoint is within the bounds of a filled area of this z...
Definition: class_zone.cpp:807
virtual bool IgnoreTracks() const =0
class D_PAD, a pad in a footprint
Definition: typeinfo.h:90
virtual bool IgnoreMicroVias() const =0
virtual bool IgnoreModulesVals() const =0
virtual bool IgnorePreferredLayer() const =0
Provide wildcard behavior regarding the preferred layer.
PAD_ATTR_T GetAttribute() const
Definition: class_pad.h:412
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
virtual bool IgnorePadsOnFront() const =0
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:133
class MODULE, a footprint
Definition: typeinfo.h:89
PCB_LAYER_ID
A quick note on layer IDs:
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
virtual bool IgnoreMTextsOnBack() const =0
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:143
TEXT_TYPE GetType() const
const wxString & GetReference() const
Function GetReference.
Definition: class_module.h:462
VIATYPE_T GetViaType() const
Definition: class_track.h:461
const COLLECTORS_GUIDE * m_Guide
Determines which items are to be collected by Inspect()
Definition: collectors.h:259
virtual bool IgnoreMTextsMarkedNoShow() const =0
Like smd, does not appear on the solder paste layer (default) note also has a special attribute in Ge...
Definition: pad_shapes.h:63
class DIMENSION, a dimension (graphic item)
Definition: typeinfo.h:100
virtual bool IgnoreThroughVias() const =0
class PCB_TARGET, a target (graphic item)
Definition: typeinfo.h:101
virtual bool IgnoreModulesRefs() const =0
class TEXTE_MODULE, text in a footprint
Definition: typeinfo.h:93
bool IsFrontLayer(PCB_LAYER_ID aLayerId)
Layer classification: check if it's a front layer.
virtual bool HitTest(const wxPoint &aPosition) const override
Function HitTest tests if aPosition is contained within or on the bounding area of an item.
virtual bool IsLocked() const
Function IsLocked.
class MARKER_PCB, a marker used to show something
Definition: typeinfo.h:99
virtual bool IgnorePads() const
Definition: collectors.h:157
bool HitTestAccurate(const wxPoint &aPosition) const
Tests if a point is inside the bounding polygon of the module.
virtual bool IsLayerVisible(PCB_LAYER_ID layer) const =0
bool HitTestForEdge(const wxPoint &refPos, int aAccuracy, SHAPE_POLY_SET::VERTEX_INDEX &aCornerHit) const
Function HitTestForEdge tests if the given wxPoint is near a segment defined by 2 corners.
Definition: class_zone.cpp:697
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
virtual bool IgnorePadsOnBack() const =0
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68
virtual bool IgnoreLockedItems() const =0
virtual bool IgnoreLockedLayers() const =0
bool IsOnLayer(PCB_LAYER_ID aLayer) const override
Function IsOnLayer tests to see if this object is on the given layer.
Definition: class_pad.h:712
virtual bool IgnoreModulesOnBack() const =0
virtual bool IgnoreMTextsOnFront() const =0
class DRAWSEGMENT, a segment not on copper layers
Definition: typeinfo.h:91
virtual bool IncludeSecondary() const =0
Determine if the secondary criteria or 2nd choice items should be included.
BOARD_ITEM_CONTAINER * GetParent() const
class SEGZONE, a segment used to fill a zone area (segment on a
Definition: typeinfo.h:97
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
KICAD_T Type() const
Function Type()
Definition: base_struct.h:201

References COLLECTOR::Append(), Append2nd(), B_Cu, F_Cu, D_PAD::GetAttribute(), BOARD_ITEM::GetLayer(), BOARD_ITEM::GetParent(), COLLECTORS_GUIDE::GetPreferredLayer(), MODULE::GetReference(), EDA_TEXT::GetText(), TEXTE_MODULE::GetType(), VIA::GetViaType(), MARKER_PCB::HitTest(), BOARD_ITEM::HitTest(), MODULE::HitTestAccurate(), ZONE_CONTAINER::HitTestFilledArea(), ZONE_CONTAINER::HitTestForCorner(), ZONE_CONTAINER::HitTestForEdge(), COLLECTORS_GUIDE::IgnoreBlindBuriedVias(), COLLECTORS_GUIDE::IgnoreLockedItems(), COLLECTORS_GUIDE::IgnoreLockedLayers(), COLLECTORS_GUIDE::IgnoreMicroVias(), COLLECTORS_GUIDE::IgnoreModulesOnBack(), COLLECTORS_GUIDE::IgnoreModulesOnFront(), COLLECTORS_GUIDE::IgnoreModulesRefs(), COLLECTORS_GUIDE::IgnoreModulesVals(), COLLECTORS_GUIDE::IgnoreMTextsMarkedNoShow(), COLLECTORS_GUIDE::IgnoreMTextsOnBack(), COLLECTORS_GUIDE::IgnoreMTextsOnFront(), COLLECTORS_GUIDE::IgnoreNonVisibleLayers(), COLLECTORS_GUIDE::IgnorePads(), COLLECTORS_GUIDE::IgnorePadsOnBack(), COLLECTORS_GUIDE::IgnorePadsOnFront(), COLLECTORS_GUIDE::IgnorePreferredLayer(), COLLECTORS_GUIDE::IgnoreThroughVias(), COLLECTORS_GUIDE::IgnoreTracks(), COLLECTORS_GUIDE::IgnoreZoneFills(), COLLECTORS_GUIDE::IncludeSecondary(), IsBackLayer(), IsFrontLayer(), COLLECTORS_GUIDE::IsLayerLocked(), COLLECTORS_GUIDE::IsLayerVisible(), BOARD_ITEM::IsLocked(), BOARD_ITEM::IsOnLayer(), D_PAD::IsOnLayer(), EDA_TEXT::IsVisible(), KiROUND(), m_Guide, COLLECTOR::m_RefPos, COLLECTORS_GUIDE::OnePixelInIU(), PAD_ATTRIB_CONN, PAD_ATTRIB_SMD, PCB_DIMENSION_T, PCB_LINE_T, PCB_MARKER_T, PCB_MODULE_T, PCB_MODULE_TEXT_T, PCB_PAD_T, PCB_SEGZONE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_AREA_T, SEARCH_CONTINUE, TEXTE_MODULE::TEXT_is_DIVERS, TEXTE_MODULE::TEXT_is_REFERENCE, TEXTE_MODULE::TEXT_is_VALUE, EDA_ITEM::Type(), VIA_BLIND_BURIED, VIA_MICROVIA, and VIA_THROUGH.

◆ IsSimilarPointAndTime()

bool COLLECTOR::IsSimilarPointAndTime ( const wxPoint &  aRefPos)
inlineinherited

Function IsSimilarPointAndTime returns true if the given reference point is "similar" (defined here) to the internal reference point and the current time is within a few seconds of the internal m_TimeAtCollection.

Parameters
aRefPosA wxPoint to compare to.
Returns
bool - true if the point and time are similar, else false.

Definition at line 245 of file collector.h.

246  {
247  const int distMax = 2; // adjust these here
248  const timestamp_t timeMax = 3; // seconds
249 
250  int dx = abs( aRefPos.x - m_RefPos.x );
251  int dy = abs( aRefPos.y - m_RefPos.y );
252 
253  if( dx <= distMax && dy <= distMax &&
254  GetNewTimeStamp() - m_TimeAtCollection <= timeMax )
255  return true;
256  else
257  return false;
258  }
long timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: common.h:53
#define abs(a)
Definition: auxiliary.h:84
timestamp_t GetNewTimeStamp()
Definition: common.cpp:216
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68
timestamp_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:74

References abs, GetNewTimeStamp(), COLLECTOR::m_RefPos, and COLLECTOR::m_TimeAtCollection.

◆ IsValidIndex()

bool COLLECTOR::IsValidIndex ( int  aIndex)
inlineinherited

Function IsValidIndex tests if aIndex is with the limits of the list of collected items.

Parameters
aIndexThe index to test.
Returns
True if aIndex is with the limits of the list of collected items, otherwise false.

Definition at line 105 of file collector.h.

106  {
107  return ( (unsigned) aIndex < m_List.size() );
108  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by SCH_FIND_COLLECTOR::GetText(), and SCH_FIND_COLLECTOR::ReplaceItem().

◆ operator[]()

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

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.

Definition at line 226 of file collectors.h.

227  {
228  if( (unsigned)ndx < (unsigned)GetCount() )
229  return (BOARD_ITEM*) m_List[ ndx ];
230 
231  return NULL;
232  }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:114
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

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

◆ Remove() [1/2]

void COLLECTOR::Remove ( int  aIndex)
inlineinherited

Function Remove removes the item at aIndex (first position is 0);.

Parameters
aIndexThe index into the list.

Definition at line 143 of file collector.h.

144  {
145  m_List.erase( m_List.begin() + aIndex );
146  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References COLLECTOR::m_List.

Referenced by connectedItemFilter(), connectedTrackFilter(), EditToolSelectionFilter(), EDIT_TOOL::FootprintFilter(), SELECTION_TOOL::guessSelectionCandidates(), highlightNet(), EDIT_TOOL::PadFilter(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), GERBVIEW_SELECTION_TOOL::selectPoint(), and SELECTION_TOOL::selectPoint().

◆ 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 153 of file collector.h.

154  {
155  for( size_t i = 0; i < m_List.size(); i++ )
156  {
157  if( m_List[i] == aItem )
158  {
159  m_List.erase( m_List.begin() + i);
160  return;
161  }
162  }
163  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65

References i, and COLLECTOR::m_List.

◆ SetBoundingBox()

void COLLECTOR::SetBoundingBox ( const EDA_RECT aRefBox)
inlineinherited

Definition at line 233 of file collector.h.

233 { m_RefBox = aRefBox; }
EDA_RECT m_RefBox
A bounding box to test against, and that was used to make the collection.
Definition: collector.h:71

References COLLECTOR::m_RefBox.

◆ SetGuide()

void GENERAL_COLLECTOR::SetGuide ( const COLLECTORS_GUIDE aGuide)
inline

Record which COLLECTORS_GUIDE to use.

Parameters
aGuideWhich guide to use in the collection.

Definition at line 350 of file collectors.h.

350 { m_Guide = aGuide; }
const COLLECTORS_GUIDE * m_Guide
Determines which items are to be collected by Inspect()
Definition: collectors.h:259

References m_Guide.

Referenced by Collect().

◆ SetRefPos()

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

Definition at line 230 of file collector.h.

230 { m_RefPos = aRefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68

References COLLECTOR::m_RefPos.

Referenced by GERBER_COLLECTOR::Collect(), LIB_COLLECTOR::Collect(), SCH_COLLECTOR::Collect(), and 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 215 of file collector.h.

216  {
217  m_ScanTypes = scanTypes;
218  }
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:62

References COLLECTOR::m_ScanTypes.

Referenced by GERBER_COLLECTOR::Collect(), LIB_COLLECTOR::Collect(), SCH_COLLECTOR::Collect(), Collect(), SCH_TYPE_COLLECTOR::Collect(), GENERAL_COLLECTOR(), GERBER_COLLECTOR::GERBER_COLLECTOR(), LIB_COLLECTOR::LIB_COLLECTOR(), SCH_COLLECTOR::SCH_COLLECTOR(), and SCH_FIND_COLLECTOR::SCH_FIND_COLLECTOR().

◆ SetTimeNow()

void COLLECTOR::SetTimeNow ( )
inlineinherited

Definition at line 220 of file collector.h.

221  {
223  }
timestamp_t GetNewTimeStamp()
Definition: common.cpp:216
timestamp_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:74

References GetNewTimeStamp(), and COLLECTOR::m_TimeAtCollection.

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

Member Data Documentation

◆ AllBoardItems

const KICAD_T GENERAL_COLLECTOR::AllBoardItems
static
Initial value:

A scan list for all editable board items, like PcbGeneralLocateAndDisplay()

Definition at line 272 of file collectors.h.

Referenced by GENERAL_COLLECTOR(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), and SELECTION_TOOL::selectPoint().

◆ AllButZones

const KICAD_T GENERAL_COLLECTOR::AllButZones
static
Initial value:

A scan list for all editable board items, except zones.

Definition at line 277 of file collectors.h.

Referenced by PCB_BASE_FRAME::PcbGeneralLocateAndDisplay().

◆ BoardLevelItems

const KICAD_T GENERAL_COLLECTOR::BoardLevelItems
static
Initial value:

A scan list for all primary board items, omitting items which are subordinate to a MODULE, such as D_PAD and TEXTEMODULE.

Definition at line 288 of file collectors.h.

Referenced by PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().

◆ LockableItems

const KICAD_T GENERAL_COLLECTOR::LockableItems
static
Initial value:

A scan list for TRACKS, VIAS, MODULES.

Definition at line 323 of file collectors.h.

Referenced by PCB_EDITOR_CONTROL::Init().

◆ m_Guide

const COLLECTORS_GUIDE* GENERAL_COLLECTOR::m_Guide
protected

Determines which items are to be collected by Inspect()

Definition at line 259 of file collectors.h.

Referenced by GENERAL_COLLECTOR(), GetGuide(), Inspect(), and SetGuide().

◆ m_inspector

◆ m_List

◆ m_List2nd

std::vector<BOARD_ITEM*> GENERAL_COLLECTOR::m_List2nd
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 254 of file collectors.h.

Referenced by Append2nd(), Collect(), and Empty2nd().

◆ m_PrimaryLength

int GENERAL_COLLECTOR::m_PrimaryLength
protected

The number of items that were originally in the primary list before the m_List2nd was concatenated onto the end of it.

Definition at line 265 of file collectors.h.

Referenced by Collect(), GENERAL_COLLECTOR(), and GetPrimaryCount().

◆ m_RefBox

EDA_RECT COLLECTOR::m_RefBox
protectedinherited

A bounding box to test against, and that was used to make the collection.

Definition at line 71 of file collector.h.

Referenced by COLLECTOR::GetBoundingBox(), and COLLECTOR::SetBoundingBox().

◆ m_RefPos

wxPoint COLLECTOR::m_RefPos
protectedinherited

A point to test against, and that was used to make the collection.

Definition at line 68 of file collector.h.

Referenced by COLLECTOR::GetRefPos(), GERBER_COLLECTOR::Inspect(), LIB_COLLECTOR::Inspect(), SCH_COLLECTOR::Inspect(), Inspect(), COLLECTOR::IsSimilarPointAndTime(), and COLLECTOR::SetRefPos().

◆ m_ScanTypes

const KICAD_T* COLLECTOR::m_ScanTypes
protectedinherited

◆ m_TimeAtCollection

timestamp_t COLLECTOR::m_TimeAtCollection
protectedinherited

The time at which the collection was made.

Definition at line 74 of file collector.h.

Referenced by COLLECTOR::GetTime(), COLLECTOR::IsSimilarPointAndTime(), and COLLECTOR::SetTimeNow().

◆ ModuleItems

const KICAD_T GENERAL_COLLECTOR::ModuleItems
static
Initial value:

A scan list for primary module items.

Definition at line 313 of file collectors.h.

Referenced by PANEL_SETUP_LAYERS::getNonRemovableLayers(), and SELECTION_TOOL::selectPoint().

◆ Modules

const KICAD_T GENERAL_COLLECTOR::Modules
static
Initial value:

A scan list for only MODULEs.

Definition at line 293 of file collectors.h.

Referenced by PCB_BASE_FRAME::PcbGeneralLocateAndDisplay().

◆ ModulesAndTheirItems

const KICAD_T GENERAL_COLLECTOR::ModulesAndTheirItems
static
Initial value:

A scan list for MODULEs and their items (for Modedit)

Definition at line 308 of file collectors.h.

Referenced by FOOTPRINT_EDIT_FRAME::ModeditLocateAndDisplay().

◆ PadsOrModules

const KICAD_T GENERAL_COLLECTOR::PadsOrModules
static
Initial value:

A scan list for PADs or MODULEs.

Definition at line 298 of file collectors.h.

Referenced by PCB_BASE_FRAME::PcbGeneralLocateAndDisplay().

◆ PadsOrTracks

const KICAD_T GENERAL_COLLECTOR::PadsOrTracks
static
Initial value:

A scan list for PADs, TRACKs, or VIAs.

Definition at line 303 of file collectors.h.

Referenced by highlightNet(), and PCB_EDIT_FRAME::SelectHighLight().

◆ Tracks

const KICAD_T GENERAL_COLLECTOR::Tracks
static
Initial value:

A scan list for only TRACKS.

Definition at line 318 of file collectors.h.

Referenced by EDIT_TOOL::Init(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), EDIT_TOOL::Properties(), BOARD::TracksInNet(), and SELECT_MENU::update().

◆ Zones

const KICAD_T GENERAL_COLLECTOR::Zones
static
Initial value:

A scan list for zones outlines only.

Definition at line 282 of file collectors.h.

Referenced by highlightNet(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), and PCB_EDIT_FRAME::SelectHighLight().


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