41 std::vector<SEARCH_TERM> terms;
45 wxStringTokenizer keywordTokenizer(
GetKeyWords(), wxS(
" " ), wxTOKEN_STRTOK );
47 while( keywordTokenizer.HasMoreTokens() )
48 terms.emplace_back(
SEARCH_TERM( keywordTokenizer.GetNextToken(), 4 ) );
51 std::map<wxString, wxString> fields;
54 for(
const auto& [
name,
text ] : fields )
63 if( !footprint.IsEmpty() )
77 aColumnMap[field->
GetName()] = field->EDA_TEXT::GetShownText(
false );
166 wxFAIL_MSG(
"Failed to clone SCH_ITEM." );
180 if( &aSymbol ==
this )
230 parent = parent->GetParent().lock();
237#define REPORT( msg ) { if( aReporter ) aReporter->Report( msg ); }
238#define ITEM_DESC( item ) ( item )->GetItemDescription( &unitsProvider )
267 REPORT(
_(
"Power flag differs." ) );
276 REPORT(
_(
"Unit count differs." ) );
285 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aShapes;
286 std::set<const SCH_ITEM*> aFields;
287 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> aPins;
292 aShapes.insert( &(*it) );
294 aFields.insert( &(*it) );
296 aPins.insert( &(*it) );
299 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bShapes;
300 std::set<const SCH_ITEM*> bFields;
301 std::set<const SCH_ITEM*, SCH_ITEM::cmp_items> bPins;
306 bShapes.insert( &(*it) );
308 bFields.insert( &(*it) );
310 bPins.insert( &(*it) );
313 if(
int tmp =
static_cast<int>( aShapes.size() - bShapes.size() ) )
316 REPORT(
_(
"Graphic item count differs." ) );
323 for(
auto aIt = aShapes.begin(), bIt = bShapes.begin(); aIt != aShapes.end(); aIt++, bIt++ )
325 if(
int tmp2 = (*aIt)->compare( *(*bIt), aCompareFlags ) )
336 if(
int tmp =
static_cast<int>( aPins.size() - bPins.size() ) )
339 REPORT(
_(
"Pin count differs." ) );
346 for(
const SCH_ITEM* aPinItem : aPins )
360 else if(
int tmp2 = aPinItem->compare( *bPin, aCompareFlags ) )
371 for(
const SCH_ITEM* aFieldItem : aFields )
385 tmp = aFieldItem->
compare( *bField, aCompareFlags );
390 REPORT( wxString::Format(
_(
"%s field differs." ), aField->
GetName(
false ) ) );
397 if(
int tmp =
static_cast<int>( aFields.size() - bFields.size() ) )
400 REPORT(
_(
"Field count differs." ) );
409 REPORT(
_(
"Footprint filters differs." ) );
416 for(
size_t i = 0; i <
m_fpFilters.GetCount(); i++ )
421 REPORT(
_(
"Footprint filters differ." ) );
432 REPORT(
_(
"Symbol keywords differ." ) );
441 REPORT(
_(
"Symbol pin name offsets differ." ) );
452 REPORT(
_(
"Show pin names settings differ." ) );
461 REPORT(
_(
"Show pin numbers settings differ." ) );
470 REPORT(
_(
"Exclude from simulation settings differ." ) );
479 REPORT(
_(
"Exclude from bill of materials settings differ." ) );
488 REPORT(
_(
"Exclude from board settings differ." ) );
517 return sp->GetRootSymbol();
547 aTarget[it.first] = it.second;
555 if( aName.Length() > 0 )
581 std::unique_ptr< LIB_SYMBOL > retv;
587 wxCHECK_MSG( parent, retv,
588 wxString::Format(
"Parent of derived symbol '%s' undefined",
m_name ) );
591 if( parent->IsAlias() )
592 retv = parent->Flatten();
594 retv = std::make_unique<LIB_SYMBOL>( *parent.get() );
606 retv->GetFieldById( i )->SetText( retv->GetFieldById( i )->GetText() );
627 retv->AddDrawItem( newField );
631 retv->RemoveDrawItem( parentField );
632 retv->AddDrawItem( newField );
640 retv->SetExcludedFromBOM( parent->GetExcludedFromBOM() );
641 retv->SetExcludedFromBoard( parent->GetExcludedFromBoard() );
643 retv->UpdateFieldOrdinals();
647 retv = std::make_unique<LIB_SYMBOL>( *
this );
665 std::shared_ptr<LIB_SYMBOL> parent;
669 if( parent->IsRoot() )
672 return parent->IsPower();
683 if( parent->IsRoot() )
697 if( parent->IsRoot() )
700 return parent->IsNormal();
711 if( parent->IsRoot() )
731 u = ( aUnit - 1 ) % 26;
732 suffix = wxChar( aFirstId + u ) + suffix;
733 aUnit = ( aUnit - u ) / 26;
734 }
while( aUnit > 0 );
741 const VECTOR2I& aOffset,
bool aForceNoFill,
bool aDimmed )
746 if( item.IsPrivate() )
750 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
753 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
758 item.Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
767 item.
Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
774 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_BG_BODYCOLOR )
777 shape.
Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
781 item.Print( aSettings, aUnit, aBodyStyle, aOffset, aForceNoFill, aDimmed );
788 const VECTOR2I& aOffset,
bool aDimmed )
799 if( item.IsPrivate() )
807 if( aUnit && shape.
m_unit && ( shape.
m_unit != aUnit ) )
813 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_BG_BODYCOLOR )
814 shape.
Print( aSettings, aUnit, aBodyStyle, aOffset,
false, aDimmed );
822 int aUnit,
int aBodyStyle,
const VECTOR2I &aOffset,
bool aDimmed )
824 wxASSERT( aPlotter !=
nullptr );
830 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
844 if( item.IsPrivate() )
852 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
855 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
858 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
864 int aUnit,
int aBodyStyle,
const VECTOR2I& aOffset,
bool aDimmed )
866 wxASSERT( aPlotter !=
nullptr );
872 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
892 wxString tmp = field.
GetText();
895 item.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
904 std::vector<SCH_SHAPE*> potential_top_items;
905 std::vector<SCH_ITEM*> bottom_items;
913 if( shape.
GetFillMode() == FILL_T::FILLED_WITH_COLOR )
914 potential_top_items.push_back( &shape );
916 bottom_items.push_back( &item );
920 bottom_items.push_back( &item );
924 std::sort( potential_top_items.begin(), potential_top_items.end(),
927 return a->GetBoundingBox().GetArea() > b->GetBoundingBox().GetArea();
930 for(
SCH_SHAPE* item : potential_top_items )
932 for(
SCH_ITEM* bottom_item : bottom_items )
934 if( item->GetBoundingBox().Contains( bottom_item->GetBoundingBox() ) )
936 item->SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
946 wxASSERT( aItem !=
nullptr );
952 if(
static_cast<SCH_FIELD*
>( aItem )->IsMandatory() )
958 for( LIB_ITEMS::iterator i = items.begin(); i != items.end(); i++ )
984 std::vector<SCH_PIN*> pins;
999 if( aUnit && item.m_unit && ( item.m_unit != aUnit ) )
1003 if( aBodyStyle && item.m_bodyStyle && ( item.m_bodyStyle != aBodyStyle ) )
1022 return (
int)
GetPins( 0 , 1 ).size();
1030 if( aNumber ==
pin->GetNumber() )
1039 bool aTestType,
bool aTestOrientation,
bool aTestLength )
const
1043 for(
const SCH_PIN* eachThisPin : thisPinList )
1045 wxASSERT( eachThisPin );
1046 std::vector<SCH_PIN*> otherPinList = aOtherPart.
GetAllLibPins();
1047 bool foundMatch =
false;
1049 for(
const SCH_PIN* eachOtherPin : otherPinList )
1051 wxASSERT( eachOtherPin );
1054 if( eachThisPin->GetUnit() != eachOtherPin->GetUnit() )
1058 if( eachThisPin->GetBodyStyle() != eachOtherPin->GetBodyStyle() )
1062 if( eachThisPin->GetPosition() != eachOtherPin->GetPosition() )
1066 if( aTestNums && ( eachThisPin->GetNumber() != eachOtherPin->GetNumber() ) )
1070 if( aTestNames && ( eachThisPin->GetName() != eachOtherPin->GetName() ) )
1074 if( aTestType && ( eachThisPin->GetType() != eachOtherPin->GetType() ) )
1078 if( aTestOrientation
1079 && ( eachThisPin->GetOrientation() != eachOtherPin->GetOrientation() ) )
1083 if( aTestLength && ( eachThisPin->GetLength() != eachOtherPin->GetLength() ) )
1104 bool aIgnoreHiddenFields )
const
1110 if( item.m_unit > 0 &&
m_unitCount > 1 && aUnit > 0 && aUnit != item.m_unit )
1113 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
1116 if( aIgnoreHiddenFields && item.Type() ==
SCH_FIELD_T )
1118 if( !
static_cast<const SCH_FIELD&
>( item ).IsVisible() )
1122 bBox.
Merge( item.GetBoundingBox() );
1130 bool aIncludePrivateItems )
const
1136 if( item.m_unit > 0 && aUnit > 0 && aUnit != item.m_unit )
1139 if( item.m_bodyStyle > 0 && aBodyStyle > 0 && aBodyStyle != item.m_bodyStyle )
1142 if( item.IsPrivate() && !aIncludePrivateItems )
1152 if(
pin.IsVisible() )
1158 bbox.
Merge(
pin.GetBoundingBox(
false,
false,
false ) );
1165 bbox.
Merge( item.GetBoundingBox() );
1189 for(
const SCH_FIELD& src : aFieldsList )
1214 aList.push_back( field );
1231 aList.push_back( *field );
1242 if( field->
GetId() == aId )
1254 if( aCaseInsensitive )
1256 if(
static_cast<SCH_FIELD*
>( &item )->GetCanonicalName().Upper() == aFieldName.Upper() )
1257 return static_cast<SCH_FIELD*
>( &item );
1262 return static_cast<SCH_FIELD*
>( &item );
1271 bool aCaseInsensitive )
const
1277 if( aCaseInsensitive )
1296 wxASSERT( field !=
nullptr );
1304 wxASSERT( field !=
nullptr );
1312 wxASSERT( field !=
nullptr );
1320 wxASSERT( field !=
nullptr );
1328 wxASSERT( field !=
nullptr );
1337 refDesignator.Replace( wxS(
"~" ), wxS(
" " ) );
1339 wxString prefix = refDesignator;
1341 while( prefix.Length() )
1343 wxUniCharRef last = prefix.Last();
1345 if( ( last >=
'0' && last <=
'9' ) || last ==
'?' || last ==
'*' )
1346 prefix.RemoveLast();
1352 prefix.Trim(
true );
1353 prefix.Trim(
false );
1379 if( field->
GetId() != lastOrdinal )
1381 field->
SetId( lastOrdinal );
1406 item.Move( aOffset );
1414 if( item.m_bodyStyle > BODY_STYLE::BASE )
1420 for(
const SCH_ITEM& item : parent->GetDrawItems() )
1422 if( item.m_bodyStyle > BODY_STYLE::BASE )
1433 int maxPinNumber = 0;
1440 long currentPinNumber = 0;
1442 if(
pin->GetNumber().ToLong( ¤tPinNumber ) )
1443 maxPinNumber = std::max( maxPinNumber, (
int) currentPinNumber );
1446 return maxPinNumber;
1455 item.ClearTempFlags();
1464 item.ClearEditFlags();
1473 if( ( aUnit && item.m_unit && aUnit != item.m_unit )
1474 || ( aBodyStyle && item.m_bodyStyle && aBodyStyle != item.m_bodyStyle )
1480 if( item.HitTest( aPoint ) )
1509 const std::vector<KICAD_T>& aScanTypes )
1514 if( item.IsType( aScanTypes ) )
1516 if( aInspector( &item, aTestData ) == INSPECT_RESULT::QUIT )
1517 return INSPECT_RESULT::QUIT;
1521 return INSPECT_RESULT::CONTINUE;
1536 if( i->m_unit > aCount )
1542 else if( aDuplicateDrawItems )
1549 std::vector<SCH_ITEM*> tmp;
1553 if( item.m_unit != 1 )
1556 for(
int j = prevCount + 1; j <= aCount; j++ )
1560 tmp.push_back( newItem );
1576 return parent->GetUnitCount();
1590 if( aDuplicatePins )
1592 std::vector<SCH_ITEM*> tmp;
1596 if( item.m_bodyStyle == 1 )
1600 tmp.push_back( newItem );
1616 if( i->m_bodyStyle > 1 )
1629 std::vector<SCH_ITEM*> unitItems;
1636 if( ( aBodyStyle == -1 && item.GetUnit() == aUnit )
1637 || ( aUnit == -1 && item.GetBodyStyle() == aBodyStyle )
1638 || ( aUnit == item.GetUnit() && aBodyStyle == item.GetBodyStyle() ) )
1640 unitItems.push_back( &item );
1650 std::vector<LIB_SYMBOL_UNIT> units;
1657 int unit = item.GetUnit();
1658 int bodyStyle = item.GetBodyStyle();
1660 auto it = std::find_if( units.begin(), units.end(),
1663 return a.m_unit == unit && a.m_bodyStyle == bodyStyle;
1666 if( it == units.end() )
1669 newUnit.
m_unit = item.GetUnit();
1671 newUnit.
m_items.push_back( &item );
1672 units.emplace_back( newUnit );
1676 it->m_items.push_back( &item );
1719 if( !( *it1 == *it2 ) )
1724 const std::vector<SCH_PIN*> otherPinList = aOther.
GetAllLibPins();
1726 if( thisPinList.size() != otherPinList.size() )
1729 for(
auto it1 = thisPinList.begin(), it2 = otherPinList.begin();
1730 it1 != thisPinList.end(); ++it1, ++it2 )
1732 if( !( **it1 == **it2 ) )
1735 for(
size_t ii = 0; ii < thisPinList.size(); ++ii )
1737 if( !( *thisPinList[ii] == *otherPinList[ii] ) )
1750 double similarity = 0.0;
1759 double max_similarity = 0.0;
1763 double temp_similarity = item.
Similarity( otherItem );
1764 max_similarity = std::max( max_similarity, temp_similarity );
1766 if( max_similarity == 1.0 )
1770 similarity += max_similarity;
1776 double max_similarity = 0.0;
1780 double temp_similarity =
pin->Similarity( *otherPin );
1781 max_similarity = std::max( max_similarity, temp_similarity );
1783 if( max_similarity == 1.0 )
1787 similarity += max_similarity;
1790 if( totalItems == 0 )
1793 similarity /= totalItems;
constexpr EDA_IU_SCALE schIUScale
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)
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 UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Define a library symbol object.
LIB_ITEMS_CONTAINER m_drawings
wxString GetDescription() const override
wxString GetKeyWords() const override
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.
std::vector< SCH_PIN * > GetPins(int aUnit=0, int aBodyStyle=0) const
Return a list of pin object pointers from the draw item list.
const BOX2I GetUnitBoundingBox(int aUnit, int aBodyStyle, bool aIgnoreHiddenFields=true) const
Get the bounding box for the symbol.
int GetNextAvailableFieldId() const
void GetFields(std::vector< SCH_FIELD * > &aList)
Return a list of fields within this symbol.
bool operator==(const LIB_SYMBOL *aSymbol) 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::vector< SCH_PIN * > GetAllLibPins() const
Return a list of pin pointers for all units / converts.
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.
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
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...
timestamp_t m_lastModDate
void SetLib(SYMBOL_LIB *aLibrary)
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.
const BOX2I GetBodyBoundingBox(int aUnit, int aBodyStyle, bool aIncludePins, bool aIncludePrivateItems) const
Get the symbol bounding box excluding fields.
LIB_SYMBOL_SPTR SharedPtr() const
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.
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.
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.
virtual void SetName(const wxString &aName)
void CopyUnitDisplayNames(std::map< int, wxString > &aTarget) const
Copy all unit display names into the given map aTarget.
size_t size(int aType=UNDEFINED_TYPE) const
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).
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.
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.
SYMBOL & operator=(const SYMBOL &aItem)
int m_pinNameOffset
The offset in mils to draw the pin name.
#define DEFAULT_PIN_NAME_OFFSET
The intersheets references prefix string.
const INSPECTOR_FUNC & INSPECTOR
#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.
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_FIELDS
The first 5 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ 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.