Commit 3e18fa42 authored by Heikki Pulkkinen's avatar Heikki Pulkkinen Committed by Dick Hollenbeck

protect data in class_track.h, switch to using member accessors

parent f8a56d44
...@@ -464,8 +464,8 @@ void EDA_3D_CANVAS::Draw3D_Track( TRACK* aTrack ) ...@@ -464,8 +464,8 @@ void EDA_3D_CANVAS::Draw3D_Track( TRACK* aTrack )
SetGLColor( color ); SetGLColor( color );
glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( layer ) ); glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( layer ) );
Draw3D_SolidSegment( aTrack->m_Start, aTrack->m_End, Draw3D_SolidSegment( aTrack->GetStart(), aTrack->GetEnd(),
aTrack->m_Width, thickness, zpos, aTrack->GetWidth(), thickness, zpos,
g_Parm_3D_Visu.m_BiuTo3Dunits ); g_Parm_3D_Visu.m_BiuTo3Dunits );
} }
...@@ -475,7 +475,7 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via ) ...@@ -475,7 +475,7 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via )
int color; int color;
double biu_to_3Dunits = g_Parm_3D_Visu.m_BiuTo3Dunits ; double biu_to_3Dunits = g_Parm_3D_Visu.m_BiuTo3Dunits ;
int outer_radius = via->m_Width / 2; int outer_radius = via->GetWidth() / 2;
int inner_radius = via->GetDrillValue() / 2; int inner_radius = via->GetDrillValue() / 2;
int thickness = g_Parm_3D_Visu.GetCopperThicknessBIU(); int thickness = g_Parm_3D_Visu.GetCopperThicknessBIU();
...@@ -504,7 +504,7 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via ) ...@@ -504,7 +504,7 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via )
SetGLColor( color ); SetGLColor( color );
glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( layer ) ); glNormal3f( 0.0, 0.0, Get3DLayer_Z_Orientation( layer ) );
Draw3D_ZaxisCylinder( via->m_Start, (outer_radius + inner_radius)/2, Draw3D_ZaxisCylinder( via->GetStart(), (outer_radius + inner_radius)/2,
thickness, outer_radius - inner_radius, thickness, outer_radius - inner_radius,
zpos, biu_to_3Dunits ); zpos, biu_to_3Dunits );
if( layer >= top_layer ) if( layer >= top_layer )
...@@ -512,13 +512,13 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via ) ...@@ -512,13 +512,13 @@ void EDA_3D_CANVAS::Draw3D_Via( SEGVIA* via )
} }
// Drawing via hole: // Drawing via hole:
color = g_ColorsSettings.GetItemColor( VIAS_VISIBLE + via->m_Shape ); color = g_ColorsSettings.GetItemColor( VIAS_VISIBLE + via->GetShape() );
SetGLColor( color ); SetGLColor( color );
int height = g_Parm_3D_Visu.GetLayerZcoordBIU(top_layer) - int height = g_Parm_3D_Visu.GetLayerZcoordBIU(top_layer) -
g_Parm_3D_Visu.GetLayerZcoordBIU( bottom_layer ); g_Parm_3D_Visu.GetLayerZcoordBIU( bottom_layer );
int zpos = g_Parm_3D_Visu.GetLayerZcoordBIU(bottom_layer) + thickness/2; int zpos = g_Parm_3D_Visu.GetLayerZcoordBIU(bottom_layer) + thickness/2;
Draw3D_ZaxisCylinder( via->m_Start, inner_radius + thickness/2, height, Draw3D_ZaxisCylinder( via->GetStart(), inner_radius + thickness/2, height,
thickness, zpos, biu_to_3Dunits ); thickness, zpos, biu_to_3Dunits );
} }
......
...@@ -462,7 +462,7 @@ int PCB_EDIT_FRAME::GenPlaceBoard() ...@@ -462,7 +462,7 @@ int PCB_EDIT_FRAME::GenPlaceBoard()
TmpSegm.SetLayer( -1 ); TmpSegm.SetLayer( -1 );
TmpSegm.SetNet( -1 ); TmpSegm.SetNet( -1 );
TmpSegm.m_Width = RoutingMatrix.m_GridRouting / 2; TmpSegm.SetWidth( RoutingMatrix.m_GridRouting / 2 );
EDA_ITEM* PtStruct = GetBoard()->m_Drawings; EDA_ITEM* PtStruct = GetBoard()->m_Drawings;
......
...@@ -262,13 +262,13 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic ) ...@@ -262,13 +262,13 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic )
int half_width; int half_width;
int ux0, uy0, ux1, uy1; int ux0, uy0, ux1, uy1;
half_width = ( pt_segm->m_Width / 2 ) + marge; half_width = ( pt_segm->GetWidth() / 2 ) + marge;
// Calculate the bounding rectangle of the segment (if H, V or Via) // Calculate the bounding rectangle of the segment (if H, V or Via)
ux0 = pt_segm->m_Start.x - RoutingMatrix.GetBrdCoordOrigin().x; ux0 = pt_segm->GetStart().x - RoutingMatrix.GetBrdCoordOrigin().x;
uy0 = pt_segm->m_Start.y - RoutingMatrix.GetBrdCoordOrigin().y; uy0 = pt_segm->GetStart().y - RoutingMatrix.GetBrdCoordOrigin().y;
ux1 = pt_segm->m_End.x - RoutingMatrix.GetBrdCoordOrigin().x; ux1 = pt_segm->GetEnd().x - RoutingMatrix.GetBrdCoordOrigin().x;
uy1 = pt_segm->m_End.y - RoutingMatrix.GetBrdCoordOrigin().y; uy1 = pt_segm->GetEnd().y - RoutingMatrix.GetBrdCoordOrigin().y;
// Test if VIA (filled circle was drawn) // Test if VIA (filled circle was drawn)
if( pt_segm->Type() == PCB_VIA_T ) if( pt_segm->Type() == PCB_VIA_T )
...@@ -290,7 +290,7 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic ) ...@@ -290,7 +290,7 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic )
mask_layer = -1; mask_layer = -1;
if( mask_layer ) if( mask_layer )
TraceFilledCircle( pt_segm->m_Start.x, pt_segm->m_Start.y, TraceFilledCircle( pt_segm->GetStart().x, pt_segm->GetStart().y,
half_width, mask_layer, color, op_logic ); half_width, mask_layer, color, op_logic );
return; return;
} }
...@@ -301,13 +301,13 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic ) ...@@ -301,13 +301,13 @@ void TraceSegmentPcb( TRACK* pt_segm, int color, int marge, int op_logic )
layer = -1; layer = -1;
// The segment is here a straight line or a circle or an arc.: // The segment is here a straight line or a circle or an arc.:
if( pt_segm->m_Shape == S_CIRCLE ) if( pt_segm->GetShape() == S_CIRCLE )
{ {
TraceCircle( ux0, uy0, ux1, uy1, half_width, layer, color, op_logic ); TraceCircle( ux0, uy0, ux1, uy1, half_width, layer, color, op_logic );
return; return;
} }
if( pt_segm->m_Shape == S_ARC ) if( pt_segm->GetShape() == S_ARC )
{ {
TraceArc( ux0, uy0, ux1, uy1, pt_segm->m_Param, half_width, layer, color, op_logic ); TraceArc( ux0, uy0, ux1, uy1, pt_segm->m_Param, half_width, layer, color, op_logic );
return; return;
......
...@@ -1169,16 +1169,14 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, ...@@ -1169,16 +1169,14 @@ static void OrCell_Trace( BOARD* pcb, int col, int row,
g_CurrentTrackSegment->SetState( TRACK_AR, ON ); g_CurrentTrackSegment->SetState( TRACK_AR, ON );
g_CurrentTrackSegment->SetLayer( 0x0F ); g_CurrentTrackSegment->SetLayer( 0x0F );
g_CurrentTrackSegment->m_Start.x = g_CurrentTrackSegment->SetStart(wxPoint( pcb->GetBoundingBox().GetX() +
g_CurrentTrackSegment->m_End.x = pcb->GetBoundingBox().GetX() + ( RoutingMatrix.m_GridRouting * row ),
( RoutingMatrix.m_GridRouting * row ); pcb->GetBoundingBox().GetY() +
( RoutingMatrix.m_GridRouting * col )));
g_CurrentTrackSegment->SetEnd( g_CurrentTrackSegment->GetStart() );
g_CurrentTrackSegment->m_Start.y = g_CurrentTrackSegment->SetWidth( pcb->GetCurrentViaSize() );
g_CurrentTrackSegment->m_End.y = pcb->GetBoundingBox().GetY() + g_CurrentTrackSegment->SetShape( pcb->GetDesignSettings().m_CurrentViaType );
( RoutingMatrix.m_GridRouting * col );
g_CurrentTrackSegment->m_Width = pcb->GetCurrentViaSize();
g_CurrentTrackSegment->m_Shape = pcb->GetDesignSettings().m_CurrentViaType;
g_CurrentTrackSegment->SetNet( current_net_code ); g_CurrentTrackSegment->SetNet( current_net_code );
} }
...@@ -1194,35 +1192,34 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, ...@@ -1194,35 +1192,34 @@ static void OrCell_Trace( BOARD* pcb, int col, int row,
g_CurrentTrackSegment->SetLayer( Route_Layer_TOP ); g_CurrentTrackSegment->SetLayer( Route_Layer_TOP );
g_CurrentTrackSegment->SetState( TRACK_AR, ON ); g_CurrentTrackSegment->SetState( TRACK_AR, ON );
g_CurrentTrackSegment->m_End.x = pcb->GetBoundingBox().GetX() + g_CurrentTrackSegment->SetEnd( wxPoint( pcb->GetBoundingBox().GetX() +
( RoutingMatrix.m_GridRouting * row ); ( RoutingMatrix.m_GridRouting * row ),
g_CurrentTrackSegment->m_End.y = pcb->GetBoundingBox().GetY() + pcb->GetBoundingBox().GetY() +
( RoutingMatrix.m_GridRouting * col ); ( RoutingMatrix.m_GridRouting * col )));
g_CurrentTrackSegment->SetNet( current_net_code ); g_CurrentTrackSegment->SetNet( current_net_code );
if( g_CurrentTrackSegment->Back() == NULL ) /* Start trace. */ if( g_CurrentTrackSegment->Back() == NULL ) /* Start trace. */
{ {
g_CurrentTrackSegment->m_Start.x = segm_fX; g_CurrentTrackSegment->SetStart( wxPoint( segm_fX, segm_fY ) );
g_CurrentTrackSegment->m_Start.y = segm_fY;
/* Placement on the center of the pad if outside grid. */ /* Placement on the center of the pad if outside grid. */
dx1 = g_CurrentTrackSegment->m_End.x - g_CurrentTrackSegment->m_Start.x; dx1 = g_CurrentTrackSegment->GetEnd().x - g_CurrentTrackSegment->GetStart().x;
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y; dy1 = g_CurrentTrackSegment->GetEnd().y - g_CurrentTrackSegment->GetStart().y;
dx0 = pt_cur_ch->m_PadEnd->GetPosition().x - g_CurrentTrackSegment->m_Start.x; dx0 = pt_cur_ch->m_PadEnd->GetPosition().x - g_CurrentTrackSegment->GetStart().x;
dy0 = pt_cur_ch->m_PadEnd->GetPosition().y - g_CurrentTrackSegment->m_Start.y; dy0 = pt_cur_ch->m_PadEnd->GetPosition().y - g_CurrentTrackSegment->GetStart().y;
/* If aligned, change the origin point. */ /* If aligned, change the origin point. */
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) )
{ {
g_CurrentTrackSegment->m_Start = pt_cur_ch->m_PadEnd->GetPosition(); g_CurrentTrackSegment->SetStart( pt_cur_ch->m_PadEnd->GetPosition() );
} }
else // Creation of a supplemental segment else // Creation of a supplemental segment
{ {
g_CurrentTrackSegment->m_Start = pt_cur_ch->m_PadEnd->GetPosition(); g_CurrentTrackSegment->SetStart( pt_cur_ch->m_PadEnd->GetPosition() );
newTrack = (TRACK*)g_CurrentTrackSegment->Clone(); newTrack = (TRACK*)g_CurrentTrackSegment->Clone();
newTrack->m_Start = g_CurrentTrackSegment->m_End; newTrack->SetStart( g_CurrentTrackSegment->GetEnd());
g_CurrentTrackList.PushBack( newTrack ); g_CurrentTrackList.PushBack( newTrack );
} }
...@@ -1231,28 +1228,28 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, ...@@ -1231,28 +1228,28 @@ static void OrCell_Trace( BOARD* pcb, int col, int row,
{ {
if( g_CurrentTrackSegment->Back() ) if( g_CurrentTrackSegment->Back() )
{ {
g_CurrentTrackSegment->m_Start = g_CurrentTrackSegment->Back()->m_End; g_CurrentTrackSegment->SetStart( g_CurrentTrackSegment->Back()->GetEnd() );
} }
} }
g_CurrentTrackSegment->m_Width = pcb->GetCurrentTrackWidth(); g_CurrentTrackSegment->SetWidth( pcb->GetCurrentTrackWidth() );
if( g_CurrentTrackSegment->m_Start != g_CurrentTrackSegment->m_End ) if( g_CurrentTrackSegment->GetStart() != g_CurrentTrackSegment->GetEnd() )
{ {
/* Reduce aligned segments by one. */ /* Reduce aligned segments by one. */
TRACK* oldTrack = g_CurrentTrackSegment->Back(); TRACK* oldTrack = g_CurrentTrackSegment->Back();
if( oldTrack && oldTrack->Type() != PCB_VIA_T ) if( oldTrack && oldTrack->Type() != PCB_VIA_T )
{ {
dx1 = g_CurrentTrackSegment->m_End.x - g_CurrentTrackSegment->m_Start.x; dx1 = g_CurrentTrackSegment->GetEnd().x - g_CurrentTrackSegment->GetStart().x;
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y; dy1 = g_CurrentTrackSegment->GetEnd().y - g_CurrentTrackSegment->GetStart().y;
dx0 = oldTrack->m_End.x - oldTrack->m_Start.x; dx0 = oldTrack->GetEnd().x - oldTrack->GetStart().x;
dy0 = oldTrack->m_End.y - oldTrack->m_Start.y; dy0 = oldTrack->GetEnd().y - oldTrack->GetStart().y;
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) )
{ {
oldTrack->m_End = g_CurrentTrackSegment->m_End; oldTrack->SetEnd( g_CurrentTrackSegment->GetEnd() );
delete g_CurrentTrackList.PopBack(); delete g_CurrentTrackList.PopBack();
} }
...@@ -1280,24 +1277,24 @@ static void AddNewTrace( PCB_EDIT_FRAME* pcbframe, wxDC* DC ) ...@@ -1280,24 +1277,24 @@ static void AddNewTrace( PCB_EDIT_FRAME* pcbframe, wxDC* DC )
marge = s_Clearance + ( pcbframe->GetBoard()->GetCurrentTrackWidth() / 2 ); marge = s_Clearance + ( pcbframe->GetBoard()->GetCurrentTrackWidth() / 2 );
via_marge = s_Clearance + ( pcbframe->GetBoard()->GetCurrentViaSize() / 2 ); via_marge = s_Clearance + ( pcbframe->GetBoard()->GetCurrentViaSize() / 2 );
dx1 = g_CurrentTrackSegment->m_End.x - g_CurrentTrackSegment->m_Start.x; dx1 = g_CurrentTrackSegment->GetEnd().x - g_CurrentTrackSegment->GetStart().x;
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y; dy1 = g_CurrentTrackSegment->GetEnd().y - g_CurrentTrackSegment->GetStart().y;
/* Place on center of pad if off grid. */ /* Place on center of pad if off grid. */
dx0 = pt_cur_ch->m_PadStart->GetPosition().x - g_CurrentTrackSegment->m_Start.x; dx0 = pt_cur_ch->m_PadStart->GetPosition().x - g_CurrentTrackSegment->GetStart().x;
dy0 = pt_cur_ch->m_PadStart->GetPosition().y - g_CurrentTrackSegment->m_Start.y; dy0 = pt_cur_ch->m_PadStart->GetPosition().y - g_CurrentTrackSegment->GetStart().y;
/* If aligned, change the origin point. */ /* If aligned, change the origin point. */
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) )
{ {
g_CurrentTrackSegment->m_End = pt_cur_ch->m_PadStart->GetPosition(); g_CurrentTrackSegment->SetEnd( pt_cur_ch->m_PadStart->GetPosition() );
} }
else else
{ {
TRACK* newTrack = (TRACK*)g_CurrentTrackSegment->Clone(); TRACK* newTrack = (TRACK*)g_CurrentTrackSegment->Clone();
newTrack->m_End = pt_cur_ch->m_PadStart->GetPosition(); newTrack->SetEnd( pt_cur_ch->m_PadStart->GetPosition() );
newTrack->m_Start = g_CurrentTrackSegment->m_End; newTrack->SetStart( g_CurrentTrackSegment->GetEnd() );
g_CurrentTrackList.PushBack( newTrack ); g_CurrentTrackList.PushBack( newTrack );
} }
......
...@@ -245,11 +245,14 @@ void SwapData( BOARD_ITEM* aItem, BOARD_ITEM* aImage ) ...@@ -245,11 +245,14 @@ void SwapData( BOARD_ITEM* aItem, BOARD_ITEM* aImage )
{ {
TRACK* track = (TRACK*) aItem; TRACK* track = (TRACK*) aItem;
TRACK* image = (TRACK*) aImage; TRACK* image = (TRACK*) aImage;
EXCHG( track->m_Start, image->m_Start );
EXCHG( track->m_End, image->m_End ); // swap start, end, width and shape for track and image.
EXCHG( track->m_Width, image->m_Width ); wxPoint exchp = track->GetStart(); track->SetStart( image->GetStart() ); image->SetStart( exchp );
EXCHG( track->m_Shape, image->m_Shape ); exchp = track->GetEnd(); track->SetEnd( image->GetEnd() ); image->SetEnd( exchp );
int atmp = track->GetDrillValue(); int atmp = track->GetWidth(); track->SetWidth( image->GetWidth() ); image->SetWidth( atmp );
atmp = track->GetShape(); track->SetShape( image->GetShape() ); image->SetShape( atmp );
atmp = track->GetDrillValue();
if( track->IsDrillDefault() ) if( track->IsDrillDefault() )
atmp = -1; atmp = -1;
......
...@@ -214,13 +214,13 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS* ...@@ -214,13 +214,13 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, int aLayerMask, TRACK_PTRS*
*/ */
aLayerMask = candidate->ReturnMaskLayer(); aLayerMask = candidate->ReturnMaskLayer();
if( aPosition == candidate->m_Start ) if( aPosition == candidate->GetStart() )
{ {
aPosition = candidate->m_End; aPosition = candidate->GetEnd();
} }
else else
{ {
aPosition = candidate->m_Start; aPosition = candidate->GetStart();
} }
segment = m_Track; /* restart list of tracks to analyze */ segment = m_Track; /* restart list of tracks to analyze */
...@@ -1586,7 +1586,7 @@ TRACK* BOARD::GetViaByPosition( const wxPoint& aPosition, int aLayerMask ) ...@@ -1586,7 +1586,7 @@ TRACK* BOARD::GetViaByPosition( const wxPoint& aPosition, int aLayerMask )
if( track->Type() != PCB_VIA_T ) if( track->Type() != PCB_VIA_T )
continue; continue;
if( track->m_Start != aPosition ) if( track->GetStart() != aPosition )
continue; continue;
if( track->GetState( BUSY | IS_DELETED ) ) if( track->GetState( BUSY | IS_DELETED ) )
...@@ -1628,11 +1628,11 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint ) ...@@ -1628,11 +1628,11 @@ D_PAD* BOARD::GetPad( TRACK* aTrace, int aEndPoint )
if( aEndPoint == FLG_START ) if( aEndPoint == FLG_START )
{ {
aPosition = aTrace->m_Start; aPosition = aTrace->GetStart();
} }
else else
{ {
aPosition = aTrace->m_End; aPosition = aTrace->GetEnd();
} }
for( MODULE* module = m_Modules; module; module = module->Next() ) for( MODULE* module = m_Modules; module; module = module->Next() )
...@@ -1852,16 +1852,16 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1852,16 +1852,16 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
if( aTrace->Type() == PCB_VIA_T ) if( aTrace->Type() == PCB_VIA_T )
{ {
TRACK* Segm1, * Segm2 = NULL, * Segm3 = NULL; TRACK* Segm1, * Segm2 = NULL, * Segm3 = NULL;
Segm1 = ::GetTrace( m_Track, NULL, aTrace->m_Start, layerMask ); Segm1 = ::GetTrace( m_Track, NULL, aTrace->GetStart(), layerMask );
if( Segm1 ) if( Segm1 )
{ {
Segm2 = ::GetTrace( Segm1->Next(), NULL, aTrace->m_Start, layerMask ); Segm2 = ::GetTrace( Segm1->Next(), NULL, aTrace->GetStart(), layerMask );
} }
if( Segm2 ) if( Segm2 )
{ {
Segm3 = ::GetTrace( Segm2->Next(), NULL, aTrace->m_Start, layerMask ); Segm3 = ::GetTrace( Segm2->Next(), NULL, aTrace->GetStart(), layerMask );
} }
if( Segm3 ) // More than 2 segments are connected to this via. the track" is only this via if( Segm3 ) // More than 2 segments are connected to this via. the track" is only this via
...@@ -1875,19 +1875,19 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1875,19 +1875,19 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
if( Segm1 ) // search for others segments connected to the initial segment start point if( Segm1 ) // search for others segments connected to the initial segment start point
{ {
layerMask = Segm1->ReturnMaskLayer(); layerMask = Segm1->ReturnMaskLayer();
chainMarkedSegments( aTrace->m_Start, layerMask, &trackList ); chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList );
} }
if( Segm2 ) // search for others segments connected to the initial segment end point if( Segm2 ) // search for others segments connected to the initial segment end point
{ {
layerMask = Segm2->ReturnMaskLayer(); layerMask = Segm2->ReturnMaskLayer();
chainMarkedSegments( aTrace->m_Start, layerMask, &trackList ); chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList );
} }
} }
else // mark the chain using both ends of the initial segment else // mark the chain using both ends of the initial segment
{ {
chainMarkedSegments( aTrace->m_Start, layerMask, &trackList ); chainMarkedSegments( aTrace->GetStart(), layerMask, &trackList );
chainMarkedSegments( aTrace->m_End, layerMask, &trackList ); chainMarkedSegments( aTrace->GetEnd(), layerMask, &trackList );
} }
// Now examine selected vias and flag them if they are on the track // Now examine selected vias and flag them if they are on the track
...@@ -1909,7 +1909,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1909,7 +1909,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
layerMask = via->ReturnMaskLayer(); layerMask = via->ReturnMaskLayer();
TRACK* track = ::GetTrace( m_Track, NULL, via->m_Start, layerMask ); TRACK* track = ::GetTrace( m_Track, NULL, via->GetStart(), layerMask );
// GetTrace does not consider tracks flagged BUSY. // GetTrace does not consider tracks flagged BUSY.
// So if no connected track found, this via is on the current track // So if no connected track found, this via is on the current track
...@@ -1931,7 +1931,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount, ...@@ -1931,7 +1931,7 @@ TRACK* BOARD::MarkTrace( TRACK* aTrace, int* aCount,
*/ */
int layer = track->GetLayer(); int layer = track->GetLayer();
while( ( track = ::GetTrace( track->Next(), NULL, via->m_Start, layerMask ) ) != NULL ) while( ( track = ::GetTrace( track->Next(), NULL, via->GetStart(), layerMask ) ) != NULL )
{ {
if( layer != track->GetLayer() ) if( layer != track->GetLayer() )
{ {
...@@ -2159,21 +2159,21 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS ...@@ -2159,21 +2159,21 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS
* The new segment starts from aPosition and ends at the end point of * The new segment starts from aPosition and ends at the end point of
* aSegment. The original segment now ends at aPosition. * aSegment. The original segment now ends at aPosition.
*/ */
if( aSegment->m_Start == aPosition || aSegment->m_End == aPosition ) if( aSegment->GetStart() == aPosition || aSegment->GetEnd() == aPosition )
return NULL; return NULL;
/* A via is a good lock point */ /* A via is a good lock point */
if( aSegment->Type() == PCB_VIA_T ) if( aSegment->Type() == PCB_VIA_T )
{ {
aPosition = aSegment->m_Start; aPosition = aSegment->GetStart();
return aSegment; return aSegment;
} }
// Calculation coordinate of intermediate point relative to the start point of aSegment // Calculation coordinate of intermediate point relative to the start point of aSegment
wxPoint delta = aSegment->m_End - aSegment->m_Start; wxPoint delta = aSegment->GetEnd() - aSegment->GetStart();
// calculate coordinates of aPosition relative to aSegment->m_Start // calculate coordinates of aPosition relative to aSegment->GetStart()
wxPoint lockPoint = aPosition - aSegment->m_Start; wxPoint lockPoint = aPosition - aSegment->GetStart();
// lockPoint must be on aSegment: // lockPoint must be on aSegment:
// Ensure lockPoint.y/lockPoint.y = delta.y/delta.x // Ensure lockPoint.y/lockPoint.y = delta.y/delta.x
...@@ -2185,11 +2185,11 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS ...@@ -2185,11 +2185,11 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS
/* Create the intermediate point (that is to say creation of a new /* Create the intermediate point (that is to say creation of a new
* segment, beginning at the intermediate point. * segment, beginning at the intermediate point.
*/ */
lockPoint += aSegment->m_Start; lockPoint += aSegment->GetStart();
TRACK* newTrack = (TRACK*)aSegment->Clone(); TRACK* newTrack = (TRACK*)aSegment->Clone();
// The new segment begins at the new point, // The new segment begins at the new point,
newTrack->m_Start = lockPoint; newTrack->SetStart(lockPoint);
newTrack->start = aSegment; newTrack->start = aSegment;
newTrack->SetState( BEGIN_ONPAD, OFF ); newTrack->SetState( BEGIN_ONPAD, OFF );
...@@ -2211,7 +2211,7 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS ...@@ -2211,7 +2211,7 @@ TRACK* BOARD::CreateLockPoint( wxPoint& aPosition, TRACK* aSegment, PICKED_ITEMS
} }
// Old track segment now ends at new point. // Old track segment now ends at new point.
aSegment->m_End = lockPoint; aSegment->SetEnd(lockPoint);
aSegment->end = newTrack; aSegment->end = newTrack;
aSegment->SetState( END_ONPAD, OFF ); aSegment->SetState( END_ONPAD, OFF );
......
...@@ -98,13 +98,13 @@ TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition, ...@@ -98,13 +98,13 @@ TRACK* GetTrace( TRACK* aStartTrace, TRACK* aEndTrace, const wxPoint& aPosition,
{ {
if( PtSegm->GetState( IS_DELETED | BUSY ) == 0 ) if( PtSegm->GetState( IS_DELETED | BUSY ) == 0 )
{ {
if( aPosition == PtSegm->m_Start ) if( aPosition == PtSegm->GetStart() )
{ {
if( aLayerMask & PtSegm->ReturnMaskLayer() ) if( aLayerMask & PtSegm->ReturnMaskLayer() )
return PtSegm; return PtSegm;
} }
if( aPosition == PtSegm->m_End ) if( aPosition == PtSegm->GetEnd() )
{ {
if( aLayerMask & PtSegm->ReturnMaskLayer() ) if( aLayerMask & PtSegm->ReturnMaskLayer() )
return PtSegm; return PtSegm;
......
...@@ -79,14 +79,12 @@ private: ...@@ -79,14 +79,12 @@ private:
void SetNext( EDA_ITEM* aNext ) { Pnext = aNext; } void SetNext( EDA_ITEM* aNext ) { Pnext = aNext; }
void SetBack( EDA_ITEM* aBack ) { Pback = aBack; } void SetBack( EDA_ITEM* aBack ) { Pback = aBack; }
protected:
public:
int m_Width; // Thickness of track, or via diameter int m_Width; // Thickness of track, or via diameter
wxPoint m_Start; // Line start point wxPoint m_Start; // Line start point
wxPoint m_End; // Line end point wxPoint m_End; // Line end point
int m_Shape; // vias: shape and type, Track = shape.. int m_Shape; // vias: shape and type, Track = shape..
protected:
int m_Drill; // for vias: via drill (- 1 for default value) int m_Drill; // for vias: via drill (- 1 for default value)
public: public:
...@@ -95,7 +93,6 @@ public: ...@@ -95,7 +93,6 @@ public:
double m_Param; // Auxiliary variable ( used in some computations ) double m_Param; // Auxiliary variable ( used in some computations )
public:
TRACK( BOARD_ITEM* aParent, KICAD_T idtype = PCB_TRACE_T ); TRACK( BOARD_ITEM* aParent, KICAD_T idtype = PCB_TRACE_T );
// Do not create a copy constructor. The one generated by the compiler is adequate. // Do not create a copy constructor. The one generated by the compiler is adequate.
...@@ -125,6 +122,9 @@ public: ...@@ -125,6 +122,9 @@ public:
void SetStart( const wxPoint& aStart ) { m_Start = aStart; } void SetStart( const wxPoint& aStart ) { m_Start = aStart; }
const wxPoint& GetStart() const { return m_Start; } const wxPoint& GetStart() const { return m_Start; }
int GetShape() const { return m_Shape; }
void SetShape( int aShape ) { m_Shape = aShape; }
EDA_RECT GetBoundingBox() const; EDA_RECT GetBoundingBox() const;
/** /**
...@@ -164,10 +164,6 @@ public: ...@@ -164,10 +164,6 @@ public:
void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, void Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset ); GR_DRAWMODE aDrawMode, const wxPoint& aOffset = ZeroOffset );
/* divers */
int GetShape() const { return m_Shape & 0xFF; }
void SetShape( int aShape ) { m_Shape = aShape; }
/** /**
* Function TransformShapeWithClearanceToPolygon * Function TransformShapeWithClearanceToPolygon
* Convert the track shape to a closed polygon * Convert the track shape to a closed polygon
......
...@@ -218,8 +218,8 @@ bool TRACKS_CLEANER::clean_vias() ...@@ -218,8 +218,8 @@ bool TRACKS_CLEANER::clean_vias()
// Correct via m_End defects (if any) // Correct via m_End defects (if any)
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
{ {
if( track->m_Start != track->m_End ) if( track->GetStart() != track->GetEnd() )
track->m_End = track->m_Start; track->SetEnd( track->GetStart() );
} }
if( track->GetShape() != VIA_THROUGH ) if( track->GetShape() != VIA_THROUGH )
...@@ -232,10 +232,10 @@ bool TRACKS_CLEANER::clean_vias() ...@@ -232,10 +232,10 @@ bool TRACKS_CLEANER::clean_vias()
{ {
next_track = alt_track->Next(); next_track = alt_track->Next();
if( alt_track->m_Shape != VIA_THROUGH ) if( alt_track->GetShape() != VIA_THROUGH )
continue; continue;
if( alt_track->m_Start != track->m_Start ) if( alt_track->GetStart() != track->GetStart() )
continue; continue;
// delete via // delete via
...@@ -250,7 +250,7 @@ bool TRACKS_CLEANER::clean_vias() ...@@ -250,7 +250,7 @@ bool TRACKS_CLEANER::clean_vias()
{ {
next_track = track->Next(); next_track = track->Next();
if( track->m_Shape != VIA_THROUGH ) if( track->GetShape() != VIA_THROUGH )
continue; continue;
// Examine the list of connected pads: // Examine the list of connected pads:
...@@ -319,13 +319,13 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks() ...@@ -319,13 +319,13 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks()
{ {
if( track->Type() != PCB_VIA_T ) if( track->Type() != PCB_VIA_T )
{ {
zone = m_Brd->HitTestForAnyFilledArea( track->m_Start, zone = m_Brd->HitTestForAnyFilledArea( track->GetStart(),
track->GetLayer() ); track->GetLayer() );
} }
else else
{ {
((SEGVIA*)track)->ReturnLayerPair( &top_layer, &bottom_layer ); ((SEGVIA*)track)->ReturnLayerPair( &top_layer, &bottom_layer );
zone = m_Brd->HitTestForAnyFilledArea( track->m_Start, zone = m_Brd->HitTestForAnyFilledArea( track->GetStart(),
top_layer, bottom_layer ); top_layer, bottom_layer );
} }
} }
...@@ -352,7 +352,7 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks() ...@@ -352,7 +352,7 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks()
if( other == NULL ) if( other == NULL )
{ {
via->ReturnLayerPair( &top_layer, &bottom_layer ); via->ReturnLayerPair( &top_layer, &bottom_layer );
zone = m_Brd->HitTestForAnyFilledArea( via->m_Start, zone = m_Brd->HitTestForAnyFilledArea( via->GetStart(),
bottom_layer, top_layer ); bottom_layer, top_layer );
} }
...@@ -374,13 +374,13 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks() ...@@ -374,13 +374,13 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks()
{ {
if( track->Type() != PCB_VIA_T ) if( track->Type() != PCB_VIA_T )
{ {
zone = m_Brd->HitTestForAnyFilledArea( track->m_End, zone = m_Brd->HitTestForAnyFilledArea( track->GetEnd(),
track->GetLayer() ); track->GetLayer() );
} }
else else
{ {
((SEGVIA*)track)->ReturnLayerPair( &top_layer, &bottom_layer ); ((SEGVIA*)track)->ReturnLayerPair( &top_layer, &bottom_layer );
zone = m_Brd->HitTestForAnyFilledArea( track->m_End, zone = m_Brd->HitTestForAnyFilledArea( track->GetEnd(),
top_layer, bottom_layer ); top_layer, bottom_layer );
} }
} }
...@@ -408,7 +408,7 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks() ...@@ -408,7 +408,7 @@ bool TRACKS_CLEANER::deleteUnconnectedTracks()
if( other == NULL ) if( other == NULL )
{ {
via->ReturnLayerPair( &top_layer, &bottom_layer ); via->ReturnLayerPair( &top_layer, &bottom_layer );
zone = m_Brd->HitTestForAnyFilledArea( via->m_End, zone = m_Brd->HitTestForAnyFilledArea( via->GetEnd(),
bottom_layer, top_layer ); bottom_layer, top_layer );
} }
...@@ -472,12 +472,12 @@ bool TRACKS_CLEANER::clean_segments() ...@@ -472,12 +472,12 @@ bool TRACKS_CLEANER::clean_segments()
if( segment->GetNet() != other->GetNet() ) if( segment->GetNet() != other->GetNet() )
break; break;
if( ( segment->m_Start == other->m_Start ) && if( ( segment->GetStart() == other->GetStart() ) &&
( segment->m_End == other->m_End ) ) ( segment->GetEnd() == other->GetEnd() ) )
erase = true; erase = true;
if( ( segment->m_Start == other->m_End ) && if( ( segment->GetStart() == other->GetEnd() ) &&
( segment->m_End == other->m_Start ) ) ( segment->GetEnd() == other->GetStart() ) )
erase = true; erase = true;
// Delete redundant point // Delete redundant point
...@@ -511,7 +511,7 @@ bool TRACKS_CLEANER::clean_segments() ...@@ -511,7 +511,7 @@ bool TRACKS_CLEANER::clean_segments()
if( segStart ) if( segStart )
{ {
// the two segments must have the same width // the two segments must have the same width
if( segment->m_Width != segStart->m_Width ) if( segment->GetWidth() != segStart->GetWidth() )
break; break;
// it cannot be a via // it cannot be a via
...@@ -550,7 +550,7 @@ bool TRACKS_CLEANER::clean_segments() ...@@ -550,7 +550,7 @@ bool TRACKS_CLEANER::clean_segments()
if( segEnd ) if( segEnd )
{ {
if( segment->m_Width != segEnd->m_Width ) if( segment->GetWidth() != segEnd->GetWidth() )
break; break;
if( segEnd->Type() != PCB_TRACE_T ) if( segEnd->Type() != PCB_TRACE_T )
...@@ -607,7 +607,7 @@ bool TRACKS_CLEANER::clean_segments() ...@@ -607,7 +607,7 @@ bool TRACKS_CLEANER::clean_segments()
TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK* aCandidate, TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK* aCandidate,
int aEndType ) int aEndType )
{ {
if( aTrackRef->m_Width != aCandidate->m_Width ) if( aTrackRef->GetWidth() != aCandidate->GetWidth() )
return NULL; return NULL;
bool is_colinear = false; bool is_colinear = false;
...@@ -615,20 +615,20 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK* ...@@ -615,20 +615,20 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK*
// Trivial case: superimposed tracks ( tracks, not vias ): // Trivial case: superimposed tracks ( tracks, not vias ):
if( aTrackRef->Type() == PCB_TRACE_T && aCandidate->Type() == PCB_TRACE_T ) if( aTrackRef->Type() == PCB_TRACE_T && aCandidate->Type() == PCB_TRACE_T )
{ {
if( ( aTrackRef->m_Start == aCandidate->m_Start ) && if( ( aTrackRef->GetStart() == aCandidate->GetStart() ) &&
( aTrackRef->m_End == aCandidate->m_End ) ) ( aTrackRef->GetEnd() == aCandidate->GetEnd() ) )
return aCandidate; return aCandidate;
if( ( aTrackRef->m_Start == aCandidate->m_End ) && if( ( aTrackRef->GetStart() == aCandidate->GetEnd() ) &&
( aTrackRef->m_End == aCandidate->m_Start ) ) ( aTrackRef->GetEnd() == aCandidate->GetStart() ) )
return aCandidate; return aCandidate;
} }
int refdx = aTrackRef->m_End.x - aTrackRef->m_Start.x; int refdx = aTrackRef->GetEnd().x - aTrackRef->GetStart().x;
int refdy = aTrackRef->m_End.y - aTrackRef->m_Start.y; int refdy = aTrackRef->GetEnd().y - aTrackRef->GetStart().y;
int segmdx = aCandidate->m_End.x - aCandidate->m_Start.x; int segmdx = aCandidate->GetEnd().x - aCandidate->GetStart().x;
int segmdy = aCandidate->m_End.y - aCandidate->m_Start.y; int segmdy = aCandidate->GetEnd().y - aCandidate->GetStart().y;
// test for vertical alignment (easy to handle) // test for vertical alignment (easy to handle)
if( refdx == 0 ) if( refdx == 0 )
...@@ -673,16 +673,16 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK* ...@@ -673,16 +673,16 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK*
/* change the common point coordinate of pt_segm to use the other point /* change the common point coordinate of pt_segm to use the other point
* of pt_segm (pt_segm will be removed later) */ * of pt_segm (pt_segm will be removed later) */
if( aTrackRef->m_Start == aCandidate->m_Start ) if( aTrackRef->GetStart() == aCandidate->GetStart() )
{ {
aTrackRef->m_Start = aCandidate->m_End; aTrackRef->SetStart( aCandidate->GetEnd());
aTrackRef->start = aCandidate->end; aTrackRef->start = aCandidate->end;
aTrackRef->SetState( START_ON_PAD, aCandidate->GetState( END_ON_PAD) ); aTrackRef->SetState( START_ON_PAD, aCandidate->GetState( END_ON_PAD) );
return aCandidate; return aCandidate;
} }
else else
{ {
aTrackRef->m_Start = aCandidate->m_Start; aTrackRef->SetStart( aCandidate->GetStart() );
aTrackRef->start = aCandidate->start; aTrackRef->start = aCandidate->start;
aTrackRef->SetState( START_ON_PAD, aCandidate->GetState( START_ON_PAD) ); aTrackRef->SetState( START_ON_PAD, aCandidate->GetState( START_ON_PAD) );
return aCandidate; return aCandidate;
...@@ -696,16 +696,16 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK* ...@@ -696,16 +696,16 @@ TRACK* TRACKS_CLEANER::mergeCollinearSegmentIfPossible( TRACK* aTrackRef, TRACK*
/* change the common point coordinate of pt_segm to use the other point /* change the common point coordinate of pt_segm to use the other point
* of pt_segm (pt_segm will be removed later) */ * of pt_segm (pt_segm will be removed later) */
if( aTrackRef->m_End == aCandidate->m_Start ) if( aTrackRef->GetEnd() == aCandidate->GetStart() )
{ {
aTrackRef->m_End = aCandidate->m_End; aTrackRef->SetEnd( aCandidate->GetEnd() );
aTrackRef->end = aCandidate->end; aTrackRef->end = aCandidate->end;
aTrackRef->SetState( END_ON_PAD, aCandidate->GetState( END_ON_PAD) ); aTrackRef->SetState( END_ON_PAD, aCandidate->GetState( END_ON_PAD) );
return aCandidate; return aCandidate;
} }
else else
{ {
aTrackRef->m_End = aCandidate->m_Start; aTrackRef->SetEnd( aCandidate->GetStart() );
aTrackRef->end = aCandidate->start; aTrackRef->end = aCandidate->start;
aTrackRef->SetState( END_ON_PAD, aCandidate->GetState( START_ON_PAD) ); aTrackRef->SetState( END_ON_PAD, aCandidate->GetState( START_ON_PAD) );
return aCandidate; return aCandidate;
......
...@@ -264,11 +264,11 @@ void CONNECTIONS::BuildTracksCandidatesList( TRACK * aBegin, TRACK * aEnd) ...@@ -264,11 +264,11 @@ void CONNECTIONS::BuildTracksCandidatesList( TRACK * aBegin, TRACK * aEnd)
m_candidates.reserve( ii ); m_candidates.reserve( ii );
for( TRACK* track = aBegin; track; track = track->Next() ) for( TRACK* track = aBegin; track; track = track->Next() )
{ {
CONNECTED_POINT candidate( track, track->m_Start); CONNECTED_POINT candidate( track, track->GetStart());
m_candidates.push_back( candidate ); m_candidates.push_back( candidate );
if( track->Type() != PCB_VIA_T ) if( track->Type() != PCB_VIA_T )
{ {
CONNECTED_POINT candidate2( track, track->m_End); CONNECTED_POINT candidate2( track, track->GetEnd());
m_candidates.push_back( candidate2 ); m_candidates.push_back( candidate2 );
} }
...@@ -304,7 +304,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -304,7 +304,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
int dist_max = aTrack->GetWidth() / 2; int dist_max = aTrack->GetWidth() / 2;
static std::vector<CONNECTED_POINT*> tracks_candidates; static std::vector<CONNECTED_POINT*> tracks_candidates;
#endif #endif
wxPoint position = aTrack->m_Start; wxPoint position = aTrack->GetStart();
for( int kk = 0; kk < 2; kk++ ) for( int kk = 0; kk < 2; kk++ )
{ {
#ifndef USE_EXTENDED_SEARCH #ifndef USE_EXTENDED_SEARCH
...@@ -361,7 +361,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack ) ...@@ -361,7 +361,7 @@ int CONNECTIONS::SearchConnectedTracks( const TRACK * aTrack )
if( aTrack->Type() == PCB_VIA_T ) if( aTrack->Type() == PCB_VIA_T )
break; break;
position = aTrack->m_End; position = aTrack->GetEnd();
} }
return count; return count;
......
...@@ -176,7 +176,7 @@ void EraseDragList(); ...@@ -176,7 +176,7 @@ void EraseDragList();
* @param aNetCode = the net code to consider * @param aNetCode = the net code to consider
* @param aMaxDist = max distance from aRefPos to a track end candidate to collect the track * @param aMaxDist = max distance from aRefPos to a track end candidate to collect the track
*/ */
void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask, void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask,
int aNetCode, int aMaxDist ); int aNetCode, int aMaxDist );
/* Add aTrack to the drag list /* Add aTrack to the drag list
......
...@@ -51,8 +51,8 @@ std::vector<DRAG_SEGM_PICKER> g_DragSegmentList; ...@@ -51,8 +51,8 @@ std::vector<DRAG_SEGM_PICKER> g_DragSegmentList;
DRAG_SEGM_PICKER::DRAG_SEGM_PICKER( TRACK* aTrack ) DRAG_SEGM_PICKER::DRAG_SEGM_PICKER( TRACK* aTrack )
{ {
m_Track = aTrack; m_Track = aTrack;
m_startInitialValue = m_Track->m_Start; m_startInitialValue = m_Track->GetStart();
m_endInitialValue = m_Track->m_End; m_endInitialValue = m_Track->GetEnd();
m_Pad_Start = m_Track->GetState( START_ON_PAD ) ? (D_PAD*)m_Track->start : NULL; m_Pad_Start = m_Track->GetState( START_ON_PAD ) ? (D_PAD*)m_Track->start : NULL;
m_Pad_End = m_Track->GetState( END_ON_PAD ) ? (D_PAD*)m_Track->end : NULL; m_Pad_End = m_Track->GetState( END_ON_PAD ) ? (D_PAD*)m_Track->end : NULL;
m_Flag = 0; m_Flag = 0;
...@@ -133,7 +133,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset) ...@@ -133,7 +133,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
if( flip ) if( flip )
NEGATE( padoffset.y ); NEGATE( padoffset.y );
m_Track->m_Start = m_Pad_Start->GetPosition() - aOffset + padoffset; m_Track->SetStart( m_Pad_Start->GetPosition() - aOffset + padoffset );
} }
if( m_Pad_End ) if( m_Pad_End )
...@@ -146,7 +146,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset) ...@@ -146,7 +146,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
if( flip ) if( flip )
NEGATE( padoffset.y ); NEGATE( padoffset.y );
m_Track->m_End = m_Pad_End->GetPosition() - aOffset + padoffset; m_Track->SetEnd( m_Pad_End->GetPosition() - aOffset + padoffset );
} }
} }
...@@ -349,7 +349,7 @@ void AddSegmentToDragList( int flag, TRACK* aTrack ) ...@@ -349,7 +349,7 @@ void AddSegmentToDragList( int flag, TRACK* aTrack )
* aNetCode = the net code to consider * aNetCode = the net code to consider
* aMaxDist = max distance from aRefPos to a track end candidate to collect the track * aMaxDist = max distance from aRefPos to a track end candidate to collect the track
*/ */
void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask, void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask,
int aNetCode, int aMaxDist ) int aNetCode, int aMaxDist )
{ {
TRACK* track = aPcb->m_Track->GetStartNetCode( aNetCode ); TRACK* track = aPcb->m_Track->GetStartNetCode( aNetCode );
...@@ -370,7 +370,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask, ...@@ -370,7 +370,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask,
if( (track->GetFlags() & STARTPOINT) == 0 ) if( (track->GetFlags() & STARTPOINT) == 0 )
{ {
wxPoint delta = track->m_Start - aRefPos; wxPoint delta = track->GetStart() - aRefPos;
if( std::abs( delta.x ) <= maxdist && std::abs( delta.y ) <= maxdist ) if( std::abs( delta.x ) <= maxdist && std::abs( delta.y ) <= maxdist )
{ {
int dist = (int) hypot( (double) delta.x, (double) delta.y ); int dist = (int) hypot( (double) delta.x, (double) delta.y );
...@@ -385,7 +385,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask, ...@@ -385,7 +385,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, wxPoint& aRefPos, int aLayerMask,
if( (track->GetFlags() & ENDPOINT) == 0 ) if( (track->GetFlags() & ENDPOINT) == 0 )
{ {
wxPoint delta = track->m_End - aRefPos; wxPoint delta = track->GetEnd() - aRefPos;
if( std::abs( delta.x ) <= maxdist && std::abs( delta.y ) <= maxdist ) if( std::abs( delta.x ) <= maxdist && std::abs( delta.y ) <= maxdist )
{ {
int dist = (int) hypot( (double) delta.x, (double) delta.y ); int dist = (int) hypot( (double) delta.x, (double) delta.y );
......
...@@ -165,9 +165,9 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -165,9 +165,9 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
/* In order to make some calculations more easier or faster, /* In order to make some calculations more easier or faster,
* pads and tracks coordinates will be made relative to the reference segment origin * pads and tracks coordinates will be made relative to the reference segment origin
*/ */
wxPoint origin = aRefSeg->m_Start; // origin will be the origin of other coordinates wxPoint origin = aRefSeg->GetStart(); // origin will be the origin of other coordinates
m_segmEnd = delta = aRefSeg->m_End - origin; m_segmEnd = delta = aRefSeg->GetEnd() - origin;
m_segmAngle = 0; m_segmAngle = 0;
layerMask = aRefSeg->ReturnMaskLayer(); layerMask = aRefSeg->ReturnMaskLayer();
...@@ -179,7 +179,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -179,7 +179,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
// test if the via size is smaller than minimum // test if the via size is smaller than minimum
if( aRefSeg->GetShape() == VIA_MICROVIA ) if( aRefSeg->GetShape() == VIA_MICROVIA )
{ {
if( aRefSeg->m_Width < netclass->GetuViaMinDiameter() ) if( aRefSeg->GetWidth() < netclass->GetuViaMinDiameter() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_MICROVIA, m_currentMarker ); DRCE_TOO_SMALL_MICROVIA, m_currentMarker );
...@@ -188,7 +188,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -188,7 +188,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
} }
else else
{ {
if( aRefSeg->m_Width < netclass->GetViaMinDiameter() ) if( aRefSeg->GetWidth() < netclass->GetViaMinDiameter() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_VIA, m_currentMarker ); DRCE_TOO_SMALL_VIA, m_currentMarker );
...@@ -199,7 +199,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -199,7 +199,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
// test if via's hole is bigger than its diameter // test if via's hole is bigger than its diameter
// This test is necessary since the via hole size and width can be modified // This test is necessary since the via hole size and width can be modified
// and a default via hole can be bigger than some vias sizes // and a default via hole can be bigger than some vias sizes
if( aRefSeg->GetDrillValue() > aRefSeg->m_Width ) if( aRefSeg->GetDrillValue() > aRefSeg->GetWidth() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_VIA_HOLE_BIGGER, m_currentMarker ); DRCE_VIA_HOLE_BIGGER, m_currentMarker );
...@@ -237,7 +237,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -237,7 +237,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
} }
else // This is a track segment else // This is a track segment
{ {
if( aRefSeg->m_Width < netclass->GetTrackMinWidth() ) if( aRefSeg->GetWidth() < netclass->GetTrackMinWidth() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_TRACK_WIDTH, m_currentMarker ); DRCE_TOO_SMALL_TRACK_WIDTH, m_currentMarker );
...@@ -303,7 +303,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -303,7 +303,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
m_padToTestPos = dummypad.GetPosition() - origin; m_padToTestPos = dummypad.GetPosition() - origin;
if( !checkClearanceSegmToPad( &dummypad, aRefSeg->m_Width, if( !checkClearanceSegmToPad( &dummypad, aRefSeg->GetWidth(),
netclass->GetClearance() ) ) netclass->GetClearance() ) )
{ {
m_currentMarker = fillMarker( aRefSeg, pad, m_currentMarker = fillMarker( aRefSeg, pad,
...@@ -324,7 +324,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -324,7 +324,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
shape_pos = pad->ReturnShapePos(); shape_pos = pad->ReturnShapePos();
m_padToTestPos = shape_pos - origin; m_padToTestPos = shape_pos - origin;
if( !checkClearanceSegmToPad( pad, aRefSeg->m_Width, aRefSeg->GetClearance( pad ) ) ) if( !checkClearanceSegmToPad( pad, aRefSeg->GetWidth(), aRefSeg->GetClearance( pad ) ) )
{ {
m_currentMarker = fillMarker( aRefSeg, pad, m_currentMarker = fillMarker( aRefSeg, pad,
DRCE_TRACK_NEAR_PAD, m_currentMarker ); DRCE_TRACK_NEAR_PAD, m_currentMarker );
...@@ -355,15 +355,15 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -355,15 +355,15 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
// the minimum distance = clearance plus half the reference track // the minimum distance = clearance plus half the reference track
// width plus half the other track's width // width plus half the other track's width
int w_dist = aRefSeg->GetClearance( track ); int w_dist = aRefSeg->GetClearance( track );
w_dist += (aRefSeg->m_Width + track->m_Width) / 2; w_dist += (aRefSeg->GetWidth() + track->GetWidth()) / 2;
// If the reference segment is a via, we test it here // If the reference segment is a via, we test it here
if( aRefSeg->Type() == PCB_VIA_T ) if( aRefSeg->Type() == PCB_VIA_T )
{ {
int angle = 0; // angle du segment a tester; int angle = 0; // angle du segment a tester;
delta = track->m_End - track->m_Start; delta = track->GetEnd() - track->GetStart();
segStartPoint = aRefSeg->m_Start - track->m_Start; segStartPoint = aRefSeg->GetStart() - track->GetStart();
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
{ {
...@@ -399,8 +399,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -399,8 +399,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
* the segment to test in the new axis : the new X axis is the * the segment to test in the new axis : the new X axis is the
* reference segment. We must translate and rotate the segment to test * reference segment. We must translate and rotate the segment to test
*/ */
segStartPoint = track->m_Start - origin; segStartPoint = track->GetStart() - origin;
segEndPoint = track->m_End - origin; segEndPoint = track->GetEnd() - origin;
RotatePoint( &segStartPoint, m_segmAngle ); RotatePoint( &segStartPoint, m_segmAngle );
RotatePoint( &segEndPoint, m_segmAngle ); RotatePoint( &segEndPoint, m_segmAngle );
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
...@@ -529,8 +529,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -529,8 +529,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
else // The drc error is due to the starting or the ending point of the reference segment else // The drc error is due to the starting or the ending point of the reference segment
{ {
// Test the starting and the ending point // Test the starting and the ending point
segStartPoint = track->m_Start; segStartPoint = track->GetStart();
segEndPoint = track->m_End; segEndPoint = track->GetEnd();
delta = segEndPoint - segStartPoint; delta = segEndPoint - segStartPoint;
/* Compute the segment orientation (angle) en 0,1 degre */ /* Compute the segment orientation (angle) en 0,1 degre */
...@@ -542,8 +542,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -542,8 +542,8 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
/* Comute the reference segment coordinates relatives to a /* Comute the reference segment coordinates relatives to a
* X axis = current tested segment * X axis = current tested segment
*/ */
wxPoint relStartPos = aRefSeg->m_Start - segStartPoint; wxPoint relStartPos = aRefSeg->GetStart() - segStartPoint;
wxPoint relEndPos = aRefSeg->m_End - segStartPoint; wxPoint relEndPos = aRefSeg->GetEnd() - segStartPoint;
RotatePoint( &relStartPos, angle ); RotatePoint( &relStartPos, angle );
RotatePoint( &relEndPos, angle ); RotatePoint( &relEndPos, angle );
......
...@@ -70,17 +70,17 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, M ...@@ -70,17 +70,17 @@ MARKER_PCB* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, M
posB = track->GetPosition(); posB = track->GetPosition();
wxPoint endPos = track->m_End; wxPoint endPos = track->GetEnd();
// either of aItem's start or end will be used for the marker position // either of aItem's start or end will be used for the marker position
// first assume start, then switch at end if needed. decision made on // first assume start, then switch at end if needed. decision made on
// distance from end of aTrack. // distance from end of aTrack.
position = track->m_Start; position = track->GetStart();
double dToEnd = hypot( endPos.x - aTrack->m_End.x, double dToEnd = hypot( endPos.x - aTrack->GetEnd().x,
endPos.y - aTrack->m_End.y ); endPos.y - aTrack->GetEnd().y );
double dToStart = hypot( position.x - aTrack->m_End.x, double dToStart = hypot( position.x - aTrack->GetEnd().x,
position.y - aTrack->m_End.y ); position.y - aTrack->GetEnd().y );
if( dToEnd < dToStart ) if( dToEnd < dToStart )
position = endPos; position = endPos;
......
...@@ -38,7 +38,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem, ...@@ -38,7 +38,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem,
if( aUseNetclassValue ) if( aUseNetclassValue )
net = GetBoard()->FindNet( aTrackItem->GetNet() ); net = GetBoard()->FindNet( aTrackItem->GetNet() );
initial_width = aTrackItem->m_Width; initial_width = aTrackItem->GetWidth();
if( net ) if( net )
new_width = net->GetTrackWidth(); new_width = net->GetTrackWidth();
...@@ -60,7 +60,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem, ...@@ -60,7 +60,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem,
new_drill = GetBoard()->GetCurrentViaDrill(); new_drill = GetBoard()->GetCurrentViaDrill();
} }
if( aTrackItem->m_Shape == VIA_MICROVIA ) if( aTrackItem->GetShape() == VIA_MICROVIA )
{ {
if( net ) if( net )
new_width = net->GetViaSize(); new_width = net->GetViaSize();
...@@ -69,7 +69,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem, ...@@ -69,7 +69,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem,
} }
} }
aTrackItem->m_Width = new_width; aTrackItem->SetWidth( new_width );
// make a DRC test because the new size is bigger than the old size // make a DRC test because the new size is bigger than the old size
if( initial_width < new_width ) if( initial_width < new_width )
...@@ -98,11 +98,11 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem, ...@@ -98,11 +98,11 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem,
if( aItemsListPicker ) if( aItemsListPicker )
{ {
aTrackItem->m_Width = initial_width; aTrackItem->SetWidth( initial_width );
ITEM_PICKER picker( aTrackItem, UR_CHANGED ); ITEM_PICKER picker( aTrackItem, UR_CHANGED );
picker.SetLink( aTrackItem->Clone() ); picker.SetLink( aTrackItem->Clone() );
aItemsListPicker->PushItem( picker ); aItemsListPicker->PushItem( picker );
aTrackItem->m_Width = new_width; aTrackItem->SetWidth( new_width );
if( aTrackItem->Type() == PCB_VIA_T ) if( aTrackItem->Type() == PCB_VIA_T )
{ {
...@@ -116,7 +116,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem, ...@@ -116,7 +116,7 @@ bool PCB_EDIT_FRAME::SetTrackSegmentWidth( TRACK* aTrackItem,
} }
else else
{ {
aTrackItem->m_Width = initial_width; aTrackItem->SetWidth( initial_width );
} }
return change_ok; return change_ok;
......
...@@ -62,13 +62,13 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) ...@@ -62,13 +62,13 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
} }
// Avoid more than one via on the current location: // Avoid more than one via on the current location:
if( GetBoard()->GetViaByPosition( g_CurrentTrackSegment->m_End, if( GetBoard()->GetViaByPosition( g_CurrentTrackSegment->GetEnd(),
g_CurrentTrackSegment->GetLayer() ) ) g_CurrentTrackSegment->GetLayer() ) )
return false; return false;
for( TRACK* segm = g_FirstTrackSegment; segm; segm = segm->Next() ) for( TRACK* segm = g_FirstTrackSegment; segm; segm = segm->Next() )
{ {
if( segm->Type() == PCB_VIA_T && g_CurrentTrackSegment->m_End == segm->m_Start ) if( segm->Type() == PCB_VIA_T && g_CurrentTrackSegment->GetEnd() == segm->GetStart() )
return false; return false;
} }
...@@ -98,10 +98,11 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) ...@@ -98,10 +98,11 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
// create the via // create the via
SEGVIA* via = new SEGVIA( GetBoard() ); SEGVIA* via = new SEGVIA( GetBoard() );
via->SetFlags( IS_NEW ); via->SetFlags( IS_NEW );
via->m_Shape = GetDesignSettings().m_CurrentViaType; via->SetShape( GetDesignSettings().m_CurrentViaType );
via->m_Width = GetBoard()->GetCurrentViaSize(); via->SetWidth( GetBoard()->GetCurrentViaSize());
via->SetNet( GetBoard()->GetHighLightNetCode() ); via->SetNet( GetBoard()->GetHighLightNetCode() );
via->m_Start = via->m_End = g_CurrentTrackSegment->m_End; via->SetEnd( g_CurrentTrackSegment->GetEnd() );
via->SetStart( g_CurrentTrackSegment->GetEnd() );
// Usual via is from copper to component. // Usual via is from copper to component.
// layer pair is LAYER_N_BACK and LAYER_N_FRONT. // layer pair is LAYER_N_BACK and LAYER_N_FRONT.
...@@ -140,7 +141,7 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) ...@@ -140,7 +141,7 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
via->SetLayerPair( first_layer, last_layer ); via->SetLayerPair( first_layer, last_layer );
{ {
NETINFO_ITEM* net = GetBoard()->FindNet( via->GetNet() ); NETINFO_ITEM* net = GetBoard()->FindNet( via->GetNet() );
via->m_Width = net->GetMicroViaSize(); via->SetWidth( net->GetMicroViaSize() );
} }
} }
break; break;
...@@ -198,7 +199,8 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC ) ...@@ -198,7 +199,8 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
/* the start point is the via position and the end point is the cursor /* the start point is the via position and the end point is the cursor
* which also is on the via (will change when moving mouse) * which also is on the via (will change when moving mouse)
*/ */
track->m_Start = track->m_End = via->m_Start; track->SetEnd( via->GetStart() );
track->SetStart( via->GetStart() );
g_CurrentTrackList.PushBack( track ); g_CurrentTrackList.PushBack( track );
......
...@@ -153,11 +153,11 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -153,11 +153,11 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
GetBoard()->SetHighLightNet( zone->GetNet() ); GetBoard()->SetHighLightNet( zone->GetNet() );
} }
D( g_CurrentTrackList.VerifyListIntegrity(); ); D( g_CurrentTrackList.VerifyListIntegrity() );
BuildAirWiresTargetsList( LockPoint, wxPoint( 0, 0 ), true ); BuildAirWiresTargetsList( LockPoint, wxPoint( 0, 0 ), true );
D( g_CurrentTrackList.VerifyListIntegrity(); ); D( g_CurrentTrackList.VerifyListIntegrity() );
GetBoard()->HighLightON(); GetBoard()->HighLightON();
GetBoard()->DrawHighLight( m_canvas, aDC, GetBoard()->GetHighLightNetCode() ); GetBoard()->DrawHighLight( m_canvas, aDC, GetBoard()->GetHighLightNetCode() );
...@@ -167,16 +167,16 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -167,16 +167,16 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
GetBoard()->SetCurrentNetClass( g_CurrentTrackSegment->GetNetClassName() ); GetBoard()->SetCurrentNetClass( g_CurrentTrackSegment->GetNetClassName() );
g_CurrentTrackSegment->SetLayer( GetScreen()->m_Active_Layer ); g_CurrentTrackSegment->SetLayer( GetScreen()->m_Active_Layer );
g_CurrentTrackSegment->m_Width = GetBoard()->GetCurrentTrackWidth(); g_CurrentTrackSegment->SetWidth( GetBoard()->GetCurrentTrackWidth() );
if( GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth ) if( GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth )
{ {
if( TrackOnStartPoint && TrackOnStartPoint->Type() == PCB_TRACE_T ) if( TrackOnStartPoint && TrackOnStartPoint->Type() == PCB_TRACE_T )
g_CurrentTrackSegment->m_Width = TrackOnStartPoint->m_Width; g_CurrentTrackSegment->SetWidth( TrackOnStartPoint->GetWidth());
} }
g_CurrentTrackSegment->m_Start = pos; g_CurrentTrackSegment->SetStart( pos );
g_CurrentTrackSegment->m_End = pos; g_CurrentTrackSegment->SetEnd( pos );
if( pad ) if( pad )
{ {
...@@ -275,12 +275,12 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -275,12 +275,12 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
D( g_CurrentTrackList.VerifyListIntegrity(); ); D( g_CurrentTrackList.VerifyListIntegrity(); );
newTrack->m_Start = newTrack->m_End; newTrack->SetStart( newTrack->GetEnd() );
newTrack->SetLayer( GetScreen()->m_Active_Layer ); newTrack->SetLayer( GetScreen()->m_Active_Layer );
if( !GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth ) if( !GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth )
newTrack->m_Width = GetBoard()->GetCurrentTrackWidth(); newTrack->SetWidth( GetBoard()->GetCurrentTrackWidth() );
D( g_CurrentTrackList.VerifyListIntegrity(); ); D( g_CurrentTrackList.VerifyListIntegrity(); );
...@@ -312,15 +312,15 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -312,15 +312,15 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
int segm_step_45 = KiROUND( GetScreen()->GetGridSize().x / 2 ); int segm_step_45 = KiROUND( GetScreen()->GetGridSize().x / 2 );
if( segm_step_45 < ( curTrack->m_Width * 2 ) ) if( segm_step_45 < ( curTrack->GetWidth() * 2 ) )
segm_step_45 = curTrack->m_Width * 2; segm_step_45 = curTrack->GetWidth() * 2;
// Test if the segments are horizontal or vertical. // Test if the segments are horizontal or vertical.
dx0 = prevTrack->m_End.x - prevTrack->m_Start.x; dx0 = prevTrack->GetEnd().x - prevTrack->GetStart().x;
dy0 = prevTrack->m_End.y - prevTrack->m_Start.y; dy0 = prevTrack->GetEnd().y - prevTrack->GetStart().y;
dx1 = curTrack->m_End.x - curTrack->m_Start.x; dx1 = curTrack->GetEnd().x - curTrack->GetStart().x;
dy1 = curTrack->m_End.y - curTrack->m_Start.y; dy1 = curTrack->GetEnd().y - curTrack->GetStart().y;
// Segments should have a min length. // Segments should have a min length.
if( std::max( abs( dx0 ), abs( dy0 ) ) < ( segm_step_45 * 2 ) ) if( std::max( abs( dx0 ), abs( dy0 ) ) < ( segm_step_45 * 2 ) )
...@@ -332,8 +332,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -332,8 +332,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
// Create a new segment and connect it with the previous 2 segments. // Create a new segment and connect it with the previous 2 segments.
TRACK* newTrack = (TRACK*)curTrack->Clone(); TRACK* newTrack = (TRACK*)curTrack->Clone();
newTrack->m_Start = prevTrack->m_End; newTrack->SetStart( prevTrack->GetEnd() );
newTrack->m_End = curTrack->m_Start; newTrack->SetEnd( curTrack->GetStart() );
if( dx0 == 0 ) // Previous segment is Vertical if( dx0 == 0 ) // Previous segment is Vertical
{ {
...@@ -348,14 +348,14 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -348,14 +348,14 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
* horizontal segment. * horizontal segment.
*/ */
if( dy0 > 0 ) if( dy0 > 0 )
newTrack->m_Start.y -= segm_step_45; newTrack->SetStart( wxPoint(newTrack->GetStart().x, newTrack->GetStart().y -segm_step_45) );
else else
newTrack->m_Start.y += segm_step_45; newTrack->SetStart( wxPoint(newTrack->GetStart().x, newTrack->GetStart().y + segm_step_45) );
if( dx1 > 0 ) if( dx1 > 0 )
newTrack->m_End.x += segm_step_45; newTrack->SetEnd( wxPoint(newTrack->GetEnd().x + segm_step_45, newTrack->GetEnd().y) );
else else
newTrack->m_End.x -= segm_step_45; newTrack->SetEnd( wxPoint(newTrack->GetEnd().x - segm_step_45, newTrack->GetEnd().y) );
if( Drc_On && BAD_DRC == m_drc->Drc( curTrack, GetBoard()->m_Track ) ) if( Drc_On && BAD_DRC == m_drc->Drc( curTrack, GetBoard()->m_Track ) )
{ {
...@@ -363,8 +363,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -363,8 +363,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
return false; return false;
} }
prevTrack->m_End = newTrack->m_Start; prevTrack->SetEnd( newTrack->GetStart());
curTrack->m_Start = newTrack->m_End; curTrack->SetStart( newTrack->GetEnd());
g_CurrentTrackList.Insert( newTrack, curTrack ); g_CurrentTrackList.Insert( newTrack, curTrack );
return true; return true;
...@@ -383,14 +383,14 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -383,14 +383,14 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
* (horizontal) and segment 2 (vertical) * (horizontal) and segment 2 (vertical)
*/ */
if( dx0 > 0 ) if( dx0 > 0 )
newTrack->m_Start.x -= segm_step_45; newTrack->SetStart( wxPoint(newTrack->GetStart().x - segm_step_45 , newTrack->GetStart().y));
else else
newTrack->m_Start.x += segm_step_45; newTrack->SetStart( wxPoint(newTrack->GetStart().x + segm_step_45, newTrack->GetStart().y) );
if( dy1 > 0 ) if( dy1 > 0 )
newTrack->m_End.y += segm_step_45; newTrack->SetEnd( wxPoint(newTrack->GetEnd().x, newTrack->GetEnd().y + segm_step_45) );
else else
newTrack->m_End.y -= segm_step_45; newTrack->SetEnd( wxPoint(newTrack->GetEnd().x, newTrack->GetEnd().y - segm_step_45) );
if( Drc_On && BAD_DRC==m_drc->Drc( newTrack, GetBoard()->m_Track ) ) if( Drc_On && BAD_DRC==m_drc->Drc( newTrack, GetBoard()->m_Track ) )
{ {
...@@ -398,8 +398,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC ) ...@@ -398,8 +398,8 @@ bool PCB_EDIT_FRAME::Add45DegreeSegment( wxDC* aDC )
return false; return false;
} }
prevTrack->m_End = newTrack->m_Start; prevTrack->SetEnd( newTrack->GetStart());
curTrack->m_Start = newTrack->m_End; curTrack->SetStart( newTrack->GetEnd());
g_CurrentTrackList.Insert( newTrack, curTrack ); g_CurrentTrackList.Insert( newTrack, curTrack );
return true; return true;
...@@ -420,7 +420,7 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -420,7 +420,7 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC )
return false; return false;
// Saving the coordinate of end point of the trace // Saving the coordinate of end point of the trace
wxPoint pos = g_CurrentTrackSegment->m_End; wxPoint pos = g_CurrentTrackSegment->GetEnd();
D( g_CurrentTrackList.VerifyListIntegrity(); ); D( g_CurrentTrackList.VerifyListIntegrity(); );
...@@ -460,9 +460,9 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -460,9 +460,9 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC )
// creates a lock point if not exists // creates a lock point if not exists
{ {
// Creates a lock point, if not already exists: // Creates a lock point, if not already exists:
LockPoint = GetBoard()->CreateLockPoint( g_CurrentTrackSegment->m_End, wxPoint hp = g_CurrentTrackSegment->GetEnd();
(TRACK*) LockPoint, LockPoint = GetBoard()->CreateLockPoint( hp, (TRACK*) LockPoint, &s_ItemsListPicker );
&s_ItemsListPicker ); g_CurrentTrackSegment->SetEnd(hp);
} }
} }
...@@ -538,7 +538,7 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC ) ...@@ -538,7 +538,7 @@ bool PCB_EDIT_FRAME::End_Route( TRACK* aTrack, wxDC* aDC )
TRACK* LocateIntrusion( TRACK* listStart, TRACK* aTrack, int aLayer, const wxPoint& aRef ) TRACK* LocateIntrusion( TRACK* listStart, TRACK* aTrack, int aLayer, const wxPoint& aRef )
{ {
int net = aTrack->GetNet(); int net = aTrack->GetNet();
int width = aTrack->m_Width; int width = aTrack->GetWidth();
TRACK* found = NULL; TRACK* found = NULL;
...@@ -556,16 +556,16 @@ TRACK* LocateIntrusion( TRACK* listStart, TRACK* aTrack, int aLayer, const wxPoi ...@@ -556,16 +556,16 @@ TRACK* LocateIntrusion( TRACK* listStart, TRACK* aTrack, int aLayer, const wxPoi
continue; continue;
// TRACK::HitTest // TRACK::HitTest
int dist = (width + track->m_Width) / 2 + aTrack->GetClearance( track ); int dist = (width + track->GetWidth()) / 2 + aTrack->GetClearance( track );
if( !TestSegmentHit( aRef, track->m_Start, track->m_End, dist ) ) if( !TestSegmentHit( aRef, track->GetStart(), track->GetEnd(), dist ) )
continue; continue;
found = track; found = track;
// prefer intrusions from the side, not the end // prefer intrusions from the side, not the end
wxPoint pos = aRef - track->m_Start; wxPoint pos = aRef - track->GetStart();
wxPoint vec = track->m_End - track->m_Start; wxPoint vec = track->GetEnd() - track->GetStart();
double tmp = (double) pos.x * vec.x + (double) pos.y * vec.y; double tmp = (double) pos.x * vec.x + (double) pos.y * vec.y;
if( tmp >= 0 && tmp <= (double) vec.x * vec.x + (double) vec.y * vec.y ) if( tmp >= 0 && tmp <= (double) vec.x * vec.x + (double) vec.y * vec.y )
...@@ -614,8 +614,8 @@ static void PushTrack( EDA_DRAW_PANEL* panel ) ...@@ -614,8 +614,8 @@ static void PushTrack( EDA_DRAW_PANEL* panel )
if( other->GetNet() == track->GetNet() ) if( other->GetNet() == track->GetNet() )
return; return;
cv = cursor - other->m_Start; cv = cursor - other->GetStart();
vec = other->m_End - other->m_Start; vec = other->GetEnd() - other->GetStart();
det = (double) cv.x * vec.y - (double) cv.y * vec.x; det = (double) cv.x * vec.y - (double) cv.y * vec.x;
...@@ -623,7 +623,7 @@ static void PushTrack( EDA_DRAW_PANEL* panel ) ...@@ -623,7 +623,7 @@ static void PushTrack( EDA_DRAW_PANEL* panel )
if( !det ) if( !det )
return; return;
dist = (track->m_Width + 1) / 2 + (other->m_Width + 1) / 2 + track->GetClearance( other ) + 2; dist = (track->GetWidth() + 1) / 2 + (other->GetWidth() + 1) / 2 + track->GetClearance( other ) + 2;
/* /*
* DRC wants >, so +1. * DRC wants >, so +1.
...@@ -646,8 +646,9 @@ static void PushTrack( EDA_DRAW_PANEL* panel ) ...@@ -646,8 +646,9 @@ static void PushTrack( EDA_DRAW_PANEL* panel )
n.x = KiROUND( f * n.x ); n.x = KiROUND( f * n.x );
n.y = KiROUND( f * n.y ); n.y = KiROUND( f * n.y );
Project( &track->m_End, cursor, other ); wxPoint hp = track->GetEnd();
track->m_End += n; Project( &hp, cursor, other );
track->SetEnd( hp + n );
} }
...@@ -702,7 +703,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -702,7 +703,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
if( showTrackClearanceMode >= SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) if( showTrackClearanceMode >= SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS )
{ {
EDA_COLOR_T color = g_ColorsSettings.GetLayerColor( g_CurrentTrackSegment->GetLayer() ); EDA_COLOR_T color = g_ColorsSettings.GetLayerColor( g_CurrentTrackSegment->GetLayer() );
DrawViaCirclesWhenEditingNewTrack( panelClipBox, aDC, g_CurrentTrackSegment->m_End, DrawViaCirclesWhenEditingNewTrack( panelClipBox, aDC, g_CurrentTrackSegment->GetEnd(),
boardViaRadius, viaRadiusWithClearence, color); boardViaRadius, viaRadiusWithClearence, color);
} }
} }
...@@ -715,7 +716,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -715,7 +716,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
g_CurrentTrackSegment->SetLayer( screen->m_Active_Layer ); g_CurrentTrackSegment->SetLayer( screen->m_Active_Layer );
if( !frame->GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth ) if( !frame->GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth )
g_CurrentTrackSegment->m_Width = frame->GetBoard()->GetCurrentTrackWidth(); g_CurrentTrackSegment->SetWidth( frame->GetBoard()->GetCurrentTrackWidth() );
if( g_TwoSegmentTrackBuild ) if( g_TwoSegmentTrackBuild )
{ {
...@@ -726,7 +727,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -726,7 +727,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
previous_track->SetLayer( screen->m_Active_Layer ); previous_track->SetLayer( screen->m_Active_Layer );
if( !frame->GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth ) if( !frame->GetBoard()->GetDesignSettings().m_UseConnectedTrackWidth )
previous_track->m_Width = frame->GetBoard()->GetCurrentTrackWidth(); previous_track->SetWidth( frame->GetBoard()->GetCurrentTrackWidth() );
} }
} }
...@@ -734,30 +735,32 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -734,30 +735,32 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
{ {
if( g_TwoSegmentTrackBuild ) if( g_TwoSegmentTrackBuild )
{ {
g_CurrentTrackSegment->m_End = screen->GetCrossHairPosition(); g_CurrentTrackSegment->SetEnd( screen->GetCrossHairPosition() );
if( Drc_On ) if( Drc_On )
PushTrack( aPanel ); PushTrack( aPanel );
ComputeBreakPoint( g_CurrentTrackSegment, ComputeBreakPoint( g_CurrentTrackSegment,
g_CurrentTrackList.GetCount(), g_CurrentTrackList.GetCount(),
g_CurrentTrackSegment->m_End ); g_CurrentTrackSegment->GetEnd() );
} }
else else
{ {
/* Calculate of the end of the path for the permitted directions: /* Calculate of the end of the path for the permitted directions:
* horizontal, vertical or 45 degrees. * horizontal, vertical or 45 degrees.
*/ */
wxPoint hp = g_CurrentTrackSegment->GetEnd();
CalculateSegmentEndPoint( screen->GetCrossHairPosition(), CalculateSegmentEndPoint( screen->GetCrossHairPosition(),
g_CurrentTrackSegment->m_Start.x, g_CurrentTrackSegment->GetStart().x,
g_CurrentTrackSegment->m_Start.y, g_CurrentTrackSegment->GetStart().y,
&g_CurrentTrackSegment->m_End.x, &hp.x,
&g_CurrentTrackSegment->m_End.y ); &hp.y );
g_CurrentTrackSegment->SetEnd(hp);
} }
} }
else // Here the angle is arbitrary else // Here the angle is arbitrary
{ {
g_CurrentTrackSegment->m_End = screen->GetCrossHairPosition(); g_CurrentTrackSegment->SetEnd( screen->GetCrossHairPosition() );
} }
// Redraw the new track // Redraw the new track
...@@ -769,7 +772,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -769,7 +772,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
EDA_COLOR_T color = g_ColorsSettings.GetLayerColor(g_CurrentTrackSegment->GetLayer()); EDA_COLOR_T color = g_ColorsSettings.GetLayerColor(g_CurrentTrackSegment->GetLayer());
//Via diameter must have taken what we are using, rather than netclass value. //Via diameter must have taken what we are using, rather than netclass value.
DrawViaCirclesWhenEditingNewTrack( panelClipBox, aDC, g_CurrentTrackSegment->m_End, DrawViaCirclesWhenEditingNewTrack( panelClipBox, aDC, g_CurrentTrackSegment->GetEnd(),
boardViaRadius, viaRadiusWithClearence, color); boardViaRadius, viaRadiusWithClearence, color);
} }
...@@ -821,7 +824,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo ...@@ -821,7 +824,7 @@ void ShowNewTrackWhenMovingCursor( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPo
DisplayOpt.ShowTrackClearanceMode = showTrackClearanceMode; DisplayOpt.ShowTrackClearanceMode = showTrackClearanceMode;
DisplayOpt.DisplayPcbTrackFill = Track_fill_copy; DisplayOpt.DisplayPcbTrackFill = Track_fill_copy;
frame->BuildAirWiresTargetsList( NULL, g_CurrentTrackSegment->m_End, false ); frame->BuildAirWiresTargetsList( NULL, g_CurrentTrackSegment->GetEnd(), false );
frame->TraceAirWiresToTargets( aDC ); frame->TraceAirWiresToTargets( aDC );
} }
...@@ -908,8 +911,8 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end ) ...@@ -908,8 +911,8 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end )
if( track ) if( track )
{ {
iDx = end.x - track->m_Start.x; iDx = end.x - track->GetStart().x;
iDy = end.y - track->m_Start.y; iDy = end.y - track->GetStart().y;
iDx = abs( iDx ); iDx = abs( iDx );
iDy = abs( iDy ); iDy = abs( iDy );
...@@ -919,8 +922,8 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end ) ...@@ -919,8 +922,8 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end )
if( lastTrack ) if( lastTrack )
{ {
if(( (lastTrack->m_End.x == lastTrack->m_Start.x) if(( (lastTrack->GetEnd().x == lastTrack->GetStart().x)
|| (lastTrack->m_End.y == lastTrack->m_Start.y) ) || (lastTrack->GetEnd().y == lastTrack->GetStart().y) )
&& !g_Alternate_Track_Posture) && !g_Alternate_Track_Posture)
{ {
iAngle = 45; iAngle = 45;
...@@ -951,12 +954,10 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end ) ...@@ -951,12 +954,10 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end )
break; break;
case 0: case 0:
if( ( end.x - track->m_Start.x ) < 0 ) if( ( end.x - track->GetStart().x ) < 0 )
track->m_End.x = end.x + iDy; track->SetEnd(wxPoint( end.x + iDy, track->GetStart().y));
else else
track->m_End.x = end.x - iDy; track->SetEnd(wxPoint( end.x - iDy, track->GetStart().y));
track->m_End.y = track->m_Start.y;
break; break;
case 45: case 45:
...@@ -964,35 +965,32 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end ) ...@@ -964,35 +965,32 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end )
iDy = iDx; iDy = iDx;
// Recalculate the signs for deltax and deltaY. // Recalculate the signs for deltax and deltaY.
if( ( end.x - track->m_Start.x ) < 0 ) if( ( end.x - track->GetStart().x ) < 0 )
iDx = -iDx; iDx = -iDx;
if( ( end.y - track->m_Start.y ) < 0 ) if( ( end.y - track->GetStart().y ) < 0 )
iDy = -iDy; iDy = -iDy;
track->m_End.x = track->m_Start.x + iDx; track->SetEnd(wxPoint(track->GetStart().x + iDx, track->GetStart().y + iDy));
track->m_End.y = track->m_Start.y + iDy;
break; break;
case 90: case 90:
if( ( end.y - track->m_Start.y ) < 0 ) if( ( end.y - track->GetStart().y ) < 0 )
track->m_End.y = end.y + iDx; track->SetEnd(wxPoint(track->GetStart().x , end.y + iDx));
else else
track->m_End.y = end.y - iDx; track->SetEnd(wxPoint(track->GetStart().x , end.y - iDx));
track->m_End.x = track->m_Start.x;
break; break;
} }
if( track ) if( track )
{ {
if( track->IsNull() ) if( track->IsNull() )
track->m_End = end; track->SetEnd( end );
newTrack->m_Start = track->m_End; newTrack->SetStart( track->GetEnd() );
} }
newTrack->m_End = end; newTrack->SetEnd( end );
} }
...@@ -1081,7 +1079,7 @@ void DeleteNullTrackSegments( BOARD* pcb, DLIST<TRACK>& aTrackList ) ...@@ -1081,7 +1079,7 @@ void DeleteNullTrackSegments( BOARD* pcb, DLIST<TRACK>& aTrackList )
*/ */
void EnsureEndTrackOnPad( D_PAD* aPad ) void EnsureEndTrackOnPad( D_PAD* aPad )
{ {
if( g_CurrentTrackSegment->m_End == aPad->GetPosition() ) // Ok ! if( g_CurrentTrackSegment->GetEnd() == aPad->GetPosition() ) // Ok !
{ {
g_CurrentTrackSegment->end = aPad; g_CurrentTrackSegment->end = aPad;
g_CurrentTrackSegment->SetState( END_ONPAD, ON ); g_CurrentTrackSegment->SetState( END_ONPAD, ON );
...@@ -1098,7 +1096,7 @@ void EnsureEndTrackOnPad( D_PAD* aPad ) ...@@ -1098,7 +1096,7 @@ void EnsureEndTrackOnPad( D_PAD* aPad )
lasttrack->end = g_CurrentTrackSegment; lasttrack->end = g_CurrentTrackSegment;
} }
g_CurrentTrackSegment->m_End = aPad->GetPosition(); g_CurrentTrackSegment->SetEnd( aPad->GetPosition() );
g_CurrentTrackSegment->SetState( END_ONPAD, OFF ); g_CurrentTrackSegment->SetState( END_ONPAD, OFF );
g_CurrentTrackSegment->end = aPad; g_CurrentTrackSegment->end = aPad;
......
...@@ -111,9 +111,12 @@ void PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event( wxCommandEvent& event ) ...@@ -111,9 +111,12 @@ void PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event( wxCommandEvent& event )
// Refresh track in progress, if any, by forcing a mouse event, // Refresh track in progress, if any, by forcing a mouse event,
// to call the current function attached to the mouse // to call the current function attached to the mouse
if( m_canvas->IsMouseCaptured() ) /*if( m_canvas->IsMouseCaptured() )
{ {
wxMouseEvent event(wxEVT_MOTION); wxMouseEvent event(wxEVT_MOTION);
wxPostEvent( m_canvas, event ); wxPostEvent( m_canvas, event );
} }*/
//+hp
//Refresh canvas, that we can see changes instantly. I use this because it dont,t throw mouse up-left corner.
m_canvas->Refresh();
} }
...@@ -225,8 +225,8 @@ static int ViaSort( const void* aRefptr, const void* aObjptr ) ...@@ -225,8 +225,8 @@ static int ViaSort( const void* aRefptr, const void* aObjptr )
TRACK* padref = *(TRACK**) aRefptr; TRACK* padref = *(TRACK**) aRefptr;
TRACK* padcmp = *(TRACK**) aObjptr; TRACK* padcmp = *(TRACK**) aObjptr;
if( padref->m_Width != padcmp->m_Width ) if( padref->GetWidth() != padcmp->GetWidth() )
return padref->m_Width - padcmp->m_Width; return padref->GetWidth() - padcmp->GetWidth();
if( padref->GetDrillValue() != padcmp->GetDrillValue() ) if( padref->GetDrillValue() != padcmp->GetDrillValue() )
return padref->GetDrillValue() - padcmp->GetDrillValue(); return padref->GetDrillValue() - padcmp->GetDrillValue();
...@@ -292,10 +292,10 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -292,10 +292,10 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
old_via = via; old_via = via;
viastacks.push_back( via ); viastacks.push_back( via );
fprintf( aFile, "PAD V%d.%d.%X ROUND %g\nCIRCLE 0 0 %g\n", fprintf( aFile, "PAD V%d.%d.%X ROUND %g\nCIRCLE 0 0 %g\n",
via->m_Width, via->GetDrillValue(), via->GetWidth(), via->GetDrillValue(),
via->ReturnMaskLayer(), via->ReturnMaskLayer(),
via->GetDrillValue() / SCALE_FACTOR, via->GetDrillValue() / SCALE_FACTOR,
via->m_Width / (SCALE_FACTOR * 2) ); via->GetWidth() / (SCALE_FACTOR * 2) );
} }
// Emit component pads // Emit component pads
...@@ -436,7 +436,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -436,7 +436,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
TRACK* via = viastacks[i]; TRACK* via = viastacks[i];
unsigned mask = via->ReturnMaskLayer() & master_layermask; unsigned mask = via->ReturnMaskLayer() & master_layermask;
fprintf( aFile, "PADSTACK VIA%d.%d.%X %g\n", fprintf( aFile, "PADSTACK VIA%d.%d.%X %g\n",
via->m_Width, via->GetDrillValue(), mask, via->GetWidth(), via->GetDrillValue(), mask,
via->GetDrillValue() / SCALE_FACTOR ); via->GetDrillValue() / SCALE_FACTOR );
for( int layer = 0; layer < 32; layer++ ) for( int layer = 0; layer < 32; layer++ )
...@@ -444,7 +444,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb ) ...@@ -444,7 +444,7 @@ static void CreatePadsShapesSection( FILE* aFile, BOARD* aPcb )
if( mask & (1 << layer) ) if( mask & (1 << layer) )
{ {
fprintf( aFile, "PAD V%d.%d.%X %s 0 0\n", fprintf( aFile, "PAD V%d.%d.%X %s 0 0\n",
via->m_Width, via->GetDrillValue(), via->GetWidth(), via->GetDrillValue(),
mask, mask,
TO_UTF8( GenCADLayerName[layer] ) ); TO_UTF8( GenCADLayerName[layer] ) );
} }
...@@ -736,7 +736,7 @@ static int TrackListSortByNetcode( const void* refptr, const void* objptr ) ...@@ -736,7 +736,7 @@ static int TrackListSortByNetcode( const void* refptr, const void* objptr )
if( ( diff = ref->GetNet() - cmp->GetNet() ) ) if( ( diff = ref->GetNet() - cmp->GetNet() ) )
return diff; return diff;
if( ( diff = ref->m_Width - cmp->m_Width ) ) if( ( diff = ref->GetWidth() - cmp->GetWidth() ) )
return diff; return diff;
if( ( diff = ref->GetLayer() - cmp->GetLayer() ) ) if( ( diff = ref->GetLayer() - cmp->GetLayer() ) )
...@@ -814,10 +814,10 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb ) ...@@ -814,10 +814,10 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb )
fprintf( aFile, "ROUTE %s\n", TO_UTF8( netname ) ); fprintf( aFile, "ROUTE %s\n", TO_UTF8( netname ) );
} }
if( old_width != track->m_Width ) if( old_width != track->GetWidth() )
{ {
old_width = track->m_Width; old_width = track->GetWidth();
fprintf( aFile, "TRACK TRACK%d\n", track->m_Width ); fprintf( aFile, "TRACK TRACK%d\n", track->GetWidth() );
} }
if( (track->Type() == PCB_TRACE_T) || (track->Type() == PCB_ZONE_T) ) if( (track->Type() == PCB_TRACE_T) || (track->Type() == PCB_ZONE_T) )
...@@ -830,15 +830,15 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb ) ...@@ -830,15 +830,15 @@ static void CreateRoutesSection( FILE* aFile, BOARD* aPcb )
} }
fprintf( aFile, "LINE %g %g %g %g\n", fprintf( aFile, "LINE %g %g %g %g\n",
MapXTo( track->m_Start.x ), MapYTo( track->m_Start.y ), MapXTo( track->GetStart().x ), MapYTo( track->GetStart().y ),
MapXTo( track->m_End.x ), MapYTo( track->m_End.y ) ); MapXTo( track->GetEnd().x ), MapYTo( track->GetEnd().y ) );
} }
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
{ {
fprintf( aFile, "VIA VIA%d.%d.%X %g %g ALL %g via%d\n", fprintf( aFile, "VIA VIA%d.%d.%X %g %g ALL %g via%d\n",
track->m_Width, track->GetDrillValue(), track->GetWidth(), track->GetDrillValue(),
track->ReturnMaskLayer() & master_layermask, track->ReturnMaskLayer() & master_layermask,
MapXTo( track->m_Start.x ), MapYTo( track->m_Start.y ), MapXTo( track->GetStart().x ), MapYTo( track->GetStart().y ),
track->GetDrillValue() / SCALE_FACTOR, vianum++ ); track->GetDrillValue() / SCALE_FACTOR, vianum++ );
} }
} }
...@@ -931,35 +931,35 @@ static void CreateTracksInfoData( FILE* aFile, BOARD* aPcb ) ...@@ -931,35 +931,35 @@ static void CreateTracksInfoData( FILE* aFile, BOARD* aPcb )
for( track = aPcb->m_Track; track != NULL; track = track->Next() ) for( track = aPcb->m_Track; track != NULL; track = track->Next() )
{ {
if( last_width != track->m_Width ) // Find a thickness already used. if( last_width != track->GetWidth() ) // Find a thickness already used.
{ {
for( ii = 0; ii < trackinfo.size(); ii++ ) for( ii = 0; ii < trackinfo.size(); ii++ )
{ {
if( trackinfo[ii] == track->m_Width ) if( trackinfo[ii] == track->GetWidth() )
break; break;
} }
if( ii == trackinfo.size() ) // not found if( ii == trackinfo.size() ) // not found
trackinfo.push_back( track->m_Width ); trackinfo.push_back( track->GetWidth() );
last_width = track->m_Width; last_width = track->GetWidth();
} }
} }
for( track = aPcb->m_Zone; track != NULL; track = track->Next() ) for( track = aPcb->m_Zone; track != NULL; track = track->Next() )
{ {
if( last_width != track->m_Width ) // Find a thickness already used. if( last_width != track->GetWidth() ) // Find a thickness already used.
{ {
for( ii = 0; ii < trackinfo.size(); ii++ ) for( ii = 0; ii < trackinfo.size(); ii++ )
{ {
if( trackinfo[ii] == track->m_Width ) if( trackinfo[ii] == track->GetWidth() )
break; break;
} }
if( ii == trackinfo.size() ) // not found if( ii == trackinfo.size() ) // not found
trackinfo.push_back( track->m_Width ); trackinfo.push_back( track->GetWidth() );
last_width = track->m_Width; last_width = track->GetWidth();
} }
} }
......
...@@ -825,17 +825,17 @@ static void export_vrml_via( BOARD* pcb, SEGVIA* via ) //{{{ ...@@ -825,17 +825,17 @@ static void export_vrml_via( BOARD* pcb, SEGVIA* via ) //{{{
double x, y, r, hole; double x, y, r, hole;
int top_layer, bottom_layer; int top_layer, bottom_layer;
r = via->m_Width / 2; r = via->GetWidth() / 2;
hole = via->GetDrillValue() / 2; hole = via->GetDrillValue() / 2;
x = via->m_Start.x; x = via->GetStart().x;
y = via->m_Start.y; y = via->GetStart().y;
via->ReturnLayerPair( &top_layer, &bottom_layer ); via->ReturnLayerPair( &top_layer, &bottom_layer );
// Export the via padstack // Export the via padstack
export_round_padstack( pcb, x, y, r, bottom_layer, top_layer ); export_round_padstack( pcb, x, y, r, bottom_layer, top_layer );
// Drill a hole // Drill a hole
export_vrml_hole( via_triangles[via->m_Shape], top_layer, bottom_layer, x, y, hole ); export_vrml_hole( via_triangles[via->GetShape()], top_layer, bottom_layer, x, y, hole );
} }
...@@ -846,8 +846,8 @@ static void export_vrml_tracks( BOARD* pcb ) //{{{ ...@@ -846,8 +846,8 @@ static void export_vrml_tracks( BOARD* pcb ) //{{{
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
export_vrml_via( pcb, (SEGVIA*) track ); export_vrml_via( pcb, (SEGVIA*) track );
else else
export_vrml_line( track->GetLayer(), track->m_Start.x, track->m_Start.y, export_vrml_line( track->GetLayer(), track->GetStart().x, track->GetStart().y,
track->m_End.x, track->m_End.y, track->m_Width, 4 ); track->GetEnd().x, track->GetEnd().y, track->GetWidth(), 4 );
} }
} }
......
...@@ -480,7 +480,7 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer, ...@@ -480,7 +480,7 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer,
new_hole.m_Hole_Size.x = new_hole.m_Hole_Size.y = new_hole.m_Hole_Diameter; new_hole.m_Hole_Size.x = new_hole.m_Hole_Size.y = new_hole.m_Hole_Diameter;
new_hole.m_Hole_Shape = 0; // hole shape: round new_hole.m_Hole_Shape = 0; // hole shape: round
new_hole.m_Hole_Pos = via->m_Start; new_hole.m_Hole_Pos = via->GetStart();
via->ReturnLayerPair( &new_hole.m_Hole_Top_Layer, &new_hole.m_Hole_Bottom_Layer ); via->ReturnLayerPair( &new_hole.m_Hole_Top_Layer, &new_hole.m_Hole_Bottom_Layer );
// ReturnLayerPair return params with m_Hole_Bottom_Layer < m_Hole_Top_Layer // ReturnLayerPair return params with m_Hole_Bottom_Layer < m_Hole_Top_Layer
......
...@@ -74,19 +74,19 @@ static bool Join( wxPoint* aIntersectPoint, wxPoint a0, wxPoint a1, wxPoint b0, ...@@ -74,19 +74,19 @@ static bool Join( wxPoint* aIntersectPoint, wxPoint a0, wxPoint a1, wxPoint b0,
*/ */
bool Project( wxPoint* aNearPos, wxPoint on_grid, const TRACK* track ) bool Project( wxPoint* aNearPos, wxPoint on_grid, const TRACK* track )
{ {
if( track->m_Start == track->m_End ) if( track->GetStart ()== track->GetEnd() )
return false; return false;
wxPoint vec = track->m_End - track->m_Start; wxPoint vec = track->GetEnd() - track->GetStart();
double t = double( on_grid.x - track->m_Start.x ) * vec.x + double t = double( on_grid.x - track->GetStart().x ) * vec.x +
double( on_grid.y - track->m_Start.y ) * vec.y; double( on_grid.y - track->GetStart().y ) * vec.y;
t /= (double) vec.x * vec.x + (double) vec.y * vec.y; t /= (double) vec.x * vec.x + (double) vec.y * vec.y;
t = std::min( std::max( t, 0.0 ), 1.0 ); t = std::min( std::max( t, 0.0 ), 1.0 );
aNearPos->x = KiROUND( track->m_Start.x + t * vec.x ); aNearPos->x = KiROUND( track->GetStart().x + t * vec.x );
aNearPos->y = KiROUND( track->m_Start.y + t * vec.y ); aNearPos->y = KiROUND( track->GetStart().y + t * vec.y );
return true; return true;
} }
...@@ -183,7 +183,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -183,7 +183,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
{ {
if( !doCheckNet || !currTrack || currTrack->GetNet() == via->GetNet() ) if( !doCheckNet || !currTrack || currTrack->GetNet() == via->GetNet() )
{ {
*curpos = via->m_Start; *curpos = via->GetStart();
// D(printf("via hit\n");) // D(printf("via hit\n");)
return true; return true;
} }
...@@ -210,10 +210,10 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -210,10 +210,10 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
* In two segment mode, ignore the final segment if it's inside a grid square. * In two segment mode, ignore the final segment if it's inside a grid square.
*/ */
if( !amMovingVia && currTrack && g_TwoSegmentTrackBuild && currTrack->Back() if( !amMovingVia && currTrack && g_TwoSegmentTrackBuild && currTrack->Back()
&& currTrack->m_Start.x - aGridSize.x < currTrack->m_End.x && currTrack->GetStart().x - aGridSize.x < currTrack->GetEnd().x
&& currTrack->m_Start.x + aGridSize.x > currTrack->m_End.x && currTrack->GetStart().x + aGridSize.x > currTrack->GetEnd().x
&& currTrack->m_Start.y - aGridSize.y < currTrack->m_End.y && currTrack->GetStart().y - aGridSize.y < currTrack->GetEnd().y
&& currTrack->m_Start.y + aGridSize.y > currTrack->m_End.y ) && currTrack->GetStart().y + aGridSize.y > currTrack->GetEnd().y )
{ {
currTrack = currTrack->Back(); currTrack = currTrack->Back();
} }
...@@ -239,7 +239,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -239,7 +239,7 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
// D(printf( "have track prospect\n");) // D(printf( "have track prospect\n");)
if( Join( curpos, track->m_Start, track->m_End, currTrack->m_Start, currTrack->m_End ) ) if( Join( curpos, track->GetStart(), track->GetEnd(), currTrack->GetStart(), currTrack->GetEnd() ) )
{ {
// D(printf( "join currTrack->Type()=%d\n", currTrack->Type() );) // D(printf( "join currTrack->Type()=%d\n", currTrack->Type() );)
return true; return true;
...@@ -251,27 +251,27 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize, ...@@ -251,27 +251,27 @@ bool Magnetize( PCB_EDIT_FRAME* frame, int aCurrentTool, wxSize aGridSize,
// a new track and that new track is parallel to the track the // a new track and that new track is parallel to the track the
// mouse is on. Find the nearest end point of the track under mouse // mouse is on. Find the nearest end point of the track under mouse
// to the mouse and return that. // to the mouse and return that.
double distStart = hypot( double( curpos->x - track->m_Start.x ), double distStart = hypot( double( curpos->x - track->GetStart().x ),
double( curpos->y - track->m_Start.y )); double( curpos->y - track->GetStart().y ));
double distEnd = hypot( double( curpos->x - track->m_End.x ), double distEnd = hypot( double( curpos->x - track->GetEnd().x ),
double( curpos->y - track->m_End.y )); double( curpos->y - track->GetEnd().y ));
// if track not via, or if its a via dragging but not with its adjacent track // if track not via, or if its a via dragging but not with its adjacent track
if( currTrack->Type() != PCB_VIA_T if( currTrack->Type() != PCB_VIA_T
|| ( currTrack->m_Start != track->m_Start && currTrack->m_Start != track->m_End )) || ( currTrack->GetStart() != track->GetStart() && currTrack->GetStart() != track->GetEnd() ))
{ {
if( distStart <= currTrack->m_Width/2 ) if( distStart <= currTrack->GetWidth()/2 )
{ {
// D(printf("nearest end is start\n");) // D(printf("nearest end is start\n");)
*curpos = track->m_Start; *curpos = track->GetStart();
return true; return true;
} }
if( distEnd <= currTrack->m_Width/2 ) if( distEnd <= currTrack->GetWidth()/2 )
{ {
// D(printf("nearest end is end\n");) // D(printf("nearest end is end\n");)
*curpos = track->m_End; *curpos = track->GetEnd();
return true; return true;
} }
......
...@@ -139,10 +139,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* aPad, wxDC* DC ) ...@@ -139,10 +139,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* aPad, wxDC* DC )
// Set the old state // Set the old state
if( g_DragSegmentList[ii].m_Pad_Start ) if( g_DragSegmentList[ii].m_Pad_Start )
Track->m_Start = Pad_OldPos; Track->SetStart( Pad_OldPos );
if( g_DragSegmentList[ii].m_Pad_End ) if( g_DragSegmentList[ii].m_Pad_End )
Track->m_End = Pad_OldPos; Track->SetEnd( Pad_OldPos );
picker.SetItem( Track ); picker.SetItem( Track );
pickList.PushItem( picker ); pickList.PushItem( picker );
...@@ -172,10 +172,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* aPad, wxDC* DC ) ...@@ -172,10 +172,10 @@ void PCB_BASE_FRAME::PlacePad( D_PAD* aPad, wxDC* DC )
// Set the new state // Set the new state
if( g_DragSegmentList[ii].m_Pad_Start ) if( g_DragSegmentList[ii].m_Pad_Start )
Track->m_Start = aPad->GetPosition(); Track->SetStart( aPad->GetPosition() );
if( g_DragSegmentList[ii].m_Pad_End ) if( g_DragSegmentList[ii].m_Pad_End )
Track->m_End = aPad->GetPosition(); Track->SetEnd( aPad->GetPosition() );
Track->SetState( IN_EDIT, OFF ); Track->SetState( IN_EDIT, OFF );
......
...@@ -134,13 +134,13 @@ static void Show_MoveNode( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo ...@@ -134,13 +134,13 @@ static void Show_MoveNode( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPo
track->Draw( aPanel, aDC, draw_mode ); track->Draw( aPanel, aDC, draw_mode );
if( track->GetFlags() & STARTPOINT ) if( track->GetFlags() & STARTPOINT )
track->m_Start += moveVector; track->SetStart( track->GetStart() + moveVector );
if( track->GetFlags() & ENDPOINT ) if( track->GetFlags() & ENDPOINT )
track->m_End += moveVector; track->SetEnd( track->GetEnd() + moveVector );
if( track->Type() == PCB_VIA_T ) if( track->Type() == PCB_VIA_T )
track->m_End = track->m_Start; track->SetEnd( track->GetStart() );
track->Draw( aPanel, aDC, draw_mode ); track->Draw( aPanel, aDC, draw_mode );
} }
...@@ -265,10 +265,10 @@ static void Show_Drag_Track_Segment_With_Cte_Slope( EDA_DRAW_PANEL* aPanel, wxDC ...@@ -265,10 +265,10 @@ static void Show_Drag_Track_Segment_With_Cte_Slope( EDA_DRAW_PANEL* aPanel, wxDC
dy = Pos.y - s_LastPos.y; dy = Pos.y - s_LastPos.y;
//move the line by dx and dy //move the line by dx and dy
tx1 = (double) ( Track->m_Start.x + dx ); tx1 = (double) ( Track->GetStart().x + dx );
ty1 = (double) ( Track->m_Start.y + dy ); ty1 = (double) ( Track->GetStart().y + dy );
tx2 = (double) ( Track->m_End.x + dx ); tx2 = (double) ( Track->GetEnd().x + dx );
ty2 = (double) ( Track->m_End.y + dy ); ty2 = (double) ( Track->GetEnd().y + dy );
// recalculate the segments new parameters and intersection points // recalculate the segments new parameters and intersection points
// only the intercept will change, segment slopes does not change // only the intercept will change, segment slopes does not change
...@@ -393,25 +393,23 @@ static void Show_Drag_Track_Segment_With_Cte_Slope( EDA_DRAW_PANEL* aPanel, wxDC ...@@ -393,25 +393,23 @@ static void Show_Drag_Track_Segment_With_Cte_Slope( EDA_DRAW_PANEL* aPanel, wxDC
if( update ) if( update )
{ {
s_LastPos = Pos; s_LastPos = Pos;
Track->m_Start.x = KiROUND( xi1 ); Track->SetStart( wxPoint( KiROUND( xi1 ), KiROUND( yi1 ) ) );
Track->m_Start.y = KiROUND( yi1 ); Track->SetEnd( wxPoint( KiROUND( xi2 ), KiROUND( yi2 ) ) );
Track->m_End.x = KiROUND( xi2 );
Track->m_End.y = KiROUND( yi2 );
if( tSegmentToEnd ) if( tSegmentToEnd )
{ {
if( tSegmentToEnd->GetFlags() & STARTPOINT ) if( tSegmentToEnd->GetFlags() & STARTPOINT )
tSegmentToEnd->m_Start = Track->m_End; tSegmentToEnd->SetStart( Track->GetEnd() );
else else
tSegmentToEnd->m_End = Track->m_End; tSegmentToEnd->SetEnd( Track->GetEnd() );
} }
if( tSegmentToStart ) if( tSegmentToStart )
{ {
if( tSegmentToStart->GetFlags() & STARTPOINT ) if( tSegmentToStart->GetFlags() & STARTPOINT )
tSegmentToStart->m_Start = Track->m_Start; tSegmentToStart->SetStart( Track->GetStart() );
else else
tSegmentToStart->m_End = Track->m_Start; tSegmentToStart->SetEnd( Track->GetStart() );
} }
} }
...@@ -489,25 +487,25 @@ bool InitialiseDragParameters() ...@@ -489,25 +487,25 @@ bool InitialiseDragParameters()
{ {
if( tSegmentToStart->GetFlags() & ENDPOINT ) if( tSegmentToStart->GetFlags() & ENDPOINT )
{ {
tx1 = (double) tSegmentToStart->m_Start.x; tx1 = (double) tSegmentToStart->GetStart().x;
ty1 = (double) tSegmentToStart->m_Start.y; ty1 = (double) tSegmentToStart->GetStart().y;
tx2 = (double) tSegmentToStart->m_End.x; tx2 = (double) tSegmentToStart->GetEnd().x;
ty2 = (double) tSegmentToStart->m_End.y; ty2 = (double) tSegmentToStart->GetEnd().y;
} }
else else
{ {
tx1 = (double) tSegmentToStart->m_End.x; tx1 = (double) tSegmentToStart->GetEnd().x;
ty1 = (double) tSegmentToStart->m_End.y; ty1 = (double) tSegmentToStart->GetEnd().y;
tx2 = (double) tSegmentToStart->m_Start.x; tx2 = (double) tSegmentToStart->GetStart().x;
ty2 = (double) tSegmentToStart->m_Start.y; ty2 = (double) tSegmentToStart->GetStart().y;
} }
} }
else // move the start point on a line starting at Track->m_Start, and perpendicular to Track else // move the start point on a line starting at Track->GetStart(), and perpendicular to Track
{ {
tx1 = (double) Track->m_Start.x; tx1 = (double) Track->GetStart().x;
ty1 = (double) Track->m_Start.y; ty1 = (double) Track->GetStart().y;
tx2 = (double) Track->m_End.x; tx2 = (double) Track->GetEnd().x;
ty2 = (double) Track->m_End.y; ty2 = (double) Track->GetEnd().y;
RotatePoint( &tx2, &ty2, tx1, ty1, 900 ); RotatePoint( &tx2, &ty2, tx1, ty1, 900 );
} }
...@@ -532,25 +530,25 @@ bool InitialiseDragParameters() ...@@ -532,25 +530,25 @@ bool InitialiseDragParameters()
//check if second line is vertical //check if second line is vertical
if( tSegmentToEnd->GetFlags() & STARTPOINT ) if( tSegmentToEnd->GetFlags() & STARTPOINT )
{ {
tx1 = (double) tSegmentToEnd->m_Start.x; tx1 = (double) tSegmentToEnd->GetStart().x;
ty1 = (double) tSegmentToEnd->m_Start.y; ty1 = (double) tSegmentToEnd->GetStart().y;
tx2 = (double) tSegmentToEnd->m_End.x; tx2 = (double) tSegmentToEnd->GetEnd().x;
ty2 = (double) tSegmentToEnd->m_End.y; ty2 = (double) tSegmentToEnd->GetEnd().y;
} }
else else
{ {
tx1 = (double) tSegmentToEnd->m_End.x; tx1 = (double) tSegmentToEnd->GetEnd().x;
ty1 = (double) tSegmentToEnd->m_End.y; ty1 = (double) tSegmentToEnd->GetEnd().y;
tx2 = (double) tSegmentToEnd->m_Start.x; tx2 = (double) tSegmentToEnd->GetStart().x;
ty2 = (double) tSegmentToEnd->m_Start.y; ty2 = (double) tSegmentToEnd->GetStart().y;
} }
} }
else // move the start point on a line starting at Track->m_End, and perpendicular to Track else // move the start point on a line starting at Track->GetEnd(), and perpendicular to Track
{ {
tx1 = (double) Track->m_End.x; tx1 = (double) Track->GetEnd().x;
ty1 = (double) Track->m_End.y; ty1 = (double) Track->GetEnd().y;
tx2 = (double) Track->m_Start.x; tx2 = (double) Track->GetStart().x;
ty2 = (double) Track->m_Start.y; ty2 = (double) Track->GetStart().y;
RotatePoint( &tx2, &ty2, tx1, ty1, -900 ); RotatePoint( &tx2, &ty2, tx1, ty1, -900 );
} }
...@@ -570,10 +568,10 @@ bool InitialiseDragParameters() ...@@ -570,10 +568,10 @@ bool InitialiseDragParameters()
} }
// Init parameters for the moved segment // Init parameters for the moved segment
tx1 = (double) Track->m_Start.x; tx1 = (double) Track->GetStart().x;
ty1 = (double) Track->m_Start.y; ty1 = (double) Track->GetStart().y;
tx2 = (double) Track->m_End.x; tx2 = (double) Track->GetEnd().x;
ty2 = (double) Track->m_End.y; ty2 = (double) Track->GetEnd().y;
if( tx2 != tx1 ) if( tx2 != tx1 )
{ {
...@@ -630,12 +628,12 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC ...@@ -630,12 +628,12 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC
if( aCommand != ID_POPUP_PCB_MOVE_TRACK_SEGMENT ) if( aCommand != ID_POPUP_PCB_MOVE_TRACK_SEGMENT )
{ {
Collect_TrackSegmentsToDrag( GetBoard(), aTrack->m_Start, Collect_TrackSegmentsToDrag( GetBoard(), aTrack->GetStart(),
aTrack->ReturnMaskLayer(), aTrack->ReturnMaskLayer(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
} }
PosInit = aTrack->m_Start; PosInit = aTrack->GetStart();
} }
else else
{ {
...@@ -650,17 +648,17 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC ...@@ -650,17 +648,17 @@ void PCB_EDIT_FRAME::StartMoveOneNodeOrSegment( TRACK* aTrack, wxDC* aDC, int aC
break; break;
case ID_POPUP_PCB_DRAG_TRACK_SEGMENT: // drag a segment case ID_POPUP_PCB_DRAG_TRACK_SEGMENT: // drag a segment
pos = aTrack->m_Start; pos = aTrack->GetStart();
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
pos = aTrack->m_End; pos = aTrack->GetEnd();
aTrack->SetFlags( IS_DRAGGED | ENDPOINT | STARTPOINT ); aTrack->SetFlags( IS_DRAGGED | ENDPOINT | STARTPOINT );
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
break; break;
case ID_POPUP_PCB_MOVE_TRACK_NODE: // Drag via or move node case ID_POPUP_PCB_MOVE_TRACK_NODE: // Drag via or move node
pos = (diag & STARTPOINT) ? aTrack->m_Start : aTrack->m_End; pos = (diag & STARTPOINT) ? aTrack->GetStart() : aTrack->GetEnd();
Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(), Collect_TrackSegmentsToDrag( GetBoard(), pos, aTrack->ReturnMaskLayer(),
aTrack->GetNet(), aTrack->GetWidth() / 2 ); aTrack->GetNet(), aTrack->GetWidth() / 2 );
PosInit = pos; PosInit = pos;
...@@ -770,7 +768,7 @@ void PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC ...@@ -770,7 +768,7 @@ void PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC
{ {
int flag = STARTPOINT; int flag = STARTPOINT;
if( track->m_Start != TrackToStartPoint->m_Start ) if( track->GetStart() != TrackToStartPoint->GetStart() )
flag = ENDPOINT; flag = ENDPOINT;
AddSegmentToDragList( flag, TrackToStartPoint ); AddSegmentToDragList( flag, TrackToStartPoint );
...@@ -781,7 +779,7 @@ void PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC ...@@ -781,7 +779,7 @@ void PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC
{ {
int flag = STARTPOINT; int flag = STARTPOINT;
if( track->m_End != TrackToEndPoint->m_Start ) if( track->GetEnd() != TrackToEndPoint->GetStart() )
flag = ENDPOINT; flag = ENDPOINT;
AddSegmentToDragList( flag, TrackToEndPoint ); AddSegmentToDragList( flag, TrackToEndPoint );
...@@ -868,14 +866,14 @@ bool PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment( TRACK* Track, wxDC* DC ) ...@@ -868,14 +866,14 @@ bool PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment( TRACK* Track, wxDC* DC )
* (only pad connection must be tested, track connection will be * (only pad connection must be tested, track connection will be
* tested by TestNetConnection() ) */ * tested by TestNetConnection() ) */
int layerMask = GetLayerMask( Track->GetLayer() ); int layerMask = GetLayerMask( Track->GetLayer() );
Track->start = GetBoard()->GetPadFast( Track->m_Start, layerMask ); Track->start = GetBoard()->GetPadFast( Track->GetStart(), layerMask );
if( Track->start ) if( Track->start )
Track->SetState( BEGIN_ONPAD, ON ); Track->SetState( BEGIN_ONPAD, ON );
else else
Track->SetState( BEGIN_ONPAD, OFF ); Track->SetState( BEGIN_ONPAD, OFF );
Track->end = GetBoard()->GetPadFast( Track->m_End, layerMask ); Track->end = GetBoard()->GetPadFast( Track->GetEnd(), layerMask );
if( Track->end ) if( Track->end )
Track->SetState( END_ONPAD, ON ); Track->SetState( END_ONPAD, ON );
......
...@@ -137,7 +137,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask, ...@@ -137,7 +137,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
if( ( ( 1 << seg->GetLayer() ) & aLayerMask ) == 0 ) if( ( ( 1 << seg->GetLayer() ) & aLayerMask ) == 0 )
continue; continue;
aPlotter->ThickSegment( seg->m_Start, seg->m_End, seg->m_Width, aPlotter->ThickSegment( seg->GetStart(), seg->GetEnd(), seg->GetWidth(),
itemplotter.GetMode() ); itemplotter.GetMode() );
} }
} }
...@@ -392,17 +392,17 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -392,17 +392,17 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
if( aLayerMask & ALL_CU_LAYERS ) if( aLayerMask & ALL_CU_LAYERS )
width_adj = itemplotter.getFineWidthAdj(); width_adj = itemplotter.getFineWidthAdj();
int diameter = Via->m_Width + 2 * via_margin + width_adj; int diameter = Via->GetWidth() + 2 * via_margin + width_adj;
// Don't draw a null size item : // Don't draw a null size item :
if( diameter <= 0 ) if( diameter <= 0 )
continue; continue;
EDA_COLOR_T color = aBoard->GetVisibleElementColor(VIAS_VISIBLE + Via->m_Shape); EDA_COLOR_T color = aBoard->GetVisibleElementColor(VIAS_VISIBLE + Via->GetShape());
// Set plot color (change WHITE to LIGHTGRAY because // Set plot color (change WHITE to LIGHTGRAY because
// the white items are not seen on a white paper or screen // the white items are not seen on a white paper or screen
aPlotter->SetColor( color != WHITE ? color : LIGHTGRAY); aPlotter->SetColor( color != WHITE ? color : LIGHTGRAY);
aPlotter->FlashPadCircle( Via->m_Start, diameter, plotMode ); aPlotter->FlashPadCircle( Via->GetStart(), diameter, plotMode );
} }
// Plot tracks (not vias) : // Plot tracks (not vias) :
...@@ -414,9 +414,9 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -414,9 +414,9 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
if( (GetLayerMask( track->GetLayer() ) & aLayerMask) == 0 ) if( (GetLayerMask( track->GetLayer() ) & aLayerMask) == 0 )
continue; continue;
int width = track->m_Width + itemplotter.getFineWidthAdj(); int width = track->GetWidth() + itemplotter.getFineWidthAdj();
aPlotter->SetColor( itemplotter.getColor( track->GetLayer() ) ); aPlotter->SetColor( itemplotter.getColor( track->GetLayer() ) );
aPlotter->ThickSegment( track->m_Start, track->m_End, width, plotMode ); aPlotter->ThickSegment( track->GetStart(), track->GetEnd(), width, plotMode );
} }
// Plot zones (outdated, for old boards compatibility): // Plot zones (outdated, for old boards compatibility):
...@@ -425,9 +425,9 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter, ...@@ -425,9 +425,9 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
if( (GetLayerMask( track->GetLayer() ) & aLayerMask) == 0 ) if( (GetLayerMask( track->GetLayer() ) & aLayerMask) == 0 )
continue; continue;
int width = track->m_Width + itemplotter.getFineWidthAdj(); int width = track->GetWidth() + itemplotter.getFineWidthAdj();
aPlotter->SetColor( itemplotter.getColor( track->GetLayer() ) ); aPlotter->SetColor( itemplotter.getColor( track->GetLayer() ) );
aPlotter->ThickSegment( track->m_Start, track->m_End, width, plotMode ); aPlotter->ThickSegment( track->GetStart(), track->GetEnd(), width, plotMode );
} }
// Plot filled ares // Plot filled ares
......
...@@ -711,8 +711,8 @@ void BRDITEMS_PLOTTER::PlotDrillMarks() ...@@ -711,8 +711,8 @@ void BRDITEMS_PLOTTER::PlotDrillMarks()
continue; continue;
plotOneDrillMark(PAD_CIRCLE, plotOneDrillMark(PAD_CIRCLE,
pts->m_Start, wxSize( pts->GetDrillValue(), 0 ), pts->GetStart(), wxSize( pts->GetDrillValue(), 0 ),
wxSize( pts->m_Width, 0 ), 0, small_drill ); wxSize( pts->GetWidth(), 0 ), 0, small_drill );
} }
for( MODULE *Module = m_board->m_Modules; Module != NULL; Module = Module->Next() ) for( MODULE *Module = m_board->m_Modules; Module != NULL; Module = Module->Next() )
......
...@@ -231,12 +231,12 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -231,12 +231,12 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
if( pt_trace->Type() == PCB_VIA_T ) // VIA encountered. if( pt_trace->Type() == PCB_VIA_T ) // VIA encountered.
{ {
int radius = pt_trace->m_Width >> 1; int radius = pt_trace->GetWidth() >> 1;
EDA_COLOR_T color = g_ColorsSettings.GetItemColor( VIAS_VISIBLE + pt_trace->m_Shape ); EDA_COLOR_T color = g_ColorsSettings.GetItemColor( VIAS_VISIBLE + pt_trace->GetShape() );
GRSetDrawMode( aDC, drawmode ); GRSetDrawMode( aDC, drawmode );
GRFilledCircle( m_canvas->GetClipBox(), aDC, GRFilledCircle( m_canvas->GetClipBox(), aDC,
pt_trace->m_Start.x, pt_trace->GetStart().x,
pt_trace->m_Start.y, pt_trace->GetStart().y,
radius, radius,
0, color, color ); 0, color, color );
} }
...@@ -305,7 +305,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC, ...@@ -305,7 +305,7 @@ void PCB_EDIT_FRAME::PrintPage( wxDC* aDC,
diameter = pt_trace->GetDrillValue(); diameter = pt_trace->GetDrillValue();
GRFilledCircle( m_canvas->GetClipBox(), aDC, GRFilledCircle( m_canvas->GetClipBox(), aDC,
pt_trace->m_Start.x, pt_trace->m_Start.y, pt_trace->GetStart().x, pt_trace->GetStart().y,
diameter/2, diameter/2,
0, color, color ); 0, color, color );
} }
......
...@@ -847,10 +847,10 @@ void PCB_BASE_FRAME::BuildAirWiresTargetsList( BOARD_CONNECTED_ITEM* aItemRef, ...@@ -847,10 +847,10 @@ void PCB_BASE_FRAME::BuildAirWiresTargetsList( BOARD_CONNECTED_ITEM* aItemRef,
if( !track->GetSubNet() || (track->GetSubNet() != subnet) ) if( !track->GetSubNet() || (track->GetSubNet() != subnet) )
{ {
if( aPosition != track->m_Start ) if( aPosition != track->GetStart() )
s_TargetsLocations.push_back( track->m_Start ); s_TargetsLocations.push_back( track->GetStart() );
if( aPosition != track->m_End && track->m_Start != track->m_End ) if( aPosition != track->GetEnd() && track->GetStart() != track->GetEnd() )
s_TargetsLocations.push_back( track->m_End ); s_TargetsLocations.push_back( track->GetEnd() );
} }
} }
......
...@@ -761,7 +761,7 @@ PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia ) ...@@ -761,7 +761,7 @@ PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
if( topLayer > botLayer ) if( topLayer > botLayer )
EXCHG( topLayer, botLayer ); EXCHG( topLayer, botLayer );
return makeVia( aVia->m_Width, aVia->GetDrillValue(), topLayer, botLayer ); return makeVia( aVia->GetWidth(), aVia->GetDrillValue(), topLayer, botLayer );
} }
...@@ -1493,12 +1493,12 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IO_ERROR ) ...@@ -1493,12 +1493,12 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IO_ERROR )
continue; continue;
if( old_netcode != netcode if( old_netcode != netcode
|| old_width != track->m_Width || old_width != track->GetWidth()
|| old_layer != track->GetLayer() || old_layer != track->GetLayer()
|| (path && path->points.back() != mapPt(track->m_Start) ) || (path && path->points.back() != mapPt(track->GetStart()) )
) )
{ {
old_width = track->m_Width; old_width = track->GetWidth();
old_layer = track->GetLayer(); old_layer = track->GetLayer();
if( old_netcode != netcode ) if( old_netcode != netcode )
...@@ -1524,10 +1524,10 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IO_ERROR ) ...@@ -1524,10 +1524,10 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IO_ERROR )
path->layer_id = layerIds[pcbLayer]; path->layer_id = layerIds[pcbLayer];
path->aperture_width = scale( old_width ); path->aperture_width = scale( old_width );
path->AppendPoint( mapPt( track->m_Start ) ); path->AppendPoint( mapPt( track->GetStart() ) );
} }
path->AppendPoint( mapPt( track->m_End ) ); path->AppendPoint( mapPt( track->GetEnd() ) );
} }
} }
......
...@@ -235,10 +235,10 @@ TRACK* SPECCTRA_DB::makeTRACK( PATH* aPath, int aPointIndex, int aNetcode ) thro ...@@ -235,10 +235,10 @@ TRACK* SPECCTRA_DB::makeTRACK( PATH* aPath, int aPointIndex, int aNetcode ) thro
TRACK* track = new TRACK( sessionBoard ); TRACK* track = new TRACK( sessionBoard );
track->m_Start = mapPt( aPath->points[aPointIndex+0], routeResolution ); track->SetStart( mapPt( aPath->points[aPointIndex+0], routeResolution ) );
track->m_End = mapPt( aPath->points[aPointIndex+1], routeResolution ); track->SetEnd( mapPt( aPath->points[aPointIndex+1], routeResolution ) );
track->SetLayer( pcbLayer2kicad[layerNdx] ); track->SetLayer( pcbLayer2kicad[layerNdx] );
track->m_Width = scale( aPath->aperture_width, routeResolution ); track->SetWidth( scale( aPath->aperture_width, routeResolution ) );
track->SetNet( aNetcode ); track->SetNet( aNetcode );
return track; return track;
...@@ -295,8 +295,8 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet ...@@ -295,8 +295,8 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet
via = new SEGVIA( sessionBoard ); via = new SEGVIA( sessionBoard );
via->SetPosition( mapPt( aPoint, routeResolution ) ); via->SetPosition( mapPt( aPoint, routeResolution ) );
via->SetDrill( drillDiam ); via->SetDrill( drillDiam );
via->m_Shape = VIA_THROUGH; via->SetShape( VIA_THROUGH );
via->m_Width = viaDiam; via->SetWidth( viaDiam );
via->SetLayerPair( LAYER_N_FRONT, LAYER_N_BACK ); via->SetLayerPair( LAYER_N_FRONT, LAYER_N_BACK );
} }
else if( shapeCount == copperLayerCount ) else if( shapeCount == copperLayerCount )
...@@ -313,8 +313,8 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet ...@@ -313,8 +313,8 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet
via = new SEGVIA( sessionBoard ); via = new SEGVIA( sessionBoard );
via->SetPosition( mapPt( aPoint, routeResolution ) ); via->SetPosition( mapPt( aPoint, routeResolution ) );
via->SetDrill( drillDiam ); via->SetDrill( drillDiam );
via->m_Shape = VIA_THROUGH; via->SetShape( VIA_THROUGH );
via->m_Width = viaDiam; via->SetWidth( viaDiam );
via->SetLayerPair( LAYER_N_FRONT, LAYER_N_BACK ); via->SetLayerPair( LAYER_N_FRONT, LAYER_N_BACK );
} }
else // VIA_MICROVIA or VIA_BLIND_BURIED else // VIA_MICROVIA or VIA_BLIND_BURIED
...@@ -357,11 +357,11 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet ...@@ -357,11 +357,11 @@ SEGVIA* SPECCTRA_DB::makeVIA( PADSTACK* aPadstack, const POINT& aPoint, int aNet
if( (topLayerNdx==0 && botLayerNdx==1) if( (topLayerNdx==0 && botLayerNdx==1)
|| (topLayerNdx==copperLayerCount-2 && botLayerNdx==copperLayerCount-1)) || (topLayerNdx==copperLayerCount-2 && botLayerNdx==copperLayerCount-1))
via->m_Shape = VIA_MICROVIA; via->SetShape( VIA_MICROVIA );
else else
via->m_Shape = VIA_BLIND_BURIED; via->SetShape( VIA_BLIND_BURIED );
via->m_Width = viaDiam; via->SetWidth( viaDiam );
topLayerNdx = pcbLayer2kicad[topLayerNdx]; topLayerNdx = pcbLayer2kicad[topLayerNdx];
botLayerNdx = pcbLayer2kicad[botLayerNdx]; botLayerNdx = pcbLayer2kicad[botLayerNdx];
......
...@@ -126,8 +126,8 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC, ...@@ -126,8 +126,8 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC,
if( ( StartTrack == NULL ) || ( EndTrack == NULL ) ) if( ( StartTrack == NULL ) || ( EndTrack == NULL ) )
return 0; return 0;
start = StartTrack->m_Start; start = StartTrack->GetStart();
end = EndTrack->m_End; end = EndTrack->GetEnd();
// The start and end points cannot be the same. // The start and end points cannot be the same.
if( start == end ) if( start == end )
...@@ -248,7 +248,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC, ...@@ -248,7 +248,7 @@ int PCB_EDIT_FRAME::EraseRedundantTrack( wxDC* aDC,
if( pt_segm->GetState( BUSY ) == 0 ) if( pt_segm->GetState( BUSY ) == 0 )
break; break;
if( pt_segm->m_Start == start || pt_segm->m_End == start ) if( pt_segm->GetStart() == start || pt_segm->GetEnd() == start )
{ {
// Marked track can be erased. // Marked track can be erased.
TRACK* NextS; TRACK* NextS;
......
...@@ -74,10 +74,10 @@ void ZONE_CONTAINER::Test_For_Copper_Island_And_Remove_Insulated_Islands( BOARD ...@@ -74,10 +74,10 @@ void ZONE_CONTAINER::Test_For_Copper_Island_And_Remove_Insulated_Islands( BOARD
if( track->GetNet() != GetNet() ) if( track->GetNet() != GetNet() )
continue; continue;
listPointsCandidates.push_back( track->m_Start ); listPointsCandidates.push_back( track->GetStart() );
if( track->Type() != PCB_VIA_T ) if( track->Type() != PCB_VIA_T )
listPointsCandidates.push_back( track->m_End ); listPointsCandidates.push_back( track->GetEnd() );
} }
// test if a point is inside // test if a point is inside
......
...@@ -169,12 +169,12 @@ void BOARD::Test_Connections_To_Copper_Areas( int aNetcode ) ...@@ -169,12 +169,12 @@ void BOARD::Test_Connections_To_Copper_Areas( int aNetcode )
} }
else if( item->Type() == PCB_VIA_T ) else if( item->Type() == PCB_VIA_T )
{ {
pos1 = pos2 = ( (SEGVIA*) item )->m_Start; pos1 = pos2 = ( (SEGVIA*) item )->GetStart();
} }
else if( item->Type() == PCB_TRACE_T ) else if( item->Type() == PCB_TRACE_T )
{ {
pos1 = ( (TRACK*) item )->m_Start; pos1 = ( (TRACK*) item )->GetStart();
pos2 = ( (TRACK*) item )->m_End; pos2 = ( (TRACK*) item )->GetEnd();
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment