KiCad PCB EDA Suite
TRACK Class Reference

#include <class_track.h>

Inheritance diagram for TRACK:
BOARD_CONNECTED_ITEM BOARD_ITEM EDA_ITEM KIGFX::VIEW_ITEM VIA

Public Member Functions

 TRACK (BOARD_ITEM *aParent, KICAD_T idtype=PCB_TRACE_T)
 
TRACKNext () const
 
TRACKBack () const
 
virtual void Move (const wxPoint &aMoveVector) override
 Function Move move this object. More...
 
virtual void Rotate (const wxPoint &aRotCentre, double aAngle) override
 Function Rotate Rotate this object. More...
 
virtual void Flip (const wxPoint &aCentre) override
 Function Flip Flip this object, i.e. More...
 
void SetPosition (const wxPoint &aPos) override
 
const wxPoint GetPosition () const override
 
void SetWidth (int aWidth)
 
int GetWidth () const
 
void SetEnd (const wxPoint &aEnd)
 
const wxPoint & GetEnd () const
 
void SetStart (const wxPoint &aStart)
 
const wxPoint & GetStart () const
 
const wxPoint & GetEndPoint (ENDPOINT_T aEndPoint) const
 Return the selected endpoint (start or end) More...
 
const EDA_RECT GetBoundingBox () const override
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
bool IsLocked () const override
 Function IsLocked. More...
 
void SetLocked (bool aLocked) override
 Function SetLocked modifies 'lock' status for of the item. More...
 
TRACKGetBestInsertPoint (BOARD *aPcb)
 Function GetBestInsertPoint searches the "best" insertion point within the track linked list. More...
 
TRACKGetStartNetCode (int NetCode)
 
TRACKGetEndNetCode (int NetCode)
 
double GetLength () const
 Function GetLength returns the length of the track using the hypotenuse calculation. More...
 
void Draw (EDA_DRAW_PANEL *panel, wxDC *DC, GR_DRAWMODE aDrawMode, const wxPoint &aOffset=ZeroOffset) override
 Function Draw BOARD_ITEMs have their own color information. More...
 
void TransformShapeWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, int aClearanceValue, int aCircleToSegmentsCount, double aCorrectionFactor, bool ignoreLineWidth=false) const override
 Function TransformShapeWithClearanceToPolygon Convert the track shape to a closed polygon Used in filling zones calculations Circles (vias) and arcs (ends of tracks) are approximated by segments. More...
 
STATUS_FLAGS IsPointOnEnds (const wxPoint &point, int min_dist=0)
 Function IsPointOnEnds returns STARTPOINT if point if near (dist = min_dist) start point, ENDPOINT if point if near (dist = min_dist) end point,STARTPOINT|ENDPOINT if point if near (dist = min_dist) both ends, or 0 if none of the above. More...
 
bool IsNull ()
 Function IsNull returns true if segment length is zero. More...
 
void GetMsgPanelInfo (EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
 Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[]) override
 Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Function HitTest tests 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
 Function HitTest tests if aRect intersects or is contained within the bounding box of an item. More...
 
VIAGetVia (const wxPoint &aPosition, PCB_LAYER_ID aLayer=UNDEFINED_LAYER)
 Function GetVia finds the first VIA object at aPosition on aLayer starting at the trace. More...
 
VIAGetVia (TRACK *aEndTrace, const wxPoint &aPosition, LSET aLayerMask)
 Function GetVia finds the first VIA object at aPosition on aLayer starting at the trace and ending at aEndTrace. More...
 
TRACKGetTrack (TRACK *aStartTrace, TRACK *aEndTrace, ENDPOINT_T aEndPoint, bool aSameNetOnly, bool aSequential)
 Function GetTrack returns the trace segment connected to the segment at aEndPoint from aStartTrace to aEndTrace. More...
 
int GetEndSegments (int NbSegm, TRACK **StartTrack, TRACK **EndTrack)
 Function GetEndSegments get the segments connected to the end point of the track. More...
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
virtual int GetClearance (BOARD_CONNECTED_ITEM *aItem=NULL) const override
 Function GetClearance returns the clearance in internal units. More...
 
virtual wxString GetSelectMenuText (EDA_UNITS_T aUnits) const override
 Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAP_DEF GetMenuImage () const override
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
virtual EDA_ITEMClone () const override
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on. More...
 
virtual unsigned int ViewGetLOD (int aLayer, KIGFX::VIEW *aView) const override
 Function ViewGetLOD() Returns the level of detail (LOD) of the item. More...
 
const BOX2I ViewBBox () const override
 Function ViewBBox() returns the bounding box of the item covering all its layers. More...
 
virtual void SwapData (BOARD_ITEM *aImage) override
 Swap data between aItem and aImage. More...
 
bool IsConnected () const override
 

More...
 
NETINFO_ITEMGetNet () const
 Function GetNet Returns NET_INFO object for a given item. More...
 
void SetNet (NETINFO_ITEM *aNetInfo)
 Function SetNet Sets a NET_INFO object for the item. More...
 
int GetNetCode () const
 Function GetNetCode. More...
 
bool SetNetCode (int aNetCode, bool aNoAssert=false)
 Function SetNetCode sets net using a net code. More...
 
const wxString & GetNetname () const
 Function GetNetname. More...
 
wxString GetNetnameMsg () const
 Function GetNetnameMsg. More...
 
const wxString & GetShortNetname () const
 Function GetShortNetname. More...
 
std::shared_ptr< NETCLASSGetNetClass () const
 Function GetNetClass returns the NETCLASS for this item. More...
 
wxString GetNetClassName () const
 Function GetNetClassName returns a pointer to the netclass of the zone. More...
 
void SetLocalRatsnestVisible (bool aVisible)
 
bool GetLocalRatsnestVisible () const
 
virtual const wxPoint GetCenter () const
 Function GetCenter() More...
 
BOARD_ITEM_CONTAINERGetParent () const
 
virtual PCB_LAYER_ID GetLayer () const
 Function GetLayer returns the primary layer this item is on. More...
 
virtual LSET GetLayerSet () const
 Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides. More...
 
virtual void SetLayer (PCB_LAYER_ID aLayer)
 Function SetLayer sets the layer this item is on. More...
 
virtual bool IsOnLayer (PCB_LAYER_ID aLayer) const
 Function IsOnLayer tests to see if this object is on the given layer. More...
 
bool IsTrack () const
 Function IsTrack tests to see if this object is a track or via (or microvia). More...
 
virtual void UnLink ()
 Function UnLink detaches this object from its owner. More...
 
void DeleteStructure ()
 Function DeleteStructure deletes this object after UnLink()ing it from its owner if it has one. More...
 
void Move (const VECTOR2I &aMoveVector)
 
void Rotate (const VECTOR2I &aRotCentre, double aAngle)
 
void Flip (const VECTOR2I &aCentre)
 
virtual BOARDGetBoard () const
 Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none. More...
 
wxString GetLayerName () const
 Function GetLayerName returns the name of the PCB layer on which the item resides. More...
 
KICAD_T Type () const
 Function Type() More...
 
void SetTimeStamp (timestamp_t aNewTimeStamp)
 
timestamp_t GetTimeStamp () const
 
DHEADGetList () const
 
void SetParent (EDA_ITEM *aParent)
 
void SetList (DHEAD *aList)
 
bool IsNew () const
 
bool IsModified () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsHighlighted () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetHighlighted ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearHighlighted ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, int state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
STATUS_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool IsType (const KICAD_T aScanTypes[])
 Function IsType Checks whether the item is one of the listed types. More...
 
void SetForceVisible (bool aEnable)
 Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
virtual bool Matches (wxFindReplaceData &aSearchData, void *aAuxData, wxPoint *aFindLocation)
 Function Matches compares the item against the search criteria in aSearchData. More...
 
bool Replace (wxFindReplaceData &aSearchData, wxString &aText)
 Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool Replace (wxFindReplaceData &aSearchData, void *aAuxData=NULL)
 Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Function IsReplaceable. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 

Static Public Member Functions

static bool ClassOf (const EDA_ITEM *aItem)
 
static wxString ShowShape (STROKE_T aShape)
 Function ShowShape converts the enum STROKE_T integer value to a wxString. More...
 
static SEARCH_RESULT IterateForward (EDA_ITEM *listStart, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

BOARD_CONNECTED_ITEMstart
 
BOARD_CONNECTED_ITEMend
 
double m_Param
 

Static Public Attributes

static wxPoint ZeroOffset
 A value of wxPoint(0,0) which can be passed to the Draw() functions. More...
 

Protected Member Functions

virtual void GetMsgPanelInfoBase (EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList)
 Function GetMsgPanelInfoBase Display info about the track segment only, and does not calculate the full track length. More...
 
void GetMsgPanelInfoBase_Common (EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList)
 Helper function for the common panel info. More...
 
void DrawShortNetname (EDA_DRAW_PANEL *panel, wxDC *aDC, GR_DRAWMODE aDrawMode, COLOR4D aBgColor)
 Helper for drawing the short netname in tracks. More...
 
bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Static Protected Member Functions

static int getNextNumberInSequence (const std::set< int > &aSeq, bool aFillSequenceGaps)
 

Protected Attributes

int m_Width
 Thickness of track, or via diameter. More...
 
wxPoint m_Start
 Line start point. More...
 
wxPoint m_End
 Line end point. More...
 
NETINFO_ITEMm_netinfo
 Stores all informations about the net that item belongs to. More...
 
PCB_LAYER_ID m_Layer
 
EDA_ITEMPnext
 next in linked list More...
 
EDA_ITEMPback
 previous in linked list More...
 
DHEADm_List
 which DLIST I am on. More...
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) More...
 
timestamp_t m_TimeStamp
 Time stamp used for logical links. More...
 
bool m_forceVisible
 Set to true to override the visibility setting of the item. More...
 
STATUS_FLAGS m_Flags
 Flag bits for editing and other uses. More...
 

Private Member Functions

void SetNext (EDA_ITEM *aNext)
 
void SetBack (EDA_ITEM *aBack)
 

Detailed Description

Definition at line 93 of file class_track.h.

Constructor & Destructor Documentation

◆ TRACK()

TRACK::TRACK ( BOARD_ITEM aParent,
KICAD_T  idtype = PCB_TRACE_T 
)

Definition at line 96 of file class_track.cpp.

96  :
97  BOARD_CONNECTED_ITEM( aParent, idtype )
98 {
99  m_Width = Millimeter2iu( 0.2 );
100  start = end = NULL;
101  m_Param = 0;
102 }
BOARD_CONNECTED_ITEM(BOARD_ITEM *aParent, KICAD_T idtype)
double m_Param
Definition: class_track.h:104
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
BOARD_CONNECTED_ITEM * end
Definition: class_track.h:102
BOARD_CONNECTED_ITEM * start
Definition: class_track.h:101

References end, m_Param, m_Width, and start.

Referenced by Clone().

Member Function Documentation

◆ Back()

TRACK* TRACK::Back ( ) const
inline

Definition at line 111 of file class_track.h.

111 { return static_cast<TRACK*>( Pback ); }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:171

References EDA_ITEM::Pback.

Referenced by PCB_EDIT_FRAME::Add45DegreeSegment(), ComputeBreakPoint(), GetBestInsertPoint(), GetMsgPanelInfo(), GetTrack(), and Magnetize().

◆ ClassOf()

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

Definition at line 96 of file class_track.h.

97  {
98  return aItem && PCB_TRACE_T == aItem->Type();
99  }
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References PCB_TRACE_T, and EDA_ITEM::Type().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 239 of file base_struct.h.

239 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:260

References BRIGHTENED, and EDA_ITEM::ClearFlags().

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

◆ ClearEditFlags()

void EDA_ITEM::ClearEditFlags ( )
inlineinherited

◆ ClearFlags()

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

Definition at line 260 of file base_struct.h.

260 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References EDA_ITEM::m_Flags.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_Move_Pad(), Abort_MoveOrCopyModule(), Abort_MoveTrack(), Abort_Zone_Create_Outline(), Abort_Zone_Move_Corner_Or_Outlines(), AbortMoveAndEditTarget(), AbortMoveDimensionText(), AbortMoveTextModule(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_COMPONENT::ClearAllHighlightFlags(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearHighlighted(), ClearMarkItems(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), SCH_EDIT_FRAME::ConvertPart(), LIB_EDIT_TOOL::Copy(), CopyMarkedItems(), MWAVE::CreateMicrowaveInductor(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::Delete_LastCreatedCorner(), PCB_EDIT_FRAME::Delete_Segment_Edge(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::End_Edge(), FOOTPRINT_EDIT_FRAME::End_Edge_Module(), PCB_EDIT_FRAME::End_Move_Zone_Corner_Or_Outlines(), PCB_EDIT_FRAME::End_Route(), PCB_EDIT_FRAME::End_Zone(), PCB_EDIT_FRAME::Exchange_Module(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_MOVE_TOOL::getConnectedDragItems(), PCB_BASE_FRAME::Import_Pad_Settings(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), EDIT_POINTS_FACTORY::Make(), MarkItemsInBloc(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::Place_DrawItem(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_EDIT_FRAME::PlaceDimensionText(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::PlacePad(), PCB_EDIT_FRAME::PlaceTarget(), DRAWING_TOOL::PlaceText(), PCB_BASE_FRAME::PlaceTexteModule(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), BOARD_COMMIT::Revert(), LIB_EDIT_FRAME::RollbackPartFromUndo(), PCB_BASE_FRAME::Rotate_Module(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_EDIT_FRAME::SelectUnit(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

◆ ClearHighlighted()

void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 238 of file base_struct.h.

238 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:260

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

◆ ClearSelected()

void EDA_ITEM::ClearSelected ( )
inlineinherited

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 271 of file base_struct.h.

272  {
274  }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:111
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:125
#define CANDIDATE
flag indicating that the structure is connected
Definition: base_struct.h:124
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:120
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:260
#define DO_NOT_DRAW
Used to disable draw function.
Definition: base_struct.h:126
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:119

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

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 153 of file view_item.h.

154  {
155  m_viewPrivData = NULL;
156  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:161

References KIGFX::VIEW_ITEM::m_viewPrivData.

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

◆ Clone()

EDA_ITEM * TRACK::Clone ( ) const
overridevirtual

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

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

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Reimplemented in VIA.

Definition at line 105 of file class_track.cpp.

106 {
107  return new TRACK( *this );
108 }
TRACK(BOARD_ITEM *aParent, KICAD_T idtype=PCB_TRACE_T)
Definition: class_track.cpp:96

References TRACK().

Referenced by PCB_EDIT_FRAME::Add45DegreeSegment(), BOARD::CreateLockPoint(), DRAWING_TOOL::DrawVia(), EnsureEndTrackOnPad(), PCB_EDIT_FRAME::Other_Layer_Route(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveModule(), and PCB_EDIT_FRAME::StartMoveOneNodeOrSegment().

◆ DeleteStructure()

◆ Draw()

void TRACK::Draw ( EDA_DRAW_PANEL panel,
wxDC *  DC,
GR_DRAWMODE  aDrawMode,
const wxPoint &  offset = ZeroOffset 
)
overridevirtual

Function Draw BOARD_ITEMs have their own color information.

Implements BOARD_ITEM.

Reimplemented in VIA.

Definition at line 594 of file class_track.cpp.

596 {
597  BOARD* brd = GetBoard();
598 
599  auto frame = static_cast<PCB_BASE_FRAME*> ( panel->GetParent() );
600  auto color = frame->Settings().Colors().GetLayerColor( m_Layer );
601 
602  if( ( !brd->IsLayerVisible( m_Layer ) || !brd->IsElementVisible( LAYER_TRACKS ) )
603  && !( aDrawMode & GR_HIGHLIGHT ) )
604  return;
605 
606 #ifdef USE_WX_OVERLAY
607  // If dragged not draw in OnPaint otherwise remains impressed in wxOverlay
608  if( (m_Flags & IS_DRAGGED) && aDC->IsKindOf(wxCLASSINFO(wxPaintDC)))
609  return;
610 #endif
611 
612  auto displ_opts = (PCB_DISPLAY_OPTIONS*)( panel->GetDisplayOptions() );
613 
614  if( ( aDrawMode & GR_ALLOW_HIGHCONTRAST ) && displ_opts->m_ContrastModeDisplay )
615  {
616  PCB_LAYER_ID curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
617 
618  if( !IsOnLayer( curr_layer ) )
620  }
621 
622  if( ( aDrawMode & GR_HIGHLIGHT ) && !( aDrawMode & GR_AND ) )
623  color.SetToLegacyHighlightColor();
624 
625  color.a = 0.588;
626 
627  GRSetDrawMode( aDC, aDrawMode );
628 
629  // Draw track as line if width <= 1pixel:
630  if( aDC->LogicalToDeviceXRel( m_Width ) <= 1 )
631  {
632  GRLine( panel->GetClipBox(), aDC, m_Start + aOffset, m_End + aOffset, m_Width, color );
633  return;
634  }
635 
636  if( !displ_opts->m_DisplayPcbTrackFill || GetState( FORCE_SKETCH ) )
637  {
638  GRCSegm( panel->GetClipBox(), aDC, m_Start + aOffset, m_End + aOffset, m_Width, color );
639  }
640  else
641  {
642  GRFillCSegm( panel->GetClipBox(), aDC, m_Start.x + aOffset.x,
643  m_Start.y + aOffset.y,
644  m_End.x + aOffset.x, m_End.y + aOffset.y, m_Width, color );
645  }
646 
647  if( panel->GetScreen()->m_IsPrinting )
648  return;
649 
650  // Show clearance for tracks, not for zone segments
651  if( ShowClearance( displ_opts, this ) )
652  {
653  GRCSegm( panel->GetClipBox(), aDC, m_Start + aOffset, m_End + aOffset,
654  m_Width + (GetClearance() * 2), color );
655  }
656 
657  DrawShortNetname( panel, aDC, aDrawMode, color );
658 }
virtual BASE_SCREEN * GetScreen()=0
wxPoint m_Start
Line start point.
Definition: class_track.h:349
void GRSetDrawMode(wxDC *DC, GR_DRAWMODE draw_mode)
Definition: gr_basic.cpp:223
int color
Definition: DXF_plotter.cpp:62
void GRCSegm(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, int aPenSize, COLOR4D Color)
Definition: gr_basic.cpp:415
static bool ShowClearance(PCB_DISPLAY_OPTIONS *aDisplOpts, const TRACK *aTrack)
Function ShowClearance tests to see if the clearance border is drawn on the given track.
Definition: class_track.cpp:55
virtual EDA_RECT * GetClipBox()
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
virtual EDA_DRAW_FRAME * GetParent() const =0
#define IS_DRAGGED
Item being dragged.
Definition: base_struct.h:116
PCB_LAYER_ID m_Layer
Class PCB_DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
PCB_LAYER_ID
A quick note on layer IDs:
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
void GRFillCSegm(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color)
Definition: gr_basic.cpp:518
wxPoint m_End
Line end point.
Definition: class_track.h:350
void DrawShortNetname(EDA_DRAW_PANEL *panel, wxDC *aDC, GR_DRAWMODE aDrawMode, COLOR4D aBgColor)
Helper for drawing the short netname in tracks.
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
virtual int GetClearance(BOARD_CONNECTED_ITEM *aItem=NULL) const override
Function GetClearance returns the clearance in internal units.
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color, wxPenStyle aStyle)
Definition: gr_basic.cpp:285
bool m_IsPrinting
Definition: base_screen.h:220
bool IsElementVisible(GAL_LAYER_ID aLayer) const
Function IsElementVisible tests whether a given element category is visible.
bool IsLayerVisible(PCB_LAYER_ID aLayer) const
Function IsLayerVisible is a proxy function that calls the correspondent function in m_BoardSettings ...
Definition: class_board.h:453
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181
virtual void * GetDisplayOptions()
Function GetDisplayOptions A way to pass info to draw functions.
#define FORCE_SKETCH
Definition: pcbnew.h:67
int GetState(int type) const
Definition: base_struct.h:243
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39

References color, DARKDARKGRAY, DrawShortNetname(), FORCE_SKETCH, BOARD_ITEM::GetBoard(), GetClearance(), EDA_DRAW_PANEL::GetClipBox(), EDA_DRAW_PANEL::GetDisplayOptions(), EDA_DRAW_PANEL::GetParent(), EDA_DRAW_PANEL::GetScreen(), EDA_ITEM::GetState(), GR_ALLOW_HIGHCONTRAST, GR_AND, GR_HIGHLIGHT, GRCSegm(), GRFillCSegm(), GRLine(), GRSetDrawMode(), IS_DRAGGED, BOARD::IsElementVisible(), BOARD::IsLayerVisible(), BOARD_ITEM::IsOnLayer(), LAYER_TRACKS, m_End, EDA_ITEM::m_Flags, BASE_SCREEN::m_IsPrinting, BOARD_ITEM::m_Layer, m_Start, m_Width, and ShowClearance().

Referenced by Abort_Move_Pad(), Abort_MoveOrCopyModule(), PCB_EDIT_FRAME::Attribut_net(), PCB_EDIT_FRAME::Attribut_Segment(), DrawSegmentWhileMovingFootprint(), PCB_EDIT_FRAME::Edit_Track_Width(), PCB_EDIT_FRAME::Edit_TrackSegm_Width(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::PlacePad(), PCB_EDIT_FRAME::Process_Special_Functions(), Show_Drag_Track_Segment_With_Cte_Slope(), Show_MoveNode(), Show_Pad_Move(), and UndrawAndMarkSegmentsToDrag().

◆ DrawShortNetname()

void TRACK::DrawShortNetname ( EDA_DRAW_PANEL panel,
wxDC *  aDC,
GR_DRAWMODE  aDrawMode,
COLOR4D  aBgColor 
)
protected

Helper for drawing the short netname in tracks.

Definition at line 506 of file class_track.cpp.

508 {
509  if( ! panel )
510  return;
511 
512  /* we must filter tracks, to avoid a lot of texts.
513  * - only tracks with a length > 10 * thickness are eligible
514  * and, of course, if we are not printing the board
515  */
516  auto displ_opts = (PCB_DISPLAY_OPTIONS*)( panel->GetDisplayOptions() );
517 
518  if( displ_opts->m_DisplayNetNamesMode == 0 || displ_opts->m_DisplayNetNamesMode == 1 )
519  return;
520 
521  #define THRESHOLD 10
522 
523  int len = KiROUND( GetLineLength( m_Start, m_End ) );
524 
525  if( len < THRESHOLD * m_Width )
526  return;
527 
528  // no room to display a text inside track
529  if( aDC->LogicalToDeviceXRel( m_Width ) < MIN_TEXT_SIZE )
530  return;
531 
533  return;
534 
535  NETINFO_ITEM* net = GetNet();
536 
537  if( net == NULL )
538  return;
539 
540  wxString text = UnescapeString( net->GetShortNetname() );
541  int textlen = text.Len();
542 
543  if( textlen > 0 )
544  {
545  // calculate a good size for the text
546  int tsize = std::min( m_Width, len / textlen );
547  int dx = m_End.x - m_Start.x ;
548  int dy = m_End.y - m_Start.y ;
549  wxPoint tpos = m_Start + m_End;
550  tpos.x /= 2;
551  tpos.y /= 2;
552 
553  // Calculate angle: if the track segment is vertical, angle = 90 degrees
554  // If horizontal 0 degrees, otherwise compute it
555  double angle; // angle is in 0.1 degree
556 
557  if( dy == 0 ) // Horizontal segment
558  {
559  angle = 0;
560  }
561  else
562  {
563  if( dx == 0 ) // Vertical segment
564  {
565  angle = 900;
566  }
567  else
568  {
569  /* atan2 is *not* the solution here, since it can give upside
570  down text. We want to work only in the first and fourth quadrant */
571  angle = RAD2DECIDEG( -atan( double( dy ) / double( dx ) ) );
572  }
573  }
574 
575  PCB_LAYER_ID curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
576 
577  if( ( aDC->LogicalToDeviceXRel( tsize ) >= MIN_TEXT_SIZE )
578  && ( !(!IsOnLayer( curr_layer )&& displ_opts->m_ContrastModeDisplay) ) )
579  {
580  if( (aDrawMode & GR_XOR) == 0 )
581  GRSetDrawMode( aDC, GR_COPY );
582 
583  tsize = (tsize * 7) / 10; // small reduction to give a better look
584  DrawGraphicHaloText( panel->GetClipBox(), aDC, tpos,
585  aBgColor, BLACK, WHITE,
586  text, angle, wxSize( tsize, tsize ),
588  tsize / 7, false, false );
589  }
590  }
591 }
virtual BASE_SCREEN * GetScreen()=0
int GetNetCode() const
Function GetNetCode.
wxPoint m_Start
Line start point.
Definition: class_track.h:349
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Function GetLineLength returns the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:200
void GRSetDrawMode(wxDC *DC, GR_DRAWMODE draw_mode)
Definition: gr_basic.cpp:223
static int KiROUND(double v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:118
NETINFO_ITEM * GetNet() const
Function GetNet Returns NET_INFO object for a given item.
double RAD2DECIDEG(double rad)
Definition: trigo.h:213
virtual EDA_RECT * GetClipBox()
void DrawGraphicHaloText(EDA_RECT *aClipBox, wxDC *aDC, const wxPoint &aPos, const COLOR4D aBgColor, COLOR4D aColor1, COLOR4D aColor2, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void(*aCallback)(int x0, int y0, int xf, int yf, void *aData), void *aCallbackData, PLOTTER *aPlotter)
Draw graphic text with a border, so that it can be read on different backgrounds.
const wxString & GetShortNetname() const
Function GetShortNetname.
Definition: netinfo.h:241
#define MIN_TEXT_SIZE
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
#define THRESHOLD
Class PCB_DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
PCB_LAYER_ID
A quick note on layer IDs:
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
wxPoint m_End
Line end point.
Definition: class_track.h:350
Class NETINFO_ITEM handles the data for a net.
Definition: netinfo.h:65
wxString UnescapeString(const wxString &aSource)
Definition: string.cpp:123
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)
Definition: colors.h:49
Definition: colors.h:45
virtual void * GetDisplayOptions()
Function GetDisplayOptions A way to pass info to draw functions.
static const int UNCONNECTED
Constant that holds the "unconnected net" number (typically 0) all items "connected" to this net are ...
Definition: netinfo.h:465
#define min(a, b)
Definition: auxiliary.h:85

References PNS::angle(), BLACK, DrawGraphicHaloText(), EDA_DRAW_PANEL::GetClipBox(), EDA_DRAW_PANEL::GetDisplayOptions(), GetLineLength(), BOARD_CONNECTED_ITEM::GetNet(), BOARD_CONNECTED_ITEM::GetNetCode(), EDA_DRAW_PANEL::GetScreen(), NETINFO_ITEM::GetShortNetname(), GR_COPY, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, GR_XOR, GRSetDrawMode(), BOARD_ITEM::IsOnLayer(), KiROUND(), m_End, m_Start, m_Width, min, MIN_TEXT_SIZE, RAD2DECIDEG(), THRESHOLD, NETINFO_LIST::UNCONNECTED, UnescapeString(), and WHITE.

Referenced by Draw().

◆ Flip() [1/2]

void TRACK::Flip ( const wxPoint &  aCentre)
overridevirtual

Function Flip Flip this object, i.e.

change the board side for this object

Parameters
aCentre- the rotation point.

Reimplemented from BOARD_ITEM.

Reimplemented in VIA.

Definition at line 282 of file class_track.cpp.

283 {
284  m_Start.y = aCentre.y - (m_Start.y - aCentre.y);
285  m_End.y = aCentre.y - (m_End.y - aCentre.y);
286  int copperLayerCount = GetBoard()->GetCopperLayerCount();
287  SetLayer( FlipLayer( GetLayer(), copperLayerCount ) );
288 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
virtual void SetLayer(PCB_LAYER_ID aLayer)
Function SetLayer sets the layer this item is on.
PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount)
Function FlippedLayerNumber.
Definition: lset.cpp:475
wxPoint m_End
Line end point.
Definition: class_track.h:350
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
int GetCopperLayerCount() const
Function GetCopperLayerCount.
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.

References FlipLayer(), BOARD_ITEM::GetBoard(), BOARD::GetCopperLayerCount(), BOARD_ITEM::GetLayer(), m_End, m_Start, and BOARD_ITEM::SetLayer().

◆ Flip() [2/2]

void BOARD_ITEM::Flip ( const VECTOR2I aCentre)
inlineinherited

Definition at line 270 of file class_board_item.h.

271  {
272  Flip( wxPoint( aCentre.x, aCentre.y ) );
273  }
virtual void Flip(const wxPoint &aCentre)
Function Flip Flip this object, i.e.

References BOARD_ITEM::Flip(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ GetBestInsertPoint()

TRACK * TRACK::GetBestInsertPoint ( BOARD aPcb)

Function GetBestInsertPoint searches the "best" insertion point within the track linked list.

The best point is currently the end of the corresponding net code section. (The BOARD::m_Track and BOARD::m_Zone lists are sorted by netcode.)

Parameters
aPcbThe BOARD to search for the insertion point.
Returns
TRACK* - the insertion point in the linked list. this is the next item after the last item having my net code. therefore the track to insert must be inserted before the insertion point. if the best insertion point is the end of list, the returned value is NULL

Definition at line 429 of file class_track.cpp.

430 {
431  // When reading from a file most of the items will already be in the correct order.
432  // Searching from the back therefore takes us from n^2 to essentially 0.
433 
434  for( TRACK* track = aPcb->m_Track.GetLast(); track; track = track->Back() )
435  {
436  if( GetNetCode() >= track->GetNetCode() )
437  return track->Next();
438  }
439 
440  return aPcb->m_Track.GetFirst();
441 }
int GetNetCode() const
Function GetNetCode.
T * GetLast() const
Function GetLast returns the last T* in the list without removing it, or NULL if the list is empty.
Definition: dlist.h:170
T * GetFirst() const
Function GetFirst returns the first T* in the list without removing it, or NULL if the list is empty.
Definition: dlist.h:163
DLIST< TRACK > m_Track
Definition: class_board.h:249
TRACK * Back() const
Definition: class_track.h:111

References Back(), DLIST< T >::GetFirst(), DLIST< T >::GetLast(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD::m_Track, and Next().

Referenced by BOARD::Add().

◆ GetBoard()

BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.

Definition at line 64 of file class_board_item.cpp.

65 {
66  if( Type() == PCB_T )
67  return (BOARD*) this;
68 
69  BOARD_ITEM* parent = GetParent();
70 
71  if( parent )
72  return parent->GetBoard();
73 
74  return NULL;
75 }
Definition: typeinfo.h:85
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
BOARD_ITEM_CONTAINER * GetParent() const
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References BOARD_ITEM::GetBoard(), BOARD_ITEM::GetParent(), PCB_T, and EDA_ITEM::Type().

Referenced by DeleteMarkedItems(), TEXTE_PCB::Draw(), PCB_TARGET::Draw(), ZONE_CONTAINER::Draw(), EDGE_MODULE::Draw(), TEXTE_MODULE::Draw(), Draw(), DIMENSION::Draw(), DRAWSEGMENT::Draw(), MODULE::Draw(), VIA::Draw(), D_PAD::Draw(), MODULE::DrawAncre(), ZONE_CONTAINER::DrawFilledArea(), TEXTE_PCB::Flip(), Flip(), VIA::Flip(), ZONE_CONTAINER::Flip(), BOARD_ITEM::GetBoard(), MODULE::GetBoundingPoly(), BOARD_ITEM::GetLayerName(), PCB_DRAW_PANEL_GAL::GetMsgPanelInfo(), GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), GetMsgPanelInfoBase(), VIA::GetMsgPanelInfoBase(), GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), VIA::GetSelectMenuText(), D_PAD::GetSelectMenuText(), D_PAD::GetSolderMaskMargin(), D_PAD::GetSolderPasteMargin(), EAGLE_PLUGIN::packageWire(), PushTrack(), BOARD_CONNECTED_ITEM::SetNet(), BOARD_CONNECTED_ITEM::SetNetCode(), MODULE::ViewBBox(), VIA::ViewGetLOD(), and D_PAD::ViewGetLOD().

◆ GetBoundingBox()

const EDA_RECT TRACK::GetBoundingBox ( ) const
overridevirtual

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

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

Reimplemented from EDA_ITEM.

Definition at line 239 of file class_track.cpp.

240 {
241  // end of track is round, this is its radius, rounded up
242  int radius = ( m_Width + 1 ) / 2;
243  int ymax, xmax, ymin, xmin;
244 
245  if( Type() == PCB_VIA_T )
246  {
247  ymax = m_Start.y;
248  xmax = m_Start.x;
249 
250  ymin = m_Start.y;
251  xmin = m_Start.x;
252  }
253  else
254  {
255  ymax = std::max( m_Start.y, m_End.y );
256  xmax = std::max( m_Start.x, m_End.x );
257 
258  ymin = std::min( m_Start.y, m_End.y );
259  xmin = std::min( m_Start.x, m_End.x );
260  }
261 
262  ymax += radius;
263  xmax += radius;
264 
265  ymin -= radius;
266  xmin -= radius;
267 
268  // return a rectangle which is [pos,dim) in nature. therefore the +1
269  EDA_RECT ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin + 1, ymax - ymin + 1 ) );
270 
271  return ret;
272 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxPoint m_End
Line end point.
Definition: class_track.h:350
#define max(a, b)
Definition: auxiliary.h:86
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204
#define min(a, b)
Definition: auxiliary.h:85

References m_End, m_Start, m_Width, max, min, PCB_VIA_T, and EDA_ITEM::Type().

Referenced by PCB_EDIT_FRAME::Delete_Segment(), DRAWING_TOOL::DrawVia(), and ViewBBox().

◆ GetCenter()

virtual const wxPoint BOARD_ITEM::GetCenter ( ) const
inlinevirtualinherited

Function GetCenter()

This defaults to the same point as returned by GetPosition(), unless overridden

Returns
centre point of the item

Reimplemented in DRAWSEGMENT.

Definition at line 96 of file class_board_item.h.

96 { return GetPosition(); }
virtual const wxPoint GetPosition() const =0

References BOARD_ITEM::GetPosition().

Referenced by BOARD::chainMarkedSegments(), and LEGACY_ARRAY_CREATOR::getRotationCentre().

◆ GetClass()

wxString TRACK::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Implements EDA_ITEM.

Reimplemented in VIA.

Definition at line 288 of file class_track.h.

289  {
290  return wxT( "TRACK" );
291  }

◆ GetClearance()

int TRACK::GetClearance ( BOARD_CONNECTED_ITEM aItem = NULL) const
overridevirtual

Function GetClearance returns the clearance in internal units.

If aItem is not NULL then the returned clearance is the greater of this object's clearance and aItem's clearance. If aItem is NULL, then this objects clearance is returned.

Parameters
aItemis another BOARD_CONNECTED_ITEM or NULL
Returns
int - the clearance in internal units.

Reimplemented from BOARD_CONNECTED_ITEM.

Definition at line 175 of file class_track.cpp.

176 {
177  // Currently tracks have no specific clearance parameter on a per track or per
178  // segment basis. The NETCLASS clearance is used.
179  return BOARD_CONNECTED_ITEM::GetClearance( aItem );
180 }
virtual int GetClearance(BOARD_CONNECTED_ITEM *aItem=NULL) const
Function GetClearance returns the clearance in internal units.

References BOARD_CONNECTED_ITEM::GetClearance().

Referenced by DRC::doTrackDrc(), Draw(), KIGFX::PCB_PAINTER::draw(), VIA::Draw(), LocateIntrusion(), PushTrack(), and ViewBBox().

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 263 of file base_struct.h.

264  {
268  return m_Flags & mask;
269  }
#define END_ONPAD
Pcbnew: flag set for track segment ending on a pad.
Definition: base_struct.h:133
#define BEGIN_ONPAD
Pcbnew: flag set for track segment starting on a pad.
Definition: base_struct.h:132
#define EDA_ITEM_ALL_FLAGS
Definition: base_struct.h:148
#define SELECTED
Definition: base_struct.h:121
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
#define DP_COUPLED
item is coupled with another item making a differential pair
Definition: base_struct.h:139
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
#define IS_DANGLING
indicates a pin is dangling
Definition: base_struct.h:143
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:120
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:119

References BEGIN_ONPAD, BRIGHTENED, DP_COUPLED, EDA_ITEM_ALL_FLAGS, END_ONPAD, ENDPOINT, HIGHLIGHTED, IS_DANGLING, EDA_ITEM::m_Flags, SELECTED, and STARTPOINT.

Referenced by AbortMoveAndEditTarget(), SCH_EDIT_TOOL::ChangeShape(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::ConvertTextType(), PCB_EDIT_FRAME::createPopUpMenuForFootprints(), PCB_EDIT_FRAME::createPopUpMenuForFpPads(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), PCB_EDIT_FRAME::createPopUpMenuForTexts(), PCB_EDIT_FRAME::createPopupMenuForTracks(), PCB_EDIT_FRAME::createPopUpMenuForZones(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_EDIT_FRAME::DeleteJunction(), PCB_BASE_FRAME::DeleteTextModule(), BOARD::Draw(), PCB_EDIT_FRAME::Edit_TrackSegm_Width(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditImage(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_VIEW_FRAME::GeneralControl(), FOOTPRINT_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyBeginRoute(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), EDA_DRAW_PANEL::OnMouseEvent(), FOOTPRINT_EDIT_FRAME::OnRightClick(), GERBVIEW_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::PlaceTarget(), FOOTPRINT_EDIT_FRAME::PrepareItemForHotkey(), TRACKS_CLEANER::removeDuplicatesOfTrack(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), PCB_BASE_FRAME::RotateTextModule(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), and DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow().

◆ GetEnd()

const wxPoint& TRACK::GetEnd ( ) const
inline

◆ GetEndNetCode()

TRACK * TRACK::GetEndNetCode ( int  NetCode)

Definition at line 473 of file class_track.cpp.

474 {
475  TRACK* NextS, * Track = this;
476  int ii = 0;
477 
478  if( Track == NULL )
479  return NULL;
480 
481  if( NetCode == -1 )
482  NetCode = GetNetCode();
483 
484  while( Track != NULL )
485  {
486  NextS = (TRACK*) Track->Pnext;
487 
488  if( Track->GetNetCode() == NetCode )
489  ii++;
490 
491  if( NextS == NULL )
492  break;
493 
494  if( NextS->GetNetCode() > NetCode )
495  break;
496 
497  Track = NextS;
498  }
499 
500  if( ii )
501  return Track;
502  else
503  return NULL;
504 }
int GetNetCode() const
Function GetNetCode.
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:170

References BOARD_CONNECTED_ITEM::GetNetCode(), and EDA_ITEM::Pnext.

Referenced by PCB_EDIT_FRAME::EraseRedundantTrack().

◆ GetEndPoint()

const wxPoint& TRACK::GetEndPoint ( ENDPOINT_T  aEndPoint) const
inline

Return the selected endpoint (start or end)

Definition at line 137 of file class_track.h.

138  {
139  if( aEndPoint == ENDPOINT_START )
140  return m_Start;
141  else
142  return m_End;
143  }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
wxPoint m_End
Line end point.
Definition: class_track.h:350

References ENDPOINT_START, m_End, and m_Start.

Referenced by BOARD::GetPad(), GetTrack(), and TRACKS_CLEANER::testTrackEndpointDangling().

◆ GetEndSegments()

int TRACK::GetEndSegments ( int  NbSegm,
TRACK **  StartTrack,
TRACK **  EndTrack 
)

Function GetEndSegments get the segments connected to the end point of the track.

return 1 if OK, 0 when a track is a closed loop and the beginning and the end of the track in *StartTrack and *EndTrack Modify *StartTrack en *EndTrack : (*StartTrack)->m_Start coordinate is the beginning of the track (*EndTrack)->m_End coordinate is the end of the track Segments connected must be consecutive in list

Definition at line 1345 of file class_track.cpp.

1346 {
1347  TRACK* Track, * via, * segm, * TrackListEnd;
1348  int NbEnds, ii, ok = 0;
1349  LSET layerMask;
1350 
1351  if( aCount <= 1 )
1352  {
1353  *aStartTrace = *aEndTrace = this;
1354  return 1;
1355  }
1356 
1357  // Calculation of the limit analysis.
1358  *aStartTrace = *aEndTrace = NULL;
1359  TrackListEnd = Track = this;
1360  ii = 0;
1361 
1362  for( ; ( Track != NULL ) && ( ii < aCount ); ii++, Track = Track->Next() )
1363  {
1364  TrackListEnd = Track;
1365  Track->m_Param = 0;
1366  }
1367 
1368  // Calculate the extremes.
1369  NbEnds = 0;
1370  Track = this;
1371  ii = 0;
1372 
1373  for( ; ( Track != NULL ) && ( ii < aCount ); ii++, Track = Track->Next() )
1374  {
1375  if( Track->Type() == PCB_VIA_T )
1376  continue;
1377 
1378  layerMask = Track->GetLayerSet();
1379  via = GetVia( TrackListEnd, Track->m_Start, layerMask );
1380 
1381  if( via )
1382  {
1383  layerMask |= via->GetLayerSet();
1384  via->SetState( BUSY, true );
1385  }
1386 
1387  Track->SetState( BUSY, true );
1388  segm = ::GetTrack( this, TrackListEnd, Track->m_Start, layerMask );
1389  Track->SetState( BUSY, false );
1390 
1391  if( via )
1392  via->SetState( BUSY, false );
1393 
1394  if( segm == NULL )
1395  {
1396  switch( NbEnds )
1397  {
1398  case 0:
1399  *aStartTrace = Track; NbEnds++;
1400  break;
1401 
1402  case 1:
1403  int BeginPad, EndPad;
1404  *aEndTrace = Track;
1405 
1406  // Swap ox, oy with fx, fy
1407  BeginPad = Track->GetState( BEGIN_ONPAD );
1408  EndPad = Track->GetState( END_ONPAD );
1409 
1410  Track->SetState( BEGIN_ONPAD | END_ONPAD, false );
1411 
1412  if( BeginPad )
1413  Track->SetState( END_ONPAD, true );
1414 
1415  if( EndPad )
1416  Track->SetState( BEGIN_ONPAD, true );
1417 
1418  std::swap( Track->m_Start, Track->m_End );
1419  std::swap( Track->start, Track->end );
1420  ok = 1;
1421  return ok;
1422  }
1423  }
1424 
1425  layerMask = Track->GetLayerSet();
1426  via = GetVia( TrackListEnd, Track->m_End, layerMask );
1427 
1428  if( via )
1429  {
1430  layerMask |= via->GetLayerSet();
1431  via->SetState( BUSY, true );
1432  }
1433 
1434  Track->SetState( BUSY, true );
1435  segm = ::GetTrack( this, TrackListEnd, Track->m_End, layerMask );
1436  Track->SetState( BUSY, false );
1437 
1438  if( via )
1439  via->SetState( BUSY, false );
1440 
1441  if( segm == NULL )
1442  {
1443  switch( NbEnds )
1444  {
1445  case 0:
1446  int BeginPad, EndPad;
1447  *aStartTrace = Track;
1448  NbEnds++;
1449 
1450  // Swap ox, oy with fx, fy
1451  BeginPad = Track->GetState( BEGIN_ONPAD );
1452  EndPad = Track->GetState( END_ONPAD );
1453 
1454  Track->SetState( BEGIN_ONPAD | END_ONPAD, false );
1455 
1456  if( BeginPad )
1457  Track->SetState( END_ONPAD, true );
1458 
1459  if( EndPad )
1460  Track->SetState( BEGIN_ONPAD, true );
1461 
1462  std::swap( Track->m_Start, Track->m_End );
1463  std::swap( Track->start, Track->end );
1464  break;
1465 
1466  case 1:
1467  *aEndTrace = Track;
1468  ok = 1;
1469  return ok;
1470  }
1471  }
1472  }
1473 
1474  return ok;
1475 }
TRACK * GetTrack(TRACK *aStartTrace, TRACK *aEndTrace, ENDPOINT_T aEndPoint, bool aSameNetOnly, bool aSequential)
Function GetTrack returns the trace segment connected to the segment at aEndPoint from aStartTrace to...
#define END_ONPAD
Pcbnew: flag set for track segment ending on a pad.
Definition: base_struct.h:133
#define BUSY
Pcbnew: flag indicating that the structure has.
Definition: base_struct.h:134
#define BEGIN_ONPAD
Pcbnew: flag set for track segment starting on a pad.
Definition: base_struct.h:132
double m_Param
Definition: class_track.h:104
VIA * GetVia(const wxPoint &aPosition, PCB_LAYER_ID aLayer=UNDEFINED_LAYER)
Function GetVia finds the first VIA object at aPosition on aLayer starting at the trace.
Class LSET is a set of PCB_LAYER_IDs.
void SetState(int type, int state)
Definition: base_struct.h:248
TRACK * Next() const
Definition: class_track.h:110
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
virtual LSET GetLayerSet() const
Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segme...

References BEGIN_ONPAD, BUSY, END_ONPAD, BOARD_ITEM::GetLayerSet(), EDA_ITEM::GetState(), GetTrack(), GetVia(), m_End, m_Param, m_Start, Next(), PCB_VIA_T, and EDA_ITEM::SetState().

Referenced by PCB_EDIT_FRAME::EraseRedundantTrack().

◆ GetFlags()

◆ GetLayer()

virtual PCB_LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlinevirtualinherited

Function GetLayer returns the primary layer this item is on.

Reimplemented in ZONE_CONTAINER.

Definition at line 123 of file class_board_item.h.

123 { return m_Layer; }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by Abort_MoveOrCopyModule(), DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), CN_CONNECTIVITY_ALGO::Add(), CN_LIST::Add(), CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer(), DIMENSION::AdjustDimensionDetails(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), AR_AUTOPLACER::buildFpAreas(), PCB_EDIT_FRAME::Change_Side_Module(), checkConnectedTo(), MODULE::CopyNetlistSettings(), CreateBoardSection(), MWAVE::CreateMicrowaveInductor(), CreateRoutesSection(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), DRC::doTrackKeepoutDrc(), TEXTE_MODULE::Draw(), DRAWSEGMENT::Draw(), KIGFX::PCB_PAINTER::draw(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Width(), export_vrml_drawsegment(), export_vrml_edge_module(), export_vrml_module(), export_vrml_pcbtext(), export_vrml_text_module(), PCB_EDIT_FRAME::ExportToGenCAD(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), EDGE_MODULE::Flip(), TEXTE_MODULE::Flip(), Flip(), DIMENSION::Flip(), MODULE::Flip(), DRAWSEGMENT::Flip(), PCB_IO::FootprintSave(), FootprintWriteShape(), PCB_IO::formatLayer(), DSN::SPECCTRA_DB::FromBOARD(), AR_AUTOPLACER::genModuleOnRoutingMatrix(), BOARD::GetFootprint(), ZONE_CONTAINER::GetLayer(), AR_AUTOPLACER::getOptimalModulePlacement(), BOARD::GetPad(), TEXT_MOD_GRID_TABLE::GetValueAsLong(), BOARD::GetVisibleTrack(), SELECTION_TOOL::guessSelectionCandidates(), idf_export_module(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), D_PAD::IsFlipped(), MODULE::IsFlipped(), EDGE_MODULE::IsParentFlipped(), TEXTE_MODULE::IsParentFlipped(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), BOARD::MarkTrace(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAddField(), PCB_EDIT_FRAME::OnRightClick(), EAGLE_PLUGIN::packagePad(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotAllTextsModule(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotDrawSegment(), BRDITEMS_PLOTTER::PlotPcbTarget(), BRDITEMS_PLOTTER::PlotTextePcb(), processBoardItem(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), TRACKS_CLEANER::removeDuplicatesOfTrack(), PCB_BASE_FRAME::ResetTextSize(), SELECTION_TOOL::selectable(), TEXT_MOD_GRID_TABLE::SetValueAsLong(), ShowClearance(), PNS_KICAD_IFACE::syncGraphicalItem(), PNS_KICAD_IFACE::syncTrack(), DRC::testCopperDrawItem(), DRC::testCopperTextAndGraphics(), DRC::testCopperTextItem(), DRC::testDisabledLayers(), AR_AUTOPLACER::testModuleOnBoard(), TEXTE_MODULE::TEXTE_MODULE(), AR_MATRIX::TraceSegmentPcb(), TraceSegmentPcb(), TrackListSortByNetcode(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), MODULE::TransformGraphicShapesWithClearanceToPolygonSet(), MODULE::TransformGraphicTextWithClearanceToPolygonSet(), TEXTE_MODULE::ViewGetLayers(), ViewGetLayers(), TEXTE_MODULE::ViewGetLOD(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetLayerName()

wxString BOARD_ITEM::GetLayerName ( ) const
inherited

Function GetLayerName returns the name of the PCB layer on which the item resides.

Returns
wxString containing the layer name associated with this item.

Definition at line 78 of file class_board_item.cpp.

79 {
80  BOARD* board = GetBoard();
81 
82  if( board )
83  return board->GetLayerName( m_Layer );
84 
85  // If no parent, return standard name
87 }
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
PCB_LAYER_ID m_Layer
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Function GetStandardLayerName returns an "English Standard" name of a PCB layer when given aLayerNumb...
Definition: class_board.h:654

References BOARD_ITEM::GetBoard(), BOARD::GetLayerName(), BOARD::GetStandardLayerName(), and BOARD_ITEM::m_Layer.

Referenced by PCB_IO::format(), PCB_IO::formatLayer(), TEXTE_PCB::GetMsgPanelInfo(), ZONE_CONTAINER::GetMsgPanelInfo(), TEXTE_MODULE::GetMsgPanelInfo(), DRAWSEGMENT::GetMsgPanelInfo(), TEXTE_PCB::GetSelectMenuText(), EDGE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), DIMENSION::GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), GetSelectMenuText(), MODULE::GetSelectMenuText(), ZONE_CONTAINER::GetSelectMenuText(), and TEXT_MOD_GRID_TABLE::GetValue().

◆ GetLayerSet()

virtual LSET BOARD_ITEM::GetLayerSet ( ) const
inlinevirtualinherited

Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides.

Returns
int - a layer mask, see layers_id_colors_visibility.h.

Reimplemented in D_PAD, VIA, and ZONE_CONTAINER.

Definition at line 131 of file class_board_item.h.

131 { return LSET( m_Layer ); }
PCB_LAYER_ID m_Layer
Class LSET is a set of PCB_LAYER_IDs.

References BOARD_ITEM::m_Layer.

Referenced by GRID_HELPER::BestSnapAnchor(), build_pad_testpoints(), BOARD::chainMarkedSegments(), Collect_TrackSegmentsToDrag(), DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::EraseRedundantTrack(), find_vias_and_tracks_at(), GetEndSegments(), GetTrack(), hash_board_item(), BOARD::MarkTrace(), POINT_EDITOR::OnSelectionChange(), and PCB_EDIT_FRAME::StartMoveOneNodeOrSegment().

◆ GetLength()

double TRACK::GetLength ( ) const
inline

Function GetLength returns the length of the track using the hypotenuse calculation.

Returns
double - the length of the track

Definition at line 186 of file class_track.h.

187  {
188  return GetLineLength( m_Start, m_End );
189  }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Function GetLineLength returns the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:200
wxPoint m_End
Line end point.
Definition: class_track.h:350

References GetLineLength(), m_End, and m_Start.

Referenced by DIALOG_SELECT_NET_FROM_LIST::buildNetsList(), calcArea(), GetMsgPanelInfoBase(), GetSelectMenuText(), and ShowNewTrackWhenMovingCursor().

◆ GetList()

DHEAD* EDA_ITEM::GetList ( ) const
inlineinherited

◆ GetLocalRatsnestVisible()

bool BOARD_CONNECTED_ITEM::GetLocalRatsnestVisible ( ) const
inlineinherited

Definition at line 189 of file board_connected_item.h.

190  {
191  return m_localRatsnestVisible;
192  }

References BOARD_CONNECTED_ITEM::m_localRatsnestVisible.

◆ GetMenuImage()

BITMAP_DEF TRACK::GetMenuImage ( ) const
overridevirtual

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

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

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Reimplemented in VIA.

Definition at line 1488 of file class_track.cpp.

1489 {
1490  return add_tracks_xpm;
1491 }

◆ GetMsgPanelInfo()

void TRACK::GetMsgPanelInfo ( EDA_UNITS_T  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Note
This method replaces DisplayInfo() so that KiCad objects no longer have any knowledge of wxWidgets UI objects.
Parameters
aListis the list to populate.

Reimplemented from EDA_ITEM.

Definition at line 960 of file class_track.cpp.

961 {
962  wxString msg;
963  BOARD* board = GetBoard();
964 
965  // Display basic infos
966  GetMsgPanelInfoBase( aUnits, aList );
967 
968  // Display full track length (in Pcbnew)
969  if( board )
970  {
971  double trackLen = 0;
972  double lenPadToDie = 0;
973 
974  // Find the beginning of the track buffer containing this, because it is not
975  // always the track list on board, but can be a "private" list
976  TRACK* track_buffer_start = this;
977 
978  while( track_buffer_start->Back() )
979  track_buffer_start = track_buffer_start->Back();
980 
981  board->MarkTrace( track_buffer_start, this, NULL, &trackLen, &lenPadToDie, false );
982  msg = MessageTextFromValue( aUnits, trackLen );
983  aList.push_back( MSG_PANEL_ITEM( _( "Length" ), msg, DARKCYAN ) );
984 
985  if( lenPadToDie != 0 )
986  {
987  msg = MessageTextFromValue( aUnits, trackLen + lenPadToDie );
988  aList.push_back( MSG_PANEL_ITEM( _( "Full Length" ), msg, DARKCYAN ) );
989 
990  msg = MessageTextFromValue( aUnits, lenPadToDie, true );
991  aList.push_back( MSG_PANEL_ITEM( _( "Pad To Die Length" ), msg, DARKCYAN ) );
992  }
993  }
994 
995  NETCLASSPTR netclass = GetNetClass();
996 
997  if( netclass )
998  {
999  aList.push_back( MSG_PANEL_ITEM( _( "NC Name" ), netclass->GetName(), DARKMAGENTA ) );
1000 
1001  msg = MessageTextFromValue( aUnits, netclass->GetClearance(), true );
1002  aList.push_back( MSG_PANEL_ITEM( _( "NC Clearance" ), msg, DARKMAGENTA ) );
1003 
1004  msg = MessageTextFromValue( aUnits, netclass->GetTrackWidth(), true );
1005  aList.push_back( MSG_PANEL_ITEM( _( "NC Width" ), msg, DARKMAGENTA ) );
1006 
1007  msg = MessageTextFromValue( aUnits, netclass->GetViaDiameter(), true );
1008  aList.push_back( MSG_PANEL_ITEM( _( "NC Via Size" ), msg, DARKMAGENTA ) );
1009 
1010  msg = MessageTextFromValue( aUnits, netclass->GetViaDrill(), true );
1011  aList.push_back( MSG_PANEL_ITEM( _( "NC Via Drill"), msg, DARKMAGENTA ) );
1012  }
1013 }
wxString MessageTextFromValue(EDA_UNITS_T aUnits, int aValue, bool aUseMils)
Definition: base_units.cpp:125
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
virtual void GetMsgPanelInfoBase(EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList)
Function GetMsgPanelInfoBase Display info about the track segment only, and does not calculate the fu...
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
std::shared_ptr< NETCLASS > GetNetClass() const
Function GetNetClass returns the NETCLASS for this item.
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
TRACK * MarkTrace(TRACK *aTrackList, TRACK *aTrace, int *aCount, double *aTraceLength, double *aInPackageLength, bool aReorder)
Function MarkTrace marks a chain of trace segments, connected to aTrace.
TRACK * Back() const
Definition: class_track.h:111

References Back(), DARKCYAN, DARKMAGENTA, BOARD_ITEM::GetBoard(), GetMsgPanelInfoBase(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD::MarkTrace(), and MessageTextFromValue().

Referenced by PCB_EDIT_FRAME::Attribut_Segment().

◆ GetMsgPanelInfoBase()

void TRACK::GetMsgPanelInfoBase ( EDA_UNITS_T  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
protectedvirtual

Function GetMsgPanelInfoBase Display info about the track segment only, and does not calculate the full track length.

Parameters
aListA list of MSG_PANEL_ITEM objects to add status information.

Reimplemented in VIA.

Definition at line 1075 of file class_track.cpp.

1076 {
1077  wxString msg;
1078  BOARD* board = GetBoard();
1079 
1080  aList.push_back( MSG_PANEL_ITEM( _( "Type" ), _( "Track" ), DARKCYAN ) );
1081 
1082  GetMsgPanelInfoBase_Common( aUnits, aList );
1083 
1084  // Display layer
1085  if( board )
1086  msg = board->GetLayerName( m_Layer );
1087  else
1088  msg.Printf(wxT("%d"), m_Layer );
1089 
1090  aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), msg, BROWN ) );
1091 
1092  // Display width
1093  msg = MessageTextFromValue( aUnits, m_Width, true );
1094 
1095  aList.push_back( MSG_PANEL_ITEM( _( "Width" ), msg, DARKCYAN ) );
1096 
1097  // Display segment length
1098  msg = ::MessageTextFromValue( aUnits, GetLength() );
1099  aList.push_back( MSG_PANEL_ITEM( _( "Segment Length" ), msg, DARKCYAN ) );
1100 }
void GetMsgPanelInfoBase_Common(EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList)
Helper function for the common panel info.
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
double GetLength() const
Function GetLength returns the length of the track using the hypotenuse calculation.
Definition: class_track.h:186
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxString MessageTextFromValue(EDA_UNITS_T aUnits, int aValue, bool aUseMils)
Definition: base_units.cpp:125
PCB_LAYER_ID m_Layer
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
Definition: colors.h:62

References BROWN, DARKCYAN, BOARD_ITEM::GetBoard(), BOARD::GetLayerName(), GetLength(), GetMsgPanelInfoBase_Common(), BOARD_ITEM::m_Layer, m_Width, and MessageTextFromValue().

Referenced by GetMsgPanelInfo().

◆ GetMsgPanelInfoBase_Common()

void TRACK::GetMsgPanelInfoBase_Common ( EDA_UNITS_T  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
protected

Helper function for the common panel info.

Definition at line 1015 of file class_track.cpp.

1016 {
1017  wxString msg;
1018 
1019  // Display Net Name
1020  if( GetBoard() )
1021  {
1022  NETINFO_ITEM* net = GetNet();
1023 
1024  if( net )
1025  msg = UnescapeString( net->GetNetname() );
1026  else
1027  msg = wxT( "<no name>" );
1028 
1029  aList.push_back( MSG_PANEL_ITEM( _( "NetName" ), msg, RED ) );
1030 
1031  // Display net code : (useful in test or debug)
1032  msg.Printf( wxT( "%d" ), GetNetCode() );
1033  aList.push_back( MSG_PANEL_ITEM( _( "NetCode" ), msg, RED ) );
1034  }
1035 
1036 #if defined(DEBUG)
1037 
1038  // Display the flags
1039  msg.Printf( wxT( "0x%08X" ), m_Flags );
1040  aList.push_back( MSG_PANEL_ITEM( wxT( "Flags" ), msg, BLUE ) );
1041 
1042 #if 0
1043  // Display start and end pointers:
1044  msg.Printf( wxT( "%p" ), start );
1045  aList.push_back( MSG_PANEL_ITEM( wxT( "start ptr" ), msg, BLUE ) );
1046  msg.Printf( wxT( "%p" ), end );
1047  aList.push_back( MSG_PANEL_ITEM( wxT( "end ptr" ), msg, BLUE ) );
1048  // Display this ptr
1049  msg.Printf( wxT( "%p" ), this );
1050  aList.push_back( MSG_PANEL_ITEM( wxT( "this" ), msg, BLUE ) );
1051 #endif
1052 
1053 #if 0
1054  // Display start and end positions:
1055  msg.Printf( wxT( "%d %d" ), m_Start.x, m_Start.y );
1056  aList.push_back( MSG_PANEL_ITEM( wxT( "Start pos" ), msg, BLUE ) );
1057  msg.Printf( wxT( "%d %d" ), m_End.x, m_End.y );
1058  aList.push_back( MSG_PANEL_ITEM( wxT( "End pos" ), msg, BLUE ) );
1059 #endif
1060 
1061 #endif // defined(DEBUG)
1062 
1063  // Display the State member
1064  msg = wxT( ". . " );
1065 
1066  if( GetState( TRACK_LOCKED ) )
1067  msg[0] = 'L';
1068 
1069  if( GetState( TRACK_AR ) )
1070  msg[2] = 'A';
1071 
1072  aList.push_back( MSG_PANEL_ITEM( _( "Status" ), msg, MAGENTA ) );
1073 }
Definition: colors.h:57
int GetNetCode() const
Function GetNetCode.
wxPoint m_Start
Line start point.
Definition: class_track.h:349
NETINFO_ITEM * GetNet() const
Function GetNet Returns NET_INFO object for a given item.
Definition: colors.h:61
wxPoint m_End
Line end point.
Definition: class_track.h:350
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
const wxString & GetNetname() const
Function GetNetname.
Definition: netinfo.h:235
#define TRACK_LOCKED
Pcbnew: track locked: protected from global deletion.
Definition: base_struct.h:128
Definition: colors.h:60
#define TRACK_AR
Pcbnew: autorouted track.
Definition: base_struct.h:129
Class NETINFO_ITEM handles the data for a net.
Definition: netinfo.h:65
wxString UnescapeString(const wxString &aSource)
Definition: string.cpp:123
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
BOARD_CONNECTED_ITEM * end
Definition: class_track.h:102
int GetState(int type) const
Definition: base_struct.h:243
BOARD_CONNECTED_ITEM * start
Definition: class_track.h:101

References BLUE, end, BOARD_ITEM::GetBoard(), BOARD_CONNECTED_ITEM::GetNet(), BOARD_CONNECTED_ITEM::GetNetCode(), NETINFO_ITEM::GetNetname(), EDA_ITEM::GetState(), m_End, EDA_ITEM::m_Flags, m_Start, MAGENTA, RED, start, TRACK_AR, TRACK_LOCKED, and UnescapeString().

Referenced by GetMsgPanelInfoBase(), and VIA::GetMsgPanelInfoBase().

◆ GetNet()

NETINFO_ITEM* BOARD_CONNECTED_ITEM::GetNet ( ) const
inlineinherited

◆ GetNetClass()

NETCLASSPTR BOARD_CONNECTED_ITEM::GetNetClass ( ) const
inherited

Function GetNetClass returns the NETCLASS for this item.

Definition at line 108 of file board_connected_item.cpp.

109 {
110  // It is important that this be implemented without any sequential searching.
111  // Simple array lookups should be fine, performance-wise.
112  BOARD* board = GetBoard();
113 
114  // DO NOT use wxASSERT, because GetNetClass is called inside an OnPaint event
115  // and a call to wxASSERT can crash the application.
116 
117  if( board == NULL ) // Should not occur
118  {
119  wxLogTrace( traceMask, "%s: NULL board,type %d", __func__, Type() );
120 
121  return NETCLASSPTR();
122  }
123 
124  NETCLASSPTR netclass;
125  NETINFO_ITEM* net = board->FindNet( GetNetCode() );
126 
127  if( net )
128  {
129  netclass = net->GetNetClass();
130 
131  //DBG( if(!netclass) printf( "%s: NULL netclass,type %d", __func__, Type() );)
132  }
133 
134  if( netclass )
135  return netclass;
136  else
137  return board->GetDesignSettings().GetDefault();
138 }
NETINFO_ITEM * FindNet(int aNetcode) const
Function FindNet searches for a net with the given netcode.
int GetNetCode() const
Function GetNetCode.
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Function GetDesignSettings.
Definition: class_board.h:534
const wxChar *const traceMask
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class NETINFO_ITEM handles the data for a net.
Definition: netinfo.h:65
NETCLASSPTR GetDefault() const
Function GetDefault.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
NETCLASSPTR GetNetClass()
Definition: netinfo.h:122
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References BOARD::FindNet(), BOARD_ITEM::GetBoard(), BOARD_DESIGN_SETTINGS::GetDefault(), BOARD::GetDesignSettings(), NETINFO_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetCode(), traceMask, and EDA_ITEM::Type().

Referenced by DRC::doTrackDrc(), ZONE_CONTAINER::GetClearance(), BOARD_CONNECTED_ITEM::GetClearance(), VIA::GetDrillValue(), GetMsgPanelInfo(), BOARD_CONNECTED_ITEM::GetNetClassName(), ROUTER_TOOL::prepareInteractive(), and DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow().

◆ GetNetClassName()

wxString BOARD_CONNECTED_ITEM::GetNetClassName ( ) const
inherited

Function GetNetClassName returns a pointer to the netclass of the zone.

If the net is not found (can happen when a netlist is reread, and the net name does not exist, return the default net class (should not return a null pointer).

Returns
the Net Class name of this item

Definition at line 141 of file board_connected_item.cpp.

142 {
143  wxString name;
144  NETCLASSPTR myclass = GetNetClass();
145 
146  if( myclass )
147  name = myclass->GetName();
148  else
150 
151  return name;
152 }
static const char Default[]
the name of the default NETCLASS
Definition: netclass.h:80
const char * name
Definition: DXF_plotter.cpp:61
std::shared_ptr< NETCLASS > GetNetClass() const
Function GetNetClass returns the NETCLASS for this item.

References NETCLASS::Default, BOARD_CONNECTED_ITEM::GetNetClass(), and name.

Referenced by PCB_EDIT_FRAME::createPopUpMenuForFpPads(), PCB_EDIT_FRAME::createPopupMenuForTracks(), and DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem().

◆ GetNetCode()

int BOARD_CONNECTED_ITEM::GetNetCode ( ) const
inlineinherited

Function GetNetCode.

Returns
int - the net code.

Definition at line 104 of file board_connected_item.h.

105  {
106  return m_netinfo->GetNet();
107  }
int GetNet() const
Function GetNet.
Definition: netinfo.h:227
NETINFO_ITEM * m_netinfo
Stores all informations about the net that item belongs to.

References NETINFO_ITEM::GetNet(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by PCB_EDIT_FRAME::Attribut_net(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), ZONE_FILLER::buildUnconnectedThermalStubsPolygonList(), ZONE_FILLER::buildZoneFeatureHoleList(), Collect_TrackSegmentsToDrag(), BOARD::CombineAllAreasInNet(), ZONE_FILLER::computeRawFilledAreas(), connectedItemFilter(), D_PAD::CopyNetlistSettings(), CreateRoutesSection(), CreateSignalsSection(), PCB_EDIT_FRAME::Delete_net(), PCB_EDIT_FRAME::Delete_Segment(), DRC::doEdgeZoneDrc(), DRC::doPadToPadsDrc(), DRC::doTrackDrc(), KIGFX::PCB_PAINTER::draw(), VIA::Draw(), BOARD::DrawHighLight(), D_PAD::DrawShape(), DrawShortNetname(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::duplicateZone(), PCB_EDIT_FRAME::End_Zone(), PCB_EDIT_FRAME::EraseRedundantTrack(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PNS::NODE::FindItemByParent(), PCB_IO::format(), DSN::SPECCTRA_DB::FromBOARD(), GetBestInsertPoint(), CONNECTIVITY_DATA::GetConnectedItems(), GetEndNetCode(), ZONE_CONTAINER::GetMsgPanelInfo(), GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), GetStartNetCode(), GetTrack(), hash_eda(), DIALOG_PAD_PROPERTIES::initValues(), ZONE_CONTAINER::IsSame(), LocateIntrusion(), Magnetize(), DSN::SPECCTRA_DB::makeIMAGE(), AR_AUTOPLACER::nearestPad(), CONNECTIVITY_DATA::NearestUnconnectedTargets(), ROUTER_TOOL::NeighboringSegmentFilter(), CN_ITEM::Net(), BOARD::NormalizeAreaPolygon(), BOARD::OnAreaPolygonModified(), ZONE_SETTINGS::operator<<(), DIALOG_PAD_PROPERTIES::PadTypeSelected(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), PCB_EDIT_FRAME::Process_Special_Functions(), PushTrack(), PCB_EDIT_FRAME::Remove_One_Track(), PCB_EDIT_FRAME::Remove_Zone_Corner(), TRACKS_CLEANER::removeDuplicatesOfTrack(), PCB_SELECTION_CONDITIONS::sameNetFunc(), SaveCopyOfZones(), BOARD::SetAreasNetCodesFromNetNames(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PNS_KICAD_IFACE::syncPad(), PNS_KICAD_IFACE::syncTrack(), PNS_KICAD_IFACE::syncVia(), BOARD::TestAreaIntersections(), DRC::testZones(), DRC::TestZoneToZoneOutline(), TrackListSortByNetcode(), BOARD::TracksInNet(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), NETINFO_MAPPING::Update(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), ZONE_CONTAINER::ZONE_CONTAINER(), and PCB_EDITOR_CONTROL::ZoneMerge().

◆ GetNetname()

const wxString& BOARD_CONNECTED_ITEM::GetNetname ( ) const
inlineinherited

Function GetNetname.

Returns
wxString - the full netname

Definition at line 123 of file board_connected_item.h.

124  {
125  return m_netinfo->GetNetname();
126  }
const wxString & GetNetname() const
Function GetNetname.
Definition: netinfo.h:235
NETINFO_ITEM * m_netinfo
Stores all informations about the net that item belongs to.

References NETINFO_ITEM::GetNetname(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by KIGFX::PCB_PAINTER::draw(), PCB_IO::format(), DSN::SPECCTRA_DB::FromBOARD(), D_PAD::GetMsgPanelInfo(), BOARD_NETLIST_UPDATER::getNetname(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), CN_CLUSTER::OriginNetName(), BRDITEMS_PLOTTER::PlotFilledAreas(), BRDITEMS_PLOTTER::PlotPad(), PlotStandardLayer(), and BOARD_NETLIST_UPDATER::updateCopperZoneNets().

◆ GetNetnameMsg()

wxString BOARD_CONNECTED_ITEM::GetNetnameMsg ( ) const
inlineinherited

Function GetNetnameMsg.

Returns
wxString - the full netname or "<no net>" in square braces, followed by "(Not Found)" if the netcode is undefined.

Definition at line 133 of file board_connected_item.h.

134  {
135  if( !GetBoard() )
136  return wxT( "[** NO BOARD DEFINED **]" );
137 
138  wxString netname = GetNetname();
139 
140  if( !netname.length() )
141  return wxT( "[<no net>]" );
142  else if( GetNetCode() < 0 )
143  return wxT( "[" + UnescapeString( netname ) + "](" + _( "Not Found" ) + ")" );
144  else
145  return wxT( "[" + UnescapeString( netname ) + "]" );
146  }
int GetNetCode() const
Function GetNetCode.
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
const wxString & GetNetname() const
Function GetNetname.
wxString UnescapeString(const wxString &aSource)
Definition: string.cpp:123

References BOARD_ITEM::GetBoard(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD_CONNECTED_ITEM::GetNetname(), and UnescapeString().

Referenced by GetSelectMenuText(), VIA::GetSelectMenuText(), and ZONE_CONTAINER::GetSelectMenuText().

◆ getNextNumberInSequence()

int BOARD_ITEM::getNextNumberInSequence ( const std::set< int > &  aSeq,
bool  aFillSequenceGaps 
)
staticprotectedinherited

Definition at line 98 of file class_board_item.cpp.

99 {
100  if( aSeq.empty() )
101  return 1;
102 
103  // By default go to the end of the sequence
104  int candidate = *aSeq.rbegin();
105 
106  // Filling in gaps in pad numbering
107  if( aFillSequenceGaps )
108  {
109  // start at the beginning
110  candidate = *aSeq.begin();
111 
112  for( auto it : aSeq )
113  {
114  if( it - candidate > 1 )
115  break;
116 
117  candidate = it;
118  }
119  }
120 
121  ++candidate;
122 
123  return candidate;
124 }

Referenced by MODULE::GetNextPadName().

◆ GetParent()

BOARD_ITEM_CONTAINER* BOARD_ITEM::GetParent ( void  ) const
inlineinherited

Definition at line 117 of file class_board_item.h.

117 { return (BOARD_ITEM_CONTAINER*) m_Parent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:174
Abstract interface for BOARD_ITEMs capable of storing other items inside.

References EDA_ITEM::m_Parent.

Referenced by Abort_Move_ModuleOutline(), AbortMoveTextModule(), POINT_EDITOR::addCorner(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), BOARD_ITEM::DeleteStructure(), PCB_BASE_FRAME::DeleteTextModule(), 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::PCB_PAINTER::draw(), TEXTE_MODULE::DrawUmbilical(), PCB_EDIT_FRAME::duplicateItems(), EditToolSelectionFilter(), PCB_IO::format(), FormatProbeItem(), BOARD_ITEM::GetBoard(), LEGACY_ARRAY_CREATOR::getModule(), EDGE_MODULE::GetMsgPanelInfo(), EDGE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetShownText(), SELECTION_TOOL::guessSelectionCandidates(), GENERAL_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), EDGE_MODULE::IsParentFlipped(), TEXTE_MODULE::IsParentFlipped(), LEGACY_PLUGIN::loadMODULE_TEXT(), PCB_EDIT_FRAME::moveExact(), FOOTPRINT_EDIT_FRAME::OnRightClick(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_BASE_FRAME::PlaceTexteModule(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::PlotTextModule(), PCB_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), PCB_BASE_FRAME::ResetTextSize(), PCB_BASE_FRAME::RotateTextModule(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SELECTION_TOOL::select(), ShowCurrentOutlineWhileMoving(), ShowNewEdgeModule(), PCB_BASE_FRAME::StartMoveTexteModule(), SwapItemData(), DRC::testCopperDrawItem(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetPosition()

const wxPoint TRACK::GetPosition ( ) const
inlineoverridevirtual

Implements BOARD_ITEM.

Reimplemented in VIA.

Definition at line 124 of file class_track.h.

124 { return m_Start; }
wxPoint m_Start
Line start point.
Definition: class_track.h:349

References m_Start.

Referenced by DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), TRACKS_CLEANER::mergeCollinearSegments(), and DRC_MARKER_FACTORY::NewMarker().

◆ GetSelectMenuText()

wxString TRACK::GetSelectMenuText ( EDA_UNITS_T  aUnits) const
overridevirtual

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

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

Returns
The menu text string.

Reimplemented from EDA_ITEM.

Reimplemented in VIA.

Definition at line 1478 of file class_track.cpp.

1479 {
1480  return wxString::Format( _("Track %s %s on %s, length: %s" ),
1481  MessageTextFromValue( aUnits, m_Width ),
1482  GetNetnameMsg(),
1483  GetLayerName(),
1484  MessageTextFromValue( aUnits, GetLength() ) );
1485 }
double GetLength() const
Function GetLength returns the length of the track using the hypotenuse calculation.
Definition: class_track.h:186
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxString MessageTextFromValue(EDA_UNITS_T aUnits, int aValue, bool aUseMils)
Definition: base_units.cpp:125
wxString GetNetnameMsg() const
Function GetNetnameMsg.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
wxString GetLayerName() const
Function GetLayerName returns the name of the PCB layer on which the item resides.

References Format(), BOARD_ITEM::GetLayerName(), GetLength(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), m_Width, and MessageTextFromValue().

◆ GetShortNetname()

const wxString& BOARD_CONNECTED_ITEM::GetShortNetname ( ) const
inlineinherited

Function GetShortNetname.

Returns
wxString - the short netname

Definition at line 152 of file board_connected_item.h.

153  {
154  return m_netinfo->GetShortNetname();
155  }
const wxString & GetShortNetname() const
Function GetShortNetname.
Definition: netinfo.h:241
NETINFO_ITEM * m_netinfo
Stores all informations about the net that item belongs to.

References NETINFO_ITEM::GetShortNetname(), and BOARD_CONNECTED_ITEM::m_netinfo.

Referenced by KIGFX::PCB_PAINTER::draw(), and D_PAD::DrawShape().

◆ GetStart()

const wxPoint& TRACK::GetStart ( ) const
inline

Definition at line 133 of file class_track.h.

133 { return m_Start; }
wxPoint m_Start
Line start point.
Definition: class_track.h:349

References m_Start.

Referenced by CN_LIST::Add(), PCB_EDIT_FRAME::Add45DegreeSegment(), BOARD::chainMarkedSegments(), Collect_TrackSegmentsToDrag(), GRID_HELPER::computeAnchors(), ComputeBreakPoint(), CINFO3D_VISU::createLayers(), BOARD::CreateLockPoint(), CINFO3D_VISU::createNewTrack(), CreateRoutesSection(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), DRAG_SEGM_PICKER::DRAG_SEGM_PICKER(), KIGFX::PCB_PAINTER::draw(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::EraseRedundantTrack(), export_vrml_via(), find_vias_and_tracks_at(), FindBestGridPointOnTrack(), PCB_IO::format(), DSN::SPECCTRA_DB::FromBOARD(), C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads(), HitTest(), VIA::HitTest(), InitialiseDragParameters(), C3D_RENDER_RAYTRACING::insert3DViaHole(), LocateIntrusion(), Magnetize(), BOARD::MarkTrace(), TRACKS_CLEANER::mergeCollinearSegments(), ROUTER_TOOL::NeighboringSegmentFilter(), OrCell_Trace(), PCB_EDIT_FRAME::Other_Layer_Route(), otherEnd(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), BRDITEMS_PLOTTER::PlotDrillMarks(), PlotStandardLayer(), PushTrack(), TRACKS_CLEANER::removeDuplicatesOfTrack(), TRACKS_CLEANER::removeDuplicatesOfVia(), DRAG_SEGM_PICKER::SetAuxParameters(), Show_Drag_Track_Segment_With_Cte_Slope(), Show_MoveNode(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PNS_KICAD_IFACE::syncTrack(), TRACKS_CLEANER::testTrackEndpointDangling(), AR_MATRIX::TraceSegmentPcb(), TraceSegmentPcb(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), updateConn(), and PCB_BRIGHT_BOX::ViewDraw().

◆ GetStartNetCode()

TRACK * TRACK::GetStartNetCode ( int  NetCode)

Definition at line 444 of file class_track.cpp.

445 {
446  TRACK* Track = this;
447  int ii = 0;
448 
449  if( NetCode == -1 )
450  NetCode = GetNetCode();
451 
452  while( Track != NULL )
453  {
454  if( Track->GetNetCode() > NetCode )
455  break;
456 
457  if( Track->GetNetCode() == NetCode )
458  {
459  ii++;
460  break;
461  }
462 
463  Track = (TRACK*) Track->Pnext;
464  }
465 
466  if( ii )
467  return Track;
468  else
469  return NULL;
470 }
int GetNetCode() const
Function GetNetCode.
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:170

References BOARD_CONNECTED_ITEM::GetNetCode(), and EDA_ITEM::Pnext.

◆ GetState()

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 256 of file base_struct.h.

256 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:167

References EDA_ITEM::m_Status.

Referenced by PCB_IO::format().

◆ GetTimeStamp()

◆ GetTrack()

TRACK * TRACK::GetTrack ( TRACK aStartTrace,
TRACK aEndTrace,
ENDPOINT_T  aEndPoint,
bool  aSameNetOnly,
bool  aSequential 
)

Function GetTrack returns the trace segment connected to the segment at aEndPoint from aStartTrace to aEndTrace.

Parameters
aStartTraceA pointer to the TRACK object to begin searching.
aEndTraceA pointer to the TRACK object to stop the search. A NULL value searches to the end of the list.
aEndPointThe start or end point of the segment to test against.
aSameNetOnlyif true stop searching when the netcode changes
aSequentialIf true, forces a forward sequential search, which is restartable; the default search can be faster but the position of the returned track in the list is unpredictable
Returns
A TRACK object pointer if found otherwise NULL.

Definition at line 1267 of file class_track.cpp.

1269 {
1270  const wxPoint& position = GetEndPoint( aEndPoint );
1271  LSET refLayers = GetLayerSet();
1272  TRACK* previousSegment;
1273  TRACK* nextSegment;
1274 
1275  if( aSequential )
1276  {
1277  // Simple sequential search: from aStartTrace forward to aEndTrace
1278  previousSegment = NULL;
1279  nextSegment = aStartTrace;
1280  }
1281  else
1282  {
1283  /* Local bidirectional search: from this backward to aStartTrace
1284  * AND forward to aEndTrace. The idea is that nearest segments
1285  * are found (on average) faster in this way. In fact same-net
1286  * segments are almost guaranteed to be found faster, in a global
1287  * search, since they are grouped together in the track list */
1288  previousSegment = this;
1289  nextSegment = this;
1290  }
1291 
1292  while( nextSegment || previousSegment )
1293  {
1294  // Terminate the search in the direction if the netcode mis-matches
1295  if( aSameNetOnly )
1296  {
1297  if( nextSegment && (nextSegment->GetNetCode() != GetNetCode()) )
1298  nextSegment = NULL;
1299  if( previousSegment && (previousSegment->GetNetCode() != GetNetCode()) )
1300  previousSegment = NULL;
1301  }
1302 
1303  if( nextSegment )
1304  {
1305  if ( (nextSegment != this) &&
1306  !nextSegment->GetState( BUSY | IS_DELETED ) &&
1307  ( refLayers & nextSegment->GetLayerSet() ).any() )
1308  {
1309  if( (position == nextSegment->m_Start) ||
1310  (position == nextSegment->m_End) )
1311  return nextSegment;
1312  }
1313 
1314  // Keep looking forward
1315  if( nextSegment == aEndTrace )
1316  nextSegment = NULL;
1317  else
1318  nextSegment = nextSegment->Next();
1319  }
1320 
1321  // Same as above, looking back. During sequential search this branch is inactive
1322  if( previousSegment )
1323  {
1324  if( (previousSegment != this) &&
1325  !previousSegment->GetState( BUSY | IS_DELETED ) &&
1326  ( refLayers & previousSegment->GetLayerSet() ).any()
1327  )
1328  {
1329  if( (position == previousSegment->m_Start) ||
1330  (position == previousSegment->m_End) )
1331  return previousSegment;
1332  }
1333 
1334  if( previousSegment == aStartTrace )
1335  previousSegment = NULL;
1336  else
1337  previousSegment = previousSegment->Back();
1338  }
1339  }
1340 
1341  return NULL;
1342 }
int GetNetCode() const
Function GetNetCode.
wxPoint m_Start
Line start point.
Definition: class_track.h:349
#define BUSY
Pcbnew: flag indicating that the structure has.
Definition: base_struct.h:134
Class LSET is a set of PCB_LAYER_IDs.
#define IS_DELETED
Definition: base_struct.h:117
wxPoint m_End
Line end point.
Definition: class_track.h:350
TRACK * Next() const
Definition: class_track.h:110
const wxPoint & GetEndPoint(ENDPOINT_T aEndPoint) const
Return the selected endpoint (start or end)
Definition: class_track.h:137
int GetState(int type) const
Definition: base_struct.h:243
virtual LSET GetLayerSet() const
Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segme...
TRACK * Back() const
Definition: class_track.h:111

References Back(), BUSY, GetEndPoint(), BOARD_ITEM::GetLayerSet(), BOARD_CONNECTED_ITEM::GetNetCode(), EDA_ITEM::GetState(), IS_DELETED, m_End, m_Start, and Next().

Referenced by GetEndSegments(), TRACKS_CLEANER::MergeCollinearTracks(), and PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope().

◆ GetVia() [1/2]

VIA * TRACK::GetVia ( const wxPoint &  aPosition,
PCB_LAYER_ID  aLayer = UNDEFINED_LAYER 
)

Function GetVia finds the first VIA object at aPosition on aLayer starting at the trace.

Parameters
aPositionThe wxPoint to HitTest() against.
aLayerThe layer to match, pass -1 for a don't care.
Returns
A pointer to a VIA object if found, else NULL.

Definition at line 1236 of file class_track.cpp.

1237 {
1238  for( VIA* via = GetFirstVia( this ); via; via = GetFirstVia( via->Next() ) )
1239  {
1240  if( via->HitTest( aPosition ) &&
1241  !via->GetState( BUSY | IS_DELETED ) &&
1242  ((aLayer == UNDEFINED_LAYER) || (via->IsOnLayer( aLayer ))) )
1243  return via;
1244  }
1245 
1246  return NULL;
1247 }
#define BUSY
Pcbnew: flag indicating that the structure has.
Definition: base_struct.h:134
#define IS_DELETED
Definition: base_struct.h:117
VIA * GetFirstVia(TRACK *aTrk, const TRACK *aStopPoint=NULL)
Scan a track list for the first VIA o NULL if not found (or NULL passed)
Definition: class_track.h:490

References BUSY, GetFirstVia(), IS_DELETED, and UNDEFINED_LAYER.

Referenced by BOARD::chainMarkedSegments(), and GetEndSegments().

◆ GetVia() [2/2]

VIA * TRACK::GetVia ( TRACK aEndTrace,
const wxPoint &  aPosition,
LSET  aLayerMask 
)

Function GetVia finds the first VIA object at aPosition on aLayer starting at the trace and ending at aEndTrace.

Parameters
aEndTracePointer to the last TRACK object to end search.
aPositionThe wxPoint to HitTest() against.
aLayerMaskThe layers to match, pass -1 for a don't care.
Returns
A pointer to a VIA object if found, else NULL.

Definition at line 1250 of file class_track.cpp.

1251 {
1252  for( VIA* via = GetFirstVia( this, aEndTrace ); via; via = GetFirstVia( via->Next() ) )
1253  {
1254  if( via->HitTest( aPosition ) &&
1255  !via->GetState( BUSY | IS_DELETED ) &&
1256  ( aLayerMask & via->GetLayerSet() ).any()
1257  )
1258  {
1259  return via;
1260  }
1261  }
1262 
1263  return NULL;
1264 }
#define BUSY
Pcbnew: flag indicating that the structure has.
Definition: base_struct.h:134
#define IS_DELETED
Definition: base_struct.h:117
VIA * GetFirstVia(TRACK *aTrk, const TRACK *aStopPoint=NULL)
Scan a track list for the first VIA o NULL if not found (or NULL passed)
Definition: class_track.h:490

References BUSY, GetFirstVia(), and IS_DELETED.

◆ GetWidth()

◆ HitTest() [1/2]

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

Function HitTest tests 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.

Reimplemented in VIA.

Definition at line 1187 of file class_track.cpp.

1188 {
1189  return TestSegmentHit( aPosition, m_Start, m_End, aAccuracy + ( m_Width / 2 ) );
1190 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxPoint m_End
Line end point.
Definition: class_track.h:350
bool TestSegmentHit(const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist)
Function TestSegmentHit test for hit on line segment i.e.
Definition: trigo.cpp:122

References m_End, m_Start, m_Width, and TestSegmentHit().

◆ HitTest() [2/2]

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

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

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

Reimplemented from EDA_ITEM.

Reimplemented in VIA.

Definition at line 1203 of file class_track.cpp.

1204 {
1205  EDA_RECT arect = aRect;
1206  arect.Inflate( aAccuracy );
1207 
1208  if( aContained )
1209  /* Tracks are a special case:
1210  * they are considered inside the rect if one end is inside the rect */
1211  return arect.Contains( GetStart() ) || arect.Contains( GetEnd() );
1212  else
1213  return arect.Intersects( GetStart(), GetEnd() );
1214 }
const wxPoint & GetStart() const
Definition: class_track.h:133
bool Contains(const wxPoint &aPoint) const
Function Contains.
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
const wxPoint & GetEnd() const
Definition: class_track.h:130
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.

References EDA_RECT::Contains(), GetEnd(), GetStart(), EDA_RECT::Inflate(), and EDA_RECT::Intersects().

◆ IsBrightened()

bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

Definition at line 230 of file base_struct.h.

230 { return m_Flags & BRIGHTENED; }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References BRIGHTENED, and EDA_ITEM::m_Flags.

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), KIGFX::GERBVIEW_PAINTER::draw(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), and KIGFX::SCH_PAINTER::getRenderColor().

◆ IsConnected()

bool BOARD_CONNECTED_ITEM::IsConnected ( ) const
inlineoverridevirtualinherited

Reimplemented from BOARD_ITEM.

Definition at line 76 of file board_connected_item.h.

77  {
78  return true;
79  }

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

◆ IsHighlighted()

bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 229 of file base_struct.h.

229 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References HIGHLIGHTED, and EDA_ITEM::m_Flags.

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

◆ IsLocked()

bool TRACK::IsLocked ( ) const
inlineoverridevirtual

Function IsLocked.

Returns
bool - true if the object is locked, else false

Reimplemented from BOARD_ITEM.

Definition at line 148 of file class_track.h.

149  {
150  return GetState( TRACK_LOCKED );
151  }
#define TRACK_LOCKED
Pcbnew: track locked: protected from global deletion.
Definition: base_struct.h:128
int GetState(int type) const
Definition: base_struct.h:243

References EDA_ITEM::GetState(), and TRACK_LOCKED.

Referenced by DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), PNS_KICAD_IFACE::syncTrack(), and PNS_KICAD_IFACE::syncVia().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 223 of file base_struct.h.

223 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:110
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References IS_CHANGED, and EDA_ITEM::m_Flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

bool EDA_ITEM::IsNew ( ) const
inlineinherited

Definition at line 222 of file base_struct.h.

222 { return m_Flags & IS_NEW; }
#define IS_NEW
New item, just created.
Definition: base_struct.h:114
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References IS_NEW, and EDA_ITEM::m_Flags.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_MoveOrCopyModule(), Abort_Zone_Create_Outline(), AbortBuildDimension(), AbortMoveAndEditTarget(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_EDIT_TOOL::AutoplaceFields(), LIB_CIRCLE::CalcEdit(), LIB_RECTANGLE::CalcEdit(), LIB_FIELD::CalcEdit(), LIB_POLYLINE::CalcEdit(), LIB_ARC::CalcEdit(), LIB_TEXT::CalcEdit(), LIB_POLYLINE::ContinueEdit(), LIB_ARC::ContinueEdit(), SCH_EDIT_TOOL::ConvertDeMorgan(), SCH_EDIT_FRAME::ConvertTextType(), PCB_EDIT_FRAME::Delete_Segment(), PCB_EDIT_FRAME::Delete_Segment_Edge(), LIB_ARC::drawGraphic(), LIB_EDIT_TOOL::Duplicate(), SCH_EDIT_TOOL::Duplicate(), LIB_PIN::EnableEditMode(), LIB_DRAWING_TOOLS::Init(), isNewSegment(), SCH_MOVE_TOOL::Main(), LIB_MOVE_TOOL::Main(), EDIT_TOOL::MoveExact(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_BASE_FRAME::PlaceModule(), LIB_PIN_TOOL::PlacePin(), PCB_EDIT_FRAME::PlaceTarget(), ShowClearance(), PCB_EDIT_FRAME::StartMoveTextePcb(), PCB_EDIT_FRAME::SwitchLayer(), DIALOG_SCH_EDIT_SHEET_PIN::TransferDataFromWindow(), and DIALOG_LABEL_EDITOR::TransferDataFromWindow().

◆ IsNull()

bool TRACK::IsNull ( )

Function IsNull returns true if segment length is zero.

Definition at line 198 of file class_track.cpp.

199 {
200  if( ( Type() != PCB_VIA_T ) && ( m_Start == m_End ) )
201  return true;
202  else
203  return false;
204 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
wxPoint m_End
Line end point.
Definition: class_track.h:350
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References m_End, m_Start, PCB_VIA_T, and EDA_ITEM::Type().

Referenced by ComputeBreakPoint(), and DeleteNullTrackSegments().

◆ IsOnLayer()

virtual bool BOARD_ITEM::IsOnLayer ( PCB_LAYER_ID  aLayer) const
inlinevirtualinherited

Function IsOnLayer tests to see if this object is on the given layer.

Is virtual so objects like D_PAD, which reside on multiple layers can do their own form of testing.

Parameters
aLayerThe layer to test for.
Returns
bool - true if on given layer, else false.

Reimplemented in D_PAD, VIA, ZONE_CONTAINER, and MARKER_PCB.

Definition at line 173 of file class_board_item.h.

174  {
175  return m_Layer == aLayer;
176  }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by CINFO3D_VISU::createLayers(), TEXTE_PCB::Draw(), EDGE_MODULE::Draw(), TEXTE_MODULE::Draw(), Draw(), DRAWSEGMENT::Draw(), DrawShortNetname(), GENERAL_COLLECTOR::Inspect(), ZONE_CONTAINER::IsOnLayer(), AR_MATRIX::TraceSegmentPcb(), and TraceSegmentPcb().

◆ IsPointOnEnds()

STATUS_FLAGS TRACK::IsPointOnEnds ( const wxPoint &  point,
int  min_dist = 0 
)

Function IsPointOnEnds returns STARTPOINT if point if near (dist = min_dist) start point, ENDPOINT if point if near (dist = min_dist) end point,STARTPOINT|ENDPOINT if point if near (dist = min_dist) both ends, or 0 if none of the above.

if min_dist < 0: min_dist = track_width/2

Definition at line 207 of file class_track.cpp.

208 {
209  STATUS_FLAGS result = 0;
210 
211  if( min_dist < 0 )
212  min_dist = m_Width / 2;
213 
214  if( min_dist == 0 )
215  {
216  if( m_Start == point )
217  result |= STARTPOINT;
218 
219  if( m_End == point )
220  result |= ENDPOINT;
221  }
222  else
223  {
224  double dist = GetLineLength( m_Start, point );
225 
226  if( min_dist >= KiROUND( dist ) )
227  result |= STARTPOINT;
228 
229  dist = GetLineLength( m_End, point );
230 
231  if( min_dist >= KiROUND( dist ) )
232  result |= ENDPOINT;
233  }
234 
235  return result;
236 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Function GetLineLength returns the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:200
static const int dist[10][10]
Definition: ar_matrix.cpp:320
static int KiROUND(double v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:118
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxPoint m_End
Line end point.
Definition: class_track.h:350
unsigned STATUS_FLAGS
Definition: base_struct.h:150
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:120
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:119

References dist, ENDPOINT, GetLineLength(), KiROUND(), m_End, m_Start, m_Width, and STARTPOINT.

Referenced by PCB_EDIT_FRAME::createPopupMenuForTracks(), ROUTER_TOOL::NeighboringSegmentFilter(), and PCB_EDIT_FRAME::StartMoveOneNodeOrSegment().

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Function IsReplaceable.

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

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

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

Definition at line 502 of file base_struct.h.

502 { return false; }

Referenced by EDA_ITEM::Matches(), and EDA_ITEM::Replace().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 228 of file base_struct.h.

228 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:115

References IS_RESIZED, and EDA_ITEM::m_Flags.

Referenced by LIB_POLYLINE::CalcEdit(), and KIGFX::SCH_PAINTER::setColors().

◆ IsSelected()

◆ IsTrack()

bool BOARD_ITEM::IsTrack ( ) const
inlineinherited

Function IsTrack tests to see if this object is a track or via (or microvia).

form of testing.

Returns
bool - true if a track or via, else false.

Definition at line 184 of file class_board_item.h.

185  {
186  return ( Type() == PCB_TRACE_T ) || ( Type() == PCB_VIA_T );
187  }
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References PCB_TRACE_T, PCB_VIA_T, and EDA_ITEM::Type().

Referenced by PCB_EDIT_FRAME::OnHotKey(), and PCB_EDIT_FRAME::OnHotkeyDeleteItem().

◆ IsType()

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

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

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

Reimplemented in SCH_FIELD, and SCH_LINE.

Definition at line 287 of file base_struct.h.

288  {
289  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
290  return true;
291 
292  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
293  {
294  if( m_StructType == *p )
295  return true;
296  }
297 
298  return false;
299  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:166
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78

References EOT, EDA_ITEM::m_StructType, and SCH_LOCATE_ANY_T.

Referenced by SCH_SCREEN::GetItem(), SCH_WIRE_BUS_TOOL::IsDrawingBus(), SCH_WIRE_BUS_TOOL::IsDrawingLine(), SCH_WIRE_BUS_TOOL::IsDrawingWire(), SCH_LINE::IsType(), SCH_FIELD::IsType(), EE_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), and EDA_ITEM::Visit().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 226 of file base_struct.h.

226 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:118
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References IS_WIRE_IMAGE, and EDA_ITEM::m_Flags.

◆ IterateForward()

SEARCH_RESULT EDA_ITEM::IterateForward ( EDA_ITEM listStart,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
staticinherited

Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes.

Parameters
listStartThe first in a list of EDA_ITEMs to iterate over.
inspectorIs an INSPECTOR to call on each object that is one of the requested scanTypes.
testDataIs an aid to testFunc, and should be sufficient to allow it to fully determine if an item meets the match criteria, but it may also be used to collect output.
scanTypesA KICAD_T array that is EOT terminated, and provides both the order and interest level of of the types of objects to be iterated over.
Returns
SEARCH_RESULT SEARCH_QUIT if the called INSPECTOR returned SEARCH_QUIT, else SCAN_CONTINUE;

Definition at line 130 of file base_struct.cpp.

134 {
135  EDA_ITEM* p = listStart;
136 
137  for( ; p; p = p->Pnext )
138  {
139  if( SEARCH_QUIT == p->Visit( inspector, testData, scanTypes ) )
140  return SEARCH_QUIT;
141  }
142 
143  return SEARCH_CONTINUE;
144 }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:157
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:170

References EDA_ITEM::Pnext, SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Visit().

Referenced by EE_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::Collect(), EE_TYPE_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::GetItem(), EE_SELECTION_TOOL::RebuildSelection(), GERBER_FILE_IMAGE::Visit(), MODULE::Visit(), and BOARD::Visit().

◆ Matches() [1/2]

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

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

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

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
aFindLocationA pointer to a wxPoint object to store the location of matched item. The pointer can be NULL if it is not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_FIELD, SCH_SHEET_PIN, SCH_TEXT, LIB_PIN, and SCH_MARKER.

Definition at line 458 of file base_struct.h.

459  {
460  return false;
461  }

Referenced by SCH_FIND_COLLECTOR::Inspect(), SCH_MARKER::Matches(), LIB_PIN::Matches(), SCH_TEXT::Matches(), SCH_SHEET_PIN::Matches(), SCH_FIELD::Matches(), and SCH_SHEET::Matches().

◆ Matches() [2/2]

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

Function Matches compares aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

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

Definition at line 174 of file base_struct.cpp.

175 {
176  wxString text = aText;
177  wxString searchText = aSearchData.GetFindString();
178 
179  // Don't match if searching for replaceable item and the item doesn't support text replace.
180  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
181  return false;
182 
183  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
184  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
185 
186  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
187  {
188  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
189  return text.Matches( searchText );
190 
191  return text.MakeUpper().Matches( searchText.MakeUpper() );
192  }
193 
194  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
195  return aText.Find( searchText ) != wxNOT_FOUND;
196 
197  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
198 }
Perform search using simple wild card matching (* & ?).
Perform a search for a item that has replaceable text.
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:502

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

◆ Move() [1/2]

virtual void TRACK::Move ( const wxPoint &  aMoveVector)
inlineoverridevirtual

Function Move move this object.

Parameters
aMoveVector- the move vector for this object.

Reimplemented from BOARD_ITEM.

Definition at line 113 of file class_track.h.

114  {
115  m_Start += aMoveVector;
116  m_End += aMoveVector;
117  }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
wxPoint m_End
Line end point.
Definition: class_track.h:350

References m_End, and m_Start.

◆ Move() [2/2]

void BOARD_ITEM::Move ( const VECTOR2I aMoveVector)
inlineinherited

Definition at line 239 of file class_board_item.h.

240  {
241  Move( wxPoint( aMoveVector.x, aMoveVector.y ) );
242  }
virtual void Move(const wxPoint &aMoveVector)
Function Move move this object.

References BOARD_ITEM::Move(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ Next()

◆ operator<()

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

Test if another item is less than this object.

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

Definition at line 231 of file base_struct.cpp.

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

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

◆ Replace() [1/2]

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

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

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

Definition at line 201 of file base_struct.cpp.

202 {
203  wxCHECK_MSG( IsReplaceable(), false,
204  wxT( "Attempt to replace text in <" ) + GetClass() + wxT( "> item." ) );
205 
206  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
207 
208  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
209  aSearchData.GetFindString() :
210  aSearchData.GetFindString().Upper() );
211 
212  if( result == wxNOT_FOUND )
213  return false;
214 
215  wxString prefix = aText.Left( result );
216  wxString suffix;
217 
218  if( aSearchData.GetFindString().length() + result < aText.length() )
219  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
220 
221  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
222  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
223  GetChars( suffix ) );
224 
225  aText = prefix + aSearchData.GetReplaceString() + suffix;
226 
227  return true;
228 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:100
virtual wxString GetClass() const =0
Function GetClass returns the class name.
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:502

References GetChars(), EDA_ITEM::GetClass(), EDA_ITEM::IsReplaceable(), and traceFindReplace.

Referenced by FOOTPRINT_INFO_GENERATOR::GetHtmlFieldRow(), SCH_TEXT::Replace(), SCH_SHEET_PIN::Replace(), SCH_FIELD::Replace(), SCH_SHEET::Replace(), and SCH_FIND_COLLECTOR::ReplaceItem().

◆ Replace() [2/2]

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

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

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

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

Reimplemented in SCH_SHEET, SCH_FIELD, SCH_SHEET_PIN, and SCH_TEXT.

Definition at line 490 of file base_struct.h.

490 { return false; }

◆ Rotate() [1/2]

void TRACK::Rotate ( const wxPoint &  aRotCentre,
double  aAngle 
)
overridevirtual

Function Rotate Rotate this object.

Parameters
aRotCentre- the rotation point.
aAngle- the rotation angle in 0.1 degree.

Reimplemented from BOARD_ITEM.

Definition at line 275 of file class_track.cpp.

276 {
277  RotatePoint( &m_Start, aRotCentre, aAngle );
278  RotatePoint( &m_End, aRotCentre, aAngle );
279 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:216
wxPoint m_End
Line end point.
Definition: class_track.h:350

References m_End, m_Start, and RotatePoint().

◆ Rotate() [2/2]

void BOARD_ITEM::Rotate ( const VECTOR2I aRotCentre,
double  aAngle 
)
inlineinherited

Definition at line 255 of file class_board_item.h.

256  {
257  Rotate( wxPoint( aRotCentre.x, aRotCentre.y ), aAngle );
258  }
virtual void Rotate(const wxPoint &aRotCentre, double aAngle)
Function Rotate Rotate this object.

References BOARD_ITEM::Rotate(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ SetBack()

void TRACK::SetBack ( EDA_ITEM aBack)
inlineprivate

Definition at line 356 of file class_track.h.

356 { Pback = aBack; }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:171

References EDA_ITEM::Pback.

◆ SetBrightened()

void EDA_ITEM::SetBrightened ( )
inlineinherited

Definition at line 235 of file base_struct.h.

235 { SetFlags( BRIGHTENED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:259
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137

References BRIGHTENED, and EDA_ITEM::SetFlags().

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

◆ SetEnd()

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 259 of file base_struct.h.

259 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:181

References EDA_ITEM::m_Flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddModuleToBoard(), AddSegmentToDragList(), PCBNEW_CONTROL::AppendBoard(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), LIB_ITEM::BeginEdit(), PCB_EDIT_FRAME::BeginMoveDimensionText(), PCB_EDIT_FRAME::BeginMoveTarget(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::ConvertTextType(), CopyMarkedItems(), SCH_EDIT_FRAME::CreateNewText(), LIB_PIN_TOOL::CreatePin(), SCH_EDIT_FRAME::CreateSheetPin(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), SCH_WIRE_BUS_TOOL::doDrawSegments(), SCH_DRAWING_TOOLS::doPlaceComponent(), SCH_DRAWING_TOOLS::doSingleClickPlace(), LIB_DRAWING_TOOLS::doTwoClickPlace(), SCH_DRAWING_TOOLS::doTwoClickPlace(), KIGFX::SCH_PAINTER::draw(), SCH_DRAWING_TOOLS::DrawSheet(), LIB_EDIT_TOOL::Duplicate(), SCH_EDIT_TOOL::Duplicate(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_MOVE_TOOL::getConnectedDragItems(), FOOTPRINT_EDIT_FRAME::HandleBlockEnd(), KIGFX::SCH_VIEW::HighlightItem(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_EDIT_FRAME::ImportSheetPin(), InvokeDialogImportGfxBoard(), InvokeDialogImportGfxModule(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), MarkItemsInBloc(), SCH_MOVE_TOOL::moveItem(), LIB_MOVE_TOOL::moveItem(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), PCB_EDIT_FRAME::Other_Layer_Route(), LIB_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceImage(), PCB_EDITOR_CONTROL::PlaceModule(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), LIB_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), BLOCK_SELECTOR::SetFlags(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::Start_Move_DrawItem(), FOOTPRINT_EDIT_FRAME::Start_Move_EdgeMod(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PCB_BASE_FRAME::StartMovePad(), PCB_BASE_FRAME::StartMoveTexteModule(), PCB_EDIT_FRAME::StartMoveTextePcb(), SCH_WIRE_BUS_TOOL::startSegments(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and UndrawAndMarkSegmentsToDrag().

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

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

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

Definition at line 309 of file base_struct.h.

309 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:178

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDIT_FRAME::OnFindSchematicItem(), and SCH_EDIT_FRAME::updateFindReplaceView().

◆ SetHighlighted()

void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 234 of file base_struct.h.

234 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:259
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

◆ SetLayer()

virtual void BOARD_ITEM::SetLayer ( PCB_LAYER_ID  aLayer)
inlinevirtualinherited

Function SetLayer sets the layer this item is on.

Parameters
aLayerThe layer number. is virtual because some items (in fact: class DIMENSION) have a slightly different initialization

Reimplemented in ZONE_CONTAINER, and DIMENSION.

Definition at line 140 of file class_board_item.h.

141  {
142  // trap any invalid layers, then go find the caller and fix it.
143  // wxASSERT( unsigned( aLayer ) < unsigned( NB_PCB_LAYERS ) );
144  m_Layer = aLayer;
145  }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by PNS_KICAD_IFACE::AddItem(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToModule(), PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_POLYGON::AddToModule(), DIMENSION::AdjustDimensionDetails(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), PCB_BASE_FRAME::CreateNewModule(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::drawSegment(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), EDGE_MODULE::Flip(), TEXTE_MODULE::Flip(), Flip(), MODULE::Flip(), DRAWSEGMENT::Flip(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadMODULE_TEXT(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), DSN::SPECCTRA_DB::makeTRACK(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAddField(), PCB_EDIT_FRAME::Other_Layer_Route(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageSMD(), EAGLE_PLUGIN::packageText(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), processBoardItem(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), DIALOG_PAD_PROPERTIES::redraw(), DIMENSION::SetLayer(), TEXT_MOD_GRID_TABLE::SetValueAsLong(), ShowNewTrackWhenMovingCursor(), TEXTE_MODULE::TEXTE_MODULE(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), and DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetList()

void EDA_ITEM::SetList ( DHEAD aList)
inlineinherited

Definition at line 220 of file base_struct.h.

220 { m_List = aList; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:172

References EDA_ITEM::m_List.

Referenced by DHEAD::append(), DHEAD::insert(), DHEAD::remove(), and SwapItemData().

◆ SetLocalRatsnestVisible()

void BOARD_CONNECTED_ITEM::SetLocalRatsnestVisible ( bool  aVisible)
inlineinherited

Definition at line 184 of file board_connected_item.h.

185  {
186  m_localRatsnestVisible = aVisible;
187  }

References BOARD_CONNECTED_ITEM::m_localRatsnestVisible.

◆ SetLocked()

void TRACK::SetLocked ( bool  aLocked)
inlineoverridevirtual

Function SetLocked modifies 'lock' status for of the item.

Reimplemented from BOARD_ITEM.

Definition at line 153 of file class_track.h.

154  {
155  return SetState( TRACK_LOCKED, aLocked );
156  }
#define TRACK_LOCKED
Pcbnew: track locked: protected from global deletion.
Definition: base_struct.h:128
void SetState(int type, int state)
Definition: base_struct.h:248

References EDA_ITEM::SetState(), and TRACK_LOCKED.

Referenced by DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow().

◆ SetModified()

◆ SetNet()

void BOARD_CONNECTED_ITEM::SetNet ( NETINFO_ITEM aNetInfo)
inlineinherited

Function SetNet Sets a NET_INFO object for the item.

Definition at line 94 of file board_connected_item.h.

95  {
96  assert( aNetInfo->GetBoard() == GetBoard() );
97  m_netinfo = aNetInfo;
98  }
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
NETINFO_ITEM * m_netinfo
Stores all informations about the net that item belongs to.

References BOARD_ITEM::GetBoard(), and BOARD_CONNECTED_ITEM::m_netinfo.

◆ SetNetCode()

bool BOARD_CONNECTED_ITEM::SetNetCode ( int  aNetCode,
bool  aNoAssert = false 
)
inherited

Function SetNetCode sets net using a net code.

Parameters
aNetCodeis a net code for the new net. It has to exist in NETINFO_LIST held by BOARD.
aNoAssertif true, do not assert that the net exists. Otherwise, item is assigned to the unconnected net.
Returns
true on success, false if the net did not exist

Definition at line 50 of file board_connected_item.cpp.

51 {
52  // if aNetCode < 0 ( typically NETINFO_LIST::FORCE_ORPHANED )
53  // or no parent board,
54  // set the m_netinfo to the dummy NETINFO_LIST::ORPHANED
55 
56  BOARD* board = GetBoard();
57  //auto connectivity = board ? board->GetConnectivity() : nullptr;
58  //bool addRatsnest = false;
59 
60  //if( connectivity )
61  //addRatsnest = connectivity->Remove( this );
62 
63  if( ( aNetCode >= 0 ) && board )
64  m_netinfo = board->FindNet( aNetCode );
65  else
67 
68  if( !aNoAssert )
69  assert( m_netinfo );
70 
71  // Add only if it was previously added to the ratsnest
72  //if( addRatsnest )
73  // connectivity->Add( this );
74 
75  return ( m_netinfo != NULL );
76 }
NETINFO_ITEM * FindNet(int aNetcode) const
Function FindNet searches for a net with the given netcode.
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
static NETINFO_ITEM ORPHANED_ITEM
NETINFO_ITEM meaning that there was no net assigned for an item, as there was no board storing net li...
Definition: netinfo.h:473
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
NETINFO_ITEM * m_netinfo
Stores all informations about the net that item belongs to.

References BOARD::FindNet(), BOARD_ITEM::GetBoard(), BOARD_CONNECTED_ITEM::m_netinfo, and NETINFO_LIST::ORPHANED_ITEM.

Referenced by PNS_KICAD_IFACE::AddItem(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToModule(), PCB_EDIT_FRAME::Begin_Zone(), D_PAD::CopyNetlistSettings(), BOARD_NETLIST_UPDATER::deleteSinglePadNets(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::Edit_Zone_Params(), ZONE_SETTINGS::ExportSetting(), BOARD::InsertArea(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), DSN::SPECCTRA_DB::makeTRACK(), PCB_EDIT_FRAME::Other_Layer_Route(), CLIPBOARD_IO::SaveSelection(), BOARD::SetAreasNetCodesFromNetNames(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::transferDataToPad(), and ZONE_CONTAINER::ZONE_CONTAINER().

◆ SetNext()

void TRACK::SetNext ( EDA_ITEM aNext)
inlineprivate

Definition at line 355 of file class_track.h.

355 { Pnext = aNext; }
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:170

References EDA_ITEM::Pnext.

◆ SetParent()

◆ SetPosition()

void TRACK::SetPosition ( const wxPoint &  aPos)
inlineoverridevirtual

Implements BOARD_ITEM.

Reimplemented in VIA.

Definition at line 123 of file class_track.h.

123 { m_Start = aPos; }
wxPoint m_Start
Line start point.
Definition: class_track.h:349

References m_Start.

Referenced by PCAD2KICAD::PCB_LINE::AddToBoard(), EAGLE_PLUGIN::loadSignals(), and LEGACY_PLUGIN::loadTrackList().

◆ SetSelected()

void EDA_ITEM::SetSelected ( )
inlineinherited

Definition at line 233 of file base_struct.h.

233 { SetFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:121
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:259

References SELECTED, and EDA_ITEM::SetFlags().

Referenced by EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), and GERBVIEW_SELECTION_TOOL::selectVisually().

◆ SetStart()

◆ SetState()

◆ SetStatus()

void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited

◆ SetTimeStamp()

void EDA_ITEM::SetTimeStamp ( timestamp_t  aNewTimeStamp)
inlineinherited

Definition at line 209 of file base_struct.h.

209 { m_TimeStamp = aNewTimeStamp; }
timestamp_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:175

References EDA_ITEM::m_TimeStamp.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_FRAME::AddModuleToBoard(), BOARD_NETLIST_UPDATER::addNewComponent(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), SCH_EDIT_FRAME::AppendSchematic(), PCB_EDIT_FRAME::Begin_Zone(), Diagnose(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), DIALOG_FOOTPRINT_BOARD_EDITOR::EditFootprint(), EDIT_TOOL::editFootprintInFpEditor(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), EDA_ITEM::initVars(), BOARD::InsertArea(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadPolygon(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), EDA_ITEM::operator=(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageText(), PCB_PARSER::parseDIMENSION(), SCH_EDITOR_CONTROL::Paste(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SHEET::SCH_SHEET(), SCH_COMPONENT::SetTimeStamp(), SimilarLabelsDiagnose(), SwapItemData(), TestDuplicateSheetNames(), DIALOG_ERC::TestErc(), and TestMultiunitFootprints().

◆ SetWidth()

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 232 of file base_struct.h.

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

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ ShowShape()

wxString BOARD_ITEM::ShowShape ( STROKE_T  aShape)
staticinherited

Function ShowShape converts the enum STROKE_T integer value to a wxString.

Definition at line 39 of file class_board_item.cpp.

40 {
41  switch( aShape )
42  {
43  case S_SEGMENT: return _( "Line" );
44  case S_RECT: return _( "Rect" );
45  case S_ARC: return _( "Arc" );
46  case S_CIRCLE: return _( "Circle" );
47  case S_CURVE: return _( "Bezier Curve" );
48  case S_POLYGON: return _( "Polygon" );
49  default: return wxT( "??" );
50  }
51 }
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
segment with non rounded ends
Arcs (with rounded ends)
Bezier Curve.

References S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_RECT, and S_SEGMENT.

Referenced by ConvertOutlineToPolygon(), DRAWSEGMENT::GetCenter(), EDGE_MODULE::GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), DSN::SPECCTRA_DB::makeIMAGE(), and DRAWSEGMENT::Rotate().

◆ Sort()

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

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

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

Definition at line 521 of file base_struct.h.

521 { return *aLeft < *aRight; }

Referenced by PART_LIB::GetEntryTypePowerNames().

◆ SwapData()

void TRACK::SwapData ( BOARD_ITEM aImage)
overridevirtual

Swap data between aItem and aImage.

aItem and aImage should have the same type Used in undo redo command to swap values between an item and its copy Only values like layer, size .. which are modified by editing are swapped, not the pointers like Pnext and Pback because aItem is not changed in the linked list

Parameters
aImage= the item image which contains data to swap

Reimplemented from BOARD_ITEM.

Reimplemented in VIA.

Definition at line 1493 of file class_track.cpp.

1494 {
1495  assert( aImage->Type() == PCB_TRACE_T );
1496 
1497  std::swap( *((TRACK*) this), *((TRACK*) aImage) );
1498 }
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References PCB_TRACE_T, and EDA_ITEM::Type().

◆ TransformShapeWithClearanceToPolygon()

void TRACK::TransformShapeWithClearanceToPolygon ( SHAPE_POLY_SET aCornerBuffer,
int  aClearanceValue,
int  aCircleToSegmentsCount,
double  aCorrectionFactor,
bool  ignoreLineWidth = false 
) const
overridevirtual

Function TransformShapeWithClearanceToPolygon Convert the track shape to a closed polygon Used in filling zones calculations Circles (vias) and arcs (ends of tracks) are approximated by segments.

Parameters
aCornerBuffer= a buffer to store the polygon
aClearanceValue= the clearance around the pad
aCircleToSegmentsCount= the number of segments to approximate a circle
aCorrectionFactor= the correction to apply to circles radius to keep clearance when the circle is approximated by segment bigger or equal to the real clearance value (usually near from 1.0)
ignoreLineWidth= used for edge cut items where the line width is only for visualization

Reimplemented from BOARD_ITEM.

Definition at line 660 of file board_items_to_polygon_shape_transform.cpp.

665 {
666  wxASSERT_MSG( !ignoreLineWidth, "IgnoreLineWidth has no meaning for tracks." );
667 
668  switch( Type() )
669  {
670  case PCB_VIA_T:
671  {
672  int radius = (m_Width / 2) + aClearanceValue;
673  radius = KiROUND( radius * aCorrectionFactor );
674  TransformCircleToPolygon( aCornerBuffer, m_Start, radius, aCircleToSegmentsCount );
675  }
676  break;
677 
678  default:
680  m_Width + ( 2 * aClearanceValue),
681  aCircleToSegmentsCount,
682  aCorrectionFactor );
683  break;
684  }
685 }
wxPoint m_Start
Line start point.
Definition: class_track.h:349
static int KiROUND(double v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:118
void TransformOvalClearanceToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aStart, wxPoint aEnd, int aWidth, int aCircleToSegmentsCount, double aCorrectionFactor)
convert a oblong shape to a polygon, using multiple segments It is similar to TransformRoundedEndsSeg...
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
wxPoint m_End
Line end point.
Definition: class_track.h:350
void TransformCircleToPolygon(SHAPE_LINE_CHAIN &aBuffer, wxPoint aCenter, int aRadius, int aCircleToSegmentsCount)
Function TransformCircleToPolygon convert a circle to a polygon, using multiple straight lines.
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References KiROUND(), m_End, m_Start, m_Width, PCB_VIA_T, TransformCircleToPolygon(), TransformOvalClearanceToPolygon(), and EDA_ITEM::Type().

Referenced by CINFO3D_VISU::createLayers(), and PlotSolderMaskLayer().

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Function Type()

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

Returns
KICAD_T - the type of object.

Definition at line 204 of file base_struct.h.

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

References EDA_ITEM::m_StructType.

Referenced by Abort_Move_ModuleOutline(), MODULE::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), PCB_EDIT_FRAME::Add45DegreeSegment(), POINT_EDITOR::addCorner(), CONNECTION_SUBGRAPH::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_MOVE_TOOL::addJunctionsIfNeeded(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), CN_ITEM::AnchorCount(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Duplicate(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Block_Rotate(), CONNECTION_GRAPH::buildConnectionGraph(), HIERARCHY_NAVIG_DLG::buildHierarchyTree(), SCH_SCREENS::buildScreenList(), SCH_SHEET_LIST::BuildSheetList(), calcArea(), calcMaxArea(), POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), ROUTER_TOOL::CanInlineDrag(), SCH_SCREENS::ChangeSymbolLibNickname(), CN_VISITOR::checkZoneItemConnection(), TEXTE_PCB::ClassOf(), EDGE_MODULE::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), PCB_TARGET::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), ZONE_CONTAINER::ClassOf(), MARKER_PCB::ClassOf(), DIMENSION::ClassOf(), NETINFO_ITEM::ClassOf(), ClassOf(), MODULE::ClassOf(), SCH_COMPONENT::ClassOf(), D_PAD::ClassOf(), BOARD::ClassOf(), VIA::ClassOf(), SCH_SHEET::CleanupSheet(), EE_COLLECTOR::Collect(), Collect_TrackSegmentsToDrag(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_BEZIER::compare(), LIB_POLYLINE::compare(), LIB_TEXT::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_PIN::compare(), SCH_SHEET::ComponentCount(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), SCH_EDIT_FRAME::ConvertTextType(), SCH_SCREEN::CountConnectedItems(), SCH_SHEET::CountSheets(), MODULE::CoverageRatio(), CINFO3D_VISU::createLayers(), BOARD::CreateLockPoint(), SCH_EDIT_FRAME::CreateNewText(), CINFO3D_VISU::createNewTrack(), PCB_EDIT_FRAME::createPopupMenuForTracks(), CreateRoutesSection(), PCB_EDITOR_CONTROL::CrossProbeSchToPcb(), D_PAD::D_PAD(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), SCH_SCREENS::DeleteAllMarkers(), SCH_SCREEN::DeleteItem(), DeleteNullTrackSegments(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_ERC::DisplayERC_MarkersList(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), LIB_DRAWING_TOOLS::doTwoClickPlace(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DrawMovingBlockOutlines(), drawPickedItems(), CN_ITEM::Dump(), SCH_ITEM::Duplicate(), BOARD::Duplicate(), MODULE::Duplicate(), PCB_EDIT_FRAME::duplicateItems(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_TOOL::EditField(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), PCB_EDIT_FRAME::EraseRedundantTrack(), CONNECTION_GRAPH::ercCheckLabels(), find_vias_and_tracks_at(), SCH_EDIT_FRAME::FindComponentAndItem(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), SCH_SHEET_PATH::FindNextItem(), SCH_SHEET_LIST::FindNextItem(), SCH_SHEET_PATH::FindPreviousItem(), SCH_SHEET_LIST::FindPreviousItem(), EDIT_TOOL::FootprintFilter(), FootprintWriteShape(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), GetBoundingBox(), BOARD_CONNECTED_ITEM::GetClearance(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), NETLIST_OBJECT::GetComponentParent(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), SCH_SHEET::GetEndPoints(), GetFirstTrack(), GetFirstVia(), SCH_SCREEN::GetHierarchicalItems(), SCH_SCREENS::GetLibNicknames(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), CONNECTION_SUBGRAPH::GetNameForDriver(), BOARD_CONNECTED_ITEM::GetNetClass(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), DRAWSEGMENT::GetParentModule(), SCH_SCREEN::GetPin(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), getRect(), SELECTION::GetTopLeftItem(), EE_SELECTION_TOOL::guessSelectionCandidates(), SELECTION_TOOL::guessSelectionCandidates(), hash_eda(), SCH_SCREENS::HasNoFullyDefinedLibIds(), SCH_SHEET::HasUndefinedPins(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), KIGFX::SCH_VIEW::HighlightItem(), SCH_EDIT_FRAME::ImportSheetPin(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_COLLECTOR::Inspect(), SCH_FIND_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), isNewSegment(), IsNull(), SCH_LINE::IsParallel(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), SCH_SHEET::LocatePathOfScreen(), Magnetize(), LIB_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), MarkItemsInBloc(), BOARD::MarkTrace(), TRACKS_CLEANER::mergeCollinearSegments(), TRACKS_CLEANER::MergeCollinearTracks(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), FOOTPRINT_EDIT_FRAME::ModeditLocateAndDisplay(), SCH_MOVE_TOOL::moveItem(), MoveMarkedItems(), MoveMarkedItemsExactly(), SCH_CONNECTION::Name(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDuplicateItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItemExact(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyRotateItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftDClick(), FOOTPRINT_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), POINT_EDITOR::OnSelectionChange(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_COMPONENT::operator=(), LIB_ITEM::operator==(), OrCell_Trace(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), SCH_EDITOR_CONTROL::Paste(), PCBNEW_CONTROL::PasteItemsFromClipboard(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), GAL_ARRAY_CREATOR::prePushAction(), PCB_EDIT_FRAME::Process_Special_Functions(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), DIALOG_EXCHANGE_FOOTPRINTS::processMatchingModules(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SELECTION_TOOL::RebuildSelection(), SCH_BASE_FRAME::RefreshItem(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), MODULE::Remove(), CN_CONNECTIVITY_ALGO::Remove(), BOARD::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), TRACKS_CLEANER::removeDuplicatesOfTrack(), SCH_SHEET::RemovePin(), FOOTPRINT_EDIT_FRAME::RemoveStruct(), PCB_EDIT_FRAME::RemoveStruct(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_SCREEN::ReplaceWires(), PCB_BASE_FRAME::ResetTextSize(), BOARD_COMMIT::Revert(), SCH_EDIT_TOOL::Rotate(), SCH_TEXT::Rotate(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_EDIT_FRAME::SaveUndoItemInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SHEET::SearchHierarchy(), SELECTION_TOOL::select(), EE_SELECTION_TOOL::selectable(), SELECTION_TOOL::selectable(), PCB_EDIT_FRAME::SelectHighLight(), ITEM_PICKER::SetItem(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), PCB_EDIT_FRAME::Show_1_Ratsnest(), Show_MoveNode(), ShowClearance(), ShowNewTrackWhenMovingCursor(), SortByTimeStamp(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), PCB_TARGET::SwapData(), SCH_BITMAP::SwapData(), SCH_SHEET_PIN::SwapData(), TEXTE_PCB::SwapData(), SCH_FIELD::SwapData(), DIMENSION::SwapData(), DRAWSEGMENT::SwapData(), SwapData(), SCH_SHEET::SwapData(), VIA::SwapData(), SCH_COMPONENT::SwapData(), MODULE::SwapData(), ZONE_CONTAINER::SwapData(), D_PAD::SwapData(), SwapItemData(), PCB_EDIT_FRAME::SwitchLayer(), TestDuplicateSheetNames(), TRACKS_CLEANER::testTrackEndpointDangling(), TEXTE_MODULE::TEXTE_MODULE(), AR_MATRIX::TraceSegmentPcb(), TraceSegmentPcb(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), TransformShapeWithClearanceToPolygon(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), SCH_SHEET_PATH::UpdateAllScreenReferences(), SCH_TEXT::UpdateDanglingState(), EE_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), CONNECTION_GRAPH::updateItemConnectivity(), EE_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateView(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), Visit(), GERBER_DRAW_ITEM::Visit(), SCH_SHEET::Visit(), and SCH_COMPONENT::Visit().

◆ UnLink()

void BOARD_ITEM::UnLink ( )
virtualinherited

Function UnLink detaches this object from its owner.

This base class implementation should work for all derived classes which are held in a DLIST<>.

Definition at line 54 of file class_board_item.cpp.

55 {
57  wxASSERT( list );
58 
59  if( list )
60  list->Remove( this );
61 }
DHEAD * GetList() const
Definition: base_struct.h:215
T * Remove(T *aElement)
Function Remove removes aElement from the list, but does not delete it.
Definition: dlist.h:211

References EDA_ITEM::GetList(), and DLIST< T >::Remove().

Referenced by PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Delete_Segment_Edge(), PCB_EDIT_FRAME::Delete_Texte_Pcb(), PCB_EDIT_FRAME::DeleteDimension(), PCB_EDIT_FRAME::DeleteTarget(), and PCB_EDIT_FRAME::EraseRedundantTrack().

◆ ViewBBox()

const BOX2I TRACK::ViewBBox ( ) const
overridevirtual

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

Returns
BOX2I - the current bounding box

Reimplemented from EDA_ITEM.

Definition at line 688 of file class_track.cpp.

689 {
690  BOX2I bbox = GetBoundingBox();
691  bbox.Inflate( 2 * GetClearance() );
692  return bbox;
693 }
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
virtual int GetClearance(BOARD_CONNECTED_ITEM *aItem=NULL) const override
Function GetClearance returns the clearance in internal units.
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
Definition: box2.h:300

References GetBoundingBox(), GetClearance(), and BOX2< Vec >::Inflate().

◆ ViewDraw()

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

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

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

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

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

Definition at line 116 of file view_item.h.

117  {}

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

◆ ViewGetLayers()

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

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

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

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

Reimplemented from BOARD_ITEM.

Reimplemented in VIA.

Definition at line 661 of file class_track.cpp.

662 {
663  // Show the track and its netname on different layers
664  aLayers[0] = GetLayer();
665  aLayers[1] = GetNetnameLayer( aLayers[0] );
666  aCount = 2;
667 }
int GetNetnameLayer(int aLayer)
Returns a netname layer corresponding to the given layer.
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.

References BOARD_ITEM::GetLayer(), and GetNetnameLayer().

◆ ViewGetLOD()

unsigned int TRACK::ViewGetLOD ( int  aLayer,
KIGFX::VIEW aView 
) const
overridevirtual

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

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

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

Reimplemented from KIGFX::VIEW_ITEM.

Reimplemented in VIA.

Definition at line 670 of file class_track.cpp.

671 {
672  const int HIDE = std::numeric_limits<unsigned int>::max();
673 
674  if( !aView->IsLayerVisible( LAYER_TRACKS ) )
675  return HIDE;
676 
677  // Netnames will be shown only if zoom is appropriate
678  if( IsNetnameLayer( aLayer ) )
679  {
680  return ( Millimeter2iu( 4 ) / ( m_Width + 1 ) );
681  }
682 
683  // Other layers are shown without any conditions
684  return 0;
685 }
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:348
#define max(a, b)
Definition: auxiliary.h:86
bool IsNetnameLayer(LAYER_NUM aLayer)
Function IsNetnameLayer tests whether a layer is a netname layer.
bool IsLayerVisible(int aLayer) const
Function IsLayerVisible() Returns information about visibility of a particular layer.
Definition: view.h:427

References KIGFX::VIEW::IsLayerVisible(), IsNetnameLayer(), LAYER_TRACKS, m_Width, and max.

◆ viewPrivData()

◆ Visit()

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

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

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

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

Reimplemented from EDA_ITEM.

Definition at line 310 of file class_track.cpp.

311 {
312  KICAD_T stype = *scanTypes;
313 
314  // If caller wants to inspect my type
315  if( stype == Type() )
316  {
317  if( SEARCH_QUIT == inspector( this, testData ) )
318  return SEARCH_QUIT;
319  }
320 
321  return SEARCH_CONTINUE;
322 }
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
KICAD_T Type() const
Function Type()
Definition: base_struct.h:204

References SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Type().

Member Data Documentation

◆ end

◆ m_End

◆ m_Flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

Set to true to override the visibility setting of the item.

Definition at line 178 of file base_struct.h.

Referenced by SCH_FIELD::Draw(), EDA_ITEM::initVars(), EDA_ITEM::operator=(), and EDA_ITEM::SetForceVisible().

◆ m_Layer

◆ m_List

DHEAD* EDA_ITEM::m_List
protectedinherited

which DLIST I am on.

Definition at line 172 of file base_struct.h.

Referenced by EDA_ITEM::GetList(), EDA_ITEM::initVars(), and EDA_ITEM::SetList().

◆ m_netinfo

NETINFO_ITEM* BOARD_CONNECTED_ITEM::m_netinfo
protectedinherited

◆ m_Param

double TRACK::m_Param

Definition at line 104 of file class_track.h.

Referenced by GetEndSegments(), and TRACK().

◆ m_Parent

◆ m_Start

◆ m_TimeStamp

timestamp_t EDA_ITEM::m_TimeStamp
protectedinherited

◆ m_Width

◆ Pback

◆ Pnext

◆ start

◆ ZeroOffset

wxPoint BOARD_ITEM::ZeroOffset
staticinherited

A value of wxPoint(0,0) which can be passed to the Draw() functions.

Definition at line 113 of file class_board_item.h.

Referenced by BOARD::GetPosition().


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