KiCad PCB EDA Suite
GERBER_COLLECTOR Class Reference

Class GERBER_COLLECTOR is intended for use when the right click button is pressed, or when the plain "arrow" 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 ()
 
void Empty2nd ()
 
EDA_ITEMoperator[] (int ndx) const override
 Function SetGuide records which COLLECTORS_GUIDE to use. More...
 
int GetPrimaryCount ()
 Function GetPrimaryCount. More...
 
SEARCH_RESULT Inspect (EDA_ITEM *testItem, void *testData) override
 Function Inspect is the examining function within the INSPECTOR which is passed to the Iterate function. More...
 
void Collect (EDA_ITEM *aItem, const KICAD_T aScanList[], const wxPoint &aRefPos)
 Function Collect scans an EDA_ITEM using this class's Inspector method, which does the collection. 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...
 

Public Attributes

int m_Threshold
 
wxString m_MenuTitle
 
bool m_MenuCancelled
 

Static Public Attributes

static const KICAD_T AllItems []
 A scan list for all selectable gerber items. More...
 

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. More...
 
int m_PrimaryLength
 Determines which items are to be collected by Inspect() More...
 
std::vector< EDA_ITEM * > m_List
 
const KICAD_Tm_ScanTypes
 
INSPECTOR_FUNC m_inspector
 
wxPoint m_RefPos
 
EDA_RECT m_RefBox
 
timestamp_t m_TimeAtCollection
 

Detailed Description

Class GERBER_COLLECTOR is intended for use when the right click button is pressed, or when the plain "arrow" tool is in effect.

Definition at line 30 of file gerber_collectors.h.

Member Typedef Documentation

◆ CITER

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

Definition at line 89 of file collector.h.

◆ ITER

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

Definition at line 88 of file collector.h.

Constructor & Destructor Documentation

◆ GERBER_COLLECTOR()

GERBER_COLLECTOR::GERBER_COLLECTOR ( )
inline

Definition at line 62 of file gerber_collectors.h.

63  {
64  //m_Guide = NULL;
65  m_PrimaryLength = 0;
67  }
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:214
int m_PrimaryLength
Determines which items are to be collected by Inspect()
static const KICAD_T AllItems[]
A scan list for all selectable gerber items.

References AllItems, m_PrimaryLength, and COLLECTOR::SetScanTypes().

Member Function Documentation

◆ Append()

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

185  {
186  return &m_List[0];
187  }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 91 of file collector.h.

91 { return m_List.begin(); }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

Referenced by SELECTION_TOOL::RequestSelection().

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 93 of file collector.h.

93 { return m_List.cbegin(); }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

◆ Collect()

void GERBER_COLLECTOR::Collect ( EDA_ITEM aItem,
const KICAD_T  aScanList[],
const wxPoint &  aRefPos 
)

Function Collect scans an EDA_ITEM using this class's Inspector method, which does the collection.

Parameters
aItemAn EDA_ITEM to scan
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 49 of file gerber_collectors.cpp.

51 {
52  Empty(); // empty the collection, primary criteria list
53 
54  // remember guide, pass it to Inspect()
55  //SetGuide( &aGuide );
56 
57  SetScanTypes( aScanList );
58 
59  // remember where the snapshot was taken from and pass refPos to
60  // the Inspect() function.
61  SetRefPos( aRefPos );
62 
63  aItem->Visit( m_inspector, NULL, m_ScanTypes );
64 
65  SetTimeNow(); // when snapshot was taken
66 
67  // record the length of the primary list before concatenating on to it.
68  m_PrimaryLength = m_List.size();
69 }
void Empty()
Function Empty sets the list to empty.
Definition: collector.h:122
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:214
int m_PrimaryLength
Determines which items are to be collected by Inspect()
INSPECTOR_FUNC m_inspector
Definition: collector.h:61
void SetRefPos(const wxPoint &aRefPos)
Definition: collector.h:229
void SetTimeNow()
Definition: collector.h:219
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58
const KICAD_T * m_ScanTypes
Definition: collector.h:60

References COLLECTOR::Empty(), COLLECTOR::m_inspector, COLLECTOR::m_List, m_PrimaryLength, COLLECTOR::m_ScanTypes, COLLECTOR::SetRefPos(), COLLECTOR::SetScanTypes(), COLLECTOR::SetTimeNow(), and EDA_ITEM::Visit().

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

265  {
266  int cnt = 0;
267  for( size_t i = 0; i < m_List.size(); i++ )
268  {
269  if( m_List[i]->Type() == aType )
270  cnt++;
271  }
272  return cnt;
273  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References i, and COLLECTOR::m_List.

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

◆ Empty()

◆ Empty2nd()

void GERBER_COLLECTOR::Empty2nd ( )
inline

Definition at line 69 of file gerber_collectors.h.

70  {
71  m_List2nd.clear();
72  }
std::vector< EDA_ITEM * > m_List2nd
A place to hold collected objects which don't match precisely the search criteria,...

References m_List2nd.

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 92 of file collector.h.

92 { return m_List.end(); }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

Referenced by SELECTION_TOOL::RequestSelection().

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 94 of file collector.h.

94 { return m_List.cend(); }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

◆ GetBoundingBox()

const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 233 of file collector.h.

233 { return m_RefBox; }
EDA_RECT m_RefBox
Definition: collector.h:63

References COLLECTOR::m_RefBox.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Function GetCount returns the number of objects in the list.

Definition at line 113 of file collector.h.

114  {
115  return (int) m_List.size();
116  }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

Referenced by BuildBoardPolygonOutlines(), calcMaxArea(), connectedItemFilter(), connectedTrackFilter(), MODULE::CoverageRatio(), SCH_EDIT_TOOL::DeleteItemCursor(), PCBNEW_CONTROL::DeleteItemCursor(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::doSelectionMenu(), DIALOG_DRC_CONTROL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), EditToolSelectionFilter(), PAD_TOOL::EnumeratePads(), EDIT_TOOL::FootprintFilter(), DSN::SPECCTRA_DB::FromBOARD(), EE_SELECTION_TOOL::GetNode(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), SELECTION_TOOL::GuessSelectionCandidates(), PL_SELECTION_TOOL::guessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), PCB_INSPECTION_TOOL::highlightNet(), SCH_EDIT_FRAME::importFile(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), EE_COLLECTOR::IsCorner(), SCH_EDIT_FRAME::LoadSheetFromFile(), DSN::SPECCTRA_DB::makeIMAGE(), ROUTER_TOOL::NeighboringSegmentFilter(), EE_COLLECTOR::operator[](), operator[](), COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PadFilter(), SELECTION_TOOL::pickSmallestComponent(), SCH_COMPONENT::ResolveAll(), PL_SELECTION_TOOL::SelectPoint(), GERBVIEW_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::SelectPoint(), SELECTION_TOOL::selectPoint(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and SCH_COMPONENT::UpdatePins().

◆ GetPrimaryCount()

int GERBER_COLLECTOR::GetPrimaryCount ( )
inline

Function GetPrimaryCount.

Returns
int - The number if items which met the primary search criteria

Definition at line 106 of file gerber_collectors.h.

106 { return m_PrimaryLength; }
int m_PrimaryLength
Determines which items are to be collected by Inspect()

References m_PrimaryLength.

◆ GetRefPos()

const wxPoint& COLLECTOR::GetRefPos ( ) const
inlineinherited

Definition at line 230 of file collector.h.

230 { return m_RefPos; }
wxPoint m_RefPos
Definition: collector.h:62

References COLLECTOR::m_RefPos.

◆ GetTime()

timestamp_t COLLECTOR::GetTime ( )
inlineinherited

Definition at line 224 of file collector.h.

225  {
226  return m_TimeAtCollection;
227  }
timestamp_t m_TimeAtCollection
Definition: collector.h:65

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 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  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References i, and COLLECTOR::m_List.

Referenced by EditToolSelectionFilter().

◆ Inspect()

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

Function Inspect is the examining function within the INSPECTOR which is passed to the Iterate function.

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

Reimplemented from COLLECTOR.

Definition at line 40 of file gerber_collectors.cpp.

41 {
42  if( testItem->HitTest( m_RefPos ) )
43  Append( testItem );
44 
45  return SEARCH_CONTINUE;
46 }
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:132
virtual bool HitTest(const wxPoint &aPosition, int aAccuracy=0) const
Function HitTest tests if aPosition is contained within or on the bounding box of an item.
Definition: base_struct.h:339
wxPoint m_RefPos
Definition: collector.h:62

References COLLECTOR::Append(), EDA_ITEM::HitTest(), COLLECTOR::m_RefPos, and SEARCH_CONTINUE.

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

245  {
246  const int distMax = 2; // adjust these here
247  const timestamp_t timeMax = 3; // seconds
248 
249  int dx = abs( aRefPos.x - m_RefPos.x );
250  int dy = abs( aRefPos.y - m_RefPos.y );
251 
252  if( dx <= distMax && dy <= distMax &&
253  GetNewTimeStamp() - m_TimeAtCollection <= timeMax )
254  return true;
255  else
256  return false;
257  }
#define abs(a)
Definition: auxiliary.h:84
timestamp_t GetNewTimeStamp()
Definition: common.cpp:217
wxPoint m_RefPos
Definition: collector.h:62
uint32_t timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: common.h:50
timestamp_t m_TimeAtCollection
Definition: collector.h:65

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

105  {
106  return ( (unsigned) aIndex < m_List.size() );
107  }
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References COLLECTOR::m_List.

◆ operator[]()

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

Function SetGuide records which COLLECTORS_GUIDE to use.

Parameters
aGuideWhich guide to use in the collection.Function operator[int] overloads COLLECTOR::operator[](int) to return a EDA_ITEM* instead of an EDA_ITEM* type.
ndxThe index into the list.
Returns
EDA_ITEM* - or something derived from it, or NULL.

Reimplemented from COLLECTOR.

Definition at line 95 of file gerber_collectors.h.

96  {
97  if( (unsigned)ndx < (unsigned)GetCount() )
98  return (EDA_ITEM*) m_List[ ndx ];
99  return NULL;
100  }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:113
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

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

◆ Remove() [1/2]

void COLLECTOR::Remove ( int  aIndex)
inlineinherited

◆ Remove() [2/2]

void COLLECTOR::Remove ( const EDA_ITEM aItem)
inlineinherited

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

Parameters
aItemthe item to be removed.

Definition at line 152 of file collector.h.

153  {
154  for( size_t i = 0; i < m_List.size(); i++ )
155  {
156  if( m_List[i] == aItem )
157  {
158  m_List.erase( m_List.begin() + i);
159  return;
160  }
161  }
162  }
size_t i
Definition: json11.cpp:597
std::vector< EDA_ITEM * > m_List
Definition: collector.h:58

References i, and COLLECTOR::m_List.

◆ SetBoundingBox()

void COLLECTOR::SetBoundingBox ( const EDA_RECT aRefBox)
inlineinherited

Definition at line 232 of file collector.h.

232 { m_RefBox = aRefBox; }
EDA_RECT m_RefBox
Definition: collector.h:63

References COLLECTOR::m_RefBox.

◆ SetRefPos()

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

Definition at line 229 of file collector.h.

229 { m_RefPos = aRefPos; }
wxPoint m_RefPos
Definition: collector.h:62

References COLLECTOR::m_RefPos.

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

◆ SetScanTypes()

void COLLECTOR::SetScanTypes ( const KICAD_T scanTypes)
inlineinherited

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

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

Definition at line 214 of file collector.h.

215  {
216  m_ScanTypes = scanTypes;
217  }
const KICAD_T * m_ScanTypes
Definition: collector.h:60

References COLLECTOR::m_ScanTypes.

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

◆ SetTimeNow()

void COLLECTOR::SetTimeNow ( )
inlineinherited

Definition at line 219 of file collector.h.

220  {
222  }
timestamp_t GetNewTimeStamp()
Definition: common.cpp:217
timestamp_t m_TimeAtCollection
Definition: collector.h:65

References GetNewTimeStamp(), and COLLECTOR::m_TimeAtCollection.

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

Member Data Documentation

◆ AllItems

const KICAD_T GERBER_COLLECTOR::AllItems
static
Initial value:

A scan list for all selectable gerber items.

Definition at line 60 of file gerber_collectors.h.

Referenced by GERBER_COLLECTOR(), and GERBVIEW_SELECTION_TOOL::selectPoint().

◆ m_inspector

◆ m_List

◆ m_List2nd

std::vector<EDA_ITEM*> GERBER_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 39 of file gerber_collectors.h.

Referenced by Empty2nd().

◆ m_MenuCancelled

bool COLLECTOR::m_MenuCancelled
inherited

◆ m_MenuTitle

◆ m_PrimaryLength

int GERBER_COLLECTOR::m_PrimaryLength
protected

Determines which items are to be collected by Inspect()

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 52 of file gerber_collectors.h.

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

◆ m_RefBox

EDA_RECT COLLECTOR::m_RefBox
protectedinherited

Definition at line 63 of file collector.h.

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

◆ m_RefPos

wxPoint COLLECTOR::m_RefPos
protectedinherited

◆ m_ScanTypes

const KICAD_T* COLLECTOR::m_ScanTypes
protectedinherited

◆ m_Threshold

◆ m_TimeAtCollection

timestamp_t COLLECTOR::m_TimeAtCollection
protectedinherited

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