KiCad PCB EDA Suite
sch_screen.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2009 Jean-Pierre Charras, [email protected]
5 * Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef SCREEN_H
26#define SCREEN_H
27
28#include <memory>
29#include <stddef.h>
30#include <unordered_set>
31#include <vector>
32#include <wx/arrstr.h>
33#include <wx/chartype.h>
34#include <wx/gdicmn.h>
35#include <wx/string.h>
36
37#include <base_screen.h>
38#include <core/typeinfo.h>
39#include <kiid.h>
40#include <kiway_holder.h>
41#include <layer_ids.h>
42#include <marker_base.h>
43#include <page_info.h>
44#include <template_fieldnames.h>
45#include <title_block.h>
46
47#include <lib_id.h>
48#include <sch_symbol.h> // SCH_SYMBOL_INSTANCE
49#include <sch_reference_list.h>
50#include <sch_rtree.h>
51#include <sch_sheet.h>
52#include <sch_text.h>
53#include <sch_sheet_path.h>
54
55class BUS_ALIAS;
56class EDA_ITEM;
57class LIB_SYMBOL;
58class LIB_PIN;
59class SCH_SYMBOL;
60class SCH_LINE;
61class SCH_LABEL_BASE;
62class PLOTTER;
63class REPORTER;
65class SCH_EDIT_FRAME;
66class SCH_SHEET_LIST;
69
71{
75};
76
77
79{
81 int Unit;
83
84 std::vector<std::pair<int, wxString>> Fields;
85
86 PICKED_SYMBOL() : Unit( 1 ), Convert( 1 )
87 {
88 }
89};
90
91class SCH_SCREEN : public BASE_SCREEN
92{
93public:
94 SCH_SCREEN( EDA_ITEM* aParent = nullptr );
95
97
98 SCHEMATIC* Schematic() const;
99
109 EE_RTREE& Items() { return m_rtree; }
110 const EE_RTREE& Items() const { return m_rtree; }
111
112 bool IsEmpty() const
113 {
114 return m_rtree.empty();
115 }
116
117 bool HasItems( KICAD_T aItemType ) const;
118
119 bool HasSheets() const { return HasItems( SCH_SHEET_T ); }
120
121 static bool ClassOf( const EDA_ITEM* aItem );
122
123 virtual wxString GetClass() const override
124 {
125 return wxT( "SCH_SCREEN" );
126 }
127
128 void SetFileFormatVersionAtLoad( int aVersion ) { m_fileFormatVersionAtLoad = aVersion; }
130
131 const PAGE_INFO& GetPageSettings() const { return m_paper; }
132 void SetPageSettings( const PAGE_INFO& aPageSettings ) { m_paper = aPageSettings; }
133
142 void SetFileName( const wxString& aFileName );
143
144 const wxString& GetFileName() const { return m_fileName; }
145
146 void SetFileReadOnly( bool aIsReadOnly ) { m_isReadOnly = aIsReadOnly; }
147 bool IsReadOnly() const { return m_isReadOnly; }
148
149 void SetFileExists( bool aFileExists ) { m_fileExists = aFileExists; }
150 bool FileExists() const { return m_fileExists; }
151
152 const VECTOR2I& GetAuxOrigin() const { return m_aux_origin; }
153 void SetAuxOrigin( const VECTOR2I& aPosition ) { m_aux_origin = aPosition; }
154
155 const TITLE_BLOCK& GetTitleBlock() const { return m_titles; }
156
157 void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) { m_titles = aTitleBlock; }
158
159 void DecRefCount();
160 void IncRefCount();
161 int GetRefCount() const { return m_refCount; }
162
164
178 std::vector<SCH_SHEET_PATH>& GetClientSheetPaths()
179 {
181 }
182
183 void Append( SCH_ITEM* aItem );
184
195 void Append( SCH_SCREEN* aScreen );
196
200 void Clear( bool aFree = true );
201
207 void FreeDrawList();
208
217 SCH_ITEM* GetItem( const VECTOR2I& aPosition, int aAccuracy = 0,
218 KICAD_T aType = SCH_LOCATE_ANY_T ) const;
219
235 void UpdateSymbolLinks( REPORTER* aReporter = nullptr );
236
242
249 void Print( const RENDER_SETTINGS* aSettings );
250
259 void Plot( PLOTTER* aPlotter ) const;
260
268 bool Remove( SCH_ITEM* aItem );
269
275 void Update( SCH_ITEM* aItem );
276
285 void DeleteItem( SCH_ITEM* aItem );
286
287 bool CheckIfOnDrawList( const SCH_ITEM* aItem ) const;
288
295 void TestDanglingEnds( const SCH_SHEET_PATH* aPath = nullptr,
296 std::function<void( SCH_ITEM* )>* aChangedHandler = nullptr ) const;
297
304 std::set<SCH_ITEM*> MarkConnections( SCH_LINE* aSegment, bool aSecondPass );
305
309 void ClearDrawingState();
310
311 size_t CountConnectedItems( const VECTOR2I& aPos, bool aTestJunctions ) const;
312
327 bool IsJunction( const VECTOR2I& aPosition ) const;
328
333 bool IsExplicitJunction( const VECTOR2I& aPosition ) const;
334
339 bool IsExplicitJunctionNeeded( const VECTOR2I& aPosition ) const;
340
342 TEXT_SPIN_STYLE aDefaultOrientation,
343 const SCH_SHEET_PATH* aSheet ) const;
348 bool IsExplicitJunctionAllowed( const VECTOR2I& aPosition ) const;
349
358 bool IsTerminalPoint( const VECTOR2I& aPosition, int aLayer ) const;
359
369 LIB_PIN* GetPin( const VECTOR2I& aPosition, SCH_SYMBOL** aSymbol = nullptr,
370 bool aEndPointOnly = false ) const;
371
378 SCH_SHEET_PIN* GetSheetPin( const VECTOR2I& aPosition ) const;
379
388 void ClearAnnotation( SCH_SHEET_PATH* aSheetPath, bool aResetPrefix );
389
400
406 void GetHierarchicalItems( std::vector<SCH_ITEM*>* aItems ) const;
407
412 void GetSheets( std::vector<SCH_ITEM*>* aItems ) const;
413
424 SCH_LINE* GetLine( const VECTOR2I& aPosition, int aAccuracy = 0, int aLayer = LAYER_NOTES,
425 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const;
426
427 SCH_LINE* GetWire( const VECTOR2I& aPosition, int aAccuracy = 0,
428 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const
429 {
430 return GetLine( aPosition, aAccuracy, LAYER_WIRE, aSearchType );
431 }
432
433 SCH_LINE* GetBus( const VECTOR2I& aPosition, int aAccuracy = 0,
434 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const
435 {
436 return GetLine( aPosition, aAccuracy, LAYER_BUS, aSearchType );
437 }
438
446 std::vector<SCH_LINE*> GetBusesAndWires( const VECTOR2I& aPosition, bool aIgnoreEndpoints = false ) const;
447
453 std::vector<VECTOR2I> GetConnections() const;
454
461 std::vector<VECTOR2I> GetNeededJunctions( const std::deque<EDA_ITEM*>& aItems ) const;
462
470 SCH_LABEL_BASE* GetLabel( const VECTOR2I& aPosition, int aAccuracy = 0 ) const;
471
478 std::map<wxString, LIB_SYMBOL*>& GetLibSymbols() { return m_libSymbols; }
479 const std::map<wxString, LIB_SYMBOL*>& GetLibSymbols() const { return m_libSymbols; }
480
490 void AddLibSymbol( LIB_SYMBOL* aLibSymbol );
491
495 void AddBusAlias( std::shared_ptr<BUS_ALIAS> aAlias );
496
501 {
502 m_aliases.clear();
503 }
504
508 std::set< std::shared_ptr<BUS_ALIAS> > GetBusAliases() const
509 {
510 return m_aliases;
511 }
512
513 const std::vector<SCH_SYMBOL_INSTANCE>& GetSymbolInstances() const
514 {
515 return m_symbolInstances;
516 }
517
518 const std::vector<SCH_SHEET_INSTANCE>& GetSheetInstances() const
519 {
520 return m_sheetInstances;
521 }
522
523 const KIID& GetUuid() const { return m_uuid; }
524
525 void AssignNewUuid() { m_uuid = KIID(); }
526
531
536
537#if defined(DEBUG)
538 void Show( int nestLevel, std::ostream& os ) const override;
539#endif
540
544 void MigrateSimModels();
545
546private:
547 friend SCH_EDIT_FRAME; // Only to populate m_symbolInstances.
548 friend SCH_SEXPR_PARSER; // Only to load instance information from schematic file.
549 friend SCH_SEXPR_PLUGIN; // Only to save the loaded instance information to schematic file.
551
552 bool doIsJunction( const VECTOR2I& aPosition, bool aBreakCrossings,
553 bool* aHasExplicitJunctionDot, bool* aHasBusEntry ) const;
554
555 void clearLibSymbols();
556
557public:
563
564private:
565 wxString m_fileName; // File used to load the screen.
567 int m_refCount; // Number of sheets referencing this screen.
568 // Delete when it goes to zero.
576 std::vector<SCH_SHEET_PATH> m_clientSheetPathList;
577
578
579 PAGE_INFO m_paper; // The size of the paper to print or plot on.
581 VECTOR2I m_aux_origin; // Origin used for drill & place files by Pcbnew.
583
584 int m_modification_sync; // Inequality with SYMBOL_LIBS::GetModificationHash()
585 // will trigger ResolveAll().
586
587 bool m_zoomInitialized; // Set to true once the zoom value is initialized with
588 // `InitZoom()`.
589
591
594
596 std::set< std::shared_ptr< BUS_ALIAS > > m_aliases;
597
599 std::map<wxString, LIB_SYMBOL*> m_libSymbols;
600
615 std::vector<SCH_SYMBOL_INSTANCE> m_symbolInstances;
616 std::vector<SCH_SHEET_INSTANCE> m_sheetInstances;
617
625};
626
627
638{
639public:
640 SCH_SCREENS( SCH_SHEET* aSheet );
641 SCH_SCREENS( SCH_SHEET& aSheet ) : SCH_SCREENS( &aSheet ) {}
642 ~SCH_SCREENS();
643 size_t GetCount() const { return m_screens.size(); }
646 SCH_SCREEN* GetScreen( unsigned int aIndex ) const;
647 SCH_SHEET* GetSheet( unsigned int aIndex ) const;
648
657 void ClearAnnotationOfNewSheetPaths( SCH_SHEET_LIST& aInitialSheetPathList );
658
669
676 void DeleteAllMarkers( enum MARKER_BASE::TYPEMARKER aMarkerType, bool aIncludeExclusions );
677
681 void DeleteMarkers( enum MARKER_BASE::TYPEMARKER aMarkerTyp, int aErrorCode,
682 bool aIncludeExclusions = true );
683
687 void DeleteMarker( SCH_MARKER* aMarker );
688
700 void UpdateSymbolLinks( REPORTER* aReporter = nullptr );
701
702 void ClearEditFlags();
703
715
722 size_t GetLibNicknames( wxArrayString& aLibNicknames );
723
731 int ChangeSymbolLibNickname( const wxString& aFrom, const wxString& aTo );
732
742 bool HasSchematic( const wxString& aSchematicFileName );
743
748
760 bool CanCauseCaseSensitivityIssue( const wxString& aSchematicFileName ) const;
761
766
767private:
768 void addScreenToList( SCH_SCREEN* aScreen, SCH_SHEET* aSheet );
769 void buildScreenList( SCH_SHEET* aSheet);
770
771 std::vector< SCH_SCREEN* > m_screens;
772 std::vector< SCH_SHEET* > m_sheets;
773 unsigned int m_index;
774};
775
776#endif /* SCREEN_H */
BASE_SCREEN class implementation.
Handles how to draw a screen (a board, a schematic ...)
Definition: base_screen.h:41
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
Implements an R-tree for fast spatial and type indexing of schematic items.
Definition: sch_rtree.h:40
bool empty() const
Definition: sch_rtree.h:176
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Definition: kiid.h:48
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
Define a library symbol object.
Definition: lib_symbol.h:99
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:54
Base plotter engine class.
Definition: plotter.h:110
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:71
Holds all the data relating to one schematic.
Definition: schematic.h:61
SCH_ALTIUM_PLUGIN is a SCH_PLUGIN derivation for loading Altium .SchDoc schematic files.
Schematic editor (Eeschema) main window.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:147
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:40
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:638
SCH_SCREEN * GetNext()
unsigned int m_index
Definition: sch_screen.h:773
std::vector< SCH_SHEET * > m_sheets
Definition: sch_screen.h:772
SCH_SCREEN * GetScreen(unsigned int aIndex) const
void UpdateSymbolLinks(REPORTER *aReporter=nullptr)
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in the full schematic.
void DeleteMarker(SCH_MARKER *aMarker)
Delete a specific marker.
void buildScreenList(SCH_SHEET *aSheet)
void DeleteMarkers(enum MARKER_BASE::TYPEMARKER aMarkerTyp, int aErrorCode, bool aIncludeExclusions=true)
Delete all markers of a particular type and error code.
SCH_SCREEN * GetFirst()
int ChangeSymbolLibNickname(const wxString &aFrom, const wxString &aTo)
Change all of the symbol library nicknames.
SCH_SCREENS(SCH_SHEET *aSheet)
SCH_SCREENS(SCH_SHEET &aSheet)
Definition: sch_screen.h:641
void BuildClientSheetPathList()
built the list of sheet paths sharing a screen for each screen in use
size_t GetCount() const
Definition: sch_screen.h:643
void ClearAnnotationOfNewSheetPaths(SCH_SHEET_LIST &aInitialSheetPathList)
Clear the annotation for the symbols inside new sheetpaths when a complex hierarchy is modified and n...
bool CanCauseCaseSensitivityIssue(const wxString &aSchematicFileName) const
Check aSchematicFileName for a potential file name case sensitivity issue.
bool HasNoFullyDefinedLibIds()
Test all of the schematic symbols to see if all LIB_ID objects library nickname is not set.
void ClearEditFlags()
SCH_SHEET * GetSheet(unsigned int aIndex) const
int ReplaceDuplicateTimeStamps()
Test all sheet and symbol objects in the schematic for duplicate time stamps and replaces them as nec...
void DeleteAllMarkers(enum MARKER_BASE::TYPEMARKER aMarkerType, bool aIncludeExclusions)
Delete all electronic rules check markers of aMarkerType from all the screens in the list.
std::vector< SCH_SCREEN * > m_screens
Definition: sch_screen.h:771
bool HasSchematic(const wxString &aSchematicFileName)
Check if one of the schematics in the list of screens is aSchematicFileName.
size_t GetLibNicknames(wxArrayString &aLibNicknames)
Fetch all of the symbol library nicknames into aLibNicknames.
void SetLegacySymbolInstanceData()
Update the symbol value and footprint instance data for legacy designs.
void addScreenToList(SCH_SCREEN *aScreen, SCH_SHEET *aSheet)
void SetFileFormatVersionAtLoad(int aVersion)
Definition: sch_screen.h:128
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:131
std::map< wxString, LIB_SYMBOL * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:599
bool m_fileExists
Definition: sch_screen.h:593
void ClearDrawingState()
Clear the state flags of all the items in the screen.
std::vector< SCH_SHEET_INSTANCE > m_sheetInstances
Definition: sch_screen.h:616
SCH_LINE * GetLine(const VECTOR2I &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Return a line item located at aPosition.
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock)
Definition: sch_screen.h:157
void ClearBusAliases()
Remove all bus alias definitions.
Definition: sch_screen.h:500
void Update(SCH_ITEM *aItem)
Update aItem's bounding box in the tree.
Definition: sch_screen.cpp:265
void AddLibSymbol(LIB_SYMBOL *aLibSymbol)
Add aLibSymbol to the library symbol map.
void AddBusAlias(std::shared_ptr< BUS_ALIAS > aAlias)
Add a bus alias definition (and transfers ownership of the pointer).
std::map< wxString, LIB_SYMBOL * > & GetLibSymbols()
Fetch a list of unique LIB_SYMBOL object pointers required to properly render each SCH_SYMBOL in this...
Definition: sch_screen.h:478
bool HasItems(KICAD_T aItemType) const
Definition: sch_screen.cpp:131
void Clear(bool aFree=true)
Delete all draw items and clears the project settings.
Definition: sch_screen.cpp:227
LIB_PIN * GetPin(const VECTOR2I &aPosition, SCH_SYMBOL **aSymbol=nullptr, bool aEndPointOnly=false) const
Test the screen for a symbol pin item at aPosition.
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:272
std::vector< SCH_SHEET_PATH > & GetClientSheetPaths()
Return the number of times this screen is used.
Definition: sch_screen.h:178
void UpdateSymbolLinks(REPORTER *aReporter=nullptr)
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic from the project SYMB...
Definition: sch_screen.cpp:847
SCH_LINE * GetWire(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Definition: sch_screen.h:427
int m_refCount
Definition: sch_screen.h:567
const EE_RTREE & Items() const
Definition: sch_screen.h:110
TITLE_BLOCK m_titles
Definition: sch_screen.h:580
void TestDanglingEnds(const SCH_SHEET_PATH *aPath=nullptr, std::function< void(SCH_ITEM *)> *aChangedHandler=nullptr) const
Test all of the connectable objects in the schematic for unused connection points.
void EnsureAlternateReferencesExist()
For screens shared by many sheetpaths (complex hierarchies): to be able to clear or modify any refere...
void SetPageSettings(const PAGE_INFO &aPageSettings)
Definition: sch_screen.h:132
bool AllSymbolDefaultInstancesNotSet()
Check all symbol default instance to see if they are not set yet.
std::vector< SCH_LINE * > GetBusesAndWires(const VECTOR2I &aPosition, bool aIgnoreEndpoints=false) const
Return buses and wires passing through aPosition.
const std::map< wxString, LIB_SYMBOL * > & GetLibSymbols() const
Definition: sch_screen.h:479
int m_modification_sync
Definition: sch_screen.h:584
double m_LastZoomLevel
last value for the zoom level, useful in Eeschema when changing the current displayed sheet to reuse ...
Definition: sch_screen.h:562
const VECTOR2I & GetAuxOrigin() const
Definition: sch_screen.h:152
void SetAuxOrigin(const VECTOR2I &aPosition)
Definition: sch_screen.h:153
bool IsExplicitJunction(const VECTOR2I &aPosition) const
Indicates that a junction dot is necessary at the given location.
Definition: sch_screen.cpp:433
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:109
int m_fileFormatVersionAtLoad
Definition: sch_screen.h:566
void Print(const RENDER_SETTINGS *aSettings)
Print all the items in the screen to aDC.
const wxString & GetFileName() const
Definition: sch_screen.h:144
void DecRefCount()
Definition: sch_screen.cpp:124
const KIID & GetUuid() const
Definition: sch_screen.h:523
std::set< SCH_ITEM * > MarkConnections(SCH_LINE *aSegment, bool aSecondPass)
Return all wires and junctions connected to aSegment which are not connected any symbol pin.
Definition: sch_screen.cpp:357
SCH_ITEM * GetItem(const VECTOR2I &aPosition, int aAccuracy=0, KICAD_T aType=SCH_LOCATE_ANY_T) const
Check aPosition within a distance of aAccuracy for items of type aFilter.
Definition: sch_screen.cpp:341
bool IsExplicitJunctionAllowed(const VECTOR2I &aPosition) const
Indicates that a juction dot may be placed at the given location.
Definition: sch_screen.cpp:670
void clearLibSymbols()
Definition: sch_screen.cpp:101
friend SCH_ALTIUM_PLUGIN
Definition: sch_screen.h:550
wxString m_fileName
Definition: sch_screen.h:565
bool IsTerminalPoint(const VECTOR2I &aPosition, int aLayer) const
Test if aPosition is a connection point on aLayer.
Definition: sch_screen.cpp:782
bool IsReadOnly() const
Definition: sch_screen.h:147
void UpdateLocalLibSymbolLinks()
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic with the local projec...
void IncRefCount()
Definition: sch_screen.cpp:118
std::set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:596
void SetFileName(const wxString &aFileName)
Set the file name for this screen to aFileName.
Definition: sch_screen.cpp:110
static bool ClassOf(const EDA_ITEM *aItem)
Definition: sch_screen.cpp:139
void SetLegacySymbolInstanceData()
Update the symbol value and footprint instance data for legacy designs.
const std::vector< SCH_SYMBOL_INSTANCE > & GetSymbolInstances() const
Definition: sch_screen.h:513
SCH_LINE * GetBus(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Definition: sch_screen.h:433
std::vector< SCH_SHEET_PATH > m_clientSheetPathList
The list of sheet paths sharing this screen.
Definition: sch_screen.h:576
SCH_SCREEN(EDA_ITEM *aParent=nullptr)
Definition: sch_screen.cpp:66
SCHEMATIC * Schematic() const
Definition: sch_screen.cpp:92
EE_RTREE m_rtree
Definition: sch_screen.h:582
friend SCH_SEXPR_PLUGIN
Definition: sch_screen.h:549
bool HasSheets() const
Definition: sch_screen.h:119
int GetFileFormatVersionAtLoad() const
Definition: sch_screen.h:129
VECTOR2I m_aux_origin
Definition: sch_screen.h:581
void GetHierarchicalItems(std::vector< SCH_ITEM * > *aItems) const
Add all schematic sheet and symbol objects in the screen to aItems.
bool IsExplicitJunctionNeeded(const VECTOR2I &aPosition) const
Indicates that a junction dot is necessary at the given location, and does not yet exist.
Definition: sch_screen.cpp:443
SCH_SHEET_PIN * GetSheetPin(const VECTOR2I &aPosition) const
Test the screen if aPosition is a sheet label object.
void Plot(PLOTTER *aPlotter) const
Plot all the schematic objects to aPlotter.
const TITLE_BLOCK & GetTitleBlock() const
Definition: sch_screen.h:155
void FreeDrawList()
Free all the items from the schematic associated with the screen.
Definition: sch_screen.cpp:246
virtual wxString GetClass() const override
Return the class name.
Definition: sch_screen.h:123
friend SCH_EDIT_FRAME
Definition: sch_screen.h:547
void SetConnectivityDirty()
bool m_zoomInitialized
Definition: sch_screen.h:587
std::vector< VECTOR2I > GetNeededJunctions(const std::deque< EDA_ITEM * > &aItems) const
Return the unique set of points belonging to aItems where a junction is needed.
bool FileExists() const
Definition: sch_screen.h:150
int GetRefCount() const
Definition: sch_screen.h:161
void AssignNewUuid()
Definition: sch_screen.h:525
PAGE_INFO m_paper
Definition: sch_screen.h:579
bool IsJunction(const VECTOR2I &aPosition) const
Test if a junction is required for the items at aPosition on the screen.
Definition: sch_screen.cpp:423
friend SCH_SEXPR_PARSER
Definition: sch_screen.h:548
const std::vector< SCH_SHEET_INSTANCE > & GetSheetInstances() const
Definition: sch_screen.h:518
bool m_isReadOnly
Read only status of the screen file.
Definition: sch_screen.h:590
TEXT_SPIN_STYLE GetLabelOrientationForPoint(const VECTOR2I &aPosition, TEXT_SPIN_STYLE aDefaultOrientation, const SCH_SHEET_PATH *aSheet) const
Definition: sch_screen.cpp:452
void GetSheets(std::vector< SCH_ITEM * > *aItems) const
Similar to Items().OfType( SCH_SHEET_T ), but return the sheets in a deterministic order (L-R,...
bool CheckIfOnDrawList(const SCH_ITEM *aItem) const
Definition: sch_screen.cpp:335
std::vector< VECTOR2I > GetConnections() const
Collect a unique list of all possible connection points in the schematic.
KIID m_uuid
A unique identifier for each schematic file.
Definition: sch_screen.h:624
std::vector< SCH_SYMBOL_INSTANCE > m_symbolInstances
The list of symbol instances loaded from the schematic file.
Definition: sch_screen.h:615
void ClearAnnotation(SCH_SHEET_PATH *aSheetPath, bool aResetPrefix)
Clear the annotation for the symbols in aSheetPath on the screen.
void SetFileReadOnly(bool aIsReadOnly)
Definition: sch_screen.h:146
bool doIsJunction(const VECTOR2I &aPosition, bool aBreakCrossings, bool *aHasExplicitJunctionDot, bool *aHasBusEntry) const
Definition: sch_screen.cpp:681
size_t CountConnectedItems(const VECTOR2I &aPos, bool aTestJunctions) const
void MigrateSimModels()
Migrate any symbols having V6 simulation models to their V7 equivalents.
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:145
void DeleteItem(SCH_ITEM *aItem)
Removes aItem from the linked list and deletes the object.
Definition: sch_screen.cpp:310
std::set< std::shared_ptr< BUS_ALIAS > > GetBusAliases() const
Return a list of bus aliases defined in this screen.
Definition: sch_screen.h:508
bool IsEmpty() const
Definition: sch_screen.h:112
void SetFileExists(bool aFileExists)
Definition: sch_screen.h:149
SCH_LABEL_BASE * GetLabel(const VECTOR2I &aPosition, int aAccuracy=0) const
Return a label item located at aPosition.
Object to parser s-expression symbol library and schematic file formats.
A SCH_PLUGIN derivation for loading schematic files using the new s-expression file format.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:66
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:57
Schematic symbol object.
Definition: sch_symbol.h:81
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:41
@ LAYER_WIRE
Definition: layer_ids.h:344
@ LAYER_NOTES
Definition: layer_ids.h:358
@ LAYER_BUS
Definition: layer_ids.h:345
SCH_LINE_TEST_T
Definition: sch_screen.h:71
@ ENTIRE_LENGTH_T
Definition: sch_screen.h:72
@ EXCLUDE_END_POINTS_T
Definition: sch_screen.h:74
@ END_POINTS_ONLY_T
Definition: sch_screen.h:73
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
LIB_ID LibId
Definition: sch_screen.h:80
std::vector< std::pair< int, wxString > > Fields
Definition: sch_screen.h:84
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:78
@ SCH_LOCATE_ANY_T
Definition: typeinfo.h:183
@ SCH_SHEET_T
Definition: typeinfo.h:158