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 );
168 wxFAIL_MSG(
"Failed to clone SCH_ITEM." );
182 if( &aSymbol ==
this )
263 parent = parent->GetParent().lock();
276 return sp->GetRootSymbol();
306 aTarget[it.first] = it.second;
314 if( aName.Length() > 0 )
340 std::unique_ptr< LIB_SYMBOL > retv;
346 wxCHECK_MSG( parent, retv,
347 wxString::Format(
"Parent of derived symbol '%s' undefined",
m_name ) );
350 if( parent->IsAlias() )
351 retv = parent->Flatten();
353 retv = std::make_unique<LIB_SYMBOL>( *parent.get() );
365 retv->GetFieldById( fieldId )->SetText( retv->GetFieldById( fieldId )->GetText() );
367 *retv->GetFieldById( fieldId ) = *
GetFieldById( fieldId );
386 retv->AddDrawItem( newField );
390 retv->RemoveDrawItem( parentField );
391 retv->AddDrawItem( newField );
399 retv->SetExcludedFromBOM( parent->GetExcludedFromBOM() );
400 retv->SetExcludedFromBoard( parent->GetExcludedFromBoard() );
402 retv->UpdateFieldOrdinals();
403 retv->m_parent.reset();
407 retv = std::make_unique<LIB_SYMBOL>( *
this );
425 std::shared_ptr<LIB_SYMBOL> parent;
429 if( parent->IsRoot() )
432 return parent->IsPower();
443 if( parent->IsRoot() )
457 if( parent->IsRoot() )
460 return parent->IsNormal();
471 if( parent->IsRoot() )
491 u = ( aUnit - 1 ) % 26;
492 suffix = wxChar( aFirstId + u ) + suffix;
493 aUnit = ( aUnit - u ) / 26;
494 }
while( aUnit > 0 );
511 footprint = field.
GetShownText(
nullptr,
false, aDepth + 1 );
514 || token->IsSameAs( field.
GetName(),
false ) )
516 *token = field.
GetShownText(
nullptr,
false, aDepth + 1 );
523 if( token->IsSameAs( wxT(
"SIM.DEVICE" ) )
524 || token->IsSameAs( wxT(
"SIM.TYPE" ) )
525 || token->IsSameAs( wxT(
"SIM.PINS" ) )
526 || token->IsSameAs( wxT(
"SIM.PARAMS" ) )
527 || token->IsSameAs( wxT(
"SIM.LIBRARY" ) )
528 || token->IsSameAs( wxT(
"SIM.NAME" ) ) )
530 *token = wxEmptyString;
534 if( token->IsSameAs( wxT(
"FOOTPRINT_LIBRARY" ) ) )
536 wxArrayString parts = wxSplit( footprint,
':' );
538 if( parts.Count() > 0 )
541 *token = wxEmptyString;
545 else if( token->IsSameAs( wxT(
"FOOTPRINT_NAME" ) ) )
547 wxArrayString parts = wxSplit( footprint,
':' );
549 if( parts.Count() > 1 )
550 *token = parts[ std::min( 1, (
int) parts.size() - 1 ) ];
552 *token = wxEmptyString;
556 else if( token->IsSameAs( wxT(
"SYMBOL_LIBRARY" ) ) )
561 else if( token->IsSameAs( wxT(
"SYMBOL_NAME" ) ) )
566 else if( token->IsSameAs( wxT(
"SYMBOL_DESCRIPTION" ) ) )
571 else if( token->IsSameAs( wxT(
"SYMBOL_KEYWORDS" ) ) )
576 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_BOM" ) ) )
581 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_BOARD" ) ) )
586 else if( token->IsSameAs( wxT(
"EXCLUDE_FROM_SIM" ) ) )
591 else if( token->IsSameAs( wxT(
"DNP" ) ) )
593 *token = this->
GetDNP() ?
_(
"DNP" ) : wxString(
"" );
602 const VECTOR2I& aOffset,
bool aForceNoFill,
bool aDimmed )
607 if( item.IsPrivate() )
611 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
614 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
619 item.Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
628 item.
Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
635 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_BG_BODYCOLOR )
642 if( init_color == COLOR4D::UNSPECIFIED )
649 shape.
Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
655 item.Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
662 const VECTOR2I& aOffset,
bool aDimmed )
673 if( item.IsPrivate() )
681 if( aUnit && shape.
m_unit && ( shape.
m_unit != aUnit ) )
687 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_BG_BODYCOLOR )
688 shape.
Print( aSettings, aUnit, aBodyStyle, aOffset,
false, aDimmed );
696 int aUnit,
int aBodyStyle,
const VECTOR2I &aOffset,
bool aDimmed )
698 wxASSERT( aPlotter !=
nullptr );
704 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
718 if( item.IsPrivate() )
726 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
729 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
732 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
738 int aUnit,
int aBodyStyle,
const VECTOR2I& aOffset,
bool aDimmed )
740 wxASSERT( aPlotter !=
nullptr );
746 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
766 wxString tmp = field.
GetText();
769 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
778 std::vector<SCH_SHAPE*> potential_top_items;
779 std::vector<SCH_ITEM*> bottom_items;
787 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_COLOR )
788 potential_top_items.push_back( &shape );
790 bottom_items.push_back( &item );
794 bottom_items.push_back( &item );
798 std::sort( potential_top_items.begin(), potential_top_items.end(),
801 return a->GetBoundingBox().GetArea() > b->GetBoundingBox().GetArea();
804 for(
SCH_SHAPE* item : potential_top_items )
806 for(
SCH_ITEM* bottom_item : bottom_items )
808 if( item->GetBoundingBox().Contains( bottom_item->GetBoundingBox() ) )
810 item->SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
820 wxASSERT( aItem !=
nullptr );
826 if(
static_cast<SCH_FIELD*
>( aItem )->IsMandatory() )
832 for( LIB_ITEMS::iterator i = items.begin(); i != items.end(); i++ )
859 std::vector<SCH_PIN*> pins;
874 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
878 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
897 return (
int)
GetPins( 0 , 1 ).size();
905 if( aNumber ==
pin->GetNumber() )
914 bool aTestType,
bool aTestOrientation,
bool aTestLength )
const
919 bool foundMatch =
false;
923 wxASSERT( otherPin );
926 if(
pin->GetUnit() != otherPin->GetUnit() )
930 if(
pin->GetBodyStyle() != otherPin->GetBodyStyle() )
934 if(
pin->GetPosition() != otherPin->GetPosition() )
938 if( aTestNums && (
pin->GetNumber() != otherPin->GetNumber() ) )
942 if( aTestNames && (
pin->GetName() != otherPin->GetName() ) )
946 if( aTestType && (
pin->GetType() != otherPin->GetType() ) )
951 && (
pin->GetOrientation() != otherPin->GetOrientation() ) )
955 if( aTestLength && (
pin->GetLength() != otherPin->GetLength() ) )
976 bool aIgnoreHiddenFields )
const
982 if( item.m_unit > 0 &&
m_unitCount > 1 && aUnit > 0 && aUnit != item.m_unit )
985 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
988 if( aIgnoreHiddenFields && item.Type() ==
SCH_FIELD_T )
990 if( !
static_cast<const SCH_FIELD&
>( item ).IsVisible() )
994 bBox.
Merge( item.GetBoundingBox() );
1002 bool aIncludePrivateItems )
const
1008 if( item.m_unit > 0 && aUnit > 0 && aUnit != item.m_unit )
1011 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
1014 if( item.IsPrivate() && !aIncludePrivateItems )
1024 if(
pin.IsVisible() )
1030 bbox.
Merge(
pin.GetBoundingBox(
false,
false,
false ) );
1037 bbox.
Merge( item.GetBoundingBox() );
1061 for(
const SCH_FIELD& src : aFieldsList )
1087 aList.push_back( field );
1102 aList.push_back( field );
1119 aList.push_back( *field );
1130 if( field->
GetId() == aId )
1142 if( aCaseInsensitive )
1144 if(
static_cast<SCH_FIELD*
>( &item )->GetCanonicalName().Upper() == aFieldName.Upper() )
1145 return static_cast<SCH_FIELD*
>( &item );
1150 return static_cast<SCH_FIELD*
>( &item );
1159 bool aCaseInsensitive )
const
1165 if( aCaseInsensitive )
1184 wxASSERT( field !=
nullptr );
1192 wxASSERT( field !=
nullptr );
1200 wxASSERT( field !=
nullptr );
1208 wxASSERT( field !=
nullptr );
1216 wxASSERT( field !=
nullptr );
1225 refDesignator.Replace( wxS(
"~" ), wxS(
" " ) );
1227 wxString prefix = refDesignator;
1229 while( prefix.Length() )
1231 wxUniCharRef last = prefix.Last();
1233 if( ( last >=
'0' && last <=
'9' ) || last ==
'?' || last ==
'*' )
1234 prefix.RemoveLast();
1240 prefix.Trim(
true );
1241 prefix.Trim(
false );
1267 if( field->
GetId() != lastOrdinal )
1269 field->
SetId( lastOrdinal );
1294 item.Move( aOffset );
1302 if( item.m_bodyStyle > BODY_STYLE::BASE )
1308 for(
const SCH_ITEM& item : parent->GetDrawItems() )
1310 if( item.m_bodyStyle > BODY_STYLE::BASE )
1321 int maxPinNumber = 0;
1328 long currentPinNumber = 0;
1330 if(
pin->GetNumber().ToLong( ¤tPinNumber ) )
1331 maxPinNumber = std::max( maxPinNumber, (
int) currentPinNumber );
1334 return maxPinNumber;
1343 item.ClearTempFlags();
1352 item.ClearEditFlags();
1361 if( ( aUnit && item.m_unit && aUnit != item.m_unit )
1362 || ( aBodyStyle && item.m_bodyStyle && aBodyStyle != item.m_bodyStyle )
1368 if( item.HitTest( aPoint ) )
1397 const std::vector<KICAD_T>& aScanTypes )
1402 if( item.IsType( aScanTypes ) )
1404 if( aInspector( &item, aTestData ) == INSPECT_RESULT::QUIT )
1405 return INSPECT_RESULT::QUIT;
1409 return INSPECT_RESULT::CONTINUE;
1424 if( i->m_unit > aCount )
1430 else if( aDuplicateDrawItems )
1437 std::vector<SCH_ITEM*> tmp;
1441 if( item.m_unit != 1 )
1444 for(
int j = prevCount + 1; j <= aCount; j++ )
1448 tmp.push_back( newItem );
1464 return parent->GetUnitCount();
1478 if( aDuplicatePins )
1480 std::vector<SCH_ITEM*> tmp;
1484 if( item.m_bodyStyle == 1 )
1488 tmp.push_back( newItem );
1504 if( i->m_bodyStyle > 1 )
1517 std::vector<SCH_ITEM*> unitItems;
1524 if( ( aBodyStyle == -1 && item.GetUnit() == aUnit )
1525 || ( aUnit == -1 && item.GetBodyStyle() == aBodyStyle )
1526 || ( aUnit == item.GetUnit() && aBodyStyle == item.GetBodyStyle() ) )
1528 unitItems.push_back( &item );
1538 std::vector<LIB_SYMBOL_UNIT> units;
1545 int unit = item.GetUnit();
1546 int bodyStyle = item.GetBodyStyle();
1548 auto it = std::find_if( units.begin(), units.end(),
1551 return a.m_unit == unit && a.m_bodyStyle == bodyStyle;
1554 if( it == units.end() )
1557 newUnit.
m_unit = item.GetUnit();
1559 newUnit.
m_items.push_back( &item );
1560 units.emplace_back( newUnit );
1564 it->m_items.push_back( &item );
1574#define REPORT( msg ) { if( aReporter ) aReporter->Report( msg ); }
1575#define ITEM_DESC( item ) ( item )->GetItemDescription( &unitsProvider, true )
1604 REPORT(
_(
"Power flag differs." ) );
1613 REPORT(
_(
"Unit count differs." ) );
1622 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aShapes;
1623 std::set<const SCH_ITEM*> aFields;
1624 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aPins;
1629 aShapes.insert( &(*it) );
1631 aFields.insert( &(*it) );
1633 aPins.insert( &(*it) );
1636 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bShapes;
1637 std::set<const SCH_ITEM*> bFields;
1638 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bPins;
1643 bShapes.insert( &(*it) );
1645 bFields.insert( &(*it) );
1647 bPins.insert( &(*it) );
1650 if(
int tmp =
static_cast<int>( aShapes.size() - bShapes.size() ) )
1653 REPORT(
_(
"Graphic item count differs." ) );
1660 for(
auto aIt = aShapes.begin(), bIt = bShapes.begin(); aIt != aShapes.end(); aIt++, bIt++ )
1662 if(
int tmp2 = (*aIt)->compare( *(*bIt), aCompareFlags ) )
1673 if(
int tmp =
static_cast<int>( aPins.size() - bPins.size() ) )
1676 REPORT(
_(
"Pin count differs." ) );
1683 for(
const SCH_ITEM* aPinItem : aPins )
1697 else if(
int tmp2 = aPinItem->compare( *bPin, aCompareFlags ) )
1708 for(
const SCH_ITEM* aFieldItem : aFields )
1722 tmp = aFieldItem->
compare( *bField, aCompareFlags );
1727 REPORT( wxString::Format(
_(
"%s field differs." ), aField->
GetName(
false ) ) );
1734 if(
int tmp =
static_cast<int>( aFields.size() - bFields.size() ) )
1737 REPORT(
_(
"Field count differs." ) );
1746 REPORT(
_(
"Footprint filters differs." ) );
1753 for(
size_t i = 0; i <
m_fpFilters.GetCount(); i++ )
1758 REPORT(
_(
"Footprint filters differ." ) );
1769 REPORT(
_(
"Symbol keywords differ." ) );
1778 REPORT(
_(
"Symbol pin name offsets differ." ) );
1789 REPORT(
_(
"Show pin names settings differ." ) );
1798 REPORT(
_(
"Show pin numbers settings differ." ) );
1807 REPORT(
_(
"Exclude from simulation settings differ." ) );
1816 REPORT(
_(
"Exclude from bill of materials settings differ." ) );
1825 REPORT(
_(
"Exclude from board settings differ." ) );
1855 return Compare( *tmp, aCompareFlags );
1864 double similarity = 0.0;
1873 double max_similarity = 0.0;
1877 double temp_similarity = item.
Similarity( otherItem );
1878 max_similarity = std::max( max_similarity, temp_similarity );
1880 if( max_similarity == 1.0 )
1884 similarity += max_similarity;
1890 double max_similarity = 0.0;
1894 double temp_similarity =
pin->Similarity( *otherPin );
1895 max_similarity = std::max( max_similarity, temp_similarity );
1897 if( max_similarity == 1.0 )
1901 similarity += max_similarity;
1904 if( totalItems == 0 )
1907 similarity /= totalItems;
1953 std::set<KIFONT::OUTLINE_FONT*>
fonts;
1961 if(
auto* font =
text.GetFont(); font && !font->IsStroke() )
1966 if( permission == EMBEDDING_PERMISSION::EDITABLE
1967 || permission == EMBEDDING_PERMISSION::INSTALLABLE )
1969 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.
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.)
void Print(const SCH_RENDER_SETTINGS *aSettings, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aForceNoFill, bool aDimmed) override
Print an item.
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.
bool IsPower() const override
void SetUnitCount(int aCount, bool aDuplicateDrawItems=true)
Set the units per symbol count.
const BOX2I GetUnitBoundingBox(int aUnit, int aBodyStyle, bool aIgnoreHiddenFields=true) const
Get the bounding box for the symbol.
int GetNextAvailableFieldId() const
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 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.
SCH_FIELD & GetValueField() const
Return reference to the value field.
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.
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 * GetFieldById(int aId) const
Return pointer to the requested field.
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.
SCH_FIELD & GetDatasheetField() const
Return reference to the datasheet field.
SCH_FIELD & GetFootprintField() const
Return reference to the footprint field.
void SetParent(LIB_SYMBOL *aParent=nullptr)
wxString GetName() const override
void GetFields(std::vector< SCH_FIELD * > &aList, bool aVisibleOnly=false) override
Return a list of fields within this symbol.
SCH_FIELD & GetReferenceField() const
Return reference to the reference designator field.
void PrintBackground(const SCH_RENDER_SETTINGS *aSettings, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed) override
Print just the background fills.
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.
SCH_FIELD & GetDescriptionField() const
Return reference to the description field.
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)
LIB_SYMBOL_SPTR SharedPtr() const
http://www.boost.org/doc/libs/1_55_0/libs/smart_ptr/sp_techniques.html#weak_without_shared.
SCH_FIELD * FindField(const wxString &aFieldName, bool aCaseInsensitive=false)
Find a field within this symbol matching aFieldName and returns it or NULL if not found.
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.
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.
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.
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.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
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.
void Print(const SCH_RENDER_SETTINGS *aSettings, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aForceNoFill, bool aDimmed) override
Print an item.
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.
void Print(const SCH_RENDER_SETTINGS *aSettings, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aForceNoFill, bool aDimmed) override
Print an item.
void SetStroke(const STROKE_PARAMS &aStroke) override
STROKE_PARAMS GetStroke() const override
Simple container to manage line stroke parameters.
void SetColor(const KIGFX::COLOR4D &aColor)
KIGFX::COLOR4D GetColor() const
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 GetGRForceBlackPenState(void)
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.
@ DATASHEET_FIELD
name of datasheet
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELD_COUNT
The first 5 are mandatory, and must be instantiated in SCH_COMPONENT, LIB_PART, and FOOTPRINT constru...
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
@ DESCRIPTION_FIELD
Field Description of part, i.e. "1/4W 1% Metal Film Resistor".
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
VECTOR2< int32_t > VECTOR2I