42 std::vector<SEARCH_TERM> terms;
46 wxStringTokenizer keywordTokenizer(
GetKeyWords(), wxS(
" " ), wxTOKEN_STRTOK );
48 while( keywordTokenizer.HasMoreTokens() )
49 terms.emplace_back(
SEARCH_TERM( keywordTokenizer.GetNextToken(), 4 ) );
52 std::map<wxString, wxString> fields;
55 for(
const auto& [
name,
text ] : fields )
64 if( !footprint.IsEmpty() )
78 aColumnMap[field->
GetName()] = field->EDA_TEXT::GetShownText(
false );
109 [&](
FIELD_T id,
bool visible )
117 addField( FIELD_T::REFERENCE,
true );
118 addField( FIELD_T::VALUE,
true );
119 addField( FIELD_T::FOOTPRINT,
false );
120 addField( FIELD_T::DATASHEET,
false );
121 addField( FIELD_T::DESCRIPTION,
false );
165 wxFAIL_MSG(
"Failed to clone SCH_ITEM." );
179 if( &aSymbol ==
this )
260 parent = parent->GetParent().lock();
273 return sp->GetRootSymbol();
303 aTarget[it.first] = it.second;
311 if( aName.Length() > 0 )
337 std::unique_ptr< LIB_SYMBOL > retv;
343 wxCHECK_MSG( parent, retv,
344 wxString::Format(
"Parent of derived symbol '%s' undefined",
m_name ) );
347 if( parent->IsDerived() )
348 retv = parent->Flatten();
350 retv = std::make_unique<LIB_SYMBOL>( *parent.get() );
359 *retv->GetField( fieldId ) = *
GetField( fieldId );
378 retv->AddDrawItem( newField );
382 retv->RemoveDrawItem( parentField );
383 retv->AddDrawItem( newField );
391 retv->SetExcludedFromBOM( parent->GetExcludedFromBOM() );
392 retv->SetExcludedFromBoard( parent->GetExcludedFromBoard() );
394 retv->m_parent.reset();
398 retv = std::make_unique<LIB_SYMBOL>( *
this );
416 std::shared_ptr<LIB_SYMBOL> parent;
420 if( parent->IsRoot() )
423 return parent->IsLocalPower();
434 if( parent->IsRoot() )
437 parent->SetLocalPower();
446 std::shared_ptr<LIB_SYMBOL> parent;
450 if( parent->IsRoot() )
453 return parent->IsGlobalPower();
470 if( parent->IsRoot() )
473 parent->SetGlobalPower();
484 if( parent->IsRoot() )
487 return parent->IsNormal();
498 if( parent->IsRoot() )
518 u = ( aUnit - 1 ) % 26;
519 suffix = wxChar( aFirstId + u ) + suffix;
520 aUnit = ( aUnit - u ) / 26;
521 }
while( aUnit > 0 );
537 if( field.
GetId() == FIELD_T::FOOTPRINT )
538 footprint = field.
GetShownText(
nullptr,
false, aDepth + 1 );
541 || token->IsSameAs( field.
GetName(),
false ) )
543 *token = field.
GetShownText(
nullptr,
false, aDepth + 1 );
550 if( token->IsSameAs( wxT(
"SIM.DEVICE" ) )
551 || token->IsSameAs( wxT(
"SIM.TYPE" ) )
552 || token->IsSameAs( wxT(
"SIM.PINS" ) )
553 || token->IsSameAs( wxT(
"SIM.PARAMS" ) )
554 || token->IsSameAs( wxT(
"SIM.LIBRARY" ) )
555 || token->IsSameAs( wxT(
"SIM.NAME" ) ) )
557 *token = wxEmptyString;
561 if( token->IsSameAs( wxT(
"FOOTPRINT_LIBRARY" ) ) )
563 wxArrayString parts = wxSplit( footprint,
':' );
565 if( parts.Count() > 0 )
568 *token = wxEmptyString;
572 else if( token->IsSameAs( wxT(
"FOOTPRINT_NAME" ) ) )
574 wxArrayString parts = wxSplit( footprint,
':' );
576 if( parts.Count() > 1 )
577 *token = parts[ std::min( 1, (
int) parts.size() - 1 ) ];
579 *token = wxEmptyString;
583 else if( token->IsSameAs( wxT(
"SYMBOL_LIBRARY" ) ) )
588 else if( token->IsSameAs( wxT(
"SYMBOL_NAME" ) ) )
593 else if( token->IsSameAs( wxT(
"SYMBOL_DESCRIPTION" ) ) )
598 else if( token->IsSameAs( wxT(
"SYMBOL_KEYWORDS" ) ) )
603 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_BOM" ) ) )
608 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_BOARD" ) ) )
613 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_SIM" ) ) )
618 else if( token->IsSameAs( wxT(
"DNP" ) ) )
620 *token = this->
GetDNP() ?
_(
"DNP" ) : wxString(
"" );
629 int aUnit,
int aBodyStyle,
const VECTOR2I &aOffset,
bool aDimmed )
631 wxASSERT( aPlotter !=
nullptr );
637 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
651 if( item.IsPrivate() )
659 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
662 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
665 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
671 int aUnit,
int aBodyStyle,
const VECTOR2I& aOffset,
bool aDimmed )
673 wxASSERT( aPlotter !=
nullptr );
679 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
699 wxString tmp = field.
GetText();
702 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
711 std::vector<SCH_SHAPE*> potential_top_items;
712 std::vector<SCH_ITEM*> bottom_items;
720 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_COLOR )
721 potential_top_items.push_back( &shape );
723 bottom_items.push_back( &item );
727 bottom_items.push_back( &item );
731 std::sort( potential_top_items.begin(), potential_top_items.end(),
734 return a->GetBoundingBox().GetArea() > b->GetBoundingBox().GetArea();
737 for(
SCH_SHAPE* item : potential_top_items )
739 for(
SCH_ITEM* bottom_item : bottom_items )
741 if( item->GetBoundingBox().Contains( bottom_item->GetBoundingBox() ) )
743 item->SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
753 wxASSERT( aItem !=
nullptr );
759 if(
static_cast<SCH_FIELD*
>( aItem )->IsMandatory() )
765 for( LIB_ITEMS::iterator i = items.begin(); i != items.end(); i++ )
792 std::vector<SCH_PIN*> pins;
807 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
811 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
830 return (
int)
GetPins( 0 , 1 ).size();
838 if( aNumber ==
pin->GetNumber() )
847 bool aTestType,
bool aTestOrientation,
bool aTestLength )
const
852 bool foundMatch =
false;
856 wxASSERT( otherPin );
859 if(
pin->GetUnit() != otherPin->GetUnit() )
863 if(
pin->GetBodyStyle() != otherPin->GetBodyStyle() )
867 if(
pin->GetPosition() != otherPin->GetPosition() )
871 if( aTestNums && (
pin->GetNumber() != otherPin->GetNumber() ) )
875 if( aTestNames && (
pin->GetName() != otherPin->GetName() ) )
879 if( aTestType && (
pin->GetType() != otherPin->GetType() ) )
884 && (
pin->GetOrientation() != otherPin->GetOrientation() ) )
888 if( aTestLength && (
pin->GetLength() != otherPin->GetLength() ) )
909 bool aIgnoreHiddenFields )
const
915 if( item.m_unit > 0 &&
m_unitCount > 1 && aUnit > 0 && aUnit != item.m_unit )
918 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
921 if( aIgnoreHiddenFields && item.Type() ==
SCH_FIELD_T )
923 if( !
static_cast<const SCH_FIELD&
>( item ).IsVisible() )
927 bBox.
Merge( item.GetBoundingBox() );
935 bool aIncludePrivateItems )
const
941 if( item.m_unit > 0 && aUnit > 0 && aUnit != item.m_unit )
944 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
947 if( item.IsPrivate() && !aIncludePrivateItems )
957 if(
pin.IsVisible() )
963 bbox.
Merge(
pin.GetBoundingBox(
false,
false,
false ) );
970 bbox.
Merge( item.GetBoundingBox() );
994 for(
const SCH_FIELD& src : aFieldsList )
1019 aList.push_back(
const_cast<SCH_FIELD*
>( field ) );
1022 std::sort( aList.begin(), aList.end(),
1025 return lhs->GetOrdinal() < rhs->GetOrdinal();
1032 std::vector<SCH_FIELD*> orderedFields;
1037 aList.emplace_back( *field );
1046 ordinal = std::max( ordinal,
static_cast<const SCH_FIELD*
>( &item )->GetOrdinal() + 1 );
1058 if( field->
GetId() == aFieldType )
1072 if( field->
GetId() == aFieldType )
1086 if( field.
GetName() == aFieldName )
1100 if( field.
GetName() == aFieldName )
1125 wxASSERT( field !=
nullptr );
1133 wxASSERT( field !=
nullptr );
1141 wxASSERT( field !=
nullptr );
1149 wxASSERT( field !=
nullptr );
1157 wxASSERT( field !=
nullptr );
1166 refDesignator.Replace( wxS(
"~" ), wxS(
" " ) );
1168 wxString prefix = refDesignator;
1170 while( prefix.Length() )
1172 wxUniCharRef last = prefix.Last();
1174 if( ( last >=
'0' && last <=
'9' ) || last ==
'?' || last ==
'*' )
1175 prefix.RemoveLast();
1181 prefix.Trim(
true );
1182 prefix.Trim(
false );
1198 item.Move( aOffset );
1206 if( item.m_bodyStyle > BODY_STYLE::BASE )
1212 for(
const SCH_ITEM& item : parent->GetDrawItems() )
1214 if( item.m_bodyStyle > BODY_STYLE::BASE )
1225 int maxPinNumber = 0;
1232 long currentPinNumber = 0;
1234 if(
pin->GetNumber().ToLong( ¤tPinNumber ) )
1235 maxPinNumber = std::max( maxPinNumber, (
int) currentPinNumber );
1238 return maxPinNumber;
1247 item.ClearTempFlags();
1256 item.ClearEditFlags();
1265 if( ( aUnit && item.m_unit && aUnit != item.m_unit )
1266 || ( aBodyStyle && item.m_bodyStyle && aBodyStyle != item.m_bodyStyle )
1272 if( item.HitTest( aPoint ) )
1301 const std::vector<KICAD_T>& aScanTypes )
1306 if( item.IsType( aScanTypes ) )
1308 if( aInspector( &item, aTestData ) == INSPECT_RESULT::QUIT )
1309 return INSPECT_RESULT::QUIT;
1313 return INSPECT_RESULT::CONTINUE;
1328 if( i->m_unit > aCount )
1334 else if( aDuplicateDrawItems )
1341 std::vector<SCH_ITEM*> tmp;
1345 if( item.m_unit != 1 )
1348 for(
int j = prevCount + 1; j <= aCount; j++ )
1352 tmp.push_back( newItem );
1368 return parent->GetUnitCount();
1382 if( aDuplicatePins )
1384 std::vector<SCH_ITEM*> tmp;
1388 if( item.m_bodyStyle == 1 )
1392 tmp.push_back( newItem );
1408 if( i->m_bodyStyle > 1 )
1421 std::vector<SCH_ITEM*> unitItems;
1428 if( ( aBodyStyle == -1 && item.GetUnit() == aUnit )
1429 || ( aUnit == -1 && item.GetBodyStyle() == aBodyStyle )
1430 || ( aUnit == item.GetUnit() && aBodyStyle == item.GetBodyStyle() ) )
1432 unitItems.push_back( &item );
1442 std::vector<LIB_SYMBOL_UNIT> units;
1449 int unit = item.GetUnit();
1450 int bodyStyle = item.GetBodyStyle();
1452 auto it = std::find_if( units.begin(), units.end(),
1455 return a.m_unit == unit && a.m_bodyStyle == bodyStyle;
1458 if( it == units.end() )
1461 newUnit.
m_unit = item.GetUnit();
1463 newUnit.
m_items.push_back( &item );
1464 units.emplace_back( newUnit );
1468 it->m_items.push_back( &item );
1478#define REPORT( msg ) { if( aReporter ) aReporter->Report( msg ); }
1479#define ITEM_DESC( item ) ( item )->GetItemDescription( &unitsProvider, true )
1508 REPORT(
_(
"Power flag differs." ) );
1517 REPORT(
_(
"Unit count differs." ) );
1526 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aShapes;
1527 std::set<const SCH_ITEM*> aFields;
1528 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aPins;
1533 aShapes.insert( &(*it) );
1535 aFields.insert( &(*it) );
1537 aPins.insert( &(*it) );
1540 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bShapes;
1541 std::set<const SCH_ITEM*> bFields;
1542 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bPins;
1547 bShapes.insert( &(*it) );
1549 bFields.insert( &(*it) );
1551 bPins.insert( &(*it) );
1554 if(
int tmp =
static_cast<int>( aShapes.size() - bShapes.size() ) )
1557 REPORT(
_(
"Graphic item count differs." ) );
1564 for(
auto aIt = aShapes.begin(), bIt = bShapes.begin(); aIt != aShapes.end(); aIt++, bIt++ )
1566 if(
int tmp2 = (*aIt)->compare( *(*bIt), aCompareFlags ) )
1577 if(
int tmp =
static_cast<int>( aPins.size() - bPins.size() ) )
1580 REPORT(
_(
"Pin count differs." ) );
1587 for(
const SCH_ITEM* aPinItem : aPins )
1601 else if(
int tmp2 = aPinItem->compare( *bPin, aCompareFlags ) )
1612 for(
const SCH_ITEM* aFieldItem : aFields )
1626 tmp = aFieldItem->
compare( *bField, aCompareFlags );
1631 REPORT( wxString::Format(
_(
"%s field differs." ), aField->
GetName(
false ) ) );
1638 if(
int tmp =
static_cast<int>( aFields.size() - bFields.size() ) )
1641 REPORT(
_(
"Field count differs." ) );
1650 REPORT(
_(
"Footprint filters differs." ) );
1657 for(
size_t i = 0; i <
m_fpFilters.GetCount(); i++ )
1662 REPORT(
_(
"Footprint filters differ." ) );
1673 REPORT(
_(
"Symbol keywords differ." ) );
1682 REPORT(
_(
"Symbol pin name offsets differ." ) );
1693 REPORT(
_(
"Show pin names settings differ." ) );
1702 REPORT(
_(
"Show pin numbers settings differ." ) );
1711 REPORT(
_(
"Exclude from simulation settings differ." ) );
1720 REPORT(
_(
"Exclude from bill of materials settings differ." ) );
1729 REPORT(
_(
"Exclude from board settings differ." ) );
1759 return Compare( *tmp, aCompareFlags );
1768 double similarity = 0.0;
1777 double max_similarity = 0.0;
1781 double temp_similarity = item.
Similarity( otherItem );
1782 max_similarity = std::max( max_similarity, temp_similarity );
1784 if( max_similarity == 1.0 )
1788 similarity += max_similarity;
1794 double max_similarity = 0.0;
1798 double temp_similarity =
pin->Similarity( *otherPin );
1799 max_similarity = std::max( max_similarity, temp_similarity );
1801 if( max_similarity == 1.0 )
1805 similarity += max_similarity;
1808 if( totalItems == 0 )
1811 similarity /= totalItems;
1857 std::set<KIFONT::OUTLINE_FONT*>
fonts;
1865 if(
auto* font =
text.GetFont(); font && !font->IsStroke() )
1870 if( permission == EMBEDDING_PERMISSION::EDITABLE
1871 || permission == EMBEDDING_PERMISSION::INSTALLABLE )
1873 fonts.insert( outline );
constexpr EDA_IU_SCALE schIUScale
constexpr BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
virtual void ClearEditFlags()
KICAD_T Type() const
Returns the type of object.
virtual void SetParent(EDA_ITEM *aParent)
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
EDA_ITEM_FLAGS GetFlags() const
virtual void ClearTempFlags()
FILL_T GetFillMode() const
virtual const wxString & GetText() const
Return the string associated with the text object.
virtual bool IsVisible() const
virtual void SetVisible(bool aVisible)
EMBEDDED_FILES & operator=(EMBEDDED_FILES &&other) noexcept
EMBEDDED_FILE * AddFile(const wxFileName &aName, bool aOverwrite)
Load a file from disk and adds it to the collection.
Class OUTLINE_FONT implements outline font drawing.
EMBEDDING_PERMISSION GetEmbeddingPermission() const
A color representation with 4 components: red, green, blue, alpha.
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
int SetLibItemName(const UTF8 &aLibItemName)
Override the library item name portion of the LIB_ID to aLibItemName.
int compare(const LIB_ID &aLibId) const
Compare the contents of LIB_ID objects by performing a std::string comparison of the library nickname...
const wxString GetUniStringLibItemName() const
Get strings for display messages in dialogs.
const wxString GetUniStringLibNickname() const
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Define a library symbol object.
LIB_ITEMS_CONTAINER m_drawings
bool ResolveTextVar(wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the symbol.
SCH_FIELD & GetDescriptionField()
Return reference to the description field.
wxString GetDescription() const override
wxString GetKeyWords() const override
std::vector< SCH_PIN * > GetPins(int aUnit, int aBodyStyle) const
Return a list of pin object pointers from the draw item list.
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction) override
LIBRENTRYOPTIONS m_options
Special symbol features such as POWER or NORMAL.)
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 GetFields(std::vector< SCH_FIELD * > &aList, bool aVisibleOnly=false) const override
Populate a std::vector with SCH_FIELDs, sorted in ordinal order.
bool IsPower() const override
void SetUnitCount(int aCount, bool aDuplicateDrawItems=true)
Set the units per symbol count.
SCH_FIELD & GetDatasheetField()
Return reference to the datasheet field.
const BOX2I GetUnitBoundingBox(int aUnit, int aBodyStyle, bool aIgnoreHiddenFields=true) const
Get the bounding box for the symbol.
std::vector< struct LIB_SYMBOL_UNIT > GetUnitDrawItems()
Return a list of SCH_ITEM objects separated by unit and convert number.
std::map< int, wxString > m_unitDisplayNames
void ClearTempFlags() override
Clears the status flag all draw objects in this symbol.
wxString GetFootprint() override
For items with footprint fields.
wxString GetUnitDisplayName(int aUnit) override
Return the user-defined display name for aUnit for symbols with units.
const wxString GetLibraryName() const
void SetFields(const std::vector< SCH_FIELD > &aFieldsList)
Overwrite all the existing fields in this symbol with fields supplied in aFieldsList.
std::vector< SEARCH_TERM > GetSearchTerms() override
int GetMaxPinNumber() const
void Plot(PLOTTER *aPlotter, bool aBackground, const SCH_PLOT_OPTS &aPlotOpts, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed) override
Plot the item to aPlotter.
SCH_FIELD * GetField(const wxString &aFieldName)
Find a field within this symbol matching aFieldName; return nullptr if not found.
SCH_FIELD & GetFootprintField()
Return reference to the footprint field.
int Compare(const LIB_SYMBOL &aRhs, int aCompareFlags=0, REPORTER *aReporter=nullptr) const
Comparison test that can be used for operators.
void FixupDrawItems()
This function finds the filled draw items that are covering up smaller draw items and replaces their ...
static wxString LetterSubReference(int aUnit, int aFirstId)
SCH_PIN * GetPin(const wxString &aNumber, int aUnit=0, int aBodyStyle=0) const
Return pin object with the requested pin aNumber.
bool IsNormal() const override
std::set< KIFONT::OUTLINE_FONT * > GetFonts() const override
bool HasAlternateBodyStyle() const override
Test if symbol has more than one body conversion type (DeMorgan).
SCH_FIELD * FindFieldCaseInsensitive(const wxString &aFieldName)
wxString m_keyWords
Search keywords.
SCH_ITEM * LocateDrawItem(int aUnit, int aBodyStyle, KICAD_T aType, const VECTOR2I &aPoint)
Locate a draw object.
double Similarity(const SCH_ITEM &aSymbol) const override
Return a measure of similarity between this symbol and aSymbol.
static LIB_SYMBOL * GetDummy()
Returns a dummy LIB_SYMBOL, used when one is missing in the schematic.
void PlotFields(PLOTTER *aPlotter, bool aBackground, const SCH_PLOT_OPTS &aPlotOpts, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed)
Plot symbol fields.
void SetParent(LIB_SYMBOL *aParent=nullptr)
wxString GetName() const override
SCH_FIELD & GetValueField()
Return reference to the value field.
bool IsLocalPower() const override
void RemoveDrawItem(SCH_ITEM *aItem)
Remove draw aItem from list.
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...
int compare(const SCH_ITEM &aOther, int aCompareFlags=SCH_ITEM::COMPARE_FLAGS::EQUALITY) const override
The library symbol specific sort order is as follows:
timestamp_t m_lastModDate
void SetLib(SYMBOL_LIB *aLibrary)
std::vector< SCH_PIN * > GetPins() const override
Return a list of pin pointers for all units / converts.
const LIB_SYMBOL & operator=(const LIB_SYMBOL &aSymbol)
bool m_unitsLocked
True if symbol has multiple units and changing one unit does not automatically change another unit.
wxArrayString m_fpFilters
List of suitable footprint names for the symbol (wild card names accepted).
void Move(const VECTOR2I &aOffset) override
Move the symbol aOffset.
bool HasUnitDisplayName(int aUnit) override
Return true if the given unit aUnit has a display name defined.
void CopyFields(std::vector< SCH_FIELD > &aList)
Create a copy of the SCH_FIELDs, sorted in ordinal order.
LIB_SYMBOL_SPTR SharedPtr() const
http://www.boost.org/doc/libs/1_55_0/libs/smart_ptr/sp_techniques.html#weak_without_shared.
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.
EMBEDDED_FILES * GetEmbeddedFiles() override
int m_unitCount
Number of units (parts) per package.
void SetHasAlternateBodyStyle(bool aHasAlternate, bool aDuplicatePins=true)
Set or clear the alternate body style (DeMorgan) for the symbol.
bool IsGlobalPower() const override
unsigned GetInheritanceDepth() const
Get the number of parents for this symbol.
int GetUnitCount() const override
LIB_SYMBOL_REF m_parent
Use for inherited symbols.
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
BOX2I GetBodyBoundingBox() const override
Return a bounding box for the symbol body but not the pins or fields.
int GetPinCount() override
void AddField(SCH_FIELD *aField)
Add a field.
void ClearEditFlags() override
LIB_SYMBOL_REF & GetParent()
LIB_SYMBOL_SPTR GetRootSymbol() const
Get the parent symbol that does not have another parent.
void SetUnitDisplayName(int aUnit, const wxString &aName)
Set the user-defined display name for aUnit to aName for symbols with units.
void AddDrawItem(SCH_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
void EmbedFonts() override
virtual void SetName(const wxString &aName)
void CopyUnitDisplayNames(std::map< int, wxString > &aTarget) const
Copy all unit display names into the given map aTarget.
SCH_FIELD & GetReferenceField()
Return reference to the reference designator field.
int GetNextFieldOrdinal() const
Return the next ordinal for a user field for this symbol.
ITERATOR_BASE< SCH_ITEM, MULTIVECTOR< SCH_ITEM, FIRST_TYPE_VAL, LAST_TYPE_VAL >, typename ITEM_PTR_VECTOR::iterator > ITERATOR
The const iterator.
ITERATOR end(int aType=UNDEFINED_TYPE)
void clear(int aType=UNDEFINED_TYPE)
ITERATOR erase(const ITERATOR &aIterator)
ITERATOR begin(int aType=UNDEFINED_TYPE)
Base plotter engine class.
bool GetColorMode() const
virtual void SetColor(const COLOR4D &color)=0
A pure virtual class used to derive REPORTER objects from.
int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const override
Provide the draw object specific comparison called by the == and < operators.
wxString GetFullText(int unit=1) const
Return the text of a field.
wxString GetCanonicalName() const
Get a non-language-specific name for a field which can be used for storage, variable look-up,...
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0) const
bool ShowInChooser() const
void SetText(const wxString &aText) override
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCH_RENDER_SETTINGS * getRenderSettings(PLOTTER *aPlotter) const
virtual void SetExcludedFromSim(bool aExclude)
SCH_ITEM * Duplicate(bool doClone=false) const
Routine to create a new copy of given item.
const wxString & GetNumber() const
const KIGFX::COLOR4D & GetBackgroundColor() const override
Return current background color settings.
Object used to load, save, search, and otherwise manipulate symbol library files.
const wxString GetName() const
Return the file name without path or extension.
A base class for LIB_SYMBOL and SCH_SYMBOL.
bool GetExcludedFromBoard() const
bool GetExcludedFromBOM() const
bool GetDNP() const
Set or clear the 'Do Not Populate' flag.
SYMBOL & operator=(const SYMBOL &aItem)
int m_pinNameOffset
The offset in mils to draw the pin name.
bool GetExcludedFromSim() const override
#define DEFAULT_PIN_NAME_OFFSET
The intersheets references prefix string.
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
#define IS_NEW
New item, just created.
#define STRUCT_DELETED
flag indication structures to be erased
TRANSFORM DefaultTransform
bool operator<(const LIB_SYMBOL &aItem1, const LIB_SYMBOL &aItem2)
std::shared_ptr< LIB_SYMBOL > LIB_SYMBOL_SPTR
shared pointer to LIB_SYMBOL
LIB_ITEMS_CONTAINER::ITEM_PTR_VECTOR LIB_ITEMS
constexpr int MilsToIU(int mils) const
int m_bodyStyle
The alternate body style of the unit.
std::vector< SCH_ITEM * > m_items
The items unique to this unit and alternate body style.
int m_unit
The unit number.
A structure for storing weighted search terms.
http://www.boost.org/doc/libs/1_55_0/libs/smart_ptr/sp_techniques.html#weak_without_shared
void operator()(void const *) const
Definition for symbol library class.
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
VECTOR2< int32_t > VECTOR2I