KiCad PCB EDA Suite
SCH_SCREEN Class Reference

#include <sch_screen.h>

Inheritance diagram for SCH_SCREEN:
BASE_SCREEN EDA_ITEM KIGFX::VIEW_ITEM

Public Member Functions

 SCH_SCREEN (EDA_ITEM *aParent=nullptr)
 Constructor. More...
 
 ~SCH_SCREEN ()
 
SCHEMATICSchematic () const
 
EE_RTREEItems ()
 
const EE_RTREEItems () const
 
bool IsEmpty ()
 
bool HasItems (KICAD_T aItemType) const
 
bool HasSheets () const
 
virtual wxString GetClass () const override
 Function GetClass returns the class name. More...
 
const PAGE_INFOGetPageSettings () const
 
void SetPageSettings (const PAGE_INFO &aPageSettings)
 
void SetFileName (const wxString &aFileName)
 
const wxString & GetFileName () const
 
const wxPointGetAuxOrigin () const
 
void SetAuxOrigin (const wxPoint &aPosition)
 
const TITLE_BLOCKGetTitleBlock () const
 
void SetTitleBlock (const TITLE_BLOCK &aTitleBlock)
 
void DecRefCount ()
 
void IncRefCount ()
 
int GetRefCount () const
 
std::vector< SCH_SHEET_PATH > & GetClientSheetPaths ()
 
void Append (SCH_ITEM *aItem)
 
void Append (SCH_SCREEN *aScreen)
 Copy the contents of aScreen into this SCH_SCREEN object. More...
 
void Clear (bool aFree=true)
 Delete all draw items and clears the project settings. More...
 
void FreeDrawList ()
 Free all the items from the schematic associated with the screen. More...
 
SCH_ITEMGetItem (const wxPoint &aPosition, int aAccuracy=0, KICAD_T aType=SCH_LOCATE_ANY_T)
 Check aPosition within a distance of aAccuracy for items of type aFilter. More...
 
void Place (SCH_EDIT_FRAME *frame, wxDC *DC)
 
void UpdateSymbolLinks (REPORTER *aReporter=nullptr)
 Initialize the LIB_PART reference for each SCH_COMPONENT found in this schematic from the project SYMBOL_LIB_TABLE. More...
 
void UpdateLocalLibSymbolLinks ()
 Initialize the LIB_PART reference for each SCH_COMPONENT found in this schematic with the local project library symbols. More...
 
void Print (RENDER_SETTINGS *aSettings)
 Print all the items in the screen to aDC. More...
 
void Plot (PLOTTER *aPlotter)
 Plot all the schematic objects to aPlotter. More...
 
bool Remove (SCH_ITEM *aItem)
 Remove aItem from the schematic associated with this screen. More...
 
void Update (SCH_ITEM *aItem)
 Updates aItem's bounding box in the tree. More...
 
void DeleteItem (SCH_ITEM *aItem)
 Removes aItem from the linked list and deletes the object. More...
 
bool CheckIfOnDrawList (SCH_ITEM *st)
 
bool TestDanglingEnds (const SCH_SHEET_PATH *aPath=nullptr)
 Test all of the connectable objects in the schematic for unused connection points. More...
 
std::set< SCH_ITEM * > MarkConnections (SCH_LINE *aSegment)
 Return all wires and junctions connected to aSegment which are not connected any component pin. More...
 
virtual void ClearUndoORRedoList (UNDO_REDO_CONTAINER &aList, int aItemCount=-1) override
 Free the undo or redo list from aList element. More...
 
void ClearDrawingState ()
 Clear the state flags of all the items in the screen. More...
 
size_t CountConnectedItems (const wxPoint &aPos, bool aTestJunctions)
 
bool IsJunctionNeeded (const wxPoint &aPosition, bool aNew=false)
 Test if a junction is required for the items at aPosition on the screen. More...
 
bool IsTerminalPoint (const wxPoint &aPosition, int aLayer)
 Test if aPosition is a connection point on aLayer. More...
 
LIB_PINGetPin (const wxPoint &aPosition, SCH_COMPONENT **aComponent=NULL, bool aEndPointOnly=false)
 Test the screen for a component pin item at aPosition. More...
 
SCH_SHEET_PINGetSheetLabel (const wxPoint &aPosition)
 Test the screen if aPosition is a sheet label object. More...
 
void ClearAnnotation (SCH_SHEET_PATH *aSheetPath)
 Clear the annotation for the components in aSheetPath on the screen. More...
 
void EnsureAlternateReferencesExist ()
 For screens shared by many sheetpaths (complex hierarchies): to be able to clear or modify any reference related sharing this screen (i.e. More...
 
void GetHierarchicalItems (std::vector< SCH_ITEM * > *aItems)
 Add all schematic sheet and component objects in the screen to aItems. More...
 
void GetSheets (std::vector< SCH_ITEM * > *aItems)
 Similar to GetItems().OfType( SCH_SHEET_T ), but return the sheets in a deterministic order (L-R, T-B) for sheet numbering. More...
 
SCH_LINEGetLine (const wxPoint &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
 Return a line item located at aPosition. More...
 
SCH_LINEGetWire (const wxPoint &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
 
SCH_LINEGetBus (const wxPoint &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
 
SCH_TEXTGetLabel (const wxPoint &aPosition, int aAccuracy=0)
 Return a label item located at aPosition. More...
 
bool SetComponentFootprint (SCH_SHEET_PATH *aSheetPath, const wxString &aReference, const wxString &aFootPrint, bool aSetVisible)
 Search this screen for a symbol with aReference and set the footprint field to aFootPrint if found. More...
 
std::map< wxString, LIB_PART * > & GetLibSymbols ()
 Fetch a list of unique LIB_PART object pointers required to properly render each SCH_COMPONENT in this schematic. More...
 
void AddLibSymbol (LIB_PART *aLibSymbol)
 Add aLibSymbol to the the library symbol map. More...
 
void AddBusAlias (std::shared_ptr< BUS_ALIAS > aAlias)
 Adds a bus alias definition (and transfers ownership of the pointer) More...
 
void ClearBusAliases ()
 Removes all bus alias definitions. More...
 
std::unordered_set< std::shared_ptr< BUS_ALIAS > > GetBusAliases ()
 Returns a list of bus aliases defined in this screen. More...
 
const std::vector< COMPONENT_INSTANCE_REFERENCE > & GetSymbolInstances () const
 
void InitDataPoints (const wxSize &aPageSizeInternalUnits)
 
virtual void ClearUndoRedoList ()
 Function ClearUndoRedoList clear undo and redo list, using ClearUndoORRedoList() picked items are deleted by ClearUndoORRedoList() according to their status. More...
 
virtual void PushCommandToUndoList (PICKED_ITEMS_LIST *aItem)
 Function PushCommandToUndoList add a command to undo in undo list delete the very old commands when the max count of undo commands is reached ( using ClearUndoORRedoList) More...
 
virtual void PushCommandToRedoList (PICKED_ITEMS_LIST *aItem)
 Function PushCommandToRedoList add a command to redo in redo list delete the very old commands when the max count of redo commands is reached ( using ClearUndoORRedoList) More...
 
virtual PICKED_ITEMS_LISTPopCommandFromUndoList ()
 PopCommandFromUndoList return the last command to undo and remove it from list nothing is deleted. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromRedoList ()
 PopCommandFromRedoList return the last command to undo and remove it from list nothing is deleted. More...
 
int GetUndoCommandCount () const
 
int GetRedoCommandCount () const
 
int GetMaxUndoItems () const
 
void SetMaxUndoItems (int aMax)
 
void SetModify ()
 
void ClrModify ()
 
void SetSave ()
 
void ClrSave ()
 
bool IsModify () const
 
bool IsSave () const
 
KICAD_T Type () const
 Function Type() More...
 
EDA_ITEMGetParent () const
 
virtual void SetParent (EDA_ITEM *aParent)
 
bool IsModified () const
 
bool IsNew () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, int state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
bool HasFlag (STATUS_FLAGS aFlag)
 
STATUS_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool IsType (const KICAD_T aScanTypes[]) const
 Function IsType Checks whether the item is one of the listed types. More...
 
void SetForceVisible (bool aEnable)
 Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
bool IsForceVisible () const
 
virtual void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
 Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
virtual bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const
 Function HitTest tests if aPosition is contained within or on the bounding box of an item. More...
 
virtual bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const
 Function HitTest tests if aRect intersects or is contained within the bounding box of an item. More...
 
virtual const EDA_RECT GetBoundingBox () const
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
virtual const wxPoint GetPosition () const
 
virtual const wxPoint GetFocusPosition () const
 Function GetFocusPosition similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
virtual EDA_ITEMClone () const
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
virtual wxString GetSelectMenuText (EDA_UNITS aUnits) const
 Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
virtual BITMAP_DEF GetMenuImage () const
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
virtual bool Matches (wxFindReplaceData &aSearchData, void *aAuxData)
 Function Matches compares the item against the search criteria in aSearchData. More...
 
virtual bool Replace (wxFindReplaceData &aSearchData, void *aAuxData=NULL)
 Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Function IsReplaceable. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
virtual const BOX2I ViewBBox () const override
 Function ViewBBox() returns the bounding box of the item covering all its layers. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
virtual unsigned int ViewGetLOD (int aLayer, VIEW *aView) const
 Function ViewGetLOD() Returns the level of detail (LOD) of the item. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 

Static Public Member Functions

static bool ClassOf (const EDA_ITEM *aItem)
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
static bool Replace (wxFindReplaceData &aSearchData, wxString &aText)
 Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

wxPoint m_DrawOrg
 offsets for drawing the circuit on the screen More...
 
VECTOR2D m_LocalOrigin
 Relative Screen cursor coordinate (on grid) in user units. More...
 
wxPoint m_StartVisu
 Coordinates in drawing units of the current view position (upper left corner of device) More...
 
bool m_Center
 Center on screen. More...
 
VECTOR2D m_ScrollCenter
 Current scroll center point in logical units. More...
 
bool m_Initialized
 
UNDO_REDO_CONTAINER m_UndoList
 Objects list for the undo command (old data) More...
 
UNDO_REDO_CONTAINER m_RedoList
 Objects list for the redo command (old data) More...
 
int m_ScreenNumber
 
int m_NumberOfScreens
 
const KIID m_Uuid
 

Static Public Attributes

static wxString m_PageLayoutDescrFileName
 the name of the page layout descr file, or emty to used the default pagelayout More...
 

Protected Member Functions

bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Protected Attributes

STATUS_FLAGS m_Status
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
STATUS_FLAGS m_Flags
 

Private Member Functions

void clearLibSymbols ()
 

Private Attributes

wxString m_fileName
 File used to load the screen. More...
 
int m_refCount
 Number of sheets referencing this screen. More...
 
std::vector< SCH_SHEET_PATHm_clientSheetPathList
 the list of scheet paths sharing this screen used in some annotation calculations to update alternate references Note: a screen having a m_refCount = 1 (only one sheet path using it) can have many scheet paths sharing this screen, if this sheet is inside an other sheet having many instances (one sheet path by parent sheet instance). More...
 
PAGE_INFO m_paper
 The size of the paper to print or plot on. More...
 
TITLE_BLOCK m_titles
 
wxPoint m_aux_origin
 Origin of the auxiliary axis, which is used in exports mostly, but not yet in EESCHEMA. More...
 
EE_RTREE m_rtree
 
int m_modification_sync
 inequality with PART_LIBS::GetModificationHash() will trigger ResolveAll(). More...
 
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
 List of bus aliases stored in this screen. More...
 
std::map< wxString, LIB_PART * > m_libSymbols
 Library symbols required for this schematic. More...
 
std::vector< COMPONENT_INSTANCE_REFERENCEm_symbolInstances
 The list of symbol instances loaded from the schematic file. More...
 
friend SCH_EDIT_FRAME
 
friend SCH_SEXPR_PARSER
 
friend SCH_SEXPR_PLUGIN
 

Detailed Description

Definition at line 93 of file sch_screen.h.

Constructor & Destructor Documentation

◆ SCH_SCREEN()

SCH_SCREEN::SCH_SCREEN ( EDA_ITEM aParent = nullptr)

Constructor.

Definition at line 70 of file sch_screen.cpp.

70  :
71  BASE_SCREEN( aParent, SCH_SCREEN_T ),
72  m_paper( wxT( "A4" ) )
73 {
75 
76  m_refCount = 0;
77 
78  // Suitable for schematic only. For libedit and viewlib, must be set to true
79  m_Center = false;
80 
81  InitDataPoints( m_paper.GetSizeIU() );
82 }
int m_refCount
Number of sheets referencing this screen.
Definition: sch_screen.h:99
int m_modification_sync
inequality with PART_LIBS::GetModificationHash() will trigger ResolveAll().
Definition: sch_screen.h:120
void InitDataPoints(const wxSize &aPageSizeInternalUnits)
Definition: base_screen.cpp:50
PAGE_INFO m_paper
The size of the paper to print or plot on.
Definition: sch_screen.h:111
bool m_Center
Center on screen.
Definition: base_screen.h:71
BASE_SCREEN(EDA_ITEM *aParent, KICAD_T aType=SCREEN_T)
Definition: base_screen.cpp:36

References BASE_SCREEN::InitDataPoints(), BASE_SCREEN::m_Center, m_modification_sync, m_paper, and m_refCount.

◆ ~SCH_SCREEN()

SCH_SCREEN::~SCH_SCREEN ( )

Definition at line 85 of file sch_screen.cpp.

86 {
89  FreeDrawList();
90 }
void clearLibSymbols()
Definition: sch_screen.cpp:102
virtual void ClearUndoRedoList()
Function ClearUndoRedoList clear undo and redo list, using ClearUndoORRedoList() picked items are del...
Definition: base_screen.cpp:73
void FreeDrawList()
Free all the items from the schematic associated with the screen.
Definition: sch_screen.cpp:219

References clearLibSymbols(), BASE_SCREEN::ClearUndoRedoList(), and FreeDrawList().

Member Function Documentation

◆ AddBusAlias()

void SCH_SCREEN::AddBusAlias ( std::shared_ptr< BUS_ALIAS aAlias)

Adds a bus alias definition (and transfers ownership of the pointer)

Definition at line 1133 of file sch_screen.cpp.

1134 {
1135  m_aliases.insert( aAlias );
1136 }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:124

References m_aliases.

Referenced by SCH_LEGACY_PLUGIN::LoadContent(), and SCH_SEXPR_PARSER::parseBusAlias().

◆ AddLibSymbol()

void SCH_SCREEN::AddLibSymbol ( LIB_PART aLibSymbol)

Add aLibSymbol to the the library symbol map.

The symbol is mapped to the result of LIB_ID::Format(). If a symbol is already mapped, the existing symbol is replaced with aLibSymbol. The screen object takes ownership of the pointer.

Parameters
aLibSymbolA pointer the LIB_PART to be added to the symbol map.

Definition at line 1115 of file sch_screen.cpp.

1116 {
1117  wxCHECK( aLibSymbol, /* void */ );
1118 
1119  wxString libSymbolName = aLibSymbol->GetLibId().Format().wx_str();
1120 
1121  auto it = m_libSymbols.find( libSymbolName );
1122 
1123  if( it != m_libSymbols.end() )
1124  {
1125  delete it->second;
1126  m_libSymbols.erase( it );
1127  }
1128 
1129  m_libSymbols[libSymbolName] = aLibSymbol;
1130 }
LIB_ID GetLibId() const override
UTF8 Format() const
Definition: lib_id.cpp:237
wxString wx_str() const
Definition: utf8.cpp:51
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References LIB_ID::Format(), LIB_PART::GetLibId(), m_libSymbols, and UTF8::wx_str().

Referenced by SCH_SEXPR_PARSER::ParseSchematic().

◆ Append() [1/2]

void SCH_SCREEN::Append ( SCH_ITEM aItem)

Definition at line 133 of file sch_screen.cpp.

134 {
135  if( aItem->Type() != SCH_SHEET_PIN_T && aItem->Type() != SCH_FIELD_T )
136  {
137  // Ensure the item can reach the SCHEMATIC through this screen
138  aItem->SetParent( this );
139 
140  if( aItem->Type() == SCH_COMPONENT_T )
141  {
142  SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( aItem );
143 
144  if( symbol->GetPartRef() )
145  {
146  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
147 
148  if( it == m_libSymbols.end() )
149  {
151  new LIB_PART( *symbol->GetPartRef() );
152  }
153  else
154  {
155  // The original library symbol may have changed since the last time
156  // it was added to the schematic. If it has changed, then a new name
157  // must be created for the library symbol list to prevent all of the
158  // other schematic symbols referencing that library symbol from changing.
159  LIB_PART* foundSymbol = it->second;
160 
161  if( *foundSymbol != *symbol->GetPartRef() )
162  {
163  int cnt = 1;
164  wxString newName;
165 
166  newName.Printf( "%s_%d", symbol->GetLibId().Format().wx_str(), cnt );
167 
168  while( m_libSymbols.find( newName ) != m_libSymbols.end() )
169  {
170  cnt += 1;
171  newName.Printf( "%s_%d", symbol->GetLibId().Format().wx_str(), cnt );
172  }
173 
174  symbol->SetSchSymbolLibraryName( newName );
175  m_libSymbols[newName] = new LIB_PART( *symbol->GetPartRef() );
176  }
177  }
178  }
179  }
180 
181  m_rtree.insert( aItem );
183  }
184 }
void insert(SCH_ITEM *aItem)
Function Insert() Inserts an item into the tree.
Definition: sch_rtree.h:62
wxString GetSchSymbolLibraryName() const
void SetSchSymbolLibraryName(const wxString &aName)
The name of the symbol in the schematic library symbol list.
int m_modification_sync
inequality with PART_LIBS::GetModificationHash() will trigger ResolveAll().
Definition: sch_screen.h:120
virtual void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:196
EE_RTREE m_rtree
Definition: sch_screen.h:118
Define a library symbol object.
std::unique_ptr< LIB_PART > & GetPartRef()
UTF8 Format() const
Definition: lib_id.cpp:237
wxString wx_str() const
Definition: utf8.cpp:51
Schematic symbol object.
Definition: sch_component.h:88
const LIB_ID & GetLibId() const
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References LIB_ID::Format(), SCH_COMPONENT::GetLibId(), SCH_COMPONENT::GetPartRef(), SCH_COMPONENT::GetSchSymbolLibraryName(), EE_RTREE::insert(), m_libSymbols, m_modification_sync, m_rtree, SCH_COMPONENT_T, SCH_FIELD_T, SCH_SHEET_PIN_T, EDA_ITEM::SetParent(), SCH_COMPONENT::SetSchSymbolLibraryName(), EDA_ITEM::Type(), and UTF8::wx_str().

Referenced by SCH_EAGLE_PLUGIN::addImplicitConnections(), Append(), ERC_TESTER::diagnose(), CONNECTION_GRAPH::ercCheckLabels(), SCH_LEGACY_PLUGIN::LoadContent(), SCH_EAGLE_PLUGIN::loadInstance(), SCH_EAGLE_PLUGIN::loadSegments(), SCH_EDIT_FRAME::LoadSheetFromFile(), DIALOG_SCH_SHEET_PROPS::onSheetFilenameChanged(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_EDITOR_CONTROL::Paste(), CONNECTION_SUBGRAPH::ResolveDrivers(), SimilarLabelsDiagnose(), ERC_TESTER::TestDuplicateSheetNames(), ERC_TESTER::TestMultiunitFootprints(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), Update(), and UpdateSymbolLinks().

◆ Append() [2/2]

void SCH_SCREEN::Append ( SCH_SCREEN aScreen)

Copy the contents of aScreen into this SCH_SCREEN object.

Warning
The contents of Screen cannot contain any duplicate sheet names or any hierarchy recursion issues or bad things will happen.
Parameters
aScreenis the screen to append to this one.
Returns
false if there are any duplicate sheet names or any hierarchy recursion issues the calling this method or KiCad will crash.

Definition at line 187 of file sch_screen.cpp.

188 {
189  wxCHECK_RET( aScreen, "Invalid screen object." );
190 
191  // No need to descend the hierarchy. Once the top level screen is copied, all of it's
192  // children are copied as well.
193  for( auto aItem : aScreen->m_rtree )
194  Append( aItem );
195 
196  aScreen->Clear( false );
197 }
void Clear(bool aFree=true)
Delete all draw items and clears the project settings.
Definition: sch_screen.cpp:200
EE_RTREE m_rtree
Definition: sch_screen.h:118
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:133

References Append(), Clear(), and m_rtree.

◆ CheckIfOnDrawList()

bool SCH_SCREEN::CheckIfOnDrawList ( SCH_ITEM st)

Definition at line 304 of file sch_screen.cpp.

305 {
306  return m_rtree.contains( aItem, true );
307 }
bool contains(SCH_ITEM *aItem, bool aRobust=false)
Determine if a given item exists in the tree.
Definition: sch_rtree.h:122
EE_RTREE m_rtree
Definition: sch_screen.h:118

References EE_RTREE::contains(), and m_rtree.

Referenced by SCH_EDIT_FRAME::AddItemToScreenAndUndoList().

◆ ClassOf()

static bool SCH_SCREEN::ClassOf ( const EDA_ITEM aItem)
inlinestatic

Definition at line 174 of file sch_screen.h.

175  {
176  return aItem && SCH_SCREEN_T == aItem->Type();
177  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193

References SCH_SCREEN_T, and EDA_ITEM::Type().

◆ Clear()

void SCH_SCREEN::Clear ( bool  aFree = true)

Delete all draw items and clears the project settings.

Definition at line 200 of file sch_screen.cpp.

201 {
202  if( aFree )
203  {
204  FreeDrawList();
205  clearLibSymbols();
206  }
207  else
208  {
209  m_rtree.clear();
210  }
211 
212  // Clear the project settings
214 
215  m_titles.Clear();
216 }
int m_ScreenNumber
Definition: base_screen.h:85
void clearLibSymbols()
Definition: sch_screen.cpp:102
void Clear()
Definition: title_block.h:116
TITLE_BLOCK m_titles
Definition: sch_screen.h:113
EE_RTREE m_rtree
Definition: sch_screen.h:118
void FreeDrawList()
Free all the items from the schematic associated with the screen.
Definition: sch_screen.cpp:219
int m_NumberOfScreens
Definition: base_screen.h:86
void clear()
Function RemoveAll() Removes all items from the RTree.
Definition: sch_rtree.h:108

References EE_RTREE::clear(), TITLE_BLOCK::Clear(), clearLibSymbols(), FreeDrawList(), BASE_SCREEN::m_NumberOfScreens, m_rtree, BASE_SCREEN::m_ScreenNumber, and m_titles.

Referenced by Append(), SCH_EDIT_FRAME::OnCloseWindow(), and SCH_EDITOR_CONTROL::Paste().

◆ ClearAnnotation()

void SCH_SCREEN::ClearAnnotation ( SCH_SHEET_PATH aSheetPath)

Clear the annotation for the components in aSheetPath on the screen.

Parameters
aSheetPathThe sheet path of the component annotation to clear. If NULL then the entire hierarchy is cleared.

Definition at line 909 of file sch_screen.cpp.

910 {
911 
912  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
913  {
914  SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
915 
916  component->ClearAnnotation( aSheetPath );
917 
918  // Clear the modified component flag set by component->ClearAnnotation
919  // because we do not use it here and we should not leave this flag set,
920  // when an editing is finished:
921  component->ClearFlags();
922  }
923 }
void ClearAnnotation(SCH_SHEET_PATH *aSheetPath)
Clear exiting component annotation.
EE_RTREE & Items()
Definition: sch_screen.h:162
Schematic symbol object.
Definition: sch_component.h:88
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:233
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References SCH_COMPONENT::ClearAnnotation(), EDA_ITEM::ClearFlags(), Items(), and SCH_COMPONENT_T.

Referenced by SCH_SCREENS::ClearAnnotationOfNewSheetPaths(), SCH_EDIT_FRAME::DeleteAnnotation(), SCH_EDITOR_CONTROL::Paste(), and SCH_EDIT_TOOL::Properties().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearBusAliases()

void SCH_SCREEN::ClearBusAliases ( )
inline

Removes all bus alias definitions.

Definition at line 517 of file sch_screen.h.

518  {
519  m_aliases.clear();
520  }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:124

References m_aliases.

◆ ClearDrawingState()

void SCH_SCREEN::ClearDrawingState ( )

Clear the state flags of all the items in the screen.

Definition at line 819 of file sch_screen.cpp.

820 {
821  for( auto item : Items() )
822  item->ClearTempFlags();
823 }
EE_RTREE & Items()
Definition: sch_screen.h:162

References Items().

Referenced by SCH_EDIT_FRAME::OpenProjectFiles(), and EE_SELECTION_TOOL::SelectConnection().

◆ ClearEditFlags()

◆ ClearFlags()

void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 233 of file base_struct.h.

233 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Definition: base_struct.h:176

References EDA_ITEM::m_Flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), SCH_EDIT_FRAME::ConvertPart(), LIB_EDIT_TOOL::Copy(), MICROWAVE_TOOL::createMicrowaveInductor(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), LIB_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::Exchange_Module(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), FOOTPRINT_EDITOR_TOOLS::ImportFootprint(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), FOOTPRINT_EDIT_FRAME::LoadModuleFromLibrary(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceModule(), LIB_PIN_TOOL::PlacePin(), DRAWING_TOOL::PlaceText(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::RollbackPartFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ clearLibSymbols()

void SCH_SCREEN::clearLibSymbols ( )
private

Definition at line 102 of file sch_screen.cpp.

103 {
104  for( auto libSymbol : m_libSymbols )
105  delete libSymbol.second;
106 
107  m_libSymbols.clear();
108 }
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References m_libSymbols.

Referenced by Clear(), UpdateSymbolLinks(), and ~SCH_SCREEN().

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 245 of file base_struct.h.

246  {
248  DO_NOT_DRAW );
249  }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:114
#define TEMP_SELECTED
flag indicating that the structure has already selected
Definition: base_struct.h:125
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:128
#define CANDIDATE
flag indicating that the structure is connected
Definition: base_struct.h:127
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:123
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:233
#define DO_NOT_DRAW
Used to disable draw function.
Definition: base_struct.h:129
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:122

References CANDIDATE, EDA_ITEM::ClearFlags(), DO_NOT_DRAW, ENDPOINT, IS_LINKED, SKIP_STRUCT, STARTPOINT, and TEMP_SELECTED.

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearUndoORRedoList()

void SCH_SCREEN::ClearUndoORRedoList ( UNDO_REDO_CONTAINER aList,
int  aItemCount = -1 
)
overridevirtual

Free the undo or redo list from aList element.

  • Wrappers are deleted.
  • data pointed by wrappers are deleted if not in use in schematic i.e. when they are copy of a schematic item or they are no more in use (DELETED)
Parameters
aList= the UNDO_REDO_CONTAINER to clear
aItemCount= the count of items to remove. < 0 for all items items are removed from the beginning of the list. So this function can be called to remove old commands

Reimplemented from BASE_SCREEN.

Definition at line 804 of file sch_screen.cpp.

805 {
806  if( aItemCount == 0 )
807  return;
808 
809  for( auto& command : aList.m_CommandsList )
810  {
811  command->ClearListAndDeleteItems();
812  delete command;
813  }
814 
815  aList.m_CommandsList.clear();
816 }
std::vector< PICKED_ITEMS_LIST * > m_CommandsList

References UNDO_REDO_CONTAINER::m_CommandsList.

Referenced by SCH_EDIT_FRAME::DisplayCurrentSheet(), SCH_EDIT_FRAME::importFile(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDITOR_CONTROL::rescueProject(), LIB_EDIT_FRAME::SaveCopyInUndoList(), and SCH_EDIT_FRAME::SaveCopyInUndoList().

◆ ClearUndoRedoList()

void BASE_SCREEN::ClearUndoRedoList ( )
virtualinherited

Function ClearUndoRedoList clear undo and redo list, using ClearUndoORRedoList() picked items are deleted by ClearUndoORRedoList() according to their status.

Definition at line 73 of file base_screen.cpp.

74 {
77 }
virtual void ClearUndoORRedoList(UNDO_REDO_CONTAINER &aList, int aItemCount=-1)
Function ClearUndoORRedoList (virtual).
Definition: base_screen.h:119
UNDO_REDO_CONTAINER m_UndoList
Objects list for the undo command (old data)
Definition: base_screen.h:82
UNDO_REDO_CONTAINER m_RedoList
Objects list for the redo command (old data)
Definition: base_screen.h:83

References BASE_SCREEN::ClearUndoORRedoList(), BASE_SCREEN::m_RedoList, and BASE_SCREEN::m_UndoList.

Referenced by FOOTPRINT_EDIT_FRAME::Clear_Pcb(), PCB_EDIT_FRAME::Clear_Pcb(), LIB_EDIT_FRAME::emptyScreen(), FOOTPRINT_EDITOR_TOOLS::ImportFootprint(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), PL_EDITOR_FRAME::OnNewPageLayout(), FOOTPRINT_EDIT_FRAME::RevertFootprint(), PCB_SCREEN::~PCB_SCREEN(), PL_EDITOR_SCREEN::~PL_EDITOR_SCREEN(), and ~SCH_SCREEN().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 153 of file view_item.h.

154  {
156  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:161
#define NULL

References KIGFX::VIEW_ITEM::m_viewPrivData, and NULL.

Referenced by KIGFX::VIEW::OnDestroy().

◆ Clone()

EDA_ITEM * EDA_ITEM::Clone ( ) const
virtualinherited

Function Clone creates a duplicate of this item with linked list members set to NULL.

The default version will return NULL in release builds and likely crash the program. In debug builds, a warning message indicating the derived class has not implemented cloning. This really should be a pure virtual function. Due to the fact that there are so many objects derived from EDA_ITEM, the decision was made to return NULL until all the objects derived from EDA_ITEM implement cloning. Once that happens, this function should be made pure.

Returns
A clone of the item.

Reimplemented in MODULE_ZONE_CONTAINER, ZONE_CONTAINER, SCH_COMPONENT, MODULE, SCH_SHEET, D_PAD, SCH_HIERLABEL, LIB_PIN, VIA, SCH_GLOBALLABEL, SCH_LABEL, ARC, SCH_TEXT, DRAWSEGMENT, DIMENSION, TEXTE_MODULE, SCH_LINE, TRACK, SCH_BUS_BUS_ENTRY, SCH_SHEET_PIN, SCH_FIELD, LIB_FIELD, SCH_BUS_WIRE_ENTRY, SCH_BITMAP, EDGE_MODULE, LIB_ARC, TEXTE_PCB, SCH_NO_CONNECT, SCH_JUNCTION, LIB_POLYLINE, SCH_MARKER, LIB_TEXT, PCB_TARGET, LIB_BEZIER, LIB_CIRCLE, LIB_RECTANGLE, and KIGFX::ORIGIN_VIEWITEM.

Definition at line 108 of file base_struct.cpp.

109 {
110  wxCHECK_MSG( false, NULL, wxT( "Clone not implemented in derived class " ) + GetClass() +
111  wxT( ". Bad programmer!" ) );
112 }
#define NULL
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References EDA_ITEM::GetClass(), and NULL.

Referenced by LIB_DRAWING_TOOLS::DrawShape(), LIB_EDIT_TOOL::Duplicate(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), LIB_PART::LIB_PART(), LIB_EDIT_FRAME::LoadOneSymbol(), new_clone(), LIB_PART::operator=(), LIB_EDIT_TOOL::Paste(), SCH_SEXPR_PLUGIN_CACHE::removeSymbol(), SCH_LEGACY_PLUGIN_CACHE::removeSymbol(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), LIB_PART::SetConversion(), LIB_PART::SetUnitCount(), SCH_DRAWING_TOOLS::SingleClickPlace(), COMMIT::Stage(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClrModify()

◆ ClrSave()

void BASE_SCREEN::ClrSave ( )
inlineinherited

Definition at line 186 of file base_screen.h.

186 { m_FlagSave = false; }
bool m_FlagSave
Indicates automatic file save.
Definition: base_screen.h:48

References BASE_SCREEN::m_FlagSave.

Referenced by SCH_EDIT_FRAME::SaveEEFile(), and PCB_EDIT_FRAME::SavePcbFile().

◆ CountConnectedItems()

size_t SCH_SCREEN::CountConnectedItems ( const wxPoint aPos,
bool  aTestJunctions 
)

Definition at line 895 of file sch_screen.cpp.

896 {
897  size_t count = 0;
898 
899  for( SCH_ITEM* item : Items() )
900  {
901  if( ( item->Type() != SCH_JUNCTION_T || aTestJunctions ) && item->IsConnected( aPos ) )
902  count++;
903  }
904 
905  return count;
906 }
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References Items(), and SCH_JUNCTION_T.

◆ DecRefCount()

void SCH_SCREEN::DecRefCount ( )

Definition at line 117 of file sch_screen.cpp.

118 {
119  wxCHECK_RET( m_refCount != 0,
120  wxT( "Screen reference count already zero. Bad programmer!" ) );
121  m_refCount--;
122 }
int m_refCount
Number of sheets referencing this screen.
Definition: sch_screen.h:99

References m_refCount.

Referenced by SCH_SHEET::SetScreen(), and SCH_SHEET::~SCH_SHEET().

◆ DeleteItem()

void SCH_SCREEN::DeleteItem ( SCH_ITEM aItem)

Removes aItem from the linked list and deletes the object.

If aItem is a schematic sheet label, it is removed from the screen associated with the sheet that contains the label to be deleted.

Parameters
aItemThe schematic object to be deleted from the screen.

Definition at line 283 of file sch_screen.cpp.

284 {
285  wxCHECK_RET( aItem, wxT( "Cannot delete invalid item from screen." ) );
286 
287  SetModify();
288  Remove( aItem );
289 
290  if( aItem->Type() == SCH_SHEET_PIN_T )
291  {
292  // This structure is attached to a sheet, get the parent sheet object.
293  SCH_SHEET_PIN* sheetPin = (SCH_SHEET_PIN*) aItem;
294  SCH_SHEET* sheet = sheetPin->GetParent();
295  wxCHECK_RET( sheet, wxT( "Sheet label parent not properly set, bad programmer!" ) );
296  sheet->RemovePin( sheetPin );
297  return;
298  }
299 
300  delete aItem;
301 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:245
SCH_SHEET * GetParent() const
Get the parent sheet object of this sheet pin.
Definition: sch_sheet.h:168
void RemovePin(SCH_SHEET_PIN *aSheetPin)
Remove aSheetPin from the sheet.
Definition: sch_sheet.cpp:287
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:84
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:216
void SetModify()
Definition: base_screen.h:183
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193

References SCH_SHEET_PIN::GetParent(), Remove(), SCH_SHEET::RemovePin(), SCH_SHEET_PIN_T, BASE_SCREEN::SetModify(), and EDA_ITEM::Type().

◆ EnsureAlternateReferencesExist()

void SCH_SCREEN::EnsureAlternateReferencesExist ( )

For screens shared by many sheetpaths (complex hierarchies): to be able to clear or modify any reference related sharing this screen (i.e.

thie list of components), an entry for each screen path must exist. This function creates missing entries, using as default reference the current reference field and unit number Note: m_clientSheetPathList must be up to date ( built by SCH_SCREENS::BuildClientSheetPathList() )

Definition at line 926 of file sch_screen.cpp.

927 {
928  if( GetClientSheetPaths().size() <= 1 ) // No need for alternate reference
929  return;
930 
931  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
932  {
933  auto component = static_cast<SCH_COMPONENT*>( item );
934 
935  // Add (when not existing) all sheet path entries
936  for( const auto& sheet : GetClientSheetPaths() )
937  component->AddSheetPathReferenceEntryIfMissing( sheet.Path() );
938  }
939 }
EE_RTREE & Items()
Definition: sch_screen.h:162
std::vector< SCH_SHEET_PATH > & GetClientSheetPaths()
Definition: sch_screen.h:209
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References GetClientSheetPaths(), Items(), and SCH_COMPONENT_T.

Referenced by SCH_SCREENS::ClearAnnotationOfNewSheetPaths(), and SCH_EDITOR_CONTROL::Paste().

◆ FreeDrawList()

void SCH_SCREEN::FreeDrawList ( )

Free all the items from the schematic associated with the screen.

This does not delete any sub hierarchies.

Definition at line 219 of file sch_screen.cpp.

220 {
221  // We don't know which order we will encounter dependent items (e.g. pins or fields), so
222  // we store the items to be deleted until we've fully cleared the tree before deleting
223  std::vector<SCH_ITEM*> delete_list;
224 
225  std::copy_if( m_rtree.begin(), m_rtree.end(), std::back_inserter( delete_list ),
226  []( SCH_ITEM* aItem )
227  {
228  return ( aItem->Type() != SCH_SHEET_PIN_T && aItem->Type() != SCH_FIELD_T );
229  } );
230 
231  m_rtree.clear();
232 
233  for( auto item : delete_list )
234  delete item;
235 }
iterator end()
Definition: sch_rtree.h:253
EE_RTREE m_rtree
Definition: sch_screen.h:118
iterator begin()
Definition: sch_rtree.h:248
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186
void clear()
Function RemoveAll() Removes all items from the RTree.
Definition: sch_rtree.h:108

References EE_RTREE::begin(), EE_RTREE::clear(), EE_RTREE::end(), m_rtree, SCH_FIELD_T, and SCH_SHEET_PIN_T.

Referenced by Clear(), and ~SCH_SCREEN().

◆ GetAuxOrigin()

const wxPoint& SCH_SCREEN::GetAuxOrigin ( ) const
inline

Definition at line 191 of file sch_screen.h.

191 { return m_aux_origin; }
wxPoint m_aux_origin
Origin of the auxiliary axis, which is used in exports mostly, but not yet in EESCHEMA.
Definition: sch_screen.h:116

References m_aux_origin.

◆ GetBoundingBox()

const EDA_RECT EDA_ITEM::GetBoundingBox ( ) const
virtualinherited

Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

This box should be an enclosing perimeter for visible components of this object, and the units should be in the pcb or schematic coordinate system. It is OK to overestimate the size by a few counts.

Reimplemented in BOARD, D_PAD, SCH_HIERLABEL, SCH_SHEET, SCH_GLOBALLABEL, SCH_COMPONENT, SCH_LABEL, WS_DRAW_ITEM_BITMAP, WS_DRAW_ITEM_TEXT, SCH_TEXT, WS_DRAW_ITEM_PAGE, DIMENSION, DRAWSEGMENT, GERBER_DRAW_ITEM, LIB_PART, WS_DRAW_ITEM_RECT, LIB_ITEM, TEXTE_MODULE, WS_DRAW_ITEM_POLYPOLYGONS, MODULE, LIB_FIELD, SCH_LINE, WS_DRAW_ITEM_LINE, TEXTE_PCB, TRACK, LIB_PIN, SCH_FIELD, ZONE_CONTAINER, SCH_BITMAP, MARKER_PCB, PCB_TARGET, WS_DRAW_ITEM_BASE, SCH_BUS_ENTRY_BASE, SCH_PIN, GBR_LAYOUT, LIB_POLYLINE, LIB_ARC, SCH_NO_CONNECT, LIB_TEXT, LIB_BEZIER, SCH_MARKER, LIB_RECTANGLE, SCH_JUNCTION, and LIB_CIRCLE.

Definition at line 95 of file base_struct.cpp.

96 {
97 #if defined(DEBUG)
98  printf( "Missing GetBoundingBox()\n" );
99  Show( 0, std::cout ); // tell me which classes still need GetBoundingBox support
100 #endif
101 
102  // return a zero-sized box per default. derived classes should override
103  // this
104  return EDA_RECT( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
105 }
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44

Referenced by CN_ITEM::BBox(), EE_RTREE::contains(), MODULE::CoverageRatio(), SELECTION::GetBoundingBox(), LIB_ITEM::GetBoundingBox(), GetBoundingBoxes(), GERBVIEW_SELECTION::GetCenter(), getRect(), EE_RTREE::insert(), SCH_EDIT_TOOL::Mirror(), SCH_EAGLE_PLUGIN::moveLabels(), EE_RTREE::remove(), GERBVIEW_SELECTION::ViewBBox(), and EDA_ITEM::ViewBBox().

◆ GetBus()

SCH_LINE* SCH_SCREEN::GetBus ( const wxPoint aPosition,
int  aAccuracy = 0,
SCH_LINE_TEST_T  aSearchType = ENTIRE_LENGTH_T 
)
inline

Definition at line 461 of file sch_screen.h.

463  {
464  return GetLine( aPosition, aAccuracy, LAYER_BUS, aSearchType );
465  }
SCH_LINE * GetLine(const wxPoint &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
Return a line item located at aPosition.

References GetLine(), and LAYER_BUS.

Referenced by IsTerminalPoint(), and CONNECTION_GRAPH::updateItemConnectivity().

◆ GetBusAliases()

std::unordered_set< std::shared_ptr<BUS_ALIAS> > SCH_SCREEN::GetBusAliases ( )
inline

Returns a list of bus aliases defined in this screen.

Definition at line 525 of file sch_screen.h.

526  {
527  return m_aliases;
528  }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:124

References m_aliases.

Referenced by SCH_SEXPR_PLUGIN::Format(), and SCH_LEGACY_PLUGIN::Format().

◆ GetClass()

virtual wxString SCH_SCREEN::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Reimplemented from BASE_SCREEN.

Definition at line 179 of file sch_screen.h.

180  {
181  return wxT( "SCH_SCREEN" );
182  }

◆ GetClientSheetPaths()

std::vector<SCH_SHEET_PATH>& SCH_SCREEN::GetClientSheetPaths ( )
inline
Returns
the sheet paths sharing this screen if 1 this screen is not in a complex hierarchy: the reference field can be used to store the component reference if > 1 this screen is in a complex hierarchy, and components must have a full alternate reference management

Definition at line 209 of file sch_screen.h.

210  {
211  return m_clientSheetPathList;
212  }
std::vector< SCH_SHEET_PATH > m_clientSheetPathList
the list of scheet paths sharing this screen used in some annotation calculations to update alternate...
Definition: sch_screen.h:108

References m_clientSheetPathList.

Referenced by SCH_SCREENS::BuildClientSheetPathList(), and EnsureAlternateReferencesExist().

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 237 of file base_struct.h.

238  {
239  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVED | IS_RESIZED | IS_DRAGGED |
241 
242  return m_Flags & mask;
243  }
#define IS_NEW
New item, just created.
Definition: base_struct.h:117
#define IS_DRAGGED
Item being dragged.
Definition: base_struct.h:119
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:126
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:121
STATUS_FLAGS m_Flags
Definition: base_struct.h:176
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:118
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
Definition: base_struct.h:130
#define IS_MOVED
Item being moved.
Definition: base_struct.h:116

References IS_DRAGGED, IS_MOVED, IS_NEW, IS_PASTED, IS_RESIZED, IS_WIRE_IMAGE, EDA_ITEM::m_Flags, and STRUCT_DELETED.

Referenced by SCH_EDIT_TOOL::ChangeTextType(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditWithLibEdit(), SCH_COMPONENT::GetMsgPanelInfo(), LIB_MOVE_TOOL::Main(), POINT_EDITOR::OnSelectionChange(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), PAD_TOOL::recombinePad(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_EDIT_PIN::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow(), and SCH_EDIT_FRAME::TrimWire().

◆ GetFileName()

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

Function GetFocusPosition similar to GetPosition, but allows items to return their visual center rather than their anchor.

Reimplemented in DRAWSEGMENT, and TRACK.

Definition at line 344 of file base_struct.h.

344 { return GetPosition(); }
virtual const wxPoint GetPosition() const
Definition: base_struct.h:337

References EDA_ITEM::GetPosition().

Referenced by PCB_BASE_FRAME::FocusOnItem(), and SCH_EDIT_FRAME::FocusOnItem().

◆ GetHierarchicalItems()

void SCH_SCREEN::GetHierarchicalItems ( std::vector< SCH_ITEM * > *  aItems)

Add all schematic sheet and component objects in the screen to aItems.

Parameters
aItemsHierarchical item list to fill.

Definition at line 942 of file sch_screen.cpp.

943 {
944  for( SCH_ITEM* item : Items() )
945  {
946  if( ( item->Type() == SCH_SHEET_T ) || ( item->Type() == SCH_COMPONENT_T ) )
947  aItems->push_back( item );
948  }
949 }
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References Items(), SCH_COMPONENT_T, and SCH_SHEET_T.

◆ GetItem()

SCH_ITEM * SCH_SCREEN::GetItem ( const wxPoint aPosition,
int  aAccuracy = 0,
KICAD_T  aType = SCH_LOCATE_ANY_T 
)

Check aPosition within a distance of aAccuracy for items of type aFilter.

Parameters
aPositionPosition in drawing units.
aAccuracyThe maximum distance within Position to check for an item.
aTypeThe type of item to find.
Returns
The item found that meets the search criteria or NULL if none found.

Definition at line 310 of file sch_screen.cpp.

311 {
312  EDA_RECT bbox;
313  bbox.SetOrigin( aPosition );
314  bbox.Inflate( aAccuracy );
315 
316  for( auto item : Items().Overlapping( aType, bbox ) )
317  {
318  if( item->HitTest( aPosition, aAccuracy ) )
319  return item;
320  }
321 
322  return nullptr;
323 }
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
EE_RTREE & Items()
Definition: sch_screen.h:162
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.

References EDA_RECT::Inflate(), Items(), and EDA_RECT::SetOrigin().

Referenced by SCH_EDIT_TOOL::DoDelete(), IsTerminalPoint(), and SCH_DRAWING_TOOLS::SingleClickPlace().

◆ GetLabel()

SCH_TEXT * SCH_SCREEN::GetLabel ( const wxPoint aPosition,
int  aAccuracy = 0 
)

Return a label item located at aPosition.

Parameters
aPositionThe wxPoint to test for label items.
aAccuracyAmount to inflate the item hit test bounding box.
Returns
The SCH_TEXT* of the label item found at aPosition or NULL if item not found.

Definition at line 1049 of file sch_screen.cpp.

1050 {
1051  for( SCH_ITEM* item : Items().Overlapping( aPosition, aAccuracy ) )
1052  {
1053  switch( item->Type() )
1054  {
1055  case SCH_LABEL_T:
1056  case SCH_GLOBAL_LABEL_T:
1057  case SCH_HIER_LABEL_T:
1058  if( item->HitTest( aPosition, aAccuracy ) )
1059  return (SCH_TEXT*) item;
1060 
1061  break;
1062 
1063  default:
1064  ;
1065  }
1066  }
1067 
1068  return NULL;
1069 }
#define NULL
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References Items(), NULL, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, and SCH_LABEL_T.

Referenced by IsTerminalPoint().

◆ GetLibSymbols()

std::map<wxString, LIB_PART*>& SCH_SCREEN::GetLibSymbols ( )
inline

Fetch a list of unique LIB_PART object pointers required to properly render each SCH_COMPONENT in this schematic.

Returns
The list of unique LIB_PART object pointers.

Definition at line 496 of file sch_screen.h.

496 { return m_libSymbols; }
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References m_libSymbols.

Referenced by SCH_SEXPR_PLUGIN::Format(), and SCH_EDITOR_CONTROL::Paste().

◆ GetLine()

SCH_LINE * SCH_SCREEN::GetLine ( const wxPoint aPosition,
int  aAccuracy = 0,
int  aLayer = LAYER_NOTES,
SCH_LINE_TEST_T  aSearchType = ENTIRE_LENGTH_T 
)

Return a line item located at aPosition.

Parameters
aPositionThe wxPoint to test for a line item.
aAccuracyAmount to inflate the item hit test bounding box.
aLayerThe layer the line is drawn upon.
aSearchTypeAdditional line test criteria.
Returns
The SCH_LINE* of the wire item found at aPosition or NULL if item not found.

Definition at line 1012 of file sch_screen.cpp.

1014 {
1015  // an accuracy of 0 had problems with rounding errors; use at least 1
1016  aAccuracy = std::max( aAccuracy, 1 );
1017 
1018  for( SCH_ITEM* item : Items() )
1019  {
1020  if( item->Type() != SCH_LINE_T )
1021  continue;
1022 
1023  if( item->GetLayer() != aLayer )
1024  continue;
1025 
1026  if( !item->HitTest( aPosition, aAccuracy ) )
1027  continue;
1028 
1029  switch( aSearchType )
1030  {
1031  case ENTIRE_LENGTH_T:
1032  return (SCH_LINE*) item;
1033 
1034  case EXCLUDE_END_POINTS_T:
1035  if( !( (SCH_LINE*) item )->IsEndPoint( aPosition ) )
1036  return (SCH_LINE*) item;
1037  break;
1038 
1039  case END_POINTS_ONLY_T:
1040  if( ( (SCH_LINE*) item )->IsEndPoint( aPosition ) )
1041  return (SCH_LINE*) item;
1042  }
1043  }
1044 
1045  return NULL;
1046 }
#define NULL
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References END_POINTS_ONLY_T, ENTIRE_LENGTH_T, EXCLUDE_END_POINTS_T, Items(), NULL, and SCH_LINE_T.

Referenced by GetBus(), GetWire(), and IsTerminalPoint().

◆ GetMaxUndoItems()

int BASE_SCREEN::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 170 of file base_screen.h.

170 { return m_UndoRedoCountMax; }
int m_UndoRedoCountMax
undo/Redo command Max depth
Definition: base_screen.h:49

References BASE_SCREEN::m_UndoRedoCountMax.

Referenced by EDA_DRAW_FRAME::SaveSettings().

◆ GetMenuImage()

BITMAP_DEF EDA_ITEM::GetMenuImage ( ) const
virtualinherited

Function GetMenuImage returns a pointer to an image to be used in menus.

The default version returns the right arrow image. Override this function to provide object specific menu images.

Returns
The menu image associated with the item.

Reimplemented in ZONE_CONTAINER, SCH_COMPONENT, MODULE, SCH_SHEET, D_PAD, SCH_HIERLABEL, LIB_PIN, VIA, SCH_GLOBALLABEL, SCH_LABEL, SCH_TEXT, GERBER_DRAW_ITEM, DRAWSEGMENT, DIMENSION, TEXTE_MODULE, TRACK, SCH_BUS_BUS_ENTRY, SCH_LINE, SCH_SHEET_PIN, LIB_FIELD, SCH_FIELD, SCH_BUS_WIRE_ENTRY, EDGE_MODULE, SCH_BITMAP, LIB_ARC, TEXTE_PCB, LIB_POLYLINE, SCH_NO_CONNECT, LIB_TEXT, SCH_MARKER, PCB_TARGET, SCH_JUNCTION, MARKER_PCB, LIB_CIRCLE, and LIB_RECTANGLE.

Definition at line 233 of file base_struct.cpp.

234 {
235  return dummy_xpm;
236 }
static const BITMAP_OPAQUE dummy_xpm[1]
Definition: base_struct.cpp:54

References dummy_xpm.

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), and SELECTION_TOOL::doSelectionMenu().

◆ GetMsgPanelInfo()

virtual void EDA_ITEM::GetMsgPanelInfo ( EDA_DRAW_FRAME aFrame,
std::vector< MSG_PANEL_ITEM > &  aList 
)
inlinevirtualinherited

◆ GetPageSettings()

◆ GetParent()

◆ GetPin()

LIB_PIN * SCH_SCREEN::GetPin ( const wxPoint aPosition,
SCH_COMPONENT **  aComponent = NULL,
bool  aEndPointOnly = false 
)

Test the screen for a component pin item at aPosition.

Parameters
aPositionPosition to test.
aComponentThe component if a pin was found, otherwise NULL.
aEndPointOnlySet to true to test if aPosition is the connection point of the pin.
Returns
The pin item if found, otherwise NULL.

Definition at line 826 of file sch_screen.cpp.

828 {
829  SCH_COMPONENT* component = NULL;
830  LIB_PIN* pin = NULL;
831 
832  for( SCH_ITEM* item : Items().Overlapping( SCH_COMPONENT_T, aPosition ) )
833  {
834  component = static_cast<SCH_COMPONENT*>( item );
835 
836  if( aEndPointOnly )
837  {
838  pin = NULL;
839 
840  if( !component->GetPartRef() )
841  continue;
842 
843  for( pin = component->GetPartRef()->GetNextPin(); pin;
844  pin = component->GetPartRef()->GetNextPin( pin ) )
845  {
846  // Skip items not used for this part.
847  if( component->GetUnit() && pin->GetUnit() &&
848  ( pin->GetUnit() != component->GetUnit() ) )
849  continue;
850 
851  if( component->GetConvert() && pin->GetConvert() &&
852  ( pin->GetConvert() != component->GetConvert() ) )
853  continue;
854 
855  if(component->GetPinPhysicalPosition( pin ) == aPosition )
856  break;
857  }
858  if( pin )
859  break;
860  }
861  else
862  {
863  pin = (LIB_PIN*) component->GetDrawItem( aPosition, LIB_PIN_T );
864 
865  if( pin )
866  break;
867  }
868  }
869 
870  if( pin && aComponent )
871  *aComponent = component;
872 
873  return pin;
874 }
LIB_ITEM * GetDrawItem(const wxPoint &aPosition, KICAD_T aType=TYPE_NOT_INIT)
Return the component library item at aPosition that is part of this component.
int GetUnit() const
Definition: lib_item.h:295
int GetUnit() const
#define NULL
std::unique_ptr< LIB_PART > & GetPartRef()
int GetConvert() const
Definition: lib_item.h:298
EE_RTREE & Items()
Definition: sch_screen.h:162
Schematic symbol object.
Definition: sch_component.h:88
int GetConvert() const
wxPoint GetPinPhysicalPosition(const LIB_PIN *Pin) const
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References SCH_COMPONENT::GetConvert(), LIB_ITEM::GetConvert(), SCH_COMPONENT::GetDrawItem(), SCH_COMPONENT::GetPartRef(), SCH_COMPONENT::GetPinPhysicalPosition(), SCH_COMPONENT::GetUnit(), LIB_ITEM::GetUnit(), Items(), LIB_PIN_T, NULL, and SCH_COMPONENT_T.

Referenced by IsTerminalPoint(), and MarkConnections().

◆ GetPosition()

virtual const wxPoint EDA_ITEM::GetPosition ( ) const
inlinevirtualinherited

Reimplemented in SCH_COMPONENT, SCH_SHEET, LIB_PIN, VIA, WS_DRAW_ITEM_BITMAP, SCH_TEXT, BOARD, WS_DRAW_ITEM_TEXT, ARC, WS_DRAW_ITEM_PAGE, WS_DRAW_ITEM_RECT, SCH_LINE, MODULE, GERBER_DRAW_ITEM, SCH_FIELD, LIB_FIELD, WS_DRAW_ITEM_POLYPOLYGONS, D_PAD, SCH_BITMAP, WS_DRAW_ITEM_LINE, DRAWSEGMENT, SCH_BUS_ENTRY_BASE, DIMENSION, SCH_NO_CONNECT, TRACK, KIGFX::ORIGIN_VIEWITEM, NETINFO_ITEM, SCH_MARKER, SCH_JUNCTION, TEXTE_MODULE, LIB_POLYLINE, LIB_ARC, ZONE_CONTAINER, LIB_TEXT, SCH_PIN, LIB_BEZIER, TEXTE_PCB, LIB_RECTANGLE, LIB_CIRCLE, MARKER_PCB, and PCB_TARGET.

Definition at line 337 of file base_struct.h.

337 { return wxPoint(); }

Referenced by GRID_HELPER::computeAnchors(), SCH_EDIT_FRAME::DeleteJunction(), KIGFX::PCB_PAINTER::draw(), CONNECTION_GRAPH::ercCheckBusToBusConflicts(), CONNECTION_GRAPH::ercCheckBusToNetConflicts(), CONNECTION_GRAPH::ercCheckNoConnects(), SELECTION_TOOL::findCallback(), GERBVIEW_SELECTION::GetCenter(), BOARD_ITEM::GetCenter(), EDA_ITEM::GetFocusPosition(), SCH_FIELD::GetParentPosition(), POSITION_RELATIVE_TOOL::GetSelectionAnchorPosition(), GetSheets(), PCBNEW_SELECTION::GetTopLeftItem(), LIB_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), LIB_EDIT_TOOL::Mirror(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_ITEM::operator<(), PL_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), PCBNEW_CONTROL::placeBoardItems(), DRAWING_TOOL::PlaceImportedGraphics(), DRAWING_TOOL::PlaceText(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_EDIT_TOOL::Rotate(), SCH_EDIT_TOOL::Rotate(), SELECTION_TOOL::selectConnectedTracks(), RC_ITEM::ShowReport(), DRC::testDisabledLayers(), TransformItem(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), LIB_MOVE_TOOL::updateModificationPoint(), PL_EDIT_TOOL::updateModificationPoint(), and EE_POINT_EDITOR::updatePoints().

◆ GetRedoCommandCount()

int BASE_SCREEN::GetRedoCommandCount ( ) const
inlineinherited

◆ GetRefCount()

int SCH_SCREEN::GetRefCount ( ) const
inline

Definition at line 200 of file sch_screen.h.

200 { return m_refCount; }
int m_refCount
Number of sheets referencing this screen.
Definition: sch_screen.h:99

References m_refCount.

Referenced by SCH_SHEET::GetScreenCount(), SCH_SHEET::SetScreen(), and SCH_SHEET::~SCH_SHEET().

◆ GetSelectMenuText()

wxString EDA_ITEM::GetSelectMenuText ( EDA_UNITS  aUnits) const
virtualinherited

Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position.

The default version of this function raises an assertion in the debug mode and returns a string to indicate that it was not overridden to provide the object specific text.

Returns
The menu text string.

Reimplemented in ZONE_CONTAINER, SCH_COMPONENT, BOARD, MODULE, SCH_SHEET, D_PAD, SCH_HIERLABEL, LIB_PIN, VIA, SCH_GLOBALLABEL, SCH_LABEL, WS_DRAW_ITEM_BITMAP, SCH_TEXT, WS_DRAW_ITEM_TEXT, GERBER_DRAW_ITEM, DRAWSEGMENT, WS_DRAW_ITEM_PAGE, DIMENSION, WS_DRAW_ITEM_RECT, TEXTE_MODULE, TRACK, SCH_BUS_BUS_ENTRY, SCH_LINE, SCH_SHEET_PIN, LIB_FIELD, SCH_FIELD, WS_DRAW_ITEM_POLYPOLYGONS, SCH_BUS_WIRE_ENTRY, WS_DRAW_ITEM_LINE, EDGE_MODULE, LIB_ARC, SCH_BITMAP, TEXTE_PCB, LIB_POLYLINE, SCH_NO_CONNECT, LIB_TEXT, PCB_TARGET, SCH_MARKER, MARKER_PCB, LIB_CIRCLE, LIB_RECTANGLE, SCH_JUNCTION, SCH_PIN, DELETED_BOARD_ITEM, and DELETED_SHEET_ITEM.

Definition at line 134 of file base_struct.cpp.

135 {
136  wxFAIL_MSG( wxT( "GetSelectMenuText() was not overridden for schematic item type " ) +
137  GetClass() );
138 
139  return wxString( wxT( "Undefined menu text for " ) + GetClass() );
140 }
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References EDA_ITEM::GetClass().

Referenced by CONNECTION_GRAPH::buildConnectionGraph(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), MARKER_PCB::GetMsgPanelInfo(), RC_TREE_MODEL::GetValue(), DRC_ITEM::ShowHtml(), RC_ITEM::ShowReport(), and DIALOG_POSITION_RELATIVE::UpdateAnchor().

◆ GetSheetLabel()

SCH_SHEET_PIN * SCH_SCREEN::GetSheetLabel ( const wxPoint aPosition)

Test the screen if aPosition is a sheet label object.

Parameters
aPositionThe position to test.
Returns
The sheet label object if found otherwise NULL.

Definition at line 877 of file sch_screen.cpp.

878 {
879  SCH_SHEET_PIN* sheetPin = nullptr;
880 
881  for( SCH_ITEM* item : Items().OfType( SCH_SHEET_T ) )
882  {
883  auto sheet = static_cast<SCH_SHEET*>( item );
884 
885  sheetPin = sheet->GetPin( aPosition );
886 
887  if( sheetPin )
888  break;
889  }
890 
891  return sheetPin;
892 }
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:84
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References Items(), and SCH_SHEET_T.

Referenced by IsTerminalPoint().

◆ GetSheets()

void SCH_SCREEN::GetSheets ( std::vector< SCH_ITEM * > *  aItems)

Similar to GetItems().OfType( SCH_SHEET_T ), but return the sheets in a deterministic order (L-R, T-B) for sheet numbering.

Parameters
aItems

Definition at line 952 of file sch_screen.cpp.

953 {
954  for( SCH_ITEM* item : Items().OfType( SCH_SHEET_T ) )
955  aItems->push_back( item );
956 
957  std::sort( aItems->begin(), aItems->end(),
958  []( EDA_ITEM* a, EDA_ITEM* b ) -> bool
959  {
960  long a_order = 0;
961  long b_order = 0;
962 
963  for( const SCH_FIELD& field : static_cast<SCH_SHEET*>( a )->GetFields() )
964  {
965  if( field.GetName().CmpNoCase( wxT( "Order" ) ) == 0 )
966  {
967  field.GetText().ToLong( &a_order );
968  break;
969  }
970  }
971 
972  for( const SCH_FIELD& field : static_cast<SCH_SHEET*>( b )->GetFields() )
973  {
974  if( field.GetName().CmpNoCase( wxT( "Order" ) ) == 0 )
975  {
976  field.GetText().ToLong( &b_order );
977  break;
978  }
979  }
980 
981  if( a_order == b_order )
982  {
983  if( a->GetPosition().x == b->GetPosition().x )
984  return a->GetPosition().y < b->GetPosition().y;
985 
986  return a->GetPosition().x < b->GetPosition().x;
987  }
988 
989  return a_order < b_order;
990  } );
991 }
SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
virtual const wxPoint GetPosition() const
Definition: base_struct.h:337
EE_RTREE & Items()
Definition: sch_screen.h:162
EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boards.
Definition: base_struct.h:159
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References EDA_ITEM::GetPosition(), Items(), SCH_SHEET_T, wxPoint::x, and wxPoint::y.

Referenced by HIERARCHY_NAVIG_DLG::buildHierarchyTree(), and SCH_SHEET_LIST::BuildSheetList().

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 216 of file base_struct.h.

217  {
218  return m_Status & type;
219  }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by TRACK::GetMsgPanelInfoBase_Common(), and TRACK::IsLocked().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 229 of file base_struct.h.

229 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by PCB_IO::format().

◆ GetSymbolInstances()

const std::vector<COMPONENT_INSTANCE_REFERENCE>& SCH_SCREEN::GetSymbolInstances ( ) const
inline

Definition at line 530 of file sch_screen.h.

531  {
532  return m_symbolInstances;
533  }
std::vector< COMPONENT_INSTANCE_REFERENCE > m_symbolInstances
The list of symbol instances loaded from the schematic file.
Definition: sch_screen.h:143

References m_symbolInstances.

Referenced by TEST_NETLISTS_FIXTURE::loadSchematic().

◆ GetTitleBlock()

const TITLE_BLOCK& SCH_SCREEN::GetTitleBlock ( ) const
inline

◆ GetUndoCommandCount()

◆ GetWire()

SCH_LINE* SCH_SCREEN::GetWire ( const wxPoint aPosition,
int  aAccuracy = 0,
SCH_LINE_TEST_T  aSearchType = ENTIRE_LENGTH_T 
)
inline

Definition at line 455 of file sch_screen.h.

457  {
458  return GetLine( aPosition, aAccuracy, LAYER_WIRE, aSearchType );
459  }
SCH_LINE * GetLine(const wxPoint &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
Return a line item located at aPosition.

References GetLine(), and LAYER_WIRE.

Referenced by IsTerminalPoint().

◆ HasFlag()

◆ HasItems()

bool SCH_SCREEN::HasItems ( KICAD_T  aItemType) const

Definition at line 125 of file sch_screen.cpp.

126 {
127  EE_RTREE::EE_TYPE sheets = const_cast<EE_RTREE&>( m_rtree ).OfType( aItemType );
128 
129  return sheets.begin() != sheets.end();
130 }
EE_RTREE m_rtree
Definition: sch_screen.h:118
iterator end()
Definition: sch_rtree.h:213
iterator begin()
Definition: sch_rtree.h:208
The EE_TYPE struct provides a type-specific auto-range iterator to the RTree.
Definition: sch_rtree.h:181

References EE_RTREE::EE_TYPE::begin(), EE_RTREE::EE_TYPE::end(), and m_rtree.

Referenced by HasSheets().

◆ HasSheets()

bool SCH_SCREEN::HasSheets ( ) const
inline

Definition at line 172 of file sch_screen.h.

172 { return HasItems( SCH_SHEET_T ); }
bool HasItems(KICAD_T aItemType) const
Definition: sch_screen.cpp:125

References HasItems(), and SCH_SHEET_T.

◆ HitTest() [1/2]

virtual bool EDA_ITEM::HitTest ( const wxPoint aPosition,
int  aAccuracy = 0 
) const
inlinevirtualinherited

◆ HitTest() [2/2]

virtual bool EDA_ITEM::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
inlinevirtualinherited

Function HitTest tests if aRect intersects or is contained within the bounding box of an item.

Parameters
aRectA reference to a EDA_RECT object containing the rectangle to test.
aContainedSet to true to test for containment instead of an intersection.
aAccuracyIncrease aRect by this amount.
Returns
True if aRect contains or intersects the item bounding box.

Reimplemented in SCH_COMPONENT, SCH_SHEET, D_PAD, MODULE, VIA, ZONE_CONTAINER, WS_DRAW_ITEM_BITMAP, SCH_TEXT, ARC, WS_DRAW_ITEM_TEXT, GERBER_DRAW_ITEM, DRAWSEGMENT, DIMENSION, SCH_LINE, TEXTE_MODULE, LIB_ITEM, SCH_FIELD, TRACK, WS_DRAW_ITEM_POLYPOLYGONS, SCH_BITMAP, SCH_BUS_ENTRY_BASE, SCH_NO_CONNECT, TEXTE_PCB, SCH_JUNCTION, WS_DRAW_ITEM_BASE, PCB_TARGET, LIB_POLYLINE, LIB_ARC, LIB_BEZIER, LIB_TEXT, and LIB_CIRCLE.

Definition at line 321 of file base_struct.h.

322  {
323  return false; // derived classes should override this function
324  }

◆ IncRefCount()

void SCH_SCREEN::IncRefCount ( )

Definition at line 111 of file sch_screen.cpp.

112 {
113  m_refCount++;
114 }
int m_refCount
Number of sheets referencing this screen.
Definition: sch_screen.h:99

References m_refCount.

Referenced by SCH_SHEET::SCH_SHEET(), and SCH_SHEET::SetScreen().

◆ InitDataPoints()

void BASE_SCREEN::InitDataPoints ( const wxSize &  aPageSizeInternalUnits)
inherited

Definition at line 50 of file base_screen.cpp.

51 {
52  if( m_Center )
53  {
56 
57  m_DrawOrg.x = -aPageSizeIU.x / 2;
58  m_DrawOrg.y = -aPageSizeIU.y / 2;
59  }
60  else
61  {
62  m_crossHairPosition.x = aPageSizeIU.x / 2;
63  m_crossHairPosition.y = aPageSizeIU.y / 2;
64 
65  m_DrawOrg.x = 0;
66  m_DrawOrg.y = 0;
67  }
68 
69  m_LocalOrigin = { 0, 0 };
70 }
wxPoint m_crossHairPosition
The cross hair position in logical (drawing) units.
Definition: base_screen.h:56
bool m_Center
Center on screen.
Definition: base_screen.h:71
wxPoint m_DrawOrg
offsets for drawing the circuit on the screen
Definition: base_screen.h:62
VECTOR2D m_LocalOrigin
Relative Screen cursor coordinate (on grid) in user units.
Definition: base_screen.h:64

References BASE_SCREEN::m_Center, BASE_SCREEN::m_crossHairPosition, BASE_SCREEN::m_DrawOrg, BASE_SCREEN::m_LocalOrigin, wxPoint::x, and wxPoint::y.

Referenced by BASE_SCREEN::BASE_SCREEN(), FOOTPRINT_EDIT_FRAME::Clear_Pcb(), PCB_EDIT_FRAME::Clear_Pcb(), SCH_SCREEN(), GERBVIEW_FRAME::SetPageSettings(), PL_EDITOR_FRAME::SetPageSettings(), and PCB_BASE_FRAME::SetPageSettings().

◆ IsBrightened()

bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 201 of file base_struct.h.

201 { return m_Flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: base_struct.h:119
STATUS_FLAGS m_Flags
Definition: base_struct.h:176

References IS_DRAGGED, and EDA_ITEM::m_Flags.

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), and KIGFX::SCH_PAINTER::setDeviceColors().

◆ IsEmpty()

bool SCH_SCREEN::IsEmpty ( )
inline

Definition at line 165 of file sch_screen.h.

166  {
167  return m_rtree.empty();
168  }
bool empty()
Definition: sch_rtree.h:166
EE_RTREE m_rtree
Definition: sch_screen.h:118

References EE_RTREE::empty(), and m_rtree.

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 286 of file base_struct.h.

286 { return m_forceVisible; }
bool m_forceVisible
Definition: base_struct.h:175

References EDA_ITEM::m_forceVisible.

Referenced by KIGFX::SCH_PAINTER::draw(), and SCH_FIELD::Print().

◆ IsJunctionNeeded()

bool SCH_SCREEN::IsJunctionNeeded ( const wxPoint aPosition,
bool  aNew = false 
)

Test if a junction is required for the items at aPosition on the screen.

A junction is required at aPosition if one of the following criteria is satisfied:

  • one wire midpoint and one or more wire endpoints;
  • three or more wire endpoints;
  • one wire midpoint and a component pin;
  • two or more wire endpoints and a component pin.
Parameters
aPositionThe position to test.
aNewChecks if a new junction is needed, i.e. there isn't one already
Returns
True if a junction is required at aPosition.

A line with a midpoint should be counted as two endpoints for this calculation because the junction will split the line into two if there is another item present at the point.

Overlapping lines that point in the same direction should not be counted as extra end_points.

Definition at line 372 of file sch_screen.cpp.

373 {
374  enum { WIRES, BUSES } layers;
375 
376  bool has_nonparallel[ sizeof( layers ) ] = { false };
377  int end_count[ sizeof( layers ) ] = { 0 };
378  int pin_count = 0;
379 
380  std::vector<SCH_LINE*> lines[ sizeof( layers ) ];
381 
382  for( auto item : Items().Overlapping( aPosition ) )
383  {
384  if( item->GetEditFlags() & STRUCT_DELETED )
385  continue;
386 
387  if( aNew && ( item->Type() == SCH_JUNCTION_T ) && ( item->HitTest( aPosition ) ) )
388  return false;
389 
390  if( ( item->Type() == SCH_LINE_T ) && ( item->HitTest( aPosition, 0 ) ) )
391  {
392  if( item->GetLayer() == LAYER_WIRE )
393  lines[WIRES].push_back( (SCH_LINE*) item );
394  else if( item->GetLayer() == LAYER_BUS )
395  lines[BUSES].push_back( (SCH_LINE*) item );
396  }
397 
398  if( ( ( item->Type() == SCH_COMPONENT_T ) || ( item->Type() == SCH_SHEET_T ) )
399  && ( item->IsConnected( aPosition ) ) )
400  pin_count++;
401  }
402 
403  for( int i : { WIRES, BUSES } )
404  {
405  bool removed_overlapping = false;
406  bool mid_point = false;
407 
408  for( auto line = lines[i].begin(); line < lines[i].end(); line++ )
409  {
410  if( !(*line)->IsEndPoint( aPosition ) )
411  mid_point = true;
412  else
413  end_count[i]++;
414 
415  for( auto second_line = lines[i].end() - 1; second_line > line; second_line-- )
416  {
417  if( !(*line)->IsParallel( *second_line ) )
418  has_nonparallel[i] = true;
419  else if( !removed_overlapping
420  && (*line)->IsSameQuadrant( *second_line, aPosition ) )
421  {
422  removed_overlapping = true;
423  }
424  }
425  }
426 
430  if( mid_point )
431  end_count[i] += 2;
432 
435  if( removed_overlapping )
436  end_count[i]--;
437  }
438 
439  // If there are three or more endpoints
440  if( pin_count && pin_count + end_count[WIRES] > 2 )
441  return true;
442 
443  // If there is at least one segment that ends on a non-parallel line or
444  // junction of two other lines
445  if( has_nonparallel[WIRES] && end_count[WIRES] > 2 )
446  return true;
447 
448  // Check for bus - bus junction requirements
449  if( has_nonparallel[BUSES] && end_count[BUSES] > 2 )
450  return true;
451 
452  return false;
453 }
EE_TYPE Overlapping(const EDA_RECT &aRect)
Definition: sch_rtree.h:224
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:126
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
EE_RTREE & Items()
Definition: sch_screen.h:162
boost::ptr_vector< WIRE > WIRES
Definition: specctra.h:2950

References Items(), LAYER_BUS, LAYER_WIRE, EE_RTREE::Overlapping(), SCH_COMPONENT_T, SCH_JUNCTION_T, SCH_LINE_T, SCH_SHEET_T, and STRUCT_DELETED.

Referenced by SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded(), SCH_EDIT_TOOL::BreakWire(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), SCH_MOVE_TOOL::Main(), and SCH_EDIT_FRAME::SchematicCleanUp().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 198 of file base_struct.h.

198 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:113
STATUS_FLAGS m_Flags
Definition: base_struct.h:176

References IS_CHANGED, and EDA_ITEM::m_Flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsModify()

bool BASE_SCREEN::IsModify ( ) const
inlineinherited

◆ IsMoving()

◆ IsNew()

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Function IsReplaceable.

Override this method in any derived object that supports test find and replace.

Returns
True if the item has replaceable text that can be modified using the find and replace dialog.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_LABEL, SCH_TEXT, SCH_SHEET_PIN, and SCH_FIELD.

Definition at line 501 of file base_struct.h.

501 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 204 of file base_struct.h.

204 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Definition: base_struct.h:176
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:118

References IS_RESIZED, and EDA_ITEM::m_Flags.

Referenced by KIGFX::SCH_PAINTER::setDeviceColors().

◆ IsSave()

bool BASE_SCREEN::IsSave ( ) const
inlineinherited

Definition at line 188 of file base_screen.h.

188 { return m_FlagSave; }
bool m_FlagSave
Indicates automatic file save.
Definition: base_screen.h:48

References BASE_SCREEN::m_FlagSave.

Referenced by SCH_EDIT_FRAME::doAutoSave().

◆ IsSelected()

◆ IsTerminalPoint()

bool SCH_SCREEN::IsTerminalPoint ( const wxPoint aPosition,
int  aLayer 
)

Test if aPosition is a connection point on aLayer.

Parameters
aPositionPosition to test.
aLayerThe layer type to test against. Valid layer types are LAYER_NOTES, LAYER_BUS, and LAYER_WIRE.
Returns
True if Position is a connection point on aLayer.

Definition at line 456 of file sch_screen.cpp.

457 {
458  wxCHECK_MSG( aLayer == LAYER_NOTES || aLayer == LAYER_BUS || aLayer == LAYER_WIRE, false,
459  wxT( "Invalid layer type passed to SCH_SCREEN::IsTerminalPoint()." ) );
460 
461  SCH_SHEET_PIN* label;
462  SCH_TEXT* text;
463  SCH_CONNECTION conn;
464 
465  switch( aLayer )
466  {
467  case LAYER_BUS:
468 
469  if( GetBus( aPosition ) )
470  return true;
471 
472  label = GetSheetLabel( aPosition );
473 
474  if( label && conn.MightBeBusLabel( label->GetText() ) && label->IsConnected( aPosition ) )
475  return true;
476 
477  text = GetLabel( aPosition );
478 
479  if( text && conn.MightBeBusLabel( text->GetText() ) && text->IsConnected( aPosition )
480  && (text->Type() != SCH_LABEL_T) )
481  return true;
482 
483  break;
484 
485  case LAYER_NOTES:
486 
487  if( GetLine( aPosition ) )
488  return true;
489 
490  break;
491 
492  case LAYER_WIRE:
493  if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_WIRE_ENTRY_T) )
494  return true;
495 
496  if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_BUS_ENTRY_T) )
497  return true;
498 
499  if( GetItem( aPosition, Schematic()->Settings().m_JunctionSize, SCH_JUNCTION_T ) )
500  return true;
501 
502  if( GetPin( aPosition, NULL, true ) )
503  return true;
504 
505  if( GetWire( aPosition ) )
506  return true;
507 
508  text = GetLabel( aPosition );
509 
510  if( text && text->IsConnected( aPosition ) && !conn.MightBeBusLabel( text->GetText() ) )
511  return true;
512 
513  label = GetSheetLabel( aPosition );
514 
515  if( label && label->IsConnected( aPosition ) && !conn.MightBeBusLabel( label->GetText() ) )
516  return true;
517 
518  break;
519 
520  default:
521  break;
522  }
523 
524  return false;
525 }
LIB_PIN * GetPin(const wxPoint &aPosition, SCH_COMPONENT **aComponent=NULL, bool aEndPointOnly=false)
Test the screen for a component pin item at aPosition.
Definition: sch_screen.cpp:826
static bool MightBeBusLabel(const wxString &aLabel)
Test if aLabel looks like a bus notation.
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:134
SCH_LINE * GetLine(const wxPoint &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
Return a line item located at aPosition.
#define NULL
SCH_SHEET_PIN * GetSheetLabel(const wxPoint &aPosition)
Test the screen if aPosition is a sheet label object.
Definition: sch_screen.cpp:877
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:84
SCH_LINE * GetWire(const wxPoint &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
Definition: sch_screen.h:455
SCH_TEXT * GetLabel(const wxPoint &aPosition, int aAccuracy=0)
Return a label item located at aPosition.
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
SCHEMATIC * Schematic() const
Definition: sch_screen.cpp:93
SCH_ITEM * GetItem(const wxPoint &aPosition, int aAccuracy=0, KICAD_T aType=SCH_LOCATE_ANY_T)
Check aPosition within a distance of aAccuracy for items of type aFilter.
Definition: sch_screen.cpp:310
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:126
bool IsConnected(const wxPoint &aPoint) const
Test the item to see if it is connected to aPoint.
Definition: sch_item.cpp:138
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
SCH_LINE * GetBus(const wxPoint &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T)
Definition: sch_screen.h:461

References GetBus(), GetItem(), GetLabel(), GetLine(), GetPin(), GetSheetLabel(), EDA_TEXT::GetText(), GetWire(), SCH_ITEM::IsConnected(), LAYER_BUS, LAYER_NOTES, LAYER_WIRE, SCHEMATIC_SETTINGS::m_JunctionSize, SCH_CONNECTION::MightBeBusLabel(), NULL, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_JUNCTION_T, SCH_LABEL_T, Schematic(), SCHEMATIC::Settings(), and EDA_ITEM::Type().

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments().

◆ IsType()

virtual bool EDA_ITEM::IsType ( const KICAD_T  aScanTypes[]) const
inlinevirtualinherited

Function IsType Checks whether the item is one of the listed types.

Parameters
aScanTypesList of item types
Returns
true if the item type is contained in the list aScanTypes

Reimplemented in SCH_LABEL, VIA, DIMENSION, D_PAD, DRAWSEGMENT, TEXTE_MODULE, SCH_FIELD, SCH_LINE, EDGE_MODULE, and TEXTE_PCB.

Definition at line 262 of file base_struct.h.

263  {
264  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
265  return true;
266 
267  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
268  {
269  if( m_StructType == *p )
270  return true;
271  }
272 
273  return false;
274  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:170
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78

References EOT, EDA_ITEM::m_StructType, and SCH_LOCATE_ANY_T.

Referenced by GetRule(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingBus(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLine(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingWire(), TEXTE_PCB::IsType(), EDGE_MODULE::IsType(), SCH_LINE::IsType(), SCH_FIELD::IsType(), TEXTE_MODULE::IsType(), DRAWSEGMENT::IsType(), D_PAD::IsType(), DIMENSION::IsType(), VIA::IsType(), SCH_LABEL::IsType(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EDA_ITEM::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 202 of file base_struct.h.

202 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:121
STATUS_FLAGS m_Flags
Definition: base_struct.h:176

References IS_WIRE_IMAGE, and EDA_ITEM::m_Flags.

◆ Items() [1/2]

EE_RTREE& SCH_SCREEN::Items ( )
inline

Definition at line 162 of file sch_screen.h.

162 { return m_rtree; }
EE_RTREE m_rtree
Definition: sch_screen.h:118

References m_rtree.

Referenced by SCH_SHEET_LIST::AnnotatePowerSymbols(), SCH_EDIT_FRAME::BreakSegments(), SCH_EDIT_FRAME::BreakSegmentsOnJunctions(), NETLIST_OBJECT_LIST::BuildNetListInfo(), SCH_SCREENS::buildScreenList(), SCH_SCREENS::ChangeSymbolLibNickname(), SCH_SHEET::CleanupSheet(), ClearAnnotation(), ClearDrawingState(), EE_COLLECTOR::Collect(), SCH_SHEET::ComponentCount(), CountConnectedItems(), SCH_SHEET::CountSheets(), SCH_EDIT_FRAME::DeleteJunction(), KIGFX::SCH_VIEW::DisplaySheet(), EnsureAlternateReferencesExist(), SCH_SHEET_LIST::FillItemMap(), SCH_EDITOR_CONTROL::FindComponentAndItem(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), AUTOPLACER::get_possible_colliders(), SCH_MOVE_TOOL::getConnectedDragItems(), GetHierarchicalItems(), GetItem(), SCH_SHEET_LIST::GetItem(), GetLabel(), GetLine(), GetPin(), getSheetBbox(), GetSheetLabel(), SCH_LINE_WIRE_BUS_TOOL::getSheetPin(), GetSheets(), SCH_SCREENS::HasNoFullyDefinedLibIds(), SCH_SHEET::HasUndefinedPins(), SCH_EDIT_FRAME::ImportHierLabel(), IsJunctionNeeded(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), SCH_EDIT_FRAME::LoadSheetFromFile(), SCH_SHEET::LocatePathOfScreen(), SCH_MOVE_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), MarkConnections(), SCH_EDITOR_CONTROL::nextMatch(), DIALOG_EDIT_SHEET_PIN::onComboBox(), SCH_EDITOR_CONTROL::Paste(), Plot(), Print(), NETLIST_EXPORTER_PSPICE::ProcessNetlist(), EE_SELECTION_TOOL::RebuildSelection(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), Remove(), SCH_SHEET_LIST::ReplaceLegacySheetPaths(), SCH_EDIT_FRAME::SaveProject(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SHEET::SearchHierarchy(), SetComponentFootprint(), TestDanglingEnds(), ERC_TESTER::TestDuplicateSheetNames(), DIALOG_ERC::TestErc(), DIALOG_SCH_SHEET_PROPS::TransferDataFromWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataFromWindow(), DIALOG_EDIT_SHEET_PIN::TransferDataToWindow(), SCH_EDIT_TOOL::UpdateFields(), SCH_EDITOR_CONTROL::UpdateFind(), UpdateLocalLibSymbolLinks(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), UpdateSymbolLinks(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ Items() [2/2]

const EE_RTREE& SCH_SCREEN::Items ( ) const
inline

Definition at line 163 of file sch_screen.h.

163 { return m_rtree; }
EE_RTREE m_rtree
Definition: sch_screen.h:118

References m_rtree.

◆ IterateForward() [1/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::deque< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

This changes first parameter to avoid the DList and use the main queue instead

Definition at line 383 of file base_struct.h.

387  {
388  for( auto it : aList )
389  {
390  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
392  return SEARCH_RESULT::QUIT;
393  }
394 
396  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...

References CONTINUE, QUIT, and EDA_ITEM::Visit().

Referenced by GERBER_FILE_IMAGE::Visit(), and BOARD::Visit().

◆ IterateForward() [2/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::vector< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

This changes first parameter to avoid the DList and use std::vector instead

Definition at line 404 of file base_struct.h.

406  {
407  for( auto it : aList )
408  {
409  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
411  return SEARCH_RESULT::QUIT;
412  }
413 
415  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...

References CONTINUE, QUIT, and EDA_ITEM::Visit().

◆ MarkConnections()

std::set< SCH_ITEM * > SCH_SCREEN::MarkConnections ( SCH_LINE aSegment)

Return all wires and junctions connected to aSegment which are not connected any component pin.

Parameters
aSegmentThe segment to test for connections.

Definition at line 326 of file sch_screen.cpp.

327 {
328  std::set<SCH_ITEM*> retval;
329  std::stack<SCH_LINE*> to_search;
330 
331  wxCHECK_MSG( ( aSegment ) && ( aSegment->Type() == SCH_LINE_T ), retval,
332  wxT( "Invalid object pointer." ) );
333 
334  to_search.push( aSegment );
335 
336  while( !to_search.empty() )
337  {
338  auto test_item = to_search.top();
339  to_search.pop();
340 
341  for( auto item : Items().Overlapping( SCH_JUNCTION_T, test_item->GetBoundingBox() ) )
342  {
343  if( test_item->IsEndPoint( item->GetPosition() ) )
344  retval.insert( item );
345  }
346 
347  for( auto item : Items().Overlapping( SCH_LINE_T, test_item->GetBoundingBox() ) )
348  {
349  // Skip connecting lines on different layers (e.g. buses)
350  if( test_item->GetLayer() != item->GetLayer() )
351  continue;
352 
353  auto line = static_cast<SCH_LINE*>( item );
354 
355  if( ( test_item->IsEndPoint( line->GetStartPoint() )
356  && !GetPin( line->GetStartPoint(), NULL, true ) )
357  || ( test_item->IsEndPoint( line->GetEndPoint() )
358  && !GetPin( line->GetEndPoint(), nullptr, true ) ) )
359  {
360  auto result = retval.insert( line );
361 
362  if( result.second )
363  to_search.push( line );
364  }
365  }
366  }
367 
368  return retval;
369 }
LIB_PIN * GetPin(const wxPoint &aPosition, SCH_COMPONENT **aComponent=NULL, bool aEndPointOnly=false)
Test the screen for a component pin item at aPosition.
Definition: sch_screen.cpp:826
#define NULL
EE_RTREE & Items()
Definition: sch_screen.h:162
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193

References GetPin(), Items(), NULL, SCH_JUNCTION_T, SCH_LINE_T, and EDA_ITEM::Type().

Referenced by EE_SELECTION_TOOL::SelectConnection().

◆ Matches() [1/2]

virtual bool EDA_ITEM::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData 
)
inlinevirtualinherited

Function Matches compares the item against the search criteria in aSearchData.

The base class returns false since many of the objects derived from EDA_ITEM do not have any text to search.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_TEXT, SCH_SHEET_PIN, SCH_FIELD, LIB_PIN, SCH_PIN, TEXTE_MODULE, SCH_MARKER, MARKER_PCB, and TEXTE_PCB.

Definition at line 457 of file base_struct.h.

458  {
459  return false;
460  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), TEXTE_PCB::Matches(), MARKER_PCB::Matches(), SCH_MARKER::Matches(), TEXTE_MODULE::Matches(), LIB_PIN::Matches(), SCH_FIELD::Matches(), SCH_SHEET_PIN::Matches(), SCH_TEXT::Matches(), and SCH_EDITOR_CONTROL::ReplaceAndFindNext().

◆ Matches() [2/2]

bool EDA_ITEM::Matches ( const wxString &  aText,
wxFindReplaceData &  aSearchData 
)
protectedinherited

Function Matches compares aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

Parameters
aTextA reference to a wxString object containing the string to test.
aSearchDataThe criteria to search against.
Returns
True if aText matches the search criteria in aSearchData.

Definition at line 143 of file base_struct.cpp.

144 {
145  wxString text = aText;
146  wxString searchText = aSearchData.GetFindString();
147 
148  // Don't match if searching for replaceable item and the item doesn't support text replace.
149  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
150  return false;
151 
152  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
153  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
154 
155  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
156  {
157  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
158  return text.Matches( searchText );
159 
160  return text.MakeUpper().Matches( searchText.MakeUpper() );
161  }
162 
163  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
164  return aText.Find( searchText ) != wxNOT_FOUND;
165 
166  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
167 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:501

References FR_MATCH_WILDCARD, FR_SEARCH_REPLACE, and EDA_ITEM::IsReplaceable().

◆ operator<()

bool EDA_ITEM::operator< ( const EDA_ITEM aItem) const
inherited

Test if another item is less than this object.

Parameters
aItem- Item to compare against.
Returns
- True if aItem is less than the item.

Definition at line 197 of file base_struct.cpp.

198 {
199  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
200  GetChars( GetClass() ) ) );
201 
202  return false;
203 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:153
virtual wxString GetClass() const =0
Function GetClass returns the class name.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205

References Format(), GetChars(), and EDA_ITEM::GetClass().

◆ Place()

void SCH_SCREEN::Place ( SCH_EDIT_FRAME frame,
wxDC *  DC 
)
inline

Definition at line 251 of file sch_screen.h.

251 { };

◆ Plot()

void SCH_SCREEN::Plot ( PLOTTER aPlotter)

Plot all the schematic objects to aPlotter.

Note
This function is useful only for schematic. The library editor and library viewer do not use a draw list and therefore plots nothing.
Parameters
aPlotterThe plotter object to plot to.

Sort to ensure plot-order consistency with screen drawing

Definition at line 751 of file sch_screen.cpp.

752 {
753  // Ensure links are up to date, even if a library was reloaded for some reason:
754  std::vector< SCH_ITEM* > junctions;
755  std::vector< SCH_ITEM* > bitmaps;
756  std::vector< SCH_ITEM* > other;
757 
758  for( auto item : Items() )
759  {
760  if( item->IsMoving() || item->IsResized() )
761  continue;
762 
763  if( item->Type() == SCH_JUNCTION_T )
764  junctions.push_back( item );
765  else if( item->Type() == SCH_BITMAP_T )
766  bitmaps.push_back( item );
767  else
768  other.push_back( item );
769  }
770 
772  std::sort( other.begin(), other.end(), []( const SCH_ITEM* a, const SCH_ITEM* b ) {
773  if( a->Type() == b->Type() )
774  return a->GetLayer() > b->GetLayer();
775 
776  return a->Type() > b->Type();
777  } );
778 
779  int defaultPenWidth = aPlotter->RenderSettings()->GetDefaultPenWidth();
780 
781  // Bitmaps are drawn first to ensure they are in the background
782  // This is particularly important for the wxPostscriptDC (used in *nix printers) as
783  // the bitmap PS command clears the screen
784  for( SCH_ITEM* item : bitmaps )
785  {
786  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
787  item->Plot( aPlotter );
788  }
789 
790  for( SCH_ITEM* item : other )
791  {
792  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
793  item->Plot( aPlotter );
794  }
795 
796  for( SCH_ITEM* item : junctions )
797  {
798  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
799  item->Plot( aPlotter );
800  }
801 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:271
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:147
EE_RTREE & Items()
Definition: sch_screen.h:162
int GetDefaultPenWidth() const
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
virtual void SetCurrentLineWidth(int width, void *aData=NULL)=0
Set the line width for the next drawing.

References KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), SCH_ITEM::GetLayer(), Items(), PLOTTER::RenderSettings(), SCH_BITMAP_T, SCH_JUNCTION_T, PLOTTER::SetCurrentLineWidth(), and EDA_ITEM::Type().

Referenced by DIALOG_PLOT_SCHEMATIC::Plot_1_Page_HPGL(), DIALOG_PLOT_SCHEMATIC::PlotOneSheetDXF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetPDF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetPS(), and DIALOG_PLOT_SCHEMATIC::plotOneSheetSVG().

◆ PopCommandFromRedoList()

PICKED_ITEMS_LIST * BASE_SCREEN::PopCommandFromRedoList ( )
virtualinherited

PopCommandFromRedoList return the last command to undo and remove it from list nothing is deleted.

Definition at line 116 of file base_screen.cpp.

117 {
118  return m_RedoList.PopCommand();
119 }
PICKED_ITEMS_LIST * PopCommand()
UNDO_REDO_CONTAINER m_RedoList
Objects list for the redo command (old data)
Definition: base_screen.h:83

References BASE_SCREEN::m_RedoList, and UNDO_REDO_CONTAINER::PopCommand().

Referenced by LIB_EDIT_FRAME::GetComponentFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), and SCH_EDITOR_CONTROL::Redo().

◆ PopCommandFromUndoList()

PICKED_ITEMS_LIST * BASE_SCREEN::PopCommandFromUndoList ( )
virtualinherited

PopCommandFromUndoList return the last command to undo and remove it from list nothing is deleted.

Definition at line 110 of file base_screen.cpp.

111 {
112  return m_UndoList.PopCommand();
113 }
PICKED_ITEMS_LIST * PopCommand()
UNDO_REDO_CONTAINER m_UndoList
Objects list for the undo command (old data)
Definition: base_screen.h:82

References BASE_SCREEN::m_UndoList, and UNDO_REDO_CONTAINER::PopCommand().

Referenced by LIB_EDIT_FRAME::GetComponentFromUndoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), PL_EDITOR_FRAME::RollbackFromUndo(), LIB_EDIT_FRAME::RollbackPartFromUndo(), SCH_EDIT_FRAME::RollbackSchematicFromUndo(), SCH_EDIT_FRAME::SaveCopyInUndoList(), and SCH_EDITOR_CONTROL::Undo().

◆ Print()

void SCH_SCREEN::Print ( RENDER_SETTINGS aSettings)

Print all the items in the screen to aDC.

Note
This function is useful only for schematic. The library editor and library viewer do not use a draw list and therefore draws nothing.

Sort to ensure plot-order consistency with screen drawing

Definition at line 710 of file sch_screen.cpp.

711 {
712  // Ensure links are up to date, even if a library was reloaded for some reason:
713  std::vector< SCH_ITEM* > junctions;
714  std::vector<SCH_ITEM*> bitmaps;
715  std::vector<SCH_ITEM*> other;
716 
717  for( auto item : Items() )
718  {
719  if( item->IsMoving() || item->IsResized() )
720  continue;
721 
722  if( item->Type() == SCH_JUNCTION_T )
723  junctions.push_back( item );
724  else if( item->Type() == SCH_BITMAP_T )
725  bitmaps.push_back( item );
726  else
727  other.push_back( item );
728  }
729 
731  std::sort( other.begin(), other.end(),
732  []( const SCH_ITEM* a, const SCH_ITEM* b )
733  {
734  if( a->Type() == b->Type() )
735  return a->GetLayer() > b->GetLayer();
736 
737  return a->Type() > b->Type();
738  } );
739 
740  for( auto item : bitmaps )
741  item->Print( aSettings, wxPoint( 0, 0 ) );
742 
743  for( auto item : other )
744  item->Print( aSettings, wxPoint( 0, 0 ) );
745 
746  for( auto item : junctions )
747  item->Print( aSettings, wxPoint( 0, 0 ) );
748 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:271
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193

References SCH_ITEM::GetLayer(), Items(), SCH_BITMAP_T, SCH_JUNCTION_T, and EDA_ITEM::Type().

Referenced by SCH_PRINTOUT::PrintPage(), and SCH_EDIT_FRAME::PrintPage().

◆ PushCommandToRedoList()

void BASE_SCREEN::PushCommandToRedoList ( PICKED_ITEMS_LIST aItem)
virtualinherited

Function PushCommandToRedoList add a command to redo in redo list delete the very old commands when the max count of redo commands is reached ( using ClearUndoORRedoList)

Definition at line 95 of file base_screen.cpp.

96 {
97  m_RedoList.PushCommand( aNewitem );
98 
99  // Delete the extra items, if count max reached
100  if( m_UndoRedoCountMax > 0 )
101  {
102  int extraitems = GetRedoCommandCount() - m_UndoRedoCountMax;
103 
104  if( extraitems > 0 )
105  ClearUndoORRedoList( m_RedoList, extraitems );
106  }
107 }
int m_UndoRedoCountMax
undo/Redo command Max depth
Definition: base_screen.h:49
void PushCommand(PICKED_ITEMS_LIST *aCommand)
virtual void ClearUndoORRedoList(UNDO_REDO_CONTAINER &aList, int aItemCount=-1)
Function ClearUndoORRedoList (virtual).
Definition: base_screen.h:119
UNDO_REDO_CONTAINER m_RedoList
Objects list for the redo command (old data)
Definition: base_screen.h:83
int GetRedoCommandCount() const
Definition: base_screen.h:165

References BASE_SCREEN::ClearUndoORRedoList(), BASE_SCREEN::GetRedoCommandCount(), BASE_SCREEN::m_RedoList, BASE_SCREEN::m_UndoRedoCountMax, and UNDO_REDO_CONTAINER::PushCommand().

Referenced by LIB_EDIT_FRAME::GetComponentFromUndoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), and SCH_EDITOR_CONTROL::Undo().

◆ PushCommandToUndoList()

void BASE_SCREEN::PushCommandToUndoList ( PICKED_ITEMS_LIST aItem)
virtualinherited

Function PushCommandToUndoList add a command to undo in undo list delete the very old commands when the max count of undo commands is reached ( using ClearUndoORRedoList)

Definition at line 80 of file base_screen.cpp.

81 {
82  m_UndoList.PushCommand( aNewitem );
83 
84  // Delete the extra items, if count max reached
85  if( m_UndoRedoCountMax > 0 )
86  {
87  int extraitems = GetUndoCommandCount() - m_UndoRedoCountMax;
88 
89  if( extraitems > 0 )
90  ClearUndoORRedoList( m_UndoList, extraitems );
91  }
92 }
int m_UndoRedoCountMax
undo/Redo command Max depth
Definition: base_screen.h:49
int GetUndoCommandCount() const
Definition: base_screen.h:160
void PushCommand(PICKED_ITEMS_LIST *aCommand)
virtual void ClearUndoORRedoList(UNDO_REDO_CONTAINER &aList, int aItemCount=-1)
Function ClearUndoORRedoList (virtual).
Definition: base_screen.h:119
UNDO_REDO_CONTAINER m_UndoList
Objects list for the undo command (old data)
Definition: base_screen.h:82

References BASE_SCREEN::ClearUndoORRedoList(), BASE_SCREEN::GetUndoCommandCount(), BASE_SCREEN::m_UndoList, BASE_SCREEN::m_UndoRedoCountMax, and UNDO_REDO_CONTAINER::PushCommand().

Referenced by LIB_EDIT_FRAME::GetComponentFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), SCH_EDITOR_CONTROL::Redo(), PL_EDITOR_FRAME::SaveCopyInUndoList(), LIB_EDIT_FRAME::SaveCopyInUndoList(), and SCH_EDIT_FRAME::SaveCopyInUndoList().

◆ Remove()

bool SCH_SCREEN::Remove ( SCH_ITEM aItem)

Remove aItem from the schematic associated with this screen.

Note
The removed item is not deleted. It is only unlinked from the item list.
Parameters
aItemItem to be removed from schematic.
Returns
True if we successfully removed the item

Definition at line 245 of file sch_screen.cpp.

246 {
247  bool retv = m_rtree.remove( aItem );
248 
249  // Check if the library symbol for the removed schematic symbol is still required.
250  if( retv && aItem->Type() == SCH_COMPONENT_T )
251  {
252  SCH_COMPONENT* removedSymbol = static_cast<SCH_COMPONENT*>( aItem );
253 
254  bool removeUnusedLibSymbol = true;
255 
256  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
257  {
258  SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
259 
260  if( removedSymbol->GetSchSymbolLibraryName() == symbol->GetSchSymbolLibraryName() )
261  {
262  removeUnusedLibSymbol = false;
263  break;
264  }
265  }
266 
267  if( removeUnusedLibSymbol )
268  {
269  auto it = m_libSymbols.find( removedSymbol->GetSchSymbolLibraryName() );
270 
271  if( it != m_libSymbols.end() )
272  {
273  delete it->second;
274  m_libSymbols.erase( it );
275  }
276  }
277  }
278 
279  return retv;
280 }
wxString GetSchSymbolLibraryName() const
bool remove(SCH_ITEM *aItem)
Function Remove() Removes an item from the tree.
Definition: sch_rtree.h:78
EE_RTREE m_rtree
Definition: sch_screen.h:118
EE_RTREE & Items()
Definition: sch_screen.h:162
Schematic symbol object.
Definition: sch_component.h:88
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References SCH_COMPONENT::GetSchSymbolLibraryName(), Items(), m_libSymbols, m_rtree, EE_RTREE::remove(), SCH_COMPONENT_T, and EDA_ITEM::Type().

Referenced by SCH_SHEET_LIST::BuildSheetList(), DeleteItem(), DIALOG_SCH_SHEET_PROPS::onSheetFilenameChanged(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), Update(), and UpdateSymbolLinks().

◆ Replace() [1/2]

bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
staticinherited

Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aTextA reference to a wxString object containing the text to be replaced.
Returns
True if aText was modified, otherwise false.

Definition at line 170 of file base_struct.cpp.

171 {
172  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
173 
174  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
175  aSearchData.GetFindString() :
176  aSearchData.GetFindString().Upper() );
177 
178  if( result == wxNOT_FOUND )
179  return false;
180 
181  wxString prefix = aText.Left( result );
182  wxString suffix;
183 
184  if( aSearchData.GetFindString().length() + result < aText.length() )
185  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
186 
187  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
188  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
189  GetChars( suffix ) );
190 
191  aText = prefix + aSearchData.GetReplaceString() + suffix;
192 
193  return true;
194 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:153

References GetChars(), and traceFindReplace.

Referenced by SCH_FIELD::Replace(), EDA_TEXT::Replace(), and SCH_EDITOR_CONTROL::ReplaceAndFindNext().

◆ Replace() [2/2]

virtual bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
void *  aAuxData = NULL 
)
inlinevirtualinherited

Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace.

This function must be overridden for items that support text replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item text was modified, otherwise false.

Reimplemented in SCH_TEXT, SCH_SHEET_PIN, and SCH_FIELD.

Definition at line 489 of file base_struct.h.

489 { return false; }

◆ Schematic()

SCHEMATIC * SCH_SCREEN::Schematic ( ) const

◆ SetAuxOrigin()

void SCH_SCREEN::SetAuxOrigin ( const wxPoint aPosition)
inline

Definition at line 192 of file sch_screen.h.

192 { m_aux_origin = aPosition; }
wxPoint m_aux_origin
Origin of the auxiliary axis, which is used in exports mostly, but not yet in EESCHEMA.
Definition: sch_screen.h:116

References m_aux_origin.

◆ SetBrightened()

void EDA_ITEM::SetBrightened ( )
inlineinherited

◆ SetComponentFootprint()

bool SCH_SCREEN::SetComponentFootprint ( SCH_SHEET_PATH aSheetPath,
const wxString &  aReference,
const wxString &  aFootPrint,
bool  aSetVisible 
)

Search this screen for a symbol with aReference and set the footprint field to aFootPrint if found.

Parameters
aSheetPathThe sheet path used to look up the reference designator.
aReferenceThe reference designator of the component.
aFootPrintThe value to set the footprint field.
aSetVisibleThe value to set the field visibility flag.
Returns
True if aReference was found otherwise false.

Definition at line 1072 of file sch_screen.cpp.

1074 {
1075  SCH_COMPONENT* component;
1076  bool found = false;
1077 
1078  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
1079  {
1080  component = static_cast<SCH_COMPONENT*>( item );
1081 
1082  if( aReference.CmpNoCase( component->GetRef( aSheetPath ) ) == 0 )
1083  {
1084  // Found: Init Footprint Field
1085 
1086  /* Give a reasonable value to the field position and
1087  * orientation, if the text is empty at position 0, because
1088  * it is probably not yet initialized
1089  */
1090  SCH_FIELD * fpfield = component->GetField( FOOTPRINT );
1091  if( fpfield->GetText().IsEmpty()
1092  && ( fpfield->GetTextPos() == component->GetPosition() ) )
1093  {
1094  fpfield->SetTextAngle( component->GetField( VALUE )->GetTextAngle() );
1095  fpfield->SetTextPos( component->GetField( VALUE )->GetTextPos() );
1096  fpfield->SetTextSize( component->GetField( VALUE )->GetTextSize() );
1097 
1098  if( fpfield->GetTextAngle() == 0.0 )
1099  fpfield->Offset( wxPoint( 0, Mils2iu( 100 ) ) );
1100  else
1101  fpfield->Offset( wxPoint( Mils2iu( 100 ), 0 ) );
1102  }
1103 
1104  fpfield->SetText( aFootPrint );
1105  fpfield->SetVisible( aSetVisible );
1106 
1107  found = true;
1108  }
1109  }
1110 
1111  return found;
1112 }
SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
void Offset(const wxPoint &aOffset)
Definition: eda_text.h:252
void SetTextPos(const wxPoint &aPoint)
Definition: eda_text.h:246
void SetVisible(bool aVisible)
Definition: eda_text.h:184
double GetTextAngle() const
Definition: eda_text.h:173
void SetTextSize(const wxSize &aNewSize)
Definition: eda_text.h:237
Field Name Module PCB, i.e. "16DIP300".
#define VALUE
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:116
const wxSize & GetTextSize() const
Definition: eda_text.h:238
const wxPoint GetPosition() const override
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false)
Return the reference for the given sheet path.
SCH_FIELD * GetField(int aFieldNdx)
Returns a field in this symbol.
EE_RTREE & Items()
Definition: sch_screen.h:162
Schematic symbol object.
Definition: sch_component.h:88
const wxPoint & GetTextPos() const
Definition: eda_text.h:247
virtual void SetTextAngle(double aAngle)
Definition: eda_text.h:166
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:126

References FOOTPRINT, SCH_COMPONENT::GetField(), SCH_COMPONENT::GetPosition(), SCH_COMPONENT::GetRef(), EDA_TEXT::GetText(), EDA_TEXT::GetTextAngle(), EDA_TEXT::GetTextPos(), EDA_TEXT::GetTextSize(), Items(), EDA_TEXT::Offset(), SCH_COMPONENT_T, EDA_TEXT::SetText(), EDA_TEXT::SetTextAngle(), EDA_TEXT::SetTextPos(), EDA_TEXT::SetTextSize(), EDA_TEXT::SetVisible(), and VALUE.

Referenced by SCH_SHEET_PATH::SetComponentFootprint().

◆ SetFileName()

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 232 of file base_struct.h.

232 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Definition: base_struct.h:176

References EDA_ITEM::m_Flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddModuleToBoard(), PCBNEW_CONTROL::AppendBoard(), SCH_EDIT_TOOL::ChangeTextType(), GRAPHICS_CLEANER::cleanupSegments(), TRACKS_CLEANER::cleanupSegments(), SCH_EDIT_FRAME::ConvertPart(), SCH_DRAWING_TOOLS::createNewText(), LIB_PIN_TOOL::CreatePin(), SCH_EDIT_FRAME::CreateSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), KIGFX::SCH_PAINTER::draw(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawLine(), DRAWING_TOOL::DrawRectangle(), LIB_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_EDIT_TOOL::Duplicate(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_MOVE_TOOL::getConnectedDragItems(), EDIT_POINTS_FACTORY::Make(), TRACKS_CLEANER::mergeCollinearSegments(), LIB_MOVE_TOOL::moveItem(), SCH_MOVE_TOOL::moveItem(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), LIB_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::SaveCopyInUndoList(), SELECTION_TOOL::selectConnectedTracks(), EE_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), WS_DATA_ITEM::SyncDrawItems(), WS_DATA_ITEM_TEXT::SyncDrawItems(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible.

Parameters
aEnableTrue forces the item to be drawn. False uses the item's visibility setting to determine if the item is to be drawn.

Definition at line 284 of file base_struct.h.

284 { m_forceVisible = aEnable; }
bool m_forceVisible
Definition: base_struct.h:175

References EDA_ITEM::m_forceVisible.

◆ SetMaxUndoItems()

void BASE_SCREEN::SetMaxUndoItems ( int  aMax)
inlineinherited

Definition at line 172 of file base_screen.h.

173  {
174  if( aMax >= 0 && aMax < ABS_MAX_UNDO_ITEMS )
175  m_UndoRedoCountMax = aMax;
176  else
177  {
178  wxFAIL_MSG( "Maximum undo items not within limits" );
180  }
181  }
int m_UndoRedoCountMax
undo/Redo command Max depth
Definition: base_screen.h:49
#define ABS_MAX_UNDO_ITEMS
#define DEFAULT_MAX_UNDO_ITEMS

References ABS_MAX_UNDO_ITEMS, DEFAULT_MAX_UNDO_ITEMS, and BASE_SCREEN::m_UndoRedoCountMax.

Referenced by SCH_EDIT_FRAME::CreateScreens(), and SCH_EDIT_FRAME::InitSheet().

◆ SetModified()

◆ SetModify()

◆ SetPageSettings()

void SCH_SCREEN::SetPageSettings ( const PAGE_INFO aPageSettings)
inline

Definition at line 185 of file sch_screen.h.

185 { m_paper = aPageSettings; }
PAGE_INFO m_paper
The size of the paper to print or plot on.
Definition: sch_screen.h:111

References m_paper.

Referenced by LIB_CONTROL::ExportSymbolAsSVG(), SCH_LEGACY_PLUGIN::loadPageSettings(), SCH_SEXPR_PARSER::ParseSchematic(), and SCH_BASE_FRAME::SetPageSettings().

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Definition at line 196 of file base_struct.h.

196 { m_Parent = aParent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:174

References EDA_ITEM::m_Parent.

Referenced by MODULE::Add(), BOARD::Add(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewComponent(), SCH_SHEET::AddPin(), LIB_CONTROL::AddSymbolToSchematic(), Append(), LIB_FIELD::Copy(), LIB_EDIT_FRAME::CreateNewPart(), SCH_DRAWING_TOOLS::createNewText(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), SCH_EDIT_TOOL::Duplicate(), PCB_EDIT_FRAME::Exchange_Module(), LIB_PART::Flatten(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::GetModule(), LIB_PART::LIB_PART(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), LIB_EDIT_FRAME::LoadOneSymbol(), MODULE::MODULE(), DIALOG_LIB_EDIT_PIN::OnPaintShowPanel(), MODULE::operator=(), LIB_PART::operator=(), PCB_PARSER::parseMODULE_unchecked(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_SEXPR_PARSER::ParseSymbol(), LIB_EDIT_TOOL::Paste(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), pasteModuleItemsToModEdit(), SCH_DRAWING_TOOLS::PlaceComponent(), PCB_EDITOR_CONTROL::PlaceModule(), BOARD_COMMIT::Push(), SCH_SEXPR_PLUGIN_CACHE::removeSymbol(), SCH_LEGACY_PLUGIN_CACHE::removeSymbol(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SaveCopyOfZones(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SHEET_PIN::SCH_SHEET_PIN(), LIB_PART::SetFields(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), SwapItemData(), and DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::UpdateFieldsFromLibrary().

◆ SetSave()

void BASE_SCREEN::SetSave ( )
inlineinherited

Definition at line 185 of file base_screen.h.

185 { m_FlagSave = true; }
bool m_FlagSave
Indicates automatic file save.
Definition: base_screen.h:48

References BASE_SCREEN::m_FlagSave.

Referenced by SCH_EDIT_FRAME::OnModify(), and PCB_BASE_FRAME::OnModify().

◆ SetSelected()

◆ SetState()

void EDA_ITEM::SetState ( int  type,
int  state 
)
inlineinherited

Definition at line 221 of file base_struct.h.

222  {
223  if( state )
224  m_Status |= type; // state = ON or OFF
225  else
226  m_Status &= ~type;
227  }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by LEGACY_PLUGIN::loadTrackList(), TRACKS_CLEANER::mergeCollinearSegments(), and TRACK::SetLocked().

◆ SetStatus()

void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited

Definition at line 230 of file base_struct.h.

230 { m_Status = aStatus; }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetTitleBlock()

void SCH_SCREEN::SetTitleBlock ( const TITLE_BLOCK aTitleBlock)
inline

Definition at line 196 of file sch_screen.h.

196 { m_titles = aTitleBlock; }
TITLE_BLOCK m_titles
Definition: sch_screen.h:113

References m_titles.

Referenced by SCH_LEGACY_PLUGIN::loadPageSettings(), SCH_SEXPR_PARSER::ParseSchematic(), and SCH_BASE_FRAME::SetTitleBlock().

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 207 of file base_struct.h.

207 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:232
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:121

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ Sort()

static bool EDA_ITEM::Sort ( const EDA_ITEM aLeft,
const EDA_ITEM aRight 
)
inlinestaticinherited

Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers.

Parameters
aLeftThe left hand item to compare.
aRightThe right hand item to compare.
Returns
True if aLeft is less than aRight.

Definition at line 520 of file base_struct.h.

520 { return *aLeft < *aRight; }

◆ TestDanglingEnds()

bool SCH_SCREEN::TestDanglingEnds ( const SCH_SHEET_PATH aPath = nullptr)

Test all of the connectable objects in the schematic for unused connection points.

Parameters
aPathis a sheet path to pass to UpdateDanglingState if desired
Returns
True if any connection state changes were made.

Definition at line 994 of file sch_screen.cpp.

995 {
996  std::vector< DANGLING_END_ITEM > endPoints;
997  bool hasStateChanged = false;
998 
999  for( SCH_ITEM* item : Items() )
1000  item->GetEndPoints( endPoints );
1001 
1002  for( SCH_ITEM* item : Items() )
1003  {
1004  if( item->UpdateDanglingState( endPoints, aPath ) )
1005  hasStateChanged = true;
1006  }
1007 
1008  return hasStateChanged;
1009 }
EE_RTREE & Items()
Definition: sch_screen.h:162
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:186

References Items().

Referenced by SCH_EDIT_FRAME::importFile(), and SCH_EDIT_FRAME::OpenProjectFiles().

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Function Type()

returns the type of object. This attribute should never be changed after a constructor sets it, so there is no public "setter" method.

Returns
KICAD_T - the type of object.

Definition at line 193 of file base_struct.h.

193 { return m_StructType; }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:170

References EDA_ITEM::m_StructType.

Referenced by MODULE::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), POINT_EDITOR::addCorner(), CONNECTION_SUBGRAPH::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded(), ZONE_FILLER::addKnockout(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), CN_ITEM::AnchorCount(), Append(), CONNECTION_GRAPH::buildConnectionGraph(), SCH_SCREENS::buildScreenList(), calcArea(), calcMaxArea(), PCB_INSPECTION_TOOL::calculateSelectionRatsnest(), POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), ROUTER_TOOL::CanInlineDrag(), SCH_EDIT_TOOL::ChangeTextType(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), TEXTE_PCB::ClassOf(), MARKER_PCB::ClassOf(), SCH_NO_CONNECT::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_PIN::ClassOf(), EDGE_MODULE::ClassOf(), SCH_LINE::ClassOf(), PCB_TARGET::ClassOf(), SCH_FIELD::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), ZONE_CONTAINER::ClassOf(), SCH_BITMAP::ClassOf(), D_PAD::ClassOf(), DIMENSION::ClassOf(), TRACK::ClassOf(), NETINFO_ITEM::ClassOf(), SCH_SHEET_PIN::ClassOf(), MODULE::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_COMPONENT::ClassOf(), ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), SCH_TEXT::ClassOf(), SCH_SHEET::ClassOf(), BOARD::ClassOf(), ARC::ClassOf(), SCH_LABEL::ClassOf(), VIA::ClassOf(), SCH_GLOBALLABEL::ClassOf(), SCH_HIERLABEL::ClassOf(), TRACKS_CLEANER::cleanupSegments(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_TEXT::compare(), LIB_POLYLINE::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_ITEM::compare(), LIB_PIN::compare(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), DIALOG_TEXT_PROPERTIES::convertKIIDsToReferences(), DIALOG_LABEL_EDITOR::convertKIIDsToReferences(), MODULE::CoverageRatio(), BOARD_ADAPTER::createLayers(), PCB_BASE_FRAME::CreateNewModule(), SCH_DRAWING_TOOLS::createNewText(), BOARD_ADAPTER::createNewTrack(), D_PAD::D_PAD(), DeleteItem(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), SCH_EDITOR_CONTROL::doCopy(), SCH_EDIT_TOOL::DoDelete(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), DRC::doTrackDrc(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), MODULE::DuplicateItem(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckLabels(), NETLIST_EXPORTER::findNextComponent(), PCB_BASE_FRAME::FocusOnItem(), EDIT_TOOL::FootprintFilter(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), SCH_FIELD::GetBoundingBox(), TRACK::GetBoundingBox(), SCH_FIELD::GetCanonicalName(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), NETLIST_OBJECT::GetComponentParent(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), SCH_TEXT::GetContextualTextVars(), CONNECTION_GRAPH::getDefaultConnection(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_FIELD::GetMenuImage(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTION_SUBGRAPH::GetNameForDriver(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), DRAWSEGMENT::GetParentModule(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), getRect(), KIGFX::SCH_PAINTER::getRenderColor(), TEXTE_PCB::GetShownText(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), EE_SELECTION_TOOL::GuessSelectionCandidates(), SELECTION_TOOL::GuessSelectionCandidates(), hash_eda(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), highlightNet(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), TRACK::IsNull(), SCH_LINE::IsParallel(), SCH_FIELD::IsReplaceable(), IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), SELECTION_TOOL::itemPassesFilter(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), EE_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), SCH_JUNCTION::operator<(), SCH_BUS_ENTRY_BASE::operator<(), SCH_FIELD::operator<(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_TEXT::operator<(), SCH_ITEM::operator<(), SCH_SHEET::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_COMPONENT::operator=(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), Plot(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), SCH_FIELD::Print(), Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SELECTION_TOOL::RebuildSelection(), SCH_CONNECTION::recacheName(), SCH_BASE_FRAME::RefreshItem(), SCH_BASE_FRAME::RefreshSelection(), EE_RTREE::remove(), MODULE::Remove(), CN_CONNECTIVITY_ALGO::Remove(), Remove(), BOARD::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_FIELD::Replace(), WS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), SCH_TEXT::Rotate(), DRC_TEXTVAR_TESTER::RunDRC(), SCH_SEXPR_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_SEXPR_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_SEXPR_PLUGIN_CACHE::saveCircle(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_SEXPR_PLUGIN::saveField(), SCH_SEXPR_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_SEXPR_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_SEXPR_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), SCH_SEXPR_PLUGIN_CACHE::saveSymbolDrawItem(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN_CACHE::saveText(), Schematic(), SCH_ITEM::Schematic(), SELECTION_TOOL::select(), EE_SELECTION_TOOL::Selectable(), SELECTION_TOOL::Selectable(), SELECTION_TOOL::selectConnectedTracks(), SCH_FIELD::SetId(), ITEM_PICKER::SetItem(), SCH_FIELD::SetPosition(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), SCH_SHEET_PIN::SwapData(), SCH_FIELD::SwapData(), TEXTE_PCB::SwapData(), TRACK::SwapData(), DIMENSION::SwapData(), ARC::SwapData(), SCH_SHEET::SwapData(), VIA::SwapData(), SCH_COMPONENT::SwapData(), D_PAD::SwapData(), MODULE::SwapData(), ZONE_CONTAINER::SwapData(), SwapItemData(), TEXTE_MODULE::TEXTE_MODULE(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), TRACK::TransformShapeWithClearanceToPolygon(), LIB_DRAWING_TOOLS::TwoClickPlace(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), SCH_TEXT::UpdateDanglingState(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), EE_POINT_EDITOR::updateItem(), PL_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), CONNECTION_GRAPH::updateItemConnectivity(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateView(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_SHEET::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ Update()

void SCH_SCREEN::Update ( SCH_ITEM aItem)

Updates aItem's bounding box in the tree.

Parameters
aItemItem that needs to be updated.

Definition at line 238 of file sch_screen.cpp.

239 {
240  if( Remove( aItem ) )
241  Append( aItem );
242 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:245
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:133

References Append(), and Remove().

Referenced by SCH_EDIT_TOOL::AutoplaceFields(), SCH_EDIT_TOOL::CleanupSheetPins(), SCH_MOVE_TOOL::Main(), and SCH_EDIT_TOOL::Properties().

◆ UpdateLocalLibSymbolLinks()

void SCH_SCREEN::UpdateLocalLibSymbolLinks ( )

Initialize the LIB_PART reference for each SCH_COMPONENT found in this schematic with the local project library symbols.

Definition at line 684 of file sch_screen.cpp.

685 {
686  std::vector<SCH_COMPONENT*> symbols;
687 
688  for( auto item : Items().OfType( SCH_COMPONENT_T ) )
689  symbols.push_back( static_cast<SCH_COMPONENT*>( item ) );
690 
691  for( auto symbol : symbols )
692  {
693  // Changing the symbol may adjust the bbox of the symbol; remove and reinsert it afterwards.
694  m_rtree.remove( symbol );
695 
696  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
697 
698  LIB_PART* libSymbol = nullptr;
699 
700  if( it != m_libSymbols.end() )
701  libSymbol = new LIB_PART( *it->second );
702 
703  symbol->SetLibSymbol( libSymbol );
704 
705  m_rtree.insert( symbol );
706  }
707 }
void insert(SCH_ITEM *aItem)
Function Insert() Inserts an item into the tree.
Definition: sch_rtree.h:62
bool remove(SCH_ITEM *aItem)
Function Remove() Removes an item from the tree.
Definition: sch_rtree.h:78
EE_RTREE m_rtree
Definition: sch_screen.h:118
Define a library symbol object.
EE_RTREE & Items()
Definition: sch_screen.h:162
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References EE_RTREE::insert(), Items(), m_libSymbols, m_rtree, EE_RTREE::remove(), and SCH_COMPONENT_T.

Referenced by SCH_SEXPR_PARSER::ParseSchematic().

◆ UpdateSymbolLinks()

void SCH_SCREEN::UpdateSymbolLinks ( REPORTER aReporter = nullptr)

Initialize the LIB_PART reference for each SCH_COMPONENT found in this schematic from the project SYMBOL_LIB_TABLE.

Symbol library links are set using the symbol library table and will fall back to the cache only if the cache is loaded. The cache should only be loaded when opening legacy schematic files.

Note
This should only be called when the user specifically requests all library symbol links to be updated or when the legacy schematic is opened for the last time. All subsequent schematic loads with the new s-expression will contain the library symbols and should call UpdateLocalLibSymbolLinks.
Parameters
aReporterOptional REPORTER object to write status and error messages into.

Definition at line 528 of file sch_screen.cpp.

529 {
530  wxCHECK_RET( Schematic(), "Cannot call SCH_SCREEN::UpdateSymbolLinks with no SCHEMATIC" );
531 
532  wxString msg;
533  std::unique_ptr< LIB_PART > libSymbol;
534  std::vector<SCH_COMPONENT*> symbols;
535  SYMBOL_LIB_TABLE* libs = Schematic()->Prj().SchSymbolLibTable();
536 
537  // This will be a nullptr if an s-expression schematic is loaded.
538  PART_LIBS* legacyLibs = Schematic()->Prj().SchLibs();
539 
540  for( auto item : Items().OfType( SCH_COMPONENT_T ) )
541  symbols.push_back( static_cast<SCH_COMPONENT*>( item ) );
542 
543  // Remove them from the R tree. There bounding box size may change.
544  for( auto symbol : symbols )
545  Remove( symbol );
546 
547  // Clear all existing symbol links.
548  clearLibSymbols();
549 
550  for( auto symbol : symbols )
551  {
552  LIB_PART* tmp = nullptr;
553  libSymbol.reset();
554 
555  // If the symbol is already in the internal library, map the symbol to it.
556  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
557 
558  if( ( it != m_libSymbols.end() ) )
559  {
560  if( aReporter )
561  {
562  msg.Printf( _( "Setting schematic symbol '%s %s' library identifier "
563  "to '%s'. " ),
564  symbol->GetField( REFERENCE )->GetText(),
565  symbol->GetField( VALUE )->GetText(),
566  symbol->GetLibId().Format().wx_str() );
567  aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
568  }
569 
570  // Internal library symbols are already flattened so just make a copy.
571  symbol->SetLibSymbol( new LIB_PART( *it->second ) );
572  continue;
573  }
574 
575  if( !symbol->GetLibId().IsValid() )
576  {
577  if( aReporter )
578  {
579  msg.Printf( _( "Schematic symbol reference '%s' library identifier is not "
580  "valid. Unable to link library symbol." ),
581  symbol->GetLibId().Format().wx_str() );
582  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
583  }
584 
585  continue;
586  }
587 
588  // LIB_TABLE_BASE::LoadSymbol() throws an IO_ERROR if the the library nickname
589  // is not found in the table so check if the library still exists in the table
590  // before attempting to load the symbol.
591  if( !libs->HasLibrary( symbol->GetLibId().GetLibNickname() ) && !legacyLibs )
592  {
593  if( aReporter )
594  {
595  msg.Printf( _( "Symbol library '%s' not found and no fallback cache "
596  "library available. Unable to link library symbol." ),
597  symbol->GetLibId().GetLibNickname().wx_str() );
598  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
599  }
600 
601  continue;
602  }
603 
604  if( libs->HasLibrary( symbol->GetLibId().GetLibNickname() ) )
605  {
606  try
607  {
608  tmp = libs->LoadSymbol( symbol->GetLibId() );
609  }
610  catch( const IO_ERROR& ioe )
611  {
612  msg.Printf( _( "I/O error %s resolving library symbol %s" ), ioe.What(),
613  symbol->GetLibId().Format().wx_str() );
614  aReporter->ReportTail( msg, RPT_SEVERITY_ERROR );
615  }
616  }
617 
618  if( !tmp && legacyLibs )
619  {
620  // If here, only the cache library should be loaded if the loaded schematic
621  // is the legacy file format.
622  wxCHECK2( legacyLibs->GetLibraryCount() == 1, continue );
623 
624  PART_LIB& legacyCacheLib = legacyLibs->at( 0 );
625 
626  // ...and it better be the cache library.
627  wxCHECK2( legacyCacheLib.IsCache(), continue );
628 
629  wxString id = symbol->GetLibId().Format();
630 
631  id.Replace( ':', '_' );
632 
633  if( aReporter )
634  {
635  msg.Printf( _( "Falling back to cache to set symbol '%s:%s' link '%s'." ),
636  symbol->GetField( REFERENCE )->GetText(),
637  symbol->GetField( VALUE )->GetText(),
638  id );
639  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
640  }
641 
642  tmp = legacyCacheLib.FindPart( id );
643  }
644 
645  if( tmp )
646  {
647  // We want a full symbol not just the top level child symbol.
648  libSymbol = tmp->Flatten();
649  libSymbol->SetParent();
650 
651  m_libSymbols.insert( { symbol->GetSchSymbolLibraryName(),
652  new LIB_PART( *libSymbol.get() ) } );
653 
654  if( aReporter )
655  {
656  msg.Printf( _( "Setting schematic symbol '%s %s' library identifier to '%s'. " ),
657  symbol->GetField( REFERENCE )->GetText(),
658  symbol->GetField( VALUE )->GetText(),
659  symbol->GetLibId().Format().wx_str() );
660  aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
661  }
662  }
663  else
664  {
665  if( aReporter )
666  {
667  msg.Printf( _( "No library symbol found for schematic symbol '%s %s'. " ),
668  symbol->GetField( REFERENCE )->GetText(),
669  symbol->GetField( VALUE )->GetText() );
670  aReporter->ReportTail( msg, RPT_SEVERITY_ERROR );
671  }
672  }
673 
674  symbol->SetLibSymbol( libSymbol.release() );
675  }
676 
677  // Changing the symbol may adjust the bbox of the symbol. This re-inserts the
678  // item with the new bbox
679  for( auto symbol : symbols )
680  Append( symbol );
681 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:245
bool HasLibrary(const wxString &aNickname, bool aCheckEnabled=false) const
Test for the existence of aNickname in the library table.
void clearLibSymbols()
Definition: sch_screen.cpp:102
virtual REPORTER & ReportTail(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Function ReportTail Places the report at the end of the list, for objects that support report orderin...
Definition: reporter.h:94
LIB_PART * LoadSymbol(const wxString &aNickname, const wxString &aName)
Load a LIB_PART having aName from the library given by aNickname.
int GetLibraryCount()
Field Reference of part, i.e. "IC21".
#define VALUE
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:33
Define a library symbol object.
std::unique_ptr< LIB_PART > Flatten() const
Return a flattened symbol inheritance to the caller.
A collection of PART_LIB objects.
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:133
#define _(s)
Definition: 3d_actions.cpp:33
SCHEMATIC * Schematic() const
Definition: sch_screen.cpp:93
EE_RTREE & Items()
Definition: sch_screen.h:162
PROJECT & Prj() const
Return a reference to the project this schematic is part of.
Definition: schematic.h:77
Object used to load, save, search, and otherwise manipulate symbol library files.
Struct IO_ERROR is a class used to hold an error message and may be used when throwing exceptions con...
Definition: ki_exception.h:76
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:127

References _, Append(), clearLibSymbols(), LIB_PART::Flatten(), PART_LIBS::GetLibraryCount(), LIB_TABLE::HasLibrary(), Items(), SYMBOL_LIB_TABLE::LoadSymbol(), m_libSymbols, SCHEMATIC::Prj(), REFERENCE, Remove(), REPORTER::ReportTail(), RPT_SEVERITY_ERROR, RPT_SEVERITY_INFO, RPT_SEVERITY_WARNING, SCH_COMPONENT_T, Schematic(), VALUE, and IO_ERROR::What().

◆ ViewBBox()

const BOX2I EDA_ITEM::ViewBBox ( ) const
overridevirtualinherited

Function ViewBBox() returns the bounding box of the item covering all its layers.

Returns
BOX2I - the current bounding box

Implements KIGFX::VIEW_ITEM.

Reimplemented in MODULE, D_PAD, EDIT_POINTS, GERBER_DRAW_ITEM, DRAWSEGMENT, DIMENSION, TEXTE_MODULE, TRACK, ROUTER_PREVIEW_ITEM, MARKER_PCB, KIGFX::WS_PROXY_VIEW_ITEM, MY_DRAWING, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::PREVIEW::POLYGON_ITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::PREVIEW::SELECTION_AREA, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, and BRIGHT_BOX.

Definition at line 218 of file base_struct.cpp.

219 {
220  // Basic fallback
221  return BOX2I( VECTOR2I( GetBoundingBox().GetOrigin() ),
222  VECTOR2I( GetBoundingBox().GetSize() ) );
223 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:521
VECTOR2< int > VECTOR2I
Definition: vector2d.h:594
virtual const EDA_RECT GetBoundingBox() const
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
Definition: base_struct.cpp:95

References EDA_ITEM::GetBoundingBox().

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), BRIGHT_BOX::ViewBBox(), DIMENSION::ViewBBox(), DRAWSEGMENT::ViewBBox(), and BRIGHT_BOX::ViewDraw().

◆ ViewDraw()

virtual void KIGFX::VIEW_ITEM::ViewDraw ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewDraw() Draws the parts of the object belonging to layer aLayer.

viewDraw() is an alternative way for drawing objects if if there is no PAINTER assigned for the view or if the PAINTER doesn't know how to paint this particular implementation of VIEW_ITEM. The preferred way of drawing is to design an appropriate PAINTER object, the method below is intended only for quick hacks and debugging purposes.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on

Reimplemented in EDIT_POINTS, ROUTER_PREVIEW_ITEM, KIGFX::VIEW_GROUP, KIGFX::WS_PROXY_VIEW_ITEM, KIGFX::PREVIEW::SELECTION_AREA, MY_DRAWING, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, KIGFX::VIEW_OVERLAY, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, BRIGHT_BOX, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, and PCB_BRIGHT_BOX.

Definition at line 116 of file view_item.h.

117  {}

Referenced by KIGFX::VIEW::draw(), and KIGFX::VIEW::updateItemGeometry().

◆ ViewGetLayers()

void EDA_ITEM::ViewGetLayers ( int  aLayers[],
int &  aCount 
) const
overridevirtualinherited

Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on.

For instance, a D_PAD spans zero or more copper layers and a few technical layers. ViewDraw() or PAINTER::Draw() is repeatedly called for each of the layers returned by ViewGetLayers(), depending on the rendering order.

Parameters
aLayers[]output layer index array
aCountnumber of layer indices in aLayers[]

Implements KIGFX::VIEW_ITEM.

Reimplemented in MODULE, D_PAD, SCH_SHEET, EDIT_POINTS, VIA, BOARD_ITEM, GERBER_DRAW_ITEM, SCH_ITEM, TEXTE_MODULE, TRACK, LIB_PART, LIB_ITEM, SCH_COMPONENT, MY_DRAWING, LIB_FIELD, ZONE_CONTAINER, SCH_LINE, ROUTER_PREVIEW_ITEM, SCH_BITMAP, MARKER_PCB, KIGFX::WS_PROXY_VIEW_ITEM, SCH_BUS_ENTRY_BASE, SCH_NO_CONNECT, WS_DRAW_ITEM_BASE, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, LIB_TEXT, SCH_JUNCTION, BRIGHT_BOX, SCH_MARKER, KIGFX::RATSNEST_VIEWITEM, and KIGFX::PREVIEW::RULER_ITEM.

Definition at line 226 of file base_struct.cpp.

227 {
228  // Basic fallback
229  aCount = 1;
230  aLayers[0] = 0;
231 }

◆ ViewGetLOD()

virtual unsigned int KIGFX::VIEW_ITEM::ViewGetLOD ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewGetLOD() Returns the level of detail (LOD) of the item.

A level of detail is the minimal VIEW scale that is sufficient for an item to be shown on a given layer.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on
Returns
the level of detail. 0 always show the item, because the actual zoom level (or VIEW scale) is always > 0

Reimplemented in MODULE_ZONE_CONTAINER, MODULE, D_PAD, VIA, GERBER_DRAW_ITEM, TEXTE_MODULE, TRACK, and EDGE_MODULE.

Definition at line 140 of file view_item.h.

141  {
142  // By default always show the item
143  return 0;
144  }

Referenced by KIGFX::VIEW::drawItem::operator()(), GRID_HELPER::queryVisible(), and SELECTION_TOOL::Selectable().

◆ viewPrivData()

◆ Visit()

SEARCH_RESULT EDA_ITEM::Visit ( INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
virtualinherited

Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data.

Implementations should call inspector->Inspect() on types in scanTypes[], and may use IterateForward() to do so on lists of such data.

Parameters
inspectorAn INSPECTOR instance to use in the inspection.
testDataArbitrary data used by the inspector.
scanTypesWhich KICAD_T types are of interest and the order is significant too, terminated by EOT.
Returns
SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan, else SCAN_CONTINUE, and determined by the inspector.

Reimplemented in BOARD, SCH_COMPONENT, MODULE, SCH_SHEET, LIB_PART, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, TRACK, and GBR_LAYOUT.

Definition at line 118 of file base_struct.cpp.

119 {
120 #if 0 && defined(DEBUG)
121  std::cout << GetClass().mb_str() << ' ';
122 #endif
123 
124  if( IsType( scanTypes ) )
125  {
126  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
127  return SEARCH_RESULT::QUIT;
128  }
129 
131 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Function IsType Checks whether the item is one of the listed types.
Definition: base_struct.h:262
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References CONTINUE, EDA_ITEM::GetClass(), EDA_ITEM::IsType(), and QUIT.

Referenced by GERBER_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), and EDA_ITEM::IterateForward().

Member Data Documentation

◆ m_aliases

std::unordered_set< std::shared_ptr< BUS_ALIAS > > SCH_SCREEN::m_aliases
private

List of bus aliases stored in this screen.

Definition at line 124 of file sch_screen.h.

Referenced by AddBusAlias(), ClearBusAliases(), and GetBusAliases().

◆ m_aux_origin

wxPoint SCH_SCREEN::m_aux_origin
private

Origin of the auxiliary axis, which is used in exports mostly, but not yet in EESCHEMA.

Definition at line 116 of file sch_screen.h.

Referenced by GetAuxOrigin(), and SetAuxOrigin().

◆ m_Center

bool BASE_SCREEN::m_Center
inherited

Center on screen.

If true (0.0) is centered on screen coordinates can be < 0 and

0 except for schematics.

false: when coordinates can only be >= 0 Schematic

Definition at line 71 of file base_screen.h.

Referenced by BASE_SCREEN::BASE_SCREEN(), FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME(), BASE_SCREEN::InitDataPoints(), LIB_VIEW_FRAME::LIB_VIEW_FRAME(), PL_EDITOR_SCREEN::PL_EDITOR_SCREEN(), and SCH_SCREEN().

◆ m_clientSheetPathList

std::vector<SCH_SHEET_PATH> SCH_SCREEN::m_clientSheetPathList
private

the list of scheet paths sharing this screen used in some annotation calculations to update alternate references Note: a screen having a m_refCount = 1 (only one sheet path using it) can have many scheet paths sharing this screen, if this sheet is inside an other sheet having many instances (one sheet path by parent sheet instance).

Definition at line 108 of file sch_screen.h.

Referenced by GetClientSheetPaths().

◆ m_DrawOrg

wxPoint BASE_SCREEN::m_DrawOrg
inherited

offsets for drawing the circuit on the screen

Definition at line 62 of file base_screen.h.

Referenced by SCH_EDIT_FRAME::DrawCurrentSheetToClipboard(), BASE_SCREEN::InitDataPoints(), PLEDITOR_PRINTOUT::PrintPage(), and SCH_PRINTOUT::PrintPage().

◆ m_fileName

wxString SCH_SCREEN::m_fileName
private

File used to load the screen.

Definition at line 97 of file sch_screen.h.

Referenced by GetFileName(), and SetFileName().

◆ m_Flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

◆ m_Initialized

bool BASE_SCREEN::m_Initialized
inherited

◆ m_libSymbols

std::map<wxString, LIB_PART*> SCH_SCREEN::m_libSymbols
private

Library symbols required for this schematic.

Definition at line 127 of file sch_screen.h.

Referenced by AddLibSymbol(), Append(), clearLibSymbols(), GetLibSymbols(), Remove(), UpdateLocalLibSymbolLinks(), and UpdateSymbolLinks().

◆ m_LocalOrigin

VECTOR2D BASE_SCREEN::m_LocalOrigin
inherited

◆ m_modification_sync

int SCH_SCREEN::m_modification_sync
private

inequality with PART_LIBS::GetModificationHash() will trigger ResolveAll().

Definition at line 120 of file sch_screen.h.

Referenced by Append(), and SCH_SCREEN().

◆ m_NumberOfScreens

◆ m_PageLayoutDescrFileName

◆ m_paper

PAGE_INFO SCH_SCREEN::m_paper
private

The size of the paper to print or plot on.

Definition at line 111 of file sch_screen.h.

Referenced by GetPageSettings(), SCH_SCREEN(), and SetPageSettings().

◆ m_Parent

◆ m_RedoList

UNDO_REDO_CONTAINER BASE_SCREEN::m_RedoList
inherited

◆ m_refCount

int SCH_SCREEN::m_refCount
private

Number of sheets referencing this screen.

Delete when it goes to zero.

Definition at line 99 of file sch_screen.h.

Referenced by DecRefCount(), GetRefCount(), IncRefCount(), and SCH_SCREEN().

◆ m_rtree

EE_RTREE SCH_SCREEN::m_rtree
private

◆ m_ScreenNumber

◆ m_ScrollCenter

VECTOR2D BASE_SCREEN::m_ScrollCenter
inherited

Current scroll center point in logical units.

Definition at line 77 of file base_screen.h.

Referenced by DIALOG_ERC::OnERCItemSelected(), and EDA_DRAW_PANEL_GAL::onPaint().

◆ m_StartVisu

wxPoint BASE_SCREEN::m_StartVisu
inherited

Coordinates in drawing units of the current view position (upper left corner of device)

Definition at line 67 of file base_screen.h.

Referenced by SCH_EDIT_FRAME::DrawCurrentSheetToClipboard(), PLEDITOR_PRINTOUT::PrintPage(), SCH_PRINTOUT::PrintPage(), and DIALOG_FIND::search().

◆ m_Status

STATUS_FLAGS EDA_ITEM::m_Status
protectedinherited

◆ m_symbolInstances

std::vector<COMPONENT_INSTANCE_REFERENCE> SCH_SCREEN::m_symbolInstances
private

The list of symbol instances loaded from the schematic file.

This list is only used to as temporary storage when the schematic file is loaded. If the screen is the root sheet, then this information is used to update the SCH_COMPONENT instance reference and unit information after the entire schematic is loaded and is never used again. If this screen is not the root sheet, then the schematic file is the root sheet of another project and this information is saved unchanged back to the schematic file.

Warning
Under no circumstances is this information to be modified or used after the schematic file is loaded. It is read only and it is only written to non-root schematic files.

Definition at line 143 of file sch_screen.h.

Referenced by SCH_SEXPR_PLUGIN::Format(), GetSymbolInstances(), and SCH_SEXPR_PARSER::parseSchSymbolInstances().

◆ m_titles

TITLE_BLOCK SCH_SCREEN::m_titles
private

Definition at line 113 of file sch_screen.h.

Referenced by Clear(), GetTitleBlock(), and SetTitleBlock().

◆ m_UndoList

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 162 of file base_struct.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_COMPONENT::AddHierarchicalReference(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), DIALOG_LABEL_EDITOR::convertReferencesToKIIDs(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), PAD_TOOL::EditPad(), PCB_EDIT_FRAME::Exchange_Module(), PAD_TOOL::explodePad(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), BOARD::GetItem(), SCH_SHEET::GetMsgPanelInfo(), SCH_REFERENCE::GetPath(), SCH_COMPONENT::GetRef(), SCH_MARKER::GetUUID(), MARKER_PCB::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN::loadComponent(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), LEGACY_PLUGIN::loadTrackList(), NETLIST_EXPORTER_GENERIC::makeComponents(), SCH_EDIT_FRAME::mapExistingAnnotation(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), PCB_PARSER::parseDIMENSION(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_COMPONENT::ReplaceInstanceSheetPath(), SCH_LEGACY_PLUGIN::saveComponent(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_EDIT_FRAME::SaveProject(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_LEGACY_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_COMPONENT::SCH_COMPONENT(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SHEET::SCH_SHEET(), RC_ITEM::SetItems(), SwapItemData(), DIALOG_SCH_SHEET_PROPS::TransferDataToWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataToWindow(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ SCH_EDIT_FRAME

friend SCH_SCREEN::SCH_EDIT_FRAME
private

Definition at line 145 of file sch_screen.h.

◆ SCH_SEXPR_PARSER

friend SCH_SCREEN::SCH_SEXPR_PARSER
private

Definition at line 146 of file sch_screen.h.

◆ SCH_SEXPR_PLUGIN

friend SCH_SCREEN::SCH_SEXPR_PLUGIN
private

Definition at line 147 of file sch_screen.h.


The documentation for this class was generated from the following files: