KiCad PCB EDA Suite
class_track.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
5  * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
30 #ifndef CLASS_TRACK_H
31 #define CLASS_TRACK_H
32 
33 
34 #include <pcbnew.h>
35 #include <class_board_item.h>
36 #include <board_connected_item.h>
37 #include <pcb_display_options.h>
38 
39 #include <trigo.h>
40 
41 
42 class TRACK;
43 class VIA;
44 class D_PAD;
45 class MSG_PANEL_ITEM;
46 class SHAPE_POLY_SET;
47 
48 // Via types
49 // Note that this enum must be synchronized to GAL_LAYER_ID
51 {
52  VIA_THROUGH = 3, /* Always a through hole via */
53  VIA_BLIND_BURIED = 2, /* this via can be on internal layers */
54  VIA_MICROVIA = 1, /* this via which connect from an external layer
55  * to the near neighbor internal layer */
56  VIA_NOT_DEFINED = 0 /* not yet used */
57 };
58 
59 #define UNDEFINED_DRILL_DIAMETER -1 //< Undefined via drill diameter.
60 
61 #define MIN_VIA_DRAW_SIZE 4
62 
63 
79 TRACK* GetTrack( TRACK* aStartTrace, const TRACK* aEndTrace,
80  const wxPoint& aPosition, LSET aLayerMask );
81 
83 {
84 public:
85  static inline bool ClassOf( const EDA_ITEM* aItem )
86  {
87  return aItem && PCB_TRACE_T == aItem->Type();
88  }
89 
90  BOARD_CONNECTED_ITEM* start; // pointers to a connected item (pad or track)
92 
93  double m_Param; // Auxiliary variable ( used in some computations )
94 
95  TRACK( BOARD_ITEM* aParent, KICAD_T idtype = PCB_TRACE_T );
96 
97  // Do not create a copy constructor. The one generated by the compiler is adequate.
98 
99  TRACK* Next() const { return static_cast<TRACK*>( Pnext ); }
100  TRACK* Back() const { return static_cast<TRACK*>( Pback ); }
101 
102  virtual void Move( const wxPoint& aMoveVector ) override
103  {
104  m_Start += aMoveVector;
105  m_End += aMoveVector;
106  }
107 
108  virtual void Rotate( const wxPoint& aRotCentre, double aAngle ) override;
109 
110  virtual void Flip( const wxPoint& aCentre ) override;
111 
112  void SetPosition( const wxPoint& aPos ) override { m_Start = aPos; }
113  const wxPoint GetPosition() const override { return m_Start; }
114 
115  void SetWidth( int aWidth ) { m_Width = aWidth; }
116  int GetWidth() const { return m_Width; }
117 
118  void SetEnd( const wxPoint& aEnd ) { m_End = aEnd; }
119  const wxPoint& GetEnd() const { return m_End; }
120 
121  void SetStart( const wxPoint& aStart ) { m_Start = aStart; }
122  const wxPoint& GetStart() const { return m_Start; }
123 
124 
126  const wxPoint& GetEndPoint( ENDPOINT_T aEndPoint ) const
127  {
128  if( aEndPoint == ENDPOINT_START )
129  return m_Start;
130  else
131  return m_End;
132  }
133 
134  // Virtual function
135  const EDA_RECT GetBoundingBox() const override;
136 
137  bool IsLocked() const override
138  {
139  return GetState( TRACK_LOCKED );
140  }
141 
142  void SetLocked( bool aLocked ) override
143  {
144  return SetState( TRACK_LOCKED, aLocked );
145  }
146 
158  TRACK* GetBestInsertPoint( BOARD* aPcb );
159 
160  /* Search (within the track linked list) the first segment matching the netcode
161  * ( the linked list is always sorted by net codes )
162  */
163  TRACK* GetStartNetCode( int NetCode );
164 
165  /* Search (within the track linked list) the last segment matching the netcode
166  * ( the linked list is always sorted by net codes )
167  */
168  TRACK* GetEndNetCode( int NetCode );
169 
175  double GetLength() const
176  {
177  return GetLineLength( m_Start, m_End );
178  }
179 
180  /* Display on screen: */
181  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
182  GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset ) override;
183 
199  int aClearanceValue,
200  int aCircleToSegmentsCount,
201  double aCorrectionFactor,
202  bool ignoreLineWidth = false ) const override;
210  STATUS_FLAGS IsPointOnEnds( const wxPoint& point, int min_dist = 0 );
211 
216  bool IsNull();
217 
218  void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
219 
220  SEARCH_RESULT Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] ) override;
221 
222  virtual bool HitTest( const wxPoint& aPosition ) const override;
223 
224  virtual bool HitTest( const EDA_RECT& aRect, bool aContained = true, int aAccuracy = 0 ) const override;
225 
234  VIA* GetVia( const wxPoint& aPosition, PCB_LAYER_ID aLayer = UNDEFINED_LAYER );
235 
246  VIA* GetVia( TRACK* aEndTrace, const wxPoint& aPosition, LSET aLayerMask );
247 
263  TRACK* GetTrack( TRACK* aStartTrace, TRACK* aEndTrace, ENDPOINT_T aEndPoint,
264  bool aSameNetOnly, bool aSequential );
265 
276  int GetEndSegments( int NbSegm, TRACK** StartTrack, TRACK** EndTrack );
277 
278  wxString GetClass() const override
279  {
280  return wxT( "TRACK" );
281  }
282 
292  virtual int GetClearance( BOARD_CONNECTED_ITEM* aItem = NULL ) const override;
293 
294  virtual wxString GetSelectMenuText( EDA_UNITS_T aUnits ) const override;
295 
296  BITMAP_DEF GetMenuImage() const override;
297 
298  virtual EDA_ITEM* Clone() const override;
299 
300  virtual void ViewGetLayers( int aLayers[], int& aCount ) const override;
301 
302  virtual unsigned int ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const override;
303 
304  const BOX2I ViewBBox() const override;
305 
306  virtual void SwapData( BOARD_ITEM* aImage ) override;
307 
308 #if defined (DEBUG)
309  virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
310 
316  static wxString ShowState( int stateBits );
317 
318 #endif
319 
320 protected:
326  virtual void GetMsgPanelInfoBase( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList );
327 
328 
331  void GetMsgPanelInfoBase_Common( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList );
332 
335  void DrawShortNetname( EDA_DRAW_PANEL* panel, wxDC* aDC, GR_DRAWMODE aDrawMode,
336  COLOR4D aBgColor );
337 
338  int m_Width;
341 
342 private:
343  // make SetNext() and SetBack() private so that they may not be called from anywhere.
344  // list management is done on TRACKs using DLIST<TRACK> only.
345  void SetNext( EDA_ITEM* aNext ) { Pnext = aNext; }
346  void SetBack( EDA_ITEM* aBack ) { Pback = aBack; }
347 };
348 
349 
350 class SEGZONE : public TRACK
351 {
352 public:
353  SEGZONE( BOARD_ITEM* aParent );
354 
355  // Do not create a copy constructor. The one generated by the compiler is adequate.
356 
357  wxString GetClass() const override
358  {
359  return wxT( "ZONE" );
360  }
361 
362 
363  SEGZONE* Next() const { return static_cast<SEGZONE*>( Pnext ); }
364 
365  wxString GetSelectMenuText( EDA_UNITS_T aUnits ) const override;
366 
367  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
368  GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset ) override;
369 
370  BITMAP_DEF GetMenuImage() const override;
371 
372  EDA_ITEM* Clone() const override;
373 
374 protected:
375  void GetMsgPanelInfoBase( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
376 };
377 
378 
379 class VIA : public TRACK
380 {
381 public:
382  VIA( BOARD_ITEM* aParent );
383 
384  static inline bool ClassOf( const EDA_ITEM *aItem )
385  {
386  return aItem && PCB_VIA_T == aItem->Type();
387  }
388 
389  // Do not create a copy constructor. The one generated by the compiler is adequate.
390 
391  void Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
392  GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset ) override;
393 
394  bool IsOnLayer( PCB_LAYER_ID aLayer ) const override;
395 
396  virtual LSET GetLayerSet() const override;
397 
405  void SetLayerPair( PCB_LAYER_ID aTopLayer, PCB_LAYER_ID aBottomLayer );
406 
407  void SetBottomLayer( PCB_LAYER_ID aLayer );
408  void SetTopLayer( PCB_LAYER_ID aLayer );
409 
417  void LayerPair( PCB_LAYER_ID* top_layer, PCB_LAYER_ID* bottom_layer ) const;
418 
419  PCB_LAYER_ID TopLayer() const;
420  PCB_LAYER_ID BottomLayer() const;
421 
427  void SanitizeLayers();
428 
429  const wxPoint GetPosition() const override { return m_Start; }
430  void SetPosition( const wxPoint& aPoint ) override { m_Start = aPoint; m_End = aPoint; }
431 
432  virtual bool HitTest( const wxPoint& aPosition ) const override;
433 
434  virtual bool HitTest( const EDA_RECT& aRect, bool aContained = true, int aAccuracy = 0 ) const override;
435 
436  wxString GetClass() const override
437  {
438  return wxT( "VIA" );
439  }
440 
441  wxString GetSelectMenuText( EDA_UNITS_T aUnits ) const override;
442 
443  BITMAP_DEF GetMenuImage() const override;
444 
445  EDA_ITEM* Clone() const override;
446 
447  virtual void ViewGetLayers( int aLayers[], int& aCount ) const override;
448 
449  virtual unsigned int ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const override;
450 
451  virtual void Flip( const wxPoint& aCentre ) override;
452 
453 #if defined (DEBUG)
454  virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
455 #endif
456 
457  VIATYPE_T GetViaType() const { return m_ViaType; }
458  void SetViaType( VIATYPE_T aViaType ) { m_ViaType = aViaType; }
459 
465  void SetDrill( int aDrill ) { m_Drill = aDrill; }
466 
472  int GetDrill() const { return m_Drill; }
473 
480  int GetDrillValue() const;
481 
487 
492  bool IsDrillDefault() const { return m_Drill <= 0; }
493 
494  virtual void SwapData( BOARD_ITEM* aImage ) override;
495 
496 protected:
497  void GetMsgPanelInfoBase( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM >& aList ) override;
498 
499 private:
502 
503  VIATYPE_T m_ViaType; // Type of via
504 
505  int m_Drill; // for vias: via drill (- 1 for default value)
506 };
507 
508 
510 inline VIA* GetFirstVia( TRACK* aTrk, const TRACK* aStopPoint = NULL )
511 {
512  while( aTrk && (aTrk != aStopPoint) && (aTrk->Type() != PCB_VIA_T) )
513  aTrk = aTrk->Next();
514 
515  // It could stop because of the stop point, not on a via
516  if( aTrk && (aTrk->Type() == PCB_VIA_T) )
517  return static_cast<VIA*>( aTrk );
518  else
519  return NULL;
520 }
521 
522 
524 inline TRACK* GetFirstTrack( TRACK* aTrk, const TRACK* aStopPoint = NULL )
525 {
526  while( aTrk && ( aTrk != aStopPoint ) && ( aTrk->Type() != PCB_TRACE_T ) )
527  aTrk = aTrk->Next();
528 
529  // It could stop because of the stop point, not on a via
530  if( aTrk && ( aTrk->Type() == PCB_TRACE_T ) )
531  return static_cast<TRACK*>( aTrk );
532  else
533  return NULL;
534 }
535 
536 #endif // CLASS_TRACK_H
bool IsLocked() const override
Function IsLocked.
Definition: class_track.h:137
KICAD_T Type() const
Function Type()
Definition: base_struct.h:201
void GetMsgPanelInfoBase_Common(EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList)
Helper function for the common panel info.
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...
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:168
bool IsNull()
Function IsNull returns true if segment length is zero.
wxPoint m_Start
Line start point.
Definition: class_track.h:339
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:191
VIATYPE_T m_ViaType
Definition: class_track.h:503
PNG memory record (file in memory).
Definition: bitmap_types.h:43
static bool ClassOf(const EDA_ITEM *aItem)
Definition: class_track.h:85
void SetViaType(VIATYPE_T aViaType)
Definition: class_track.h:458
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 fil...
void SetPosition(const wxPoint &aPoint) override
Definition: class_track.h:430
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
void SetEnd(const wxPoint &aEnd)
Definition: class_track.h:118
Classes BOARD_ITEM and BOARD_CONNECTED_ITEM.
virtual void Flip(const wxPoint &aCentre) override
Function Flip Flip this object, i.e.
void GetMsgPanelInfo(EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it&#39;s internal state for displ...
STATUS_FLAGS IsPointOnEnds(const wxPoint &point, int min_dist=0)
Function IsPointOnEnds returns STARTPOINT if point if near (dist = min_dist) start point...
TRACK * GetTrack(TRACK *aStartTrace, const TRACK *aEndTrace, const wxPoint &aPosition, LSET aLayerMask)
Function GetTrack is a helper function to locate a trace segment having an end point at aPosition on ...
Definition: class_track.cpp:68
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
wxString GetClass() const override
Function GetClass returns the class name.
Definition: class_track.h:357
virtual EDA_ITEM * Clone() const override
Function Clone creates a duplicate of this item with linked list members set to NULL.
int GetEndSegments(int NbSegm, TRACK **StartTrack, TRACK **EndTrack)
Function GetEndSegments get the segments connected to the end point of the track. ...
VIATYPE_T
Definition: class_track.h:50
virtual void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
int GetState(int type) const
Definition: base_struct.h:240
Class BOARD_CONNECTED_ITEM is a base class derived from BOARD_ITEM for items that can be connected an...
TRACK * Back() const
Definition: class_track.h:100
int GetDrill() const
Function GetDrill returns the local drill setting for this VIA.
Definition: class_track.h:472
const wxPoint & GetEnd() const
Definition: class_track.h:119
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
static wxPoint ZeroOffset
A value of wxPoint(0,0) which can be passed to the Draw() functions.
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:95
double m_Param
Definition: class_track.h:93
int m_Width
Thickness of track, or via diameter.
Definition: class_track.h:338
void SetWidth(int aWidth)
Definition: class_track.h:115
ENDPOINT_T
Flag used in locate routines (from which endpoint work)
Definition: pcbnew.h:58
SEGZONE * Next() const
Definition: class_track.h:363
virtual unsigned int ViewGetLOD(int aLayer, KIGFX::VIEW *aView) const override
Function ViewGetLOD() Returns the level of detail (LOD) of the item.
const INSPECTOR_FUNC & INSPECTOR
Definition: base_struct.h:102
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...
void SetLocked(bool aLocked) override
Function SetLocked modifies &#39;lock&#39; status for of the item.
Definition: class_track.h:142
static bool ClassOf(const EDA_ITEM *aItem)
Definition: class_track.h:384
PCB_LAYER_ID
A quick note on layer IDs:
virtual bool HitTest(const wxPoint &aPosition) const override
Function HitTest tests if aPosition is contained within or on the bounding area of an item...
BITMAP_DEF GetMenuImage() const override
Function GetMenuImage returns a pointer to an image to be used in menus.
Class LSET is a set of PCB_LAYER_IDs.
VIATYPE_T GetViaType() const
Definition: class_track.h:457
const wxPoint GetPosition() const override
Definition: class_track.h:113
GR_DRAWMODE
Drawmode. Compositing mode plus a flag or two.
Definition: gr_basic.h:37
Class SHAPE_POLY_SET.
const wxPoint & GetStart() const
Definition: class_track.h:122
wxPoint m_End
Line end point.
Definition: class_track.h:340
int m_Drill
Definition: class_track.h:505
void DrawShortNetname(EDA_DRAW_PANEL *panel, wxDC *aDC, GR_DRAWMODE aDrawMode, COLOR4D aBgColor)
Helper for drawing the short netname in tracks.
const wxPoint & GetEndPoint(ENDPOINT_T aEndPoint) const
Return the selected endpoint (start or end)
Definition: class_track.h:126
virtual LSET GetLayerSet() const
Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segme...
unsigned STATUS_FLAGS
Definition: base_struct.h:147
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...
PCB_LAYER_ID m_BottomLayer
The bottom layer of the via (the top layer is in m_Layer)
Definition: class_track.h:501
TRACK * GetEndNetCode(int NetCode)
#define TRACK_LOCKED
Pcbnew: track locked: protected from global deletion.
Definition: base_struct.h:129
virtual void Move(const wxPoint &aMoveVector) override
Function Move move this object.
Definition: class_track.h:102
#define UNDEFINED_DRILL_DIAMETER
Definition: class_track.h:59
const BOX2I ViewBBox() const override
Function ViewBBox() returns the bounding box of the item covering all its layers. ...
virtual int GetClearance(BOARD_CONNECTED_ITEM *aItem=NULL) const override
Function GetClearance returns the clearance in internal units.
const wxPoint GetPosition() const override
Definition: class_track.h:429
virtual void SwapData(BOARD_ITEM *aImage) override
Swap data between aItem and aImage.
void SetDrillDefault()
Function SetDrillDefault sets the drill value for vias to the default value UNDEFINED_DRILL_DIAMETER...
Definition: class_track.h:486
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...
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.
virtual void ViewGetLayers(int aLayers[], int &aCount) const override
Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on...
TRACK * GetBestInsertPoint(BOARD *aPcb)
Function GetBestInsertPoint searches the "best" insertion point within the track linked list...
wxString GetClass() const override
Function GetClass returns the class name.
Definition: class_track.h:436
TRACK * Next() const
Definition: class_track.h:99
void SetState(int type, int state)
Definition: base_struct.h:245
TRACK * GetStartNetCode(int NetCode)
void SetBack(EDA_ITEM *aBack)
Definition: class_track.h:346
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:170
int GetWidth() const
Definition: class_track.h:116
void SetPosition(const wxPoint &aPos) override
Definition: class_track.h:112
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
void SetDrill(int aDrill)
Function SetDrill sets the drill value for vias.
Definition: class_track.h:465
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:154
double GetLength() const
Function GetLength returns the length of the track using the hypotenuse calculation.
Definition: class_track.h:175
virtual wxString GetSelectMenuText(EDA_UNITS_T aUnits) const override
Function GetSelectMenuText returns the text to display to be used in the selection clarification cont...
void SetStart(const wxPoint &aStart)
Definition: class_track.h:121
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:96
TRACK(BOARD_ITEM *aParent, KICAD_T idtype=PCB_TRACE_T)
Definition: class_track.cpp:96
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
Class VIEW.
Definition: view.h:61
void SetNext(EDA_ITEM *aNext)
Definition: class_track.h:345
SEARCH_RESULT
Definition: base_struct.h:66
Class BOARD_CONNECTED_ITEM.
BOARD_CONNECTED_ITEM * end
Definition: class_track.h:91
Definition of PCB_DISPLAY_OPTIONS class.
BOARD_CONNECTED_ITEM * start
Definition: class_track.h:90
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:167
EDA_UNITS_T
Definition: common.h:159
bool IsDrillDefault() const
Function IsDrillDefault.
Definition: class_track.h:492
TRACK * GetFirstTrack(TRACK *aTrk, const TRACK *aStopPoint=NULL)
Scan a track list for the first TRACK object. Returns NULL if not found (or NULL passed) ...
Definition: class_track.h:524
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39
wxString GetClass() const override
Function GetClass returns the class name.
Definition: class_track.h:278
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:510