/**
* @file class_track.h
* @brief Definitions for tracks, vias and zones.
*/
#ifndef CLASS_TRACK_H
#define CLASS_TRACK_H
#include "class_board_item.h"
#include "class_board_connected_item.h"
#include "PolyLine.h"
class TRACK;
class D_PAD;
// Via attributes (m_Shape parameter)
#define VIA_THROUGH 3 /* Always a through hole via */
#define VIA_BLIND_BURIED 2 /* this via can be on internal layers */
#define VIA_MICROVIA 1 /* this via which connect from an external layer
* to the near neighbor internal layer */
#define VIA_NOT_DEFINED 0 /* not yet used */
/**
* Function GetTrace
* is a helper function to locate a trace segment having an end point at \a aPosition
* on \a aLayerMask starting at \a aStartTrace and end at \a aEndTrace.
*
* The segments of track that are flagged as deleted or busy are ignored. Layer
* visibility is also ignored.
*
* @param aStartTrace A pointer to the TRACK object to begin searching.
* @param aEndTrace A pointer to the TRACK object to stop the search. A NULL value
* searches to the end of the list.
* @param aPosition A wxPoint object containing the position to test.
* @param aLayerMask A layer or layers to mask the hit test. Use -1 to ignore
* layer mask.
* @return A TRACK object pointer if found otherwise NULL.
*/
extern TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition,
int aLayerMask );
class TRACK : public BOARD_CONNECTED_ITEM
{
// make SetNext() and SetBack() private so that they may not be called from anywhere.
// list management is done on TRACKs using DLIST