Teardrop: Simplify code.
This commit is contained in:
parent
1b42152ba0
commit
712b304da7
|
@ -94,6 +94,14 @@ public:
|
|||
}
|
||||
|
||||
~TEARDROP_DIALOG()
|
||||
{
|
||||
TransferToParamList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the settings from dialog to the current board settings
|
||||
*/
|
||||
void TransferToParamList()
|
||||
{
|
||||
int shape_seg_count = GetCurvePointCount();
|
||||
TEARDROP_PARAMETERS_LIST* prmsList = m_brdSettings->GetTeadropParamsList();
|
||||
|
@ -195,34 +203,10 @@ void PCB_EDIT_FRAME::OnRunTeardropTool( wxCommandEvent& event )
|
|||
|
||||
BOARD_COMMIT committer( this );
|
||||
|
||||
dlg.TransferToParamList();
|
||||
TEARDROP_MANAGER trdm( GetBoard(), this );
|
||||
|
||||
int shape_seg_count = dlg.GetCurvePointCount();
|
||||
|
||||
trdm.SetTeardropMaxSize( TARGET_ROUND, dlg.GetTeardropMaxLenRound(),
|
||||
dlg.GetTeardropMaxHeightRound() );
|
||||
trdm.SetTeardropSizeRatio( TARGET_ROUND, dlg.GetTeardropLenPercentRound(),
|
||||
dlg.GetTeardropSizePercentRound() );
|
||||
trdm.SetTeardropCurvedPrm( TARGET_ROUND, (dlg.CurvedShapeOption() & CURVED_OPTION_ROUND)
|
||||
? shape_seg_count : 0 );
|
||||
|
||||
trdm.SetTeardropMaxSize( TARGET_RECT, dlg.GetTeardropMaxLenRect(),
|
||||
dlg.GetTeardropMaxHeightRect() );
|
||||
trdm.SetTeardropSizeRatio( TARGET_RECT, dlg.GetTeardropLenPercentRect(),
|
||||
dlg.GetTeardropSizePercentRect() );
|
||||
trdm.SetTeardropCurvedPrm( TARGET_RECT, (dlg.CurvedShapeOption() & CURVED_OPTION_RECT)
|
||||
? shape_seg_count : 0 );
|
||||
|
||||
trdm.SetTeardropMaxSize( TARGET_TRACK, dlg.GetTeardropMaxLenTrack(),
|
||||
dlg.GetTeardropMaxHeightTrack() );
|
||||
trdm.SetTeardropSizeRatio( TARGET_TRACK, dlg.GetTeardropLenPercentTrack(),
|
||||
dlg.GetTeardropSizePercentTrack() );
|
||||
trdm.SetTeardropCurvedPrm( TARGET_TRACK, (dlg.CurvedShapeOption() & CURVED_OPTION_TRACK)
|
||||
? shape_seg_count : 0 );
|
||||
|
||||
const bool discardTeardropInSameZone = true;
|
||||
trdm.SetTargets( dlg.TeardropOnPadVia(), dlg.RoundShapesOnly(),
|
||||
dlg.IncludeNotPTH(), dlg.TeardropOnTracks() );
|
||||
|
||||
int added_count = trdm.SetTeardrops( &committer,
|
||||
discardTeardropInSameZone,
|
||||
|
|
|
@ -43,13 +43,11 @@
|
|||
#define MAGIC_TEARDROP_ZONE_ID 30000
|
||||
|
||||
|
||||
void TEARDROP_MANAGER::SetTargets( bool aApplyToPadVias, bool aApplyToRoundShapesOnly,
|
||||
bool aApplyToSurfacePads, bool aApplyToTracks )
|
||||
TEARDROP_MANAGER::TEARDROP_MANAGER( BOARD* aBoard, PCB_EDIT_FRAME* aFrame )
|
||||
{
|
||||
m_applyToViaPads = aApplyToPadVias;
|
||||
m_applyToRoundShapesOnly = aApplyToRoundShapesOnly;
|
||||
m_applyToSurfacePads = aApplyToSurfacePads;
|
||||
m_applyToTracks = aApplyToTracks;
|
||||
m_board = aBoard;
|
||||
m_prmsList = m_board->GetDesignSettings().GetTeadropParamsList();
|
||||
m_tolerance = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -101,10 +99,11 @@ int TEARDROP_MANAGER::SetTeardrops( BOARD_COMMIT* aCommitter,
|
|||
// (custom pads are not collected)
|
||||
std::vector< VIAPAD > viapad_list;
|
||||
|
||||
if( m_applyToViaPads )
|
||||
if( m_prmsList->m_TargetViasPads )
|
||||
collectVias( viapad_list );
|
||||
|
||||
collectPadsCandidate( viapad_list, m_applyToViaPads, m_applyToRoundShapesOnly, m_applyToSurfacePads );
|
||||
collectPadsCandidate( viapad_list, m_prmsList->m_TargetViasPads,
|
||||
m_prmsList->m_UseRoundShapesOnly, m_prmsList->m_TargetPadsWithNoHole );
|
||||
|
||||
TRACK_BUFFER trackLookupList;
|
||||
|
||||
|
@ -150,9 +149,9 @@ int TEARDROP_MANAGER::SetTeardrops( BOARD_COMMIT* aCommitter,
|
|||
TEARDROP_PARAMETERS* currParams;
|
||||
|
||||
if( viapad.m_IsRound )
|
||||
currParams = m_Parameters.GetParameters( TARGET_ROUND );
|
||||
currParams = m_prmsList->GetParameters( TARGET_ROUND );
|
||||
else
|
||||
currParams = m_Parameters.GetParameters( TARGET_RECT );
|
||||
currParams = m_prmsList->GetParameters( TARGET_RECT );
|
||||
|
||||
// Ensure a teardrop shape can be built:
|
||||
// The track width must be < teardrop height
|
||||
|
@ -185,7 +184,7 @@ int TEARDROP_MANAGER::SetTeardrops( BOARD_COMMIT* aCommitter,
|
|||
|
||||
int track2trackCount = 0;
|
||||
|
||||
if( m_applyToTracks )
|
||||
if( m_prmsList->m_TargetTrack2Track )
|
||||
track2trackCount = addTeardropsOnTracks( aCommitter );
|
||||
|
||||
// Now set priority of teardrops now all teardrops are added
|
||||
|
@ -263,7 +262,7 @@ int TEARDROP_MANAGER::addTeardropsOnTracks( BOARD_COMMIT* aCommitter )
|
|||
collectVias( viapad_list );
|
||||
collectPadsCandidate( viapad_list, true, true, true );
|
||||
|
||||
TEARDROP_PARAMETERS* currParams = m_Parameters.GetParameters( TARGET_TRACK );
|
||||
TEARDROP_PARAMETERS* currParams = m_prmsList->GetParameters( TARGET_TRACK );
|
||||
|
||||
// Explore groups (a group is a set of tracks on the same layer and the same net):
|
||||
for( auto grp : trackLookupList.GetBuffer() )
|
||||
|
|
|
@ -87,14 +87,7 @@ public:
|
|||
TD_TYPE_TRACKEND // specify a teardrop on a rond end of a wide track
|
||||
};
|
||||
|
||||
TEARDROP_MANAGER( BOARD* aBoard, PCB_EDIT_FRAME* aFrame ) :
|
||||
m_tolerance( 0 ),
|
||||
m_applyToViaPads( true ),
|
||||
m_applyToRoundShapesOnly( false ),
|
||||
m_applyToSurfacePads( true ),
|
||||
m_board( aBoard )
|
||||
{
|
||||
}
|
||||
TEARDROP_MANAGER( BOARD* aBoard, PCB_EDIT_FRAME* aFrame );
|
||||
|
||||
/**
|
||||
* Set teardrops on a teardrop free board
|
||||
|
@ -119,52 +112,6 @@ public:
|
|||
*/
|
||||
int RemoveTeardrops( BOARD_COMMIT* aCommitter, bool aCommitAfterRemove );
|
||||
|
||||
/**
|
||||
* Set max allowed length and height for teardrops in IU.
|
||||
* a value <= 0 disable the constraint
|
||||
*/
|
||||
void SetTeardropMaxSize( TARGET_TD aTdType, int aMaxLen, int aMaxHeight )
|
||||
{
|
||||
m_Parameters.GetParameters( aTdType )->SetTeardropMaxSize( aMaxLen, aMaxHeight );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set prefered length and height ratio for teardrops
|
||||
* the prefered length and height are VIAPAD width * aLenghtRatio and
|
||||
* VIAPAD width * aHeightRatio
|
||||
*/
|
||||
void SetTeardropSizeRatio( TARGET_TD aTdType, double aLenghtRatio = 0.5, double aHeightRatio = 1.0 )
|
||||
{
|
||||
m_Parameters.GetParameters( aTdType )->SetTeardropSizeRatio( aLenghtRatio, aHeightRatio );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the params for teardrop using curved shape
|
||||
* note: if aSegCount is < 3, the shape uses a straight line
|
||||
*/
|
||||
void SetTeardropCurvedPrm( TARGET_TD aTdType, int aCurveSegCount = 0 )
|
||||
{
|
||||
m_Parameters.GetParameters( aTdType )->SetTeardropCurvedPrm( aCurveSegCount );
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the items used to add a teardrop
|
||||
* @param aApplyToPadVias = true to add Td to vias and PTH
|
||||
* @param aApplyToRoundShapesOnly = true to restrict Td on round PTH
|
||||
* @param aApplyToSurfacePads = true to add Td to not drilled pads (like SMD)
|
||||
* @param aApplyToTracks = true to add Td to tracks connected point when having
|
||||
* different sizes
|
||||
*/
|
||||
void SetTargets( bool aApplyToPadVias, bool aApplyToRoundShapesOnly,
|
||||
bool aApplyToSurfacePads, bool aApplyToTracks );
|
||||
|
||||
/**
|
||||
* the list of available TEARDROP_PARAMETERS items
|
||||
* at least for round, rect PADVIA shapes and tracks
|
||||
*/
|
||||
TEARDROP_PARAMETERS_LIST m_Parameters;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -301,12 +248,8 @@ private:
|
|||
private:
|
||||
int m_tolerance; // max distance between a track end point and a pad/via center to
|
||||
// see them connected to ut a teardrop
|
||||
bool m_applyToViaPads; // true to add a teardrop to vias and PTH pads
|
||||
bool m_applyToRoundShapesOnly; // true to add a teardrop to round pads only
|
||||
bool m_applyToSurfacePads; // true to add a teardrop not drilled pads (like SMD)
|
||||
bool m_applyToTracks; // true to add a teardrop to connected point of 2 tracks
|
||||
// having different width
|
||||
BOARD* m_board;
|
||||
TEARDROP_PARAMETERS_LIST* m_prmsList; // the teardrop parameters list, from the board desing settings
|
||||
std::vector<ZONE*> m_createdTdList; // list of new created teardrops
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue