KiCad PCB EDA Suite
SCH_LINE Class Reference

Segment description base class to describe items which have 2 end points (track, wire, draw line ...) More...

#include <sch_line.h>

Inheritance diagram for SCH_LINE:
SCH_ITEM EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

Public Member Functions

 SCH_LINE (const wxPoint &pos=wxPoint(0, 0), int layer=LAYER_NOTES)
 
 SCH_LINE (const VECTOR2D &pos, int layer=LAYER_NOTES)
 
 SCH_LINE (const SCH_LINE &aLine)
 
 ~SCH_LINE ()
 
wxString GetClass () const override
 Return the class name. More...
 
bool IsType (const KICAD_T aScanTypes[]) const override
 Check whether the item is one of the listed types. More...
 
bool IsEndPoint (const wxPoint &aPoint) const
 
int GetAngleFrom (const wxPoint &aPoint) const
 
int GetReverseAngleFrom (const wxPoint &aPoint) const
 
bool IsNull () const
 
wxPoint GetStartPoint () const
 
void SetStartPoint (const wxPoint &aPosition)
 
wxPoint GetEndPoint () const
 
void SetEndPoint (const wxPoint &aPosition)
 
PLOT_DASH_TYPE GetDefaultStyle () const
 
void SetLineStyle (const PLOT_DASH_TYPE aStyle)
 
void SetLineStyle (const int aStyleId)
 
PLOT_DASH_TYPE GetLineStyle () const
 
PLOT_DASH_TYPE GetEffectiveLineStyle () const
 
void SetLineColor (const COLOR4D &aColor)
 
void SetLineColor (const double r, const double g, const double b, const double a)
 
COLOR4D GetLineColor () const
 Returns COLOR4D::UNSPECIFIED if a custom color hasn't been set for this line. More...
 
void SetLineWidth (const int aSize)
 
virtual bool HasLineStroke () const override
 Check if this schematic item has line stoke properties. More...
 
virtual STROKE_PARAMS GetStroke () const override
 
virtual void SetStroke (const STROKE_PARAMS &aStroke) override
 
bool IsStrokeEquivalent (const SCH_LINE *aLine)
 
bool UsesDefaultStroke () const
 Test if the SCH_LINE object uses the default stroke settings. More...
 
int GetLineSize () const
 
void ViewGetLayers (int aLayers[], int &aCount) const override
 Return the layers the item is drawn on (which may be more than its "home" layer) More...
 
const EDA_RECT GetBoundingBox () const override
 Return the orthogonal bounding box of this object for display purposes. More...
 
double GetLength () const
 
void Print (const RENDER_SETTINGS *aSettings, const wxPoint &aOffset) override
 Print a schematic item. More...
 
int GetPenWidth () const override
 
void Move (const wxPoint &aMoveVector) override
 Move the item by aMoveVector to a new position. More...
 
void MoveStart (const wxPoint &aMoveVector)
 
void MoveEnd (const wxPoint &aMoveVector)
 
void MirrorVertically (int aCenter) override
 Mirror item vertically about aCenter. More...
 
void MirrorHorizontally (int aCenter) override
 Mirror item horizontally about aCenter. More...
 
void Rotate (const wxPoint &aCenter) override
 Rotate the item around aCenter 90 degrees in the clockwise direction. More...
 
void RotateStart (const wxPoint &aCenter)
 
void RotateEnd (const wxPoint &aCenter)
 
SCH_LINEMergeOverlap (SCH_SCREEN *aScreen, SCH_LINE *aLine, bool aCheckJunctions)
 Check line against aLine to see if it overlaps and merge if it does. More...
 
bool IsParallel (const SCH_LINE *aLine) const
 
void GetEndPoints (std::vector< DANGLING_END_ITEM > &aItemList) override
 Add the schematic item end points to aItemList if the item has end points. More...
 
bool UpdateDanglingState (std::vector< DANGLING_END_ITEM > &aItemList, const SCH_SHEET_PATH *aPath=nullptr) override
 Test the schematic item to aItemList to check if it's dangling state has changed. More...
 
bool IsStartDangling () const
 
bool IsEndDangling () const
 
bool IsDangling () const override
 
bool IsConnectable () const override
 
std::vector< wxPoint > GetConnectionPoints () const override
 Add all the connection points for this item to aPoints. More...
 
void GetSelectedPoints (std::vector< wxPoint > &aPoints) const
 
bool CanConnect (const SCH_ITEM *aItem) const override
 
wxString GetSelectMenuText (EDA_UNITS aUnits) const override
 Return the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAPS GetMenuImage () const override
 Return a pointer to an image to be used in menus. More...
 
bool operator< (const SCH_ITEM &aItem) const override
 
wxPoint GetPosition () const override
 
void SetPosition (const wxPoint &aPosition) override
 
bool IsPointClickableAnchor (const wxPoint &aPos) const override
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Test if aPosition is contained within or on the bounding box of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const override
 Test if aRect intersects or is contained within the bounding box of an item. More...
 
void Plot (PLOTTER *aPlotter) const override
 Plot the schematic item to aPlotter. More...
 
EDA_ITEMClone () const override
 Create a duplicate of this item with linked list members set to NULL. More...
 
void SwapData (SCH_ITEM *aItem) override
 Swap the internal data structures aItem with the schematic item. More...
 
void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
 Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
bool IsGraphicLine () const
 Return if the line is a graphic (non electrical line) More...
 
bool IsWire () const
 Return true if the line is a wire. More...
 
bool IsBus () const
 Return true if the line is a bus. More...
 
SCH_ITEMDuplicate (bool doClone=false) const
 Routine to create a new copy of given item. More...
 
virtual bool IsMovableFromAnchorPoint () const
 
wxPoint & GetStoredPos ()
 
void SetStoredPos (const wxPoint &aPos)
 
SCHEMATICSchematic () const
 Searches the item hierarchy to find a SCHEMATIC. More...
 
virtual bool IsLocked () const
 
virtual void SetLocked (bool aLocked)
 Set the 'lock' status to aLocked for of this item. More...
 
virtual bool IsHypertext () const
 Allow items to support hypertext actions when hovered/clicked. More...
 
virtual void DoHypertextMenu (EDA_DRAW_FRAME *aFrame)
 
SCH_LAYER_ID GetLayer () const
 Return the layer this item is on. More...
 
void SetLayer (SCH_LAYER_ID aLayer)
 Set the layer this item is on. More...
 
void ClearConnections ()
 Clears all of the connection items from the list. More...
 
bool IsConnected (const wxPoint &aPoint) const
 Test the item to see if it is connected to aPoint. More...
 
SCH_CONNECTIONConnection (const SCH_SHEET_PATH *aSheet=nullptr) const
 Retrieve the connection associated with this object in the given sheet. More...
 
SCH_ITEM_SETConnectedItems (const SCH_SHEET_PATH &aPath)
 Retrieve the set of items connected to this item on the given sheet. More...
 
void AddConnectionTo (const SCH_SHEET_PATH &aPath, SCH_ITEM *aItem)
 Add a connection link between this item and another. More...
 
SCH_CONNECTIONInitializeConnection (const SCH_SHEET_PATH &aPath, CONNECTION_GRAPH *aGraph)
 Create a new connection object associated with this object. More...
 
virtual bool ConnectionPropagatesTo (const EDA_ITEM *aItem) const
 Return true if this item should propagate connection info to aItem. More...
 
bool IsConnectivityDirty ()
 
void SetConnectivityDirty (bool aDirty=true)
 
NETCLASSPTR NetClass (const SCH_SHEET_PATH *aSheet=nullptr) const
 
FIELDS_AUTOPLACED GetFieldsAutoplaced () const
 Return whether the fields have been automatically placed. More...
 
void SetFieldsAutoplaced ()
 
void ClearFieldsAutoplaced ()
 
void AutoAutoplaceFields (SCH_SCREEN *aScreen)
 Autoplace fields only if correct to do so automatically. More...
 
virtual void AutoplaceFields (SCH_SCREEN *aScreen, bool aManual)
 
virtual void RunOnChildren (const std::function< void(SCH_ITEM *)> &aFunction)
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
KICAD_T Type () const
 Returns the type of object. 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 IsEntered () const
 
bool IsResized () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (EDA_ITEM_FLAGS type) const
 
void SetState (EDA_ITEM_FLAGS type, bool state)
 
EDA_ITEM_FLAGS GetStatus () const
 
void SetStatus (EDA_ITEM_FLAGS aStatus)
 
void SetFlags (EDA_ITEM_FLAGS aMask)
 
void ClearFlags (EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
EDA_ITEM_FLAGS GetFlags () const
 
bool HasFlag (EDA_ITEM_FLAGS aFlag) const
 
EDA_ITEM_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
void SetForceVisible (bool aEnable)
 Set and clear 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 const wxPoint GetFocusPosition () const
 Similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 May be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
virtual bool Matches (const wxFindReplaceData &aSearchData, void *aAuxData) const
 Compare the item against the search criteria in aSearchData. More...
 
virtual bool Replace (const wxFindReplaceData &aSearchData, void *aAuxData=nullptr)
 Perform a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Override this method in any derived object that supports test find and replace. More...
 
virtual const BOX2I ViewBBox () const override
 Return the bounding box of the item covering all its layers. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Draw the parts of the object belonging to layer aLayer. More...
 
virtual double ViewGetLOD (int aLayer, VIEW *aView) const
 Return 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)
 
static const char * GetLineStyleName (PLOT_DASH_TYPE aStyle)
 
static PLOT_DASH_TYPE GetLineStyleByName (const wxString &aStyleName)
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 This changes first parameter to avoid the DList and use the main queue instead. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Change first parameter to avoid the DList and use std::vector instead. More...
 
static bool Replace (const wxFindReplaceData &aSearchData, wxString &aText)
 Perform 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)
 Helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

const KIID m_Uuid
 

Static Public Attributes

static enum wxPenStyle PenStyle []
 

Protected Member Functions

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

Protected Attributes

SCH_LAYER_ID m_layer
 
EDA_ITEMS m_connections
 
FIELDS_AUTOPLACED m_fieldsAutoplaced
 
wxPoint m_storedPos
 
std::unordered_map< SCH_SHEET_PATH, SCH_ITEM_SETm_connected_items
 Store pointers to other items that are connected to this one, per sheet. More...
 
std::unordered_map< SCH_SHEET_PATH, SCH_CONNECTION * > m_connection_map
 Store connectivity information, per sheet. More...
 
bool m_connectivity_dirty
 
EDA_ITEM_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
EDA_ITEM_FLAGS m_flags
 

Private Member Functions

bool doIsConnected (const wxPoint &aPosition) const override
 Provide the object specific test to see if it is connected to aPosition. More...
 

Private Attributes

bool m_startIsDangling
 True if start point is not connected. More...
 
bool m_endIsDangling
 True if end point is not connected. More...
 
wxPoint m_start
 Line start point. More...
 
wxPoint m_end
 Line end point. More...
 
STROKE_PARAMS m_stroke
 Line stroke properties. More...
 

Detailed Description

Segment description base class to describe items which have 2 end points (track, wire, draw line ...)

Definition at line 37 of file sch_line.h.

Constructor & Destructor Documentation

◆ SCH_LINE() [1/3]

SCH_LINE::SCH_LINE ( const wxPoint &  pos = wxPoint( 0, 0 ),
int  layer = LAYER_NOTES 
)

Definition at line 38 of file sch_line.cpp.

38  :
39  SCH_ITEM( nullptr, SCH_LINE_T )
40 {
41  m_start = pos;
42  m_end = pos;
44  m_stroke.SetWidth( 0 );
46  m_stroke.SetColor( COLOR4D::UNSPECIFIED );
47 
48  switch( layer )
49  {
50  default: m_layer = LAYER_NOTES; break;
51  case LAYER_WIRE: m_layer = LAYER_WIRE; break;
52  case LAYER_BUS: m_layer = LAYER_BUS; break;
53  }
54 }
void SetWidth(int aWidth)
Definition: sch_item.h:164
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266
void SetPlotStyle(PLOT_DASH_TYPE aPlotStyle)
Definition: sch_item.h:167
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265
wxPoint m_end
Line end point.
Definition: sch_line.h:268
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
void SetColor(const COLOR4D &aColor)
Definition: sch_item.h:170
wxPoint m_start
Line start point.
Definition: sch_line.h:267
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType)
Definition: sch_item.cpp:47

References DEFAULT, LAYER_BUS, LAYER_NOTES, LAYER_WIRE, m_end, m_endIsDangling, SCH_ITEM::m_layer, m_start, m_startIsDangling, m_stroke, STROKE_PARAMS::SetColor(), STROKE_PARAMS::SetPlotStyle(), and STROKE_PARAMS::SetWidth().

Referenced by Clone(), and MergeOverlap().

◆ SCH_LINE() [2/3]

SCH_LINE::SCH_LINE ( const VECTOR2D pos,
int  layer = LAYER_NOTES 
)
inline

Definition at line 44 of file sch_line.h.

44  :
45  SCH_LINE( wxPoint( pos.x, pos.y ), layer )
46  {}
SCH_LINE(const wxPoint &pos=wxPoint(0, 0), int layer=LAYER_NOTES)
Definition: sch_line.cpp:38

◆ SCH_LINE() [3/3]

SCH_LINE::SCH_LINE ( const SCH_LINE aLine)

Definition at line 57 of file sch_line.cpp.

57  :
58  SCH_ITEM( aLine )
59 {
60  m_start = aLine.m_start;
61  m_end = aLine.m_end;
62  m_stroke = aLine.m_stroke;
65 }
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265
wxPoint m_end
Line end point.
Definition: sch_line.h:268
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
wxPoint m_start
Line start point.
Definition: sch_line.h:267
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType)
Definition: sch_item.cpp:47

References m_end, m_endIsDangling, m_start, m_startIsDangling, and m_stroke.

◆ ~SCH_LINE()

SCH_LINE::~SCH_LINE ( )
inline

Definition at line 50 of file sch_line.h.

50 { }

Member Function Documentation

◆ AddConnectionTo()

void SCH_ITEM::AddConnectionTo ( const SCH_SHEET_PATH aPath,
SCH_ITEM aItem 
)
inherited

Add a connection link between this item and another.

Definition at line 170 of file sch_item.cpp.

171 {
172  m_connected_items[ aSheet ].insert( aItem );
173 }
std::unordered_map< SCH_SHEET_PATH, SCH_ITEM_SET > m_connected_items
Store pointers to other items that are connected to this one, per sheet.
Definition: sch_item.h:499

References SCH_ITEM::m_connected_items.

Referenced by SCH_TEXT::UpdateDanglingState().

◆ AutoAutoplaceFields()

void SCH_ITEM::AutoAutoplaceFields ( SCH_SCREEN aScreen)
inlineinherited

Autoplace fields only if correct to do so automatically.

Fields that have been moved by hand are not automatically placed.

Parameters
aScreenis the SCH_SCREEN associated with the current instance of the symbol.

Definition at line 441 of file sch_item.h.

442  {
443  if( GetFieldsAutoplaced() )
445  }
FIELDS_AUTOPLACED GetFieldsAutoplaced() const
Return whether the fields have been automatically placed.
Definition: sch_item.h:429
virtual void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Definition: sch_item.h:447

References SCH_ITEM::AutoplaceFields(), FIELDS_AUTOPLACED_MANUAL, and SCH_ITEM::GetFieldsAutoplaced().

Referenced by SCH_EDIT_TOOL::Mirror(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Rotate(), and SCH_EDIT_FRAME::SelectUnit().

◆ AutoplaceFields()

virtual void SCH_ITEM::AutoplaceFields ( SCH_SCREEN aScreen,
bool  aManual 
)
inlinevirtualinherited

◆ CanConnect()

bool SCH_LINE::CanConnect ( const SCH_ITEM aItem) const
overridevirtual

Reimplemented from SCH_ITEM.

Definition at line 652 of file sch_line.cpp.

653 {
654  if( m_layer == LAYER_WIRE )
655  {
656  switch( aItem->Type() )
657  {
658  case SCH_JUNCTION_T:
659  case SCH_NO_CONNECT_T:
660  case SCH_LABEL_T:
661  case SCH_GLOBAL_LABEL_T:
662  case SCH_HIER_LABEL_T:
664  case SCH_SYMBOL_T:
665  case SCH_SHEET_T:
666  case SCH_SHEET_PIN_T:
667  return true;
668  default:
669  break;
670  }
671  }
672  else if( m_layer == LAYER_BUS )
673  {
674  switch( aItem->Type() )
675  {
676  case SCH_JUNCTION_T:
677  case SCH_LABEL_T:
678  case SCH_GLOBAL_LABEL_T:
679  case SCH_HIER_LABEL_T:
681  case SCH_SHEET_T:
682  case SCH_SHEET_PIN_T:
683  return true;
684  default:
685  break;
686  }
687  }
688 
689  return aItem->GetLayer() == m_layer;
690 }
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References SCH_ITEM::GetLayer(), LAYER_BUS, LAYER_WIRE, SCH_ITEM::m_layer, SCH_BUS_WIRE_ENTRY_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_NO_CONNECT_T, SCH_SHEET_PIN_T, SCH_SHEET_T, SCH_SYMBOL_T, and EDA_ITEM::Type().

◆ ClassOf()

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

Definition at line 52 of file sch_line.h.

53  {
54  return aItem && SCH_LINE_T == aItem->Type();
55  }
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References SCH_LINE_T, and EDA_ITEM::Type().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearConnections()

void SCH_ITEM::ClearConnections ( )
inlineinherited

Clears all of the connection items from the list.

The vector release method is used to prevent the item pointers from being deleted. Do not use the vector erase method on the connection list.

Definition at line 381 of file sch_item.h.

381 { m_connections.clear(); }
EDA_ITEMS m_connections
Definition: sch_item.h:493

References SCH_ITEM::m_connections.

◆ ClearEditFlags()

◆ ClearFieldsAutoplaced()

void SCH_ITEM::ClearFieldsAutoplaced ( )
inlineinherited

◆ ClearFlags()

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

Definition at line 154 of file eda_item.h.

154 { m_flags &= ~aMask; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References EDA_ITEM::m_flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_MOVE_TOOL::AlignElements(), FOOTPRINT::BuildPolyCourtyards(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SYMBOL_EDITOR_EDIT_TOOL::Copy(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), SYMBOL_EDITOR_PIN_TOOL::CreateImagePins(), MICROWAVE_TOOL::createMicrowaveInductor(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_SELECTION_TOOL::ExitGroup(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), EE_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::narrowSelection(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceFootprint(), SYMBOL_EDITOR_PIN_TOOL::PlacePin(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::RollbackSymbolFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 166 of file eda_item.h.

167  {
169  DO_NOT_DRAW );
170  }
#define DO_NOT_DRAW
Used to disable draw function.
#define STARTPOINT
When a line is selected, these flags indicate which.
#define ENDPOINT
ends. (Used to support dragging.)
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
#define CANDIDATE
flag indicating that the structure is connected
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:154
#define SKIP_STRUCT
flag indicating that the structure should be ignored
#define TEMP_SELECTED
flag indicating that the structure has already selected

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 148 of file view_item.h.

149  {
150  m_viewPrivData = nullptr;
151  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:156

References KIGFX::VIEW_ITEM::m_viewPrivData.

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

◆ Clone()

EDA_ITEM * SCH_LINE::Clone ( ) const
overridevirtual

Create 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 from EDA_ITEM.

Definition at line 68 of file sch_line.cpp.

69 {
70  return new SCH_LINE( *this );
71 }
SCH_LINE(const wxPoint &pos=wxPoint(0, 0), int layer=LAYER_NOTES)
Definition: sch_line.cpp:38

References SCH_LINE().

◆ ConnectedItems()

SCH_ITEM_SET & SCH_ITEM::ConnectedItems ( const SCH_SHEET_PATH aPath)
inherited

Retrieve the set of items connected to this item on the given sheet.

Definition at line 164 of file sch_item.cpp.

165 {
166  return m_connected_items[ aSheet ];
167 }
std::unordered_map< SCH_SHEET_PATH, SCH_ITEM_SET > m_connected_items
Store pointers to other items that are connected to this one, per sheet.
Definition: sch_item.h:499

References SCH_ITEM::m_connected_items.

Referenced by addConnections(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), CONNECTION_GRAPH::updateItemConnectivity(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ Connection()

SCH_CONNECTION * SCH_ITEM::Connection ( const SCH_SHEET_PATH aSheet = nullptr) const
inherited

Retrieve the connection associated with this object in the given sheet.

Note
The returned value can be nullptr.

Definition at line 131 of file sch_item.cpp.

132 {
133  if( !aSheet )
134  aSheet = &Schematic()->CurrentSheet();
135 
136  auto it = m_connection_map.find( *aSheet );
137 
138  if( it == m_connection_map.end() )
139  return nullptr;
140  else
141  return it->second;
142 }
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
Definition: sch_item.cpp:97
std::unordered_map< SCH_SHEET_PATH, SCH_CONNECTION * > m_connection_map
Store connectivity information, per sheet.
Definition: sch_item.h:502
SCH_SHEET_PATH & CurrentSheet() const override
Definition: schematic.h:121

References SCHEMATIC::CurrentSheet(), SCH_ITEM::m_connection_map, and SCH_ITEM::Schematic().

Referenced by CONNECTION_SUBGRAPH::Absorb(), CONNECTION_SUBGRAPH::AddItem(), CONNECTION_GRAPH::buildConnectionGraph(), KIGFX::SCH_PAINTER::draw(), CONNECTION_GRAPH::ercCheckBusToBusConflicts(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), SCH_PIN::GetMsgPanelInfo(), SCH_BUS_ENTRY_BASE::GetMsgPanelInfo(), GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), CONNECTION_SUBGRAPH::GetNetName(), highlightNet(), SCH_ITEM::InitializeConnection(), SCH_ITEM::NetClass(), SCH_TEXT::Plot(), SCH_GLOBALLABEL::Print(), SCH_HIERLABEL::Print(), SCH_EDIT_FRAME::RecalculateConnections(), CONNECTION_SUBGRAPH::ResolveDrivers(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow(), BUS_UNFOLD_MENU::update(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ ConnectionPropagatesTo()

virtual bool SCH_ITEM::ConnectionPropagatesTo ( const EDA_ITEM aItem) const
inlinevirtualinherited

Return true if this item should propagate connection info to aItem.

Reimplemented in SCH_BUS_WIRE_ENTRY, and SCH_PIN.

Definition at line 418 of file sch_item.h.

418 { return true; }

Referenced by CONNECTION_GRAPH::updateItemConnectivity().

◆ DoHypertextMenu()

virtual void SCH_ITEM::DoHypertextMenu ( EDA_DRAW_FRAME aFrame)
inlinevirtualinherited

Reimplemented in SCH_FIELD.

Definition at line 263 of file sch_item.h.

263 { }

◆ doIsConnected()

bool SCH_LINE::doIsConnected ( const wxPoint &  aPosition) const
overrideprivatevirtual

Provide the object specific test to see if it is connected to aPosition.

Note
Override this function if the derived object can be connect to another object such as a wire, bus, or junction. Do not override this function for objects that cannot have connections. The default will always return false. This functions is call through the public function IsConnected() which performs tests common to all schematic items before calling the item specific connection testing.
Parameters
aPositionis a reference to a wxPoint object containing the test position.
Returns
True if connection to aPosition exists.

Reimplemented from SCH_ITEM.

Definition at line 826 of file sch_line.cpp.

827 {
828  if( m_layer != LAYER_WIRE && m_layer != LAYER_BUS )
829  return false;
830 
831  return IsEndPoint( aPosition );
832 }
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
bool IsEndPoint(const wxPoint &aPoint) const
Definition: sch_line.h:80

References IsEndPoint(), LAYER_BUS, LAYER_WIRE, and SCH_ITEM::m_layer.

◆ Duplicate()

SCH_ITEM * SCH_ITEM::Duplicate ( bool  doClone = false) const
inherited

Routine to create a new copy of given item.

The new object is not put in draw list (not linked).

Parameters
doClone(default = false) indicates unique values (such as timestamp and sheet name) should be duplicated. Use only for undo/redo operations.

Definition at line 78 of file sch_item.cpp.

79 {
80  SCH_ITEM* newItem = (SCH_ITEM*) Clone();
81 
82  if( !doClone )
83  const_cast<KIID&>( newItem->m_Uuid ) = KIID();
84 
85  newItem->ClearFlags( SELECTED | BRIGHTENED );
86 
87  newItem->RunOnChildren(
88  []( SCH_ITEM* aChild )
89  {
90  aChild->ClearFlags( SELECTED | BRIGHTENED );
91  } );
92 
93  return newItem;
94 }
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
Definition: eda_item.cpp:83
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction)
Definition: sch_item.h:449
Definition: kiid.h:44
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:154
#define SELECTED
const KIID m_Uuid
Definition: eda_item.h:475
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:193
#define BRIGHTENED
item is drawn with a bright contour

References BRIGHTENED, EDA_ITEM::ClearFlags(), EDA_ITEM::Clone(), EDA_ITEM::m_Uuid, SCH_ITEM::RunOnChildren(), and SELECTED.

Referenced by CADSTAR_SCH_ARCHIVE_LOADER::loadItemOntoKiCadSheet(), SCH_EAGLE_PLUGIN::loadSchematic(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_EDIT_TOOL::RepeatDrawItem(), and SCH_EDIT_FRAME::SaveCopyInUndoList().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 86 of file inspectable.h.

87  {
89  TYPE_ID thisType = TYPE_HASH( *this );
90  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
91  return object ? aProperty->getter( object ) : wxAny();
92  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
virtual wxAny getter(void *aObject) const =0
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

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

Referenced by BOOST_AUTO_TEST_CASE(), 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 95 of file inspectable.h.

96  {
98  TYPE_ID thisType = TYPE_HASH( *this );
99  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
100  return object ? aProperty->get<T>( object ) : T();
101  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return 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 104 of file inspectable.h.

105  {
107  TYPE_ID thisType = TYPE_HASH( *this );
108  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
109  boost::optional<T> ret = T();
110 
111  if( prop )
112  {
113  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
114 
115  if( object )
116  ret = prop->get<T>( object );
117  }
118 
119  return ret;
120  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Return a property for a specific type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return 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().

◆ GetAngleFrom()

int SCH_LINE::GetAngleFrom ( const wxPoint &  aPoint) const

Definition at line 414 of file sch_line.cpp.

415 {
416  wxPoint vec;
417 
418  if( aPoint == m_start )
419  vec = m_end - aPoint;
420  else
421  vec = m_start - aPoint;
422 
423  return KiROUND( ArcTangente( vec.y, vec.x ) );
424 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:73
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:183
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References ArcTangente(), KiROUND(), m_end, and m_start.

Referenced by SCH_SCREEN::IsJunctionNeeded().

◆ GetBoundingBox()

const EDA_RECT SCH_LINE::GetBoundingBox ( ) const
overridevirtual

Return 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 from EDA_ITEM.

Definition at line 166 of file sch_line.cpp.

167 {
168  int width = m_stroke.GetWidth() / 2;
169  int extra = m_stroke.GetWidth() & 0x1;
170 
171  int xmin = std::min( m_start.x, m_end.x ) - width;
172  int ymin = std::min( m_start.y, m_end.y ) - width;
173 
174  int xmax = std::max( m_start.x, m_end.x ) + width + extra;
175  int ymax = std::max( m_start.y, m_end.y ) + width + extra;
176 
177  EDA_RECT ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin, ymax - ymin ) );
178 
179  return ret;
180 }
int GetWidth() const
Definition: sch_item.h:163
wxPoint m_end
Line end point.
Definition: sch_line.h:268
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
Handle the component boundary box.
Definition: eda_rect.h:42
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References STROKE_PARAMS::GetWidth(), m_end, m_start, and m_stroke.

Referenced by SCH_SCREEN::MarkConnections().

◆ GetClass()

wxString SCH_LINE::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Reimplemented from SCH_ITEM.

Definition at line 57 of file sch_line.h.

58  {
59  return wxT( "SCH_LINE" );
60  }

◆ GetConnectionPoints()

std::vector< wxPoint > SCH_LINE::GetConnectionPoints ( ) const
overridevirtual

Add all the connection points for this item to aPoints.

Not all schematic items have connection points so the default method does nothing.

Parameters
aPointsis the list of connection points to add to.

Reimplemented from SCH_ITEM.

Definition at line 693 of file sch_line.cpp.

694 {
695  return { m_start, m_end };
696 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, and m_start.

◆ GetDefaultStyle()

PLOT_DASH_TYPE SCH_LINE::GetDefaultStyle ( ) const

Definition at line 224 of file sch_line.cpp.

225 {
226  if( IsGraphicLine() )
227  return PLOT_DASH_TYPE::DASH;
228 
229  return PLOT_DASH_TYPE::SOLID;
230 }
bool IsGraphicLine() const
Return if the line is a graphic (non electrical line)
Definition: sch_line.cpp:916

References DASH, IsGraphicLine(), and SOLID.

Referenced by GetLineStyle(), SCH_LEGACY_PLUGIN::saveLine(), SetLineStyle(), and UsesDefaultStroke().

◆ GetEditFlags()

EDA_ITEM_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 158 of file eda_item.h.

159  {
160  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVING | IS_RESIZING | IS_DRAGGING
162 
163  return m_flags & mask;
164  }
#define IS_NEW
New item, just created.
#define IS_RESIZING
Item being resized.
#define IS_DRAGGING
Item being dragged.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
#define IS_MOVING
Item being moved.
#define STRUCT_DELETED
flag indication structures to be erased
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_DRAGGING, IS_MOVING, IS_NEW, IS_PASTED, IS_RESIZING, IS_WIRE_IMAGE, EDA_ITEM::m_flags, and STRUCT_DELETED.

Referenced by EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), SCH_SYMBOL::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), SYMBOL_EDITOR_MOVE_TOOL::Main(), PCB_POINT_EDITOR::OnSelectionChange(), SYMBOL_EDITOR_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_TEXT_AND_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), and DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow().

◆ GetEffectiveLineStyle()

PLOT_DASH_TYPE SCH_LINE::GetEffectiveLineStyle ( ) const
Returns
the style that the line should be drawn in this might be set on the line or inherited from the line's netclass

Definition at line 257 of file sch_line.cpp.

258 {
260  return m_stroke.GetPlotStyle();
261 
262  NETCLASSPTR netclass = NetClass();
263 
264  if( netclass )
265  return (PLOT_DASH_TYPE) netclass->GetLineStyle();
266 
267  return GetLineStyle();
268 }
NETCLASSPTR NetClass(const SCH_SHEET_PATH *aSheet=nullptr) const
Definition: sch_item.cpp:145
PLOT_DASH_TYPE GetLineStyle() const
Definition: sch_line.cpp:248
PLOT_DASH_TYPE GetPlotStyle() const
Definition: sch_item.h:166
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
PLOT_DASH_TYPE
Dashed line types.
Definition: plotter.h:104

References DEFAULT, GetLineStyle(), STROKE_PARAMS::GetPlotStyle(), m_stroke, and SCH_ITEM::NetClass().

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

◆ GetEndPoint()

◆ GetEndPoints()

void SCH_LINE::GetEndPoints ( std::vector< DANGLING_END_ITEM > &  aItemList)
overridevirtual

Add the schematic item end points to aItemList if the item has end points.

The default version doesn't do anything since many of the schematic object cannot be tested for dangling ends. If you add a new schematic item that can have a dangling end ( no connect ), override this method to provide the correct end points.

Parameters
aItemListis the list of DANGLING_END_ITEMS to add to.

Reimplemented from SCH_ITEM.

Definition at line 571 of file sch_line.cpp.

572 {
573  DANGLING_END_T startType, endType;
574 
575  switch( GetLayer() )
576  {
577  case LAYER_WIRE:
578  startType = WIRE_START_END;
579  endType = WIRE_END_END;
580  break;
581  case LAYER_BUS:
582  startType = BUS_START_END;
583  endType = BUS_END_END;
584  break;
585  default:
586  startType = GRAPHIC_START_END;
587  endType = GRAPHIC_END_END;
588  break;
589  }
590 
591  DANGLING_END_ITEM item( startType, this, m_start );
592  aItemList.push_back( item );
593 
594  DANGLING_END_ITEM item1( endType, this, m_end );
595  aItemList.push_back( item1 );
596 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
Helper class used to store the state of schematic items that can be connected to other schematic item...
Definition: sch_item.h:83
DANGLING_END_T
Definition: sch_item.h:60
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References BUS_END_END, BUS_START_END, SCH_ITEM::GetLayer(), GRAPHIC_END_END, GRAPHIC_START_END, LAYER_BUS, LAYER_WIRE, m_end, m_start, WIRE_END_END, and WIRE_START_END.

◆ GetFieldsAutoplaced()

FIELDS_AUTOPLACED SCH_ITEM::GetFieldsAutoplaced ( ) const
inlineinherited

Return whether the fields have been automatically placed.

Definition at line 429 of file sch_item.h.

429 { return m_fieldsAutoplaced; }
FIELDS_AUTOPLACED m_fieldsAutoplaced
Definition: sch_item.h:494

References SCH_ITEM::m_fieldsAutoplaced.

Referenced by SCH_ITEM::AutoAutoplaceFields(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_SEXPR_PLUGIN::saveText(), and EE_POINT_EDITOR::updateParentItem().

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

Similar to GetPosition, but allows items to return their visual center rather than their anchor.

Reimplemented in BOARD, PCB_SHAPE, and PCB_TRACK.

Definition at line 259 of file eda_item.h.

259 { return GetPosition(); }
virtual wxPoint GetPosition() const
Definition: eda_item.h:252

References EDA_ITEM::GetPosition().

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

◆ GetLayer()

◆ GetLength()

double SCH_LINE::GetLength ( ) const
Returns
The length of the line segment.

Definition at line 183 of file sch_line.cpp.

184 {
185  return GetLineLength( m_start, m_end );
186 }
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Return the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:222
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References GetLineLength(), m_end, and m_start.

◆ GetLineColor()

COLOR4D SCH_LINE::GetLineColor ( ) const

Returns COLOR4D::UNSPECIFIED if a custom color hasn't been set for this line.

Definition at line 210 of file sch_line.cpp.

211 {
212  if( m_stroke.GetColor() != COLOR4D::UNSPECIFIED )
213  return m_stroke.GetColor();
214 
215  NETCLASSPTR netclass = NetClass();
216 
217  if( netclass )
218  return netclass->GetSchematicColor();
219 
220  return m_stroke.GetColor();
221 }
NETCLASSPTR NetClass(const SCH_SHEET_PATH *aSheet=nullptr) const
Definition: sch_item.cpp:145
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
COLOR4D GetColor() const
Definition: sch_item.h:169

References STROKE_PARAMS::GetColor(), m_stroke, and SCH_ITEM::NetClass().

Referenced by Plot(), Print(), and SCH_LEGACY_PLUGIN::saveLine().

◆ GetLineSize()

int SCH_LINE::GetLineSize ( ) const
inline

Definition at line 152 of file sch_line.h.

152 { return m_stroke.GetWidth(); }
int GetWidth() const
Definition: sch_item.h:163
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269

References STROKE_PARAMS::GetWidth(), and m_stroke.

Referenced by SCH_LEGACY_PLUGIN::saveLine().

◆ GetLineStyle()

PLOT_DASH_TYPE SCH_LINE::GetLineStyle ( ) const

Definition at line 248 of file sch_line.cpp.

249 {
251  return m_stroke.GetPlotStyle();
252 
253  return GetDefaultStyle();
254 }
PLOT_DASH_TYPE GetDefaultStyle() const
Definition: sch_line.cpp:224
PLOT_DASH_TYPE GetPlotStyle() const
Definition: sch_item.h:166
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269

References DEFAULT, GetDefaultStyle(), STROKE_PARAMS::GetPlotStyle(), and m_stroke.

Referenced by GetEffectiveLineStyle(), GetMsgPanelInfo(), and SCH_LEGACY_PLUGIN::saveLine().

◆ GetLineStyleByName()

PLOT_DASH_TYPE SCH_LINE::GetLineStyleByName ( const wxString &  aStyleName)
static
Returns
the style id from the style name (mainly to read style from .sch file)

Definition at line 95 of file sch_line.cpp.

96 {
97  PLOT_DASH_TYPE id = PLOT_DASH_TYPE::DEFAULT; // Default style id
98 
99  //find the name by value
100  auto resultIt = std::find_if( lineStyleNames.begin(), lineStyleNames.end(),
101  [aStyleName]( const auto& it ) { return it.second == aStyleName; } );
102 
103  if( resultIt != lineStyleNames.end() )
104  id = resultIt->first;
105 
106  return id;
107 }
const std::map< PLOT_DASH_TYPE, const char * > lineStyleNames
Definition: sch_line.cpp:77
PLOT_DASH_TYPE
Dashed line types.
Definition: plotter.h:104

References DEFAULT, and lineStyleNames.

Referenced by SCH_LEGACY_PLUGIN::loadWire().

◆ GetLineStyleName()

const char * SCH_LINE::GetLineStyleName ( PLOT_DASH_TYPE  aStyle)
static
Returns
the style name from the style id (mainly to write it in .sch file)

Definition at line 85 of file sch_line.cpp.

86 {
87  auto resultIt = lineStyleNames.find( aStyle );
88 
89  //legacy behavior is to default to dash if there is no name
90  return resultIt == lineStyleNames.end() ? lineStyleNames.find( PLOT_DASH_TYPE::DASH )->second :
91  resultIt->second;
92 }
const std::map< PLOT_DASH_TYPE, const char * > lineStyleNames
Definition: sch_line.cpp:77

References DASH, and lineStyleNames.

Referenced by GetMsgPanelInfo(), and SCH_LEGACY_PLUGIN::saveLine().

◆ GetMenuImage()

BITMAPS SCH_LINE::GetMenuImage ( ) const
overridevirtual

Return 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 from EDA_ITEM.

Definition at line 746 of file sch_line.cpp.

747 {
748  if( m_layer == LAYER_NOTES )
750  else if( m_layer == LAYER_WIRE )
751  return BITMAPS::add_line;
752 
753  return BITMAPS::add_bus;
754 }
SCH_LAYER_ID m_layer
Definition: sch_item.h:492

References add_bus, add_dashed_line, add_line, LAYER_NOTES, LAYER_WIRE, and SCH_ITEM::m_layer.

◆ GetMsgPanelInfo()

void SCH_LINE::GetMsgPanelInfo ( EDA_DRAW_FRAME aFrame,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Parameters
aListis the list to populate.

Reimplemented from EDA_ITEM.

Definition at line 875 of file sch_line.cpp.

876 {
877  wxString msg;
878 
879  switch( GetLayer() )
880  {
881  case LAYER_WIRE: msg = _( "Wire" ); break;
882  case LAYER_BUS: msg = _( "Bus" ); break;
883  default: msg = _( "Graphical" ); break;
884  }
885 
886  aList.push_back( MSG_PANEL_ITEM( _( "Line Type" ), msg ) );
887 
889  msg = _( "from netclass" );
890  else
891  msg = GetLineStyleName( GetLineStyle() );
892 
893  aList.push_back( MSG_PANEL_ITEM( _( "Line Style" ), msg ) );
894 
895  SCH_CONNECTION* conn = dynamic_cast<SCH_EDIT_FRAME*>( aFrame ) ? Connection() : nullptr;
896 
897  if( conn )
898  {
899  conn->AppendInfoToMsgPanel( aList );
900 
901  if( !conn->IsBus() )
902  {
903  NET_SETTINGS& netSettings = Schematic()->Prj().GetProjectFile().NetSettings();
904  wxString netname = conn->Name();
905  wxString netclassName = netSettings.m_NetClasses.GetDefaultPtr()->GetName();
906 
907  if( netSettings.m_NetClassAssignments.count( netname ) )
908  netclassName = netSettings.m_NetClassAssignments[ netname ];
909 
910  aList.push_back( MSG_PANEL_ITEM( _( "Assigned Netclass" ), netclassName ) );
911  }
912  }
913 }
static const char * GetLineStyleName(PLOT_DASH_TYPE aStyle)
Definition: sch_line.cpp:85
std::map< wxString, wxString > m_NetClassAssignments
Definition: net_settings.h:44
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:145
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
Definition: sch_item.cpp:97
NET_SETTINGS & NetSettings()
Definition: project_file.h:94
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
Definition: sch_item.cpp:131
NETCLASSES m_NetClasses
Definition: net_settings.h:40
wxString Name(bool aIgnoreSheet=false) const
PLOT_DASH_TYPE GetLineStyle() const
Definition: sch_line.cpp:248
#define _(s)
NET_SETTINGS stores various net-related settings in a project context.
Definition: net_settings.h:32
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:258
PROJECT & Prj() const override
Return a reference to the project this schematic is part of.
Definition: schematic.h:75
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
void AppendInfoToMsgPanel(MSG_PANEL_ITEMS &aList) const
Adds information about the connection object to aList.
const wxString GetName() const
Definition: netclass.h:65
PLOT_DASH_TYPE GetEffectiveLineStyle() const
Definition: sch_line.cpp:257
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
EDA_MSG_PANEL items for displaying messages.
Definition: msgpanel.h:53
bool IsBus() const

References _, SCH_CONNECTION::AppendInfoToMsgPanel(), SCH_ITEM::Connection(), NETCLASSES::GetDefaultPtr(), GetEffectiveLineStyle(), SCH_ITEM::GetLayer(), GetLineStyle(), GetLineStyleName(), NETCLASS::GetName(), PROJECT::GetProjectFile(), SCH_CONNECTION::IsBus(), LAYER_BUS, LAYER_WIRE, NET_SETTINGS::m_NetClassAssignments, NET_SETTINGS::m_NetClasses, SCH_CONNECTION::Name(), PROJECT_FILE::NetSettings(), SCHEMATIC::Prj(), and SCH_ITEM::Schematic().

◆ GetParent()

◆ GetPenWidth()

int SCH_LINE::GetPenWidth ( ) const
overridevirtual
Returns
the size of the "pen" that be used to draw or plot this item

Reimplemented from SCH_ITEM.

Definition at line 277 of file sch_line.cpp.

278 {
279  NETCLASSPTR netclass = NetClass();
280 
281  switch ( m_layer )
282  {
283  default:
284  if( m_stroke.GetWidth() > 0 )
285  return m_stroke.GetWidth();
286 
287  if( Schematic() )
289 
290  return Mils2iu( DEFAULT_LINE_WIDTH_MILS );
291 
292  case LAYER_WIRE:
293  if( m_stroke.GetWidth() > 0 )
294  return m_stroke.GetWidth();
295 
296  if( netclass )
297  return netclass->GetWireWidth();
298 
299  if( Schematic() )
301 
302  return Mils2iu( DEFAULT_WIRE_WIDTH_MILS );
303 
304  case LAYER_BUS:
305  if( m_stroke.GetWidth() > 0 )
306  return m_stroke.GetWidth();
307 
308  if( netclass )
309  return netclass->GetBusWidth();
310 
311  if( Schematic() )
313 
314  return Mils2iu( DEFAULT_BUS_WIDTH_MILS );
315  }
316 }
#define DEFAULT_WIRE_WIDTH_MILS
The default bus width in mils. (can be changed in preference menu)
#define DEFAULT_LINE_WIDTH_MILS
The default wire width in mils. (can be changed in preference menu)
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:167
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
Definition: sch_item.cpp:97
NETCLASSPTR NetClass(const SCH_SHEET_PATH *aSheet=nullptr) const
Definition: sch_item.cpp:145
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
int GetWidth() const
Definition: sch_item.h:163
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
#define DEFAULT_BUS_WIDTH_MILS
The default noconnect size in mils.

References DEFAULT_BUS_WIDTH_MILS, DEFAULT_LINE_WIDTH_MILS, DEFAULT_WIRE_WIDTH_MILS, STROKE_PARAMS::GetWidth(), LAYER_BUS, LAYER_WIRE, SCHEMATIC_SETTINGS::m_DefaultBusThickness, SCHEMATIC_SETTINGS::m_DefaultLineWidth, SCHEMATIC_SETTINGS::m_DefaultWireThickness, SCH_ITEM::m_layer, m_stroke, SCH_ITEM::NetClass(), SCH_ITEM::Schematic(), and SCHEMATIC::Settings().

Referenced by HitTest(), Plot(), and Print().

◆ GetPosition()

wxPoint SCH_LINE::GetPosition ( ) const
inlineoverridevirtual

Reimplemented from EDA_ITEM.

Definition at line 217 of file sch_line.h.

217 { return m_start; }
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_start.

Referenced by EE_POINT_EDITOR::updateParentItem().

◆ GetReverseAngleFrom()

int SCH_LINE::GetReverseAngleFrom ( const wxPoint &  aPoint) const

Definition at line 427 of file sch_line.cpp.

428 {
429  wxPoint vec;
430 
431  if( aPoint == m_end )
432  vec = m_start - aPoint;
433  else
434  vec = m_end - aPoint;
435 
436  return KiROUND( ArcTangente( vec.y, vec.x ) );
437 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:73
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:183
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References ArcTangente(), KiROUND(), m_end, and m_start.

◆ GetSelectedPoints()

void SCH_LINE::GetSelectedPoints ( std::vector< wxPoint > &  aPoints) const

Definition at line 699 of file sch_line.cpp.

700 {
701  if( m_flags & STARTPOINT )
702  aPoints.push_back( m_start );
703 
704  if( m_flags & ENDPOINT )
705  aPoints.push_back( m_end );
706 }
#define STARTPOINT
When a line is selected, these flags indicate which.
#define ENDPOINT
ends. (Used to support dragging.)
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References ENDPOINT, m_end, EDA_ITEM::m_flags, m_start, and STARTPOINT.

◆ GetSelectMenuText()

wxString SCH_LINE::GetSelectMenuText ( EDA_UNITS  aUnits) const
overridevirtual

Return 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 from EDA_ITEM.

Definition at line 709 of file sch_line.cpp.

710 {
711  wxString txtfmt, orient;
712 
713  if( m_start.x == m_end.x )
714  {
715  switch( m_layer )
716  {
717  case LAYER_WIRE: txtfmt = _( "Vertical Wire, length %s" ); break;
718  case LAYER_BUS: txtfmt = _( "Vertical Bus, length %s" ); break;
719  default: txtfmt = _( "Vertical Graphic Line, length %s" ); break;
720  }
721  }
722  else if( m_start.y == m_end.y )
723  {
724  switch( m_layer )
725  {
726  case LAYER_WIRE: txtfmt = _( "Horizontal Wire, length %s" ); break;
727  case LAYER_BUS: txtfmt = _( "Horizontal Bus, length %s" ); break;
728  default: txtfmt = _( "Horizontal Graphic Line, length %s" ); break;
729  }
730  }
731  else
732  {
733  switch( m_layer )
734  {
735  case LAYER_WIRE: txtfmt = _( "Wire, length %s" ); break;
736  case LAYER_BUS: txtfmt = _( "Bus, length %s" ); break;
737  default: txtfmt = _( "Graphic Line, length %s" ); break;
738  }
739  }
740 
741  return wxString::Format( txtfmt,
743 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:146
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
Definition: base_units.cpp:104
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
#define _(s)
wxPoint m_end
Line end point.
Definition: sch_line.h:268
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References _, EuclideanNorm(), Format(), LAYER_BUS, LAYER_WIRE, m_end, SCH_ITEM::m_layer, m_start, and MessageTextFromValue().

◆ GetStartPoint()

◆ GetState()

int EDA_ITEM::GetState ( EDA_ITEM_FLAGS  type) const
inlineinherited

Definition at line 137 of file eda_item.h.

138  {
139  return m_status & type;
140  }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

Referenced by BOARD_ITEM::IsLocked().

◆ GetStatus()

EDA_ITEM_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 150 of file eda_item.h.

150 { return m_status; }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

◆ GetStoredPos()

wxPoint& SCH_ITEM::GetStoredPos ( )
inlineinherited

Definition at line 231 of file sch_item.h.

231 { return m_storedPos; }
wxPoint m_storedPos
Definition: sch_item.h:495

References SCH_ITEM::m_storedPos.

◆ GetStroke()

virtual STROKE_PARAMS SCH_LINE::GetStroke ( ) const
inlineoverridevirtual

Reimplemented from SCH_ITEM.

Definition at line 124 of file sch_line.h.

124 { return m_stroke; }
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269

References m_stroke.

Referenced by IsStrokeEquivalent(), and SCH_SEXPR_PLUGIN::saveLine().

◆ HasFlag()

◆ HasLineStroke()

virtual bool SCH_LINE::HasLineStroke ( ) const
inlineoverridevirtual

Check if this schematic item has line stoke properties.

See also
STROKE_PARAMS
Returns
true if this schematic item support line stroke properties. Otherwise, false.

Reimplemented from SCH_ITEM.

Definition at line 123 of file sch_line.h.

123 { return true; }

◆ HitTest() [1/2]

bool SCH_LINE::HitTest ( const wxPoint &  aPosition,
int  aAccuracy = 0 
) const
overridevirtual

Test if aPosition is contained within or on the bounding box of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
aAccuracyIncrease the item bounding box by this amount.
Returns
True if aPosition is within the item bounding box.

Reimplemented from EDA_ITEM.

Definition at line 780 of file sch_line.cpp.

781 {
782  // Performance enhancement for connection-building
783  if( aPosition == m_start || aPosition == m_end )
784  return true;
785 
786  if( aAccuracy >= 0 )
787  aAccuracy += GetPenWidth() / 2;
788  else
789  aAccuracy = abs( aAccuracy );
790 
791  return TestSegmentHit( aPosition, m_start, m_end, aAccuracy );
792 }
bool TestSegmentHit(const wxPoint &aRefPoint, const wxPoint &aStart, const wxPoint &aEnd, int aDist)
Test if aRefPoint is with aDistance on the line defined by aStart and aEnd.
Definition: trigo.cpp:129
int GetPenWidth() const override
Definition: sch_line.cpp:277
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References GetPenWidth(), m_end, m_start, and TestSegmentHit().

Referenced by SCH_MOVE_TOOL::getConnectedDragItems(), and SCH_SCREEN::IsJunctionNeeded().

◆ HitTest() [2/2]

bool SCH_LINE::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
overridevirtual

Test 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 from EDA_ITEM.

Definition at line 795 of file sch_line.cpp.

796 {
797  if( m_flags & (STRUCT_DELETED | SKIP_STRUCT ) )
798  return false;
799 
800  EDA_RECT rect = aRect;
801 
802  if ( aAccuracy )
803  rect.Inflate( aAccuracy );
804 
805  if( aContained )
806  return rect.Contains( m_start ) && rect.Contains( m_end );
807 
808  return rect.Intersects( m_start, m_end );
809 }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
bool Contains(const wxPoint &aPoint) const
Definition: eda_rect.cpp:57
#define STRUCT_DELETED
flag indication structures to be erased
wxPoint m_end
Line end point.
Definition: sch_line.h:268
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Handle the component boundary box.
Definition: eda_rect.h:42
bool Intersects(const EDA_RECT &aRect) const
Test for a common area between rectangles.
Definition: eda_rect.cpp:150
wxPoint m_start
Line start point.
Definition: sch_line.h:267
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:364

References EDA_RECT::Contains(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), m_end, EDA_ITEM::m_flags, m_start, SKIP_STRUCT, and STRUCT_DELETED.

◆ InitializeConnection()

SCH_CONNECTION * SCH_ITEM::InitializeConnection ( const SCH_SHEET_PATH aPath,
CONNECTION_GRAPH aGraph 
)
inherited

Create a new connection object associated with this object.

Parameters
aPathis the sheet path to initialize.

Definition at line 176 of file sch_item.cpp.

178 {
179  SCH_CONNECTION* connection = Connection( &aSheet );
180 
181  if( connection )
182  {
183  connection->Reset();
184  }
185  else
186  {
187  connection = new SCH_CONNECTION( this );
188  m_connection_map.insert( std::make_pair( aSheet, connection ) );
189  }
190 
191  connection->SetGraph( aGraph );
192  connection->SetSheet( aSheet );
193  return connection;
194 }
void SetSheet(SCH_SHEET_PATH aSheet)
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
Definition: sch_item.cpp:131
void Reset()
Clears connectivity information.
void SetGraph(CONNECTION_GRAPH *aGraph)
std::unordered_map< SCH_SHEET_PATH, SCH_CONNECTION * > m_connection_map
Store connectivity information, per sheet.
Definition: sch_item.h:502
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).

References SCH_ITEM::Connection(), SCH_ITEM::m_connection_map, SCH_CONNECTION::Reset(), SCH_CONNECTION::SetGraph(), and SCH_CONNECTION::SetSheet().

◆ IsBrightened()

◆ IsBus()

bool SCH_LINE::IsBus ( ) const

Return true if the line is a bus.

Returns
true if this line is on the bus layer.

Definition at line 927 of file sch_line.cpp.

928 {
929  return ( GetLayer() == LAYER_BUS );
930 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268

References SCH_ITEM::GetLayer(), and LAYER_BUS.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), and UpdateDanglingState().

◆ IsConnectable()

bool SCH_LINE::IsConnectable ( ) const
overridevirtual
Returns
true if the schematic item can connect to another schematic item.

Reimplemented from SCH_ITEM.

Definition at line 643 of file sch_line.cpp.

644 {
645  if( m_layer == LAYER_WIRE || m_layer == LAYER_BUS )
646  return true;
647 
648  return false;
649 }
SCH_LAYER_ID m_layer
Definition: sch_item.h:492

References LAYER_BUS, LAYER_WIRE, and SCH_ITEM::m_layer.

◆ IsConnected()

bool SCH_ITEM::IsConnected ( const wxPoint &  aPoint) const
inherited

Test the item to see if it is connected to aPoint.

Parameters
aPointis a reference to a wxPoint object containing the coordinates to test.
Returns
True if connection to aPoint exists.

Definition at line 122 of file sch_item.cpp.

123 {
124  if(( m_flags & STRUCT_DELETED ) || ( m_flags & SKIP_STRUCT ) )
125  return false;
126 
127  return doIsConnected( aPosition );
128 }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define STRUCT_DELETED
flag indication structures to be erased
#define SKIP_STRUCT
flag indicating that the structure should be ignored
virtual bool doIsConnected(const wxPoint &aPosition) const
Provide the object specific test to see if it is connected to aPosition.
Definition: sch_item.h:489

References SCH_ITEM::doIsConnected(), EDA_ITEM::m_flags, SKIP_STRUCT, and STRUCT_DELETED.

Referenced by SCH_SCREEN::IsJunctionNeeded(), and SCH_SCREEN::IsTerminalPoint().

◆ IsConnectivityDirty()

bool SCH_ITEM::IsConnectivityDirty ( )
inlineinherited

Definition at line 420 of file sch_item.h.

420 { return m_connectivity_dirty; }
bool m_connectivity_dirty
Definition: sch_item.h:504

References SCH_ITEM::m_connectivity_dirty.

◆ IsDangling()

bool SCH_LINE::IsDangling ( ) const
inlineoverridevirtual

Reimplemented from SCH_ITEM.

Definition at line 201 of file sch_line.h.

201 { return m_startIsDangling || m_endIsDangling; }
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265

References m_endIsDangling, and m_startIsDangling.

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 121 of file eda_item.h.

121 { return m_flags & IS_DRAGGING; }
#define IS_DRAGGING
Item being dragged.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_DRAGGING, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

◆ IsEndDangling()

bool SCH_LINE::IsEndDangling ( ) const
inline

Definition at line 200 of file sch_line.h.

200 { return m_endIsDangling; }
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266

References m_endIsDangling.

Referenced by KIGFX::SCH_PAINTER::draw(), and IsPointClickableAnchor().

◆ IsEndPoint()

bool SCH_LINE::IsEndPoint ( const wxPoint &  aPoint) const
inline

Definition at line 80 of file sch_line.h.

81  {
82  return aPoint == m_start || aPoint == m_end;
83  }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, and m_start.

Referenced by SCH_EDIT_FRAME::BreakSegments(), SCH_EDIT_FRAME::DeleteJunction(), doIsConnected(), SCH_SCREEN::MarkConnections(), and SCH_EDIT_FRAME::SchematicCleanUp().

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 124 of file eda_item.h.

124 { return m_flags & ENTERED; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define ENTERED
indicates a group has been entered

References ENTERED, and EDA_ITEM::m_flags.

Referenced by KIGFX::PCB_PAINTER::draw().

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 206 of file eda_item.h.

206 { return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:480

References EDA_ITEM::m_forceVisible.

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

◆ IsGraphicLine()

bool SCH_LINE::IsGraphicLine ( ) const

Return if the line is a graphic (non electrical line)

Currently, anything on the internal NOTES layer is a graphic line

Definition at line 916 of file sch_line.cpp.

917 {
918  return ( GetLayer() == LAYER_NOTES );
919 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268

References SCH_ITEM::GetLayer(), and LAYER_NOTES.

Referenced by GetDefaultStyle(), SCH_LEGACY_PLUGIN::saveLine(), and UpdateDanglingState().

◆ IsHypertext()

virtual bool SCH_ITEM::IsHypertext ( ) const
inlinevirtualinherited

Allow items to support hypertext actions when hovered/clicked.

Reimplemented in SCH_FIELD.

Definition at line 261 of file sch_item.h.

261 { return false; }

◆ IsLocked()

virtual bool SCH_ITEM::IsLocked ( ) const
inlinevirtualinherited
Returns
true if the object is locked, else false.

Definition at line 251 of file sch_item.h.

251 { return false; }

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 118 of file eda_item.h.

118 { return m_flags & IS_CHANGED; }
#define IS_CHANGED
Item was edited, and modified.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_CHANGED, and EDA_ITEM::m_flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMovableFromAnchorPoint()

virtual bool SCH_ITEM::IsMovableFromAnchorPoint ( ) const
inlinevirtualinherited
Returns
true for items which are moved with the anchor point at mouse cursor and false for items moved with no reference to anchor Usually return true for small items (labels, junctions) and false for items which can be large (hierarchical sheets, symbols)

Reimplemented in SCH_SYMBOL, SCH_BITMAP, SCH_SHEET_PIN, SCH_SHEET, and SCH_BUS_ENTRY_BASE.

Definition at line 229 of file sch_item.h.

229 { return true; }

Referenced by SCH_MOVE_TOOL::Main().

◆ IsMoving()

◆ IsNew()

◆ IsNull()

bool SCH_LINE::IsNull ( ) const
inline

Definition at line 88 of file sch_line.h.

88 { return m_start == m_end; }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, and m_start.

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_EDIT_FRAME::SchematicCleanUp(), and SCH_LINE_WIRE_BUS_TOOL::simplifyWireList().

◆ IsParallel()

bool SCH_LINE::IsParallel ( const SCH_LINE aLine) const

Definition at line 440 of file sch_line.cpp.

441 {
442  wxCHECK_MSG( aLine != nullptr && aLine->Type() == SCH_LINE_T, false,
443  wxT( "Cannot test line segment for overlap." ) );
444 
445  wxPoint firstSeg = m_end - m_start;
446  wxPoint secondSeg = aLine->m_end - aLine->m_start;
447 
448  // Use long long here to avoid overflow in calculations
449  return !( (long long) firstSeg.x * secondSeg.y - (long long) firstSeg.y * secondSeg.x );
450 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References m_end, m_start, SCH_LINE_T, and EDA_ITEM::Type().

Referenced by SCH_EDIT_FRAME::SchematicCleanUp().

◆ IsPointClickableAnchor()

bool SCH_LINE::IsPointClickableAnchor ( const wxPoint &  aPos) const
inlineoverridevirtual
Returns
true if the given point can start drawing (usually means the anchor is unused/free/dangling).

Reimplemented from SCH_ITEM.

Definition at line 220 of file sch_line.h.

221  {
222  return ( GetStartPoint() == aPos && IsStartDangling() )
223  || ( GetEndPoint() == aPos && IsEndDangling() );
224  }
wxPoint GetStartPoint() const
Definition: sch_line.h:90
bool IsEndDangling() const
Definition: sch_line.h:200
bool IsStartDangling() const
Definition: sch_line.h:199
wxPoint GetEndPoint() const
Definition: sch_line.h:93

References GetEndPoint(), GetStartPoint(), IsEndDangling(), and IsStartDangling().

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

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_SYMBOL, SCH_SHEET, SCH_LABEL, SCH_TEXT, SCH_FIELD, and SCH_SHEET_PIN.

Definition at line 403 of file eda_item.h.

403 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 125 of file eda_item.h.

125 { return m_flags & IS_RESIZING; }
#define IS_RESIZING
Item being resized.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_RESIZING, and EDA_ITEM::m_flags.

◆ IsSelected()

bool EDA_ITEM::IsSelected ( ) const
inlineinherited

Definition at line 123 of file eda_item.h.

123 { return m_flags & SELECTED; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define SELECTED

References EDA_ITEM::m_flags, and SELECTED.

Referenced by ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), KIGFX::SCH_PAINTER::draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DS_PROXY_UNDO_ITEM::DS_PROXY_UNDO_ITEM(), KIGFX::DS_RENDER_SETTINGS::GetColor(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_PAINTER::getLineWidth(), KIGFX::SCH_PAINTER::getRenderColor(), KIGFX::SCH_PAINTER::getTextThickness(), DIALOG_EXCHANGE_FOOTPRINTS::isMatch(), DIALOG_CHANGE_SYMBOLS::isMatch(), MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), EE_SELECTION_TOOL::RebuildSelection(), RENDER_3D_LEGACY::renderFootprint(), SCH_EDIT_TOOL::Rotate(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), GERBVIEW_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::selectionContains(), EE_SELECTION_TOOL::selectMultiple(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), KIGFX::SCH_PAINTER::setDeviceColors(), GERBVIEW_SELECTION_TOOL::unselect(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsStartDangling()

bool SCH_LINE::IsStartDangling ( ) const
inline

Definition at line 199 of file sch_line.h.

199 { return m_startIsDangling; }
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265

References m_startIsDangling.

Referenced by KIGFX::SCH_PAINTER::draw(), and IsPointClickableAnchor().

◆ IsStrokeEquivalent()

bool SCH_LINE::IsStrokeEquivalent ( const SCH_LINE aLine)
inline

Definition at line 127 of file sch_line.h.

128  {
129  if( m_stroke.GetWidth() != aLine->GetStroke().GetWidth() )
130  return false;
131 
132  if( m_stroke.GetColor() != aLine->GetStroke().GetColor() )
133  return false;
134 
136  PLOT_DASH_TYPE style_b = aLine->GetStroke().GetPlotStyle();
137 
138  return style_a == style_b
139  || ( style_a == PLOT_DASH_TYPE::DEFAULT && style_b == PLOT_DASH_TYPE::SOLID )
140  || ( style_a == PLOT_DASH_TYPE::SOLID && style_b == PLOT_DASH_TYPE::DEFAULT );
141  }
PLOT_DASH_TYPE GetPlotStyle() const
Definition: sch_item.h:166
int GetWidth() const
Definition: sch_item.h:163
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
PLOT_DASH_TYPE
Dashed line types.
Definition: plotter.h:104
COLOR4D GetColor() const
Definition: sch_item.h:169
virtual STROKE_PARAMS GetStroke() const override
Definition: sch_line.h:124

References DEFAULT, STROKE_PARAMS::GetColor(), STROKE_PARAMS::GetPlotStyle(), GetStroke(), STROKE_PARAMS::GetWidth(), m_stroke, and SOLID.

Referenced by SCH_EDIT_FRAME::SchematicCleanUp().

◆ IsType()

bool SCH_LINE::IsType ( const KICAD_T  aScanTypes[]) const
inlineoverridevirtual

Check 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 from EDA_ITEM.

Definition at line 62 of file sch_line.h.

63  {
64  if( SCH_ITEM::IsType( aScanTypes ) )
65  return true;
66 
67  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
68  {
69  if( *p == SCH_LINE_LOCATE_WIRE_T && m_layer == LAYER_WIRE )
70  return true;
71  else if ( *p == SCH_LINE_LOCATE_BUS_T && m_layer == LAYER_BUS )
72  return true;
73  else if ( *p == SCH_LINE_LOCATE_GRAPHIC_LINE_T && m_layer == LAYER_NOTES )
74  return true;
75  }
76 
77  return false;
78  }
search types array terminator (End Of Types)
Definition: typeinfo.h:81
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:77
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
virtual bool IsType(const KICAD_T aScanTypes[]) const
Check whether the item is one of the listed types.
Definition: eda_item.h:183

References EOT, EDA_ITEM::IsType(), LAYER_BUS, LAYER_NOTES, LAYER_WIRE, SCH_ITEM::m_layer, SCH_LINE_LOCATE_BUS_T, SCH_LINE_LOCATE_GRAPHIC_LINE_T, and SCH_LINE_LOCATE_WIRE_T.

Referenced by SCH_EDIT_FRAME::DeleteJunction().

◆ IsWire()

bool SCH_LINE::IsWire ( ) const

Return true if the line is a wire.

Returns
true if this line is on the wire layer.

Definition at line 922 of file sch_line.cpp.

923 {
924  return ( GetLayer() == LAYER_WIRE );
925 }
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268

References SCH_ITEM::GetLayer(), and LAYER_WIRE.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), KIGFX::SCH_PAINTER::draw(), and UpdateDanglingState().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 122 of file eda_item.h.

122 { return m_flags & IS_WIRE_IMAGE; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_WIRE_IMAGE, and EDA_ITEM::m_flags.

◆ 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

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

Definition at line 295 of file eda_item.h.

299  {
300  for( auto it : aList )
301  {
302  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
304  return SEARCH_RESULT::QUIT;
305  }
306 
308  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:93

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

Change first parameter to avoid the DList and use std::vector instead.

Definition at line 314 of file eda_item.h.

316  {
317  for( auto it : aList )
318  {
319  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
321  return SEARCH_RESULT::QUIT;
322  }
323 
325  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:93

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

◆ Matches() [1/2]

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

Compare 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_SYMBOL, SCH_SHEET, SCH_TEXT, SCH_FIELD, SCH_SHEET_PIN, ZONE, SCH_PIN, SCH_MARKER, PCB_MARKER, FP_TEXT, and PCB_TEXT.

Definition at line 365 of file eda_item.h.

366  {
367  return false;
368  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), inDiffPair(), PCB_TEXT::Matches(), FP_TEXT::Matches(), PCB_MARKER::Matches(), SCH_MARKER::Matches(), SCH_PIN::Matches(), ZONE::Matches(), SCH_SHEET_PIN::Matches(), SCH_FIELD::Matches(), SCH_TEXT::Matches(), SCH_EDITOR_CONTROL::ReplaceAndFindNext(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ Matches() [2/2]

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

Compare 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 118 of file eda_item.cpp.

119 {
120  wxString text = aText;
121  wxString searchText = aSearchData.GetFindString();
122 
123  // Don't match if searching for replaceable item and the item doesn't support text replace.
124  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
125  return false;
126 
127  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
128  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
129 
130  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
131  {
132  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
133  return text.Matches( searchText );
134 
135  return text.MakeUpper().Matches( searchText.MakeUpper() );
136  }
137 
138  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
139  return aText.Find( searchText ) != wxNOT_FOUND;
140 
141  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
142 }
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition: eda_item.h:403

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

◆ MergeOverlap()

SCH_LINE * SCH_LINE::MergeOverlap ( SCH_SCREEN aScreen,
SCH_LINE aLine,
bool  aCheckJunctions 
)

Check line against aLine to see if it overlaps and merge if it does.

This method will return an equivalent of the union of line and aLine if the two lines overlap. This method is used to merge multiple line segments into a single line.

Parameters
aScreenis the current screen.
aLineis the line to compare.
aCheckJunctionsis used to indicate if we need to check for a junction if the two segments are colinear and touch.
Returns
New line that combines the two or NULL on non-overlapping segments.

Definition at line 453 of file sch_line.cpp.

454 {
455  auto less = []( const wxPoint& lhs, const wxPoint& rhs ) -> bool
456  {
457  if( lhs.x == rhs.x )
458  return lhs.y < rhs.y;
459 
460  return lhs.x < rhs.x;
461  };
462 
463  wxCHECK_MSG( aLine != nullptr && aLine->Type() == SCH_LINE_T, nullptr,
464  wxT( "Cannot test line segment for overlap." ) );
465 
466  if( this == aLine || GetLayer() != aLine->GetLayer() )
467  return nullptr;
468 
469  auto leftmost_start = aLine->m_start;
470  auto leftmost_end = aLine->m_end;
471 
472  auto rightmost_start = m_start;
473  auto rightmost_end = m_end;
474 
475  // We place the start to the left and below the end of both lines
476  if( leftmost_start != std::min( { leftmost_start, leftmost_end }, less ) )
477  std::swap( leftmost_start, leftmost_end );
478  if( rightmost_start != std::min( { rightmost_start, rightmost_end }, less ) )
479  std::swap( rightmost_start, rightmost_end );
480 
481  // - leftmost is the line that starts farthest to the left
482  // - other is the line that is _not_ leftmost
483  // - rightmost is the line that ends farthest to the right. This may or may not be 'other'
484  // as the second line may be completely covered by the first.
485  if( less( rightmost_start, leftmost_start ) )
486  {
487  std::swap( leftmost_start, rightmost_start );
488  std::swap( leftmost_end, rightmost_end );
489  }
490 
491  wxPoint other_start = rightmost_start;
492  wxPoint other_end = rightmost_end;
493 
494  if( less( rightmost_end, leftmost_end ) )
495  {
496  rightmost_start = leftmost_start;
497  rightmost_end = leftmost_end;
498  }
499 
500  // If we end one before the beginning of the other, no overlap is possible
501  if( less( leftmost_end, other_start ) )
502  {
503  return nullptr;
504  }
505 
506  // Search for a common end:
507  if( ( leftmost_start == other_start ) && ( leftmost_end == other_end ) ) // Trivial case
508  {
509  auto ret = new SCH_LINE( *aLine );
510  ret->SetStartPoint( leftmost_start );
511  ret->SetEndPoint( leftmost_end );
512 
513  if( IsSelected() || aLine->IsSelected() )
514  ret->SetSelected();
515 
516  return ret;
517  }
518 
519  bool colinear = false;
520 
521  /* Test alignment: */
522  if( ( leftmost_start.y == leftmost_end.y ) &&
523  ( other_start.y == other_end.y ) ) // Horizontal segment
524  {
525  colinear = ( leftmost_start.y == other_start.y );
526  }
527  else if( ( leftmost_start.x == leftmost_end.x ) &&
528  ( other_start.x == other_end.x ) ) // Vertical segment
529  {
530  colinear = ( leftmost_start.x == other_start.x );
531  }
532  else
533  {
534  // We use long long here to avoid overflow -- it enforces promotion
535  // The slope of the left-most line is dy/dx. Then we check that the slope from the
536  // left most start to the right most start is the same as well as the slope from the
537  // left most start to right most end.
538  long long dx = leftmost_end.x - leftmost_start.x;
539  long long dy = leftmost_end.y - leftmost_start.y;
540  colinear = ( ( ( other_start.y - leftmost_start.y ) * dx ==
541  ( other_start.x - leftmost_start.x ) * dy ) &&
542  ( ( other_end.y - leftmost_start.y ) * dx ==
543  ( other_end.x - leftmost_start.x ) * dy ) );
544  }
545 
546  if( !colinear )
547  return nullptr;
548 
549  // We either have a true overlap or colinear touching segments. We always want to merge
550  // the former, but the later only get merged if there no junction at the touch point.
551 
552  bool touching = leftmost_end == rightmost_start;
553 
554  if( touching && aCheckJunctions && aScreen->IsJunctionNeeded( leftmost_end ) )
555  return nullptr;
556 
557  // Make a new segment that merges the 2 segments
558  leftmost_end = rightmost_end;
559 
560  auto ret = new SCH_LINE( *aLine );
561  ret->SetStartPoint( leftmost_start );
562  ret->SetEndPoint( leftmost_end );
563 
564  if( IsSelected() || aLine->IsSelected() )
565  ret->SetSelected();
566 
567  return ret;
568 }
bool IsSelected() const
Definition: eda_item.h:123
wxPoint m_end
Line end point.
Definition: sch_line.h:268
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
bool IsJunctionNeeded(const wxPoint &aPosition, bool aNew=false) const
Test if a junction is required for the items at aPosition on the screen.
Definition: sch_screen.cpp:401
wxPoint m_start
Line start point.
Definition: sch_line.h:267
SCH_LINE(const wxPoint &pos=wxPoint(0, 0), int layer=LAYER_NOTES)
Definition: sch_line.cpp:38
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References SCH_ITEM::GetLayer(), SCH_SCREEN::IsJunctionNeeded(), EDA_ITEM::IsSelected(), m_end, m_start, SCH_LINE(), SCH_LINE_T, and EDA_ITEM::Type().

Referenced by SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_FRAME::SchematicCleanUp(), and SCH_LINE_WIRE_BUS_TOOL::simplifyWireList().

◆ MirrorHorizontally()

void SCH_LINE::MirrorHorizontally ( int  aCenter)
overridevirtual

Mirror item horizontally about aCenter.

Implements SCH_ITEM.

Definition at line 388 of file sch_line.cpp.

389 {
390  MIRROR( m_start.x, aCenter );
391  MIRROR( m_end.x, aCenter );
392 }
void MIRROR(T &aPoint, const T &aMirrorRef)
Updates aPoint with the mirror of aPoint relative to the aMirrorRef.
Definition: mirror.h:40
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, m_start, and MIRROR().

◆ MirrorVertically()

void SCH_LINE::MirrorVertically ( int  aCenter)
overridevirtual

Mirror item vertically about aCenter.

Implements SCH_ITEM.

Definition at line 381 of file sch_line.cpp.

382 {
383  MIRROR( m_start.y, aCenter );
384  MIRROR( m_end.y, aCenter );
385 }
void MIRROR(T &aPoint, const T &aMirrorRef)
Updates aPoint with the mirror of aPoint relative to the aMirrorRef.
Definition: mirror.h:40
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, m_start, and MIRROR().

◆ Move()

void SCH_LINE::Move ( const wxPoint &  aMoveVector)
overridevirtual

Move the item by aMoveVector to a new position.

Implements SCH_ITEM.

Definition at line 110 of file sch_line.cpp.

111 {
112  if( aOffset != wxPoint( 0, 0 ) )
113  {
114  m_start += aOffset;
115  m_end += aOffset;
116  SetModified();
117  }
118 }
void SetModified()
Definition: eda_item.cpp:65
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, m_start, and EDA_ITEM::SetModified().

◆ MoveEnd()

void SCH_LINE::MoveEnd ( const wxPoint &  aMoveVector)

Definition at line 131 of file sch_line.cpp.

132 {
133  if( aOffset != wxPoint( 0, 0 ) )
134  {
135  m_end += aOffset;
136  SetModified();
137  }
138 }
void SetModified()
Definition: eda_item.cpp:65
wxPoint m_end
Line end point.
Definition: sch_line.h:268

References m_end, and EDA_ITEM::SetModified().

Referenced by SCH_MOVE_TOOL::moveItem().

◆ MoveStart()

void SCH_LINE::MoveStart ( const wxPoint &  aMoveVector)

Definition at line 121 of file sch_line.cpp.

122 {
123  if( aOffset != wxPoint( 0, 0 ) )
124  {
125  m_start += aOffset;
126  SetModified();
127  }
128 }
void SetModified()
Definition: eda_item.cpp:65
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_start, and EDA_ITEM::SetModified().

Referenced by SCH_MOVE_TOOL::moveItem().

◆ NetClass()

NETCLASSPTR SCH_ITEM::NetClass ( const SCH_SHEET_PATH aSheet = nullptr) const
inherited

Definition at line 145 of file sch_item.cpp.

146 {
147  if( m_connection_map.size() )
148  {
149  SCH_CONNECTION* connection = Connection( aSheet );
150 
151  if( connection )
152  {
153  NET_SETTINGS& netSettings = Schematic()->Prj().GetProjectFile().NetSettings();
154  const wxString& netclassName = netSettings.GetNetclassName( connection->Name() );
155 
156  return netSettings.m_NetClasses.Find( netclassName );
157  }
158  }
159 
160  return nullptr;
161 }
NETCLASSPTR Find(const wxString &aName) const
Search this container for a NETCLASS given by aName.
Definition: netclass.cpp:132
const wxString & GetNetclassName(const wxString &aNetName) const
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:145
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
Definition: sch_item.cpp:97
NET_SETTINGS & NetSettings()
Definition: project_file.h:94
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
Definition: sch_item.cpp:131
NETCLASSES m_NetClasses
Definition: net_settings.h:40
wxString Name(bool aIgnoreSheet=false) const
NET_SETTINGS stores various net-related settings in a project context.
Definition: net_settings.h:32
std::unordered_map< SCH_SHEET_PATH, SCH_CONNECTION * > m_connection_map
Store connectivity information, per sheet.
Definition: sch_item.h:502
PROJECT & Prj() const override
Return a reference to the project this schematic is part of.
Definition: schematic.h:75
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).

References SCH_ITEM::Connection(), NETCLASSES::Find(), NET_SETTINGS::GetNetclassName(), PROJECT::GetProjectFile(), SCH_ITEM::m_connection_map, NET_SETTINGS::m_NetClasses, SCH_CONNECTION::Name(), PROJECT_FILE::NetSettings(), SCHEMATIC::Prj(), and SCH_ITEM::Schematic().

Referenced by GetEffectiveLineStyle(), SCH_JUNCTION::getEffectiveShape(), SCH_JUNCTION::GetJunctionColor(), GetLineColor(), SCH_BUS_WIRE_ENTRY::GetPenWidth(), GetPenWidth(), SCH_BUS_BUS_ENTRY::GetPenWidth(), SCH_BUS_ENTRY_BASE::GetStrokeColor(), and SCH_BUS_ENTRY_BASE::GetStrokeStyle().

◆ operator<() [1/2]

bool SCH_LINE::operator< ( const SCH_ITEM aItem) const
overridevirtual

Reimplemented from SCH_ITEM.

Definition at line 757 of file sch_line.cpp.

758 {
759  if( Type() != aItem.Type() )
760  return Type() < aItem.Type();
761 
762  auto line = static_cast<const SCH_LINE*>( &aItem );
763 
764  if( GetLayer() != line->GetLayer() )
765  return GetLayer() < line->GetLayer();
766 
767  if( GetStartPoint().x != line->GetStartPoint().x )
768  return GetStartPoint().x < line->GetStartPoint().x;
769 
770  if( GetStartPoint().y != line->GetStartPoint().y )
771  return GetStartPoint().y < line->GetStartPoint().y;
772 
773  if( GetEndPoint().x != line->GetEndPoint().x )
774  return GetEndPoint().x < line->GetEndPoint().x;
775 
776  return GetEndPoint().y < line->GetEndPoint().y;
777 }
wxPoint GetStartPoint() const
Definition: sch_line.h:90
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113
wxPoint GetEndPoint() const
Definition: sch_line.h:93

References GetEndPoint(), SCH_ITEM::GetLayer(), GetStartPoint(), and EDA_ITEM::Type().

◆ operator<() [2/2]

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 171 of file eda_item.cpp.

172 {
173  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
174  GetClass() ) );
175 
176  return false;
177 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
virtual wxString GetClass() const =0
Return the class name.

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

◆ Plot()

void SCH_LINE::Plot ( PLOTTER aPlotter) const
overridevirtual

Plot the schematic item to aPlotter.

Parameters
aPlotteris the PLOTTER object to plot to.

Reimplemented from SCH_ITEM.

Definition at line 835 of file sch_line.cpp.

836 {
837  auto* settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( aPlotter->RenderSettings() );
838  int penWidth;
840 
841  if( color == COLOR4D::UNSPECIFIED )
842  color = settings->GetLayerColor( GetLayer() );
843 
844  aPlotter->SetColor( color );
845 
846  switch( m_layer )
847  {
848  case LAYER_WIRE: penWidth = settings->m_DefaultWireThickness; break;
849  case LAYER_BUS: penWidth = settings->m_DefaultBusThickness; break;
850  default: penWidth = GetPenWidth(); break;
851  }
852 
853  if( m_stroke.GetWidth() != 0 )
854  penWidth = m_stroke.GetWidth();
855 
856  penWidth = std::max( penWidth, settings->GetMinPenWidth() );
857 
858  aPlotter->SetCurrentLineWidth( penWidth );
859  aPlotter->SetDash( GetEffectiveLineStyle() );
860 
861  aPlotter->MoveTo( m_start );
862  aPlotter->FinishTo( m_end );
863 
864  aPlotter->SetDash( PLOT_DASH_TYPE::SOLID );
865 }
void FinishTo(const wxPoint &pos)
Definition: plotter.h:273
COLOR4D GetLineColor() const
Returns COLOR4D::UNSPECIFIED if a custom color hasn't been set for this line.
Definition: sch_line.cpp:210
int color
Definition: DXF_plotter.cpp:57
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
int GetPenWidth() const override
Definition: sch_line.cpp:277
int GetWidth() const
Definition: sch_item.h:163
wxPoint m_end
Line end point.
Definition: sch_line.h:268
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
virtual void SetColor(const COLOR4D &color)=0
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
void MoveTo(const wxPoint &pos)
Definition: plotter.h:263
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:156
PLOT_DASH_TYPE GetEffectiveLineStyle() const
Definition: sch_line.cpp:257
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
wxPoint m_start
Line start point.
Definition: sch_line.h:267
virtual void SetDash(PLOT_DASH_TYPE dashed)=0
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, PLOTTER::FinishTo(), GetEffectiveLineStyle(), SCH_ITEM::GetLayer(), GetLineColor(), GetPenWidth(), STROKE_PARAMS::GetWidth(), LAYER_BUS, LAYER_WIRE, m_end, SCH_ITEM::m_layer, m_start, m_stroke, PLOTTER::MoveTo(), PLOTTER::RenderSettings(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), PLOTTER::SetDash(), and SOLID.

◆ Print()

void SCH_LINE::Print ( const RENDER_SETTINGS aSettings,
const wxPoint &  aOffset 
)
overridevirtual

Print a schematic item.

Each schematic item should have its own method

Parameters
aOffsetis the drawing offset (usually {0,0} but can be different when moving an object).

Implements SCH_ITEM.

Definition at line 319 of file sch_line.cpp.

320 {
321  wxDC* DC = aSettings->GetPrintDC();
323 
324  if( color == COLOR4D::UNSPECIFIED )
325  color = aSettings->GetLayerColor( GetLayer() );
326 
327  wxPoint start = m_start;
328  wxPoint end = m_end;
330  int penWidth = std::max( GetPenWidth(), aSettings->GetDefaultPenWidth() );
331 
332  if( lineStyle <= PLOT_DASH_TYPE::FIRST_TYPE )
333  {
334  GRLine( nullptr, DC, start.x, start.y, end.x, end.y, penWidth, color );
335  }
336  else
337  {
338  EDA_RECT clip( (wxPoint) start, wxSize( end.x - start.x, end.y - start.y ) );
339  clip.Normalize();
340 
341  double theta = atan2( end.y - start.y, end.x - start.x );
342  double strokes[] = { 1.0, DASH_GAP_LEN( penWidth ), 1.0, DASH_GAP_LEN( penWidth ) };
343 
344  switch( lineStyle )
345  {
346  default:
348  strokes[0] = strokes[2] = DASH_MARK_LEN( penWidth );
349  break;
350  case PLOT_DASH_TYPE::DOT:
351  strokes[0] = strokes[2] = DOT_MARK_LEN( penWidth );
352  break;
354  strokes[0] = DASH_MARK_LEN( penWidth );
355  strokes[2] = DOT_MARK_LEN( penWidth );
356  break;
357  }
358 
359  for( size_t i = 0; i < 10000; ++i )
360  {
361  // Calculations MUST be done in doubles to keep from accumulating rounding
362  // errors as we go.
363  wxPoint next( start.x + strokes[ i % 4 ] * cos( theta ),
364  start.y + strokes[ i % 4 ] * sin( theta ) );
365 
366  // Drawing each segment can be done rounded to ints.
367  wxPoint segStart( KiROUND( start.x ), KiROUND( start.y ) );
368  wxPoint segEnd( KiROUND( next.x ), KiROUND( next.y ) );
369 
370  if( ClipLine( &clip, segStart.x, segStart.y, segEnd.x, segEnd.y ) )
371  break;
372  else if( i % 2 == 0 )
373  GRLine( nullptr, DC, segStart.x, segStart.y, segEnd.x, segEnd.y, penWidth, color );
374 
375  start = next;
376  }
377  }
378 }
CITER next(CITER it)
Definition: ptree.cpp:126
COLOR4D GetLineColor() const
Returns COLOR4D::UNSPECIFIED if a custom color hasn't been set for this line.
Definition: sch_line.cpp:210
int color
Definition: DXF_plotter.cpp:57
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
#define DASH_MARK_LEN(aLineWidth)
bool ClipLine(const EDA_RECT *aClipBox, int &x1, int &y1, int &x2, int &y2)
Test if any part of a line falls within the bounds of a rectangle.
#define DOT_MARK_LEN(aLineWidth)
int GetPenWidth() const override
Definition: sch_line.cpp:277
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, const COLOR4D &Color, wxPenStyle aStyle)
Definition: gr_basic.cpp:212
wxDC * GetPrintDC() const
wxPoint m_end
Line end point.
Definition: sch_line.h:268
PLOT_DASH_TYPE
Dashed line types.
Definition: plotter.h:104
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition: sch_item.h:268
PLOT_DASH_TYPE GetEffectiveLineStyle() const
Definition: sch_line.cpp:257
Handle the component boundary box.
Definition: eda_rect.h:42
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:73
#define DASH_GAP_LEN(aLineWidth)
int GetDefaultPenWidth() const
wxPoint m_start
Line start point.
Definition: sch_line.h:267
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References ClipLine(), color, DASH, DASH_GAP_LEN, DASH_MARK_LEN, DASHDOT, DOT, DOT_MARK_LEN, FIRST_TYPE, KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), GetEffectiveLineStyle(), SCH_ITEM::GetLayer(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetLineColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GRLine(), KiROUND(), m_end, m_start, next(), and EDA_RECT::Normalize().

◆ Replace() [1/2]

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

Perform 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 145 of file eda_item.cpp.

146 {
147  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
148 
149  int result = searchString.Find( ( aSearchData.GetFlags() & wxFR_MATCHCASE ) ?
150  aSearchData.GetFindString() :
151  aSearchData.GetFindString().Upper() );
152 
153  if( result == wxNOT_FOUND )
154  return false;
155 
156  wxString prefix = aText.Left( result );
157  wxString suffix;
158 
159  if( aSearchData.GetFindString().length() + result < aText.length() )
160  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
161 
162  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
163  aText, prefix, aSearchData.GetReplaceString(), suffix );
164 
165  aText = prefix + aSearchData.GetReplaceString() + suffix;
166 
167  return true;
168 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.

References traceFindReplace.

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

◆ Replace() [2/2]

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

Perform 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_FIELD, SCH_SHEET_PIN, and SCH_PIN.

Definition at line 392 of file eda_item.h.

393  {
394  return false;
395  }

◆ Rotate()

void SCH_LINE::Rotate ( const wxPoint &  aCenter)
overridevirtual

Rotate the item around aCenter 90 degrees in the clockwise direction.

Implements SCH_ITEM.

Definition at line 395 of file sch_line.cpp.

396 {
397  RotatePoint( &m_start, aCenter, 900 );
398  RotatePoint( &m_end, aCenter, 900 );
399 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:229
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, m_start, and RotatePoint().

◆ RotateEnd()

void SCH_LINE::RotateEnd ( const wxPoint &  aCenter)

Definition at line 408 of file sch_line.cpp.

409 {
410  RotatePoint( &m_end, aCenter, 900 );
411 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:229
wxPoint m_end
Line end point.
Definition: sch_line.h:268

References m_end, and RotatePoint().

Referenced by SCH_EDIT_TOOL::Rotate().

◆ RotateStart()

void SCH_LINE::RotateStart ( const wxPoint &  aCenter)

Definition at line 402 of file sch_line.cpp.

403 {
404  RotatePoint( &m_start, aCenter, 900 );
405 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:229
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_start, and RotatePoint().

Referenced by SCH_EDIT_TOOL::Rotate().

◆ RunOnChildren()

virtual void SCH_ITEM::RunOnChildren ( const std::function< void(SCH_ITEM *)> &  aFunction)
inlinevirtualinherited

Reimplemented in SCH_SYMBOL, SCH_SHEET, and SCH_GLOBALLABEL.

Definition at line 449 of file sch_item.h.

449 { }

Referenced by SCH_ITEM::Duplicate(), SCH_SHEET_LIST::GetItem(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ Schematic()

SCHEMATIC * SCH_ITEM::Schematic ( ) const
inherited

Searches the item hierarchy to find a SCHEMATIC.

Every SCH_ITEM that lives on a SCH_SCREEN should be parented to either that screen or another SCH_ITEM on the same screen (for example, pins to their symbols).

Every SCH_SCREEN should be parented to the SCHEMATIC.

Note
This hierarchy is not the same as the sheet hierarchy!
Returns
the parent schematic this item lives on, or nullptr.

Definition at line 97 of file sch_item.cpp.

98 {
99  EDA_ITEM* parent = GetParent();
100 
101  while( parent )
102  {
103  if( parent->Type() == SCHEMATIC_T )
104  return static_cast<SCHEMATIC*>( parent );
105  else
106  parent = parent->GetParent();
107  }
108 
109  return nullptr;
110 }
EDA_ITEM * GetParent() const
Definition: eda_item.h:115
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:100
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References EDA_ITEM::GetParent(), SCHEMATIC_T, and EDA_ITEM::Type().

Referenced by SCH_ITEM::Connection(), SCH_DRAWING_TOOLS::createSheetPin(), DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES(), SCH_FIELD::DoHypertextMenu(), SCH_GLOBALLABEL::GetBoundingBox(), SCH_MARKER::GetColorLayer(), SCH_JUNCTION::getEffectiveShape(), SCH_TEXT::GetLabelBoxExpansion(), SCH_BUS_ENTRY_BASE::GetMsgPanelInfo(), GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_NO_CONNECT::GetPenWidth(), SCH_SHEET_PIN::GetPenWidth(), SCH_BUS_WIRE_ENTRY::GetPenWidth(), GetPenWidth(), SCH_BUS_BUS_ENTRY::GetPenWidth(), SCH_SHEET::GetPenWidth(), SCH_SYMBOL::GetPins(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), SCH_TEXT::GetTextOffset(), SCH_PIN::HitTest(), SCH_GLOBALLABEL::HitTest(), inheritNetclass(), SCH_SHEET::IsRootSheet(), SCH_LABEL::IsType(), SCH_ITEM::NetClass(), DIALOG_SYMBOL_PROPERTIES::OnAddField(), DIALOG_TEXT_AND_LABEL_PROPERTIES::onScintillaCharAdded(), DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded(), SCH_GLOBALLABEL::Plot(), SCH_GLOBALLABEL::Print(), SCH_HIERLABEL::Print(), SCH_SHEET::ResolveTextVar(), SCH_SYMBOL::ResolveTextVar(), SCH_GLOBALLABEL::ResolveTextVar(), DIALOG_SCH_FIELD_PROPERTIES::UpdateField(), and SCH_MARKER::ViewGetLayers().

◆ Set() [1/3]

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

Definition at line 42 of file inspectable.h.

43  {
45  TYPE_ID thisType = TYPE_HASH( *this );
46  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
47 
48  if( object )
49  aProperty->setter( object, aValue );
50 
51  return object != nullptr;
52  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
virtual void setter(void *aObject, wxAny &aValue)=0
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
virtual size_t OwnerHash() const =0
Return 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 55 of file inspectable.h.

56  {
58  TYPE_ID thisType = TYPE_HASH( *this );
59  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
60 
61  if( object )
62  aProperty->set<T>( object, aValue );
63 
64  return object != nullptr;
65  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
void set(void *aObject, T aValue)
Definition: property.h:261
virtual size_t OwnerHash() const =0
Return 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 68 of file inspectable.h.

69  {
71  TYPE_ID thisType = TYPE_HASH( *this );
72  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
73  void* object = nullptr;
74 
75  if( prop )
76  {
77  object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
78 
79  if( object )
80  prop->set<T>( object, aValue );
81  }
82 
83  return object != nullptr;
84  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Return a property for a specific type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
void set(void *aObject, T aValue)
Definition: property.h:261
virtual size_t OwnerHash() const =0
Return 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().

◆ SetBrightened()

◆ SetConnectivityDirty()

void SCH_ITEM::SetConnectivityDirty ( bool  aDirty = true)
inlineinherited

Definition at line 422 of file sch_item.h.

422 { m_connectivity_dirty = aDirty; }
bool m_connectivity_dirty
Definition: sch_item.h:504

References SCH_ITEM::m_connectivity_dirty.

Referenced by SCH_EDIT_FRAME::SaveCopyInUndoList().

◆ SetEndPoint()

◆ SetFieldsAutoplaced()

void SCH_ITEM::SetFieldsAutoplaced ( )
inlineinherited

Definition at line 431 of file sch_item.h.

References FIELDS_AUTOPLACED_AUTO, and SCH_ITEM::m_fieldsAutoplaced.

◆ SetFlags()

void EDA_ITEM::SetFlags ( EDA_ITEM_FLAGS  aMask)
inlineinherited

Definition at line 153 of file eda_item.h.

153 { m_flags |= aMask; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References EDA_ITEM::m_flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddFootprintToBoard(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SCH_MOVE_TOOL::AlignElements(), PCB_CONTROL::AppendBoard(), FOOTPRINT::BuildPolyCourtyards(), SCH_EDIT_TOOL::ChangeTextType(), GRAPHICS_CLEANER::cleanupSegments(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SCH_DRAWING_TOOLS::createNewText(), SCH_DRAWING_TOOLS::createSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), EDIT_TOOL::DragArcTrack(), KIGFX::SCH_PAINTER::draw(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), PCB_SELECTION_TOOL::EnterGroup(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), SCH_MOVE_TOOL::getConnectedDragItems(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), EE_SELECTION_TOOL::Main(), TRACKS_CLEANER::mergeCollinearSegments(), SYMBOL_EDITOR_MOVE_TOOL::moveItem(), SCH_MOVE_TOOL::moveItem(), EE_SELECTION_TOOL::narrowSelection(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), SCH_ALTIUM_PLUGIN::ParseBezier(), SCH_ALTIUM_PLUGIN::ParseBus(), SCH_ALTIUM_PLUGIN::ParseBusEntry(), SCH_ALTIUM_PLUGIN::ParseJunction(), SCH_ALTIUM_PLUGIN::ParseLabel(), SCH_ALTIUM_PLUGIN::ParseLine(), SCH_ALTIUM_PLUGIN::ParseNetLabel(), SCH_ALTIUM_PLUGIN::ParseNoERC(), SCH_ALTIUM_PLUGIN::ParsePolygon(), SCH_ALTIUM_PLUGIN::ParsePolyline(), SCH_ALTIUM_PLUGIN::ParsePort(), SCH_ALTIUM_PLUGIN::ParseRectangle(), SCH_ALTIUM_PLUGIN::ParseRoundRectangle(), SCH_ALTIUM_PLUGIN::ParseSheetSymbol(), SCH_ALTIUM_PLUGIN::ParseWire(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), BOARD_EDITOR_CONTROL::PlaceFootprint(), PL_DRAWING_TOOLS::PlaceItem(), DRAWING_TOOL::PlaceText(), BACK_ANNOTATE::processNetNameChange(), SCH_EDIT_FRAME::PutDataInPreviousState(), PCB_SELECTION_TOOL::RebuildSelection(), FOOTPRINT::Remove(), BOARD::Remove(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), 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(), DS_DATA_ITEM::SyncDrawItems(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Set and clear 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 204 of file eda_item.h.

204 { m_forceVisible = aEnable; }
bool m_forceVisible
Definition: eda_item.h:480

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetLayer()

◆ SetLineColor() [1/2]

void SCH_LINE::SetLineColor ( const COLOR4D aColor)

Definition at line 189 of file sch_line.cpp.

190 {
191  m_stroke.SetColor( aColor );
192 }
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
void SetColor(const COLOR4D &aColor)
Definition: sch_item.h:170

References m_stroke, and STROKE_PARAMS::SetColor().

Referenced by KIGFX::SCH_PAINTER::draw(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem().

◆ SetLineColor() [2/2]

void SCH_LINE::SetLineColor ( const double  r,
const double  g,
const double  b,
const double  a 
)

Definition at line 195 of file sch_line.cpp.

196 {
197  COLOR4D newColor(r, g, b, a);
198 
199  if( newColor == COLOR4D::UNSPECIFIED )
200  m_stroke.SetColor( COLOR4D::UNSPECIFIED );
201  else
202  {
203  // Eeschema does not allow alpha channel in colors
204  newColor.a = 1.0;
205  m_stroke.SetColor( newColor );
206  }
207 }
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
void SetColor(const COLOR4D &aColor)
Definition: sch_item.h:170
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References KIGFX::COLOR4D::a, m_stroke, and STROKE_PARAMS::SetColor().

◆ SetLineStyle() [1/2]

◆ SetLineStyle() [2/2]

void SCH_LINE::SetLineStyle ( const int  aStyleId)

Definition at line 233 of file sch_line.cpp.

234 {
235  SetLineStyle( static_cast<PLOT_DASH_TYPE>( aStyleId ) );
236 }
void SetLineStyle(const PLOT_DASH_TYPE aStyle)
Definition: sch_line.cpp:239

References SetLineStyle().

◆ SetLineWidth()

◆ SetLocked()

virtual void SCH_ITEM::SetLocked ( bool  aLocked)
inlinevirtualinherited

Set the 'lock' status to aLocked for of this item.

Definition at line 256 of file sch_item.h.

256 {}

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 65 of file eda_item.cpp.

66 {
68 
69  // If this a child object, then the parent modification state also needs to be set.
70  if( m_parent )
72 }
#define IS_CHANGED
Item was edited, and modified.
void SetModified()
Definition: eda_item.cpp:65
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:479
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:153

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

Referenced by SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), LEGACY_PLUGIN::loadZONE_CONTAINER(), Move(), SCH_SYMBOL::Move(), MoveEnd(), MoveStart(), LIB_PIN::MoveTo(), PCB_EDIT_FRAME::OpenProjectFiles(), ALTIUM_PCB::Parse(), SCH_ALTIUM_PLUGIN::ParseFileHeader(), LIB_SYMBOL::RemoveDrawItem(), SCH_SYMBOL::SetConvert(), SCH_SYMBOL::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SCH_SYMBOL::SetTransform(), and SCH_SYMBOL::SetUnit().

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in PCB_DIMENSION_BASE.

Definition at line 116 of file eda_item.h.

116 { m_parent = aParent; }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:479

References EDA_ITEM::m_parent.

Referenced by FOOTPRINT::Add(), BOARD::Add(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewFootprint(), SCH_SHEET::AddPin(), PAD::AddPrimitive(), PAD::AddPrimitiveArc(), PAD::AddPrimitiveCircle(), PAD::AddPrimitiveCurve(), PAD::AddPrimitivePoly(), PAD::AddPrimitiveRect(), PAD::AddPrimitiveSegment(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_SCREEN::Append(), LIB_FIELD::Copy(), SYMBOL_EDIT_FRAME::CreateNewSymbol(), SCH_DRAWING_TOOLS::createNewText(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), PCB_EDIT_FRAME::ExchangeFootprint(), LIB_SYMBOL::Flatten(), FOOTPRINT::FOOTPRINT(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), CADSTAR_SCH_ARCHIVE_LOADER::getKiCadSchText(), LIB_SYMBOL::LIB_SYMBOL(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), FOOTPRINT::operator=(), LIB_SYMBOL::operator=(), PCB_PARSER::parseFOOTPRINT_unchecked(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_SEXPR_PARSER::ParseSymbol(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), PCB_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), pasteFootprintItemsToFootprintEditor(), BOARD_EDITOR_CONTROL::PlaceFootprint(), 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_SYMBOL::SetFields(), PCB_DIMENSION_BASE::SetParent(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_SHEET::SwapData(), SCH_GLOBALLABEL::SwapData(), SCH_SYMBOL::SwapData(), and SwapItemData().

◆ SetPosition()

void SCH_LINE::SetPosition ( const wxPoint &  aPosition)
overridevirtual

Reimplemented from EDA_ITEM.

Definition at line 868 of file sch_line.cpp.

869 {
870  m_end = m_end - ( m_start - aPosition );
871  m_start = aPosition;
872 }
wxPoint m_end
Line end point.
Definition: sch_line.h:268
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, and m_start.

◆ SetSelected()

◆ SetStartPoint()

◆ SetState()

void EDA_ITEM::SetState ( EDA_ITEM_FLAGS  type,
bool  state 
)
inlineinherited

Definition at line 142 of file eda_item.h.

143  {
144  if( state )
145  m_status |= type; // state = ON or OFF
146  else
147  m_status &= ~type;
148  }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

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

◆ SetStatus()

void EDA_ITEM::SetStatus ( EDA_ITEM_FLAGS  aStatus)
inlineinherited

Definition at line 151 of file eda_item.h.

151 { m_status = aStatus; }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetStoredPos()

void SCH_ITEM::SetStoredPos ( const wxPoint &  aPos)
inlineinherited

Definition at line 232 of file sch_item.h.

232 { m_storedPos = aPos; }
wxPoint m_storedPos
Definition: sch_item.h:495

References SCH_ITEM::m_storedPos.

Referenced by SCH_MOVE_TOOL::Main().

◆ SetStroke()

virtual void SCH_LINE::SetStroke ( const STROKE_PARAMS aStroke)
inlineoverridevirtual

Reimplemented from SCH_ITEM.

Definition at line 125 of file sch_line.h.

125 { m_stroke = aStroke; }
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269

References m_stroke.

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

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 128 of file eda_item.h.

128 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:153
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ Sort()

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

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 421 of file eda_item.h.

421 { return *aLeft < *aRight; }

◆ SwapData()

void SCH_LINE::SwapData ( SCH_ITEM aItem)
overridevirtual

Swap the internal data structures aItem with the schematic item.

Obviously, aItem must have the same type than me.

Parameters
aItemThe item to swap the data structures with.

Reimplemented from SCH_ITEM.

Definition at line 812 of file sch_line.cpp.

813 {
814  SCH_LINE* item = (SCH_LINE*) aItem;
815 
816  std::swap( m_layer, item->m_layer );
817 
818  std::swap( m_start, item->m_start );
819  std::swap( m_end, item->m_end );
820  std::swap( m_startIsDangling, item->m_startIsDangling );
821  std::swap( m_endIsDangling, item->m_endIsDangling );
822  std::swap( m_stroke, item->m_stroke );
823 }
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266
SCH_LAYER_ID m_layer
Definition: sch_item.h:492
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265
wxPoint m_end
Line end point.
Definition: sch_line.h:268
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
wxPoint m_start
Line start point.
Definition: sch_line.h:267

References m_end, m_endIsDangling, SCH_ITEM::m_layer, m_start, m_startIsDangling, and m_stroke.

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Returns the type of object.

This attribute should never be changed after a ctor sets it, so there is no public "setter" method.

Returns
the type of object.

Definition at line 113 of file eda_item.h.

113 { return m_structType; }
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:488

References EDA_ITEM::m_structType.

Referenced by KIGFX::PCB_VIEW::Add(), FOOTPRINT::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), PCB_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(), SCH_SCREEN::Append(), CADSTAR_SCH_ARCHIVE_LOADER::applyTextSettings(), PNS::TOPOLOGY::AssembleTuningPath(), CONNECTION_GRAPH::buildConnectionGraph(), DIALOG_NET_INSPECTOR::buildNewItem(), SCH_SCREENS::buildScreenList(), calcIsInsideArea(), calcIsInsideCourtyard(), BOARD_INSPECTION_TOOL::calculateSelectionRatsnest(), PCB_POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), CanConnect(), SCH_LABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SYMBOL::CanConnect(), CN_VISITOR::checkZoneItemConnection(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), SCH_PIN::ClassOf(), PCB_TEXT::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_NO_CONNECT::ClassOf(), PCB_MARKER::ClassOf(), FP_SHAPE::ClassOf(), PCB_TARGET::ClassOf(), ClassOf(), PCB_SHAPE::ClassOf(), PCB_GROUP::ClassOf(), SCH_FIELD::ClassOf(), FP_TEXT::ClassOf(), SCH_SHEET::ClassOf(), NETINFO_ITEM::ClassOf(), ZONE::ClassOf(), SCH_SHEET_PIN::ClassOf(), SCH_BITMAP::ClassOf(), PCB_TRACK::ClassOf(), PAD::ClassOf(), SCH_SYMBOL::ClassOf(), FOOTPRINT::ClassOf(), SCH_SCREEN::ClassOf(), SCH_TEXT::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), BOARD::ClassOf(), PCB_ARC::ClassOf(), SCH_LABEL::ClassOf(), PCB_VIA::ClassOf(), SCH_GLOBALLABEL::ClassOf(), PCB_DIM_ALIGNED::ClassOf(), PCB_DIM_ORTHOGONAL::ClassOf(), SCH_HIERLABEL::ClassOf(), PCB_DIM_LEADER::ClassOf(), PCB_DIM_CENTER::ClassOf(), TRACKS_CLEANER::cleanup(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_POLYLINE::compare(), LIB_TEXT::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_PIN::compare(), LIB_ITEM::compare(), LIB_SYMBOL::Compare(), EE_GRID_HELPER::computeAnchors(), PCB_GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), BOARD::ConvertKIIDsToCrossReferences(), SCHEMATIC::ConvertKIIDsToRefs(), PAD_TOOL::copyPadSettings(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), BOARD_ADAPTER::createLayers(), CONVERT_TOOL::CreateLines(), PCB_BASE_FRAME::CreateNewFootprint(), SCH_DRAWING_TOOLS::createNewText(), ZONE_CREATE_HELPER::createNewZone(), CONVERT_TOOL::CreatePolys(), BOARD_ADAPTER::createTrack(), SCH_SCREEN::DeleteItem(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES(), DIALOG_TEXT_AND_LABEL_PROPERTIES::DIALOG_TEXT_AND_LABEL_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), 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(), APPEARANCE_CONTROLS::doesBoardItemNeedRebuild(), EDIT_TOOL::doMoveSelection(), EDIT_TOOL::Drag(), EDIT_TOOL::DragArcTrack(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawVia(), CONNECTION_SUBGRAPH::driverName(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), FOOTPRINT::DuplicateItem(), EDA_ITEM_DESC::EDA_ITEM_DESC(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_EDIT_TOOL::editTextProperties(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckBusToNetConflicts(), CONNECTION_GRAPH::ercCheckFloatingWires(), CONNECTION_GRAPH::ercCheckMultipleDrivers(), CONNECTION_GRAPH::ercCheckNoConnects(), DRC_ENGINE::EvalRules(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), NETLIST_EXPORTER_BASE::findNextSymbol(), CADSTAR_ARCHIVE_PARSER::FixTextPositionNoAlignment(), PCB_BASE_FRAME::FocusOnItem(), EDIT_TOOL::FootprintFilter(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), FP_TEXT::FP_TEXT(), PCB_POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), SCH_FIELD::GetBoundingBox(), PCB_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(), FOOTPRINT::GetCoverageArea(), CONNECTION_GRAPH::getDefaultConnection(), getDrilledHoleShape(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_FIELD::GetMenuImage(), getMinDist(), PCB_TRACK::GetMsgPanelInfo(), PCB_DIMENSION_BASE::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTIVITY_DATA::GetNetItems(), LIB_SYMBOL::GetNextDrawItem(), PCB_SHAPE::GetParentFootprint(), LIB_SYMBOL::GetPin(), SCH_SYMBOL::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), KIGFX::SCH_PAINTER::getRenderColor(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), PCB_TRACK::GetSelectMenuText(), DRC_ENGINE::GetShape(), PCB_TEXT::GetShownText(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), CONVERT_TOOL::getStartEndPoints(), getTopLevelGroup(), PCB_EXPR_TYPE_REF::GetValue(), GROUP_TOOL::Group(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), hash_fp_item(), EE_SELECTION_TOOL::highlight(), PCB_SELECTION_TOOL::highlightInternal(), BOARD_INSPECTION_TOOL::HighlightItem(), BOARD_INSPECTION_TOOL::highlightNet(), highlightNet(), PCB_SELECTION_TOOL::hitTestDistance(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), DRC_RTREE::Insert(), insideArea(), insideBackCourtyard(), insideCourtyard(), insideFrontCourtyard(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), BOARD_INSPECTION_TOOL::InspectDRCError(), ARRAY_CREATOR::Invoke(), isCopper(), CN_ANCHOR::IsDangling(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), PNS_KICAD_IFACE::IsFlashedOnLayer(), CADSTAR_PCB_ARCHIVE_LOADER::isFootprint(), SCH_FIELD::IsHypertext(), isKeepoutZone(), DRC_ENGINE::IsNetTie(), PCB_TRACK::IsNull(), IsParallel(), isPlated(), SCH_FIELD::IsReplaceable(), PNS::ROUTER::isStartingPointRoutable(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), PCB_SELECTION_TOOL::itemPassesFilter(), CLIPBOARD_IO::Load(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), CADSTAR_SCH_ARCHIVE_LOADER::loadHierarchicalSheetPins(), CADSTAR_SCH_ARCHIVE_LOADER::loadNets(), EE_POINT_EDITOR::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), NETLIST_EXPORTER_XML::makeListOfNets(), PCB_POINT_EDITOR::makePoints(), CONVERT_TOOL::makePolysFromSegs(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), memberOf(), MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), EDA_3D_CANVAS::OnMouseMove(), PCB_POINT_EDITOR::OnSelectionChange(), PCB_TRACK::cmp_tracks::operator()(), CN_VISITOR::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), SCH_BUS_ENTRY_BASE::operator<(), SCH_JUNCTION::operator<(), SCH_TEXT::operator<(), SCH_FIELD::operator<(), operator<(), SCH_SHEET::operator<(), SCH_ITEM::operator<(), SCH_SYMBOL::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_SYMBOL::operator=(), PAD::PAD(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCB_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), SCH_SCREEN::Plot(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), POSITION_RELATIVE_TOOL::PositionRelative(), SCH_FIELD::Print(), SCH_SCREEN::Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), BACK_ANNOTATE::processNetNameChange(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), PCB_GRID_HELPER::queryVisible(), SCH_CONNECTION::recacheName(), SCH_BASE_FRAME::RefreshSelection(), KIGFX::PCB_VIEW::Remove(), EE_RTREE::remove(), FOOTPRINT::Remove(), CN_CONNECTIVITY_ALGO::Remove(), SCH_SCREEN::Remove(), BOARD::Remove(), PCB_POINT_EDITOR::removeCorner(), PCB_POINT_EDITOR::removeCornerCondition(), LIB_SYMBOL::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_FIELD::Replace(), PCB_SELECTION_TOOL::RequestSelection(), SCHEMATIC::ResolveCrossReference(), PCB_PARSER::resolveGroups(), DS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), 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(), SCH_SCREEN::Schematic(), SCH_ITEM::Schematic(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::Selectable(), EE_SELECTION_TOOL::Selectable(), PCB_SELECTION_TOOL::selectConnectedTracks(), PCB_POINT_EDITOR::setAltConstraint(), SCH_FIELD::SetId(), ITEM_PICKER::SetItem(), SCH_FIELD::SetPosition(), DIALOG_TEXT_AND_LABEL_PROPERTIES::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), SCH_SHEET_PIN::SwapData(), SCH_FIELD::SwapData(), PCB_GROUP::SwapData(), PCB_TEXT::SwapData(), PCB_TRACK::SwapData(), SCH_SHEET::SwapData(), PCB_ARC::SwapData(), PCB_DIM_ALIGNED::SwapData(), PCB_DIM_ORTHOGONAL::SwapData(), SCH_SYMBOL::SwapData(), PCB_VIA::SwapData(), PCB_DIM_LEADER::SwapData(), PCB_DIM_CENTER::SwapData(), PAD::SwapData(), FOOTPRINT::SwapData(), ZONE::SwapData(), SwapItemData(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZones(), ERC_TESTER::TestMultUnitPinConflicts(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), ERC_TESTER::TestPinToPin(), ERC_TESTER::TestSimilarLabels(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), DIALOG_TEXT_AND_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_FIELDS_TABLE::TransferDataToWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_TEXT_AND_LABEL_PROPERTIES::TransferDataToWindow(), PCB_TRACK::TransformShapeWithClearanceToPolygon(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), EE_SELECTION_TOOL::unhighlight(), PCB_SELECTION_TOOL::unhighlightInternal(), KIGFX::PCB_VIEW::Update(), SCH_TEXT::UpdateDanglingState(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), DIALOG_SCH_FIELD_PROPERTIES::UpdateField(), PL_POINT_EDITOR::updateItem(), PCB_POINT_EDITOR::updateItem(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateItem(), SCH_BASE_FRAME::UpdateItem(), CONNECTION_GRAPH::updateItemConnectivity(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updateParentItem(), SCH_EDITOR_CONTROL::updatePastedSheet(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), PCB_GROUP::Visit(), PCB_TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_GLOBALLABEL::Visit(), SCH_SHEET::Visit(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), and NETLIST_EXPORTER_CADSTAR::writeListOfNets().

◆ UpdateDanglingState()

bool SCH_LINE::UpdateDanglingState ( std::vector< DANGLING_END_ITEM > &  aItemList,
const SCH_SHEET_PATH aPath = nullptr 
)
overridevirtual

Test the schematic item to aItemList to check if it's dangling state has changed.

Note that the return value only true when the state of the test has changed. Use the IsDangling() method to get the current dangling state of the item. Some of the schematic objects cannot be tested for a dangling state, the default method always returns false. Only override the method if the item can be tested for a dangling state.

If aSheet is passed a non-null pointer to a SCH_SHEET_PATH, the overridden method can optionally use it to update sheet-local connectivity information

Parameters
aItemListis the list of items to test item against.
aSheetis the sheet path to update connections for.
Returns
True if the dangling state has changed from it's current setting.

Reimplemented from SCH_ITEM.

Definition at line 599 of file sch_line.cpp.

601 {
602  bool previousStartState = m_startIsDangling;
603  bool previousEndState = m_endIsDangling;
604 
606 
607  for( DANGLING_END_ITEM item : aItemList )
608  {
609  if( item.GetItem() == this )
610  continue;
611 
612  if( ( IsWire()
613  && ( item.GetType() == BUS_START_END || item.GetType() == BUS_END_END
614  || item.GetType() == BUS_ENTRY_END ) )
615  || ( IsBus()
616  && ( item.GetType() == WIRE_START_END || item.GetType() == WIRE_END_END
617  || item.GetType() == PIN_END ) )
618  || ( IsGraphicLine()
619  && ( item.GetType() != GRAPHIC_START_END && item.GetType() != GRAPHIC_END_END ) ) )
620  continue;
621 
622  if( m_start == item.GetPosition() )
623  m_startIsDangling = false;
624 
625  if( m_end == item.GetPosition() )
626  m_endIsDangling = false;
627 
629  break;
630  }
631 
632  if( IsBus() || IsGraphicLine() )
633  {
634  // Force unchanged return state for graphic lines and busses
635  previousStartState = m_startIsDangling;
636  previousEndState = m_endIsDangling;
637  }
638 
639  return ( previousStartState != m_startIsDangling ) || ( previousEndState != m_endIsDangling );
640 }
bool IsGraphicLine() const
Return if the line is a graphic (non electrical line)
Definition: sch_line.cpp:916
bool IsWire() const
Return true if the line is a wire.
Definition: sch_line.cpp:922
bool m_endIsDangling
True if end point is not connected.
Definition: sch_line.h:266
bool m_startIsDangling
True if start point is not connected.
Definition: sch_line.h:265
wxPoint m_end
Line end point.
Definition: sch_line.h:268
Helper class used to store the state of schematic items that can be connected to other schematic item...
Definition: sch_item.h:83
wxPoint m_start
Line start point.
Definition: sch_line.h:267
bool IsBus() const
Return true if the line is a bus.
Definition: sch_line.cpp:927

References BUS_END_END, BUS_ENTRY_END, BUS_START_END, GRAPHIC_END_END, GRAPHIC_START_END, IsBus(), IsGraphicLine(), IsWire(), m_end, m_endIsDangling, m_start, m_startIsDangling, PIN_END, WIRE_END_END, and WIRE_START_END.

◆ UsesDefaultStroke()

bool SCH_LINE::UsesDefaultStroke ( ) const

Test if the SCH_LINE object uses the default stroke settings.

The stroke settings include the line width, style, and color.

Returns
True if the SCH_LINE object uses the default stroke settings.

Definition at line 933 of file sch_line.cpp.

934 {
935  return m_stroke.GetWidth() == 0 && m_stroke.GetColor() == COLOR4D::UNSPECIFIED
938 }
PLOT_DASH_TYPE GetDefaultStyle() const
Definition: sch_line.cpp:224
PLOT_DASH_TYPE GetPlotStyle() const
Definition: sch_item.h:166
int GetWidth() const
Definition: sch_item.h:163
STROKE_PARAMS m_stroke
Line stroke properties.
Definition: sch_line.h:269
COLOR4D GetColor() const
Definition: sch_item.h:169

References DEFAULT, STROKE_PARAMS::GetColor(), GetDefaultStyle(), STROKE_PARAMS::GetPlotStyle(), STROKE_PARAMS::GetWidth(), and m_stroke.

◆ ViewBBox()

const BOX2I EDA_ITEM::ViewBBox ( ) const
overridevirtualinherited

Return the bounding box of the item covering all its layers.

Returns
the current bounding box.

Implements KIGFX::VIEW_ITEM.

Reimplemented in PAD, FOOTPRINT, PCB_DIM_CENTER, EDIT_POINTS, PCB_SHAPE, PCB_DIMENSION_BASE, GERBER_DRAW_ITEM, FP_TEXT, PCB_TRACK, DS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, PCB_MARKER, MY_DRAWING, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::PREVIEW::SELECTION_AREA, KIGFX::PREVIEW::POLYGON_ITEM, RATSNEST_VIEW_ITEM, KIGFX::PREVIEW::RULER_ITEM, and KIGFX::PREVIEW::ARC_ASSISTANT.

Definition at line 194 of file eda_item.cpp.

195 {
196  // Basic fallback
197  EDA_RECT bbox = GetBoundingBox();
198 
199  return BOX2I( bbox.GetOrigin(), bbox.GetSize() );
200 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:506
const wxPoint GetOrigin() const
Definition: eda_rect.h:101
Handle the component boundary box.
Definition: eda_rect.h:42
virtual const EDA_RECT GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
Definition: eda_item.cpp:75
const wxSize GetSize() const
Definition: eda_rect.h:91

References EDA_ITEM::GetBoundingBox(), EDA_RECT::GetOrigin(), and EDA_RECT::GetSize().

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), PCB_DIMENSION_BASE::ViewBBox(), and PCB_SHAPE::ViewBBox().

◆ ViewDraw()

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

Draw the parts of the object belonging to layer aLayer.

An alternative way for drawing objects 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
aLayeris the current drawing layer.
aViewis a pointer to the VIEW device we are drawing on.

Reimplemented in EDIT_POINTS, DS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, KIGFX::VIEW_GROUP, KIGFX::PREVIEW::SELECTION_AREA, MY_DRAWING, KIGFX::VIEW_OVERLAY, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, KIGFX::PREVIEW::RULER_ITEM, and RATSNEST_VIEW_ITEM.

Definition at line 111 of file view_item.h.

112  {}

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

◆ ViewGetLayers()

void SCH_LINE::ViewGetLayers ( int  aLayers[],
int &  aCount 
) const
overridevirtual

Return the layers the item is drawn on (which may be more than its "home" layer)

Reimplemented from SCH_ITEM.

Definition at line 158 of file sch_line.cpp.

159 {
160  aCount = 2;
161  aLayers[0] = m_layer;
162  aLayers[1] = LAYER_SELECTION_SHADOWS;
163 }
SCH_LAYER_ID m_layer
Definition: sch_item.h:492

References LAYER_SELECTION_SHADOWS, and SCH_ITEM::m_layer.

◆ ViewGetLOD()

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

Return 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
aLayeris the current drawing layer.
aViewis a pointer 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 FP_ZONE, PAD, FOOTPRINT, PCB_VIA, GERBER_DRAW_ITEM, FP_TEXT, PCB_TRACK, ZONE, PCB_GROUP, and FP_SHAPE.

Definition at line 137 of file view_item.h.

138  {
139  // By default always show the item
140  return 0.0;
141  }

Referenced by PNS_KICAD_IFACE::IsItemVisible(), KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()(), EE_GRID_HELPER::queryVisible(), PCB_GRID_HELPER::queryVisible(), and PCB_SELECTION_TOOL::Selectable().

◆ viewPrivData()

◆ Visit()

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

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_SYMBOL, FOOTPRINT, LIB_SYMBOL, SCH_SHEET, SCH_GLOBALLABEL, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, PCB_TRACK, PCB_GROUP, and GBR_LAYOUT.

Definition at line 93 of file eda_item.cpp.

94 {
95 #if 0 && defined(DEBUG)
96  std::cout << GetClass().mb_str() << ' ';
97 #endif
98 
99  if( IsType( scanTypes ) )
100  {
101  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
102  return SEARCH_RESULT::QUIT;
103  }
104 
106 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Check whether the item is one of the listed types.
Definition: eda_item.h:183
virtual wxString GetClass() const =0
Return 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_connected_items

std::unordered_map<SCH_SHEET_PATH, SCH_ITEM_SET> SCH_ITEM::m_connected_items
protectedinherited

Store pointers to other items that are connected to this one, per sheet.

Definition at line 499 of file sch_item.h.

Referenced by SCH_ITEM::AddConnectionTo(), SCH_ITEM::ConnectedItems(), SCH_LABEL::IsType(), and SCH_TEXT::UpdateDanglingState().

◆ m_connection_map

std::unordered_map<SCH_SHEET_PATH, SCH_CONNECTION*> SCH_ITEM::m_connection_map
protectedinherited

Store connectivity information, per sheet.

Definition at line 502 of file sch_item.h.

Referenced by SCH_ITEM::Connection(), SCH_ITEM::InitializeConnection(), SCH_ITEM::NetClass(), and SCH_ITEM::~SCH_ITEM().

◆ m_connections

EDA_ITEMS SCH_ITEM::m_connections
protectedinherited

Definition at line 493 of file sch_item.h.

Referenced by SCH_ITEM::ClearConnections(), and SCH_ITEM::~SCH_ITEM().

◆ m_connectivity_dirty

bool SCH_ITEM::m_connectivity_dirty
protectedinherited

◆ m_end

◆ m_endIsDangling

bool SCH_LINE::m_endIsDangling
private

True if end point is not connected.

Definition at line 266 of file sch_line.h.

Referenced by IsDangling(), IsEndDangling(), SCH_LINE(), SwapData(), and UpdateDanglingState().

◆ m_fieldsAutoplaced

◆ m_flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

◆ m_layer

◆ m_parent

◆ m_start

◆ m_startIsDangling

bool SCH_LINE::m_startIsDangling
private

True if start point is not connected.

Definition at line 265 of file sch_line.h.

Referenced by IsDangling(), IsStartDangling(), SCH_LINE(), SwapData(), and UpdateDanglingState().

◆ m_status

◆ m_storedPos

wxPoint SCH_ITEM::m_storedPos
protectedinherited

Definition at line 495 of file sch_item.h.

Referenced by SCH_ITEM::GetStoredPos(), and SCH_ITEM::SetStoredPos().

◆ m_stroke

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 475 of file eda_item.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_SYMBOL::AddHierarchicalReference(), RC_ITEM::AddItem(), SCH_EDIT_FRAME::AnnotateSymbols(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), BOOST_FIXTURE_TEST_CASE(), SCH_SHEET_PATH::Cmp(), SCHEMATIC::ConvertRefsToKIIDs(), MICROWAVE_TOOL::createMicrowaveInductor(), DRAWING_TOOL::DrawVia(), LIB_SYMBOL::Duplicate(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), FOOTPRINT::Duplicate(), FOOTPRINT::DuplicateItem(), PCB_EDIT_FRAME::ExchangeFootprint(), PAD_TOOL::explodePad(), BOARD_EDITOR_CONTROL::ExportNetlist(), BOARD::FillItemMap(), SCH_SHEET_LIST::FillItemMap(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), BOARD::GetItem(), SCH_SHEET_LIST::GetItem(), PAD::GetMsgPanelInfo(), DIALOG_BOARD_REANNOTATE::GetNewRefDes(), FP_TEXT::GetParentAsString(), PAD::GetParentAsString(), FP_SHAPE::GetParentAsString(), SCH_REFERENCE::GetPath(), SCH_SCREEN::GetSheets(), SCH_MARKER::GetUUID(), PCB_MARKER::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), SCH_SHEET_PATH::IsContainedWithin(), LEGACY_PLUGIN::loadFOOTPRINT(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PCB_EDIT_FRAME::LoadFootprints(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), SCH_LEGACY_PLUGIN::loadSymbol(), LEGACY_PLUGIN::loadTrackList(), PNS::LOGGER::Log(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_EDIT_FRAME::mapExistingAnnotation(), SCH_EDITOR_CONTROL::nextMatch(), PCB_TRACK::cmp_tracks::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), FOOTPRINT::cmp_pads::operator()(), SCH_ITEM::operator<(), SCH_SYMBOL::operator<(), PAD::PAD(), SCH_SEXPR_PARSER::parseSchSheetInstances(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), BOARD_REANNOTATE_TOOL::ReannotateDuplicatesInSelection(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_SYMBOL::ReplaceInstanceSheetPath(), PCB_PARSER::resolveGroups(), SCH_SEXPR_PLUGIN::saveBitmap(), SCH_SEXPR_PLUGIN::saveBusEntry(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN::saveLine(), SCH_SEXPR_PLUGIN::saveNoConnect(), SCH_EDIT_FRAME::SaveProject(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_LEGACY_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_LEGACY_PLUGIN::saveSymbol(), SCH_SEXPR_PLUGIN::saveText(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SHEET::SCH_SHEET(), SCH_SYMBOL::SCH_SYMBOL(), RC_ITEM::SetItems(), SwapItemData(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), testGroupEqual(), SCH_EDITOR_CONTROL::updatePastedSheet(), SCH_EDITOR_CONTROL::updatePastedSymbol(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

◆ PenStyle

enum wxPenStyle SCH_LINE::PenStyle[]
static

Definition at line 40 of file sch_line.h.


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