45#define BITMAP_FONT_SIZE_THRESHOLD 3
52 EDA_ITEM( aParent, aType, true, false ),
54 m_bodyStyle( aBodyStyle ),
151 RECURSE_MODE::NO_RECURSE );
153 if( addToParentGroup )
155 wxCHECK_MSG( aCommit, newItem,
"Must supply a commit to update parent group" );
159 aCommit->
Modify(
group->AsEdaItem(),
nullptr, RECURSE_MODE::NO_RECURSE );
160 group->AddItem( newItem );
170 if( aUnit ==
_HKI(
"All units" ) )
178 for(
int unit = 1; unit <= symbol->GetUnitCount(); unit++ )
180 if( symbol->GetUnitDisplayName( unit,
false ) == aUnit )
193 return aLabel ?
_(
"All units" ) : wxString(
_HKI(
"All units" ) );
195 return symbol->GetUnitDisplayName( aUnit, aLabel );
197 return wxEmptyString;
203 if( aBodyStyle == 0 )
204 return aLabel ?
_(
"All body styles" ) : wxString(
_HKI(
"All body styles" ) );
206 return symbol->GetBodyStyleDescription( aBodyStyle, aLabel );
208 return wxEmptyString;
220 if( aBodyStyle ==
_HKI(
"All body styles" ) )
228 for(
int bodyStyle : { BODY_STYLE::BASE, BODY_STYLE::DEMORGAN } )
230 if( symbol->GetBodyStyleDescription( bodyStyle,
false ) == aBodyStyle )
283 if( area->GetExcludedFromSim() )
298 if( area->GetExcludedFromBOM() )
313 if( area->GetExcludedFromBoard() )
373 conn->SetGraph( aGraph );
375 for(
auto& member : conn->AllMembers() )
376 member->SetGraph( aGraph );
383 static std::shared_ptr<NETCLASS> nullNetclass = std::make_shared<NETCLASS>( wxEmptyString );
393 return netSettings->GetEffectiveNetClass( connection->
Name() );
395 return netSettings->GetDefaultNetclass();
422 if( vec.size() == vec.capacity() )
423 vec.reserve( vec.size() + 4096 );
426 auto it = std::lower_bound( vec.begin(), vec.end(), aItem );
428 if( it == vec.end() || *it != aItem )
429 vec.insert( it, aItem );
474 static wxString s_empty;
487 if( aImage ==
nullptr )
523 auto clearTextCaches =
530 text->ClearBoundingBoxCache();
531 text->ClearRenderCache();
535 clearTextCaches(
this );
555 return (
compare( aOther ) < 0 );
610 else if(
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>(
"eeschema" ) )
611 return cfg->m_Appearance.default_font;
620 return schematic->Settings().m_FontMetrics;
667 if( symbol->GetUnitCount() )
670 if( symbol->HasAlternateBodyStyle() )
674 aList.emplace_back(
_(
"Private" ), wxEmptyString );
682 return schematic->GetEmbeddedFiles()->GetFontFiles();
684 return symbol->GetEmbeddedFiles()->UpdateFontFiles();
710 return symbol->IsMulti();
716 auto multiBodyStyle =
722 return symbol->HasAlternateBodyStyle();
735 choices.Add(
_HKI(
"All units" ) );
741 for(
int ii = 1; ii <= symbol->GetUnitCount(); ii++ )
742 choices.Add( symbol->GetUnitDisplayName( ii,
false ) );
757 choices.Add(
_HKI(
"All body styles" ) );
763 for(
int ii : { BODY_STYLE::BASE, BODY_STYLE::DEMORGAN } )
764 choices.Add( symbol->GetBodyStyleDescription( ii,
false ) );
782 const auto aPos = a.GetPosition();
783 const auto bPos = b.GetPosition();
784 return aPos.y < bPos.y ? true : ( aPos.y > bPos.y ? false : aPos.x < bPos.x );
794std::vector<DANGLING_END_ITEM>::iterator
799 auto start = aItemListByPos.begin();
800 auto end = aItemListByPos.end();
801 return std::lower_bound( start,
end, needle,
lessYX );
805std::vector<DANGLING_END_ITEM>::iterator
810 auto start = aItemListByType.begin();
811 auto end = aItemListByType.end();
812 return std::lower_bound( start,
end, needle,
lessType );
817 std::vector<DANGLING_END_ITEM>& aItemListByType,
818 std::vector<DANGLING_END_ITEM>& aItemListByPos )
821 std::stable_sort( aItemListByType.begin(), aItemListByType.end(),
lessType );
824 std::sort( aItemListByPos.begin(), aItemListByPos.end(),
lessYX );
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
Calculate the connectivity of a schematic and generates netlists.
void RemoveItem(SCH_ITEM *aItem)
static std::vector< DANGLING_END_ITEM >::iterator get_lower_type(std::vector< DANGLING_END_ITEM > &aItemListByType, const DANGLING_END_T &aType)
static std::vector< DANGLING_END_ITEM >::iterator get_lower_pos(std::vector< DANGLING_END_ITEM > &aItemListByPos, const VECTOR2I &aPos)
static void sort_dangling_end_items(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos)
Both contain the same information.
Helper class used to store the state of schematic items that can be connected to other schematic item...
DANGLING_END_T GetType() const
The base class for create windows for drawing purpose.
A set of EDA_ITEMs (i.e., without duplicates).
A base class for most all the KiCad significant classes used in schematics and boards.
virtual VECTOR2I GetPosition() const
virtual void ClearEditFlags()
virtual void SetLocked(bool aLocked)
EDA_ITEM_FLAGS GetEditFlags() const
void SetFlags(EDA_ITEM_FLAGS aMask)
virtual EDA_GROUP * GetParentGroup() const
KICAD_T Type() const
Returns the type of object.
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
EDA_ITEM_FLAGS GetTempFlags() const
EDA_GROUP * m_group
The group this item belongs to, if any. No ownership implied.
virtual void SetParent(EDA_ITEM *aParent)
EDA_ITEM * GetParent() const
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
virtual bool IsLocked() const
virtual void ClearTempFlags()
EDA_ITEM * findParent(KICAD_T aType) const
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Class that other classes need to inherit from, in order to be inspectable.
static const METRICS & Default()
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
int GetDefaultPenWidth() const
int GetMinPenWidth() const
const wxString & GetDefaultFont() const
Define a library symbol object.
std::shared_ptr< NET_SETTINGS > m_NetSettings
Net settings for this project (owned here)
virtual PROJECT_FILE & GetProjectFile() const
PROPERTY_BASE & SetChoicesFunc(std::function< wxPGChoices(INSPECTABLE *)> aFunc)
PROPERTY_BASE & SetAvailableFunc(std::function< bool(INSPECTABLE *)> aFunc)
Set a callback function to determine whether an object provides this property.
PROPERTY_BASE & SetIsHiddenFromDesignEditors(bool aIsHidden=true)
Provide class metadata.Helper macro to map type hashes to names.
void InheritsAfter(TYPE_ID aDerived, TYPE_ID aBase)
Declare an inheritance relationship between types.
static PROPERTY_MANAGER & Instance()
PROPERTY_BASE & AddProperty(PROPERTY_BASE *aProperty, const wxString &aGroup=wxEmptyString)
Register a property.
Holds all the data relating to one schematic.
PROJECT & Project() const
Return a reference to the project this schematic is part of.
CONNECTION_GRAPH * ConnectionGraph() const
static bool m_IsSchematicExists
True if a SCHEMATIC exists, false if not.
SCH_SHEET_PATH & CurrentSheet() const
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
void Reset()
Clears connectivity information.
wxString Name(bool aIgnoreSheet=false) const
void SetGraph(CONNECTION_GRAPH *aGraph)
void SetSheet(const SCH_SHEET_PATH &aSheet)
Base class for any item which can be embedded within the SCHEMATIC container class,...
virtual bool GetExcludedFromSim() const
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
SCH_ITEM * Duplicate(bool addToParentGroup, SCH_COMMIT *aCommit=nullptr, bool doClone=false) const
Routine to create a new copy of given item.
virtual bool IsConnectable() const
virtual int GetPenWidth() const
const SCH_ITEM_VEC & ConnectedItems(const SCH_SHEET_PATH &aPath)
Retrieve the set of items connected to this item on the given sheet.
SCH_ITEM & operator=(const SCH_ITEM &aPin)
void ClearConnectedItems(const SCH_SHEET_PATH &aPath)
Clear all connections to this item.
virtual bool doIsConnected(const VECTOR2I &aPosition) const
Provide the object specific test to see if it is connected to aPosition.
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode)
virtual wxString GetUnitProp() const
const std::vector< wxString > * GetEmbeddedFonts() override
const SYMBOL * GetParentSymbol() const
virtual wxString GetBodyStyleDescription(int aBodyStyle, bool aLabel) const
void SetPrivate(bool aPrivate)
virtual void swapData(SCH_ITEM *aItem)
Swap the internal data structures aItem with the schematic item.
virtual const wxString & GetCachedDriverName() const
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
std::vector< int > ViewGetLayers() const override
Return the layers the item is drawn on (which may be more than its "home" layer)
bool ResolveExcludedFromBOM() const
SCH_CONNECTION * InitializeConnection(const SCH_SHEET_PATH &aPath, CONNECTION_GRAPH *aGraph)
Create a new connection object associated with this object.
virtual wxString GetUnitDisplayName(int aUnit, bool aLabel) const
void AddConnectionTo(const SCH_SHEET_PATH &aPath, SCH_ITEM *aItem)
Add a connection link between this item and another.
virtual void SetUnitProp(const wxString &aUnit)
std::shared_ptr< NETCLASS > GetEffectiveNetClass(const SCH_SHEET_PATH *aSheet=nullptr) const
bool ResolveExcludedFromBoard() const
virtual bool GetDNP() const
virtual bool operator==(const SCH_ITEM &aOther) const
bool m_connectivity_dirty
virtual bool GetExcludedFromBOM() const
virtual void ClearCaches()
virtual bool GetExcludedFromBoard() const
virtual void SetBodyStyleProp(const wxString &aBodyStyle)
virtual int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const
Provide the draw object specific comparison called by the == and < operators.
virtual wxString GetBodyStyleProp() const
bool RenderAsBitmap(double aWorldScale) const override
const wxString & GetDefaultFont(const RENDER_SETTINGS *aSettings) const
void SetConnectionGraph(CONNECTION_GRAPH *aGraph)
Update the connection graph for all connections in this item.
AUTOPLACE_ALGO m_fieldsAutoplaced
std::unordered_set< SCH_RULE_AREA * > m_rule_areas_cache
Store pointers to rule areas which this item is contained within.
void SwapFlags(SCH_ITEM *aItem)
Swap the non-temp and non-edit flags.
bool IsConnected(const VECTOR2I &aPoint) const
Test the item to see if it is connected to aPoint.
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
std::unordered_map< SCH_SHEET_PATH, SCH_CONNECTION * > m_connection_map
Store connectivity information, per sheet.
virtual bool operator<(const SCH_ITEM &aItem) const
virtual bool IsHypertext() const
Allow items to support hypertext actions when hovered/clicked.
SCH_CONNECTION * GetOrInitConnection(const SCH_SHEET_PATH &aPath, CONNECTION_GRAPH *aGraph)
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
wxString GetClass() const override
Return the class name.
bool ResolveExcludedFromSim() const
const KIFONT::METRICS & GetFontMetrics() const
std::map< SCH_SHEET_PATH, SCH_ITEM_VEC, SHEET_PATH_CMP > m_connected_items
Store pointers to other items that are connected to this one, per sheet.
int GetEffectivePenWidth(const SCH_RENDER_SETTINGS *aSettings) const
bool IsGroupableType() const
void SwapItemData(SCH_ITEM *aImage)
Swap data between aItem and aImage.
int m_SymbolLineWidth
Override line widths for symbol drawing objects set to default line width.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
A base class for LIB_SYMBOL and SCH_SYMBOL.
#define BRIGHTENED
item is drawn with a bright contour
#define SELECTED
Item was manually selected by the user.
#define STRUCT_DELETED
flag indication structures to be erased
#define SKIP_STRUCT
flag indicating that the structure should be ignored
std::uint32_t EDA_ITEM_FLAGS
SCH_LAYER_ID
Eeschema drawing layers.
@ LAYER_DEVICE_BACKGROUND
@ LAYER_SELECTION_SHADOWS
#define UNIMPLEMENTED_FOR(type)
#define IMPLEMENT_ENUM_TO_WXANY(type)
Class to handle a set of SCH_ITEMs.
static bool lessYX(const DANGLING_END_ITEM &a, const DANGLING_END_ITEM &b)
#define BITMAP_FONT_SIZE_THRESHOLD
static bool lessType(const DANGLING_END_ITEM &a, const DANGLING_END_ITEM &b)
static struct SCH_ITEM_DESC _SCH_ITEM_DESC
std::vector< SCH_ITEM * > SCH_ITEM_VEC
bool operator()(const SCH_ITEM *aFirst, const SCH_ITEM *aSecond) const
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.