50#define BITMAP_FONT_SIZE_THRESHOLD 3
66 else if( aBodyStyle == BODY_STYLE::DEMORGAN )
67 return _(
"Alternate" );
68 else if( aBodyStyle == BODY_STYLE::BASE )
69 return _(
"Standard" );
79 EDA_ITEM( aParent, aType, true, false ),
81 m_bodyStyle( aBodyStyle ),
149 RECURSE_MODE::NO_RECURSE );
160 aUnit = std::max( aUnit, 0 );
169 aBodyStyle = std::min( aBodyStyle, (
int) BODY_STYLE::DEMORGAN );
171 aBodyStyle = std::max( aBodyStyle, 0 );
184 return static_cast<SCHEMATIC*
>( parent );
200 return static_cast<const SCH_SYMBOL*
>( parent );
202 return static_cast<const LIB_SYMBOL*
>( parent );
266 conn->SetGraph( aGraph );
268 for(
auto& member : conn->AllMembers() )
269 member->SetGraph( aGraph );
276 static std::shared_ptr<NETCLASS> nullNetclass = std::make_shared<NETCLASS>( wxEmptyString );
282 std::shared_ptr<NET_SETTINGS>& netSettings =
287 return netSettings->GetEffectiveNetClass( connection->
Name() );
289 return netSettings->GetDefaultNetclass();
316 if( vec.size() == vec.capacity() )
317 vec.reserve( vec.size() + 4096 );
320 auto it = std::lower_bound( vec.begin(), vec.end(), aItem );
322 if( it == vec.end() || *it != aItem )
323 vec.insert( it, aItem );
368 static wxString s_empty;
381 if( aImage ==
nullptr )
420 auto clearTextCaches =
427 text->ClearBoundingBoxCache();
428 text->ClearRenderCache();
432 clearTextCaches(
this );
452 return (
compare( aOther ) < 0 );
513 return schematic->Settings().m_FontMetrics;
555 std::vector<MSG_PANEL_ITEM>& aList )
563 if( parent->GetUnitCount() )
566 if( parent->HasAlternateBodyStyle() )
571 aList.emplace_back(
_(
"Private" ), wxEmptyString );
595 return symbol->IsMulti();
601 auto multiBodyStyle =
607 return symbol->HasAlternateBodyStyle();
634 const auto aPos = a.GetPosition();
635 const auto bPos = b.GetPosition();
636 return aPos.y < bPos.y ? true : ( aPos.y > bPos.y ? false : aPos.x < bPos.x );
646std::vector<DANGLING_END_ITEM>::iterator
651 auto start = aItemListByPos.begin();
652 auto end = aItemListByPos.end();
653 return std::lower_bound( start,
end, needle,
lessYX );
657std::vector<DANGLING_END_ITEM>::iterator
662 auto start = aItemListByType.begin();
663 auto end = aItemListByType.end();
664 return std::lower_bound( start,
end, needle,
lessType );
669 std::vector<DANGLING_END_ITEM>& aItemListByType,
670 std::vector<DANGLING_END_ITEM>& aItemListByPos )
673 std::stable_sort( aItemListByType.begin(), aItemListByType.end(),
lessType );
676 std::sort( aItemListByPos.begin(), aItemListByPos.end(),
lessYX );
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).
virtual bool AddItem(EDA_ITEM *aItem)=0
Add item to group.
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
virtual void SetParentGroup(EDA_GROUP *aGroup)
virtual void SetParent(EDA_ITEM *aParent)
virtual wxString GetFriendlyName() const
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()
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()
int GetDefaultPenWidth() const
int GetMinPenWidth() const
Define a library symbol object.
static wxString LetterSubReference(int aUnit, int aFirstId)
virtual SETTINGS_MANAGER & GetSettingsManager() const
std::shared_ptr< NET_SETTINGS > m_NetSettings
Net settings for this project (owned here)
virtual PROJECT_FILE & GetProjectFile() const
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 & Prj() 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(SCH_SHEET_PATH aSheet)
Base class for any item which can be embedded within the SCHEMATIC container class,...
virtual void SetBodyStyle(int aBodyStyle)
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)
const wxString & GetDefaultFont() const
const SYMBOL * GetParentSymbol() 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)
static wxString GetUnitDescription(int aUnit)
SCH_CONNECTION * InitializeConnection(const SCH_SHEET_PATH &aPath, CONNECTION_GRAPH *aGraph)
Create a new connection object associated with this object.
void AddConnectionTo(const SCH_SHEET_PATH &aPath, SCH_ITEM *aItem)
Add a connection link between this item and another.
std::shared_ptr< NETCLASS > GetEffectiveNetClass(const SCH_SHEET_PATH *aSheet=nullptr) const
void SetUnitProp(int aUnit)
virtual bool operator==(const SCH_ITEM &aOther) const
bool m_connectivity_dirty
virtual void ClearCaches()
virtual int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const
Provide the draw object specific comparison called by the == and < operators.
bool RenderAsBitmap(double aWorldScale) const override
static wxString GetBodyStyleDescription(int aBodyStyle)
void SetConnectionGraph(CONNECTION_GRAPH *aGraph)
Update the connection graph for all connections in this item.
AUTOPLACE_ALGO m_fieldsAutoplaced
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.
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
void SetBodyStyleProp(int aBodyStyle)
void SwapItemData(SCH_ITEM *aImage)
Swap data between aItem and aImage.
SCH_ITEM * Duplicate(bool doClone=false) const
Routine to create a new copy of given item.
void getSymbolEditorMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
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...
T * GetAppSettings(const char *aFilename)
Return a handle to the a given settings by type.
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)
PGM_BASE & Pgm()
The global program "get" accessor.
#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
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
bool operator()(const SCH_ITEM *aFirst, const SCH_ITEM *aSecond) const
wxLogTrace helper definitions.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.