KiCad PCB EDA Suite
Loading...
Searching...
No Matches
lib_symbol.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) 2004-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 2008 Wayne Stambaugh <[email protected]>
6 * Copyright (C) 2022 CERN
7 * Copyright (C) 2004-2023 KiCad Developers, see change_log.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, you may find one here:
21 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
22 * or you may search the http://www.gnu.org website for the version 2 license,
23 * or you may write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
25 */
26
27#ifndef CLASS_LIBENTRY_H
28#define CLASS_LIBENTRY_H
29
30#include <general.h>
31#include <lib_tree_item.h>
32#include <lib_field.h>
33#include <vector>
34#include <core/multivector.h>
35
36class LINE_READER;
37class OUTPUTFORMATTER;
38class REPORTER;
39class SYMBOL_LIB;
40class LIB_SYMBOL;
41class LIB_FIELD;
43
44
45typedef std::shared_ptr<LIB_SYMBOL> LIB_SYMBOL_SPTR;
46typedef std::weak_ptr<LIB_SYMBOL> LIB_SYMBOL_REF;
49
50
51/* values for member .m_options */
53{
54 ENTRY_NORMAL, // Libentry is a standard symbol (real or alias)
55 ENTRY_POWER // Libentry is a power symbol
56};
57
58
59extern bool operator<( const LIB_SYMBOL& aItem1, const LIB_SYMBOL& aItem2 );
60
61
63{
64 TRANSFORM transform; // Coordinate adjustment settings
65 bool force_draw_pin_text; // Whether or not to force the drawing of pin names and numbers
66 bool draw_visible_fields; // Whether to draw "visible" fields
67 bool draw_hidden_fields; // Whether to draw "hidden" fields
68 bool show_elec_type; // Whether to show the pin electrical type
69 bool show_connect_point; // Whether to show the pin connect point marker (small circle)
70 // useful in dialog pin properties
71
73 {
75 force_draw_pin_text = false;
77 draw_hidden_fields = true;
78 show_elec_type = false;
79 show_connect_point = false;
80 }
81};
82
83
85{
86 int m_unit;
88 std::vector<LIB_ITEM*> m_items;
89};
90
91
98class LIB_SYMBOL : public EDA_ITEM, public LIB_TREE_ITEM
99{
100public:
101 LIB_SYMBOL( const wxString& aName, LIB_SYMBOL* aParent = nullptr,
102 SYMBOL_LIB* aLibrary = nullptr );
103
104 LIB_SYMBOL( const LIB_SYMBOL& aSymbol, SYMBOL_LIB* aLibrary = nullptr );
105
106 virtual ~LIB_SYMBOL()
107 {}
108
110 LIB_SYMBOL_SPTR SharedPtr() const { return m_me; }
111
115 virtual LIB_SYMBOL* Duplicate() const
116 {
117 LIB_SYMBOL* dupe = new LIB_SYMBOL( *this, m_library );
118 const_cast<KIID&>( dupe->m_Uuid ) = KIID();
119
120 for( LIB_ITEM& item : dupe->m_drawings )
121 const_cast<KIID&>( item.m_Uuid ) = KIID();
122
123 return dupe;
124 }
125
126 void SetParent( LIB_SYMBOL* aParent = nullptr );
128 const LIB_SYMBOL_REF& GetParent() const { return m_parent; }
129
135 unsigned GetInheritanceDepth() const;
136
146
147 void ClearCaches();
148
149 virtual wxString GetClass() const override
150 {
151 return wxT( "LIB_SYMBOL" );
152 }
153
154 static inline bool ClassOf( const EDA_ITEM* aItem )
155 {
156 return aItem && aItem->Type() == LIB_SYMBOL_T;
157 }
158
159 virtual void SetName( const wxString& aName );
160 wxString GetName() const override { return m_name; }
161
162 LIB_ID& LibId() { return m_libId; }
163 LIB_ID GetLibId() const override { return m_libId; }
164 void SetLibId( const LIB_ID& aLibId ) { m_libId = aLibId; }
165
167 void SetSourceLibId( const LIB_ID& aLibId ) { m_sourceLibId = aLibId; }
168
169 wxString GetLibNickname() const override { return GetLibraryName(); }
170
172 void SetDescription( const wxString& aDescription )
173 {
174 GetDescriptionField().SetText( aDescription );
175 }
176
178 wxString GetDescription() override
179 {
180 if( GetDescriptionField().GetText().IsEmpty() && IsAlias() )
181 {
182 if( LIB_SYMBOL_SPTR parent = m_parent.lock() )
183 return parent->GetDescription();
184 }
185
186 return GetDescriptionField().GetText();
187 }
188
189 void SetKeyWords( const wxString& aKeyWords ) { m_keyWords = aKeyWords; }
190
191 wxString GetKeyWords() const
192 {
193 if( m_keyWords.IsEmpty() && IsAlias() )
194 {
195 if( LIB_SYMBOL_SPTR parent = m_parent.lock() )
196 return parent->GetKeyWords();
197 }
198
199 return m_keyWords;
200 }
201
202 std::vector<SEARCH_TERM> GetSearchTerms() override;
203
204 wxString GetFootprint() override
205 {
206 return GetFootprintField().GetText();
207 }
208
209 void GetChooserFields( std::map<wxString , wxString>& aColumnMap ) override;
210
214 bool IsRoot() const override { return m_parent.use_count() == 0; }
215 bool IsAlias() const { return !m_parent.expired() && m_parent.use_count() > 0; }
216
217 const wxString GetLibraryName() const;
218
219 SYMBOL_LIB* GetLib() const { return m_library; }
220 void SetLib( SYMBOL_LIB* aLibrary ) { m_library = aLibrary; }
221
223
224 void SetFPFilters( const wxArrayString& aFilters ) { m_fpFilters = aFilters; }
225
226 wxArrayString GetFPFilters() const
227 {
228 if( m_fpFilters.IsEmpty() && IsAlias() )
229 {
230 if( LIB_SYMBOL_SPTR parent = m_parent.lock() )
231 return parent->GetFPFilters();
232 }
233
234 return m_fpFilters;
235 }
236
237 void ViewGetLayers( int aLayers[], int& aCount ) const override;
238
249 const BOX2I GetUnitBoundingBox( int aUnit, int aConvert, bool aIgnoreHiddenFields = true ) const;
250
261 const BOX2I GetBodyBoundingBox( int aUnit, int aConvert, bool aIncludePins,
262 bool aIncludePrivateItems ) const;
263
264 const BOX2I GetBoundingBox() const override
265 {
266 return GetUnitBoundingBox( 0, 0 );
267 }
268
269 bool IsPower() const;
270 bool IsNormal() const;
271
272 void SetPower();
273 void SetNormal();
274
279 void LockUnits( bool aLockUnits ) { m_unitsLocked = aLockUnits; }
280
285 bool UnitsLocked() const { return m_unitsLocked; }
286
292 void SetFields( const std::vector<LIB_FIELD>& aFieldsList );
293
299 void GetFields( std::vector<LIB_FIELD*>& aList );
300 void GetFields( std::vector<LIB_FIELD>& aList );
301
305 void AddField( LIB_FIELD* aField );
306
307 void AddField( LIB_FIELD& aField ) { AddField( new LIB_FIELD( aField ) ); }
308
317 LIB_FIELD* FindField( const wxString& aFieldName, bool aCaseInsensitive = false );
318
319 const LIB_FIELD* FindField( const wxString& aFieldName,
320 const bool aCaseInsensitive = false ) const;
321
328 LIB_FIELD* GetFieldById( int aId ) const;
329
332
335
338
341
344
345 wxString GetPrefix();
346
347 void RunOnChildren( const std::function<void( LIB_ITEM* )>& aFunction );
348
357
358 int GetNextAvailableFieldId() const;
359
369 void Print( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset, int aMulti, int aConvert,
370 const LIB_SYMBOL_OPTIONS& aOpts, bool aDimmed );
371
381 void PrintBackground( const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset, int aMulti,
382 int aConvert, const LIB_SYMBOL_OPTIONS &aOpts, bool aDimmed );
383
397 void Plot( PLOTTER* aPlotter, int aUnit, int aConvert, bool aBackground,
398 const VECTOR2I& aOffset, const TRANSFORM& aTransform, bool aDimmed ) const;
399
412 void PlotLibFields( PLOTTER* aPlotter, int aUnit, int aConvert, bool aBackground,
413 const VECTOR2I& aOffset, const TRANSFORM& aTransform, bool aDimmed,
414 bool aPlotHidden = true );
415
422 void AddDrawItem( LIB_ITEM* aItem, bool aSort = true );
423
429 void RemoveDrawItem( LIB_ITEM* aItem );
430
431 void RemoveField( LIB_FIELD* aField ) { RemoveDrawItem( aField ); }
432
433 size_t GetPinCount() const { return m_drawings.size( LIB_PIN_T ); }
434
435 size_t GetFieldCount() const { return m_drawings.size( LIB_FIELD_T ); }
436
448 void GetPins( LIB_PINS& aList, int aUnit = 0, int aConvert = 0 ) const;
449
454 std::vector<LIB_PIN*> GetAllLibPins() const;
455
459 int GetPinCount() override { return GetAllLibPins().size(); }
460
470 LIB_PIN* GetPin( const wxString& aNumber, int aUnit = 0, int aConvert = 0 ) const;
471
483 bool PinsConflictWith( const LIB_SYMBOL& aOtherSymbol, bool aTestNums, bool aTestNames,
484 bool aTestType, bool aTestOrientation, bool aTestLength ) const;
485
491 void SetOffset( const VECTOR2I& aOffset );
492
497
503 bool HasConversion() const;
504
509 int GetMaxPinNumber() const;
510
514 void ClearTempFlags();
515 void ClearEditFlags();
516
526 LIB_ITEM* LocateDrawItem( int aUnit, int aConvert, KICAD_T aType, const VECTOR2I& aPoint );
527
538 LIB_ITEM* LocateDrawItem( int aUnit, int aConvert, KICAD_T aType, const VECTOR2I& aPoint,
539 const TRANSFORM& aTransform );
540
547 const LIB_ITEMS_CONTAINER& GetDrawItems() const { return m_drawings; }
548
553 void FixupDrawItems();
554
555 INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
556 const std::vector<KICAD_T>& aScanTypes ) override;
557
569 void SetUnitCount( int aCount, bool aDuplicateDrawItems = true );
570 int GetUnitCount() const override;
571
575 wxString GetUnitReference( int aUnit ) override;
576
580 bool HasUnitDisplayName( int aUnit ) override;
581
585 wxString GetUnitDisplayName( int aUnit ) override;
586
590 void CopyUnitDisplayNames( std::map<int, wxString>& aTarget ) const;
591
595 void SetUnitDisplayName( int aUnit, const wxString& aName );
596
601 bool IsMulti() const { return m_unitCount > 1; }
602
611 static wxString SubReference( int aUnit, bool aAddSeparator = true );
612
613 // Accessors to sub ref parameters
615
620 static int GetSubpartFirstId() { return m_subpartFirstId; }
621
625 static int* SubpartFirstIdPtr() { return &m_subpartFirstId; }
626
637 static void SetSubpartIdNotation( int aSep, int aFirstId );
638
651 void SetConversion( bool aSetConvert, bool aDuplicatePins = true );
652
660 void SetPinNameOffset( int aOffset ) { m_pinNameOffset = aOffset; }
661 int GetPinNameOffset() const { return m_pinNameOffset; }
662
668 void SetShowPinNames( bool aShow ) { m_showPinNames = aShow; }
669 bool ShowPinNames() const { return m_showPinNames; }
670
676 void SetShowPinNumbers( bool aShow ) { m_showPinNumbers = aShow; }
677 bool ShowPinNumbers() const { return m_showPinNumbers; }
678
684 void SetExcludedFromSim( bool aExcludeFromSim ) { m_excludedFromSim = aExcludeFromSim; }
685 bool GetExcludedFromSim() const { return m_excludedFromSim; }
686
692 void SetExcludedFromBOM( bool aExcludeFromBOM ) { m_excludedFromBOM = aExcludeFromBOM; }
693 bool GetExcludedFromBOM() const { return m_excludedFromBOM; }
694
700 void SetExcludedFromBoard( bool aExcludeFromBoard ) { m_excludedFromBoard = aExcludeFromBoard; }
702
712 int Compare( const LIB_SYMBOL& aRhs, int aCompareFlags = 0,
713 REPORTER* aReporter = nullptr ) const;
714
715 bool operator==( const LIB_SYMBOL* aSymbol ) const { return this == aSymbol; }
716 bool operator==( const LIB_SYMBOL& aSymbol ) const
717 {
718 return Compare( aSymbol, LIB_ITEM::COMPARE_FLAGS::EQUALITY ) == 0;
719 }
720
721 bool operator!=( const LIB_SYMBOL& aSymbol ) const
722 {
723 return Compare( aSymbol, LIB_ITEM::COMPARE_FLAGS::EQUALITY ) != 0;
724 }
725
726 const LIB_SYMBOL& operator=( const LIB_SYMBOL& aSymbol );
727
735 std::unique_ptr< LIB_SYMBOL > Flatten() const;
736
743 std::vector<struct LIB_SYMBOL_UNIT> GetUnitDrawItems();
744
753 std::vector<struct LIB_SYMBOL_UNIT> GetUniqueUnits();
754
765 std::vector<LIB_ITEM*> GetUnitDrawItems( int aUnit, int aConvert );
766
767#if defined(DEBUG)
768 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
769#endif
770
771private:
772 // We create a different set parent function for this class, so we hide the inherited one.
774
775 void deleteAllFields();
776
777private:
783
787
792
797
799
801 wxString m_name;
802 wxString m_keyWords;
803 wxArrayString m_fpFilters;
805
809 static int m_subpartFirstId;
812 std::map<int, wxString> m_unitDisplayNames;
813};
814
815#endif // CLASS_LIBENTRY_H
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
const KIID m_Uuid
Definition: eda_item.h:482
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:97
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:100
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:95
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:180
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Definition: kiid.h:49
Field object used in symbol libraries.
Definition: lib_field.h:62
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
The base class for drawable items used by schematic library symbols.
Definition: lib_item.h:68
@ EQUALITY
Definition: lib_item.h:92
Define a library symbol object.
Definition: lib_symbol.h:99
LIB_ITEMS_CONTAINER m_drawings
Definition: lib_symbol.h:798
void Plot(PLOTTER *aPlotter, int aUnit, int aConvert, bool aBackground, const VECTOR2I &aOffset, const TRANSFORM &aTransform, bool aDimmed) const
Plot lib symbol to plotter.
Definition: lib_symbol.cpp:891
void PrintBackground(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset, int aMulti, int aConvert, const LIB_SYMBOL_OPTIONS &aOpts, bool aDimmed)
Print just the background fills of a symbol.
Definition: lib_symbol.cpp:806
bool operator!=(const LIB_SYMBOL &aSymbol) const
Definition: lib_symbol.h:721
void ClearTempFlags()
Clears the status flag all draw objects in this symbol.
static int GetSubpartIdSeparator()
Definition: lib_symbol.h:614
LIBRENTRYOPTIONS m_options
Special symbol features such as POWER or NORMAL.)
Definition: lib_symbol.h:796
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.
void RunOnChildren(const std::function< void(LIB_ITEM *)> &aFunction)
void RemoveField(LIB_FIELD *aField)
Definition: lib_symbol.h:431
bool PinsConflictWith(const LIB_SYMBOL &aOtherSymbol, bool aTestNums, bool aTestNames, bool aTestType, bool aTestOrientation, bool aTestLength) const
Return true if this symbol's pins do not match another symbol's pins.
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: lib_symbol.h:668
bool IsMulti() const
Definition: lib_symbol.h:601
int GetPinNameOffset() const
Definition: lib_symbol.h:661
wxString GetPrefix()
void SetSourceLibId(const LIB_ID &aLibId)
Definition: lib_symbol.h:167
wxString GetKeyWords() const
Definition: lib_symbol.h:191
void SetConversion(bool aSetConvert, bool aDuplicatePins=true)
Set or clear the alternate body style (DeMorgan) for the symbol.
LIB_FIELD & GetReferenceField()
Return reference to the reference designator field.
void SetUnitCount(int aCount, bool aDuplicateDrawItems=true)
Set the units per symbol count.
static int m_subpartFirstId
the ASCII char value to calculate the subpart symbol id from the symbol number: only 'A',...
Definition: lib_symbol.h:809
bool UnitsLocked() const
Check whether symbol units are interchangeable.
Definition: lib_symbol.h:285
int GetNextAvailableFieldId() const
bool IsRoot() const override
For symbols derived from other symbols, IsRoot() indicates no derivation.
Definition: lib_symbol.h:214
bool operator==(const LIB_SYMBOL *aSymbol) const
Definition: lib_symbol.h:715
std::map< int, wxString > m_unitDisplayNames
Definition: lib_symbol.h:812
SYMBOL_LIB * m_library
Definition: lib_symbol.h:800
wxString GetFootprint() override
For items with footprint fields.
Definition: lib_symbol.h:204
wxString GetUnitDisplayName(int aUnit) override
Return the user-defined display name for aUnit for symbols with units.
Definition: lib_symbol.cpp:561
const wxString GetLibraryName() const
Definition: lib_symbol.cpp:705
LIB_FIELD * GetFieldById(int aId) const
Return pointer to the requested field.
std::vector< SEARCH_TERM > GetSearchTerms() override
Definition: lib_symbol.cpp:50
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: lib_symbol.h:660
timestamp_t GetLastModDate() const
Definition: lib_symbol.h:222
LIB_ID GetSourceLibId() const
Definition: lib_symbol.h:166
bool IsAlias() const
Definition: lib_symbol.h:215
std::vector< struct LIB_SYMBOL_UNIT > GetUnitDrawItems()
Return a list of LIB_ITEM objects separated by unit and convert number.
int GetMaxPinNumber() const
virtual LIB_SYMBOL * Duplicate() const
Create a copy of a LIB_SYMBOL and assigns unique KIIDs to the copy and its children.
Definition: lib_symbol.h:115
LIB_SYMBOL_SPTR m_me
Definition: lib_symbol.h:778
void ViewGetLayers(int aLayers[], int &aCount) const override
Return the all the layers within the VIEW the object is painted on.
bool IsPower() const
Definition: lib_symbol.cpp:714
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
Definition: lib_symbol.h:264
int Compare(const LIB_SYMBOL &aRhs, int aCompareFlags=0, REPORTER *aReporter=nullptr) const
Comparison test that can be used for operators.
Definition: lib_symbol.cpp:258
void FixupDrawItems()
This function finds the filled draw items that are covering up smaller draw items and replaces their ...
Definition: lib_symbol.cpp:984
wxString m_name
Definition: lib_symbol.h:801
bool operator==(const LIB_SYMBOL &aSymbol) const
Definition: lib_symbol.h:716
void SetPower()
Definition: lib_symbol.cpp:728
static bool ClassOf(const EDA_ITEM *aItem)
Definition: lib_symbol.h:154
wxString m_keyWords
Search keywords.
Definition: lib_symbol.h:802
LIB_FIELD & GetFootprintField()
Return reference to the footprint field.
bool ShowPinNames() const
Definition: lib_symbol.h:669
LIB_FIELD & GetDescriptionField()
Return reference to the description field.
void RemoveDuplicateDrawItems()
Remove duplicate draw items from list.
void LockUnits(bool aLockUnits)
Set interchangeable the property for symbol units.
Definition: lib_symbol.h:279
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: lib_symbol.h:676
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
Definition: lib_symbol.h:546
LIB_ID GetLibId() const override
Definition: lib_symbol.h:163
void SetParent(LIB_SYMBOL *aParent=nullptr)
Definition: lib_symbol.cpp:606
wxString GetName() const override
Definition: lib_symbol.h:160
void SetDescription(const wxString &aDescription)
Gets the Description field text value *‍/.
Definition: lib_symbol.h:172
static int m_subpartIdSeparator
the separator char between the subpart id and the reference like U1A ( m_subpartIdSeparator = 0 ) or ...
Definition: lib_symbol.h:806
const LIB_SYMBOL_REF & GetParent() const
Definition: lib_symbol.h:128
void ClearEditFlags()
int m_pinNameOffset
The offset in mils to draw the pin name.
Definition: lib_symbol.h:788
void SetKeyWords(const wxString &aKeyWords)
Definition: lib_symbol.h:189
LIB_FIELD * FindField(const wxString &aFieldName, bool aCaseInsensitive=false)
Find a field within this symbol matching aFieldName and returns it or NULL if not found.
bool m_showPinNumbers
Definition: lib_symbol.h:791
void GetFields(std::vector< LIB_FIELD * > &aList)
Return a list of fields within this symbol.
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
wxArrayString GetFPFilters() const
Definition: lib_symbol.h:226
void GetChooserFields(std::map< wxString, wxString > &aColumnMap) override
Retrieves a key/value map of the fields on this item that should be exposed to the library browser/ch...
Definition: lib_symbol.cpp:81
static wxString SubReference(int aUnit, bool aAddSeparator=true)
Definition: lib_symbol.cpp:770
void PlotLibFields(PLOTTER *aPlotter, int aUnit, int aConvert, bool aBackground, const VECTOR2I &aOffset, const TRANSFORM &aTransform, bool aDimmed, bool aPlotHidden=true)
Plot Lib Fields only of the symbol to plotter.
Definition: lib_symbol.cpp:932
void SetExcludedFromBOM(bool aExcludeFromBOM)
Set or clear the exclude from schematic bill of materials flag.
Definition: lib_symbol.h:692
timestamp_t m_lastModDate
Definition: lib_symbol.h:782
LIB_ID m_libId
Definition: lib_symbol.h:780
void SetLib(SYMBOL_LIB *aLibrary)
Definition: lib_symbol.h:220
static int GetSubpartFirstId()
Definition: lib_symbol.h:620
bool GetExcludedFromBOM() const
Definition: lib_symbol.h:693
std::vector< struct LIB_SYMBOL_UNIT > GetUniqueUnits()
Return a list of unit numbers that are unique to this symbol.
void SetExcludedFromBoard(bool aExcludeFromBoard)
Set or clear exclude from board netlist flag.
Definition: lib_symbol.h:700
wxString GetLibNickname() const override
Sets the Description field text value.
Definition: lib_symbol.h:169
virtual ~LIB_SYMBOL()
http://www.boost.org/doc/libs/1_55_0/libs/smart_ptr/sp_techniques.html#weak_without_shared
Definition: lib_symbol.h:106
const BOX2I GetBodyBoundingBox(int aUnit, int aConvert, bool aIncludePins, bool aIncludePrivateItems) const
Get the symbol bounding box excluding fields.
static void SetSubpartIdNotation(int aSep, int aFirstId)
Set the separator char between the subpart id and the reference 0 (no separator) or '.
const LIB_SYMBOL & operator=(const LIB_SYMBOL &aSymbol)
Definition: lib_symbol.cpp:190
LIB_FIELD & GetValueField()
Return reference to the value field.
bool m_unitsLocked
True if symbol has multiple units and changing one unit does not automatically change another unit.
Definition: lib_symbol.h:785
wxArrayString m_fpFilters
List of suitable footprint names for the symbol (wild card names accepted).
Definition: lib_symbol.h:803
bool m_excludedFromSim
Definition: lib_symbol.h:793
bool GetExcludedFromSim() const
Definition: lib_symbol.h:685
void SetFPFilters(const wxArrayString &aFilters)
Definition: lib_symbol.h:224
bool HasUnitDisplayName(int aUnit) override
Return true if the given unit aUnit has a display name defined.
Definition: lib_symbol.cpp:555
bool IsNormal() const
Definition: lib_symbol.cpp:742
size_t GetFieldCount() const
Definition: lib_symbol.h:435
LIB_SYMBOL_SPTR SharedPtr() const
Definition: lib_symbol.h:110
bool m_excludedFromBOM
Definition: lib_symbol.h:794
size_t GetPinCount() const
Definition: lib_symbol.h:433
LIB_ITEM * LocateDrawItem(int aUnit, int aConvert, KICAD_T aType, const VECTOR2I &aPoint)
Locate a draw object.
LIB_SYMBOL_REF GetRootSymbol() const
Get the parent symbol that does not have another parent.
Definition: lib_symbol.cpp:537
const BOX2I GetUnitBoundingBox(int aUnit, int aConvert, bool aIgnoreHiddenFields=true) const
Get the bounding box for the symbol.
int UpdateFieldOrdinals()
Order optional field indices.
INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes) override
May be re-implemented for each derived class in order to handle all the types given by its member dat...
wxString GetUnitReference(int aUnit) override
Return an identifier for aUnit for symbols with units.
Definition: lib_symbol.cpp:549
static int * SubpartIdSeparatorPtr()
Return a reference to m_subpartIdSeparator, only for read/save setting functions.
Definition: lib_symbol.h:619
wxString GetDescription() override
Definition: lib_symbol.h:178
std::vector< LIB_PIN * > GetAllLibPins() const
Return a list of pin pointers for all units / converts.
int m_unitCount
Number of units (parts) per package.
Definition: lib_symbol.h:784
virtual wxString GetClass() const override
Return the class name.
Definition: lib_symbol.h:149
LIB_ID m_sourceLibId
For database library symbols; the original symbol.
Definition: lib_symbol.h:781
void AddField(LIB_FIELD &aField)
Definition: lib_symbol.h:307
void ClearCaches()
Definition: lib_symbol.cpp:692
unsigned GetInheritanceDepth() const
Get the number of parents for this symbol.
Definition: lib_symbol.cpp:239
int GetUnitCount() const override
For items with units, return the number of units.
void AddField(LIB_FIELD *aField)
Add a field.
LIB_SYMBOL_REF m_parent
Use for inherited symbols.
Definition: lib_symbol.h:779
void GetPins(LIB_PINS &aList, int aUnit=0, int aConvert=0) const
Return a list of pin object pointers from the draw item list.
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:615
LIB_ID & LibId()
Definition: lib_symbol.h:162
SYMBOL_LIB * GetLib() const
Definition: lib_symbol.h:219
LIB_FIELD & GetDatasheetField()
Return reference to the datasheet field.
int GetPinCount() override
Definition: lib_symbol.h:459
void SetLibId(const LIB_ID &aLibId)
Definition: lib_symbol.h:164
void deleteAllFields()
bool HasConversion() const
Test if symbol has more than one body conversion type (DeMorgan).
void Print(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset, int aMulti, int aConvert, const LIB_SYMBOL_OPTIONS &aOpts, bool aDimmed)
Print symbol.
Definition: lib_symbol.cpp:840
LIB_SYMBOL_REF & GetParent()
Definition: lib_symbol.h:127
LIB_PIN * GetPin(const wxString &aNumber, int aUnit=0, int aConvert=0) const
Return pin object with the requested pin aNumber.
bool m_excludedFromBoard
Definition: lib_symbol.h:795
void SetFields(const std::vector< LIB_FIELD > &aFieldsList)
Overwrite all the existing fields in this symbol with fields supplied in aFieldsList.
void SetUnitDisplayName(int aUnit, const wxString &aName)
Set the user-defined display name for aUnit to aName for symbols with units.
Definition: lib_symbol.cpp:583
void SetOffset(const VECTOR2I &aOffset)
Move the symbol aOffset.
virtual void SetName(const wxString &aName)
Definition: lib_symbol.cpp:599
bool m_showPinNames
Definition: lib_symbol.h:790
void SetNormal()
Definition: lib_symbol.cpp:756
void CopyUnitDisplayNames(std::map< int, wxString > &aTarget) const
Copy all unit display names into the given map aTarget.
Definition: lib_symbol.cpp:574
bool ShowPinNumbers() const
Definition: lib_symbol.h:677
static int * SubpartFirstIdPtr()
Return a reference to m_subpartFirstId, only for read/save setting functions.
Definition: lib_symbol.h:625
void SetExcludedFromSim(bool aExcludeFromSim)
Set or clear the exclude from simulation flag.
Definition: lib_symbol.h:684
const LIB_ITEMS_CONTAINER & GetDrawItems() const
Definition: lib_symbol.h:547
bool GetExcludedFromBoard() const
Definition: lib_symbol.h:701
A mix-in to provide polymorphism between items stored in libraries (symbols, aliases and footprints).
Definition: lib_tree_item.h:41
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition: richio.h:93
Multivector container type.
Definition: multivector.h:47
size_t size(int aType=UNDEFINED_TYPE) const
Definition: multivector.h:226
boost::ptr_vector< LIB_ITEM > ITEM_PTR_VECTOR
Helper for defining a list of library draw object pointers.
Definition: multivector.h:65
An interface used to output 8 bit text in a convenient way.
Definition: richio.h:322
Base plotter engine class.
Definition: plotter.h:104
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:71
Object used to load, save, search, and otherwise manipulate symbol library files.
for transforming drawing coordinates for a wxDC device context.
Definition: transform.h:46
INSPECT_RESULT
Definition: eda_item.h:42
const INSPECTOR_FUNC & INSPECTOR
Definition: eda_item.h:78
TRANSFORM DefaultTransform
Definition: transform.cpp:32
uint32_t timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: kiid.h:46
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:61
MULTIVECTOR< LIB_ITEM, LIB_SHAPE_T, LIB_FIELD_T > LIB_ITEMS_CONTAINER
Definition: lib_symbol.h:47
LIBRENTRYOPTIONS
Definition: lib_symbol.h:53
@ ENTRY_NORMAL
Definition: lib_symbol.h:54
@ ENTRY_POWER
Definition: lib_symbol.h:55
std::weak_ptr< LIB_SYMBOL > LIB_SYMBOL_REF
weak pointer to LIB_SYMBOL
Definition: lib_symbol.h:46
std::shared_ptr< LIB_SYMBOL > LIB_SYMBOL_SPTR
shared pointer to LIB_SYMBOL
Definition: lib_symbol.h:45
LIB_ITEMS_CONTAINER::ITEM_PTR_VECTOR LIB_ITEMS
Definition: lib_symbol.h:48
bool operator<(const LIB_SYMBOL &aItem1, const LIB_SYMBOL &aItem2)
Definition: lib_symbol.cpp:93
bool draw_visible_fields
Definition: lib_symbol.h:66
bool force_draw_pin_text
Definition: lib_symbol.h:65
TRANSFORM transform
Definition: lib_symbol.h:64
std::vector< LIB_ITEM * > m_items
The items unique to this unit and alternate body style.
Definition: lib_symbol.h:88
int m_convert
The alternate body style of the unit.
Definition: lib_symbol.h:87
int m_unit
The unit number.
Definition: lib_symbol.h:86
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:78
@ LIB_SYMBOL_T
Definition: typeinfo.h:197
@ LIB_PIN_T
Definition: typeinfo.h:201
@ LIB_FIELD_T
Definition: typeinfo.h:207