KiCad PCB EDA Suite
EE_COLLECTOR Class Reference

#include <ee_collectors.h>

Inheritance diagram for EE_COLLECTOR:
COLLECTOR

Public Types

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

Public Member Functions

 EE_COLLECTOR (const std::vector< KICAD_T > &aScanTypes={ SCH_LOCATE_ANY_T })
 
SCH_ITEMoperator[] (int aIndex) const override
 Overload COLLECTOR::operator[](int) to return a SCH_ITEM instead of an EDA_ITEM. More...
 
INSPECT_RESULT Inspect (EDA_ITEM *aItem, void *aTestData) override
 
void Collect (SCH_SCREEN *aScreen, const std::vector< KICAD_T > &aScanTypes, const VECTOR2I &aPos, int aUnit=0, int aConvert=0)
 Scan a EDA_ITEM using this class's Inspector method which does the collection. More...
 
void Collect (LIB_ITEMS_CONTAINER &aItems, const std::vector< KICAD_T > &aScanTypes, const VECTOR2I &aPos, int aUnit=0, int aConvert=0)
 Scan an EDA_ITEM using this class's Inspector method which does the collection. More...
 
bool IsCorner () const
 Test if the collected items form a corner of two line segments. More...
 
ITER begin ()
 
CITER begin () const
 
ITER end ()
 
CITER end () const
 
int GetCount () const
 Return the number of objects in the list. More...
 
void Empty ()
 Clear the list. More...
 
void Append (EDA_ITEM *item)
 Add an item to the end of the list. More...
 
void Remove (int aIndex)
 Remove the item at aIndex (first position is 0). More...
 
void Remove (const EDA_ITEM *aItem)
 Remove the item aItem (if exists in the collector). More...
 
bool HasAdditionalItems ()
 Test if the collector has heuristic backup items. More...
 
void Combine ()
 Re-combine the backup list into the main list of the collector. More...
 
void Transfer (int aIndex)
 Move the item at aIndex (first position is 0) to the backup list. More...
 
void Transfer (EDA_ITEM *aItem)
 Move aItem (if exists in the collector) to the backup list. More...
 
bool HasItem (const EDA_ITEM *aItem) const
 Tests if aItem has already been collected. More...
 
void SetScanTypes (const std::vector< KICAD_T > &aTypes)
 Record the list of KICAD_T types to consider for collection by the Inspect() function. More...
 
void SetRefPos (const VECTOR2I &aRefPos)
 
int CountType (KICAD_T aType)
 Count the number of items matching aType. More...
 

Public Attributes

int m_Unit
 
int m_Convert
 
bool m_ShowPinElectricalTypes
 
int m_Threshold
 
wxString m_MenuTitle
 
bool m_MenuCancelled
 

Static Public Attributes

static const std::vector< KICAD_TEditableItems
 
static const std::vector< KICAD_TMovableItems
 
static const std::vector< KICAD_TFieldOwners
 

Protected Attributes

std::vector< EDA_ITEM * > m_list
 
std::vector< EDA_ITEM * > m_backupList
 
std::vector< KICAD_Tm_scanTypes
 
INSPECTOR_FUNC m_inspector
 
VECTOR2I m_refPos
 

Detailed Description

Definition at line 39 of file ee_collectors.h.

Member Typedef Documentation

◆ CITER

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

Definition at line 71 of file collector.h.

◆ ITER

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

Definition at line 70 of file collector.h.

Constructor & Destructor Documentation

◆ EE_COLLECTOR()

EE_COLLECTOR::EE_COLLECTOR ( const std::vector< KICAD_T > &  aScanTypes = SCH_LOCATE_ANY_T })
inline

Definition at line 46 of file ee_collectors.h.

46 { SCH_LOCATE_ANY_T } ) :
47 m_Unit( 0 ),
48 m_Convert( 0 ),
50 {
51 SetScanTypes( aScanTypes );
52 }
void SetScanTypes(const std::vector< KICAD_T > &aTypes)
Record the list of KICAD_T types to consider for collection by the Inspect() function.
Definition: collector.h:211
bool m_ShowPinElectricalTypes
@ SCH_LOCATE_ANY_T
Definition: typeinfo.h:183

References SCH_LOCATE_ANY_T.

Member Function Documentation

◆ Append()

◆ begin() [1/2]

ITER COLLECTOR::begin ( )
inlineinherited

Definition at line 73 of file collector.h.

73{ return m_list.begin(); }

References COLLECTOR::m_list.

◆ begin() [2/2]

CITER COLLECTOR::begin ( ) const
inlineinherited

Definition at line 75 of file collector.h.

75{ return m_list.cbegin(); }

References COLLECTOR::m_list.

◆ Collect() [1/2]

void EE_COLLECTOR::Collect ( LIB_ITEMS_CONTAINER aItems,
const std::vector< KICAD_T > &  aScanTypes,
const VECTOR2I aPos,
int  aUnit = 0,
int  aConvert = 0 
)

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

Parameters
aItemsis a LIB_SYMBOL multivector holding the symbol items.
aScanTypesis a list of KICAD_T types that determines what is to be collected and the priority order of the resulting collection.
aPosare the coordinates to use in hit testing.
aUnitis the symbol unit filter (for symbol editor).
aConvertis the DeMorgan filter (for symbol editor).

Definition at line 139 of file ee_collectors.cpp.

141{
142 Empty(); // empty the collection just in case
143
144 SetScanTypes( aFilterList );
145 m_Unit = aUnit;
146 m_Convert = aConvert;
147
148 // remember where the snapshot was taken from and pass refPos to the Inspect() function.
149 SetRefPos( aPos );
150
151 for( LIB_ITEM& item : aItems )
152 {
153 if( item.Visit( m_inspector, nullptr, m_scanTypes ) == INSPECT_RESULT::QUIT )
154 break;
155 }
156}
INSPECTOR_FUNC m_inspector
Definition: collector.h:244
void Empty()
Clear the list.
Definition: collector.h:89
void SetRefPos(const VECTOR2I &aRefPos)
Definition: collector.h:213
std::vector< KICAD_T > m_scanTypes
Definition: collector.h:243
The base class for drawable items used by schematic library symbols.
Definition: lib_item.h:61

References COLLECTOR::Empty(), m_Convert, COLLECTOR::m_inspector, COLLECTOR::m_scanTypes, m_Unit, QUIT, COLLECTOR::SetRefPos(), and COLLECTOR::SetScanTypes().

◆ Collect() [2/2]

void EE_COLLECTOR::Collect ( SCH_SCREEN aScreen,
const std::vector< KICAD_T > &  aScanTypes,
const VECTOR2I aPos,
int  aUnit = 0,
int  aConvert = 0 
)

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

Parameters
aScreenThe eeschema screen to use for scanning
aScanTypesA list of KICAD_T types that determines what is to be collected and the priority order of the resulting collection.
aPosare the coordinates to use in hit testing.
aUnitis the symbol unit filter (for symbol editor).
aConvertis the DeMorgan filter (for symbol editor)

Definition at line 119 of file ee_collectors.cpp.

121{
122 Empty(); // empty the collection just in case
123
124 SetScanTypes( aFilterList );
125 m_Unit = aUnit;
126 m_Convert = aConvert;
127
128 // remember where the snapshot was taken from and pass refPos to the Inspect() function.
129 SetRefPos( aPos );
130
131 if( aScreen )
132 {
133 for( SCH_ITEM *item : aScreen->Items().Overlapping( SCH_LOCATE_ANY_T, aPos, m_Threshold ) )
134 item->Visit( m_inspector, nullptr, m_scanTypes );
135 }
136}
int m_Threshold
Definition: collector.h:234
EE_TYPE Overlapping(const BOX2I &aRect) const
Definition: sch_rtree.h:243
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:147
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:109

References COLLECTOR::Empty(), SCH_SCREEN::Items(), m_Convert, COLLECTOR::m_inspector, COLLECTOR::m_scanTypes, COLLECTOR::m_Threshold, m_Unit, EE_RTREE::Overlapping(), SCH_LOCATE_ANY_T, COLLECTOR::SetRefPos(), and COLLECTOR::SetScanTypes().

Referenced by EE_SELECTION_TOOL::CollectHits(), SCH_EDIT_TOOL::DeleteItemCursor(), and EE_SELECTION_TOOL::GetNode().

◆ Combine()

void COLLECTOR::Combine ( )
inlineinherited

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

Definition at line 140 of file collector.h.

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

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

Referenced by SELECTION_TOOL::doSelectionMenu().

◆ CountType()

int COLLECTOR::CountType ( KICAD_T  aType)
inlineinherited

Count the number of items matching aType.

Parameters
aTypetype we are interested in.
Returns
number of occurrences.

Definition at line 221 of file collector.h.

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

References COLLECTOR::m_list.

Referenced by ROUTER_TOOL::NeighboringSegmentFilter().

◆ Empty()

◆ end() [1/2]

ITER COLLECTOR::end ( )
inlineinherited

Definition at line 74 of file collector.h.

74{ return m_list.end(); }

References COLLECTOR::m_list.

◆ end() [2/2]

CITER COLLECTOR::end ( ) const
inlineinherited

Definition at line 76 of file collector.h.

76{ return m_list.cend(); }

References COLLECTOR::m_list.

◆ GetCount()

int COLLECTOR::GetCount ( ) const
inlineinherited

Return the number of objects in the list.

Definition at line 81 of file collector.h.

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

References COLLECTOR::m_list.

Referenced by BOARD_EDITOR_CONTROL::AssignNetclass(), BuildBoardPolygonOutlines(), BuildFootprintPolygonOutlines(), EDIT_TOOL::ChangeTrackWidth(), EE_SELECTION_TOOL::CollectHits(), connectedItemFilter(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), CONVERT_TOOL::CreateLines(), SCH_EDIT_TOOL::DeleteItemCursor(), PCB_CONTROL::DeleteItemCursor(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), SELECTION_TOOL::doSelectionMenu(), EDIT_TOOL::Drag(), PAD_TOOL::EnumeratePads(), EDIT_TOOL::FilletLines(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectedItems(), PCB_SELECTION_TOOL::FilterCollectorForFreePads(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), PCB_SELECTION_TOOL::FilterCollectorForMarkers(), EDIT_TOOL::FootprintFilter(), EE_SELECTION_TOOL::GetNode(), PANEL_SETUP_LAYERS::getNonRemovableLayers(), PANEL_SETUP_LAYERS::getRemovedLayersWithItems(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), GENDRILL_WRITER_BASE::getUniqueLayerPairs(), GROUP_TOOL::Group(), PL_SELECTION_TOOL::guessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), BOARD_INSPECTION_TOOL::highlightNet(), PCB_EDIT_FRAME::inferLegacyEdgeClearance(), IsCorner(), EE_SELECTION_TOOL::Main(), DSN::SPECCTRA_DB::makeIMAGE(), EE_SELECTION_TOOL::narrowSelection(), ROUTER_TOOL::NeighboringSegmentFilter(), COLLECTOR::operator[](), operator[](), GERBER_COLLECTOR::operator[](), PCB_COLLECTOR::operator[](), EDIT_TOOL::PackAndMoveFootprints(), EDIT_TOOL::PadFilter(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), PL_SELECTION_TOOL::SelectPoint(), PCB_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::selectPoint(), EDIT_TOOL::Swap(), and PANEL_SETUP_LAYERS::TransferDataFromWindow().

◆ HasAdditionalItems()

bool COLLECTOR::HasAdditionalItems ( )
inlineinherited

Test if the collector has heuristic backup items.

Returns
true if Combine() can run to bring secondary items into the list.

Definition at line 132 of file collector.h.

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

References COLLECTOR::m_backupList.

Referenced by SELECTION_TOOL::doSelectionMenu().

◆ HasItem()

bool COLLECTOR::HasItem ( const EDA_ITEM aItem) const
inlineinherited

Tests if aItem has already been collected.

Parameters
aItemThe EDA_ITEM* to be tested.
Returns
True if aItem is already collected.

Definition at line 195 of file collector.h.

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

References COLLECTOR::m_list.

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

◆ Inspect()

INSPECT_RESULT EE_COLLECTOR::Inspect ( EDA_ITEM aItem,
void *  aTestData 
)
overridevirtual

Reimplemented from COLLECTOR.

Definition at line 88 of file ee_collectors.cpp.

89{
90 if( m_Unit || m_Convert )
91 {
92 LIB_ITEM* lib_item = dynamic_cast<LIB_ITEM*>( aItem );
93
94 // Special selection rules apply to pins of different units when edited in synchronized
95 // pins mode. Leave it to EE_SELECTION_TOOL::Selectable() to decide what to do with them.
96
97 if( lib_item && lib_item->Type() != LIB_PIN_T )
98 {
99 if( m_Unit && lib_item->GetUnit() && lib_item->GetUnit() != m_Unit )
101
102 if( m_Convert && lib_item->GetConvert() && lib_item->GetConvert() != m_Convert )
104 }
105 }
106
108 aItem->SetFlags( SHOW_ELEC_TYPE );
109
110 if( aItem->HitTest( m_refPos, m_Threshold ) )
111 Append( aItem );
112
113 aItem->ClearFlags( SHOW_ELEC_TYPE );
114
116}
VECTOR2I m_refPos
Definition: collector.h:246
void Append(EDA_ITEM *item)
Add an item to the end of the list.
Definition: collector.h:99
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:139
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:97
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:141
virtual bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const
Test if aPosition is inside or on the boundary of this item.
Definition: eda_item.h:222
int GetUnit() const
Definition: lib_item.h:273
int GetConvert() const
Definition: lib_item.h:276
#define SHOW_ELEC_TYPE
Show pin electrical type. Shared with IS_ROLLOVER.
@ LIB_PIN_T
Definition: typeinfo.h:202

References COLLECTOR::Append(), EDA_ITEM::ClearFlags(), CONTINUE, LIB_ITEM::GetConvert(), LIB_ITEM::GetUnit(), EDA_ITEM::HitTest(), LIB_PIN_T, m_Convert, COLLECTOR::m_refPos, m_ShowPinElectricalTypes, COLLECTOR::m_Threshold, m_Unit, EDA_ITEM::SetFlags(), SHOW_ELEC_TYPE, and EDA_ITEM::Type().

◆ IsCorner()

bool EE_COLLECTOR::IsCorner ( ) const

Test if the collected items form a corner of two line segments.

Returns
True if the collected items form a corner of two line segments.

Definition at line 159 of file ee_collectors.cpp.

160{
161 if( GetCount() != 2 )
162 return false;
163
164 bool is_busentry0 = ( dynamic_cast<SCH_BUS_ENTRY_BASE*>( m_list[0] ) != nullptr );
165 bool is_busentry1 = ( dynamic_cast<SCH_BUS_ENTRY_BASE*>( m_list[1] ) != nullptr );
166
167 if(( m_list[0]->Type() == SCH_LINE_T) && ( m_list[1]->Type() == SCH_LINE_T) )
168 return ( ( SCH_LINE* ) m_list[0])->GetLayer() == ( ( SCH_LINE* ) m_list[1])->GetLayer();
169
170 if(( m_list[0]->Type() == SCH_LINE_T) && is_busentry1 )
171 return true;
172
173 if( is_busentry0 && ( m_list[1]->Type() == SCH_LINE_T) )
174 return true;
175
176 return false;
177}
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:81
Base class for a bus or wire entry.
Definition: sch_bus_entry.h:38
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:40
@ SCH_LINE_T
Definition: typeinfo.h:146

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

◆ operator[]()

SCH_ITEM * EE_COLLECTOR::operator[] ( int  aIndex) const
inlineoverridevirtual

Overload COLLECTOR::operator[](int) to return a SCH_ITEM instead of an EDA_ITEM.

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

Reimplemented from COLLECTOR.

Definition at line 60 of file ee_collectors.h.

61 {
62 if( (unsigned)aIndex < (unsigned)GetCount() )
63 return (SCH_ITEM*) m_list[ aIndex ];
64
65 return nullptr;
66 }

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

◆ Remove() [1/2]

void COLLECTOR::Remove ( const EDA_ITEM aItem)
inlineinherited

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

Parameters
aItemthe item to be removed.

Definition at line 119 of file collector.h.

120 {
121 alg::delete_if( m_list, [&aItem]( const EDA_ITEM* aCandidate )
122 {
123 return aCandidate == aItem;
124 } );
125 }
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
void delete_if(_Container &__c, _Function &&__f)
Deletes all values from __c for which __f returns true.
Definition: kicad_algo.h:173

References alg::delete_if(), and COLLECTOR::m_list.

◆ Remove() [2/2]

◆ SetRefPos()

void COLLECTOR::SetRefPos ( const VECTOR2I aRefPos)
inlineinherited

Definition at line 213 of file collector.h.

213{ m_refPos = aRefPos; }

References COLLECTOR::m_refPos.

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

◆ SetScanTypes()

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

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

Parameters
aScanTypesA list of KICAD_Ts.

Definition at line 211 of file collector.h.

211{ m_scanTypes = aTypes; }

References COLLECTOR::m_scanTypes.

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

◆ Transfer() [1/2]

void COLLECTOR::Transfer ( EDA_ITEM aItem)
inlineinherited

Move aItem (if exists in the collector) to the backup list.

Parameters
aItemthe item to be moved.

Definition at line 162 of file collector.h.

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

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

◆ Transfer() [2/2]

void COLLECTOR::Transfer ( int  aIndex)
inlineinherited

Move the item at aIndex (first position is 0) to the backup list.

Parameters
aIndexThe index into the list.

Definition at line 151 of file collector.h.

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

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

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

Member Data Documentation

◆ EditableItems

const std::vector< KICAD_T > EE_COLLECTOR::EditableItems
static
Initial value:
= {
}
@ SCH_SYMBOL_T
Definition: typeinfo.h:156
@ SCH_FIELD_T
Definition: typeinfo.h:155
@ SCH_DIRECTIVE_LABEL_T
Definition: typeinfo.h:154
@ SCH_LABEL_T
Definition: typeinfo.h:151
@ SCH_SHEET_T
Definition: typeinfo.h:158
@ SCH_SHAPE_T
Definition: typeinfo.h:147
@ SCH_HIER_LABEL_T
Definition: typeinfo.h:153
@ SCH_SHEET_PIN_T
Definition: typeinfo.h:157
@ SCH_TEXT_T
Definition: typeinfo.h:150
@ SCH_BUS_WIRE_ENTRY_T
Definition: typeinfo.h:144
@ SCH_BITMAP_T
Definition: typeinfo.h:148
@ SCH_TEXTBOX_T
Definition: typeinfo.h:149
@ SCH_GLOBAL_LABEL_T
Definition: typeinfo.h:152
@ SCH_JUNCTION_T
Definition: typeinfo.h:142

Definition at line 42 of file ee_collectors.h.

Referenced by SCH_EDIT_TOOL::Properties().

◆ FieldOwners

const std::vector< KICAD_T > EE_COLLECTOR::FieldOwners
static
Initial value:

Definition at line 44 of file ee_collectors.h.

Referenced by SCH_EDIT_TOOL::AutoplaceFields(), and SCH_EDIT_TOOL::Init().

◆ m_backupList

std::vector<EDA_ITEM*> COLLECTOR::m_backupList
protectedinherited

◆ m_Convert

int EE_COLLECTOR::m_Convert

Definition at line 105 of file ee_collectors.h.

Referenced by Collect(), and Inspect().

◆ m_inspector

INSPECTOR_FUNC COLLECTOR::m_inspector
protectedinherited

◆ m_list

◆ m_MenuCancelled

bool COLLECTOR::m_MenuCancelled
inherited

◆ m_MenuTitle

wxString COLLECTOR::m_MenuTitle
inherited

Definition at line 236 of file collector.h.

Referenced by SELECTION_TOOL::doSelectionMenu().

◆ m_refPos

VECTOR2I COLLECTOR::m_refPos
protectedinherited

◆ m_scanTypes

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

◆ m_ShowPinElectricalTypes

bool EE_COLLECTOR::m_ShowPinElectricalTypes

Definition at line 107 of file ee_collectors.h.

Referenced by EE_SELECTION_TOOL::CollectHits(), and Inspect().

◆ m_Threshold

◆ m_Unit

int EE_COLLECTOR::m_Unit

Definition at line 104 of file ee_collectors.h.

Referenced by Collect(), and Inspect().

◆ MovableItems


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