KiCad PCB EDA Suite
Loading...
Searching...
No Matches
eda_item.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2013-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 2008-2015 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
6 * Copyright (C) 2008 Wayne Stambaugh <[email protected]>
7 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef EDA_ITEM_H
24#define EDA_ITEM_H
25
26#include <deque>
27#include <map>
28#include <memory>
29#include <set>
30
31#include <api/serializable.h>
32#include <core/typeinfo.h>
33#include <eda_item_flags.h>
34#include <eda_search_data.h>
35#include <view/view_item.h>
36#include <kiid.h>
37
39
40enum class BITMAPS : unsigned int;
41
42
44{
47};
48
54
55#define IGNORE_PARENT_GROUP false
56
60class UNITS_PROVIDER;
61class EDA_DRAW_FRAME;
62class EDA_GROUP;
63class MSG_PANEL_ITEM;
64class EMBEDDED_FILES;
65
66namespace google::protobuf { class Any; }
67
68
88typedef std::function< INSPECT_RESULT ( EDA_ITEM* aItem, void* aTestData ) > INSPECTOR_FUNC;
89
92
93
98{
99public:
100 virtual ~EDA_ITEM();
101
110 inline KICAD_T Type() const { return m_structType; }
111
112 EDA_ITEM* GetParent() const { return m_parent; }
113 virtual void SetParent( EDA_ITEM* aParent );
114
115 virtual void SetParentGroup( EDA_GROUP* aGroup ) { m_group = aGroup; }
116 virtual EDA_GROUP* GetParentGroup() const { return m_group; }
117
118 KIID GetParentGroupId() const;
119
125 bool HasSelectedAncestorGroup() const;
126
127 virtual bool IsLocked() const { return false; }
128 virtual void SetLocked( bool aLocked ) {}
129
130 inline bool IsModified() const { return m_flags & IS_CHANGED; }
131 inline bool IsNew() const { return m_flags & IS_NEW; }
132 inline bool IsMoving() const { return m_flags & IS_MOVING; }
133
134 inline bool IsSelected() const { return m_flags & SELECTED; }
135 inline bool IsEntered() const { return m_flags & ENTERED; }
136 inline bool IsBrightened() const { return ( m_flags & BRIGHTENED ) || m_netHighlighted; }
137
139 bool IsNetHighlighted() const;
140 void SetNetHighlighted( bool aHighlighted );
141
142 inline bool IsRollover() const { return m_isRollover; }
143 inline VECTOR2I GetRolloverPos() const { return m_rolloverPos; }
144 inline void SetIsRollover( bool aIsRollover, const VECTOR2I& aMousePos )
145 {
146 m_isRollover = aIsRollover;
147 m_rolloverPos = aMousePos;
148 }
149
150 inline void SetSelected() { SetFlags( SELECTED ); }
151 inline void SetBrightened() { SetFlags( BRIGHTENED ); }
152
153 inline void ClearSelected() { ClearFlags( SELECTED ); }
155
156 void SetModified();
157
158 void SetFlags( EDA_ITEM_FLAGS aMask ) { m_flags |= aMask; }
159 void XorFlags( EDA_ITEM_FLAGS aMask ) { m_flags ^= aMask; }
161 {
162 m_flags &= ~aMask;
163
164 if( aMask == EDA_ITEM_ALL_FLAGS )
165 m_netHighlighted = false;
166 }
167 EDA_ITEM_FLAGS GetFlags() const { return m_flags; }
168 bool HasFlag( EDA_ITEM_FLAGS aFlag ) const { return ( m_flags & aFlag ) == aFlag; }
169
171 {
172 constexpr int mask =
174
175 return m_flags & mask;
176 }
177
178 virtual void ClearEditFlags()
179 {
181 }
182
184 {
187
188 return m_flags & mask;
189 }
190
191 virtual void ClearTempFlags()
192 {
194 }
195
196 virtual bool RenderAsBitmap( double aWorldScale ) const { return false; }
197
198 void SetIsShownAsBitmap( bool aBitmap )
199 {
200 if( aBitmap )
202 else
204 }
205
206 inline bool IsShownAsBitmap() const { return m_flags & IS_SHOWN_AS_BITMAP; }
207
214 virtual bool IsType( const std::vector<KICAD_T>& aScanTypes ) const
215 {
216 for( KICAD_T scanType : aScanTypes )
217 {
218 if( scanType == SCH_LOCATE_ANY_T || scanType == m_structType )
219 return true;
220 }
221
222 return false;
223 }
224
232 void SetForceVisible( bool aEnable ) { m_forceVisible = aEnable; }
233 bool IsForceVisible() const { return m_forceVisible; }
234
242 const std::map<wxString, wxString>& GetCustomProperties() const
243 {
244 return m_customProperties;
245 }
246
247 void SetCustomProperties( const std::map<wxString, wxString>& aProps )
248 {
249 m_customProperties.clear();
250
251 for( const auto& [ key, value ] : aProps )
252 SetCustomProperty( key, value );
253 }
254
255 void SetCustomProperty( const wxString& aKey, const wxString& aValue )
256 {
257 for( auto& [ key, value ] : m_customProperties )
258 {
259 if( key.CmpNoCase( aKey ) == 0 )
260 {
261 value = aValue;
262 return;
263 }
264 }
265
266 m_customProperties.emplace( aKey, aValue );
267 }
268
269 bool HasCustomProperties() const { return !m_customProperties.empty(); }
271
272 void RemoveCustomProperty( const wxString& aKey );
273
278 std::vector<wxString> RemoveConflictingCustomProperties();
279
283 bool GetCustomProperty( const wxString& aKey, wxString& aValue ) const;
284
285 std::vector<PROPERTY_BASE*> GetCustomPropertiesAsInspectables() const;
286
287 std::vector<PROPERTY_BASE*> GetDynamicProperties() const override;
288
296 virtual void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList )
297 {
298 }
299
300 virtual wxString GetFriendlyName() const;
301
309 virtual bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const
310 {
311 return false; // derived classes should override this function
312 }
313
322 virtual bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const
323 {
324 return false; // derived classes should override this function
325 }
326
334 virtual bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const
335 {
336 return false; // derived classes should override this function
337 }
338
346 virtual const BOX2I GetBoundingBox() const;
347
348 virtual VECTOR2I GetPosition() const { return VECTOR2I(); }
349 virtual void SetPosition( const VECTOR2I& aPos ){};
350
355 virtual const VECTOR2I GetFocusPosition() const { return GetPosition(); }
356
364 virtual VECTOR2I GetSortPosition() const { return GetPosition(); }
365
378 virtual EDA_ITEM* Clone() const;
379
394 virtual INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
395 const std::vector<KICAD_T>& aScanTypes );
396
400 template< class T >
401 static INSPECT_RESULT IterateForward( std::deque<T>& aList, INSPECTOR inspector, void* testData,
402 const std::vector<KICAD_T>& scanTypes )
403 {
404 for( const auto& it : aList )
405 {
406 EDA_ITEM* item = static_cast<EDA_ITEM*>( it );
407
408 if( item && item->Visit( inspector, testData, scanTypes ) == INSPECT_RESULT::QUIT )
409 {
411 }
412 }
413
415 }
416
420 template <class T>
421 static INSPECT_RESULT IterateForward( std::vector<T>& aList, INSPECTOR inspector,
422 void* testData, const std::vector<KICAD_T>& scanTypes )
423 {
424 for( const auto& it : aList )
425 {
426 EDA_ITEM* item = static_cast<EDA_ITEM*>( it );
427
428 if( item && item->Visit( inspector, testData, scanTypes ) == INSPECT_RESULT::QUIT )
429 {
431 }
432 }
433
435 }
436
441 wxString GetTypeDesc() const;
442
454 virtual wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const;
455
456 virtual wxString DisambiguateItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const
457 {
458 return GetItemDescription( aUnitsProvider, aFull );
459 }
460
469 virtual BITMAPS GetMenuImage() const;
470
482 virtual bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const
483 {
484 return false;
485 }
486
496 static bool Replace( const EDA_SEARCH_DATA& aSearchData, wxString& aText );
497
509 virtual bool Replace( const EDA_SEARCH_DATA& aSearchData, void* aAuxData = nullptr )
510 {
511 return false;
512 }
513
520 virtual bool IsReplaceable() const { return false; }
521
528 bool operator<( const EDA_ITEM& aItem ) const;
529
538 static bool Sort( const EDA_ITEM* aLeft, const EDA_ITEM* aRight ) { return *aLeft < *aRight; }
539
543 EDA_ITEM& operator=( const EDA_ITEM& aItem );
544
545 virtual const BOX2I ViewBBox() const override;
546
547 virtual std::vector<int> ViewGetLayers() const override;
548
549 virtual EMBEDDED_FILES* GetEmbeddedFiles() { return nullptr; }
550 virtual const std::vector<wxString>* GetEmbeddedFonts() { return nullptr; }
551
552#if defined(DEBUG)
553
563 virtual void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); };
564
565 void ShowDummy( std::ostream& os ) const;
566
574 static std::ostream& NestedSpace( int nestLevel, std::ostream& os );
575
576#endif
577
578protected:
579 EDA_ITEM( EDA_ITEM* parent, KICAD_T idType, bool isSCH_ITEM = false, bool isBOARD_ITEM = false );
580 EDA_ITEM( KICAD_T idType, bool isSCH_ITEM = false, bool isBOARD_ITEM = false );
581 EDA_ITEM( const EDA_ITEM& base );
582
592 bool Matches( const wxString& aText, const EDA_SEARCH_DATA& aSearchData ) const;
593
594 EDA_ITEM* findParent( KICAD_T aType ) const;
595
596public:
598
599private:
604
605protected:
609
613 bool m_netHighlighted = false;
614
615 std::map<wxString, wxString> m_customProperties;
616
621 mutable std::map<wxString, std::unique_ptr<PROPERTY_BASE>> m_dynamicCustomPropsCache;
622};
623
624
631inline EDA_ITEM* new_clone( const EDA_ITEM& aItem ) { return aItem.Clone(); }
632
637{
638 bool operator()(const EDA_ITEM* item1, const EDA_ITEM* item2) const
639 {
640 assert( item1 != nullptr && item2 != nullptr );
641
642 if( item1->m_Uuid == item2->m_Uuid )
643 return item1 < item2;
644
645 return item1->m_Uuid < item2->m_Uuid;
646 }
647};
648
649
656typedef std::vector< EDA_ITEM* > EDA_ITEMS;
657
658typedef std::set< EDA_ITEM*, CompareByUuid > EDA_ITEM_SET;
659
660#endif // EDA_ITEM_H
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:927
The base class for create windows for drawing purpose.
A set of EDA_ITEMs (i.e., without duplicates).
Definition eda_group.h:43
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:98
virtual bool HitTest(const BOX2I &aRect, bool aContained, int aAccuracy=0) const
Test if aRect intersects this item.
Definition eda_item.h:322
virtual VECTOR2I GetPosition() const
Definition eda_item.h:348
virtual void ClearEditFlags()
Definition eda_item.h:178
EDA_ITEM & operator=(const EDA_ITEM &aItem)
Assign the members of aItem to another object.
Definition eda_item.cpp:488
virtual const VECTOR2I GetFocusPosition() const
Similar to GetPosition() but allows items to return their visual center rather than their anchor.
Definition eda_item.h:355
void SetIsRollover(bool aIsRollover, const VECTOR2I &aMousePos)
Definition eda_item.h:144
VECTOR2I GetRolloverPos() const
Definition eda_item.h:143
virtual void SetPosition(const VECTOR2I &aPos)
Definition eda_item.h:349
virtual void SetLocked(bool aLocked)
Definition eda_item.h:128
std::vector< wxString > RemoveConflictingCustomProperties()
Remove custom properties whose keys collide with an existing field or built-in property name (matched...
Definition eda_item.cpp:168
void ClearCustomProperties()
Definition eda_item.h:270
virtual const BOX2I GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
Definition eda_item.cpp:270
wxString GetTypeDesc() const
Return a translated description of the type for this EDA_ITEM for display in user facing messages.
Definition eda_item.cpp:556
static bool Sort(const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
Helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM poin...
Definition eda_item.h:538
EDA_ITEM_FLAGS GetEditFlags() const
Definition eda_item.h:170
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition eda_item.h:158
std::vector< PROPERTY_BASE * > GetCustomPropertiesAsInspectables() const
Definition eda_item.cpp:200
bool GetCustomProperty(const wxString &aKey, wxString &aValue) const
Definition eda_item.cpp:188
virtual wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const
Return a user-visible description string of this item.
Definition eda_item.cpp:304
void SetModified()
Definition eda_item.cpp:260
const KIID m_Uuid
Definition eda_item.h:597
bool m_forceVisible
Definition eda_item.h:612
void RemoveCustomProperty(const wxString &aKey)
Definition eda_item.cpp:161
virtual EDA_GROUP * GetParentGroup() const
Definition eda_item.h:116
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:110
bool IsEntered() const
Definition eda_item.h:135
void ClearSelected()
Definition eda_item.h:153
VECTOR2I m_rolloverPos
Definition eda_item.h:610
virtual const std::vector< wxString > * GetEmbeddedFonts()
Definition eda_item.h:550
bool operator<(const EDA_ITEM &aItem) const
Test if another item is less than this object.
Definition eda_item.cpp:479
void SetForceVisible(bool aEnable)
Set and clear force visible flag used to force the item to be drawn even if it's draw attribute is se...
Definition eda_item.h:232
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition eda_item.h:160
virtual bool Replace(const EDA_SEARCH_DATA &aSearchData, void *aAuxData=nullptr)
Perform a text replace using the find and replace criteria in aSearchData on items that support text ...
Definition eda_item.h:509
EDA_ITEM_FLAGS m_flags
Definition eda_item.h:606
void SetIsShownAsBitmap(bool aBitmap)
Definition eda_item.h:198
virtual std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
Definition eda_item.cpp:516
EDA_ITEM_FLAGS GetTempFlags() const
Definition eda_item.h:183
virtual bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const
Compare the item against the search criteria in aSearchData.
Definition eda_item.h:482
EDA_GROUP * m_group
The group this item belongs to, if any. No ownership implied.
Definition eda_item.h:608
virtual void SetParentGroup(EDA_GROUP *aGroup)
Definition eda_item.h:115
static INSPECT_RESULT IterateForward(std::deque< T > &aList, INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes)
This changes first parameter to avoid the DList and use the main queue instead.
Definition eda_item.h:401
void SetCustomProperties(const std::map< wxString, wxString > &aProps)
Definition eda_item.h:247
bool IsSelected() const
Definition eda_item.h:134
bool HasCustomProperties() const
Definition eda_item.h:269
virtual void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
Definition eda_item.h:296
KIID GetParentGroupId() const
Definition eda_item.cpp:232
void SetSelected()
Definition eda_item.h:150
virtual bool IsType(const std::vector< KICAD_T > &aScanTypes) const
Check whether the item is one of the listed types.
Definition eda_item.h:214
virtual INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes)
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition eda_item.cpp:287
std::map< wxString, wxString > m_customProperties
Definition eda_item.h:615
bool IsModified() const
Definition eda_item.h:130
bool IsShownAsBitmap() const
Definition eda_item.h:206
void SetNetHighlighted(bool aHighlighted)
Definition eda_item.cpp:131
void ClearBrightened()
Definition eda_item.h:154
void SetBrightened()
Definition eda_item.h:151
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:309
virtual wxString GetFriendlyName() const
Definition eda_item.cpp:565
EDA_ITEM * GetParent() const
Definition eda_item.h:112
bool HasSelectedAncestorGroup() const
Definition eda_item.cpp:241
bool m_isRollover
Definition eda_item.h:611
bool IsRollover() const
Definition eda_item.h:142
virtual ~EDA_ITEM()
void SetCustomProperty(const wxString &aKey, const wxString &aValue)
Definition eda_item.h:255
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
Definition eda_item.cpp:278
bool HasFlag(EDA_ITEM_FLAGS aFlag) const
Definition eda_item.h:168
virtual EMBEDDED_FILES * GetEmbeddedFiles()
Definition eda_item.h:549
bool IsBrightened() const
Definition eda_item.h:136
virtual VECTOR2I GetSortPosition() const
Return the coordinates that should be used for sorting this element visually compared to other elemen...
Definition eda_item.h:364
void XorFlags(EDA_ITEM_FLAGS aMask)
Definition eda_item.h:159
std::map< wxString, std::unique_ptr< PROPERTY_BASE > > m_dynamicCustomPropsCache
Per-key cache of dynamic property descriptors for m_customProperties, owned by this object.
Definition eda_item.h:621
virtual const BOX2I ViewBBox() const override
Return the bounding box of the item covering all its layers.
Definition eda_item.cpp:509
bool m_netHighlighted
Definition eda_item.h:613
virtual bool RenderAsBitmap(double aWorldScale) const
Definition eda_item.h:196
bool IsNetHighlighted() const
Net highlighting must not clear brightening owned by find or picker tools.
Definition eda_item.cpp:125
std::vector< PROPERTY_BASE * > GetDynamicProperties() const override
Return dynamically-computed properties specific to this object instance (e.g.
Definition eda_item.cpp:226
virtual void SetParent(EDA_ITEM *aParent)
Definition eda_item.cpp:153
virtual bool IsLocked() const
Definition eda_item.h:127
static INSPECT_RESULT IterateForward(std::vector< T > &aList, INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &scanTypes)
Change first parameter to avoid the DList and use std::vector instead.
Definition eda_item.h:421
EDA_ITEM * m_parent
Owner.
Definition eda_item.h:607
bool IsForceVisible() const
Definition eda_item.h:233
virtual bool HitTest(const SHAPE_LINE_CHAIN &aPoly, bool aContained) const
Test if aPoly intersects this item.
Definition eda_item.h:334
EDA_ITEM_FLAGS GetFlags() const
Definition eda_item.h:167
static bool Replace(const EDA_SEARCH_DATA &aSearchData, wxString &aText)
Perform a text replace on aText using the find and replace criteria in aSearchData on items that supp...
Definition eda_item.cpp:396
virtual wxString DisambiguateItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const
Definition eda_item.h:456
bool IsMoving() const
Definition eda_item.h:132
const std::map< wxString, wxString > & GetCustomProperties() const
Custom user-defined string key/value properties attached to this item.
Definition eda_item.h:242
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition eda_item.h:603
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:84
bool IsNew() const
Definition eda_item.h:131
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition eda_item.h:520
virtual void ClearTempFlags()
Definition eda_item.h:191
EDA_ITEM * findParent(KICAD_T aType) const
Definition eda_item.cpp:137
virtual BITMAPS GetMenuImage() const
Return a pointer to an image to be used in menus.
Definition eda_item.cpp:524
An abstract base class for deriving all objects that can be added to a VIEW.
Definition view_item.h:82
Definition kiid.h:46
EDA_MSG_PANEL items for displaying messages.
Definition msgpanel.h:50
Interface for objects that can be serialized to Protobuf messages.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
EDA_ITEM * new_clone(const EDA_ITEM &aItem)
Provide cloning capabilities for all Boost pointer containers of EDA_ITEM pointers.
Definition eda_item.h:631
RECURSE_MODE
Definition eda_item.h:50
@ RECURSE
Definition eda_item.h:51
@ NO_RECURSE
Definition eda_item.h:52
INSPECT_RESULT
Definition eda_item.h:44
std::set< EDA_ITEM *, CompareByUuid > EDA_ITEM_SET
Definition eda_item.h:658
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
Definition eda_item.h:91
std::function< INSPECT_RESULT(EDA_ITEM *aItem, void *aTestData) > INSPECTOR_FUNC
Used to inspect and possibly collect the (search) results of iterating over a list or tree of KICAD_T...
Definition eda_item.h:88
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
#define IS_CHANGED
Item was edited, and modified.
#define BRIGHTENED
item is drawn with a bright contour
#define IS_SHOWN_AS_BITMAP
#define IS_NEW
New item, just created.
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
#define SELECTED
Item was manually selected by the user.
#define SELECTED_BY_DRAG
Item was algorithmically selected as a dragged item.
#define SELECTION_CANDIDATE
indicates an item is a candidate for selection
#define CONNECTIVITY_CANDIDATE
flag indicating that the structure is connected for connectivity
#define EDA_ITEM_ALL_FLAGS
#define IS_BROKEN
Is a segment just broken by BreakSegment.
#define ENTERED
indicates a group has been entered
#define STRUCT_DELETED
flag indication structures to be erased
#define SKIP_STRUCT
flag indicating that the structure should be ignored
std::uint32_t EDA_ITEM_FLAGS
#define CANDIDATE
flag indicating that the structure is connected
#define IS_MOVING
Item being moved.
std::vector< EDA_ITEM * > EDA_ITEMS
Comparison functor for sorting EDA_ITEM pointers by their UUID.
Definition eda_item.h:637
bool operator()(const EDA_ITEM *item1, const EDA_ITEM *item2) const
Definition eda_item.h:638
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:70
@ SCH_LOCATE_ANY_T
Definition typeinfo.h:195
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683