kicad/pcbnew
Seth Hillbrand 06cb21cc47 pcbnew: Optimize pad connection revision
This modifies that logic for optimizing pad connections.

1) Custom pads now prefer the connections to their longer side.  This is
particularly important to match the behavior in a rectangular pad
2) Costs for straight lines are non-zero.  This favors fewer connections
3) Custom pad breakouts are at the polygon boundary rather than offset
by 0.1mm.  This also matches the circular and rectangular paradigm.
4) Line Heads contained in the pad itself are not optimized.  This
prevents escaping the pad unnecessarily

Fixes: lp:1824182
* https://bugs.launchpad.net/kicad/+bug/1824182
2019-08-20 19:35:26 -07:00
..
autorouter Cleaning code: remove dead code in spread_footprints.cpp. 2019-08-10 20:29:54 +02:00
board_stackup_manager Fix some issues in .gbrjob file. 2019-07-14 10:23:45 +02:00
connectivity Remove pads not on copper layers (just on tech layers) from connectivity calculation. 2019-07-25 13:08:41 +02:00
dialogs Improve spelling. 2019-08-20 19:14:05 +01:00
drc A bit of cleanup of stale DRC code. 2019-06-04 13:56:54 +01:00
exporters Save last-used-paths in export dialogs. 2019-08-02 21:03:48 -06:00
github Cleanup. 2019-07-10 01:38:02 +01:00
import_gfx Cleanup. 2019-07-16 02:31:07 +01:00
microwave pcbnew: Remove the last dlist from modules/pcbnew 2019-06-01 20:55:32 -07:00
pcad2kicadpcb_plugin Cleanup. 2019-06-17 22:15:20 +01:00
python Python fp wizards: fix a few issues in qrcode_footprint_wizard.py 2019-05-13 13:04:57 +02:00
router pcbnew: Optimize pad connection revision 2019-08-20 19:35:26 -07:00
specctra_import_export Save last-used-paths in export dialogs. 2019-08-02 21:03:48 -06:00
swig python: Return copy of netclasses not reference 2019-07-06 07:40:33 -07:00
tools Honor the {0, 0} reference on the clipboard. 2019-08-20 19:57:36 +01:00
CMakeLists.txt added board statistics dialog, which shows info for production and assembly 2019-07-20 14:39:08 -06:00
Doxyfile_python Doxyfiles: Remove local debug lines 2019-02-13 17:22:07 -08:00
Doxyfile_xml Doxyfiles: Remove local debug lines 2019-02-13 17:22:07 -08:00
Info.plist.in Set KiCad version in MacOS apps 2019-06-12 04:40:03 -07:00
action_plugin.cpp pcbnew: Add toolbar buttons for action plugins 2018-08-26 19:39:27 -07:00
action_plugin.h pcbnew: Add toolbar buttons for action plugins 2018-08-26 19:39:27 -07:00
array_creator.cpp Fix broken build in array_creator 2019-06-01 16:30:58 -04:00
array_creator.h Move hotkeys to ACTION architecture. 2019-06-10 23:46:00 +01:00
array_pad_name_provider.cpp pcbnew: Move pads to std::deque 2019-06-01 16:23:54 -07:00
array_pad_name_provider.h Pcbnew: arrays skip existing names 2019-01-30 15:41:35 -08:00
board_commit.cpp pcbnew: Don't clear module flags on revert 2019-06-24 10:26:37 -07:00
board_commit.h Insert EE_TOOL_BASE under SchEdit and LibEdit tools, and fix errant rename scope which clobbered PCBNew's PICKER_TOOL. 2019-05-12 13:47:08 +01:00
board_connected_item.cpp Remove pads not on copper layers (just on tech layers) from connectivity calculation. 2019-07-25 13:08:41 +02:00
board_connected_item.h Remove pads not on copper layers (just on tech layers) from connectivity calculation. 2019-07-25 13:08:41 +02:00
board_design_settings.cpp Prepare changes to support a better board stack management in .gbrjob file. 2019-06-25 18:39:11 +02:00
board_item_container.h Improve SNR (and spelling). 2019-08-20 18:02:28 +01:00
board_items_to_polygon_shape_transform.cpp Change pad solder masks to use rounded-corner clearances. 2019-06-25 11:34:27 +01:00
board_netlist_updater.cpp Remove dead code 2019-08-11 14:22:58 +02:00
board_netlist_updater.h Remove dead code 2019-08-11 14:22:58 +02:00
build_BOM_from_board.cpp Moving modules from DLIST to std::deque 2019-06-01 09:53:23 -07:00
class_board.cpp Only add ref & value to boundingBox if they're visible. 2019-08-20 16:39:40 +01:00
class_board.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_board_item.cpp pcbnew: Fix STL blunder when deleting 2019-06-11 10:12:00 -07:00
class_dimension.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_dimension.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_drawsegment.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_drawsegment.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_edge_mod.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_edge_mod.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_marker_pcb.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_marker_pcb.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_module.cpp Only add ref & value to boundingBox if they're visible. 2019-08-20 16:39:40 +01:00
class_module.h Improve spelling. 2019-08-20 19:14:05 +01:00
class_pad.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_pad.h Pad properties dialog needs to edit the local value, not the resultant value. 2019-08-05 21:38:28 -06:00
class_pcb_target.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_pcb_target.h Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_pcb_text.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_pcb_text.h Push some search stuff down into EDA_DRAW_FRAME so it can be shared. 2019-07-26 17:53:32 -06:00
class_text_mod.cpp Make m_Text private so we don't keep getting bugs where m_shown_text fails to get updated. 2019-08-01 20:36:59 -06:00
class_text_mod.h Push some search stuff down into EDA_DRAW_FRAME so it can be shared. 2019-07-26 17:53:32 -06:00
class_track.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
class_track.h Remove pads not on copper layers (just on tech layers) from connectivity calculation. 2019-07-25 13:08:41 +02:00
class_zone.cpp Don't attempt colinear corner optimization when zones of different nets overlap. 2019-07-28 10:32:15 -06:00
class_zone.h Don't attempt colinear corner optimization when zones of different nets overlap. 2019-07-28 10:32:15 -06:00
collectors.cpp Fix some misplaced parens. 2019-06-26 21:54:04 +01:00
collectors.h Fix a bug introduced when UseGalCanvas() no longer switches. 2019-05-27 18:47:20 +01:00
convert_drawsegment_list_to_polygon.cpp Moving further arc approximations down 2019-05-22 14:35:17 -07:00
cross-probing.cpp Fix re-entrancy problem in cross-probing. 2019-07-17 21:35:28 +01:00
drc_item.cpp Move DRC control to a tool; move assorted commands to ACTIONS. 2019-06-03 21:08:30 +01:00
eagle_plugin.cpp Fix handling of filled circle in eagle importer (was only partly fixed) 2019-07-26 09:55:06 -04:00
eagle_plugin.h eagle: Handle DRC rule-based pad shapes 2019-02-04 07:06:49 +01:00
edit.cpp Immediate actions for PlEditor, PcbNew, etc. 2019-06-25 11:34:28 +01:00
edit_track_width.cpp Move DRC control to a tool; move assorted commands to ACTIONS. 2019-06-03 21:08:30 +01:00
files.cpp Pcbnew, layer manager: fix flicker when loading a file, and incorrect size on start when no file is loaded 2019-08-19 10:42:22 +02:00
footprint_edit_frame.cpp Reduce confusion by putting all dialog pages as leaf nodes. 2019-08-19 17:46:25 +01:00
footprint_edit_frame.h Add env-var setting to CommonSettingsChanged(). 2019-06-25 11:34:28 +01:00
footprint_editor_options.cpp Retire EDA_DRAW_PANEL and legacy_wx/EDA_DRAW_FRAME. 2019-05-31 21:55:30 +01:00
footprint_editor_utils.cpp FP editor: fix crash when trying to save a footprint (Ctrl+S) when no footprint loaded. 2019-07-19 19:06:16 +02:00
footprint_info_impl.cpp C++14: Remove unused make_unique.h 2019-08-07 09:27:31 -07:00
footprint_info_impl.h Use binary search on Footprint Info list. 2018-08-04 10:29:17 +01:00
footprint_libraries_utils.cpp FP editor: fix crash when trying to save a footprint (Ctrl+S) when no footprint loaded. 2019-07-19 19:06:16 +02:00
footprint_preview_panel.cpp C++14: Remove unused make_unique.h 2019-08-07 09:27:31 -07:00
footprint_preview_panel.h Pcbnew: FOOTPRINT_PREVIEW_PANEL passes reference to local 2019-04-11 17:01:23 +01:00
footprint_tree_pane.cpp Grid rid of GetCanvas/GetGalCanvas distinction now that there's only gal. 2019-06-13 19:58:37 +01:00
footprint_tree_pane.h Convert Footprint Editor to component tree. 2018-08-01 09:35:46 +01:00
footprint_viewer_frame.cpp Clean up some issues in Footprint Viewer. 2019-08-19 00:06:22 +01:00
footprint_viewer_frame.h Fix minor compil warnings 2019-08-18 09:13:55 +02:00
footprint_wizard.cpp
footprint_wizard.h
footprint_wizard_frame.cpp FOOTPRINT_WIZARD_FRAME: fix UI issues (incorrect size of message panel and not selectable first item in param list) 2019-08-15 09:27:28 +02:00
footprint_wizard_frame.h Cleanup some left-over vestiages of the legacy canvas architecture. 2019-06-13 15:51:32 +01:00
footprint_wizard_frame_functions.cpp Grid rid of GetCanvas/GetGalCanvas distinction now that there's only gal. 2019-06-13 19:58:37 +01:00
fp_tree_model_adapter.cpp Footprint library nickname comparison fixes. 2019-06-24 08:03:28 -04:00
fp_tree_model_adapter.h Convert Footprint Editor to component tree. 2018-08-01 09:35:46 +01:00
fp_tree_synchronizing_adapter.cpp Pcbnew, footprint tree selector: make the selected items readable. 2019-07-18 14:54:52 +02:00
fp_tree_synchronizing_adapter.h Move footprint & symbol tree context menus to tool infrastructure. 2019-06-05 20:16:48 +01:00
generate_footprint_info.cpp More performance enhancements. 2018-08-06 13:49:27 +01:00
generate_footprint_info.h Convert Place Footprint to component tree. 2018-08-01 09:35:45 +01:00
gpcb_plugin.cpp Improve spelling. 2019-08-20 19:14:05 +01:00
gpcb_plugin.h Performance enhancements in fp loading, string cmp, etc. 2018-08-01 09:35:46 +01:00
grid_layer_box_helpers.cpp Fix a few coverity errors 2019-02-16 14:09:21 +01:00
grid_layer_box_helpers.h In-place editing for footprint TEXTE_MODULEs. 2018-07-17 15:11:04 +01:00
help_common_strings.h Fix occurrences of "edition" which should be "editing" 2018-07-17 15:12:39 +01:00
initpcb.cpp Re-implement sch->pcb cross-probing using net highlighting architecture. 2019-06-26 21:54:03 +01:00
invoke_pcb_dialog.h Clean up some dangling legacy odds and ends. 2019-06-01 01:17:46 +01:00
io_mgr.cpp pcbnew: Prevent GITHUB plugin from being registered 2019-01-15 12:14:02 -08:00
io_mgr.h Add FootprintExists() which can be more careful about FS differences. 2019-07-11 23:00:01 +01:00
kicad_clipboard.cpp Honor the {0, 0} reference on the clipboard. 2019-08-20 19:57:36 +01:00
kicad_clipboard.h Move hotkeys to ACTION architecture. 2019-06-10 23:46:00 +01:00
kicad_netlist_reader.cpp A few I18n minor fixes. 2019-08-04 10:33:54 +02:00
kicad_plugin.cpp kicad_plugin.cpp: fix incorrect detection of existing footprints in PCB_IO::FootprintExists(), when fp names contain a point. 2019-07-19 18:16:07 +02:00
kicad_plugin.h Add FootprintExists() which can be more careful about FS differences. 2019-07-11 23:00:01 +01:00
layer_widget.cpp Remove more legacy editing code. 2019-05-27 18:47:20 +01:00
layer_widget.h Remove more legacy editing code. 2019-05-27 18:47:20 +01:00
legacy_netlist_reader.cpp
legacy_plugin.cpp Cleanup. 2019-07-10 01:38:02 +01:00
legacy_plugin.h Remove legacy segment-based zones. 2019-04-12 20:19:23 +01:00
load_select_footprint.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
menubar_footprint_editor.cpp Unify menu item creation for closing a window 2019-08-14 09:35:15 +01:00
menubar_pcb_editor.cpp Unify menu item creation for closing a window 2019-08-14 09:35:15 +01:00
microwave.cpp Cleanup. 2019-07-02 00:48:05 +01:00
netclass.cpp units: Move common units and add tests 2019-01-08 09:29:32 -08:00
netclass.h Consolidate design rules UI. 2018-07-17 15:12:34 +01:00
netinfo.h Performance enhancements to zone filling & track DRC. 2019-06-25 11:34:28 +01:00
netinfo_item.cpp pcbnew: Move tracks to std::deque 2019-06-01 09:53:23 -07:00
netinfo_list.cpp pcbnew: Move pads to std::deque 2019-06-01 16:23:54 -07:00
netlist.cpp Cleaning code: remove dead code in spread_footprints.cpp. 2019-08-10 20:29:54 +02:00
netlist_reader.cpp A few I18n minor fixes. 2019-08-04 10:33:54 +02:00
netlist_reader.h
pad_custom_shape_functions.cpp Improve spelling. 2019-08-20 19:14:05 +01:00
pad_naming.cpp Pcbnew: Array tool should not number NPTHs 2019-01-06 07:55:49 -08:00
pad_naming.h Pcbnew: Array tool should not number NPTHs 2019-01-06 07:55:49 -08:00
pad_print_functions.cpp Retire EDA_DRAW_PANEL and legacy_wx/EDA_DRAW_FRAME. 2019-05-31 21:55:30 +01:00
pcb_base_edit_frame.cpp Grid rid of GetCanvas/GetGalCanvas distinction now that there's only gal. 2019-06-13 19:58:37 +01:00
pcb_base_edit_frame.h Fix grid update when edited from menubar. 2019-06-19 18:35:17 +01:00
pcb_base_frame.cpp Synchronize toolbars state with current options after rebuilding them. 2019-07-20 18:16:35 +02:00
pcb_display_options.cpp pcbnew: Add option to show ratsnest while moving 2019-06-12 17:36:02 -07:00
pcb_draw_panel_gal.cpp Put selected layer in front of DRC markers. 2019-08-03 17:20:54 -06:00
pcb_draw_panel_gal.h Grid rid of GetCanvas/GetGalCanvas distinction now that there's only gal. 2019-06-13 19:58:37 +01:00
pcb_edit_frame.cpp Pcbnew, layer manager: fix flicker when loading a file, and incorrect size on start when no file is loaded 2019-08-19 10:42:22 +02:00
pcb_edit_frame.h Cleaning code: remove dead code in spread_footprints.cpp. 2019-08-10 20:29:54 +02:00
pcb_general_settings.cpp Implement preference for immediate actions. 2019-07-25 20:41:22 -06:00
pcb_general_settings.h Implement preference for immediate actions. 2019-07-25 20:41:22 -06:00
pcb_layer_box_selector.cpp Move hotkeys to ACTION architecture. 2019-06-10 23:46:00 +01:00
pcb_layer_box_selector.h Move hotkeys to ACTION architecture. 2019-06-10 23:46:00 +01:00
pcb_layer_widget.cpp Grid rid of GetCanvas/GetGalCanvas distinction now that there's only gal. 2019-06-13 19:58:37 +01:00
pcb_layer_widget.h Remove more legacy editing code. 2019-05-27 18:47:20 +01:00
pcb_legacy_draw_utils.cpp pcbnew: Move pads to std::deque 2019-06-01 16:23:54 -07:00
pcb_netlist.cpp Escape slashes in labels and netnames. 2019-04-07 00:24:10 +01:00
pcb_netlist.h
pcb_painter.cpp Fix misc build warnings 2019-07-02 10:32:49 -07:00
pcb_painter.h pcbnew: Add option to show ratsnest while moving 2019-06-12 17:36:02 -07:00
pcb_parser.cpp Remove pads not on copper layers (just on tech layers) from connectivity calculation. 2019-07-25 13:08:41 +02:00
pcb_parser.h Move layer defaults and diff-pair dimensions to board file. 2019-07-06 00:04:54 +01:00
pcb_plot_params.cpp pcbnew: Clean up warnings with unit handling in the DXF export 2019-07-10 12:21:01 -04:00
pcb_plot_params.h pcbnew: Clean up warnings with unit handling in the DXF export 2019-07-10 12:21:01 -04:00
pcb_plot_params_parser.h hpgl plot parameters: use double instead of int to store the pen diameter to avoid truncation. 2018-05-26 09:37:42 +02:00
pcb_screen.cpp Remove some more legacy code. 2019-05-29 00:26:29 +01:00
pcb_view.cpp fix incorrect initialization of VIEW::m_boundary. 2018-11-18 20:04:17 +01:00
pcb_view.h
pcbnew.cpp pcbnew: Clean up switch statement in launcher 2019-08-14 09:35:14 +01:00
pcbnew.h pcbnew: Remove the last dlist from modules/pcbnew 2019-06-01 20:55:32 -07:00
pcbnew.icns
pcbnew.rc
pcbnew_config.cpp Reduce confusion by putting all dialog pages as leaf nodes. 2019-08-19 17:46:25 +01:00
pcbnew_config.h
pcbnew_doc.icns
pcbnew_id.h Add filters to footprint viewer. 2019-08-14 21:51:26 +01:00
pcbnew_printout.cpp Disable zone outlines and hatched lines rendering in printouts 2018-10-31 19:17:30 +01:00
pcbnew_printout.h Disable zone outlines and hatched lines rendering in printouts 2018-10-31 19:17:30 +01:00
pcbplot.cpp Plot filenames automatically generated: change the point ('.') find in layer names to '_' 2019-01-05 12:44:38 +01:00
pcbplot.h Implement preserved-corners to prevent divots when filling adjacent zones. 2019-07-14 18:18:48 +01:00
plot_board_layers.cpp Pcbnew plot: fix missing footprint texts on solder mask layers. 2019-08-13 09:43:36 +02:00
plot_brditems_plotter.cpp Pcbnew plot: fix missing footprint texts on solder mask layers. 2019-08-13 09:43:36 +02:00
plotcontroller.h
plugin.cpp Add FootprintExists() which can be more careful about FS differences. 2019-07-11 23:00:01 +01:00
ratsnest.cpp pcbnew: Move tracks to std::deque 2019-06-01 09:53:23 -07:00
ratsnest_data.cpp pcbnew: Separating connectivity to subdir 2018-10-12 16:31:09 -07:00
ratsnest_data.h pcbnew: Separating connectivity to subdir 2018-10-12 16:31:09 -07:00
ratsnest_viewitem.cpp pcbnew: Draw dynamic ratsnest with curved lines 2019-06-15 08:17:28 -07:00
ratsnest_viewitem.h Implement undo for Page Settings in PlEditor, Eeschema and PCBNew. 2019-05-27 11:58:55 +01:00
sel_layer.cpp Try to fix UI issues in select layer pair dialog and slect layer dialog. 2019-07-28 12:54:59 +02:00
text_mod_grid_table.cpp Re-enable text layers now that DRC & zone fills are fixed. 2018-08-24 10:56:13 +01:00
text_mod_grid_table.h Consolidate design rules UI. 2018-07-17 15:12:34 +01:00
toolbars_footprint_editor.cpp Refactor deleteTool ACTION removing duplicates 2019-08-12 13:49:55 -04:00
toolbars_footprint_viewer.cpp Add filters to footprint viewer. 2019-08-14 21:51:26 +01:00
toolbars_pcb_editor.cpp Refactor deleteTool ACTION removing duplicates 2019-08-12 13:49:55 -04:00
tracks_cleaner.cpp TRACKS_CLEANER algo to merge collinear track segments: some minor fixes. 2019-06-29 09:12:19 +02:00
tracks_cleaner.h TRACKS_CLEANER algo to merge collinear track segments: some minor fixes. 2019-06-29 09:12:19 +02:00
undo_redo.cpp Add preference for flip axis. 2019-07-14 10:36:48 +01:00
zone_filler.cpp Improve spelling. 2019-08-20 19:14:05 +01:00
zone_filler.h A better hack for the post-ProgressReporter-loss-of-focus issue. 2019-07-14 18:18:48 +01:00
zone_settings.cpp pcbnew: Remove segment count from board file 2019-05-24 21:13:53 -07:00
zone_settings.h pcbnew: Remove segment count from board file 2019-05-24 21:13:53 -07:00
zones.h UNIT_BINDERize zone dialogs. 2018-07-17 15:11:32 +01:00
zones_by_polygon.cpp A better hack for the post-ProgressReporter-loss-of-focus issue. 2019-07-14 18:18:48 +01:00
zones_functions_for_undo_redo.cpp Retire EDA_DRAW_PANEL and legacy_wx/EDA_DRAW_FRAME. 2019-05-31 21:55:30 +01:00
zones_functions_for_undo_redo.h Fix occurrences of "edition" which should be "editing" 2018-07-17 15:12:39 +01:00
zones_test_and_combine_areas.cpp Move DRC control to a tool; move assorted commands to ACTIONS. 2019-06-03 21:08:30 +01:00