Documentation and coding policy fixes.
* Fix all Doxygen warnings except polygon files. * Add footprint library table tasks to TODO.txt. * Add definition to drag.h to prevent nesting. * Coding policy fixes.
This commit is contained in:
parent
9a131706d7
commit
2ab86e7400
|
@ -5,8 +5,9 @@
|
||||||
Capitalization:
|
Capitalization:
|
||||||
|
|
||||||
For any visible text used within KiCad, follow recommendations here:
|
For any visible text used within KiCad, follow recommendations here:
|
||||||
http://library.gnome.org/devel/hig-book/2.20/design-text-labels.html.en#layout-capitalization
|
http://developer.gnome.org/hig-book/stable/design-text-labels.html.en
|
||||||
This applies to all Menus, Titles, Labels, Tooltips, Buttons, etc.
|
in the "Capitalization" section. This applies to all Menus, Titles,
|
||||||
|
Labels, Tooltips, Buttons, etc.
|
||||||
|
|
||||||
The capitalization for the application names is KiCad, Eeschema, CvPcb,
|
The capitalization for the application names is KiCad, Eeschema, CvPcb,
|
||||||
GerbView, and Pcbnew. All strings that have application names that are
|
GerbView, and Pcbnew. All strings that have application names that are
|
||||||
|
@ -19,7 +20,7 @@ Dialogs:
|
||||||
|
|
||||||
Follow the recommendations here:
|
Follow the recommendations here:
|
||||||
|
|
||||||
http://library.gnome.org/devel/hig-book/2.20/windows-dialog.html.en
|
http://developer.gnome.org/hig-book/stable/design-window.html.en
|
||||||
paying particular attention to "initial focus", "sensible default values",
|
paying particular attention to "initial focus", "sensible default values",
|
||||||
"default buttons", ESC key termination. Please note that the escape key
|
"default buttons", ESC key termination. Please note that the escape key
|
||||||
termination only works properly if there is a dialog button defined with
|
termination only works properly if there is a dialog button defined with
|
||||||
|
|
37
TODO.txt
37
TODO.txt
|
@ -68,6 +68,43 @@ d) write functions to lookup a footprint from
|
||||||
i) FPID
|
i) FPID
|
||||||
ii) footprint alone since most old netlists don't have nicknames in them.
|
ii) footprint alone since most old netlists don't have nicknames in them.
|
||||||
|
|
||||||
|
e) Replace MODULE::m_LibRef which is a wxString with FPID. FPID supports
|
||||||
|
the footprint name only which is backwards compatible with the current
|
||||||
|
design.
|
||||||
|
|
||||||
|
f) On the first time an empty global footprint table is encountered, add
|
||||||
|
standard KiCad and user libraries not located in the project directory
|
||||||
|
or any of it's sub-directories to the global footprint library table.
|
||||||
|
|
||||||
|
g) When a project is opened and the project footprint library table is
|
||||||
|
empty, add any user library that is located in the project path or any
|
||||||
|
of it's sub-directories to the project footprint library table.
|
||||||
|
|
||||||
|
h) When populating the footprint library tables, use the library file name
|
||||||
|
without the extension as the FPID nickname. When duplicate names exist,
|
||||||
|
append an incremental integer to the nickname so that the second logic
|
||||||
|
libraries FPID nickname becomes logic1. Assign FPID library nicknames
|
||||||
|
to each MODULE based on the legacy library search order when loading an
|
||||||
|
existing board that does not have fully defined MODULE FPIDs.
|
||||||
|
|
||||||
|
i) Add check for KISYSMOD environment variable, on Pcbnew and CvPcb start up
|
||||||
|
and set it to the known directory of the default KiCad footprint libraries.
|
||||||
|
The code should look something like:
|
||||||
|
|
||||||
|
{
|
||||||
|
const char* envar;
|
||||||
|
|
||||||
|
envar = getenv( "KISYSMOD" );
|
||||||
|
|
||||||
|
if( !envar )
|
||||||
|
{
|
||||||
|
envvar = knownDirOfSysMods;
|
||||||
|
|
||||||
|
setenv( "KISYSMOD", envar );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
These i) and ii) merge into one if footprint alone is a valid FPID.
|
These i) and ii) merge into one if footprint alone is a valid FPID.
|
||||||
Incorporate any environment variable in the the uri expansion using:
|
Incorporate any environment variable in the the uri expansion using:
|
||||||
const wxString FP_LIB_TABLE::ExpandSubtitutions( const wxString aString )
|
const wxString FP_LIB_TABLE::ExpandSubtitutions( const wxString aString )
|
||||||
|
|
|
@ -677,7 +677,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function RedrawScreen2
|
* Function RedrawScreen2
|
||||||
* puts the crosshair back to the screen position it had before zooming
|
* puts the crosshair back to the screen position it had before zooming
|
||||||
* @param beforePos The screen position of the crosshair before zooming
|
* @param posBefore screen position of the crosshair before zooming
|
||||||
*/
|
*/
|
||||||
void RedrawScreen2( const wxPoint& posBefore );
|
void RedrawScreen2( const wxPoint& posBefore );
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ private:
|
||||||
/// This is also the last used netclass after starting a track.
|
/// This is also the last used netclass after starting a track.
|
||||||
wxString m_currentNetClassName;
|
wxString m_currentNetClassName;
|
||||||
|
|
||||||
/// Index for #m_ViaSizeList to select the current via size.
|
/// Index for #m_ViasDimensionsList to select the current via size.
|
||||||
/// 0 is the index selection of the default value Netclass
|
/// 0 is the index selection of the default value Netclass
|
||||||
unsigned m_viaSizeIndex;
|
unsigned m_viaSizeIndex;
|
||||||
|
|
||||||
|
|
|
@ -27,12 +27,16 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <vector>
|
#ifndef _DRAG_H_
|
||||||
#include <wx/gdicmn.h>
|
#define _DRAG_H_
|
||||||
|
|
||||||
|
|
||||||
#include <class_track.h>
|
#include <class_track.h>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
class wxDC;
|
class wxDC;
|
||||||
|
class wxPoint;
|
||||||
class EDA_DRAW_PANEL;
|
class EDA_DRAW_PANEL;
|
||||||
class MODULE;
|
class MODULE;
|
||||||
class D_PAD;
|
class D_PAD;
|
||||||
|
@ -84,7 +88,7 @@ public:
|
||||||
~DRAG_SEGM_PICKER() {};
|
~DRAG_SEGM_PICKER() {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set auxiliary parameters relative to calucaltions needed
|
* Set auxiliary parameters relative to calculations needed
|
||||||
* to find track ends positions while dragging pads
|
* to find track ends positions while dragging pads
|
||||||
* and when modules are rotated, flipped
|
* and when modules are rotated, flipped
|
||||||
*/
|
*/
|
||||||
|
@ -95,7 +99,7 @@ public:
|
||||||
* and when modules are rotated, flipped
|
* and when modules are rotated, flipped
|
||||||
* @param aOffset = offset of module or pad position (when moving)
|
* @param aOffset = offset of module or pad position (when moving)
|
||||||
*/
|
*/
|
||||||
void SetTrackEndsCoordinates(wxPoint aOffset);
|
void SetTrackEndsCoordinates( wxPoint aOffset );
|
||||||
|
|
||||||
void RestoreInitialValues()
|
void RestoreInitialValues()
|
||||||
{
|
{
|
||||||
|
@ -104,17 +108,18 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class DRAG_LIST
|
class DRAG_LIST
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BOARD * m_Brd; // the main board
|
BOARD* m_Brd; // the main board
|
||||||
MODULE * m_Module; // The link to the module to move, or NULL
|
MODULE* m_Module; // The link to the module to move, or NULL
|
||||||
D_PAD * m_Pad; // The link to the pad to move, or NULL
|
D_PAD* m_Pad; // The link to the pad to move, or NULL
|
||||||
|
|
||||||
std::vector<DRAG_SEGM_PICKER> m_DragList; // The list of DRAG_SEGM_PICKER items
|
std::vector<DRAG_SEGM_PICKER> m_DragList; // The list of DRAG_SEGM_PICKER items
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DRAG_LIST( BOARD * aPcb )
|
DRAG_LIST( BOARD* aPcb )
|
||||||
{
|
{
|
||||||
m_Brd = aPcb;
|
m_Brd = aPcb;
|
||||||
}
|
}
|
||||||
|
@ -143,7 +148,7 @@ private:
|
||||||
/** Fills m_DragList with of track segments connected to pads in aConnections
|
/** Fills m_DragList with of track segments connected to pads in aConnections
|
||||||
* For each selected track segment the EDIT flag is set
|
* For each selected track segment the EDIT flag is set
|
||||||
*/
|
*/
|
||||||
void fillList(CONNECTIONS& aConnections);
|
void fillList( CONNECTIONS& aConnections );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,11 +171,13 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC );
|
||||||
void EraseDragList();
|
void EraseDragList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function Collect_TrackSegmentsToDrag.
|
* Function Collect_TrackSegmentsToDrag.
|
||||||
* used to collect track segments in drag track segment
|
* used to collect track segments in drag track segment
|
||||||
* Build the list of tracks connected to the ref point by calling
|
* Build the list of tracks connected to the ref point by calling
|
||||||
* AddSegmentToDragList for each selected track
|
* AddSegmentToDragList for each selected track
|
||||||
* Net codes must be up to date, because only tracks having the right net code are tested.
|
* Net codes must be up to date, because only tracks having the right net code are tested.
|
||||||
|
*
|
||||||
|
* @param aPcb A point the the #BOARD object to collect track segment to drag.
|
||||||
* @param aRefPos = reference point of connection
|
* @param aRefPos = reference point of connection
|
||||||
* @param aLayerMask = layers mask to collect tracks
|
* @param aLayerMask = layers mask to collect tracks
|
||||||
* @param aNetCode = the net code to consider
|
* @param aNetCode = the net code to consider
|
||||||
|
@ -193,3 +200,4 @@ void AddSegmentToDragList( int flag, TRACK* aTrack );
|
||||||
void UndrawAndMarkSegmentsToDrag( EDA_DRAW_PANEL* aCanvas, wxDC* aDC );
|
void UndrawAndMarkSegmentsToDrag( EDA_DRAW_PANEL* aCanvas, wxDC* aDC );
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _DRAG_H_
|
||||||
|
|
|
@ -61,13 +61,10 @@ DRAG_SEGM_PICKER::DRAG_SEGM_PICKER( TRACK* aTrack )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Set auxiliary parameters relative to calucaltions needed
|
|
||||||
* to find track ends positions while dragging pads
|
|
||||||
* and when modules are rotated, flipped ..
|
|
||||||
*/
|
|
||||||
void DRAG_SEGM_PICKER::SetAuxParameters()
|
void DRAG_SEGM_PICKER::SetAuxParameters()
|
||||||
{
|
{
|
||||||
MODULE * module = NULL;
|
MODULE* module = NULL;
|
||||||
|
|
||||||
if( m_Pad_Start )
|
if( m_Pad_Start )
|
||||||
{
|
{
|
||||||
module = (MODULE *) m_Pad_Start->GetParent();
|
module = (MODULE *) m_Pad_Start->GetParent();
|
||||||
|
@ -78,6 +75,7 @@ void DRAG_SEGM_PICKER::SetAuxParameters()
|
||||||
{
|
{
|
||||||
if( module == NULL )
|
if( module == NULL )
|
||||||
module = (MODULE *) m_Pad_End->GetParent();
|
module = (MODULE *) m_Pad_End->GetParent();
|
||||||
|
|
||||||
m_PadEndOffset = m_Track->GetEnd() - m_Pad_End->GetPosition();
|
m_PadEndOffset = m_Track->GetEnd() - m_Pad_End->GetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,13 +86,8 @@ void DRAG_SEGM_PICKER::SetAuxParameters()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Calculate track ends positions while dragging pads
|
void DRAG_SEGM_PICKER::SetTrackEndsCoordinates( wxPoint aOffset )
|
||||||
* and when modules are rotated, flipped ..
|
|
||||||
* aOffset = module or pad position offset when moving the module or pad
|
|
||||||
* (the actual position is the module/pad position - offset)
|
|
||||||
*/
|
|
||||||
void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
|
|
||||||
{
|
{
|
||||||
// the track start position is the pad position + m_PadStartOffset
|
// the track start position is the pad position + m_PadStartOffset
|
||||||
// however m_PadStartOffset is known for the initial rotation/flip
|
// however m_PadStartOffset is known for the initial rotation/flip
|
||||||
|
@ -106,7 +99,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
|
||||||
// (although most of time, offset is 0,0)
|
// (although most of time, offset is 0,0)
|
||||||
|
|
||||||
double curr_rot_offset = m_RotationOffset;
|
double curr_rot_offset = m_RotationOffset;
|
||||||
MODULE * module = NULL;
|
MODULE* module = NULL;
|
||||||
bool flip = false;
|
bool flip = false;
|
||||||
|
|
||||||
if( m_Pad_Start )
|
if( m_Pad_Start )
|
||||||
|
@ -119,6 +112,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
|
||||||
{
|
{
|
||||||
flip = m_Flipped != module->IsFlipped();
|
flip = m_Flipped != module->IsFlipped();
|
||||||
curr_rot_offset = module->GetOrientation() - m_RotationOffset;
|
curr_rot_offset = module->GetOrientation() - m_RotationOffset;
|
||||||
|
|
||||||
if( flip ) // when flipping, module orientation is negated
|
if( flip ) // when flipping, module orientation is negated
|
||||||
curr_rot_offset = - module->GetOrientation() - m_RotationOffset;
|
curr_rot_offset = - module->GetOrientation() - m_RotationOffset;
|
||||||
}
|
}
|
||||||
|
@ -141,7 +135,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
|
||||||
wxPoint padoffset = m_PadEndOffset;
|
wxPoint padoffset = m_PadEndOffset;
|
||||||
|
|
||||||
if( curr_rot_offset != 0.0 )
|
if( curr_rot_offset != 0.0 )
|
||||||
RotatePoint(&padoffset, curr_rot_offset);
|
RotatePoint( &padoffset, curr_rot_offset );
|
||||||
|
|
||||||
if( flip )
|
if( flip )
|
||||||
NEGATE( padoffset.y );
|
NEGATE( padoffset.y );
|
||||||
|
@ -154,6 +148,7 @@ void DRAG_SEGM_PICKER::SetTrackEndsCoordinates(wxPoint aOffset)
|
||||||
// A sort function needed to build ordered pads lists
|
// A sort function needed to build ordered pads lists
|
||||||
extern bool sortPadsByXthenYCoord( D_PAD* const & ref, D_PAD* const & comp );
|
extern bool sortPadsByXthenYCoord( D_PAD* const & ref, D_PAD* const & comp );
|
||||||
|
|
||||||
|
|
||||||
void DRAG_LIST::BuildDragListe( MODULE* aModule )
|
void DRAG_LIST::BuildDragListe( MODULE* aModule )
|
||||||
{
|
{
|
||||||
m_Pad = NULL;
|
m_Pad = NULL;
|
||||||
|
@ -171,6 +166,7 @@ void DRAG_LIST::BuildDragListe( MODULE* aModule )
|
||||||
fillList( connections );
|
fillList( connections );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DRAG_LIST::BuildDragListe( D_PAD* aPad )
|
void DRAG_LIST::BuildDragListe( D_PAD* aPad )
|
||||||
{
|
{
|
||||||
m_Pad = aPad;
|
m_Pad = aPad;
|
||||||
|
@ -184,15 +180,15 @@ void DRAG_LIST::BuildDragListe( D_PAD* aPad )
|
||||||
fillList( connections );
|
fillList( connections );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// A helper function to sort track list per tracks
|
// A helper function to sort track list per tracks
|
||||||
bool sort_tracklist( const DRAG_SEGM_PICKER& ref, const DRAG_SEGM_PICKER& tst )
|
bool sort_tracklist( const DRAG_SEGM_PICKER& ref, const DRAG_SEGM_PICKER& tst )
|
||||||
{
|
{
|
||||||
return ref.m_Track < tst.m_Track;
|
return ref.m_Track < tst.m_Track;
|
||||||
}
|
}
|
||||||
/** Fills m_DragList with track segments connected to pads in aConnections
|
|
||||||
* For each selected track segment the EDIT flag is set
|
|
||||||
*/
|
void DRAG_LIST::fillList( CONNECTIONS& aConnections )
|
||||||
void DRAG_LIST::fillList(CONNECTIONS& aConnections)
|
|
||||||
{
|
{
|
||||||
aConnections.BuildTracksCandidatesList( m_Brd->m_Track, NULL);
|
aConnections.BuildTracksCandidatesList( m_Brd->m_Track, NULL);
|
||||||
|
|
||||||
|
@ -238,6 +234,7 @@ void DRAG_LIST::fillList(CONNECTIONS& aConnections)
|
||||||
track->end = pad;
|
track->end = pad;
|
||||||
track->SetState( END_ON_PAD, ON );
|
track->SetState( END_ON_PAD, ON );
|
||||||
}
|
}
|
||||||
|
|
||||||
DRAG_SEGM_PICKER wrapper( track );
|
DRAG_SEGM_PICKER wrapper( track );
|
||||||
m_DragList.push_back( wrapper );
|
m_DragList.push_back( wrapper );
|
||||||
}
|
}
|
||||||
|
@ -256,16 +253,18 @@ void DRAG_LIST::fillList(CONNECTIONS& aConnections)
|
||||||
for( int ii = 0; ii < (int)m_DragList.size()-1; ii++ )
|
for( int ii = 0; ii < (int)m_DragList.size()-1; ii++ )
|
||||||
{
|
{
|
||||||
int jj = ii+1;
|
int jj = ii+1;
|
||||||
|
|
||||||
if( m_DragList[ii].m_Track != m_DragList[jj].m_Track )
|
if( m_DragList[ii].m_Track != m_DragList[jj].m_Track )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// duplicate found: merge info and remove duplicate
|
// duplicate found: merge info and remove duplicate
|
||||||
if( m_DragList[ii].m_Pad_Start == NULL )
|
if( m_DragList[ii].m_Pad_Start == NULL )
|
||||||
m_DragList[ii].m_Pad_Start = m_DragList[jj].m_Pad_Start;
|
m_DragList[ii].m_Pad_Start = m_DragList[jj].m_Pad_Start;
|
||||||
|
|
||||||
if( m_DragList[ii].m_Pad_End == NULL )
|
if( m_DragList[ii].m_Pad_End == NULL )
|
||||||
m_DragList[ii].m_Pad_End = m_DragList[jj].m_Pad_End;
|
m_DragList[ii].m_Pad_End = m_DragList[jj].m_Pad_End;
|
||||||
|
|
||||||
m_DragList.erase(m_DragList.begin() + jj );
|
m_DragList.erase( m_DragList.begin() + jj );
|
||||||
ii--;
|
ii--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,6 +276,7 @@ void DRAG_LIST::fillList(CONNECTIONS& aConnections)
|
||||||
g_DragSegmentList = m_DragList;
|
g_DragSegmentList = m_DragList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DRAG_LIST::ClearList()
|
void DRAG_LIST::ClearList()
|
||||||
{
|
{
|
||||||
for( unsigned ii = 0; ii < m_DragList.size(); ii++ )
|
for( unsigned ii = 0; ii < m_DragList.size(); ii++ )
|
||||||
|
@ -305,11 +305,6 @@ void DrawSegmentWhileMovingFootprint( EDA_DRAW_PANEL* panel, wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function EraseDragList
|
|
||||||
* clear the .m_Flags of all track segments found in g_DragSegmentList
|
|
||||||
* and clear the list.
|
|
||||||
*/
|
|
||||||
void EraseDragList()
|
void EraseDragList()
|
||||||
{
|
{
|
||||||
for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ )
|
for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ )
|
||||||
|
@ -319,36 +314,26 @@ void EraseDragList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Add Track to the drag list, and erase it from screen
|
void AddSegmentToDragList( int flag, TRACK* aTrack )
|
||||||
* flag = STARTPOINT (if the point to drag is the start point of Track) or ENDPOINT
|
|
||||||
*/
|
|
||||||
void AddSegmentToDragList( int flag, TRACK* aTrack )
|
|
||||||
{
|
{
|
||||||
DRAG_SEGM_PICKER wrapper( aTrack );
|
DRAG_SEGM_PICKER wrapper( aTrack );
|
||||||
|
|
||||||
if( (flag & STARTPOINT) )
|
if( flag & STARTPOINT )
|
||||||
wrapper.m_Flag |= 1;
|
wrapper.m_Flag |= 1;
|
||||||
|
|
||||||
if( (flag & ENDPOINT) )
|
if( flag & ENDPOINT )
|
||||||
wrapper.m_Flag |= 2;
|
wrapper.m_Flag |= 2;
|
||||||
|
|
||||||
if( (flag & STARTPOINT) )
|
if( flag & STARTPOINT )
|
||||||
aTrack->SetFlags( STARTPOINT );
|
aTrack->SetFlags( STARTPOINT );
|
||||||
|
|
||||||
if( (flag & ENDPOINT) )
|
if( flag & ENDPOINT )
|
||||||
aTrack->SetFlags( ENDPOINT );
|
aTrack->SetFlags( ENDPOINT );
|
||||||
|
|
||||||
g_DragSegmentList.push_back( wrapper );
|
g_DragSegmentList.push_back( wrapper );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Build the list of tracks connected to the ref point
|
|
||||||
* Net codes must be up to date, because only tracks having the right net code are tested.
|
|
||||||
* aRefPos = reference point of connection
|
|
||||||
* aLayerMask = layers mask to collect tracks
|
|
||||||
* aNetCode = the net code to consider
|
|
||||||
* aMaxDist = max distance from aRefPos to a track end candidate to collect the track
|
|
||||||
*/
|
|
||||||
void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask,
|
void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLayerMask,
|
||||||
int aNetCode, int aMaxDist )
|
int aNetCode, int aMaxDist )
|
||||||
{
|
{
|
||||||
|
@ -371,12 +356,15 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye
|
||||||
if( (track->GetFlags() & STARTPOINT) == 0 )
|
if( (track->GetFlags() & STARTPOINT) == 0 )
|
||||||
{
|
{
|
||||||
wxPoint delta = track->GetStart() - 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 );
|
||||||
|
|
||||||
if( dist <= maxdist )
|
if( dist <= maxdist )
|
||||||
{
|
{
|
||||||
flag |= STARTPOINT;
|
flag |= STARTPOINT;
|
||||||
|
|
||||||
if( track->Type() == PCB_VIA_T )
|
if( track->Type() == PCB_VIA_T )
|
||||||
flag |= ENDPOINT;
|
flag |= ENDPOINT;
|
||||||
}
|
}
|
||||||
|
@ -386,15 +374,16 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye
|
||||||
if( (track->GetFlags() & ENDPOINT) == 0 )
|
if( (track->GetFlags() & ENDPOINT) == 0 )
|
||||||
{
|
{
|
||||||
wxPoint delta = track->GetEnd() - 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 );
|
||||||
|
|
||||||
if( dist <= maxdist )
|
if( dist <= maxdist )
|
||||||
flag |= ENDPOINT;
|
flag |= ENDPOINT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Note: vias will be flagged with both STARTPOINT and ENDPOINT
|
// Note: vias will be flagged with both STARTPOINT and ENDPOINT
|
||||||
// and must not be entered twice.
|
// and must not be entered twice.
|
||||||
if( flag )
|
if( flag )
|
||||||
|
@ -410,11 +399,7 @@ void Collect_TrackSegmentsToDrag( BOARD* aPcb, const wxPoint& aRefPos, int aLaye
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Undraw the track segments in list, and set the IN_EDIT flag
|
|
||||||
* Usually called after the track list is built, to prepare
|
|
||||||
* the redraw of the list when the mouse is moved
|
|
||||||
*/
|
|
||||||
void UndrawAndMarkSegmentsToDrag( EDA_DRAW_PANEL* aCanvas, wxDC* aDC )
|
void UndrawAndMarkSegmentsToDrag( EDA_DRAW_PANEL* aCanvas, wxDC* aDC )
|
||||||
{
|
{
|
||||||
for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ )
|
for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ )
|
||||||
|
@ -424,13 +409,12 @@ void UndrawAndMarkSegmentsToDrag( EDA_DRAW_PANEL* aCanvas, wxDC* aDC )
|
||||||
track->Draw( aCanvas, aDC, GR_XOR );
|
track->Draw( aCanvas, aDC, GR_XOR );
|
||||||
track->SetState( IN_EDIT, ON );
|
track->SetState( IN_EDIT, ON );
|
||||||
|
|
||||||
if( (g_DragSegmentList[ii].m_Flag & STARTPOINT) )
|
if( g_DragSegmentList[ii].m_Flag & STARTPOINT )
|
||||||
track->SetFlags( STARTPOINT );
|
track->SetFlags( STARTPOINT );
|
||||||
|
|
||||||
if( (g_DragSegmentList[ii].m_Flag & ENDPOINT) )
|
if( g_DragSegmentList[ii].m_Flag & ENDPOINT )
|
||||||
track->SetFlags( ENDPOINT );
|
track->SetFlags( ENDPOINT );
|
||||||
|
|
||||||
track->Draw( aCanvas, aDC, GR_XOR );
|
track->Draw( aCanvas, aDC, GR_XOR );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue