KiCad PCB EDA Suite
SCH_SCREEN Class Reference

#include <sch_screen.h>

Inheritance diagram for SCH_SCREEN:
BASE_SCREEN EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

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...
 
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...
 
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)
 
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 wxPoint GetPosition () const
 
virtual void SetPosition (const wxPoint &aPos)
 
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 double 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 ()
 
bool Set (PROPERTY_BASE *aProperty, wxAny &aValue)
 
template<typename T >
bool Set (PROPERTY_BASE *aProperty, T aValue)
 
template<typename T >
bool Set (const wxString &aProperty, T aValue)
 
wxAny Get (PROPERTY_BASE *aProperty)
 
template<typename T >
Get (PROPERTY_BASE *aProperty)
 
template<typename T >
boost::optional< T > Get (const wxString &aProperty)
 

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
 
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
 
int m_refCount
 
std::vector< SCH_SHEET_PATHm_clientSheetPathList
 The list of sheet paths sharing this screen. More...
 
PAGE_INFO m_paper
 
TITLE_BLOCK m_titles
 
wxPoint m_aux_origin
 
EE_RTREE m_rtree
 
int m_modification_sync
 
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 69 of file sch_screen.cpp.

69  :
70  BASE_SCREEN( aParent, SCH_SCREEN_T ),
71  m_paper( wxT( "A4" ) )
72 {
74 
75  m_refCount = 0;
76 
77  // Suitable for schematic only. For libedit and viewlib, must be set to true
78  m_Center = false;
79 
80  InitDataPoints( m_paper.GetSizeIU() );
81 }
int m_refCount
Definition: sch_screen.h:99
int m_modification_sync
Definition: sch_screen.h:116
void InitDataPoints(const wxSize &aPageSizeInternalUnits)
Definition: base_screen.cpp:49
PAGE_INFO m_paper
Definition: sch_screen.h:111
bool m_Center
Center on screen.
Definition: base_screen.h:69
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 84 of file sch_screen.cpp.

85 {
87  FreeDrawList();
88 }
void clearLibSymbols()
Definition: sch_screen.cpp:100
void FreeDrawList()
Free all the items from the schematic associated with the screen.
Definition: sch_screen.cpp:217

References clearLibSymbols(), 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 1100 of file sch_screen.cpp.

1101 {
1102  m_aliases.insert( aAlias );
1103 }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:120

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 1082 of file sch_screen.cpp.

1083 {
1084  wxCHECK( aLibSymbol, /* void */ );
1085 
1086  wxString libSymbolName = aLibSymbol->GetLibId().Format().wx_str();
1087 
1088  auto it = m_libSymbols.find( libSymbolName );
1089 
1090  if( it != m_libSymbols.end() )
1091  {
1092  delete it->second;
1093  m_libSymbols.erase( it );
1094  }
1095 
1096  m_libSymbols[libSymbolName] = aLibSymbol;
1097 }
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:123

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 131 of file sch_screen.cpp.

132 {
133  if( aItem->Type() != SCH_SHEET_PIN_T && aItem->Type() != SCH_FIELD_T )
134  {
135  // Ensure the item can reach the SCHEMATIC through this screen
136  aItem->SetParent( this );
137 
138  if( aItem->Type() == SCH_COMPONENT_T )
139  {
140  SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( aItem );
141 
142  if( symbol->GetPartRef() )
143  {
144  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
145 
146  if( it == m_libSymbols.end() )
147  {
149  new LIB_PART( *symbol->GetPartRef() );
150  }
151  else
152  {
153  // The original library symbol may have changed since the last time
154  // it was added to the schematic. If it has changed, then a new name
155  // must be created for the library symbol list to prevent all of the
156  // other schematic symbols referencing that library symbol from changing.
157  LIB_PART* foundSymbol = it->second;
158 
159  if( *foundSymbol != *symbol->GetPartRef() )
160  {
161  int cnt = 1;
162  wxString newName;
163 
164  newName.Printf( "%s_%d", symbol->GetLibId().Format().wx_str(), cnt );
165 
166  while( m_libSymbols.find( newName ) != m_libSymbols.end() )
167  {
168  cnt += 1;
169  newName.Printf( "%s_%d", symbol->GetLibId().Format().wx_str(), cnt );
170  }
171 
172  symbol->SetSchSymbolLibraryName( newName );
173  m_libSymbols[newName] = new LIB_PART( *symbol->GetPartRef() );
174  }
175  }
176  }
177  }
178 
179  m_rtree.insert( aItem );
181  }
182 }
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
Definition: sch_screen.h:116
virtual void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:196
EE_RTREE m_rtree
Definition: sch_screen.h:114
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:80
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:123

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(), CONNECTION_GRAPH::ercCheckFloatingWires(), CONNECTION_GRAPH::ercCheckLabels(), CONNECTION_GRAPH::ercCheckNoConnects(), SCH_LEGACY_PLUGIN::LoadContent(), SCH_EAGLE_PLUGIN::loadInstance(), SCH_EAGLE_PLUGIN::loadSegments(), SCH_EDIT_FRAME::LoadSheetFromFile(), DIALOG_SCH_SHEET_PROPS::onSheetFilenameChanged(), SCH_ALTIUM_PLUGIN::ParseBus(), SCH_ALTIUM_PLUGIN::ParseComponent(), SCH_ALTIUM_PLUGIN::ParseNetLabel(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_ALTIUM_PLUGIN::ParseWire(), SCH_EDITOR_CONTROL::Paste(), DIALOG_CHANGE_SYMBOLS::processSymbol(), SCH_EDIT_TOOL::RefreshSymbolFromLibrary(), CONNECTION_SUBGRAPH::ResolveDrivers(), ERC_TESTER::TestDuplicateSheetNames(), ERC_TESTER::TestMultiunitFootprints(), ERC_TESTER::TestMultUnitPinConflicts(), ERC_TESTER::TestSimilarLabels(), ERC_TESTER::TestTextVars(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), Update(), SCH_EDIT_FRAME::UpdateSymbolFromEditor(), 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 185 of file sch_screen.cpp.

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

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

◆ CheckIfOnDrawList()

bool SCH_SCREEN::CheckIfOnDrawList ( SCH_ITEM st)

Definition at line 306 of file sch_screen.cpp.

307 {
308  return m_rtree.contains( aItem, true );
309 }
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:114

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 170 of file sch_screen.h.

171  {
172  return aItem && SCH_SCREEN_T == aItem->Type();
173  }
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 198 of file sch_screen.cpp.

199 {
200  if( aFree )
201  {
202  FreeDrawList();
203  clearLibSymbols();
204  }
205  else
206  {
207  m_rtree.clear();
208  }
209 
210  // Clear the project settings
212 
213  m_titles.Clear();
214 }
int m_ScreenNumber
Definition: base_screen.h:79
void clearLibSymbols()
Definition: sch_screen.cpp:100
void Clear()
Definition: title_block.h:116
TITLE_BLOCK m_titles
Definition: sch_screen.h:112
EE_RTREE m_rtree
Definition: sch_screen.h:114
void FreeDrawList()
Free all the items from the schematic associated with the screen.
Definition: sch_screen.cpp:217
int m_NumberOfScreens
Definition: base_screen.h:80
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::doCloseWindow(), 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 924 of file sch_screen.cpp.

925 {
926 
927  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
928  {
929  SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
930 
931  component->ClearAnnotation( aSheetPath );
932  }
933 }
EE_RTREE & Items()
Definition: sch_screen.h:158
Schematic symbol object.
Definition: sch_component.h:80
void ClearAnnotation(const SCH_SHEET_PATH *aSheetPath)
Clear exiting component annotation.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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

Referenced by SCH_SCREENS::ClearAnnotationOfNewSheetPaths(), 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 482 of file sch_screen.h.

483  {
484  m_aliases.clear();
485  }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:120

References m_aliases.

◆ ClearDrawingState()

void SCH_SCREEN::ClearDrawingState ( )

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

Definition at line 834 of file sch_screen.cpp.

835 {
836  for( auto item : Items() )
837  item->ClearTempFlags();
838 }
EE_RTREE & Items()
Definition: sch_screen.h:158

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(), SCH_MOVE_TOOL::AlignElements(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), SCH_EDIT_FRAME::ConvertPart(), LIB_EDIT_TOOL::Copy(), LIB_PIN_TOOL::CreateImagePins(), MICROWAVE_TOOL::createMicrowaveInductor(), 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 100 of file sch_screen.cpp.

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

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().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 154 of file view_item.h.

155  {
157  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:162
#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, D_PAD, SCH_SHEET, CENTER_DIMENSION, LEADER, SCH_HIERLABEL, ORTHOGONAL_DIMENSION, VIA, SCH_GLOBALLABEL, ALIGNED_DIMENSION, SCH_LABEL, ARC, DRAWSEGMENT, SCH_TEXT, LIB_PIN, TRACK, TEXTE_MODULE, SCH_LINE, SCH_BUS_BUS_ENTRY, SCH_SHEET_PIN, SCH_FIELD, LIB_FIELD, SCH_BUS_WIRE_ENTRY, EDGE_MODULE, SCH_BITMAP, TEXTE_PCB, LIB_ARC, PCB_GROUP, SCH_NO_CONNECT, LIB_POLYLINE, SCH_JUNCTION, SCH_MARKER, LIB_TEXT, PCB_TARGET, LIB_CIRCLE, LIB_BEZIER, LIB_RECTANGLE, and KIGFX::ORIGIN_VIEWITEM.

Definition at line 105 of file base_struct.cpp.

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

References EDA_ITEM::GetClass(), and NULL.

Referenced by DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), 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(), CLIPBOARD_IO::SaveSelection(), 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 103 of file base_screen.h.

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

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 910 of file sch_screen.cpp.

911 {
912  size_t count = 0;
913 
914  for( SCH_ITEM* item : Items() )
915  {
916  if( ( item->Type() != SCH_JUNCTION_T || aTestJunctions ) && item->IsConnected( aPos ) )
917  count++;
918  }
919 
920  return count;
921 }
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

References Items(), and SCH_JUNCTION_T.

◆ DecRefCount()

void SCH_SCREEN::DecRefCount ( )

Definition at line 115 of file sch_screen.cpp.

116 {
117  wxCHECK_RET( m_refCount != 0,
118  wxT( "Screen reference count already zero. Bad programmer!" ) );
119  m_refCount--;
120 }
int m_refCount
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 281 of file sch_screen.cpp.

282 {
283  wxCHECK_RET( aItem, wxT( "Cannot delete invalid item from screen." ) );
284 
285  // Markers are not saved in the file, no need to flag as modified.
286  // TODO: Maybe we should have a listing somewhere of items that aren't saved?
287  if( aItem->Type() != SCH_MARKER_T )
288  SetModify();
289 
290  Remove( aItem );
291 
292  if( aItem->Type() == SCH_SHEET_PIN_T )
293  {
294  // This structure is attached to a sheet, get the parent sheet object.
295  SCH_SHEET_PIN* sheetPin = (SCH_SHEET_PIN*) aItem;
296  SCH_SHEET* sheet = sheetPin->GetParent();
297  wxCHECK_RET( sheet, wxT( "Sheet label parent not properly set, bad programmer!" ) );
298  sheet->RemovePin( sheetPin );
299  return;
300  }
301 
302  delete aItem;
303 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:243
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:289
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:100
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193

References SCH_SHEET_PIN::GetParent(), Remove(), SCH_SHEET::RemovePin(), SCH_MARKER_T, 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 936 of file sch_screen.cpp.

937 {
938  if( GetClientSheetPaths().size() <= 1 ) // No need for alternate reference
939  return;
940 
941  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
942  {
943  SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
944 
945  // Add (when not existing) all sheet path entries
946  for( const SCH_SHEET_PATH& sheet : GetClientSheetPaths() )
947  component->AddSheetPathReferenceEntryIfMissing( sheet.Path() );
948  }
949 }
SCH_SHEET_PATH.
EE_RTREE & Items()
Definition: sch_screen.h:158
Schematic symbol object.
Definition: sch_component.h:80
std::vector< SCH_SHEET_PATH > & GetClientSheetPaths()
Definition: sch_screen.h:205
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194
bool AddSheetPathReferenceEntryIfMissing(const KIID_PATH &aSheetPath)
Add an instance to the alternate references list (m_instanceReferences), if this entry does not alrea...

References SCH_COMPONENT::AddSheetPathReferenceEntryIfMissing(), GetClientSheetPaths(), Items(), and SCH_COMPONENT_T.

Referenced by SCH_SCREENS::ClearAnnotationOfNewSheetPaths().

◆ 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 217 of file sch_screen.cpp.

218 {
219  // We don't know which order we will encounter dependent items (e.g. pins or fields), so
220  // we store the items to be deleted until we've fully cleared the tree before deleting
221  std::vector<SCH_ITEM*> delete_list;
222 
223  std::copy_if( m_rtree.begin(), m_rtree.end(), std::back_inserter( delete_list ),
224  []( SCH_ITEM* aItem )
225  {
226  return ( aItem->Type() != SCH_SHEET_PIN_T && aItem->Type() != SCH_FIELD_T );
227  } );
228 
229  m_rtree.clear();
230 
231  for( auto item : delete_list )
232  delete item;
233 }
iterator end()
Definition: sch_rtree.h:253
EE_RTREE m_rtree
Definition: sch_screen.h:114
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:194
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().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 84 of file inspectable.h.

85  {
87  TYPE_ID thisType = TYPE_HASH( *this );
88  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
89  return object ? aProperty->getter( object ) : wxAny();
90  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
virtual wxAny getter(void *aObject) const =0
Provides class metadata.
Definition: property_mgr.h:58
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_BASE::getter(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

Referenced by CLASS_D_DESC::CLASS_D_DESC(), PCB_EXPR_VAR_REF::GetValue(), and PAD_DESC::PAD_DESC().

◆ Get() [2/3]

template<typename T >
T INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 93 of file inspectable.h.

94  {
96  TYPE_ID thisType = TYPE_HASH( *this );
97  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
98  return object ? aProperty->get<T>( object ) : T();
99  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
Provides class metadata.
Definition: property_mgr.h:58
T get(void *aObject)
Definition: property.h:273
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Get() [3/3]

template<typename T >
boost::optional<T> INSPECTABLE::Get ( const wxString &  aProperty)
inlineinherited

Definition at line 102 of file inspectable.h.

103  {
105  TYPE_ID thisType = TYPE_HASH( *this );
106  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
107  boost::optional<T> ret;
108 
109  if( prop )
110  {
111  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
112 
113  if( object )
114  ret = prop->get<T>( object );
115  }
116 
117  return ret;
118  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Returns a property for a specific type.
Provides class metadata.
Definition: property_mgr.h:58
T get(void *aObject)
Definition: property.h:273
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ GetAuxOrigin()

const wxPoint& SCH_SCREEN::GetAuxOrigin ( ) const
inline

Definition at line 187 of file sch_screen.h.

187 { return m_aux_origin; }
wxPoint m_aux_origin
Definition: sch_screen.h:113

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, CENTER_DIMENSION, SCH_HIERLABEL, SCH_SHEET, SCH_GLOBALLABEL, SCH_COMPONENT, SCH_LABEL, WS_DRAW_ITEM_BITMAP, WS_DRAW_ITEM_TEXT, DRAWSEGMENT, SCH_TEXT, WS_DRAW_ITEM_PAGE, DIMENSION, GERBER_DRAW_ITEM, LIB_PART, WS_DRAW_ITEM_RECT, LIB_PIN, LIB_ITEM, TEXTE_MODULE, WS_DRAW_ITEM_POLYPOLYGONS, MODULE, LIB_FIELD, PCB_GROUP, SCH_LINE, WS_DRAW_ITEM_LINE, TEXTE_PCB, TRACK, SCH_FIELD, ZONE_CONTAINER, SCH_BITMAP, WS_DRAW_ITEM_BASE, MARKER_PCB, PCB_TARGET, 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 97 of file base_struct.cpp.

98 {
99  // return a zero-sized box per default. derived classes should override
100  // this
101  return EDA_RECT( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
102 }
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(), SCH_MOVE_TOOL::getConnectedDragItems(), getRect(), EE_SELECTION_TOOL::GuessSelectionCandidates(), EE_RTREE::insert(), SCH_EDIT_TOOL::Mirror(), SCH_EAGLE_PLUGIN::moveLabels(), EE_RTREE::remove(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testCopperDrawItem(), 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 439 of file sch_screen.h.

441  {
442  return GetLine( aPosition, aAccuracy, LAYER_BUS, aSearchType );
443  }
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 490 of file sch_screen.h.

491  {
492  return m_aliases;
493  }
std::unordered_set< std::shared_ptr< BUS_ALIAS > > m_aliases
List of bus aliases stored in this screen.
Definition: sch_screen.h:120

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 175 of file sch_screen.h.

176  {
177  return wxT( "SCH_SCREEN" );
178  }

◆ 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 205 of file sch_screen.h.

206  {
207  return m_clientSheetPathList;
208  }
std::vector< SCH_SHEET_PATH > m_clientSheetPathList
The list of sheet paths sharing this screen.
Definition: sch_screen.h:108

References m_clientSheetPathList.

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

◆ 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(), LIB_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithLibEdit(), SCH_COMPONENT::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), 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_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::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 345 of file base_struct.h.

345 { return GetPosition(); }
virtual 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 952 of file sch_screen.cpp.

953 {
954  for( SCH_ITEM* item : Items() )
955  {
956  if( ( item->Type() == SCH_SHEET_T ) || ( item->Type() == SCH_COMPONENT_T ) )
957  aItems->push_back( item );
958  }
959 }
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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 312 of file sch_screen.cpp.

313 {
314  EDA_RECT bbox;
315  bbox.SetOrigin( aPosition );
316  bbox.Inflate( aAccuracy );
317 
318  for( auto item : Items().Overlapping( aType, bbox ) )
319  {
320  if( item->HitTest( aPosition, aAccuracy ) )
321  return item;
322  }
323 
324  return nullptr;
325 }
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
EE_RTREE & Items()
Definition: sch_screen.h:158
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 1059 of file sch_screen.cpp.

1060 {
1061  for( SCH_ITEM* item : Items().Overlapping( aPosition, aAccuracy ) )
1062  {
1063  switch( item->Type() )
1064  {
1065  case SCH_LABEL_T:
1066  case SCH_GLOBAL_LABEL_T:
1067  case SCH_HIER_LABEL_T:
1068  if( item->HitTest( aPosition, aAccuracy ) )
1069  return (SCH_TEXT*) item;
1070 
1071  break;
1072 
1073  default:
1074  ;
1075  }
1076  }
1077 
1078  return NULL;
1079 }
#define NULL
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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 461 of file sch_screen.h.

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

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 1022 of file sch_screen.cpp.

1024 {
1025  // an accuracy of 0 had problems with rounding errors; use at least 1
1026  aAccuracy = std::max( aAccuracy, 1 );
1027 
1028  for( SCH_ITEM* item : Items() )
1029  {
1030  if( item->Type() != SCH_LINE_T )
1031  continue;
1032 
1033  if( item->GetLayer() != aLayer )
1034  continue;
1035 
1036  if( !item->HitTest( aPosition, aAccuracy ) )
1037  continue;
1038 
1039  switch( aSearchType )
1040  {
1041  case ENTIRE_LENGTH_T:
1042  return (SCH_LINE*) item;
1043 
1044  case EXCLUDE_END_POINTS_T:
1045  if( !( (SCH_LINE*) item )->IsEndPoint( aPosition ) )
1046  return (SCH_LINE*) item;
1047  break;
1048 
1049  case END_POINTS_ONLY_T:
1050  if( ( (SCH_LINE*) item )->IsEndPoint( aPosition ) )
1051  return (SCH_LINE*) item;
1052  }
1053  }
1054 
1055  return NULL;
1056 }
#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:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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

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

◆ 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, D_PAD, SCH_SHEET, CENTER_DIMENSION, LEADER, SCH_HIERLABEL, ORTHOGONAL_DIMENSION, VIA, SCH_GLOBALLABEL, ALIGNED_DIMENSION, SCH_LABEL, DRAWSEGMENT, SCH_TEXT, GERBER_DRAW_ITEM, LIB_PIN, TRACK, TEXTE_MODULE, SCH_BUS_BUS_ENTRY, SCH_LINE, SCH_SHEET_PIN, LIB_FIELD, SCH_FIELD, PCB_GROUP, 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, LIB_CIRCLE, LIB_RECTANGLE, and MARKER_PCB.

Definition at line 230 of file base_struct.cpp.

231 {
232  return dummy_xpm;
233 }
static const BITMAP_OPAQUE dummy_xpm[1]
Definition: base_struct.cpp:56

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 841 of file sch_screen.cpp.

843 {
844  SCH_COMPONENT* component = NULL;
845  LIB_PIN* pin = NULL;
846 
847  for( SCH_ITEM* item : Items().Overlapping( SCH_COMPONENT_T, aPosition ) )
848  {
849  component = static_cast<SCH_COMPONENT*>( item );
850 
851  if( aEndPointOnly )
852  {
853  pin = NULL;
854 
855  if( !component->GetPartRef() )
856  continue;
857 
858  for( pin = component->GetPartRef()->GetNextPin(); pin;
859  pin = component->GetPartRef()->GetNextPin( pin ) )
860  {
861  // Skip items not used for this part.
862  if( component->GetUnit() && pin->GetUnit() &&
863  ( pin->GetUnit() != component->GetUnit() ) )
864  continue;
865 
866  if( component->GetConvert() && pin->GetConvert() &&
867  ( pin->GetConvert() != component->GetConvert() ) )
868  continue;
869 
870  if(component->GetPinPhysicalPosition( pin ) == aPosition )
871  break;
872  }
873  if( pin )
874  break;
875  }
876  else
877  {
878  pin = (LIB_PIN*) component->GetDrawItem( aPosition, LIB_PIN_T );
879 
880  if( pin )
881  break;
882  }
883  }
884 
885  if( pin && aComponent )
886  *aComponent = component;
887 
888  return pin;
889 }
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:158
Schematic symbol object.
Definition: sch_component.h:80
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:194

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 wxPoint EDA_ITEM::GetPosition ( ) const
inlinevirtualinherited

Reimplemented in SCH_COMPONENT, SCH_SHEET, DELETED_BOARD_ITEM, VIA, WS_DRAW_ITEM_BITMAP, SCH_TEXT, ARC, WS_DRAW_ITEM_TEXT, BOARD, WS_DRAW_ITEM_PAGE, LIB_PIN, MODULE, WS_DRAW_ITEM_RECT, SCH_LINE, GERBER_DRAW_ITEM, SCH_FIELD, LIB_FIELD, WS_DRAW_ITEM_POLYPOLYGONS, D_PAD, SCH_BITMAP, WS_DRAW_ITEM_LINE, DIMENSION, DRAWSEGMENT, SCH_BUS_ENTRY_BASE, SCH_NO_CONNECT, TRACK, NETINFO_ITEM, PCB_GROUP, SCH_MARKER, KIGFX::ORIGIN_VIEWITEM, TEXTE_MODULE, SCH_JUNCTION, LIB_POLYLINE, ZONE_CONTAINER, LIB_ARC, SCH_PIN, LIB_TEXT, 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 EE_GRID_HELPER::computeAnchors(), 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(), BOARD_ITEM::GetX(), BOARD_ITEM::GetY(), 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(), BACK_ANNOTATE::processNetNameChange(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_EDIT_TOOL::Rotate(), SCH_EDIT_TOOL::Rotate(), SELECTION_TOOL::selectConnectedTracks(), RC_ITEM::ShowReport(), TransformItem(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), LIB_MOVE_TOOL::updateModificationPoint(), PL_EDIT_TOOL::updateModificationPoint(), and EE_POINT_EDITOR::updatePoints().

◆ GetRefCount()

int SCH_SCREEN::GetRefCount ( ) const
inline

Definition at line 196 of file sch_screen.h.

196 { return m_refCount; }
int m_refCount
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, MODULE, D_PAD, BOARD, SCH_SHEET, SCH_HIERLABEL, VIA, DELETED_BOARD_ITEM, SCH_GLOBALLABEL, SCH_LABEL, WS_DRAW_ITEM_BITMAP, DRAWSEGMENT, SCH_TEXT, WS_DRAW_ITEM_TEXT, GERBER_DRAW_ITEM, LIB_PIN, WS_DRAW_ITEM_PAGE, DIMENSION, WS_DRAW_ITEM_RECT, TRACK, TEXTE_MODULE, SCH_BUS_BUS_ENTRY, SCH_LINE, SCH_SHEET_PIN, LIB_FIELD, WS_DRAW_ITEM_POLYPOLYGONS, SCH_FIELD, PCB_GROUP, SCH_BUS_WIRE_ENTRY, EDGE_MODULE, WS_DRAW_ITEM_LINE, LIB_ARC, TEXTE_PCB, SCH_BITMAP, LIB_POLYLINE, SCH_NO_CONNECT, LIB_TEXT, PCB_TARGET, SCH_MARKER, LIB_CIRCLE, LIB_RECTANGLE, MARKER_PCB, SCH_JUNCTION, SCH_PIN, and DELETED_SHEET_ITEM.

Definition at line 131 of file base_struct.cpp.

132 {
133  wxFAIL_MSG( wxT( "GetSelectMenuText() was not overridden for schematic item type " ) +
134  GetClass() );
135 
136  return wxString( wxT( "Undefined menu text for " ) + GetClass() );
137 }
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(), DRC_ENGINE::EvalRulesForItems(), MARKER_PCB::GetMsgPanelInfo(), RC_TREE_MODEL::GetValue(), BOARD::GroupsSanityCheckInternal(), SELECTION_TOOL::highlightInternal(), PCB_INSPECTION_TOOL::InspectClearance(), RC_ITEM::ShowReport(), SELECTION_TOOL::unhighlightInternal(), 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 892 of file sch_screen.cpp.

893 {
894  SCH_SHEET_PIN* sheetPin = nullptr;
895 
896  for( SCH_ITEM* item : Items().OfType( SCH_SHEET_T ) )
897  {
898  auto sheet = static_cast<SCH_SHEET*>( item );
899 
900  sheetPin = sheet->GetPin( aPosition );
901 
902  if( sheetPin )
903  break;
904  }
905 
906  return sheetPin;
907 }
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:84
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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 962 of file sch_screen.cpp.

963 {
964  for( SCH_ITEM* item : Items().OfType( SCH_SHEET_T ) )
965  aItems->push_back( item );
966 
967  std::sort( aItems->begin(), aItems->end(),
968  []( EDA_ITEM* a, EDA_ITEM* b ) -> bool
969  {
970  long a_order = 0;
971  long b_order = 0;
972 
973  for( const SCH_FIELD& field : static_cast<SCH_SHEET*>( a )->GetFields() )
974  {
975  if( field.GetName().CmpNoCase( wxT( "Order" ) ) == 0 )
976  {
977  field.GetText().ToLong( &a_order );
978  break;
979  }
980  }
981 
982  for( const SCH_FIELD& field : static_cast<SCH_SHEET*>( b )->GetFields() )
983  {
984  if( field.GetName().CmpNoCase( wxT( "Order" ) ) == 0 )
985  {
986  field.GetText().ToLong( &b_order );
987  break;
988  }
989  }
990 
991  if( a_order == b_order )
992  {
993  if( a->GetPosition().x == b->GetPosition().x )
994  return a->GetPosition().y < b->GetPosition().y;
995 
996  return a->GetPosition().x < b->GetPosition().x;
997  }
998 
999  return a_order < b_order;
1000  } );
1001 }
SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
virtual wxPoint GetPosition() const
Definition: base_struct.h:337
EE_RTREE & Items()
Definition: sch_screen.h:158
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:194

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.

◆ GetSymbolInstances()

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

Definition at line 495 of file sch_screen.h.

496  {
497  return m_symbolInstances;
498  }
std::vector< COMPONENT_INSTANCE_REFERENCE > m_symbolInstances
The list of symbol instances loaded from the schematic file.
Definition: sch_screen.h:139

References m_symbolInstances.

Referenced by TEST_NETLISTS_FIXTURE::loadSchematic().

◆ GetTitleBlock()

const TITLE_BLOCK& SCH_SCREEN::GetTitleBlock ( ) const
inline

◆ GetWire()

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

Definition at line 433 of file sch_screen.h.

435  {
436  return GetLine( aPosition, aAccuracy, LAYER_WIRE, aSearchType );
437  }
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 123 of file sch_screen.cpp.

124 {
125  EE_RTREE::EE_TYPE sheets = const_cast<EE_RTREE&>( m_rtree ).OfType( aItemType );
126 
127  return sheets.begin() != sheets.end();
128 }
EE_RTREE m_rtree
Definition: sch_screen.h:114
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 168 of file sch_screen.h.

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

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, ZONE_CONTAINER, VIA, WS_DRAW_ITEM_BITMAP, SCH_TEXT, ARC, WS_DRAW_ITEM_TEXT, DRAWSEGMENT, GERBER_DRAW_ITEM, DIMENSION, SCH_LINE, LIB_PIN, TEXTE_MODULE, TRACK, LIB_ITEM, SCH_FIELD, WS_DRAW_ITEM_POLYPOLYGONS, SCH_BITMAP, PCB_GROUP, 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 109 of file sch_screen.cpp.

110 {
111  m_refCount++;
112 }
int m_refCount
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 49 of file base_screen.cpp.

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

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()

◆ 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 161 of file sch_screen.h.

162  {
163  return m_rtree.empty();
164  }
bool empty()
Definition: sch_rtree.h:166
EE_RTREE m_rtree
Definition: sch_screen.h:114

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 373 of file sch_screen.cpp.

374 {
375  enum { WIRES, BUSES } layers;
376 
377  bool has_nonparallel[ sizeof( layers ) ] = { false };
378  int end_count[ sizeof( layers ) ] = { 0 };
379  int entry_count = 0;
380  int pin_count = 0;
381 
382  std::vector<SCH_LINE*> lines[ sizeof( layers ) ];
383 
384  for( SCH_ITEM* item : Items().Overlapping( aPosition ) )
385  {
386  if( item->GetEditFlags() & STRUCT_DELETED )
387  continue;
388 
389  switch( item->Type() )
390  {
391  case SCH_JUNCTION_T:
392  if( aNew && item->HitTest( aPosition ) )
393  return false;
394 
395  break;
396 
397  case SCH_LINE_T:
398  if( item->HitTest( aPosition, 0 ) )
399  {
400  if( item->GetLayer() == LAYER_WIRE )
401  lines[WIRES].push_back( (SCH_LINE*) item );
402  else if( item->GetLayer() == LAYER_BUS )
403  lines[BUSES].push_back( (SCH_LINE*) item );
404  }
405  break;
406 
408  case SCH_BUS_BUS_ENTRY_T:
409  if( item->IsConnected( aPosition ) )
410  entry_count++;
411 
412  break;
413 
414  case SCH_COMPONENT_T:
415  case SCH_SHEET_T:
416  if( item->IsConnected( aPosition ) )
417  pin_count++;
418 
419  break;
420 
421  default:
422  break;
423  }
424  }
425 
426  for( int i : { WIRES, BUSES } )
427  {
428  bool removed_overlapping = false;
429  bool mid_point = false;
430 
431  for( auto line = lines[i].begin(); line < lines[i].end(); line++ )
432  {
433  if( !(*line)->IsEndPoint( aPosition ) )
434  mid_point = true;
435  else
436  end_count[i]++;
437 
438  for( auto second_line = lines[i].end() - 1; second_line > line; second_line-- )
439  {
440  if( !(*line)->IsParallel( *second_line ) )
441  has_nonparallel[i] = true;
442  else if( !removed_overlapping
443  && (*line)->IsSameQuadrant( *second_line, aPosition ) )
444  {
445  removed_overlapping = true;
446  }
447  }
448  }
449 
453  if( mid_point )
454  end_count[i] += 2;
455 
458  if( removed_overlapping )
459  end_count[i]--;
460  }
461 
462  // If there are three or more endpoints
463  if( pin_count && pin_count + end_count[WIRES] > 2 )
464  return true;
465 
466  // If there is at least one segment that ends on a non-parallel line or
467  // junction of two other lines
468  if( has_nonparallel[WIRES] && end_count[WIRES] > 2 )
469  return true;
470 
471  // Check for bus - bus junction requirements
472  if( has_nonparallel[BUSES] && end_count[BUSES] > 2 )
473  return true;
474 
475  // Check for bus - bus entry requirements
476  if( !aNew && entry_count && end_count[BUSES] )
477  return true;
478 
479  return false;
480 }
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:158
boost::ptr_vector< WIRE > WIRES
Definition: specctra.h:2950
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

References Items(), LAYER_BUS, LAYER_WIRE, EE_RTREE::Overlapping(), SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, 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_EDIT_FRAME::FixupJunctions(), 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()

◆ 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 502 of file base_struct.h.

502 { 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 105 of file base_screen.h.

105 { return m_FlagSave; }
bool m_FlagSave
Indicates automatic file save.
Definition: base_screen.h:47

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 483 of file sch_screen.cpp.

484 {
485  wxCHECK_MSG( aLayer == LAYER_NOTES || aLayer == LAYER_BUS || aLayer == LAYER_WIRE, false,
486  wxT( "Invalid layer type passed to SCH_SCREEN::IsTerminalPoint()." ) );
487 
488  SCH_SHEET_PIN* label;
489  SCH_TEXT* text;
490  SCH_CONNECTION conn;
491 
492  switch( aLayer )
493  {
494  case LAYER_BUS:
495 
496  if( GetBus( aPosition ) )
497  return true;
498 
499  label = GetSheetLabel( aPosition );
500 
501  if( label && conn.MightBeBusLabel( label->GetText() ) && label->IsConnected( aPosition ) )
502  return true;
503 
504  text = GetLabel( aPosition );
505 
506  if( text && conn.MightBeBusLabel( text->GetText() ) && text->IsConnected( aPosition )
507  && (text->Type() != SCH_LABEL_T) )
508  return true;
509 
510  break;
511 
512  case LAYER_NOTES:
513 
514  if( GetLine( aPosition ) )
515  return true;
516 
517  break;
518 
519  case LAYER_WIRE:
520  if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_WIRE_ENTRY_T) )
521  return true;
522 
523  if( GetItem( aPosition, Mils2iu( 6 ), SCH_BUS_BUS_ENTRY_T) )
524  return true;
525 
526  if( GetItem( aPosition, Schematic()->Settings().m_JunctionSize, SCH_JUNCTION_T ) )
527  return true;
528 
529  if( GetPin( aPosition, NULL, true ) )
530  return true;
531 
532  if( GetWire( aPosition ) )
533  return true;
534 
535  text = GetLabel( aPosition );
536 
537  if( text && text->IsConnected( aPosition ) && !conn.MightBeBusLabel( text->GetText() ) )
538  return true;
539 
540  label = GetSheetLabel( aPosition );
541 
542  if( label && label->IsConnected( aPosition ) && !conn.MightBeBusLabel( label->GetText() ) )
543  return true;
544 
545  break;
546 
547  default:
548  break;
549  }
550 
551  return false;
552 }
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:841
static bool MightBeBusLabel(const wxString &aLabel)
Test if aLabel looks like a bus notation.
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:124
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:892
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:433
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:91
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:312
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:127
bool IsConnected(const wxPoint &aPoint) const
Test the item to see if it is connected to aPoint.
Definition: sch_item.cpp:141
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:439

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 VIA, SCH_LABEL, 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 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(), SCH_LABEL::IsType(), VIA::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 158 of file sch_screen.h.

158 { return m_rtree; }
EE_RTREE m_rtree
Definition: sch_screen.h:114

References m_rtree.

Referenced by SCH_SHEET_LIST::AnnotatePowerSymbols(), SCH_EDIT_FRAME::BreakSegments(), SCH_EDIT_FRAME::BreakSegmentsOnJunctions(), SCH_SCREENS::buildScreenList(), SCH_SCREENS::ChangeSymbolLibNickname(), SCH_SHEET::CleanupSheet(), ClearAnnotation(), ClearDrawingState(), EE_COLLECTOR::Collect(), SCH_SHEET::ComponentCount(), CountConnectedItems(), SCH_SHEET::CountSheets(), SCH_EDIT_FRAME::DeleteAnnotation(), SCH_EDIT_FRAME::DeleteJunction(), DIALOG_UPDATE_FIELDS::DIALOG_UPDATE_FIELDS(), KIGFX::SCH_VIEW::DisplaySheet(), EnsureAlternateReferencesExist(), CONNECTION_GRAPH::ercCheckHierSheets(), SCH_SHEET_LIST::FillItemMap(), SCH_EDITOR_CONTROL::FindComponentAndItem(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), SCH_EDIT_FRAME::FixupJunctions(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), AUTOPLACER::get_possible_colliders(), SCH_MOVE_TOOL::getConnectedDragItems(), GetHierarchicalItems(), GetItem(), SCH_SHEET_LIST::GetItem(), KIGFX::SCH_VIEW::GetItemsExtents(), GetLabel(), GetLine(), GetPin(), getSheetBbox(), GetSheetLabel(), SCH_LINE_WIRE_BUS_TOOL::getSheetPin(), GetSheets(), SCH_SCREENS::HasNoFullyDefinedLibIds(), SCH_SHEET::HasUndefinedPins(), SCH_EDIT_FRAME::ImportHierLabel(), SCH_EDIT_TOOL::Init(), 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(), DIALOG_CHANGE_SYMBOLS::processMatchingSymbols(), NETLIST_EXPORTER_PSPICE::ProcessNetlist(), BACK_ANNOTATE::processNetNameChange(), EE_SELECTION_TOOL::RebuildSelection(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), Remove(), SCH_SHEET_LIST::ReplaceLegacySheetPaths(), SCH_EDIT_FRAME::SaveProject(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SHEET::SearchHierarchy(), SCH_EDIT_FRAME::setupUIConditions(), TestDanglingEnds(), ERC_TESTER::TestDuplicateSheetNames(), DIALOG_ERC::testErc(), ERC_TESTER::TestTextVars(), DIALOG_SCH_SHEET_PROPS::TransferDataFromWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataFromWindow(), DIALOG_EDIT_SHEET_PIN::TransferDataToWindow(), SCH_EDIT_FRAME::TrimWire(), SCH_EDITOR_CONTROL::UpdateFind(), UpdateLocalLibSymbolLinks(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), SCH_EDITOR_CONTROL::updatePastedInstances(), UpdateSymbolLinks(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ Items() [2/2]

const EE_RTREE& SCH_SCREEN::Items ( ) const
inline

Definition at line 159 of file sch_screen.h.

159 { return m_rtree; }
EE_RTREE m_rtree
Definition: sch_screen.h:114

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 384 of file base_struct.h.

388  {
389  for( auto it : aList )
390  {
391  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
393  return SEARCH_RESULT::QUIT;
394  }
395 
397  }
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().

◆ 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 405 of file base_struct.h.

407  {
408  for( auto it : aList )
409  {
410  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
412  return SEARCH_RESULT::QUIT;
413  }
414 
416  }
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 328 of file sch_screen.cpp.

329 {
330  std::set<SCH_ITEM*> retval;
331  std::stack<SCH_LINE*> to_search;
332 
333  wxCHECK_MSG( aSegment && aSegment->Type() == SCH_LINE_T, retval, wxT( "Invalid pointer." ) );
334 
335  to_search.push( aSegment );
336 
337  while( !to_search.empty() )
338  {
339  SCH_LINE* test_item = to_search.top();
340  to_search.pop();
341 
342  for( SCH_ITEM* item : Items().Overlapping( SCH_JUNCTION_T, test_item->GetBoundingBox() ) )
343  {
344  if( test_item->IsEndPoint( item->GetPosition() ) )
345  retval.insert( item );
346  }
347 
348  for( SCH_ITEM* item : Items().Overlapping( SCH_LINE_T, test_item->GetBoundingBox() ) )
349  {
350  // Skip connecting lines on different layers (e.g. buses)
351  if( test_item->GetLayer() != item->GetLayer() )
352  continue;
353 
354  SCH_LINE* line = static_cast<SCH_LINE*>( item );
355 
356  if( ( test_item->IsEndPoint( line->GetStartPoint() )
357  && !GetPin( line->GetStartPoint(), NULL, true ) )
358  || ( test_item->IsEndPoint( line->GetEndPoint() )
359  && !GetPin( line->GetEndPoint(), nullptr, true ) ) )
360  {
361  auto result = retval.insert( line );
362 
363  if( result.second )
364  to_search.push( line );
365  }
366  }
367  }
368 
369  return retval;
370 }
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:841
wxPoint GetStartPoint() const
Definition: sch_line.h:94
#define NULL
bool IsEndPoint(const wxPoint &aPoint) const
Definition: sch_line.h:87
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:279
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:158
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
Definition: sch_line.cpp:164
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194
KICAD_T Type() const
Function Type()
Definition: base_struct.h:193
wxPoint GetEndPoint() const
Definition: sch_line.h:97

References SCH_LINE::GetBoundingBox(), SCH_LINE::GetEndPoint(), SCH_ITEM::GetLayer(), GetPin(), SCH_LINE::GetStartPoint(), SCH_LINE::IsEndPoint(), 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, SCH_PIN, TEXTE_MODULE, SCH_MARKER, MARKER_PCB, and TEXTE_PCB.

Definition at line 458 of file base_struct.h.

459  {
460  return false;
461  }

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

◆ 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 140 of file base_struct.cpp.

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

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 194 of file base_struct.cpp.

195 {
196  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
197  GetChars( GetClass() ) ) );
198 
199  return false;
200 }
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:201

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

◆ Place()

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

Definition at line 247 of file sch_screen.h.

247 { };

◆ 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 781 of file sch_screen.cpp.

782 {
783  // Ensure links are up to date, even if a library was reloaded for some reason:
784  std::vector< SCH_ITEM* > junctions;
785  std::vector< SCH_ITEM* > bitmaps;
786  std::vector< SCH_ITEM* > other;
787 
788  for( auto item : Items() )
789  {
790  if( item->IsMoving() || item->IsResized() )
791  continue;
792 
793  if( item->Type() == SCH_JUNCTION_T )
794  junctions.push_back( item );
795  else if( item->Type() == SCH_BITMAP_T )
796  bitmaps.push_back( item );
797  else
798  other.push_back( item );
799  }
800 
802  std::sort( other.begin(), other.end(), []( const SCH_ITEM* a, const SCH_ITEM* b ) {
803  if( a->Type() == b->Type() )
804  return a->GetLayer() > b->GetLayer();
805 
806  return a->Type() > b->Type();
807  } );
808 
809  int defaultPenWidth = aPlotter->RenderSettings()->GetDefaultPenWidth();
810 
811  // Bitmaps are drawn first to ensure they are in the background
812  // This is particularly important for the wxPostscriptDC (used in *nix printers) as
813  // the bitmap PS command clears the screen
814  for( SCH_ITEM* item : bitmaps )
815  {
816  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
817  item->Plot( aPlotter );
818  }
819 
820  for( SCH_ITEM* item : other )
821  {
822  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
823  item->Plot( aPlotter );
824  }
825 
826  for( SCH_ITEM* item : junctions )
827  {
828  aPlotter->SetCurrentLineWidth( std::max( item->GetPenWidth(), defaultPenWidth ) );
829  item->Plot( aPlotter );
830  }
831 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:279
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:147
EE_RTREE & Items()
Definition: sch_screen.h:158
int GetDefaultPenWidth() const
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194
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().

◆ 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 740 of file sch_screen.cpp.

741 {
742  // Ensure links are up to date, even if a library was reloaded for some reason:
743  std::vector< SCH_ITEM* > junctions;
744  std::vector<SCH_ITEM*> bitmaps;
745  std::vector<SCH_ITEM*> other;
746 
747  for( auto item : Items() )
748  {
749  if( item->IsMoving() || item->IsResized() )
750  continue;
751 
752  if( item->Type() == SCH_JUNCTION_T )
753  junctions.push_back( item );
754  else if( item->Type() == SCH_BITMAP_T )
755  bitmaps.push_back( item );
756  else
757  other.push_back( item );
758  }
759 
761  std::sort( other.begin(), other.end(),
762  []( const SCH_ITEM* a, const SCH_ITEM* b )
763  {
764  if( a->Type() == b->Type() )
765  return a->GetLayer() > b->GetLayer();
766 
767  return a->Type() > b->Type();
768  } );
769 
770  for( auto item : bitmaps )
771  item->Print( aSettings, wxPoint( 0, 0 ) );
772 
773  for( auto item : other )
774  item->Print( aSettings, wxPoint( 0, 0 ) );
775 
776  for( auto item : junctions )
777  item->Print( aSettings, wxPoint( 0, 0 ) );
778 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:279
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194
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().

◆ 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 243 of file sch_screen.cpp.

244 {
245  bool retv = m_rtree.remove( aItem );
246 
247  // Check if the library symbol for the removed schematic symbol is still required.
248  if( retv && aItem->Type() == SCH_COMPONENT_T )
249  {
250  SCH_COMPONENT* removedSymbol = static_cast<SCH_COMPONENT*>( aItem );
251 
252  bool removeUnusedLibSymbol = true;
253 
254  for( SCH_ITEM* item : Items().OfType( SCH_COMPONENT_T ) )
255  {
256  SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
257 
258  if( removedSymbol->GetSchSymbolLibraryName() == symbol->GetSchSymbolLibraryName() )
259  {
260  removeUnusedLibSymbol = false;
261  break;
262  }
263  }
264 
265  if( removeUnusedLibSymbol )
266  {
267  auto it = m_libSymbols.find( removedSymbol->GetSchSymbolLibraryName() );
268 
269  if( it != m_libSymbols.end() )
270  {
271  delete it->second;
272  m_libSymbols.erase( it );
273  }
274  }
275  }
276 
277  return retv;
278 }
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:114
EE_RTREE & Items()
Definition: sch_screen.h:158
Schematic symbol object.
Definition: sch_component.h:80
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194
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:123

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_CHANGE_SYMBOLS::processSymbol(), SCH_EDIT_TOOL::RefreshSymbolFromLibrary(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), Update(), SCH_EDIT_FRAME::UpdateSymbolFromEditor(), 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 167 of file base_struct.cpp.

168 {
169  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
170 
171  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
172  aSearchData.GetFindString() :
173  aSearchData.GetFindString().Upper() );
174 
175  if( result == wxNOT_FOUND )
176  return false;
177 
178  wxString prefix = aText.Left( result );
179  wxString suffix;
180 
181  if( aSearchData.GetFindString().length() + result < aText.length() )
182  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
183 
184  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
185  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
186  GetChars( suffix ) );
187 
188  aText = prefix + aSearchData.GetReplaceString() + suffix;
189 
190  return true;
191 }
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, SCH_FIELD, and SCH_PIN.

Definition at line 490 of file base_struct.h.

490 { return false; }

◆ Schematic()

SCHEMATIC * SCH_SCREEN::Schematic ( ) const

◆ Set() [1/3]

bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
wxAny &  aValue 
)
inlineinherited

Definition at line 40 of file inspectable.h.

41  {
43  TYPE_ID thisType = TYPE_HASH( *this );
44  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
45 
46  if( object )
47  aProperty->setter( object, aValue );
48 
49  return object != nullptr;
50  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
virtual void setter(void *aObject, wxAny &aValue)=0
Provides class metadata.
Definition: property_mgr.h:58
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::setter(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Set() [2/3]

template<typename T >
bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
aValue 
)
inlineinherited

Definition at line 53 of file inspectable.h.

54  {
56  TYPE_ID thisType = TYPE_HASH( *this );
57  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
58 
59  if( object )
60  aProperty->set<T>( object, aValue );
61 
62  return object != nullptr;
63  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
Provides class metadata.
Definition: property_mgr.h:58
void set(void *aObject, T aValue)
Definition: property.h:266
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Set() [3/3]

template<typename T >
bool INSPECTABLE::Set ( const wxString &  aProperty,
aValue 
)
inlineinherited

Definition at line 66 of file inspectable.h.

67  {
69  TYPE_ID thisType = TYPE_HASH( *this );
70  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
71  void* object = nullptr;
72 
73  if( prop )
74  {
75  object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
76 
77  if( object )
78  prop->set<T>( object, aValue );
79  }
80 
81  return object != nullptr;
82  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:61
#define TYPE_HASH(x)
Macro to generate unique identifier for a type
Definition: property.h:53
size_t TYPE_ID
Unique type identifier
Definition: property_mgr.h:38
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Casts a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Returns a property for a specific type.
Provides class metadata.
Definition: property_mgr.h:58
void set(void *aObject, T aValue)
Definition: property.h:266
virtual size_t OwnerHash() const =0
Returns type-id of the Owner class.

References PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ SetAuxOrigin()

void SCH_SCREEN::SetAuxOrigin ( const wxPoint aPosition)
inline

Definition at line 188 of file sch_screen.h.

188 { m_aux_origin = aPosition; }
wxPoint m_aux_origin
Definition: sch_screen.h:113

References m_aux_origin.

◆ SetBrightened()

◆ 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(), SCH_MOVE_TOOL::AlignElements(), 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(), SCH_ALTIUM_PLUGIN::ParseBus(), SCH_ALTIUM_PLUGIN::ParseNetLabel(), SCH_ALTIUM_PLUGIN::ParseWire(), 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(), BACK_ANNOTATE::processNetNameChange(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), 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_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::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.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 87 of file base_struct.cpp.

88 {
90 
91  // If this a child object, then the parent modification state also needs to be set.
92  if( m_Parent )
94 }
void SetModified()
Definition: base_struct.cpp:87
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:174
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:113
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:232

References IS_CHANGED, EDA_ITEM::m_Parent, EDA_ITEM::SetFlags(), and EDA_ITEM::SetModified().

Referenced by LIB_PIN_TOOL::EditPinProperties(), LEGACY_PLUGIN::loadZONE_CONTAINER(), SCH_LINE::Move(), SCH_COMPONENT::Move(), SCH_LINE::MoveEnd(), SCH_LINE::MoveStart(), LIB_PIN::MoveTo(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_ALTIUM_PLUGIN::Parse(), ALTIUM_PCB::Parse(), LIB_PART::RemoveDrawItem(), SCH_COMPONENT::SetConvert(), SCH_COMPONENT::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SCH_COMPONENT::SetTransform(), and SCH_COMPONENT::SetUnit().

◆ SetModify()

◆ SetPageSettings()

void SCH_SCREEN::SetPageSettings ( const PAGE_INFO aPageSettings)
inline

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in DIMENSION.

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(), ZONE_FILLER::buildCopperItemClearances(), LIB_FIELD::Copy(), LIB_EDIT_FRAME::CreateNewPart(), SCH_DRAWING_TOOLS::createNewText(), 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(), 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(), BACK_ANNOTATE::processNetNameChange(), 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(), DIMENSION::SetParent(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), and SwapItemData().

◆ SetPosition()

◆ SetSave()

void BASE_SCREEN::SetSave ( )
inlineinherited

Definition at line 102 of file base_screen.h.

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

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(), SELECTION_TOOL::selectConnectedTracks(), 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 192 of file sch_screen.h.

192 { m_titles = aTitleBlock; }
TITLE_BLOCK m_titles
Definition: sch_screen.h:112

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 521 of file base_struct.h.

521 { 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 1004 of file sch_screen.cpp.

1005 {
1006  std::vector< DANGLING_END_ITEM > endPoints;
1007  bool hasStateChanged = false;
1008 
1009  for( SCH_ITEM* item : Items() )
1010  item->GetEndPoints( endPoints );
1011 
1012  for( SCH_ITEM* item : Items() )
1013  {
1014  if( item->UpdateDanglingState( endPoints, aPath ) )
1015  hasStateChanged = true;
1016  }
1017 
1018  return hasStateChanged;
1019 }
EE_RTREE & Items()
Definition: sch_screen.h:158
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:194

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(), DIALOG_SELECT_NET_FROM_LIST::buildNetsList(), 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_BUS_BUS_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), ROUTER_TOOL::CanInlineDrag(), SCH_EDIT_TOOL::ChangeTextType(), CN_VISITOR::checkZoneItemConnection(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), SCH_NO_CONNECT::ClassOf(), TEXTE_PCB::ClassOf(), MARKER_PCB::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), EDGE_MODULE::ClassOf(), SCH_PIN::ClassOf(), PCB_GROUP::ClassOf(), SCH_LINE::ClassOf(), PCB_TARGET::ClassOf(), SCH_FIELD::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), ZONE_CONTAINER::ClassOf(), SCH_BITMAP::ClassOf(), D_PAD::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(), BOARD::ClassOf(), SCH_SHEET::ClassOf(), ARC::ClassOf(), SCH_LABEL::ClassOf(), VIA::ClassOf(), ALIGNED_DIMENSION::ClassOf(), SCH_GLOBALLABEL::ClassOf(), SCH_HIERLABEL::ClassOf(), ORTHOGONAL_DIMENSION::ClassOf(), LEADER::ClassOf(), CENTER_DIMENSION::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_PIN::compare(), LIB_ITEM::compare(), EE_GRID_HELPER::computeAnchors(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), BOARD::ConvertKIIDsToCrossReferences(), SCHEMATIC::ConvertKIIDsToRefs(), MODULE::CoverageRatio(), BOARD_ADAPTER::createLayers(), PCB_BASE_FRAME::CreateNewModule(), SCH_DRAWING_TOOLS::createNewText(), BOARD_ADAPTER::createNewTrack(), ZONE_CREATE_HELPER::createNewZone(), D_PAD::D_PAD(), DeleteItem(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), 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_TEST_PROVIDER_COPPER_CLEARANCE::doTrackDrc(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), MODULE::DuplicateItem(), EDA_ITEM_DESC::EDA_ITEM_DESC(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckFloatingWires(), CONNECTION_GRAPH::ercCheckLabels(), CONNECTION_GRAPH::ercCheckNoConnects(), 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(), 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(), CONVERT_TOOL::getStartEndPoints(), PCB_EDITOR_CONTROL::GroupFlattenSelected(), BOARD::GroupLegalOps(), PCB_EDITOR_CONTROL::GroupMergeSelected(), BOARD::GroupsSanityCheckInternal(), EE_SELECTION_TOOL::GuessSelectionCandidates(), SELECTION_TOOL::GuessSelectionCandidates(), hash_eda(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlightInternal(), highlightNet(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_INSPECTION_TOOL::InspectClearance(), ARRAY_CREATOR::Invoke(), CN_ANCHOR::IsDangling(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), TRACK::IsNull(), PNS_KICAD_IFACE::IsOnLayer(), SCH_LINE::IsParallel(), SCH_FIELD::IsReplaceable(), IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), SELECTION_TOOL::itemPassesFilter(), CONVERT_TOOL::LinesToPoly(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), EE_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), NETLIST_EXPORTER_GENERIC::makeListOfNets(), MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), APPEARANCE_CONTROLS::OnBoardItemAdded(), APPEARANCE_CONTROLS::OnBoardItemChanged(), APPEARANCE_CONTROLS::OnBoardItemRemoved(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), TRACK::cmp_tracks::operator()(), CN_VISITOR::operator()(), DRAWSEGMENT::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), MODULE::cmp_drawings::operator()(), 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(), PCB_PARSER::parseBOARD_unchecked(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), Plot(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), CONVERT_TOOL::PolyToLines(), SCH_FIELD::Print(), Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), BACK_ANNOTATE::processNetNameChange(), 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::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(), SCHEMATIC::ResolveCrossReference(), WS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), SCH_TEXT::Rotate(), 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(), CLIPBOARD_IO::SaveSelection(), SCH_SEXPR_PLUGIN_CACHE::saveSymbolDrawItem(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN_CACHE::saveText(), Schematic(), SCH_ITEM::Schematic(), CONVERT_TOOL::SegmentToArc(), 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(), PCB_GROUP::SwapData(), SCH_SHEET_PIN::SwapData(), SCH_FIELD::SwapData(), TEXTE_PCB::SwapData(), TRACK::SwapData(), ARC::SwapData(), ALIGNED_DIMENSION::SwapData(), ORTHOGONAL_DIMENSION::SwapData(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), LEADER::SwapData(), VIA::SwapData(), CENTER_DIMENSION::SwapData(), D_PAD::SwapData(), MODULE::SwapData(), ZONE_CONTAINER::SwapData(), SwapItemData(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testCopperDrawItem(), ERC_TESTER::TestMultUnitPinConflicts(), ERC_TESTER::TestPinToPin(), ERC_TESTER::TestSimilarLabels(), TEXTE_MODULE::TEXTE_MODULE(), BOARD::TopLevelGroup(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), TRACK::TransformShapeWithClearanceToPolygon(), LIB_DRAWING_TOOLS::TwoClickPlace(), PCB_EDITOR_CONTROL::UngroupSelected(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlightInternal(), KIGFX::PCB_VIEW::Update(), SCH_TEXT::UpdateDanglingState(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), EE_POINT_EDITOR::updateItem(), PL_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), SCH_BASE_FRAME::UpdateItem(), CONNECTION_GRAPH::updateItemConnectivity(), DIALOG_SELECT_NET_FROM_LIST::updateNet(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), SCH_EDITOR_CONTROL::updatePastedInstances(), 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(), PCB_GROUP::Visit(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_SHEET::Visit(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), and NETLIST_EXPORTER_CADSTAR::writeListOfNets().

◆ 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 236 of file sch_screen.cpp.

237 {
238  if( Remove( aItem ) )
239  Append( aItem );
240 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:243
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:131

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 714 of file sch_screen.cpp.

715 {
716  std::vector<SCH_COMPONENT*> symbols;
717 
718  for( auto item : Items().OfType( SCH_COMPONENT_T ) )
719  symbols.push_back( static_cast<SCH_COMPONENT*>( item ) );
720 
721  for( auto symbol : symbols )
722  {
723  // Changing the symbol may adjust the bbox of the symbol; remove and reinsert it afterwards.
724  m_rtree.remove( symbol );
725 
726  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
727 
728  LIB_PART* libSymbol = nullptr;
729 
730  if( it != m_libSymbols.end() )
731  libSymbol = new LIB_PART( *it->second );
732 
733  symbol->SetLibSymbol( libSymbol );
734 
735  m_rtree.insert( symbol );
736  }
737 }
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:114
Define a library symbol object.
EE_RTREE & Items()
Definition: sch_screen.h:158
std::map< wxString, LIB_PART * > m_libSymbols
Library symbols required for this schematic.
Definition: sch_screen.h:123

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 555 of file sch_screen.cpp.

556 {
557  wxCHECK_RET( Schematic(), "Cannot call SCH_SCREEN::UpdateSymbolLinks with no SCHEMATIC" );
558 
559  wxString msg;
560  std::unique_ptr< LIB_PART > libSymbol;
561  std::vector<SCH_COMPONENT*> symbols;
562  SYMBOL_LIB_TABLE* libs = Schematic()->Prj().SchSymbolLibTable();
563 
564  // This will be a nullptr if an s-expression schematic is loaded.
565  PART_LIBS* legacyLibs = Schematic()->Prj().SchLibs();
566 
567  for( auto item : Items().OfType( SCH_COMPONENT_T ) )
568  symbols.push_back( static_cast<SCH_COMPONENT*>( item ) );
569 
570  // Remove them from the R tree. There bounding box size may change.
571  for( auto symbol : symbols )
572  Remove( symbol );
573 
574  // Clear all existing symbol links.
575  clearLibSymbols();
576 
577  for( auto symbol : symbols )
578  {
579  LIB_PART* tmp = nullptr;
580  libSymbol.reset();
581 
582  // If the symbol is already in the internal library, map the symbol to it.
583  auto it = m_libSymbols.find( symbol->GetSchSymbolLibraryName() );
584 
585  if( ( it != m_libSymbols.end() ) )
586  {
587  if( aReporter )
588  {
589  msg.Printf( _( "Setting schematic symbol '%s %s' library identifier "
590  "to '%s'. " ),
591  symbol->GetField( REFERENCE )->GetText(),
592  symbol->GetField( VALUE )->GetText(),
593  symbol->GetLibId().Format().wx_str() );
594  aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
595  }
596 
597  // Internal library symbols are already flattened so just make a copy.
598  symbol->SetLibSymbol( new LIB_PART( *it->second ) );
599  continue;
600  }
601 
602  if( !symbol->GetLibId().IsValid() )
603  {
604  if( aReporter )
605  {
606  msg.Printf( _( "Schematic symbol reference '%s' library identifier is not "
607  "valid. Unable to link library symbol." ),
608  symbol->GetLibId().Format().wx_str() );
609  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
610  }
611 
612  continue;
613  }
614 
615  // LIB_TABLE_BASE::LoadSymbol() throws an IO_ERROR if the the library nickname
616  // is not found in the table so check if the library still exists in the table
617  // before attempting to load the symbol.
618  if( !libs->HasLibrary( symbol->GetLibId().GetLibNickname() ) && !legacyLibs )
619  {
620  if( aReporter )
621  {
622  msg.Printf( _( "Symbol library '%s' not found and no fallback cache "
623  "library available. Unable to link library symbol." ),
624  symbol->GetLibId().GetLibNickname().wx_str() );
625  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
626  }
627 
628  continue;
629  }
630 
631  if( libs->HasLibrary( symbol->GetLibId().GetLibNickname() ) )
632  {
633  try
634  {
635  tmp = libs->LoadSymbol( symbol->GetLibId() );
636  }
637  catch( const IO_ERROR& ioe )
638  {
639  if( aReporter )
640  {
641  msg.Printf( _( "I/O error %s resolving library symbol %s" ), ioe.What(),
642  symbol->GetLibId().Format().wx_str() );
643  aReporter->ReportTail( msg, RPT_SEVERITY_ERROR );
644  }
645  }
646  }
647 
648  if( !tmp && legacyLibs )
649  {
650  // If here, only the cache library should be loaded if the loaded schematic
651  // is the legacy file format.
652  wxCHECK2( legacyLibs->GetLibraryCount() == 1, continue );
653 
654  PART_LIB& legacyCacheLib = legacyLibs->at( 0 );
655 
656  // ...and it better be the cache library.
657  wxCHECK2( legacyCacheLib.IsCache(), continue );
658 
659  wxString id = symbol->GetLibId().Format();
660 
661  id.Replace( ':', '_' );
662 
663  if( aReporter )
664  {
665  msg.Printf( _( "Falling back to cache to set symbol '%s:%s' link '%s'." ),
666  symbol->GetField( REFERENCE )->GetText(),
667  symbol->GetField( VALUE )->GetText(),
668  id );
669  aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
670  }
671 
672  tmp = legacyCacheLib.FindPart( id );
673  }
674 
675  if( tmp )
676  {
677  // We want a full symbol not just the top level child symbol.
678  libSymbol = tmp->Flatten();
679  libSymbol->SetParent();
680 
681  m_libSymbols.insert( { symbol->GetSchSymbolLibraryName(),
682  new LIB_PART( *libSymbol.get() ) } );
683 
684  if( aReporter )
685  {
686  msg.Printf( _( "Setting schematic symbol '%s %s' library identifier to '%s'. " ),
687  symbol->GetField( REFERENCE )->GetText(),
688  symbol->GetField( VALUE )->GetText(),
689  symbol->GetLibId().Format().wx_str() );
690  aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
691  }
692  }
693  else
694  {
695  if( aReporter )
696  {
697  msg.Printf( _( "No library symbol found for schematic symbol '%s %s'. " ),
698  symbol->GetField( REFERENCE )->GetText(),
699  symbol->GetField( VALUE )->GetText() );
700  aReporter->ReportTail( msg, RPT_SEVERITY_ERROR );
701  }
702  }
703 
704  symbol->SetLibSymbol( libSymbol.release() );
705  }
706 
707  // Changing the symbol may adjust the bbox of the symbol. This re-inserts the
708  // item with the new bbox
709  for( auto symbol : symbols )
710  Append( symbol );
711 }
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:243
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:100
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".
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:29
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.
Field Value of part, i.e. "3.3K".
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:131
#define _(s)
Definition: 3d_actions.cpp:33
SCHEMATIC * Schematic() const
Definition: sch_screen.cpp:91
EE_RTREE & Items()
Definition: sch_screen.h:158
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:123

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, CENTER_DIMENSION, EDIT_POINTS, DRAWSEGMENT, GERBER_DRAW_ITEM, DIMENSION, TRACK, TEXTE_MODULE, ROUTER_PREVIEW_ITEM, KIGFX::WS_PROXY_VIEW_ITEM, MARKER_PCB, MY_DRAWING, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::ORIGIN_VIEWITEM, 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 215 of file base_struct.cpp.

216 {
217  // Basic fallback
218  return BOX2I( VECTOR2I( GetBoundingBox().GetOrigin() ),
219  VECTOR2I( GetBoundingBox().GetSize() ) );
220 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:522
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:97

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::WS_PROXY_VIEW_ITEM, KIGFX::VIEW_GROUP, 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 117 of file view_item.h.

118  {}

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, SCH_ITEM, GERBER_DRAW_ITEM, TEXTE_MODULE, TRACK, LIB_PART, LIB_ITEM, MY_DRAWING, SCH_COMPONENT, ZONE_CONTAINER, PCB_GROUP, LIB_FIELD, SCH_LINE, ROUTER_PREVIEW_ITEM, SCH_BITMAP, KIGFX::WS_PROXY_VIEW_ITEM, MARKER_PCB, SCH_BUS_ENTRY_BASE, WS_DRAW_ITEM_BASE, SCH_NO_CONNECT, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, LIB_TEXT, KIGFX::ORIGIN_VIEWITEM, SCH_JUNCTION, BRIGHT_BOX, SCH_MARKER, KIGFX::RATSNEST_VIEWITEM, and KIGFX::PREVIEW::RULER_ITEM.

Definition at line 223 of file base_struct.cpp.

224 {
225  // Basic fallback
226  aCount = 1;
227  aLayers[0] = 0;
228 }

◆ ViewGetLOD()

virtual double 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, ZONE_CONTAINER, PCB_GROUP, and EDGE_MODULE.

Definition at line 141 of file view_item.h.

142  {
143  // By default always show the item
144  return 0.0;
145  }

Referenced by KIGFX::VIEW::drawItem::operator()(), EE_GRID_HELPER::queryVisible(), 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, PCB_GROUP, and GBR_LAYOUT.

Definition at line 115 of file base_struct.cpp.

116 {
117 #if 0 && defined(DEBUG)
118  std::cout << GetClass().mb_str() << ' ';
119 #endif
120 
121  if( IsType( scanTypes ) )
122  {
123  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
124  return SEARCH_RESULT::QUIT;
125  }
126 
128 }
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 120 of file sch_screen.h.

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

◆ m_aux_origin

wxPoint SCH_SCREEN::m_aux_origin
private

Definition at line 113 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 69 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(), and SCH_SCREEN().

◆ m_clientSheetPathList

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

The list of sheet 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 sheet paths sharing this screen if it is inside another sheet having many instances.

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 60 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

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 123 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

Definition at line 116 of file sch_screen.h.

Referenced by Append(), and SCH_SCREEN().

◆ m_NumberOfScreens

◆ m_PageLayoutDescrFileName

◆ m_paper

PAGE_INFO SCH_SCREEN::m_paper
private

Definition at line 111 of file sch_screen.h.

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

◆ m_Parent

◆ m_refCount

int SCH_SCREEN::m_refCount
private

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 75 of file base_screen.h.

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

◆ 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 65 of file base_screen.h.

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

◆ m_Status

◆ 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 139 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 112 of file sch_screen.h.

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

◆ 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(), PCB_GROUP::AddItem(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), SCHEMATIC::ConvertRefsToKIIDs(), MICROWAVE_TOOL::createMicrowaveInductor(), D_PAD::D_PAD(), DRAWING_TOOL::DrawVia(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), MODULE::Duplicate(), MODULE::DuplicateItem(), PAD_TOOL::EditPad(), PCB_EDIT_FRAME::Exchange_Module(), PAD_TOOL::explodePad(), BOARD::FillItemMap(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), BOARD::GetItem(), SCH_SHEET::GetMsgPanelInfo(), DIALOG_BOARD_REANNOTATE::GetNewRefDes(), SCH_REFERENCE::GetPath(), SCH_MARKER::GetUUID(), MARKER_PCB::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), BOARD::GroupsSanityCheckInternal(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN::loadComponent(), CADSTAR_PCB_ARCHIVE_LOADER::loadComponents(), EAGLE_PLUGIN::loadElements(), PCB_EDIT_FRAME::LoadFootprints(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), LEGACY_PLUGIN::loadTrackList(), NETLIST_EXPORTER_GENERIC::makeComponents(), SCH_EDIT_FRAME::mapExistingAnnotation(), TRACK::cmp_tracks::operator()(), DRAWSEGMENT::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), MODULE::cmp_drawings::operator()(), MODULE::cmp_pads::operator()(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), PCB_PARSER::parseBOARD_unchecked(), PCB_PARSER::parseDIMENSION(), PCB_PARSER::parseMODULE_unchecked(), 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(), testGroupEqual(), SCH_EDITOR_CONTROL::updatePastedInstances(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ SCH_EDIT_FRAME

friend SCH_SCREEN::SCH_EDIT_FRAME
private

Definition at line 141 of file sch_screen.h.

◆ SCH_SEXPR_PARSER

friend SCH_SCREEN::SCH_SEXPR_PARSER
private

Definition at line 142 of file sch_screen.h.

◆ SCH_SEXPR_PLUGIN

friend SCH_SCREEN::SCH_SEXPR_PLUGIN
private

Definition at line 143 of file sch_screen.h.


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