KiCad PCB EDA Suite
LIB_COLLECTOR Class Reference

Class LIB_COLLECTOR. More...

#include <lib_collectors.h>

Inheritance diagram for LIB_COLLECTOR:
COLLECTOR

Public Member Functions

 LIB_COLLECTOR (const KICAD_T *aScanTypes=LIB_COLLECTOR::AllItems)
 Constructor LIB_COLLECTOR. More...
 
LIB_ITEMoperator[] (int aIndex) const
 Operator [] overloads COLLECTOR::operator[](int) to return a LIB_ITEM* instead of an EDA_ITEM* type. More...
 
SEARCH_RESULT Inspect (EDA_ITEM *aItem, void *aTestData) override
 Function Inspect is the examining function within the INSPECTOR which is passed to the Iterate function. More...
 
void Collect (LIB_ITEMS_CONTAINER &aItem, const KICAD_T aFilterList[], const wxPoint &aPosition, int aUnit=0, int aConvert=0)
 Function Collect scans a SCH_ITEM using this class's Inspector method, which does the collection. More...
 
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 wxPointGetRefPos () 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 AllItems []
 A scan list for all schematic items. More...
 
static const KICAD_T EditableItems []
 A scan list for all editable schematic items. More...
 
static const KICAD_T MovableItems []
 A scan list for all movable schematic items. More...
 
static const KICAD_T RotatableItems []
 A scan list for all rotatable schematic items. More...
 
static const KICAD_T DoubleClickItems []
 A scan list for all double-clickable library items. More...
 
static const KICAD_T AllItemsButPins []
 A scan list for all schematic items except pins. More...
 

Protected Attributes

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...
 

Private Attributes

LIB_COLLECTOR_DATA m_data
 

Detailed Description

Class LIB_COLLECTOR.

Definition at line 51 of file lib_collectors.h.

Constructor & Destructor Documentation

LIB_COLLECTOR::LIB_COLLECTOR ( const KICAD_T aScanTypes = LIB_COLLECTOR::AllItems)
inline

Constructor LIB_COLLECTOR.

Definition at line 90 of file lib_collectors.h.

91  {
92  SetScanTypes( aScanTypes );
93  }
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:207

Member Function Documentation

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

Referenced by GENERAL_COLLECTOR::Collect(), SELECTION_TOOL::guessSelectionCandidates(), GERBER_COLLECTOR::Inspect(), Inspect(), SCH_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), SCH_FIND_COLLECTOR::Inspect(), SCH_TYPE_COLLECTOR::Inspect(), PCB_TYPE_COLLECTOR::Inspect(), and PCB_LAYER_COLLECTOR::Inspect().

126  {
127  m_List.push_back( item );
128  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
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 177 of file collector.h.

178  {
179  return &m_List[0];
180  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
void LIB_COLLECTOR::Collect ( LIB_ITEMS_CONTAINER aItem,
const KICAD_T  aFilterList[],
const wxPoint aPosition,
int  aUnit = 0,
int  aConvert = 0 
)

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

Parameters
aItemA SCH_ITEM to scan.
aFilterListA list of KICAD_T types with a terminating EOT, that determines what is to be collected and the priority order of the resulting collection.
aPositionA wxPoint to use in hit-testing.
aUnitThe unit of the items to collect or zero if all units.
aConvertThe convert of the items to collect or zero if all conversions.

Definition at line 126 of file lib_collectors.cpp.

References COLLECTOR::Empty(), LIB_COLLECTOR_DATA::m_convert, m_data, COLLECTOR::m_inspector, COLLECTOR::m_ScanTypes, LIB_COLLECTOR_DATA::m_unit, SEARCH_QUIT, COLLECTOR::SetRefPos(), and COLLECTOR::SetScanTypes().

Referenced by LIB_EDIT_FRAME::locateItem().

128 {
129  Empty(); // empty the collection just in case
130 
131  SetScanTypes( aFilterList );
132 
133  // remember where the snapshot was taken from and pass refPos to the Inspect() function.
134  SetRefPos( aPosition );
135 
136  m_data.m_unit = aUnit;
137  m_data.m_convert = aConvert;
138 
139  for( LIB_ITEM& item : aItems )
140  {
141  if( SEARCH_QUIT == item.Visit( m_inspector, NULL, m_ScanTypes ) )
142  break;
143  }
144 }
void Empty()
Function Empty sets the list to empty.
Definition: collector.h:115
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:207
The base class for drawable items used by schematic library components.
Definition: lib_draw_item.h:66
INSPECTOR_FUNC m_inspector
a class common bridge into the polymorphic Inspect()
Definition: collector.h:59
void SetRefPos(const wxPoint &aRefPos)
Definition: collector.h:222
LIB_COLLECTOR_DATA m_data
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:62
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 257 of file collector.h.

References i.

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

258  {
259  int cnt = 0;
260  for( size_t i = 0; i < m_List.size(); i++ )
261  {
262  if( m_List[i]->Type() == aType )
263  cnt++;
264  }
265  return cnt;
266  }
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
void COLLECTOR::Empty ( )
inlineinherited

Function Empty sets the list to empty.

Definition at line 115 of file collector.h.

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

116  {
117  m_List.clear();
118  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
const EDA_RECT& COLLECTOR::GetBoundingBox ( ) const
inlineinherited

Definition at line 226 of file collector.h.

References COLLECTOR::m_RefBox.

226 { 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
int COLLECTOR::GetCount ( ) const
inlineinherited

Function GetCount returns the number of objects in the list.

Definition at line 106 of file collector.h.

Referenced by AllAreModulesAndReturnSmallestIfSo(), SCH_EDIT_FRAME::AppendSchematic(), BuildBoardPolygonOutlines(), calcMaxArea(), connectedItemFilter(), connectedTrackFilter(), MODULE::CoverageRatio(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), SELECTION_TOOL::disambiguationMenu(), MODULE_EDITOR_TOOLS::EnumeratePads(), EDIT_TOOL::FootprintFilter(), DSN::SPECCTRA_DB::FromBOARD(), SCH_FIND_COLLECTOR::GetItem(), DIALOG_LAYERS_SETUP::getNonRemovableLayers(), DIALOG_LAYERS_SETUP::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(), GERBER_COLLECTOR::operator[](), SCH_COLLECTOR::operator[](), COLLECTOR::operator[](), SCH_FIND_COLLECTOR::PassedEnd(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), SELECTION_TOOL::pickSmallestComponent(), SCH_COMPONENT::ResolveAll(), GERBVIEW_SELECTION_TOOL::selectPoint(), SELECTION_TOOL::selectPoint(), DIALOG_LAYERS_SETUP::TransferDataFromWindow(), SCH_COMPONENT::UpdateAllPinCaches(), and SCH_FIND_COLLECTOR::UpdateIndex().

107  {
108  return (int) m_List.size();
109  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
const wxPoint& COLLECTOR::GetRefPos ( ) const
inlineinherited

Definition at line 223 of file collector.h.

References COLLECTOR::m_RefPos.

Referenced by PCB_EDIT_FRAME::OnRightClick().

223 { return m_RefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68
timestamp_t COLLECTOR::GetTime ( )
inlineinherited

Definition at line 217 of file collector.h.

References COLLECTOR::m_TimeAtCollection.

218  {
219  return m_TimeAtCollection;
220  }
timestamp_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:74
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 189 of file collector.h.

References i.

190  {
191  for( size_t i = 0; i < m_List.size(); i++ )
192  {
193  if( m_List[i] == aItem )
194  return true;
195  }
196 
197  return false;
198  }
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
SEARCH_RESULT LIB_COLLECTOR::Inspect ( EDA_ITEM aItem,
void *  aTestData 
)
overridevirtual

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

Parameters
aItemAn EDA_ITEM to examine.
aTestDatais not used in this class.
Returns
SEARCH_RESULT SEARCH_QUIT if the iterator is to stop the scan, else SEARCH_CONTINUE;

Implements COLLECTOR.

Definition at line 108 of file lib_collectors.cpp.

References COLLECTOR::Append(), DefaultTransform, LIB_ITEM::GetConvert(), LIB_ITEM::GetUnit(), LIB_ITEM::HitTest(), LIB_COLLECTOR_DATA::m_convert, m_data, COLLECTOR::m_RefPos, LIB_COLLECTOR_DATA::m_unit, and SEARCH_CONTINUE.

109 {
110  LIB_ITEM* item = (LIB_ITEM*) aItem;
111 
112 // wxLogDebug( wxT( "Inspecting item %s, unit %d, convert %d" ),
113 // GetChars( item->GetSelectMenuText() ), item->GetUnit(), item->GetConvert() );
114 
115  if( ( m_data.m_unit && item->GetUnit() && ( m_data.m_unit != item->GetUnit() ) )
116  || ( m_data.m_convert && item->GetConvert() && ( m_data.m_convert != item->GetConvert() ) )
117  || !item->HitTest( m_RefPos, -1, DefaultTransform ) )
118  return SEARCH_CONTINUE;
119 
120  Append( aItem );
121 
122  return SEARCH_CONTINUE;
123 }
int GetUnit() const
virtual bool HitTest(const wxPoint &aPosition) const override
Function HitTest tests if aPosition is contained within or on the bounding area of an item...
The base class for drawable items used by schematic library components.
Definition: lib_draw_item.h:66
void Append(EDA_ITEM *item)
Function Append adds an item to the end of the list.
Definition: collector.h:125
LIB_COLLECTOR_DATA m_data
TRANSFORM DefaultTransform
Definition: eeschema.cpp:58
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68
int GetConvert() const
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 237 of file collector.h.

References abs, GetNewTimeStamp(), wxPoint::x, and wxPoint::y.

238  {
239  const int distMax = 2; // adjust these here
240  const timestamp_t timeMax = 3; // seconds
241 
242  int dx = abs( aRefPos.x - m_RefPos.x );
243  int dy = abs( aRefPos.y - m_RefPos.y );
244 
245  if( dx <= distMax && dy <= distMax &&
246  GetNewTimeStamp() - m_TimeAtCollection <= timeMax )
247  return true;
248  else
249  return false;
250  }
long timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: base_struct.h:155
#define abs(a)
Definition: auxiliary.h:84
timestamp_t GetNewTimeStamp()
Definition: common.cpp:160
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
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 97 of file collector.h.

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

98  {
99  return ( (unsigned) aIndex < m_List.size() );
100  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
LIB_ITEM* LIB_COLLECTOR::operator[] ( int  aIndex) const
inline

Operator [] overloads COLLECTOR::operator[](int) to return a LIB_ITEM* instead of an EDA_ITEM* type.

Parameters
aIndexThe index into the list.
Returns
LIB_ITEM* at aIndex or NULL.

Definition at line 102 of file lib_collectors.h.

103  {
104  if( (unsigned)aIndex < (unsigned)GetCount() )
105  return (LIB_ITEM*) m_List[ aIndex ];
106 
107  return NULL;
108  }
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:106
The base class for drawable items used by schematic library components.
Definition: lib_draw_item.h:66
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
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 135 of file collector.h.

Referenced by connectedItemFilter(), connectedTrackFilter(), EDIT_TOOL::FootprintFilter(), SELECTION_TOOL::guessSelectionCandidates(), ROUTER_TOOL::NeighboringSegmentFilter(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), GERBVIEW_SELECTION_TOOL::selectPoint(), and SELECTION_TOOL::selectPoint().

136  {
137  m_List.erase( m_List.begin() + aIndex );
138  }
std::vector< EDA_ITEM * > m_List
A place to hold collected objects without taking ownership of their memory.
Definition: collector.h:65
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 145 of file collector.h.

References i.

146  {
147  for( size_t i = 0; i < m_List.size(); i++ )
148  {
149  if( m_List[i] == aItem )
150  {
151  m_List.erase( m_List.begin() + i);
152  return;
153  }
154  }
155  }
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
void COLLECTOR::SetBoundingBox ( const EDA_RECT aRefBox)
inlineinherited

Definition at line 225 of file collector.h.

225 { 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
void COLLECTOR::SetRefPos ( const wxPoint aRefPos)
inlineinherited

Definition at line 222 of file collector.h.

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

222 { m_RefPos = aRefPos; }
wxPoint m_RefPos
A point to test against, and that was used to make the collection.
Definition: collector.h:68
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 207 of file collector.h.

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

208  {
209  m_ScanTypes = scanTypes;
210  }
const KICAD_T * m_ScanTypes
Which object types to scan.
Definition: collector.h:62
void COLLECTOR::SetTimeNow ( )
inlineinherited

Definition at line 212 of file collector.h.

References GetNewTimeStamp().

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

213  {
215  }
timestamp_t GetNewTimeStamp()
Definition: common.cpp:160
timestamp_t m_TimeAtCollection
The time at which the collection was made.
Definition: collector.h:74

Member Data Documentation

const KICAD_T LIB_COLLECTOR::AllItems
static
Initial value:

A scan list for all schematic items.

Definition at line 60 of file lib_collectors.h.

Referenced by LIB_EDIT_FRAME::IsEditingDrawItem().

const KICAD_T LIB_COLLECTOR::AllItemsButPins
static
Initial value:

A scan list for all schematic items except pins.

Definition at line 85 of file lib_collectors.h.

const KICAD_T LIB_COLLECTOR::DoubleClickItems
static
Initial value:

A scan list for all double-clickable library items.

Definition at line 80 of file lib_collectors.h.

Referenced by LIB_EDIT_FRAME::OnLeftDClick().

const KICAD_T LIB_COLLECTOR::EditableItems
static
Initial value:

A scan list for all editable schematic items.

Definition at line 65 of file lib_collectors.h.

LIB_COLLECTOR_DATA LIB_COLLECTOR::m_data
private

Definition at line 53 of file lib_collectors.h.

Referenced by Collect(), and Inspect().

std::vector<EDA_ITEM*> COLLECTOR::m_List
protectedinherited
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().

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(), Inspect(), SCH_COLLECTOR::Inspect(), and GENERAL_COLLECTOR::Inspect().

const KICAD_T* COLLECTOR::m_ScanTypes
protectedinherited
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().

const KICAD_T LIB_COLLECTOR::MovableItems
static
Initial value:

A scan list for all movable schematic items.

Definition at line 70 of file lib_collectors.h.

const KICAD_T LIB_COLLECTOR::RotatableItems
static
Initial value:

A scan list for all rotatable schematic items.

Definition at line 75 of file lib_collectors.h.


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