Coding policy and Doxygen comment fixes.

This commit is contained in:
Wayne Stambaugh 2023-12-18 08:32:41 -05:00
parent 421cf3d344
commit 25c03da5a5
4 changed files with 315 additions and 198 deletions

View File

@ -56,172 +56,52 @@ namespace AC_STACK
/** /**
* List of known keys for advanced configuration options. * List of known keys for advanced configuration options.
* *
* Set these options in the file `kicad_advanced` in the * Set these options in the file `kicad_advanced` in the KiCad configuration directory.
* KiCad config directory.
*/ */
namespace AC_KEYS namespace AC_KEYS
{ {
/**
* Should the schematic use the new incremental connectivity algorithm
*/
static const wxChar IncrementalConnectivity[] = wxT( "IncrementalConnectivity" ); static const wxChar IncrementalConnectivity[] = wxT( "IncrementalConnectivity" );
/**
* Decide whether to attempt usage of the 3DConnexion mouse
*/
static const wxChar Use3DConnexionDriver[] = wxT( "3DConnexionDriver" ); static const wxChar Use3DConnexionDriver[] = wxT( "3DConnexionDriver" );
/**
* When filling zones, we add an extra amount of clearance to each zone to ensure that rounding
* errors do not overrun minimum clearance distances. This is the extra in mm.
*/
static const wxChar ExtraFillMargin[] = wxT( "ExtraFillMargin" ); static const wxChar ExtraFillMargin[] = wxT( "ExtraFillMargin" );
/**
* A fudge factor for DRC. Required to prevent false positives due to rounding errors, errors
* in polygonalization, etc.
* Previous versions hard-coded various values from 0.000005mm to 0.002mm.
*/
static const wxChar DRCEpsilon[] = wxT( "DRCEpsilon" ); static const wxChar DRCEpsilon[] = wxT( "DRCEpsilon" );
/**
* Angle and width tolerances for copper and solder mask sliver detection.
*/
static const wxChar DRCSliverWidthTolerance[] = wxT( "DRCSliverWidthTolerance" ); static const wxChar DRCSliverWidthTolerance[] = wxT( "DRCSliverWidthTolerance" );
static const wxChar DRCSliverMinimumLength[] = wxT( "DRCSliverMinimumLength" ); static const wxChar DRCSliverMinimumLength[] = wxT( "DRCSliverMinimumLength" );
static const wxChar DRCSliverAngleTolerance[] = wxT( "DRCSliverAngleTolerance" ); static const wxChar DRCSliverAngleTolerance[] = wxT( "DRCSliverAngleTolerance" );
/**
* Used to calculate the actual hole size from the finish hole size.
* IPC-6012 says 0.015-0.018mm; Cadence says at least 0.020mm for a Class 2 board and at least
* 0.025mm for Class 3.
*/
static const wxChar HoleWallThickness[] = wxT( "HoleWallPlatingThickness" ); static const wxChar HoleWallThickness[] = wxT( "HoleWallPlatingThickness" );
/**
* Configure the coroutine stack size in bytes. This should be allocated in multiples of
* the system page size (n*4096 is generally safe)
*/
static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" ); static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" );
/**
* Show PNS router debug graphics while routing
*/
static const wxChar ShowRouterDebugGraphics[] = wxT( "ShowRouterDebugGraphics" ); static const wxChar ShowRouterDebugGraphics[] = wxT( "ShowRouterDebugGraphics" );
/**
* Enable PNS router to dump state information for debug purpose (press `0` while routing)
*/
static const wxChar EnableRouterDump[] = wxT( "EnableRouterDump" ); static const wxChar EnableRouterDump[] = wxT( "EnableRouterDump" );
/**
* Slide the zoom steps over for debugging things "up close".
*/
static const wxChar HyperZoom[] = wxT( "HyperZoom" ); static const wxChar HyperZoom[] = wxT( "HyperZoom" );
/**
* When set to true, this will wrap polygon point sets at 4 points per line rather
* than a single point per line. Single point per line helps with version control systems
*/
static const wxChar CompactFileSave[] = wxT( "CompactSave" ); static const wxChar CompactFileSave[] = wxT( "CompactSave" );
/**
* For drawsegments - arcs.
* Distance from an arc end point and the estimated end point,
* when rotating from the start point to the end point.
* 0 will not allow any approximate result, and the arc will not show.
* Squared value for performances, in system unit.
*/
static const wxChar DrawArcAccuracy[] = wxT( "DrawArcAccuracy" ); static const wxChar DrawArcAccuracy[] = wxT( "DrawArcAccuracy" );
/**
* For drawsegments - arcs.
* When drawing an arc, the angle ( center - start ) - ( start - end ),
* can be limited to avoid extremely high radii.
* The value is the tan( angle )
*/
static const wxChar DrawArcCenterStartEndMaxAngle[] = wxT( "DrawArcCenterStartEndMaxAngle" ); static const wxChar DrawArcCenterStartEndMaxAngle[] = wxT( "DrawArcCenterStartEndMaxAngle" );
/**
* For arc track interactive drag-resizing
* Maximum angle between the tangent line of an arc track and a connected straight track
* in order to commence arc dragging. Units are degrees.
*/
static const wxChar MaxTangentTrackAngleDeviation[] = wxT( "MaxTangentTrackAngleDeviation" ); static const wxChar MaxTangentTrackAngleDeviation[] = wxT( "MaxTangentTrackAngleDeviation" );
/**
* For arc track interactive drag-resizing
* Maximum track length to keep after doing an arc track resizing operation. Units are mm.
*/
static const wxChar MaxTrackLengthToKeep[] = wxT( "MaxTrackLengthToKeep" ); static const wxChar MaxTrackLengthToKeep[] = wxT( "MaxTrackLengthToKeep" );
/**
* When true, GAL will stroke the triangulations (only used in OpenGL) with a visible color
*/
static const wxChar StrokeTriangulation[] = wxT( "StrokeTriangulation" ); static const wxChar StrokeTriangulation[] = wxT( "StrokeTriangulation" );
/**
* When true, a third zone-display-mode is included which strokes the filled areas and fracture
* boundaries.
*/
static const wxChar ExtraZoneDisplayModes[] = wxT( "ExtraZoneDisplayModes" ); static const wxChar ExtraZoneDisplayModes[] = wxT( "ExtraZoneDisplayModes" );
/**
* Absolute minimum pen width to send to the plotter. PDF seems happy enough with 0.0212mm
* (which equates to 1px @ 1200dpi).
*/
static const wxChar MinPlotPenWidth[] = wxT( "MinPlotPenWidth" ); static const wxChar MinPlotPenWidth[] = wxT( "MinPlotPenWidth" );
static const wxChar DebugZoneFiller[] = wxT( "DebugZoneFiller" ); static const wxChar DebugZoneFiller[] = wxT( "DebugZoneFiller" );
static const wxChar DebugPDFWriter[] = wxT( "DebugPDFWriter" ); static const wxChar DebugPDFWriter[] = wxT( "DebugPDFWriter" );
/**
* The diameter of the drill marks on print and plot outputs (in mm),
* when the "Drill marks" option is set to "Small mark"
*/
static const wxChar SmallDrillMarkSize[] = wxT( "SmallDrillMarkSize" ); static const wxChar SmallDrillMarkSize[] = wxT( "SmallDrillMarkSize" );
static const wxChar HotkeysDumper[] = wxT( "HotkeysDumper" ); static const wxChar HotkeysDumper[] = wxT( "HotkeysDumper" );
static const wxChar DrawBoundingBoxes[] = wxT( "DrawBoundingBoxes" ); static const wxChar DrawBoundingBoxes[] = wxT( "DrawBoundingBoxes" );
static const wxChar ShowPcbnewExportNetlist[] = wxT( "ShowPcbnewExportNetlist" ); static const wxChar ShowPcbnewExportNetlist[] = wxT( "ShowPcbnewExportNetlist" );
static const wxChar Skip3DModelFileCache[] = wxT( "Skip3DModelFileCache" ); static const wxChar Skip3DModelFileCache[] = wxT( "Skip3DModelFileCache" );
static const wxChar Skip3DModelMemoryCache[] = wxT( "Skip3DModelMemoryCache" ); static const wxChar Skip3DModelMemoryCache[] = wxT( "Skip3DModelMemoryCache" );
static const wxChar HideVersionFromTitle[] = wxT( "HideVersionFromTitle" ); static const wxChar HideVersionFromTitle[] = wxT( "HideVersionFromTitle" );
static const wxChar TraceMasks[] = wxT( "TraceMasks" ); static const wxChar TraceMasks[] = wxT( "TraceMasks" );
static const wxChar ShowRepairSchematic[] = wxT( "ShowRepairSchematic" ); static const wxChar ShowRepairSchematic[] = wxT( "ShowRepairSchematic" );
static const wxChar ShowEventCounters[] = wxT( "ShowEventCounters" ); static const wxChar ShowEventCounters[] = wxT( "ShowEventCounters" );
static const wxChar AllowManualCanvasScale[] = wxT( "AllowManualCanvasScale" ); static const wxChar AllowManualCanvasScale[] = wxT( "AllowManualCanvasScale" );
static const wxChar UpdateUIEventInterval[] = wxT( "UpdateUIEventInterval" ); static const wxChar UpdateUIEventInterval[] = wxT( "UpdateUIEventInterval" );
static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" ); static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" );
static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" ); static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" );
static const wxChar UseClipper2[] = wxT( "UseClipper2" ); static const wxChar UseClipper2[] = wxT( "UseClipper2" );
static const wxChar EnableGenerators[] = wxT( "EnableGenerators" ); static const wxChar EnableGenerators[] = wxT( "EnableGenerators" );
static const wxChar EnableGit[] = wxT( "EnableGit" ); static const wxChar EnableGit[] = wxT( "EnableGit" );
static const wxChar EnableEeschemaPrintCairo[] = wxT( "EnableEeschemaPrintCairo" ); static const wxChar EnableEeschemaPrintCairo[] = wxT( "EnableEeschemaPrintCairo" );
/**
* The time in milliseconds to wait before displaying a disambiguation menu.
*/
static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" ); static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" );
static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" ); static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" );
} // namespace KEYS } // namespace KEYS
@ -394,7 +274,8 @@ void ADVANCED_CFG::loadFromConfigFile()
return; return;
} }
wxLogTrace( AdvancedConfigMask, wxS( "Loading advanced config from: %s" ), k_advanced.GetFullPath() ); wxLogTrace( AdvancedConfigMask, wxS( "Loading advanced config from: %s" ),
k_advanced.GetFullPath() );
wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() ); wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() );
loadSettings( file_cfg ); loadSettings( file_cfg );
@ -406,32 +287,39 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
std::vector<PARAM_CFG*> configParams; std::vector<PARAM_CFG*> configParams;
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::ExtraFillMargin, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::ExtraFillMargin,
&m_ExtraClearance, m_ExtraClearance, 0.0, 1.0 ) ); &m_ExtraClearance,
m_ExtraClearance, 0.0, 1.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCEpsilon, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCEpsilon,
&m_DRCEpsilon, m_DRCEpsilon, 0.0, 1.0 ) ); &m_DRCEpsilon, m_DRCEpsilon, 0.0, 1.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverWidthTolerance, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverWidthTolerance,
&m_SliverWidthTolerance, m_SliverWidthTolerance, 0.01, 0.25 ) ); &m_SliverWidthTolerance, m_SliverWidthTolerance,
0.01, 0.25 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverMinimumLength, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverMinimumLength,
&m_SliverMinimumLength, m_SliverMinimumLength, 1e-9, 10 ) ); &m_SliverMinimumLength, m_SliverMinimumLength,
1e-9, 10 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverAngleTolerance, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverAngleTolerance,
&m_SliverAngleTolerance, m_SliverAngleTolerance, 1.0, 90.0 ) ); &m_SliverAngleTolerance, m_SliverAngleTolerance,
1.0, 90.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::HoleWallThickness, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::HoleWallThickness,
&m_HoleWallThickness, m_HoleWallThickness, 0.0, 1.0 ) ); &m_HoleWallThickness, m_HoleWallThickness,
0.0, 1.0 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize, configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize,
&m_CoroutineStackSize, AC_STACK::default_stack, &m_CoroutineStackSize, AC_STACK::default_stack,
AC_STACK::min_stack, AC_STACK::max_stack ) ); AC_STACK::min_stack, AC_STACK::max_stack ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::UpdateUIEventInterval, configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::UpdateUIEventInterval,
&m_UpdateUIEventInterval, m_UpdateUIEventInterval, -1, 100000 ) ); &m_UpdateUIEventInterval, m_UpdateUIEventInterval,
-1, 100000 ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRouterDebugGraphics, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRouterDebugGraphics,
&m_ShowRouterDebugGraphics, m_ShowRouterDebugGraphics ) ); &m_ShowRouterDebugGraphics,
m_ShowRouterDebugGraphics ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableRouterDump, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableRouterDump,
&m_EnableRouterDump, m_EnableRouterDump ) ); &m_EnableRouterDump, m_EnableRouterDump ) );
@ -443,25 +331,32 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_CompactSave, m_CompactSave ) ); &m_CompactSave, m_CompactSave ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcAccuracy, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcAccuracy,
&m_DrawArcAccuracy, m_DrawArcAccuracy, 0.0, 100000.0 ) ); &m_DrawArcAccuracy, m_DrawArcAccuracy,
0.0, 100000.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcCenterStartEndMaxAngle, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcCenterStartEndMaxAngle,
&m_DrawArcCenterMaxAngle, m_DrawArcCenterMaxAngle, 0.0, 100000.0 ) ); &m_DrawArcCenterMaxAngle,
m_DrawArcCenterMaxAngle, 0.0, 100000.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTangentTrackAngleDeviation, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTangentTrackAngleDeviation,
&m_MaxTangentAngleDeviation, m_MaxTangentAngleDeviation, 0.0, 90.0 ) ); &m_MaxTangentAngleDeviation,
m_MaxTangentAngleDeviation, 0.0, 90.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTrackLengthToKeep, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTrackLengthToKeep,
&m_MaxTrackLengthToKeep, m_MaxTrackLengthToKeep, 0.0, 1.0 ) ); &m_MaxTrackLengthToKeep, m_MaxTrackLengthToKeep,
0.0, 1.0 ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ExtraZoneDisplayModes, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ExtraZoneDisplayModes,
&m_ExtraZoneDisplayModes, m_ExtraZoneDisplayModes ) ); &m_ExtraZoneDisplayModes,
m_ExtraZoneDisplayModes ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::StrokeTriangulation, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::StrokeTriangulation,
&m_DrawTriangulationOutlines, m_DrawTriangulationOutlines ) ); &m_DrawTriangulationOutlines,
m_DrawTriangulationOutlines ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinPlotPenWidth, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinPlotPenWidth,
&m_MinPlotPenWidth, m_MinPlotPenWidth, 0.0, 1.0 ) ); &m_MinPlotPenWidth, m_MinPlotPenWidth,
0.0, 1.0 ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugZoneFiller, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugZoneFiller,
&m_DebugZoneFiller, m_DebugZoneFiller ) ); &m_DebugZoneFiller, m_DebugZoneFiller ) );
@ -470,7 +365,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_DebugPDFWriter, m_DebugPDFWriter ) ); &m_DebugPDFWriter, m_DebugPDFWriter ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::SmallDrillMarkSize, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::SmallDrillMarkSize,
&m_SmallDrillMarkSize, m_SmallDrillMarkSize, 0.0, 3.0 ) ); &m_SmallDrillMarkSize, m_SmallDrillMarkSize,
0.0, 3.0 ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HotkeysDumper, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HotkeysDumper,
&m_HotkeysDumper, m_HotkeysDumper ) ); &m_HotkeysDumper, m_HotkeysDumper ) );
@ -479,7 +375,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_DrawBoundingBoxes, m_DrawBoundingBoxes ) ); &m_DrawBoundingBoxes, m_DrawBoundingBoxes ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowPcbnewExportNetlist, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowPcbnewExportNetlist,
&m_ShowPcbnewExportNetlist, m_ShowPcbnewExportNetlist ) ); &m_ShowPcbnewExportNetlist,
m_ShowPcbnewExportNetlist ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelFileCache, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelFileCache,
&m_Skip3DModelFileCache, m_Skip3DModelFileCache ) ); &m_Skip3DModelFileCache, m_Skip3DModelFileCache ) );
@ -497,7 +394,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_ShowEventCounters, m_ShowEventCounters ) ); &m_ShowEventCounters, m_ShowEventCounters ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::AllowManualCanvasScale, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::AllowManualCanvasScale,
&m_AllowManualCanvasScale, m_AllowManualCanvasScale ) ); &m_AllowManualCanvasScale,
m_AllowManualCanvasScale ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::V3DRT_BevelHeight_um, configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::V3DRT_BevelHeight_um,
&m_3DRT_BevelHeight_um, m_3DRT_BevelHeight_um, &m_3DRT_BevelHeight_um, m_3DRT_BevelHeight_um,
@ -505,8 +403,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
AC_GROUPS::V3D_RayTracing ) ); AC_GROUPS::V3D_RayTracing ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::V3DRT_BevelExtentFactor, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::V3DRT_BevelExtentFactor,
&m_3DRT_BevelExtentFactor, m_3DRT_BevelExtentFactor, &m_3DRT_BevelExtentFactor,
0.0, 100.0, m_3DRT_BevelExtentFactor, 0.0, 100.0,
AC_GROUPS::V3D_RayTracing ) ); AC_GROUPS::V3D_RayTracing ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::UseClipper2, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::UseClipper2,
@ -516,11 +414,13 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_Use3DConnexionDriver, m_Use3DConnexionDriver ) ); &m_Use3DConnexionDriver, m_Use3DConnexionDriver ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::IncrementalConnectivity, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::IncrementalConnectivity,
&m_IncrementalConnectivity, m_IncrementalConnectivity ) ); &m_IncrementalConnectivity,
m_IncrementalConnectivity ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::DisambiguationTime, configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::DisambiguationTime,
&m_DisambiguationMenuDelay, m_DisambiguationMenuDelay, &m_DisambiguationMenuDelay,
50, 10000 ) ); m_DisambiguationMenuDelay,
50, 10000 ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGenerators, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGenerators,
&m_EnableGenerators, m_EnableGenerators ) ); &m_EnableGenerators, m_EnableGenerators ) );
@ -529,8 +429,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_EnableGit, m_EnableGit ) ); &m_EnableGit, m_EnableGit ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableEeschemaPrintCairo, configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableEeschemaPrintCairo,
&m_EnableEeschemaPrintCairo, m_EnableEeschemaPrintCairo ) ); &m_EnableEeschemaPrintCairo,
m_EnableEeschemaPrintCairo ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::PcbSelectionVisibilityRatio, configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::PcbSelectionVisibilityRatio,
&m_PcbSelectionVisibilityRatio, &m_PcbSelectionVisibilityRatio,
@ -539,7 +439,8 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
// Special case for trace mask setting...we just grab them and set them immediately // Special case for trace mask setting...we just grab them and set them immediately
// Because we even use wxLogTrace inside of advanced config // Because we even use wxLogTrace inside of advanced config
wxString traceMasks; wxString traceMasks;
configParams.push_back( new PARAM_CFG_WXSTRING( true, AC_KEYS::TraceMasks, &traceMasks, wxS( "" ) ) ); configParams.push_back( new PARAM_CFG_WXSTRING( true, AC_KEYS::TraceMasks, &traceMasks,
wxS( "" ) ) );
// Load the config from file // Load the config from file
wxConfigLoadSetups( &aCfg, configParams ); wxConfigLoadSetups( &aCfg, configParams );

View File

@ -77,210 +77,410 @@ public:
/** /**
* Distance from an arc end point and the estimated end point, when rotating from the * Distance from an arc end point and the estimated end point, when rotating from the
* start point to the end point. * start point to the end point.
*
* Setting name: "DrawArcAccuracy"
* Valid values: 0 to 100000
* Default value: 10
*/ */
double m_DrawArcAccuracy; double m_DrawArcAccuracy;
/** /**
* When drawing an arc, the angle ( center - start ) - ( start - end ) can be limited to * When drawing an arc, the angle ( center - start ) - ( start - end ) can be limited to
* avoid extremely high radii. * avoid extremely high radii.
*
* Setting name: "DrawArcCenterStartEndMaxAngle"
* Valid values: 0 to 100000
* Default value: 50
*/ */
double m_DrawArcCenterMaxAngle; double m_DrawArcCenterMaxAngle;
/** /**
* Maximum angle between the tangent line of an arc track and a connected straight track * Maximum angle between the tangent line of an arc track and a connected straight track
* in order to commence arc dragging. Units are degrees. * in order to commence arc dragging. Units are degrees.
*
* Setting name: "MaxTangentTrackAngleDeviation"
* Valid values: 0 to 90
* Default value: 1
*/ */
double m_MaxTangentAngleDeviation; double m_MaxTangentAngleDeviation;
/** /**
* Maximum track length to keep after doing an arc track resizing operation. Units are mm. * Maximum track length to keep after doing an arc track resizing operation. Units are mm.
*
* Setting name: "MaxTrackLengthToKeep"
* Valid values: 0 to 1
* Default value: 0.0005
*/ */
double m_MaxTrackLengthToKeep; double m_MaxTrackLengthToKeep;
/** /**
* Extra fill clearance for zone fills. Note that for zone tests this is essentially * When filling zones, we add an extra amount of clearance to each zone to ensure that
* additive with m_DRCEpsilon. Units are mm. * rounding errors do not overrun minimum clearance distances.
*
* This is the extra clearance in mm.
*
* Setting name: "ExtraFillMargin"
* Valid values: 0 to 1
* Default value: 0.0005
*/ */
double m_ExtraClearance; double m_ExtraClearance;
/** /**
* Epsilon for DRC tests. Note that for zone tests this is essentially additive with * Epsilon for DRC tests.
* m_ExtraClearance. Units are mm. *
* @note Fo zone tests this is essentially additive with #m_ExtraClearance. Units are mm.
*
* Setting name: "DRCEpsilon"
* Valid values: 0 to 1
* Default value: 0.0005
*/ */
double m_DRCEpsilon; double m_DRCEpsilon;
/** /**
* Sliver tolerances for DRC. Units are mm and deg. * Sliver width tolerance for DRC.
*
* Units are mm.
*
* Setting name: "DRCSliverWidthTolerance"
* Valid values: 0.01 to 0.25
* Default value: 0.08
*/ */
double m_SliverWidthTolerance; double m_SliverWidthTolerance;
double m_SliverMinimumLength;
double m_SliverAngleTolerance;
/** /**
* Hole wall plating thickness. Used to determine actual hole size from finish hole size. * Sliver length tolerance for DRC.
*
* Units are mm. * Units are mm.
*
* Setting name: "DRCSliverMinimumLength"
* Valid values: 1e-9 to 10
* Default value: 0.0008
*/
double m_SliverMinimumLength;
/**
* Sliver angle to tolerance for DRC.
*
* Units are mm.
*
* Setting name: "DRCSliverAngleTolerance"
* Valid values: 1 to 90
* Default value: 20
*/
double m_SliverAngleTolerance;
/**
* Dimension used to calculate the actual hole size from the finish hole size.
*
* @note IPC-6012 says 0.015-0.018mm; Cadence says at least 0.020mm for a Class 2 board and
* at least 0.025mm for Class 3. Units are mm.
*
* Setting name: "HoleWallPlatingThickness"
* Valid values: 1 to 90
* Default value: 0.02
*/ */
double m_HoleWallThickness; double m_HoleWallThickness;
/** /**
* Set the stack size for coroutines * Configure the coroutine stack size in bytes.
*
* @note This should be allocated in multiples of the system page size (n*4096 is generally
* safe)
*
* Setting name: "CoroutineStackSize"
* Valid values: 32 * 4096 to 4096 * 4096
* Default value: 256 * 4096
*/ */
int m_CoroutineStackSize; int m_CoroutineStackSize;
/** /**
* The update interval the wxWidgets sends wxUpdateUIEvents to windows. * The update interval the wxWidgets sends wxUpdateUIEvents to windows.
* *
* The default is 0. Setting this to -1 will disable all automatic UI events. Any other * Setting this to -1 will disable all automatic UI events. Any other
* value is the number of milliseconds between events. * value is the number of milliseconds between events.
* *
* @see https://docs.wxwidgets.org/3.0/classwx_update_u_i_event.html#a24daac56f682b866baac592e761ccede. * @see https://docs.wxwidgets.org/3.0/classwx_update_u_i_event.html#a24daac56f682b866baac592e761ccede.
*
* Setting name: "UpdateUIEventInterval"
* Valid values: -1 to 100000
* Default value: 0
*/ */
int m_UpdateUIEventInterval; int m_UpdateUIEventInterval;
/** /**
* Show PNS router debug graphics * Show PNS router debug graphics while routing
*
* Setting name: "ShowRouterDebugGraphics"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_ShowRouterDebugGraphics; bool m_ShowRouterDebugGraphics;
/** /**
* Enable PNS router to dump state information for debug purpose (press `0` while routing) * Enable PNS router to dump state information for debug purpose (press `0` while routing)
*
* Setting name: "EnableRouterDump"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_EnableRouterDump; bool m_EnableRouterDump;
/** /**
* Slide the zoom steps over for debugging things "up close". * Slide the zoom steps over for debugging things "up close".
*
* Setting name: "EnableRouterDump"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_HyperZoom; bool m_HyperZoom;
/** /**
* Save files in compact display mode * Save files in compact display mode
* When is is not specified, points are written one per line *
* When set to true, this will wrap polygon point sets at 4 points per line rather
* than a single point per line. Single point per line helps with version control systems.
*
* Setting name: "CompactSave"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_CompactSave; bool m_CompactSave;
/** /**
* When true, strokes the triangulations with visible color * Enable drawing the triangulation outlines with a visible color.
*
* @note This only affects the OpenGL GAL.
*
* Setting name: "StrokeTriangulation"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_DrawTriangulationOutlines; bool m_DrawTriangulationOutlines;
/** /**
* When true, adds zone-display-modes for stroking the zone fracture boundaries and the zone * When true, adds zone-display-modes for stroking the zone fracture boundaries and the zone
* triangulation. * triangulation.
*
* Setting name: "ExtraZoneDisplayModes"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_ExtraZoneDisplayModes; bool m_ExtraZoneDisplayModes;
/** /**
* Sets an absolute minimum pen width for plotting. Some formats (PDF, for example) don't * Absolute minimum pen width for plotting.
* like ultra-thin lines. Units are mm. *
* @note Some formats (PDF, for example) don't like ultra-thin lines. PDF seems happy
* enough with 0.0212mm which equates to 1px @ 1200dpi. Units are mm.
*
* Setting name: "MinPlotPenWidth"
* Valid values: 0 to 1
* Default value: 0.0212
*/ */
double m_MinPlotPenWidth; double m_MinPlotPenWidth;
/** /**
* A mode that dumps the various stages of a F_Cu fill into In1_Cu through In9_Cu. * A mode that dumps the various stages of a F_Cu fill into In1_Cu through In9_Cu.
*
* Setting name: "DebugZoneFiller"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_DebugZoneFiller; bool m_DebugZoneFiller;
/** /**
* A mode that writes PDFs without compression. * A mode that writes PDFs without compression.
*
* Setting name: "DebugPDFWriter"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_DebugPDFWriter; bool m_DebugPDFWriter;
/** /**
* The diameter of the drill marks on print and plot outputs (in mm), * The diameter of the drill marks on print and plot outputs (in mm) when the "Drill marks"
* when the "Drill marks" option is set to "Small mark" * option is set to "Small mark".
*
* Setting name: "SmallDrillMarkSize"
* Valid values: 0 to 3
* Default value: 0.35
*/ */
double m_SmallDrillMarkSize; double m_SmallDrillMarkSize;
/** /**
* Enable the hotkeys dumper feature, used for generating documentation * Enable the hotkeys dumper feature for generating documentation.
*
* Setting name: "HotkeysDumper"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_HotkeysDumper; bool m_HotkeysDumper;
/** /**
* Draw GAL bounding boxes in painters * Draw GAL bounding boxes in painters.
*
* Setting name: "DrawBoundingBoxes"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_DrawBoundingBoxes; bool m_DrawBoundingBoxes;
/** /**
* Enable exporting board editor netlist to a file for troubleshooting purposes. * Enable exporting board editor netlist to a file for troubleshooting purposes.
*
* Setting name: "ShowPcbnewExportNetlist"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_ShowPcbnewExportNetlist; bool m_ShowPcbnewExportNetlist;
/** /**
* Skip reading/writing 3d model file caches * Skip reading/writing 3D model file caches.
* This does not prevent the models from being cached in memory meaning reopening the 3d viewer *
* in the same project session will not reload model data from disk again. * This does not prevent the models from being cached in memory meaning reopening the 3D
* viewer in the same project session will not reload model data from disk again.
*
* Setting name: "Skip3DModelFileCache"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_Skip3DModelFileCache; bool m_Skip3DModelFileCache;
/** /**
* Skip reading/writing 3d model memory caches * Skip reading/writing 3D model memory caches.
* This ensures 3d models are always reloaded from disk even if we previously opened the 3d &
* This ensures 3D models are always reloaded from disk even if we previously opened the 3D
* viewer. * viewer.
*
* Setting name: "Skip3DModelMemoryCache"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_Skip3DModelMemoryCache; bool m_Skip3DModelMemoryCache;
/** /**
* Hides the build version from the KiCad manager frame title. * Hide the build version from the KiCad manager frame title.
*
* Useful for making screenshots/videos of KiCad without pinning to a specific version. * Useful for making screenshots/videos of KiCad without pinning to a specific version.
*
* Setting name: "HideVersionFromTitle"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_HideVersionFromTitle; bool m_HideVersionFromTitle;
/**
* Enable showing schematic repair output.
*
* Setting name: "ShowRepairSchematic"
* Valid values: 0 or 1
* Default value: 0
*/
bool m_ShowRepairSchematic; bool m_ShowRepairSchematic;
/** /**
* Shows debugging event counters in various places. * Shows debugging event counters in various places.
*
* Setting name: "ShowEventCounters"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_ShowEventCounters; bool m_ShowEventCounters;
/**
* Allow manual scaling of canvas.
*
* Setting name: "AllowManualCanvasScale"
* Valid values: 0 or 1
* Default value: 0
*/
bool m_AllowManualCanvasScale; bool m_AllowManualCanvasScale;
/** /**
* 3D-Viewer, Raytracing * Set the bevel height of layer items in 3D viewer when ray tracing.
* Bevel height of layer items. Controls the start of curvature normal on the edge. *
* Value is in micrometer. Good values should be around or less than the copper thickness. * Controls the start of curvature normal on the edge. The value is in micrometer. Good
* values should be around or less than the copper thickness.
*
* Setting name: "V3DRT_BevelHeight_um"
* Valid values: 0 to std::numeric_limits<int>::max()
* Default value: 30
*/ */
int m_3DRT_BevelHeight_um; int m_3DRT_BevelHeight_um;
/** /**
* 3D-Viewer raytracing factor applied to Extent.z of the item layer. * 3D-Viewer raytracing factor applied to Extent.z of the item layer.
* *
* This is used on calculation of the bevel's height. * This is used for calculating the bevel's height.
*
* Setting name: "V3DRT_BevelHeight_um"
* Valid values: 0 to 100
* Default value: 1/16
*/ */
double m_3DRT_BevelExtentFactor; double m_3DRT_BevelExtentFactor;
/** /**
* Use Clipper2 instead of Clipper1 * Use Clipper2 instead of Clipper1.
*
* Setting name: "UseClipper2"
* Valid values: 0 or 1
* Default value: 1
*/ */
bool m_UseClipper2; bool m_UseClipper2;
/** /**
* Use the 3DConnexion Driver * Use the 3DConnexion Driver.
*
* Setting name: "3DConnexionDriver"
* Valid values: 0 or 1
* Default value: 1
*/ */
bool m_Use3DConnexionDriver; bool m_Use3DConnexionDriver;
/** /**
* Use the new incremental netlister for realtime jobs * Use the new incremental netlister for realtime jobs.
*
* Setting name: "IncrementalConnectivity"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_IncrementalConnectivity; bool m_IncrementalConnectivity;
/** /**
* The number of milliseconds to wait in a click before showing a disambiguation menu. * The number of milliseconds to wait in a click before showing a disambiguation menu.
*
* Setting name: "DisambiguationTime"
* Valid values: 50 or 10000
* Default value: 300
*/ */
int m_DisambiguationMenuDelay; int m_DisambiguationMenuDelay;
/** /**
* When true, enable support for generators * Enable support for generators.
*
* Setting name: "EnableGenerators"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_EnableGenerators; bool m_EnableGenerators;
/** /**
* When true, enable git integration * Enable git integration.
*
* Setting name: "EnableGit"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_EnableGit; bool m_EnableGit;
/** /**
* When true, enable Eeschema printing using Cairo * Enable Eeschema printing using Cairo.
*
* Setting name: "EnableEeschemaPrintCairo"
* Valid values: 0 or 1
* Default value: 0
*/ */
bool m_EnableEeschemaPrintCairo; bool m_EnableEeschemaPrintCairo;
@ -293,7 +493,9 @@ public:
* between 0 and less than 1. A value of 1 disables this feature. Reasonable values * between 0 and less than 1. A value of 1 disables this feature. Reasonable values
* are between 0.01 and 0.03 depending on the layer colors. * are between 0.01 and 0.03 depending on the layer colors.
* *
* The setting name is "PcbSelectionVisibilityRatio". * Setting name: "PcbSelectionVisibilityRatio"
* Valid values: 0.0 to 1.0
* Default value: 1
*/ */
double m_PcbSelectionVisibilityRatio; double m_PcbSelectionVisibilityRatio;
///@} ///@}

View File

@ -151,7 +151,8 @@ PCB_SELECTION_TOOL::~PCB_SELECTION_TOOL()
getView()->Remove( &m_selection ); getView()->Remove( &m_selection );
getView()->Remove( &m_enteredGroupOverlay ); getView()->Remove( &m_enteredGroupOverlay );
Disconnect( wxEVT_TIMER, wxTimerEventHandler( PCB_SELECTION_TOOL::onDisambiguationExpire ), nullptr, this ); Disconnect( wxEVT_TIMER, wxTimerEventHandler( PCB_SELECTION_TOOL::onDisambiguationExpire ),
nullptr, this );
} }
@ -212,7 +213,8 @@ bool PCB_SELECTION_TOOL::Init()
frame->AddStandardSubMenus( m_menu ); frame->AddStandardSubMenus( m_menu );
m_disambiguateTimer.SetOwner( this ); m_disambiguateTimer.SetOwner( this );
Connect( wxEVT_TIMER, wxTimerEventHandler( PCB_SELECTION_TOOL::onDisambiguationExpire ), nullptr, this ); Connect( wxEVT_TIMER, wxTimerEventHandler( PCB_SELECTION_TOOL::onDisambiguationExpire ),
nullptr, this );
return true; return true;
} }
@ -781,7 +783,7 @@ bool PCB_SELECTION_TOOL::selectPoint( const VECTOR2I& aWhere, bool aOnDrag,
} }
catch( const std::exception& exc ) catch( const std::exception& exc )
{ {
wxLogWarning( wxS( "Exception \"%s\" occurred attemption to guess selection " wxLogWarning( wxS( "Exception \"%s\" occurred attempting to guess selection "
"candidates." ), exc.what() ); "candidates." ), exc.what() );
return false; return false;
} }
@ -878,7 +880,7 @@ const TOOL_ACTION* allowedActions[] = { &ACTIONS::panUp, &ACTIONS::panD
bool PCB_SELECTION_TOOL::selectMultiple() bool PCB_SELECTION_TOOL::selectMultiple()
{ {
bool cancelled = false; // Was the tool cancelled while it was running? bool cancelled = false; // Was the tool canceled while it was running?
m_multiple = true; // Multiple selection mode is active m_multiple = true; // Multiple selection mode is active
KIGFX::VIEW* view = getView(); KIGFX::VIEW* view = getView();
@ -1132,6 +1134,7 @@ int PCB_SELECTION_TOOL::SelectAll( const TOOL_EVENT& aEvent )
return 0; return 0;
} }
int PCB_SELECTION_TOOL::UnselectAll( const TOOL_EVENT& aEvent ) int PCB_SELECTION_TOOL::UnselectAll( const TOOL_EVENT& aEvent )
{ {
KIGFX::VIEW* view = getView(); KIGFX::VIEW* view = getView();
@ -1909,7 +1912,8 @@ void PCB_SELECTION_TOOL::selectConnections( const std::vector<BOARD_ITEM*>& aIte
for( int netCode : netcodeList ) for( int netCode : netcodeList )
{ {
for( BOARD_ITEM* item : conn->GetNetItems( netCode, { PCB_TRACE_T, PCB_ARC_T, PCB_VIA_T } ) ) for( BOARD_ITEM* item : conn->GetNetItems( netCode,
{ PCB_TRACE_T, PCB_ARC_T, PCB_VIA_T } ) )
localConnectionList.insert( item ); localConnectionList.insert( item );
} }
@ -2029,7 +2033,8 @@ void PCB_SELECTION_TOOL::zoomFitSelection()
BOX2I selectionBox = m_selection.GetBoundingBox(); BOX2I selectionBox = m_selection.GetBoundingBox();
KIGFX::VIEW* view = getView(); KIGFX::VIEW* view = getView();
VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_frame->GetCanvas()->GetClientSize() ), false ); VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_frame->GetCanvas()->GetClientSize() ),
false );
screenSize.x = std::max( 10.0, screenSize.x ); screenSize.x = std::max( 10.0, screenSize.x );
screenSize.y = std::max( 10.0, screenSize.y ); screenSize.y = std::max( 10.0, screenSize.y );
@ -2075,7 +2080,8 @@ void PCB_SELECTION_TOOL::ZoomFitCrossProbeBBox( const BOX2I& aBBox )
#ifndef DEFAULT_PCBNEW_CODE // Do the scaled zoom #ifndef DEFAULT_PCBNEW_CODE // Do the scaled zoom
auto bbSize = bbox.Inflate( KiROUND( bbox.GetWidth() * 0.2 ) ).GetSize(); auto bbSize = bbox.Inflate( KiROUND( bbox.GetWidth() * 0.2 ) ).GetSize();
VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_frame->GetCanvas()->GetClientSize() ), false ); VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_frame->GetCanvas()->GetClientSize() ),
false );
// This code tries to come up with a zoom factor that doesn't simply zoom in // This code tries to come up with a zoom factor that doesn't simply zoom in
// to the cross probed component, but instead shows a reasonable amount of the // to the cross probed component, but instead shows a reasonable amount of the
@ -2224,8 +2230,10 @@ void PCB_SELECTION_TOOL::FindItem( BOARD_ITEM* aItem )
if( !screenRect.Contains( aItem->GetBoundingBox() ) ) if( !screenRect.Contains( aItem->GetBoundingBox() ) )
{ {
double scaleX = screenSize.x / static_cast<double>( aItem->GetBoundingBox().GetWidth() ); double scaleX = screenSize.x /
double scaleY = screenSize.y / static_cast<double>( aItem->GetBoundingBox().GetHeight() ); static_cast<double>( aItem->GetBoundingBox().GetWidth() );
double scaleY = screenSize.y /
static_cast<double>( aItem->GetBoundingBox().GetHeight() );
scaleX /= marginFactor; scaleX /= marginFactor;
scaleY /= marginFactor; scaleY /= marginFactor;
@ -3269,7 +3277,8 @@ void PCB_SELECTION_TOOL::GuessSelectionCandidates( GENERAL_COLLECTOR& aCollector
{ {
BOARD_ITEM* item = aCollector[i]; BOARD_ITEM* item = aCollector[i];
if( item->IsType( { PCB_FIELD_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_SHAPE_T, PCB_FOOTPRINT_T } ) if( item->IsType( { PCB_FIELD_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_SHAPE_T,
PCB_FOOTPRINT_T } )
&& item->IsOnLayer( activeLayer ) ) && item->IsOnLayer( activeLayer ) )
{ {
preferred.insert( item ); preferred.insert( item );
@ -3470,7 +3479,8 @@ void PCB_SELECTION_TOOL::FilterCollectorForHierarchy( GENERAL_COLLECTOR& aCollec
// If any element is a member of a group, replace those elements with the top containing // If any element is a member of a group, replace those elements with the top containing
// group. // group.
if( PCB_GROUP* top = PCB_GROUP::TopLevelGroup( start, m_enteredGroup, m_isFootprintEditor ) ) if( PCB_GROUP* top = PCB_GROUP::TopLevelGroup( start, m_enteredGroup,
m_isFootprintEditor ) )
{ {
if( top != item ) if( top != item )
{ {
@ -3538,7 +3548,9 @@ void PCB_SELECTION_TOOL::FilterCollectorForMarkers( GENERAL_COLLECTOR& aCollecto
} }
} }
void PCB_SELECTION_TOOL::FilterCollectorForFootprints( GENERAL_COLLECTOR& aCollector, const VECTOR2I& aWhere ) const
void PCB_SELECTION_TOOL::FilterCollectorForFootprints( GENERAL_COLLECTOR& aCollector,
const VECTOR2I& aWhere ) const
{ {
const RENDER_SETTINGS* settings = getView()->GetPainter()->GetSettings(); const RENDER_SETTINGS* settings = getView()->GetPainter()->GetSettings();
BOX2D viewport = getView()->GetViewport(); BOX2D viewport = getView()->GetViewport();

View File

@ -218,7 +218,8 @@ public:
/** /**
* Drop footprints that are not directly selected * Drop footprints that are not directly selected
*/ */
void FilterCollectorForFootprints( GENERAL_COLLECTOR& aCollector, const VECTOR2I& aWhere ) const; void FilterCollectorForFootprints( GENERAL_COLLECTOR& aCollector,
const VECTOR2I& aWhere ) const;
protected: protected:
KIGFX::PCB_VIEW* view() const KIGFX::PCB_VIEW* view() const
@ -341,7 +342,8 @@ private:
STOP_CONDITION aStopCondition ); STOP_CONDITION aStopCondition );
/** /**
* Selects all non-closed shapes that are graphically connected to the given start items. * Select all non-closed shapes that are graphically connected to the given start items.
*
* @param aStartItems is a list of one or more non-closed shapes * @param aStartItems is a list of one or more non-closed shapes
*/ */
void selectAllConnectedShapes( const std::vector<PCB_SHAPE*>& aStartItems ); void selectAllConnectedShapes( const std::vector<PCB_SHAPE*>& aStartItems );
@ -413,7 +415,7 @@ private:
bool selectionContains( const VECTOR2I& aPoint ) const; bool selectionContains( const VECTOR2I& aPoint ) const;
/** /**
* @return the distance from \a wWhere to \a aItem, up to and including \a aMaxDistance. * @return the distance from \a aWhere to \a aItem, up to and including \a aMaxDistance.
*/ */
int hitTestDistance( const VECTOR2I& aWhere, BOARD_ITEM* aItem, int aMaxDistance ) const; int hitTestDistance( const VECTOR2I& aWhere, BOARD_ITEM* aItem, int aMaxDistance ) const;