104        m_pins.emplace_back( new SCH_SHEET_PIN( *pin ) );
 
  105        m_pins.back()->SetParent( this );
 
  109        field.SetParent( 
this );
 
 
  174    wxCHECK_MSG( 
Schematic(), 
false, 
"Can't call IsVirtualRootSheet without setting a schematic" );
 
 
  182    wxCHECK_MSG( 
Schematic(), 
false, 
"Can't call IsTopLevelSheet without setting a schematic" );
 
 
  191            [&]( 
const wxString& aVar )
 
  194                    aVars->push_back( aVar );
 
  199        if( field.IsMandatory() )
 
  200            add( field.GetCanonicalName().Upper() );
 
  202            add( field.GetName() );
 
  207    if( sheetPath.
size() >= 2 )
 
  219    add( wxT( 
"SHEETPATH" ) );
 
  220    add( wxT( 
"EXCLUDE_FROM_BOM" ) );
 
  221    add( wxT( 
"EXCLUDE_FROM_BOARD" ) );
 
  222    add( wxT( 
"EXCLUDE_FROM_SIM" ) );
 
  224    add( wxT( 
"ERC_ERROR <message_text>" ) );
 
  225    add( wxT( 
"ERC_WARNING <message_text>" ) );
 
  227    m_screen->GetTitleBlock().GetContextualTextVars( aVars );
 
 
  233    wxCHECK( aPath, 
false );
 
  240    if( token->Contains( 
':' ) )
 
  248        wxString fieldName = field.IsMandatory() ? field.GetCanonicalName().Upper()
 
  251        if( token->IsSameAs( fieldName ) )
 
  253            *token = field.GetShownText( aPath, 
false, aDepth + 1 );
 
  267    if( token->IsSameAs( wxT( 
"#" ) ) )
 
  272    else if( token->IsSameAs( wxT( 
"##" ) ) )
 
  274        *token = wxString::Format( wxT( 
"%d" ), (
int) schematic->
Hierarchy().size() );
 
  277    else if( token->IsSameAs( wxT( 
"SHEETPATH" ) ) )
 
  282    else if( token->IsSameAs( wxT( 
"EXCLUDE_FROM_BOM" ) ) )
 
  284        *token = wxEmptyString;
 
  287            *token = 
_( 
"Excluded from BOM" );
 
  291    else if( token->IsSameAs( wxT( 
"EXCLUDE_FROM_BOARD" ) ) )
 
  293        *token = wxEmptyString;
 
  296            *token = 
_( 
"Excluded from board" );
 
  300    else if( token->IsSameAs( wxT( 
"EXCLUDE_FROM_SIM" ) ) )
 
  302        *token = wxEmptyString;
 
  305            *token = 
_( 
"Excluded from simulation" );
 
  309    else if( token->IsSameAs( wxT( 
"DNP" ) ) )
 
  311        *token = wxEmptyString;
 
  313        if( aPath->
GetDNP() || this->ResolveDNP() )
 
  321    if( aPath->
size() >= 2 )
 
  326        if( 
path.Last()->ResolveTextVar( &
path, token, aDepth + 1 ) )
 
 
  342                 wxString::Format( wxT( 
"SCH_SHEET object cannot swap data with %s object." ),
 
  355        sheetPin->SetParent( 
this );
 
  361        field.SetParent( 
this );
 
 
  383    m_fields.emplace_back( 
this, aFieldType );
 
 
  411    wxASSERT( aSheetPin != 
nullptr );
 
  415    m_pins.push_back( aSheetPin );
 
 
  422    wxASSERT( aSheetPin != 
nullptr );
 
  427        if( *i == aSheetPin )
 
 
  441        if( 
pin->GetText().Cmp( aName ) == 0 )
 
 
  453        if( sheetPin->GetPosition() == aPosition )
 
 
  468        switch( 
pin->GetSide() )
 
  478    return topBottom > 0 && leftRight == 0;
 
 
  498        if( HLabel == 
nullptr ) 
 
 
  508    constexpr int gridSize = 
schIUScale.MilsToIU( 50 );
 
  510    int base = aVal / gridSize;
 
  511    int excess = abs( aVal % gridSize );
 
  515        return ( base + 1 ) * gridSize;
 
  517    else if( excess > 0 )
 
  519        return ( base ) * gridSize;
 
  523        return ( base - 1 ) * gridSize;
 
 
  531    int pinsRight = 
m_pos.x;
 
  533    for( 
size_t i = 0; i < 
m_pins.size();  i++ )
 
  541            pinsLeft = std::min( pinsLeft, pinRect.
GetLeft() );
 
  542            pinsRight = std::max( pinsRight, pinRect.
GetRight() );
 
  551    if( pinsLeft >= pinsRight )
 
  554        pinMinWidth = pinsRight - 
m_pos.x;
 
 
  565    int pinsBottom = 
m_pos.y;
 
  567    for( 
size_t i = 0; i < 
m_pins.size();  i++ )
 
  575            pinsTop = std::min( pinsTop, pinRect.
GetTop() );
 
  576            pinsBottom = std::max( pinsBottom, pinRect.
GetBottom() );
 
  585    if( pinsTop >= pinsBottom )
 
  588        pinMinHeight = pinsBottom - 
m_pos.y;
 
 
  598    std::vector<SCH_SHEET_PIN*> pins = 
m_pins;
 
 
  626        if( 
pin->HitTest( aPosition ) )
 
 
  651    int       margin = borderMargin + 
KiROUND( std::max( textSize.
x, textSize.
y ) * 0.5 );
 
  671    margin = borderMargin + 
KiROUND( std::max( textSize.
x, textSize.
y ) * 0.4 );
 
 
  709    end.x = std::max( 
m_size.x, textLength );
 
 
  727        bbox.
Merge( field.GetBoundingBox() );
 
 
  783            if( screen && screen->
GetFileName().Cmp( aFilename ) == 0 )
 
 
  828        if( 
m_screen->GetFileName().Cmp( aFilename ) == 0 )
 
 
  872        path.push_back( 
this );
 
  874        aList.emplace_back( 
_( 
"Hierarchical Path" ), 
path.PathHumanReadable( 
false, 
true ) );
 
  884        msgs.Add( 
_( 
"Simulation" ) );
 
  887        msgs.Add( 
_( 
"BOM" ) );
 
  890        msgs.Add( 
_( 
"Board" ) );
 
  893        msgs.Add( 
_( 
"DNP" ) );
 
  895    msg = wxJoin( msgs, 
'|' );
 
  896    msg.Replace( 
'|', wxS( 
", " ) );
 
  899        aList.emplace_back( 
_( 
"Exclude from" ), msg );
 
 
  916    m_pos += aMoveVector;
 
  919        pin->Move( aMoveVector );
 
  922        field.Move( aMoveVector );
 
 
  948        sheetPin->Rotate( aCenter, aRotateCCW );
 
  962            field.SetTextPos( pos );
 
 
  977        sheetPin->MirrorVertically( aCenter );
 
  983        field.SetTextPos( pos );
 
 
  997        sheetPin->MirrorHorizontally( aCenter );
 
 1003        field.SetTextPos( pos );
 
 
 1029        sheetPin->ConstrainOnEdge( sheetPin->GetPosition(), 
false );
 
 
 1046        pin->SetNumber( 
id );
 
 
 1058    while( !sheetPath.
empty() && sheetPath.
Last() != 
this )
 
 1061    if( sheetPath.
empty() )
 
 
 1077                      wxT( 
"Invalid item in schematic sheet pin list.  Bad programmer!" ) );
 
 1079        sheetPin->GetEndPoints( aItemList );
 
 
 1085                                     std::vector<DANGLING_END_ITEM>& aItemListByPos,
 
 1088    bool changed = 
false;
 
 1091        changed |= sheetPin->UpdateDanglingState( aItemListByType, aItemListByPos );
 
 
 1107    wxCHECK( sheet, 
false );
 
 1121    for( 
size_t i = 0; i < 
m_pins.size(); i++ )
 
 
 1133    std::vector<VECTOR2I> retval;
 
 1136        retval.push_back( sheetPin->GetPosition() );
 
 
 1143                                 const std::vector<KICAD_T>& aScanTypes )
 
 1145    for( 
KICAD_T scanType : aScanTypes )
 
 
 1182        aFunction( &field );
 
 
 1193    return wxString::Format( 
_( 
"Hierarchical Sheet '%s'" ),
 
 
 1235                      int aUnit, 
int aBodyStyle, 
const VECTOR2I& aOffset, 
bool aDimmed )
 
 1250    if( aBackground && backgroundColor.
a > 0.0 )
 
 1252        aPlotter->
SetColor( backgroundColor );
 
 1271        std::vector<wxString> properties;
 
 1277            properties.emplace_back( wxString::Format( wxT( 
"!%s = %s" ), field.GetName(),
 
 1278                                                       field.GetShownText( 
false ) ) );
 
 1286        sheetPin->Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
 
 1290        field.Plot( aPlotter, aBackground, aPlotOpts, aUnit, aBodyStyle, aOffset, aDimmed );
 
 1299                                 std::max( bbox.
GetY() - pins.
GetY(),
 
 1303        margins.
x = std::max( margins.
x * 0.6, margins.
y * 0.3 );
 
 1304        margins.
y = std::max( margins.
y * 0.6, margins.
x * 0.3 );
 
 1313                                strokeWidth, 
nullptr );
 
 
 1320    wxCHECK_MSG( 
Type() == aItem.
Type(), *
this,
 
 1321                 wxT( 
"Cannot assign object type " ) + aItem.
GetClass() + wxT( 
" to type " ) +
 
 1324    if( &aItem != 
this )
 
 1337            m_pins.back()->SetParent( 
this );
 
 
 1369    for( 
int ii = 
m_instances.size() - 1; ii >= 0; --ii )
 
 1375                                            "    page %s, from project %s.",
 
 
 1403        if( instance.m_Path == aPath )
 
 1409                ( 
GetName().IsEmpty() ) ? wxString( wxT( 
"root" ) ) : 
GetName() );
 
 
 1422                             bool aTestFromEnd )
 const 
 1428            if( instance.m_Path == aSheetPath )
 
 1430                aInstance = instance;
 
 1434        else if( instance.m_Path.EndsWith( aSheetPath ) )
 
 1436            aInstance = instance;
 
 
 1449        if( instance.m_Path.size() == 0 )
 
 
 1461        if( instance.m_Path.size() == 0 )
 
 
 1475    wxString pageNumber;
 
 1479        if( instance.m_Path == aParentPath )
 
 1481            pageNumber = instance.m_PageNumber;
 
 
 1494        if( instance.m_Path == aPath )
 
 1496            instance.m_PageNumber = aPageNumber;
 
 
 1506    if( &aOther == 
this )
 
 1513    std::vector<SCH_SHEET_INSTANCE> instances = 
GetInstances();
 
 1514    std::vector<SCH_SHEET_INSTANCE> otherInstances = aOther.
GetInstances();
 
 1520    std::sort( instances.begin(), instances.end(),
 
 1523                   if( aLhs.m_Path > aRhs.m_Path )
 
 1528    std::sort( otherInstances.begin(), otherInstances.end(),
 
 1531                   if( aLhs.m_Path > aRhs.m_Path )
 
 1537    auto itThis = instances.begin();
 
 1538    auto itOther = otherInstances.begin();
 
 1540    while( itThis != instances.end() )
 
 1542        if( ( itThis->m_Path == itOther->m_Path )
 
 1543          && ( itThis->m_PageNumber != itOther->m_PageNumber ) )
 
 
 1558    if( aPageNumberA == aPageNumberB )
 
 1563    bool isIntegerPageA = aPageNumberA.ToLong( &pageA );
 
 1564    bool isIntegerPageB = aPageNumberB.ToLong( &pageB );
 
 1566    if( isIntegerPageA && isIntegerPageB )
 
 1575    if( isIntegerPageA )
 
 1577    else if( isIntegerPageB )
 
 1584    wxCHECK( 
result != 0, 0 );
 
 
 1629    for( 
size_t i = 0; i < 
GetFields().size(); ++i )
 
 
 1691void SCH_SHEET::Show( 
int nestLevel, std::ostream& os )
 const 
 1696    NestedSpace( nestLevel, os ) << 
'<' << s.Lower().mb_str() << 
">" << 
" sheet_name=\"" 
 1701        sheetPin->Show( nestLevel + 1, os );
 
 1703    NestedSpace( nestLevel, os ) << 
"</" << s.Lower().mb_str() << 
">\n" << std::flush;
 
 1722                                    if( !aValue.GetAs( &value ) )
 
 1730                                    return std::make_unique<VALIDATION_ERROR_MSG>( msg );
 
 1743        const wxString groupAttributes = 
_HKI( 
"Attributes" );
 
 
 
constexpr EDA_IU_SCALE schIUScale
 
BITMAPS
A list of all bitmap identifiers.
 
@ add_hierarchical_subsheet
 
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
 
constexpr BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
 
constexpr const Vec GetEnd() const
 
constexpr coord_type GetY() const
 
constexpr size_type GetWidth() const
 
constexpr coord_type GetX() const
 
constexpr BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
 
constexpr const Vec GetCenter() const
 
constexpr size_type GetHeight() const
 
constexpr coord_type GetLeft() const
 
constexpr bool Contains(const Vec &aPoint) const
 
constexpr const Vec & GetOrigin() const
 
constexpr coord_type GetRight() const
 
constexpr void SetEnd(coord_type x, coord_type y)
 
constexpr coord_type GetTop() const
 
constexpr bool Intersects(const BOX2< Vec > &aRect) const
 
constexpr coord_type GetBottom() const
 
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
 
Color settings are a bit different than most of the settings objects in that there can be more than o...
 
COLOR4D GetColor(int aLayer) const
 
The base class for create windows for drawing purpose.
 
A base class for most all the KiCad significant classes used in schematics and boards.
 
KICAD_T Type() const
Returns the type of object.
 
virtual void SetParent(EDA_ITEM *aParent)
 
EDA_ITEM * GetParent() const
 
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
 
virtual const wxString & GetText() const
Return the string associated with the text object.
 
void SetTextPos(const VECTOR2I &aPoint)
 
void SetVertJustify(GR_TEXT_V_ALIGN_T aType)
 
static wxString GotoPageHref(const wxString &aDestination)
Generate a href to a page in the current schematic.
 
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
 
VECTOR2I GetTextSize() const
 
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
 
A color representation with 4 components: red, green, blue, alpha.
 
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
 
wxString AsString() const
 
Base plotter engine class.
 
RENDER_SETTINGS * RenderSettings()
 
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0)=0
 
virtual void HyperlinkBox(const BOX2I &aBox, const wxString &aDestinationURL)
Create a clickable hyperlink with a rectangular click area.
 
bool GetColorMode() const
 
virtual void ThickSegment(const VECTOR2I &start, const VECTOR2I &end, int width, void *aData)
 
virtual void HyperlinkMenu(const BOX2I &aBox, const std::vector< wxString > &aDestURLs)
Create a clickable hyperlink menu with a rectangular click area.
 
virtual void SetColor(const COLOR4D &color)=0
 
Container for project specific data.
 
PROPERTY_BASE & SetValidator(PROPERTY_VALIDATOR_FN &&aValidator)
 
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.
 
bool IsTopLevelSheet(const SCH_SHEET *aSheet) const
Check if a sheet is a top-level sheet (direct child of virtual root).
 
SCHEMATIC_SETTINGS & Settings() const
 
SCH_SHEET_LIST Hierarchy() const
Return the full schematic flattened hierarchical sheet list.
 
PROJECT & Project() const
Return a reference to the project this schematic is part of.
 
bool ResolveTextVar(const SCH_SHEET_PATH *aSheetPath, wxString *token, int aDepth) const
 
void GetContextualTextVars(wxArrayString *aVars) const
 
SCH_SHEET_PATH & CurrentSheet() const
 
bool ResolveCrossReference(wxString *token, int aDepth) const
Resolves text vars that refer to other items.
 
Schematic editor (Eeschema) main window.
 
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0) const
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
SCH_ITEM & operator=(const SCH_ITEM &aPin)
 
SCH_RENDER_SETTINGS * getRenderSettings(PLOTTER *aPlotter) const
 
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
 
AUTOPLACE_ALGO m_fieldsAutoplaced
 
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
 
wxString GetClass() const override
Return the class name.
 
int GetEffectivePenWidth(const SCH_RENDER_SETTINGS *aSettings) const
 
bool m_OverrideItemColors
 
const wxString & GetFileName() const
 
bool GetExcludedFromBOM() const
 
bool empty() const
Forwarded method from std::vector.
 
wxString PathHumanReadable(bool aUseShortRootName=true, bool aStripTrailingSeparator=false) const
Return the sheet path in a human readable form made from the sheet names.
 
wxString GetPageNumber() const
 
bool GetExcludedFromSim() const
 
bool GetExcludedFromBoard() const
 
SCH_SHEET * Last() const
Return a pointer to the last SCH_SHEET of the list.
 
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
 
size_t size() const
Forwarded method from std::vector.
 
void pop_back()
Forwarded method from std::vector.
 
Define a sheet pin (label) used in sheets to create hierarchical schematics.
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList) override
Add the schematic item end points to aItemList if the item has end points.
 
void GetContextualTextVars(wxArrayString *aVars) const
Return the list of system text vars & fields for this sheet.
 
bool GetExcludedFromBoard() const override
 
void SetBorderColor(KIGFX::COLOR4D aColor)
 
friend class SCH_SHEET_PIN
 
void SetExcludedFromBoard(bool aExcludeFromBoard) override
Set or clear exclude from board netlist flag.
 
void SetFileName(const wxString &aFilename)
 
bool HasConnectivityChanges(const SCH_ITEM *aItem, const SCH_SHEET_PATH *aInstance=nullptr) const override
Check if aItem has connectivity changes against this object.
 
wxString GetFileName() const
Return the filename corresponding to this sheet.
 
bool getInstance(SCH_SHEET_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
 
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
 
void SetExcludedFromSim(bool aExcludeFromSim, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from simulation flag.
 
void RemoveInstance(const KIID_PATH &aInstancePath)
 
void SetDNP(bool aDNP, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
 
bool addInstance(const KIID_PATH &aInstance)
Add a new instance aSheetPath to the instance list.
 
void AddPin(SCH_SHEET_PIN *aSheetPin)
Add aSheetPin to the sheet.
 
bool HasRootInstance() const
Check to see if this sheet has a root sheet instance.
 
wxString GetClass() const override
Return the class name.
 
wxString getPageNumber(const KIID_PATH &aParentPath) const
Return the sheet page number for aParentPath.
 
void SetExcludedFromBOM(bool aExcludeFromBOM, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from schematic bill of materials flag.
 
int GetPenWidth() const override
 
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
 
bool IsTopLevelSheet() const
Check if this sheet is a top-level sheet.
 
SCH_SHEET_PATH findSelf() const
Get the sheetpath of this sheet.
 
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
 
double Similarity(const SCH_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
 
bool GetExcludedFromBOMProp() const
 
std::vector< SCH_FIELD > & GetFields()
Return a reference to the vector holding the sheet's fields.
 
KIGFX::COLOR4D m_borderColor
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this sheet.
 
void renumberPins()
Renumber the sheet pins in the sheet.
 
VECTOR2I GetRotationCenter() const
Rotating around the boundingBox's center can cause walking when the sheetname or filename is longer t...
 
SCH_SHEET_PIN * GetPin(const VECTOR2I &aPosition)
Return the sheet pin item found at aPosition in the sheet.
 
bool GetExcludedFromBOM(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
 
bool operator<(const SCH_ITEM &aItem) const override
 
void CleanupSheet()
Delete sheet label which do not have a corresponding hierarchical label.
 
void RemovePin(const SCH_SHEET_PIN *aSheetPin)
Remove aSheetPin from the sheet.
 
void SetPositionIgnoringPins(const VECTOR2I &aPosition)
 
bool SearchHierarchy(const wxString &aFilename, SCH_SCREEN **aScreen)
Search the existing hierarchy for an instance of screen loaded from aFileName.
 
bool GetExcludedFromSim(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
 
bool LocatePathOfScreen(SCH_SCREEN *aScreen, SCH_SHEET_PATH *aList)
Search the existing hierarchy for an instance of screen loaded from aFileName.
 
std::vector< SCH_SHEET_INSTANCE > m_instances
 
bool HasUndefinedPins() const
Check all sheet labels against schematic for undefined hierarchical labels.
 
void SetPosition(const VECTOR2I &aPosition) override
 
void SetBackgroundColor(KIGFX::COLOR4D aColor)
 
int SymbolCount() const
Count our own symbols, without the power symbols.
 
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.
 
void SetDNPProp(bool aEnable)
 
void AddInstance(const SCH_SHEET_INSTANCE &aInstance)
 
int GetMinWidth(bool aFromLeft) const
Return the minimum width of the sheet based on the widths of the sheet pin text.
 
bool operator==(const SCH_ITEM &aOther) const override
 
std::vector< int > ViewGetLayers() const override
Return the layers the item is drawn on (which may be more than its "home" layer)
 
std::vector< SCH_FIELD > m_fields
 
KIGFX::COLOR4D m_backgroundColor
 
SCH_SHEET(EDA_ITEM *aParent=nullptr, const VECTOR2I &aPos=VECTOR2I(0, 0), VECTOR2I aSize=VECTOR2I(schIUScale.MilsToIU(MIN_SHEET_WIDTH), schIUScale.MilsToIU(MIN_SHEET_HEIGHT)))
 
void SetName(const wxString &aName)
 
int CountSheets() const
Count the number of sheets found in "this" sheet including all of the subsheets.
 
int GetNextFieldOrdinal() const
Return the next ordinal for a user field for this sheet.
 
void SetExcludedFromSimProp(bool aEnable)
 
VECTOR2I GetPosition() const override
 
const BOX2I GetBodyBoundingBox() const
Return a bounding box for the sheet body but not the fields.
 
bool HasPin(const wxString &aName) const
Check if the sheet already has a sheet pin named aName.
 
static int ComparePageNum(const wxString &aPageNumberA, const wxString &aPageNumberB)
Compare page numbers of schematic sheets.
 
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
 
void SetFields(const std::vector< SCH_FIELD > &aFields)
Set multiple schematic fields.
 
int CountActiveSheets() const
Count the number of sheets found in "this" sheet including all of the subsheets.
 
int GetScreenCount() const
Return the number of times the associated screen for the sheet is being used.
 
void SetScreen(SCH_SCREEN *aScreen)
Set the SCH_SCREEN associated with this sheet to aScreen.
 
SCH_SHEET & operator=(const SCH_ITEM &aSheet)
 
bool HasPageNumberChanges(const SCH_SHEET &aOther) const
Check if the instance data of this sheet has any changes compared to aOther.
 
const SCH_SHEET_INSTANCE & GetRootInstance() const
Return the root sheet instance data.
 
bool doIsConnected(const VECTOR2I &aPosition) const override
Provide the object specific test to see if it is connected to aPosition.
 
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
 
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
 
std::vector< VECTOR2I > GetConnectionPoints() const override
Add all the connection points for this item to aPoints.
 
KIGFX::COLOR4D GetBorderColor() const
 
std::vector< SCH_SHEET_PIN * > m_pins
 
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...
 
void SetBorderWidth(int aWidth)
 
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
 
void setPageNumber(const KIID_PATH &aInstance, const wxString &aPageNumber)
Set the page number for the sheet instance aInstance.
 
bool IsVirtualRootSheet() const
 
void AutoplaceFields(SCH_SCREEN *aScreen, AUTOPLACE_ALGO aAlgo) override
 
int GetMinHeight(bool aFromTop) const
Return the minimum height that the sheet can be resized based on the sheet pin positions.
 
bool GetDNP(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Set or clear the 'Do Not Populate' flags.
 
bool GetExcludedFromSimProp() const
 
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
 
bool UpdateDanglingState(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos, const SCH_SHEET_PATH *aPath=nullptr) override
Test the schematic item to aItemList to check if it's dangling state has changed.
 
void Resize(const VECTOR2I &aSize)
Resize this sheet to aSize and adjust all of the labels accordingly.
 
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
 
int GetBorderWidth() 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.
 
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
 
void SetExcludedFromBOMProp(bool aEnable)
 
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
 
bool ResolveTextVar(const SCH_SHEET_PATH *aPath, wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the sheet.
 
const std::vector< SCH_SHEET_INSTANCE > & GetInstances() const
 
bool IsVerticalOrientation() const
 
bool HitTest(const VECTOR2I &aPosition, int aAccuracy) const override
Test if aPosition is inside or on the boundary of this item.
 
KIGFX::COLOR4D GetBackgroundColor() const
 
bool IsPower() const override
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
#define DEFAULT_LINE_WIDTH_MILS
The default wire width in mils. (can be changed in preference menu)
 
static constexpr EDA_ANGLE ANGLE_90
 
static constexpr EDA_ANGLE ANGLE_VERTICAL
 
static constexpr EDA_ANGLE ANGLE_HORIZONTAL
 
static constexpr EDA_ANGLE ANGLE_270
 
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
 
@ FILLED_SHAPE
Fill with object color.
 
a few functions useful in geometry calculations.
 
const wxChar *const traceSchSheetPaths
Flag to enable debug output of schematic symbol sheet path manipulation code.
 
@ LAYER_SELECTION_SHADOWS
 
constexpr void MIRROR(T &aPoint, const T &aMirrorRef)
Updates aPoint with the mirror of aPoint relative to the aMirrorRef.
 
Message panel definition file.
 
bool BoxHitTest(const VECTOR2I &aHitPoint, const BOX2I &aHittee, int aAccuracy)
Perform a point-to-box hit test.
 
KICOMMON_API wxString EllipsizeMenuText(const wxString &aString)
Ellipsize text (at the end) to be no more than 36 characters.
 
KICOMMON_API wxString EllipsizeStatusText(wxWindow *aWindow, const wxString &aString)
Ellipsize text (at the end) to be no more than 1/3 of the window width.
 
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
 
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
 
@ PT_SIZE
Size expressed in distance units (mm/inch)
 
std::optional< std::unique_ptr< VALIDATION_ERROR > > VALIDATOR_RESULT
Null optional means validation succeeded.
 
const SCH_FIELD * FindField(const std::vector< SCH_FIELD > &aFields, FIELD_T aFieldId)
 
int NextFieldOrdinal(const std::vector< SCH_FIELD > &aFields)
 
int bumpToNextGrid(const int aVal, const int aDirection)
 
static struct SCH_SHEET_DESC _SCH_SHEET_DESC
 
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
 
SHEET_SIDE
Define the edge of the sheet that the sheet pin is positioned.
 
COLOR_SETTINGS * GetColorSettings(const wxString &aName)
 
std::vector< FAB_LAYER_COLOR > dummy
 
int StrNumCmp(const wxString &aString1, const wxString &aString2, bool aIgnoreCase)
Compare two strings with alphanumerical content.
 
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
 
bool m_PDFHierarchicalLinks
 
A simple container for sheet instance information.
 
wxString GetDefaultFieldName(FIELD_T aFieldId, bool aTranslateForHI)
Return a default symbol field name for a mandatory field type.
 
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
 
wxString result
Test unit parsing edge cases and error handling.
 
wxLogTrace helper definitions.
 
void RotatePoint(int *pX, int *pY, const EDA_ANGLE &aAngle)
Calculate the new point of coord coord pX, pY, for a rotation center 0, 0.
 
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
 
wxString GetFieldValidationErrorMessage(FIELD_T aFieldId, const wxString &aValue)
Return the error message if aValue is invalid for aFieldId.
 
Custom text control validator definitions.
 
VECTOR2< int32_t > VECTOR2I
 
VECTOR2< double > VECTOR2D