From 2c150e481783a6a1987894c6b5506399edbd45c8 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 17 Dec 2011 22:21:03 +0100 Subject: [PATCH] All: fix compatibility issues with wxWidgets 2.9.3 Minor cosmetic enhancements. Pcbnew: more workd abput connection algorithms (work in progress) --- bitmaps_png/CMakeLists.txt | 5 +- bitmaps_png/cpp_26/change_entry_orient.cpp | 85 +++++ .../gerbview_open_recent_drill_files.cpp | 117 +++++++ bitmaps_png/cpp_26/via.cpp | 82 +++++ bitmaps_png/sources/change_entry_orient.svg | 231 ++++++++++++ .../gerbview_open_recent_drill_files.svg | 329 ++++++++++++++++++ bitmaps_png/sources/lang_bg.svg | 76 ++++ bitmaps_png/sources/via.svg | 124 +++++++ common/drawpanel.cpp | 21 +- eeschema/onrightclick.cpp | 6 +- gerbview/menubar.cpp | 2 +- include/bitmaps.h | 3 + include/class_drawpanel.h | 1 + include/pad_shapes.h | 4 +- pcbnew/class_board.cpp | 18 +- pcbnew/class_board.h | 5 +- pcbnew/class_netinfo.h | 4 +- pcbnew/class_netinfolist.cpp | 2 +- pcbnew/connect.cpp | 199 ++++++++--- pcbnew/editrack.cpp | 5 + pcbnew/hotkeys_board_editor.cpp | 6 +- pcbnew/onrightclick.cpp | 5 +- pcbnew/ratsnest.cpp | 20 +- 23 files changed, 1265 insertions(+), 85 deletions(-) create mode 100644 bitmaps_png/cpp_26/change_entry_orient.cpp create mode 100644 bitmaps_png/cpp_26/gerbview_open_recent_drill_files.cpp create mode 100644 bitmaps_png/cpp_26/via.cpp create mode 100644 bitmaps_png/sources/change_entry_orient.svg create mode 100644 bitmaps_png/sources/gerbview_open_recent_drill_files.svg create mode 100644 bitmaps_png/sources/lang_bg.svg create mode 100644 bitmaps_png/sources/via.svg diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index c0d635f7eb..a45974ff95 100644 --- a/bitmaps_png/CMakeLists.txt +++ b/bitmaps_png/CMakeLists.txt @@ -156,6 +156,7 @@ set( BMAPS_MID browse_files cancel_tool cancel + change_entry_orient create_cmp_file checked_ok component_select_unit @@ -239,9 +240,10 @@ set( BMAPS_MID gbr_select_mode2 gerber_file gerber_recent_files + gerber_open_dcode_file gerbview_drill_file gerbview_clear_layers - gerber_open_dcode_file + gerbview_open_recent_drill_files general_deletions general_ratsnest glabel2label @@ -478,6 +480,7 @@ set( BMAPS_MID unzip update_module_board up + via via_sketch warning web_support diff --git a/bitmaps_png/cpp_26/change_entry_orient.cpp b/bitmaps_png/cpp_26/change_entry_orient.cpp new file mode 100644 index 0000000000..fe2cfba4fa --- /dev/null +++ b/bitmaps_png/cpp_26/change_entry_orient.cpp @@ -0,0 +1,85 @@ + +/* Do not modify this file, it was automatically generated by the + * PNG2cpp CMake script, using a *.png file as input. + */ + +#include "bitmaps.h" + +static const unsigned char png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, + 0xce, 0x00, 0x00, 0x04, 0x45, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0xd6, 0xdb, 0x53, 0x1b, + 0x55, 0x1c, 0x07, 0xf0, 0x85, 0x96, 0x4d, 0x68, 0x02, 0x09, 0xe5, 0x52, 0xeb, 0x40, 0x99, 0xa9, + 0xd5, 0xb1, 0x40, 0x8a, 0x34, 0x85, 0xbd, 0xe4, 0x0a, 0x41, 0xd2, 0x4d, 0xc8, 0x86, 0x6c, 0xd8, + 0x92, 0x0b, 0x24, 0x54, 0xa0, 0x1d, 0x4a, 0x01, 0xdb, 0xa0, 0x63, 0x7d, 0x70, 0x3a, 0xe8, 0x8c, + 0x4f, 0x3e, 0xb5, 0x33, 0xb6, 0x85, 0x04, 0x8b, 0x15, 0x5a, 0x15, 0x98, 0x04, 0x9c, 0x0e, 0xa3, + 0x96, 0x7b, 0x47, 0x2c, 0x84, 0x4a, 0x8d, 0xd3, 0x07, 0x7d, 0xf2, 0x45, 0xeb, 0x1f, 0x11, 0xcf, + 0x59, 0x58, 0xd8, 0x8d, 0x09, 0x05, 0xc6, 0x87, 0xef, 0xcb, 0xee, 0x2f, 0xfb, 0xc9, 0xd9, 0xf3, + 0x3b, 0xe7, 0x2c, 0x72, 0x35, 0x2a, 0xa1, 0x41, 0xe6, 0xdf, 0x5d, 0xce, 0xfc, 0x50, 0xdf, 0x6a, + 0x57, 0x91, 0x2d, 0x8e, 0x32, 0x8c, 0xa2, 0xb2, 0xe3, 0xf1, 0x38, 0xb2, 0xdf, 0x20, 0xc8, 0xf5, + 0xf4, 0x83, 0xc4, 0x94, 0x19, 0xc5, 0x27, 0x9b, 0x10, 0x72, 0xba, 0x80, 0xbb, 0x16, 0x88, 0xa2, + 0xbf, 0x83, 0xc4, 0x61, 0x2e, 0x3f, 0x52, 0x3e, 0x24, 0xfc, 0xf5, 0x35, 0x98, 0xdb, 0xa1, 0x55, + 0xb3, 0xb5, 0x8a, 0xfd, 0x21, 0xf1, 0xb4, 0x0c, 0x62, 0xd2, 0x07, 0x72, 0x83, 0x0b, 0x1e, 0xee, + 0xe4, 0xae, 0x83, 0xd1, 0x2c, 0xf2, 0x10, 0x87, 0xcd, 0x28, 0xa7, 0x71, 0x9f, 0xd5, 0x04, 0xb1, + 0xb7, 0x1a, 0x8c, 0xca, 0x3d, 0x23, 0x64, 0xa4, 0x05, 0xe4, 0x26, 0x4a, 0x4e, 0xdc, 0x92, 0x90, + 0x13, 0xb7, 0xa5, 0xf8, 0xb8, 0x87, 0xbb, 0xf7, 0xde, 0xcf, 0xb2, 0x57, 0xfa, 0xa2, 0xe8, 0x6f, + 0x22, 0x6c, 0x56, 0xf1, 0x3d, 0xd6, 0x62, 0xa9, 0xdd, 0x0b, 0x06, 0x11, 0x94, 0x0c, 0x37, 0x67, + 0x10, 0x91, 0x9b, 0x52, 0xcd, 0xb7, 0x83, 0x72, 0xdd, 0xc8, 0xfd, 0x6c, 0xfd, 0xd0, 0xe7, 0x27, + 0x6d, 0x17, 0x4a, 0x4a, 0xd9, 0x52, 0x94, 0x2b, 0xea, 0x7d, 0x26, 0x3b, 0x02, 0x80, 0x98, 0x10, + 0xeb, 0x9a, 0x51, 0xfc, 0x20, 0xc4, 0xc0, 0x93, 0xd2, 0x52, 0x23, 0x48, 0x1a, 0x98, 0x0f, 0x2f, + 0x40, 0x6e, 0x48, 0x35, 0x63, 0x10, 0x79, 0xa0, 0x34, 0x0e, 0x84, 0xca, 0xcf, 0xb5, 0xd8, 0xf0, + 0x26, 0xc7, 0x49, 0x82, 0x65, 0x33, 0xb7, 0x8a, 0xfb, 0x7e, 0x91, 0x17, 0x00, 0xe0, 0x57, 0x11, + 0x36, 0xab, 0x78, 0xc4, 0x63, 0x2a, 0xab, 0x36, 0x27, 0x19, 0xb6, 0x81, 0x84, 0x13, 0x90, 0x60, + 0xe8, 0x54, 0xe3, 0x79, 0x1a, 0xf3, 0x32, 0xb8, 0x8e, 0x61, 0x8e, 0xb2, 0x2c, 0x7b, 0x40, 0xf4, + 0xa3, 0xee, 0x28, 0x92, 0x1f, 0x58, 0x45, 0x9f, 0x89, 0x5e, 0xe3, 0x5c, 0xf6, 0x0c, 0xe9, 0xa7, + 0xde, 0xd6, 0xb8, 0xec, 0x3a, 0x95, 0xd5, 0x2a, 0xc2, 0x38, 0x84, 0x88, 0xb8, 0x37, 0x10, 0xf8, + 0xba, 0xbe, 0x7a, 0xa0, 0xac, 0x1e, 0x04, 0x88, 0x8f, 0x26, 0xdd, 0x0e, 0xa2, 0xd2, 0x65, 0x2f, + 0x2a, 0x65, 0x59, 0x94, 0xab, 0x4d, 0xfc, 0x87, 0x81, 0x15, 0x24, 0x0f, 0x00, 0xeb, 0x09, 0xd8, + 0x1c, 0x8f, 0x95, 0x9a, 0xcd, 0x87, 0x21, 0xc0, 0x21, 0xe4, 0x94, 0x6b, 0x73, 0x24, 0x03, 0x72, + 0xfd, 0xc8, 0x7d, 0x65, 0x75, 0x70, 0x13, 0xa9, 0x27, 0xd4, 0xac, 0xed, 0x18, 0x8f, 0x24, 0x85, + 0x04, 0xd8, 0x53, 0x11, 0x36, 0x9f, 0x3d, 0x4f, 0x9c, 0x37, 0xd7, 0x41, 0xec, 0x4d, 0x93, 0x29, + 0x17, 0xc5, 0x26, 0x36, 0x10, 0x12, 0x20, 0xba, 0x51, 0x0e, 0x51, 0x39, 0x5b, 0xed, 0xc9, 0x90, + 0x94, 0x10, 0xcc, 0xb5, 0x65, 0x24, 0x17, 0x00, 0x6b, 0x42, 0xac, 0x7b, 0x2e, 0x6b, 0x11, 0x62, + 0xc5, 0xe6, 0xfe, 0x8f, 0x64, 0xda, 0x7b, 0x03, 0x52, 0xe2, 0x9b, 0x41, 0x88, 0x28, 0x8c, 0xc1, + 0x21, 0x15, 0xdb, 0x6a, 0x27, 0x9a, 0xed, 0x64, 0x05, 0x63, 0x29, 0x86, 0x5d, 0xf6, 0x9f, 0xb9, + 0xdc, 0xa9, 0x65, 0xaf, 0xc4, 0x90, 0xc3, 0x60, 0xce, 0xa2, 0x42, 0xac, 0xed, 0xbb, 0xc2, 0xe7, + 0x85, 0x96, 0x4f, 0xc3, 0x47, 0xeb, 0x3e, 0x9b, 0xcc, 0x31, 0x0c, 0x8e, 0x2b, 0x0c, 0x03, 0x5f, + 0xc0, 0x91, 0x70, 0x88, 0xc7, 0x52, 0x7c, 0x82, 0xa2, 0x24, 0x49, 0x3b, 0xf3, 0x65, 0xeb, 0xe3, + 0x83, 0x75, 0x24, 0xe7, 0x6a, 0x14, 0x5d, 0x15, 0x62, 0xbe, 0xf1, 0xd7, 0xff, 0x3e, 0x66, 0xfd, + 0x64, 0xae, 0x88, 0xea, 0x7f, 0x58, 0xce, 0xb8, 0x5b, 0x30, 0x77, 0xbd, 0x76, 0x27, 0x64, 0x57, + 0x10, 0x8f, 0x75, 0x2d, 0xe4, 0xfe, 0x21, 0xc4, 0xfc, 0x13, 0xc7, 0x5f, 0x9c, 0x69, 0x66, 0xfa, + 0x09, 0x2f, 0xdd, 0x75, 0xba, 0xb1, 0xae, 0xa2, 0x90, 0x20, 0x32, 0x77, 0x5c, 0xd0, 0xbb, 0x81, + 0x50, 0x7c, 0x8a, 0x51, 0x52, 0x43, 0x77, 0xda, 0xa7, 0x8b, 0x5e, 0x08, 0xb1, 0x4b, 0x3f, 0x2a, + 0x63, 0x9a, 0xb6, 0x3a, 0x3f, 0xee, 0xa6, 0x4d, 0x6a, 0x9b, 0x2d, 0x0f, 0x74, 0x62, 0xfa, 0xbe, + 0x21, 0x94, 0x98, 0x74, 0xc0, 0xcd, 0x11, 0xb6, 0x70, 0x3e, 0x75, 0x6b, 0xac, 0x63, 0xba, 0xf0, + 0x1f, 0x51, 0x83, 0x2c, 0xc8, 0x57, 0xf4, 0xed, 0xb5, 0x67, 0x49, 0x0f, 0xad, 0xaf, 0xa0, 0xa8, + 0xfc, 0x54, 0xd8, 0xcb, 0x90, 0x06, 0x1e, 0x91, 0xe9, 0x46, 0x46, 0xb3, 0x8d, 0xa1, 0xbb, 0x78, + 0xa7, 0xd3, 0xdb, 0xfb, 0x93, 0x2c, 0x96, 0x80, 0x3d, 0xd9, 0xc2, 0xd8, 0xe4, 0x58, 0x6a, 0x84, + 0x8c, 0xd8, 0x85, 0x08, 0x58, 0x27, 0x77, 0xcb, 0xd8, 0x36, 0x07, 0xee, 0x65, 0x34, 0xe6, 0x6b, + 0x95, 0xaa, 0xc0, 0xaa, 0x64, 0x59, 0x84, 0x2d, 0xca, 0x57, 0x75, 0x17, 0x4d, 0x14, 0xc4, 0x4e, + 0x39, 0xea, 0x0a, 0x12, 0xb1, 0xa4, 0x88, 0x04, 0x0f, 0xd3, 0x1c, 0x42, 0xf2, 0x48, 0x68, 0x98, + 0x47, 0x2a, 0x9d, 0xd6, 0xe3, 0x46, 0xa3, 0x51, 0xfa, 0xfe, 0x73, 0x24, 0x0b, 0x00, 0x4b, 0x42, + 0xac, 0x67, 0x49, 0x16, 0x35, 0x76, 0x26, 0xc7, 0x92, 0x20, 0x93, 0x36, 0x88, 0x48, 0xc8, 0xb1, + 0x3b, 0x1c, 0x62, 0x0c, 0x0e, 0x97, 0x36, 0xbe, 0xc3, 0xe0, 0x7e, 0x80, 0x78, 0x36, 0x10, 0xbe, + 0x16, 0x62, 0x89, 0xe7, 0x59, 0xcf, 0xa2, 0x6c, 0x0d, 0x62, 0x84, 0xdb, 0x61, 0x28, 0xa3, 0x4d, + 0x47, 0x78, 0x4c, 0x84, 0x1c, 0x20, 0x22, 0xf5, 0x62, 0x24, 0x04, 0x90, 0x0e, 0x06, 0xf3, 0x81, + 0x13, 0xb7, 0x89, 0x7a, 0xcd, 0xd8, 0xba, 0x8d, 0xf0, 0xb9, 0x14, 0x43, 0xe4, 0x81, 0x35, 0xc9, + 0x82, 0x10, 0xeb, 0x5d, 0x92, 0x3f, 0x35, 0x74, 0xd5, 0x58, 0x20, 0x86, 0x6d, 0x62, 0xdb, 0x08, + 0x19, 0xb6, 0x0a, 0x11, 0x85, 0x21, 0x34, 0x5c, 0xe2, 0x6c, 0x77, 0xf2, 0x08, 0xc1, 0xa6, 0x5e, + 0x27, 0x1c, 0x16, 0x95, 0xcc, 0x89, 0x46, 0xf6, 0x58, 0xbe, 0xae, 0xef, 0xae, 0xb6, 0x6e, 0x61, + 0xb0, 0xf0, 0x20, 0x16, 0xae, 0xde, 0x40, 0xc6, 0x01, 0x32, 0x3a, 0xc2, 0x21, 0xcc, 0x85, 0xc6, + 0xdd, 0x20, 0xdb, 0xe7, 0x19, 0x22, 0xeb, 0x8b, 0x4a, 0x66, 0x45, 0x0d, 0x32, 0x9f, 0xf5, 0xb8, + 0xca, 0x6d, 0xab, 0xc1, 0xcf, 0xd1, 0x9a, 0xcd, 0x05, 0x19, 0xf9, 0x58, 0xba, 0x85, 0x04, 0xbf, + 0xdc, 0x2b, 0xc2, 0xe7, 0xfa, 0x0a, 0x72, 0x28, 0x10, 0xcd, 0x98, 0xe1, 0xa1, 0x2b, 0x4f, 0xa4, + 0x7f, 0x61, 0x1e, 0xba, 0x9a, 0x60, 0x1b, 0xaa, 0xb8, 0x02, 0xa9, 0xf6, 0xeb, 0x0e, 0x0e, 0x01, + 0x73, 0x52, 0xd2, 0x74, 0xd1, 0xb9, 0x1f, 0x44, 0x88, 0x81, 0x06, 0x19, 0x04, 0xd0, 0x9f, 0x3d, + 0xcb, 0xd2, 0xcb, 0x1a, 0x17, 0xfd, 0x2a, 0xdc, 0x03, 0xe1, 0x29, 0x99, 0x8e, 0x79, 0xbd, 0x85, + 0x6f, 0x34, 0x74, 0xd9, 0xcb, 0x5d, 0x6e, 0xba, 0x0a, 0x9c, 0x37, 0xa7, 0x59, 0xf3, 0x89, 0xfd, + 0x20, 0xa9, 0xbe, 0x27, 0xb6, 0xba, 0x4e, 0xed, 0xb6, 0xe5, 0x01, 0xf9, 0x0c, 0xdc, 0xea, 0x21, + 0xa2, 0xb6, 0xa9, 0x0f, 0xfd, 0x1f, 0x88, 0x30, 0xff, 0x02, 0x94, 0x7c, 0x89, 0xd7, 0x2c, 0xef, + 0xcc, 0x31, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +}; + +const BITMAP_OPAQUE change_entry_orient_xpm[1] = {{ png, sizeof( png ), "change_entry_orient_xpm" }}; + +//EOF diff --git a/bitmaps_png/cpp_26/gerbview_open_recent_drill_files.cpp b/bitmaps_png/cpp_26/gerbview_open_recent_drill_files.cpp new file mode 100644 index 0000000000..f74bb15a78 --- /dev/null +++ b/bitmaps_png/cpp_26/gerbview_open_recent_drill_files.cpp @@ -0,0 +1,117 @@ + +/* Do not modify this file, it was automatically generated by the + * PNG2cpp CMake script, using a *.png file as input. + */ + +#include "bitmaps.h" + +static const unsigned char png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, + 0xce, 0x00, 0x00, 0x06, 0x3d, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x95, 0x5b, 0x6c, 0x5c, + 0x57, 0x15, 0x86, 0xbf, 0x7d, 0x2e, 0x73, 0xf7, 0xdc, 0xc7, 0x63, 0x4f, 0x6c, 0xc7, 0x8e, 0xc7, + 0x26, 0x69, 0x94, 0xc8, 0xce, 0x45, 0x6d, 0xa2, 0xb6, 0x0a, 0x69, 0xa9, 0xd2, 0x50, 0x68, 0xa9, + 0x10, 0x0f, 0x40, 0x44, 0x48, 0x51, 0x5f, 0x2a, 0x50, 0x8b, 0x92, 0x20, 0x21, 0x01, 0x85, 0x20, + 0xae, 0x0d, 0x2d, 0x14, 0xa4, 0x4a, 0x14, 0x8a, 0x88, 0x04, 0x0f, 0x3c, 0x34, 0xa0, 0xa6, 0xa5, + 0x4a, 0x1e, 0x48, 0xd2, 0x38, 0x24, 0x52, 0xa0, 0xbe, 0x94, 0xb8, 0x71, 0x6c, 0xc7, 0x63, 0x37, + 0x8e, 0x9d, 0xf1, 0x6d, 0xe6, 0xcc, 0xe5, 0x9c, 0x33, 0xe7, 0x6c, 0x1e, 0x32, 0x51, 0xac, 0x92, + 0x38, 0x61, 0x4b, 0x4b, 0xfb, 0x69, 0xe9, 0xdb, 0x7b, 0xfd, 0xff, 0x5a, 0x4b, 0x48, 0x29, 0xb9, + 0xd7, 0xf3, 0xef, 0x3d, 0x42, 0x0d, 0x35, 0x26, 0xbf, 0x17, 0xea, 0xec, 0xd9, 0xa9, 0x37, 0xc4, + 0xdb, 0xfc, 0x21, 0x3d, 0xad, 0x07, 0x74, 0x8f, 0x5d, 0xad, 0xd5, 0xaa, 0x25, 0x3b, 0x5f, 0xab, + 0x54, 0x66, 0xcb, 0x93, 0xc3, 0xc3, 0x8b, 0xa3, 0x97, 0x9e, 0xeb, 0x3d, 0x22, 0xf3, 0xcb, 0x73, + 0xc5, 0xbd, 0x82, 0x06, 0x9e, 0xd1, 0xbb, 0xa2, 0x5d, 0x1b, 0x8e, 0xa4, 0x37, 0x6d, 0xdd, 0xa2, + 0x96, 0xc7, 0x55, 0xb7, 0x90, 0xc7, 0x98, 0x2f, 0x59, 0xc5, 0xb2, 0xb4, 0x82, 0x7e, 0xa1, 0x87, + 0xa2, 0x5e, 0xaf, 0x16, 0x8a, 0x22, 0x1b, 0xda, 0x59, 0xf8, 0x68, 0x31, 0x37, 0x3f, 0x70, 0xf2, + 0xd0, 0xda, 0x5f, 0x2e, 0xbd, 0xfe, 0x7f, 0x81, 0x2e, 0xbd, 0x10, 0xdf, 0x17, 0xdf, 0xfc, 0xa9, + 0x43, 0xb1, 0x38, 0x99, 0xd2, 0x95, 0x41, 0x6b, 0x22, 0xef, 0x37, 0x8d, 0x50, 0x56, 0x37, 0x3b, + 0x1e, 0xf1, 0xa9, 0xcd, 0xdd, 0xc8, 0xf9, 0x49, 0x94, 0xdc, 0xd9, 0x9a, 0x7f, 0xee, 0x83, 0x6a, + 0x46, 0x9f, 0x26, 0xd5, 0xd9, 0x1a, 0x32, 0x3d, 0x1d, 0x95, 0xd9, 0x0b, 0xa7, 0xff, 0xde, 0xf1, + 0xe2, 0x87, 0x4f, 0xdf, 0x13, 0x68, 0xf0, 0x6b, 0x9e, 0x35, 0x99, 0x4f, 0x3e, 0x75, 0x5a, 0x51, + 0xe6, 0x33, 0xc6, 0x95, 0x5c, 0x31, 0xd7, 0xf0, 0x90, 0x98, 0x6e, 0xd9, 0x15, 0x6a, 0x6f, 0x5d, + 0x4d, 0x24, 0x1a, 0xe6, 0xd4, 0x7b, 0x7d, 0x3c, 0xfc, 0xf0, 0x76, 0xa4, 0xeb, 0x62, 0x5a, 0x26, + 0x0b, 0x1f, 0x9c, 0xaa, 0x25, 0x07, 0x5e, 0xab, 0x74, 0x74, 0xf8, 0x42, 0xa2, 0x79, 0x8b, 0x93, + 0x3b, 0x7e, 0xf4, 0x07, 0xdd, 0x87, 0xaf, 0x1f, 0x52, 0xee, 0xa2, 0x89, 0x08, 0x67, 0xd7, 0xff, + 0x31, 0x1a, 0xd7, 0x32, 0x7f, 0xc9, 0x6d, 0x74, 0x4e, 0x26, 0x9f, 0x0d, 0x4e, 0xa6, 0x1f, 0x09, + 0x3d, 0xb0, 0xf5, 0x01, 0xb2, 0x9d, 0x5d, 0x08, 0xa1, 0x70, 0xfa, 0x74, 0x1f, 0x3e, 0x8f, 0x0f, + 0x8f, 0xc7, 0x47, 0xc0, 0x1f, 0x24, 0xdd, 0xf3, 0xa8, 0x66, 0x3c, 0xf9, 0xdb, 0x86, 0xd1, 0x9c, + 0x30, 0x54, 0x63, 0x44, 0x4b, 0x6c, 0xda, 0xf9, 0xdc, 0xd0, 0xb3, 0xbe, 0x4f, 0x68, 0x2b, 0x81, + 0x82, 0x8d, 0x89, 0x6f, 0xa7, 0x7b, 0xb6, 0xde, 0x5f, 0xcd, 0xf5, 0x39, 0xdb, 0x76, 0x3e, 0xa1, + 0xc4, 0x1a, 0xdb, 0x44, 0x30, 0x10, 0x44, 0x88, 0x3c, 0x43, 0xfd, 0xff, 0x20, 0x9b, 0xed, 0xc4, + 0x2a, 0x8f, 0x10, 0xf0, 0x5c, 0xc7, 0x72, 0x33, 0xd4, 0x1c, 0x05, 0x21, 0x04, 0xe1, 0x48, 0x8c, + 0xa5, 0x07, 0xbf, 0x15, 0x9c, 0xe9, 0xff, 0xb9, 0xd1, 0xbc, 0xb6, 0x29, 0x5d, 0xca, 0x6e, 0x78, + 0xe3, 0xb6, 0xa5, 0xdb, 0xb7, 0xf7, 0xab, 0x3b, 0xd2, 0x29, 0xfb, 0xf1, 0x1f, 0x3d, 0x3f, 0xb8, + 0xff, 0xec, 0x5b, 0x43, 0xca, 0xf6, 0xcf, 0xf6, 0x82, 0xde, 0x05, 0x42, 0x80, 0x74, 0x97, 0x7b, + 0x09, 0xa8, 0xe7, 0xd7, 0x26, 0x98, 0x67, 0x3f, 0x86, 0xb3, 0x09, 0xd3, 0x32, 0xb1, 0x2c, 0x13, + 0xe3, 0xf8, 0x4b, 0xe5, 0x9e, 0xd4, 0xd5, 0x40, 0x49, 0x36, 0x5d, 0x17, 0x52, 0x4a, 0x5e, 0xfa, + 0xd9, 0x2f, 0x5e, 0x2c, 0x9b, 0xa5, 0x87, 0x9e, 0xd8, 0xfd, 0xe9, 0x9d, 0xfe, 0x60, 0x80, 0xbe, + 0x33, 0x7d, 0x24, 0x62, 0x3e, 0x9e, 0xea, 0xdc, 0x03, 0x52, 0x82, 0x80, 0xf7, 0x2f, 0x4b, 0x16, + 0xcb, 0x70, 0x6e, 0x30, 0x82, 0xa6, 0x2a, 0xa8, 0xaa, 0x4a, 0x6f, 0x97, 0xc9, 0xba, 0xc6, 0x22, + 0x63, 0x39, 0x58, 0xdb, 0xad, 0x10, 0x5c, 0xb5, 0x9b, 0x99, 0x86, 0xdf, 0x60, 0x5a, 0x26, 0xa6, + 0x59, 0xa5, 0x3c, 0x3d, 0xc2, 0x9a, 0x91, 0x5f, 0x99, 0xfe, 0xa6, 0xd5, 0xba, 0x9a, 0x48, 0x24, + 0x9f, 0x54, 0x15, 0xf5, 0xb5, 0xb9, 0xfc, 0xf5, 0x8e, 0xa9, 0x5c, 0x8e, 0xb1, 0xd1, 0x11, 0x4e, + 0x1c, 0x3f, 0xce, 0x60, 0xff, 0x00, 0x9f, 0x5f, 0x77, 0x09, 0x59, 0x02, 0x69, 0xc0, 0x9f, 0x8e, + 0xc3, 0xf8, 0x65, 0xf8, 0xc3, 0x51, 0x8b, 0xf9, 0x99, 0x2a, 0xfd, 0x43, 0x65, 0xc2, 0x58, 0x74, + 0x87, 0x61, 0x70, 0x08, 0xce, 0xff, 0x47, 0xb2, 0xb5, 0x71, 0x94, 0x52, 0xd3, 0xf3, 0x38, 0x4e, + 0x0d, 0xc7, 0x75, 0x90, 0xde, 0x20, 0xda, 0xe8, 0xc9, 0x6a, 0xa4, 0xb1, 0xc1, 0xab, 0x1d, 0x7b, + 0xfb, 0xed, 0x13, 0xc0, 0xf7, 0x67, 0x66, 0xae, 0x6d, 0xf3, 0x79, 0x7c, 0x8f, 0x69, 0x1e, 0x0d, + 0xaf, 0xd7, 0xc7, 0xda, 0x6c, 0x3b, 0x63, 0xc3, 0xb7, 0x8a, 0xb4, 0x39, 0x02, 0xe5, 0x00, 0x5c, + 0xe9, 0xaa, 0x57, 0x2c, 0x22, 0xf0, 0x3b, 0x92, 0x4a, 0x11, 0x5a, 0x9b, 0x61, 0x5d, 0x14, 0xc6, + 0x3e, 0x04, 0xff, 0x46, 0x89, 0x94, 0xb7, 0xa2, 0x86, 0x2e, 0x85, 0x63, 0xde, 0xde, 0xde, 0xd9, + 0xae, 0xae, 0xaf, 0x37, 0x78, 0x9c, 0xfd, 0x2f, 0x6c, 0x1f, 0x6f, 0x03, 0x98, 0x5c, 0x80, 0xd6, + 0xd8, 0xca, 0xbd, 0x16, 0x8f, 0x6a, 0xbc, 0x35, 0xb9, 0x96, 0xf1, 0x52, 0x3b, 0xbd, 0x3d, 0x1b, + 0xf9, 0xf2, 0x97, 0xbe, 0x80, 0x69, 0x96, 0x69, 0x3a, 0xff, 0x13, 0x23, 0xbd, 0x2a, 0x18, 0xba, + 0x63, 0x1f, 0xfd, 0xee, 0x1b, 0x6b, 0x7c, 0x1b, 0x9a, 0x53, 0xa3, 0x91, 0x50, 0x35, 0x73, 0xfa, + 0xa2, 0xe9, 0x54, 0x96, 0xa6, 0xd4, 0x7f, 0x5e, 0x91, 0x04, 0x75, 0x49, 0x7b, 0x02, 0x34, 0x55, + 0xa2, 0xa9, 0x82, 0x29, 0x7d, 0x33, 0xf1, 0xec, 0x36, 0x1e, 0x7d, 0xfc, 0x69, 0x62, 0xb1, 0x08, + 0x9a, 0xa6, 0x62, 0xd9, 0x16, 0x96, 0x6d, 0x62, 0x4d, 0x0f, 0xd3, 0x3d, 0xfb, 0xa6, 0xa5, 0x69, + 0x8e, 0xb6, 0x62, 0xc3, 0x4e, 0xfd, 0xb4, 0xf7, 0x9d, 0xa6, 0xee, 0xd4, 0xae, 0xf1, 0x91, 0x62, + 0xe1, 0xe0, 0xd9, 0x44, 0x38, 0x6b, 0x1c, 0x23, 0x15, 0x06, 0xaf, 0x06, 0x5e, 0x1d, 0x02, 0xc1, + 0x00, 0x3b, 0xbe, 0x3b, 0x84, 0x94, 0xe0, 0xba, 0x0e, 0x8e, 0xe3, 0x60, 0xd7, 0xec, 0x1b, 0x61, + 0x5b, 0x28, 0xef, 0xfd, 0xba, 0xb4, 0x7e, 0x35, 0xc1, 0xc2, 0xb5, 0xd9, 0xe9, 0x15, 0x1b, 0xb6, + 0x7c, 0xed, 0xca, 0xbb, 0x96, 0x1b, 0xb0, 0x5a, 0x32, 0x6a, 0x68, 0x57, 0x4b, 0xb5, 0x9c, 0xd9, + 0xf4, 0x19, 0x32, 0x31, 0xc8, 0x24, 0x04, 0xab, 0xe2, 0xd0, 0x92, 0x70, 0xa9, 0x56, 0x4b, 0x98, + 0x66, 0xf5, 0x86, 0xd3, 0x2c, 0x13, 0xdb, 0xb6, 0xb0, 0x6d, 0x8b, 0xda, 0xcc, 0x88, 0xd3, 0x1a, + 0x71, 0x84, 0xe2, 0x16, 0x30, 0xa6, 0xc6, 0x2f, 0xae, 0x08, 0xea, 0x7e, 0x79, 0xe1, 0x95, 0x99, + 0xfe, 0x81, 0x53, 0x5a, 0x38, 0xac, 0x7c, 0x6e, 0xbd, 0xed, 0x6e, 0x7f, 0x70, 0x97, 0x1d, 0xdb, + 0xb2, 0x97, 0xa6, 0xa8, 0xa4, 0x35, 0x0e, 0xd9, 0x44, 0x15, 0x7d, 0x69, 0x88, 0xaa, 0x55, 0xc5, + 0xb4, 0xaa, 0x58, 0x75, 0x98, 0x55, 0x29, 0x92, 0xbc, 0xf8, 0xe7, 0x4a, 0x2c, 0x6a, 0x07, 0xe6, + 0x26, 0xe7, 0x72, 0x85, 0x89, 0xf1, 0x7d, 0xda, 0xdd, 0x06, 0x6a, 0x21, 0x37, 0xf1, 0x95, 0x7c, + 0x32, 0x79, 0x26, 0xd5, 0x1a, 0x69, 0x97, 0xd3, 0x47, 0x2b, 0xe5, 0xfc, 0x92, 0xdb, 0x9a, 0x89, + 0x7a, 0x15, 0x73, 0x11, 0x4d, 0x07, 0xd7, 0xad, 0x60, 0x9a, 0x55, 0xa4, 0x74, 0x71, 0x5d, 0x17, + 0xc6, 0xfa, 0xec, 0xcc, 0xfc, 0x59, 0xbb, 0x79, 0x4d, 0x24, 0x54, 0x29, 0xe6, 0xcd, 0xb9, 0xe1, + 0xc1, 0x57, 0x36, 0xfe, 0xde, 0x9e, 0x58, 0x11, 0x24, 0x84, 0x10, 0x40, 0xe1, 0x5d, 0x86, 0x7f, + 0x7c, 0x5f, 0x2d, 0xfb, 0x9d, 0x74, 0x47, 0xbc, 0x65, 0x5b, 0xa2, 0xd9, 0xcd, 0x8d, 0x5f, 0x20, + 0xe2, 0x05, 0x45, 0x05, 0xf7, 0xda, 0x09, 0x6c, 0xc7, 0xc0, 0xf3, 0xd1, 0x85, 0x5a, 0x83, 0xb3, + 0x64, 0x37, 0x37, 0x47, 0xd5, 0x50, 0x93, 0x13, 0x28, 0xcc, 0x4c, 0x16, 0x27, 0x06, 0x2f, 0xbd, + 0xb3, 0xe9, 0xd5, 0xc2, 0x1b, 0xbc, 0x2a, 0xf4, 0x15, 0xcd, 0x20, 0x84, 0x50, 0x80, 0x20, 0x10, + 0xdc, 0x73, 0x9f, 0x68, 0xff, 0xe6, 0x63, 0xe9, 0xc3, 0x1d, 0x3d, 0x9d, 0x5b, 0xca, 0x72, 0xd2, + 0xe3, 0xab, 0xe5, 0x10, 0x02, 0xbc, 0x6d, 0xbb, 0x70, 0x0a, 0x51, 0xd7, 0x1b, 0xd0, 0x14, 0xc5, + 0x29, 0x53, 0x2b, 0x2f, 0x90, 0xbb, 0x38, 0x35, 0x76, 0xae, 0x7f, 0xf2, 0xe5, 0x3d, 0x6f, 0x56, + 0x8f, 0x02, 0x65, 0xc0, 0xb8, 0xeb, 0x9a, 0xa8, 0xc3, 0x02, 0xf5, 0xf0, 0xfd, 0xf5, 0x8b, 0xc1, + 0xbd, 0xbd, 0x9b, 0x95, 0x67, 0xd2, 0xcd, 0xe5, 0x36, 0x21, 0x1c, 0xd4, 0x48, 0x96, 0x85, 0x89, + 0x48, 0xa5, 0xb0, 0x60, 0xe4, 0x2b, 0x65, 0x7b, 0x76, 0x31, 0xbf, 0x38, 0x7a, 0xf0, 0x6f, 0xf3, + 0x3f, 0x3c, 0x73, 0x95, 0x3c, 0x50, 0x01, 0xca, 0x52, 0x4a, 0xeb, 0xae, 0x1a, 0x49, 0x29, 0x5d, + 0xc0, 0x70, 0xde, 0x3f, 0x50, 0x72, 0x82, 0xdd, 0x07, 0x6a, 0xf9, 0xf3, 0x01, 0x7f, 0x65, 0xa0, + 0x4d, 0x2c, 0x9e, 0xbf, 0x31, 0x21, 0xac, 0xcb, 0xc4, 0x5a, 0x82, 0x6e, 0xd1, 0x6b, 0x1f, 0x5e, + 0xbf, 0xcf, 0x3a, 0x02, 0xd8, 0x80, 0x09, 0xd8, 0x72, 0xd9, 0x2f, 0xee, 0x79, 0x95, 0x73, 0x72, + 0xc7, 0xb1, 0x73, 0xff, 0x1a, 0xd9, 0x7d, 0x7f, 0xc7, 0x55, 0x50, 0xea, 0x63, 0xa8, 0x7e, 0x3b, + 0x2e, 0x9c, 0xbb, 0x28, 0xd8, 0x7e, 0xc0, 0x15, 0x77, 0xac, 0xcc, 0xbd, 0x82, 0x3a, 0x5b, 0x53, + 0xb3, 0xba, 0xae, 0xa7, 0xfc, 0x7e, 0x1f, 0x3e, 0xaf, 0x07, 0x55, 0x55, 0x91, 0x52, 0x62, 0xdb, + 0x36, 0xd5, 0xaa, 0x49, 0xb1, 0x54, 0x62, 0x7c, 0x6a, 0xee, 0x8e, 0x20, 0x65, 0xb9, 0xc3, 0x84, + 0x10, 0x9a, 0x10, 0xc2, 0x2b, 0x84, 0xf0, 0x09, 0x21, 0x02, 0xf5, 0xf0, 0x09, 0x21, 0x7c, 0x52, + 0x0f, 0x13, 0x4e, 0xb5, 0x31, 0x35, 0x6b, 0xb0, 0x50, 0x51, 0x98, 0x5d, 0xb2, 0x99, 0x2f, 0x41, + 0xc1, 0xd4, 0xc8, 0x17, 0x6b, 0x28, 0xbe, 0x18, 0xf5, 0xfc, 0xdb, 0xc2, 0xb4, 0x65, 0x82, 0x47, + 0x81, 0x24, 0xa0, 0x2f, 0x7f, 0xc0, 0x4d, 0xa9, 0xa2, 0xb1, 0x98, 0xe6, 0xf7, 0xfb, 0x08, 0x04, + 0x02, 0x24, 0x93, 0x49, 0xf2, 0xd7, 0x67, 0x49, 0xa6, 0x52, 0xb8, 0xae, 0xc4, 0x30, 0x8a, 0xc4, + 0x62, 0x71, 0x60, 0x74, 0x35, 0x30, 0x2b, 0x84, 0x30, 0xe4, 0xc7, 0x4a, 0x75, 0xd3, 0x0c, 0x12, + 0xa8, 0xd6, 0xad, 0x18, 0xaa, 0x83, 0x6e, 0x2a, 0x21, 0x00, 0x6a, 0x35, 0xfb, 0xa0, 0xeb, 0xba, + 0x3d, 0x8a, 0xaa, 0xa0, 0xe9, 0x3a, 0x35, 0xc7, 0x91, 0x9a, 0xae, 0x03, 0x52, 0xba, 0xae, 0xeb, + 0x08, 0x21, 0x2e, 0x01, 0x25, 0xc0, 0xba, 0xb5, 0x76, 0xef, 0xa0, 0x51, 0xfd, 0xdb, 0x6a, 0x3d, + 0xb4, 0x8f, 0x01, 0xff, 0xc7, 0x90, 0x80, 0x0b, 0x38, 0x40, 0xad, 0x7e, 0xbb, 0xf2, 0x0e, 0xa2, + 0xff, 0x17, 0x66, 0x9b, 0xf9, 0x0b, 0x88, 0x97, 0x4b, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +}; + +const BITMAP_OPAQUE gerbview_open_recent_drill_files_xpm[1] = {{ png, sizeof( png ), "gerbview_open_recent_drill_files_xpm" }}; + +//EOF diff --git a/bitmaps_png/cpp_26/via.cpp b/bitmaps_png/cpp_26/via.cpp new file mode 100644 index 0000000000..9ab36f3bee --- /dev/null +++ b/bitmaps_png/cpp_26/via.cpp @@ -0,0 +1,82 @@ + +/* Do not modify this file, it was automatically generated by the + * PNG2cpp CMake script, using a *.png file as input. + */ + +#include "bitmaps.h" + +static const unsigned char png[] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c, + 0xce, 0x00, 0x00, 0x04, 0x13, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x96, 0x5f, 0x4c, 0xd3, + 0x57, 0x14, 0xc7, 0x2f, 0xb4, 0xe0, 0x80, 0x2a, 0xfd, 0x03, 0x32, 0x05, 0x5b, 0x8a, 0x13, 0x06, + 0xb5, 0x53, 0x68, 0x69, 0x19, 0x3e, 0x68, 0xc6, 0xbf, 0x3a, 0xe8, 0x6a, 0x11, 0xda, 0x01, 0x41, + 0xec, 0x68, 0x29, 0x6d, 0x21, 0x41, 0x7d, 0xd1, 0xe8, 0x03, 0xf1, 0x85, 0x8c, 0x07, 0x89, 0x8b, + 0x89, 0x8a, 0x38, 0x5c, 0x34, 0x59, 0x9c, 0x89, 0x99, 0x31, 0x1a, 0x75, 0xc6, 0xed, 0x65, 0x84, + 0x2c, 0xcb, 0x0c, 0x66, 0x4b, 0xdc, 0xc3, 0xc6, 0xb6, 0xc4, 0x98, 0xf8, 0x07, 0x86, 0x62, 0x36, + 0x23, 0xe5, 0xee, 0x7b, 0x7e, 0xf9, 0xdd, 0xa6, 0x92, 0x6a, 0x06, 0x33, 0x3e, 0xec, 0xe1, 0x93, + 0xa6, 0xe7, 0x9e, 0x73, 0xbe, 0xf7, 0x9e, 0x7b, 0x7e, 0xe7, 0xf7, 0x63, 0x9c, 0x73, 0xf6, 0x3a, + 0x58, 0x9c, 0x33, 0x63, 0x49, 0x40, 0x01, 0x94, 0x20, 0x05, 0x2c, 0x93, 0x7f, 0xc9, 0x96, 0xfc, + 0x4a, 0x84, 0xe4, 0xe4, 0x2b, 0xcb, 0xca, 0xca, 0x1a, 0x1c, 0x0e, 0x47, 0x7f, 0x7d, 0x7d, 0xfd, + 0x71, 0xab, 0xd5, 0x7a, 0x40, 0xad, 0x56, 0xbb, 0x61, 0xaf, 0x00, 0xeb, 0xc0, 0x1b, 0xb4, 0x99, + 0x25, 0x09, 0x51, 0xa0, 0xd7, 0xeb, 0x5d, 0xdb, 0xd9, 0xd9, 0x79, 0x2d, 0x14, 0x0a, 0xcd, 0xf6, + 0xf4, 0xf4, 0xf0, 0x05, 0x44, 0x83, 0xc1, 0xe0, 0x64, 0x4d, 0x4d, 0xcd, 0x10, 0x7c, 0xeb, 0xc0, + 0x9b, 0xb4, 0xa9, 0x45, 0x09, 0x51, 0x39, 0x20, 0xb0, 0x2b, 0x1c, 0x0e, 0x3f, 0x59, 0x90, 0xfc, + 0x57, 0x30, 0x0e, 0x9e, 0xb3, 0xc3, 0x77, 0x4c, 0xaf, 0xd7, 0x07, 0x11, 0x67, 0x5e, 0x28, 0xf6, + 0x52, 0x21, 0x08, 0x9c, 0x8c, 0x4b, 0x34, 0x19, 0x89, 0x44, 0xb6, 0x03, 0x9d, 0xd8, 0x84, 0xc5, + 0x62, 0x49, 0x81, 0xdd, 0x0c, 0x86, 0xc1, 0x3c, 0xf9, 0x61, 0xfd, 0x91, 0xd1, 0x68, 0x8c, 0x60, + 0x3d, 0x2f, 0xfe, 0xde, 0xe2, 0x2f, 0xf9, 0x39, 0x50, 0xa6, 0x6d, 0x42, 0x04, 0xa5, 0x39, 0xea, + 0xf1, 0x78, 0x54, 0x71, 0xcd, 0x90, 0x06, 0xde, 0x02, 0x25, 0x80, 0xec, 0x4a, 0xf8, 0x6d, 0x01, + 0xbf, 0x93, 0x7f, 0x57, 0x57, 0xd7, 0x4d, 0x85, 0x42, 0xe1, 0x84, 0x3d, 0x23, 0xae, 0x3a, 0x2c, + 0x19, 0x68, 0x81, 0x4e, 0x60, 0xb3, 0xd9, 0x0a, 0xb1, 0xb3, 0x7b, 0x14, 0xe4, 0xf3, 0xf9, 0xbe, + 0xa2, 0x26, 0x90, 0xd7, 0xb2, 0x21, 0x51, 0x91, 0xe1, 0xd3, 0x1e, 0xce, 0x08, 0xe8, 0x46, 0x15, + 0x99, 0x0a, 0x3f, 0x6c, 0x1f, 0x82, 0x4a, 0xea, 0x40, 0x54, 0xa0, 0x1c, 0x31, 0xcf, 0x28, 0xce, + 0xed, 0x76, 0x7f, 0x0a, 0xdb, 0x06, 0xda, 0x98, 0x10, 0xa2, 0x4e, 0xd9, 0x06, 0xbc, 0x02, 0x97, + 0xcb, 0xf5, 0x85, 0x7c, 0x92, 0x29, 0xad, 0x56, 0x1b, 0x10, 0xf6, 0x8c, 0xb0, 0x6e, 0x54, 0x7d, + 0x24, 0xef, 0xa1, 0xe6, 0xc4, 0x1a, 0x2e, 0x71, 0x34, 0x6f, 0x76, 0xf9, 0xee, 0xec, 0x8b, 0x38, + 0x63, 0x3b, 0xd6, 0xd7, 0xd2, 0xa6, 0x7b, 0x7b, 0x7b, 0x0f, 0xc8, 0x25, 0x7c, 0xa2, 0x54, 0x2a, + 0xab, 0xc5, 0x5d, 0xb1, 0x67, 0x8c, 0x9d, 0x9b, 0x61, 0xec, 0xce, 0x34, 0x63, 0x77, 0xa7, 0x64, + 0x86, 0x5c, 0xae, 0xbf, 0xc9, 0xf9, 0x6c, 0x65, 0xe5, 0x63, 0x61, 0x1b, 0xcb, 0x4b, 0xb9, 0x4f, + 0xc9, 0xb5, 0xa0, 0x64, 0x74, 0x5d, 0xf4, 0x9d, 0xd1, 0xc2, 0xa8, 0x4e, 0x16, 0x4c, 0x73, 0xaf, + 0x38, 0x24, 0x77, 0x5c, 0x0a, 0x4e, 0xa5, 0xa2, 0x4e, 0xa4, 0x78, 0x93, 0xc9, 0xb4, 0x0b, 0xb6, + 0x54, 0x49, 0x28, 0xca, 0xd8, 0x77, 0xd2, 0x55, 0xc5, 0xb1, 0xd7, 0xef, 0x97, 0xee, 0xe6, 0x27, + 0x83, 0x21, 0x66, 0xdb, 0xd3, 0xa6, 0x91, 0x92, 0x16, 0xdd, 0xb0, 0xf1, 0x8a, 0x9f, 0x1d, 0x12, + 0xeb, 0xc7, 0x36, 0x49, 0xb6, 0xcc, 0x81, 0x55, 0xb7, 0x90, 0xb0, 0x0d, 0xac, 0xa0, 0x7b, 0x44, + 0xec, 0x04, 0xc5, 0xd7, 0xd6, 0xd6, 0x1e, 0xc7, 0xff, 0x4c, 0xe9, 0x6e, 0x17, 0x0a, 0x4d, 0xab, + 0x54, 0xb1, 0x76, 0x7d, 0x94, 0x9e, 0x2e, 0xd9, 0xa2, 0x49, 0x8c, 0x1b, 0x3e, 0xc9, 0x95, 0x92, + 0x96, 0xff, 0x58, 0x1d, 0x13, 0xb2, 0xdf, 0xae, 0xe3, 0xd9, 0xc3, 0xfa, 0x39, 0xcd, 0xf0, 0x9a, + 0x79, 0x45, 0x41, 0x6a, 0x0b, 0x9d, 0x88, 0x76, 0x8f, 0xb2, 0x9d, 0xa2, 0x78, 0x3c, 0x7f, 0x57, + 0xe8, 0x6a, 0x12, 0x9e, 0x68, 0x2e, 0x39, 0x99, 0xf7, 0x85, 0x42, 0x92, 0xd0, 0x64, 0x4e, 0x4e, + 0xcc, 0xde, 0x1e, 0xce, 0x92, 0x84, 0x4c, 0xdf, 0x56, 0xc6, 0x84, 0x36, 0x7e, 0xbf, 0x59, 0xb2, + 0xa9, 0x0f, 0xad, 0xfe, 0x0d, 0x09, 0x8b, 0x44, 0x3b, 0x23, 0xf6, 0x1b, 0x8a, 0x6f, 0x6c, 0x6c, + 0x1c, 0x11, 0xe2, 0x6c, 0x9e, 0xb1, 0x2f, 0x21, 0xf6, 0x47, 0x3c, 0x1f, 0x7b, 0x3c, 0x4f, 0xc9, + 0xf1, 0x52, 0x69, 0xe9, 0xec, 0x53, 0xdc, 0x1f, 0xd9, 0xae, 0xad, 0x4f, 0xbb, 0x47, 0x49, 0xb3, + 0x3e, 0xcb, 0xe7, 0x85, 0xd7, 0xad, 0xfc, 0xed, 0xaf, 0x6d, 0x7c, 0xe5, 0xe9, 0x02, 0x49, 0x48, + 0x15, 0xd0, 0x1e, 0x43, 0xc2, 0x74, 0x4a, 0xd8, 0xdc, 0xdc, 0xac, 0x40, 0xac, 0x34, 0x41, 0xaa, + 0xaa, 0xaa, 0x82, 0xb1, 0xae, 0x4b, 0xf4, 0x1c, 0xe1, 0xe8, 0x87, 0xc9, 0x31, 0x10, 0x08, 0xdc, + 0xc4, 0x7f, 0xa7, 0xfc, 0xac, 0x24, 0xe9, 0x4e, 0x1a, 0xce, 0x69, 0x46, 0xf4, 0x3c, 0xd6, 0x75, + 0x20, 0x67, 0xc4, 0xf8, 0x00, 0x6d, 0xbe, 0x5d, 0xec, 0xbc, 0xbb, 0xbb, 0xbb, 0x41, 0x2e, 0xfd, + 0x7c, 0x71, 0x71, 0xb1, 0x41, 0xcc, 0xbe, 0x84, 0x13, 0x01, 0x42, 0x76, 0x38, 0xce, 0x51, 0x80, + 0xd3, 0xe9, 0x3c, 0x26, 0x0f, 0xcd, 0x65, 0xb6, 0x1b, 0xd5, 0x3a, 0xcb, 0xc4, 0x7b, 0xbc, 0xe0, + 0xf2, 0x46, 0x9e, 0x7f, 0xd1, 0xcc, 0x4b, 0x7f, 0xd8, 0xc2, 0x4b, 0x4e, 0x97, 0x5f, 0xc2, 0x5a, + 0x03, 0x09, 0x75, 0x74, 0x74, 0xe8, 0x10, 0x7b, 0x47, 0x1e, 0x47, 0x57, 0xc5, 0x69, 0x5e, 0x3a, + 0x82, 0xe0, 0x3c, 0x20, 0x3f, 0x0f, 0x7f, 0x61, 0x4a, 0xef, 0x47, 0xd0, 0x66, 0x43, 0x6f, 0x91, + 0x51, 0xdc, 0x8f, 0x40, 0x16, 0x72, 0xc2, 0x27, 0x0b, 0x13, 0xe1, 0x2a, 0xc5, 0xa0, 0xc5, 0xa7, + 0x9b, 0x9a, 0x9a, 0x72, 0xff, 0xd5, 0xac, 0xeb, 0xef, 0xef, 0x4f, 0x45, 0xd0, 0x2d, 0x31, 0xa1, + 0x5b, 0x5b, 0x5b, 0xcf, 0xe7, 0x6c, 0x58, 0xe5, 0x4f, 0x24, 0x64, 0xb7, 0xdb, 0x0f, 0xa2, 0x64, + 0x77, 0x45, 0xb7, 0xa2, 0xe4, 0x9e, 0x45, 0x4d, 0xef, 0xbe, 0xbe, 0xbe, 0x7c, 0x3c, 0xe9, 0xd7, + 0x45, 0x82, 0x30, 0x06, 0xe6, 0x8e, 0xc1, 0x8f, 0x78, 0xd3, 0xa9, 0x36, 0xfe, 0xc1, 0x59, 0x2f, + 0x6f, 0x39, 0xd2, 0xc1, 0xfd, 0x7b, 0x02, 0x8f, 0xe3, 0x06, 0xef, 0x0c, 0x66, 0x64, 0xd7, 0x92, + 0x5f, 0x7c, 0x48, 0xe0, 0x03, 0x53, 0x09, 0xde, 0x45, 0x31, 0x50, 0xe2, 0x0b, 0x38, 0x55, 0xee, + 0x7f, 0x7e, 0xc3, 0xe2, 0x74, 0xea, 0xce, 0x7d, 0x81, 0x66, 0xf7, 0x99, 0x16, 0xde, 0x36, 0xb4, + 0x93, 0xef, 0x1c, 0xf0, 0x73, 0xcf, 0x89, 0x76, 0xbe, 0x75, 0xd0, 0x35, 0x61, 0x36, 0x9b, 0x23, + 0xa2, 0xeb, 0x5e, 0xc9, 0x37, 0xc3, 0xbb, 0xe3, 0x75, 0xda, 0x17, 0x34, 0x43, 0xc3, 0xff, 0x48, + 0xe8, 0x8c, 0xed, 0xf5, 0x08, 0x99, 0x3e, 0xb7, 0x5f, 0x80, 0xc8, 0xfb, 0x89, 0x3e, 0x48, 0x96, + 0x2c, 0x64, 0xf9, 0xa5, 0x3a, 0xb3, 0xe2, 0xb6, 0xe3, 0x4f, 0x30, 0x23, 0xb0, 0x8e, 0x57, 0x0d, + 0x42, 0x44, 0xf3, 0xa2, 0xcf, 0x2c, 0xc1, 0x3f, 0xcc, 0xc3, 0x66, 0x7a, 0x03, 0x39, 0xbc, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +}; + +const BITMAP_OPAQUE via_xpm[1] = {{ png, sizeof( png ), "via_xpm" }}; + +//EOF diff --git a/bitmaps_png/sources/change_entry_orient.svg b/bitmaps_png/sources/change_entry_orient.svg new file mode 100644 index 0000000000..026aff0010 --- /dev/null +++ b/bitmaps_png/sources/change_entry_orient.svg @@ -0,0 +1,231 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bitmaps_png/sources/gerbview_open_recent_drill_files.svg b/bitmaps_png/sources/gerbview_open_recent_drill_files.svg new file mode 100644 index 0000000000..4101f09dfb --- /dev/null +++ b/bitmaps_png/sources/gerbview_open_recent_drill_files.svg @@ -0,0 +1,329 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bitmaps_png/sources/lang_bg.svg b/bitmaps_png/sources/lang_bg.svg new file mode 100644 index 0000000000..82321af0b2 --- /dev/null +++ b/bitmaps_png/sources/lang_bg.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/bitmaps_png/sources/via.svg b/bitmaps_png/sources/via.svg new file mode 100644 index 0000000000..8454639b7e --- /dev/null +++ b/bitmaps_png/sources/via.svg @@ -0,0 +1,124 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/drawpanel.cpp b/common/drawpanel.cpp index cdad0e7601..85c5535ce1 100644 --- a/common/drawpanel.cpp +++ b/common/drawpanel.cpp @@ -63,7 +63,7 @@ BEGIN_EVENT_TABLE( EDA_DRAW_PANEL, wxScrolledWindow ) EVT_MOUSEWHEEL( EDA_DRAW_PANEL::OnMouseWheel ) EVT_MOUSE_EVENTS( EDA_DRAW_PANEL::OnMouseEvent ) EVT_CHAR( EDA_DRAW_PANEL::OnKeyEvent ) - EVT_CHAR_HOOK( EDA_DRAW_PANEL::OnKeyEvent ) + EVT_CHAR_HOOK( EDA_DRAW_PANEL::OnCharHook ) EVT_PAINT( EDA_DRAW_PANEL::OnPaint ) EVT_ERASE_BACKGROUND( EDA_DRAW_PANEL::OnEraseBackground ) EVT_SCROLLWIN( EDA_DRAW_PANEL::OnScroll ) @@ -1105,23 +1105,23 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event ) } + +void EDA_DRAW_PANEL::OnCharHook( wxKeyEvent& event ) +{ + event.Skip(); +} + void EDA_DRAW_PANEL::OnKeyEvent( wxKeyEvent& event ) { int localkey; wxPoint pos; - localkey = event.GetKeyCode(); + localkey = event.GetKeyCode(); switch( localkey ) { - case WXK_CONTROL: - case WXK_CAPITAL: - case WXK_SHIFT: - case WXK_NUMLOCK: - case WXK_LBUTTON: - case WXK_RBUTTON: - case WXK_ALT: - return; + default: + break; case WXK_ESCAPE: m_AbortRequest = true; @@ -1130,7 +1130,6 @@ void EDA_DRAW_PANEL::OnKeyEvent( wxKeyEvent& event ) EndMouseCapture(); else EndMouseCapture( ID_NO_TOOL_SELECTED, m_defaultCursor, wxEmptyString ); - break; } diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index ba33652ec8..799b36bdef 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -157,9 +157,11 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) } if( GetBusEntryShape( (SCH_BUS_ENTRY*) item ) == '\\' ) - PopMenu->Append( ID_POPUP_SCH_ENTRY_SELECT_SLASH, _( "Set Bus Entry /" ) ); + AddMenuItem( PopMenu, ID_POPUP_SCH_ENTRY_SELECT_SLASH, + _( "Set Bus Entry /" ), KiBitmap( change_entry_orient_xpm ) ); else - PopMenu->Append( ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH, _( "Set Bus Entry \\" ) ); + AddMenuItem( PopMenu, ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH, + _( "Set Bus Entry \\" ), KiBitmap( change_entry_orient_xpm ) ); AddMenuItem( PopMenu, ID_POPUP_SCH_DELETE, _( "Delete Bus Entry" ), KiBitmap( delete_bus_xpm ) ); diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp index 7ab03a0108..9c98b14370 100644 --- a/gerbview/menubar.cpp +++ b/gerbview/menubar.cpp @@ -106,7 +106,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar( void ) wxID_ANY, _( "Open Recent Dri&ll File" ), _( "Open a recent opened drill file" ), - KiBitmap( open_project_xpm ) ); + KiBitmap( gerbview_open_recent_drill_files_xpm ) ); // Separator fileMenu->AppendSeparator(); diff --git a/include/bitmaps.h b/include/bitmaps.h index 06c0c7f34f..1fcaf9cfab 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -113,6 +113,7 @@ EXTERN_BITMAP( break_line_xpm ) EXTERN_BITMAP( browse_files_xpm ) EXTERN_BITMAP( cancel_tool_xpm ) EXTERN_BITMAP( cancel_xpm ) +EXTERN_BITMAP( change_entry_orient_xpm ) EXTERN_BITMAP( checked_ok_xpm ) EXTERN_BITMAP( component_select_alternate_shape_xpm ) EXTERN_BITMAP( component_select_unit_xpm ) @@ -200,6 +201,7 @@ EXTERN_BITMAP( gerber_file_xpm ) EXTERN_BITMAP( gerber_recent_files_xpm ) EXTERN_BITMAP( gerbview_clear_layers_xpm ) EXTERN_BITMAP( gerber_open_dcode_file_xpm ) +EXTERN_BITMAP( gerbview_open_recent_drill_files_xpm ) EXTERN_BITMAP( general_deletions_xpm ) EXTERN_BITMAP( general_ratsnest_xpm ) EXTERN_BITMAP( glabel2label_xpm ) @@ -470,6 +472,7 @@ EXTERN_BITMAP( unlocked_xpm ) EXTERN_BITMAP( unzip_xpm ) EXTERN_BITMAP( update_module_board_xpm ) EXTERN_BITMAP( up_xpm ) +EXTERN_BITMAP( via_xpm ) EXTERN_BITMAP( via_sketch_xpm ) EXTERN_BITMAP( viewlibs_icon_xpm ) EXTERN_BITMAP( warning_xpm ) diff --git a/include/class_drawpanel.h b/include/class_drawpanel.h index 6b3f1e1e26..1f249d822c 100644 --- a/include/class_drawpanel.h +++ b/include/class_drawpanel.h @@ -177,6 +177,7 @@ public: void OnMouseEvent( wxMouseEvent& event ); void OnMouseLeaving( wxMouseEvent& event ); void OnKeyEvent( wxKeyEvent& event ); + void OnCharHook( wxKeyEvent& event ); void OnPan( wxCommandEvent& event ); diff --git a/include/pad_shapes.h b/include/pad_shapes.h index c0a7f3acef..5aea6a5026 100644 --- a/include/pad_shapes.h +++ b/include/pad_shapes.h @@ -19,8 +19,8 @@ /* PADS attributes */ #define PAD_STANDARD 0 // Usual pad -#define PAD_SMD 1 // Smd pad, appears on the layer paste (default) -#define PAD_CONN 2 // Like smd, does not appear on the layer paste (default) +#define PAD_SMD 1 // Smd pad, appears on the solder paste layer (default) +#define PAD_CONN 2 // Like smd, does not appear on the solder paste layer (default) #define PAD_HOLE_NOT_PLATED 3 // like PAD_STANDARD, but not plated // mechanical used only // no connection allowed diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp index 7340ddca7f..651224eafc 100644 --- a/pcbnew/class_board.cpp +++ b/pcbnew/class_board.cpp @@ -1672,10 +1672,22 @@ static bool sortPadsByXthenYCoord( D_PAD* const & ref, D_PAD* const & comp ) } -void BOARD::GetSortedPadListByXthenYCoord( std::vector& aVector ) +void BOARD::GetSortedPadListByXthenYCoord( std::vector& aVector, int aNetCode ) { - aVector.insert( aVector.end(), m_NetInfo.m_PadsFullList.begin(), - m_NetInfo.m_PadsFullList.end() ); + if( aNetCode < 0 ) + { + aVector.insert( aVector.end(), m_NetInfo.m_PadsFullList.begin(), + m_NetInfo.m_PadsFullList.end() ); + } + else + { + const NETINFO_ITEM* net = m_NetInfo.GetNetItem( aNetCode ); + if( net ) + { + aVector.insert( aVector.end(), net->m_PadInNetList.begin(), + net->m_PadInNetList.end() ); + } + } sort( aVector.begin(), aVector.end(), sortPadsByXthenYCoord ); } diff --git a/pcbnew/class_board.h b/pcbnew/class_board.h index 42831fb0f4..47c8e3a412 100644 --- a/pcbnew/class_board.h +++ b/pcbnew/class_board.h @@ -1211,8 +1211,11 @@ public: * those pointers are only references to pads which are owned by the BOARD * through other links. * @param aVector Where to put the pad pointers. + * @param aNetCode = the netcode filter: + * = -1 to build the full pad list. + * = a given netcode to build the pad list relative to the given net */ - void GetSortedPadListByXthenYCoord( std::vector& aVector ); + void GetSortedPadListByXthenYCoord( std::vector& aVector, int aNetCode = -1 ); /** * Function GetTrace diff --git a/pcbnew/class_netinfo.h b/pcbnew/class_netinfo.h index 144450580a..ac4c7ba0fa 100644 --- a/pcbnew/class_netinfo.h +++ b/pcbnew/class_netinfo.h @@ -222,7 +222,7 @@ public: int m_Flag; // used in some calculations. Had no // special meaning - std::vector m_ListPad; // List of pads connected to this net + std::vector m_PadInNetList; // List of pads connected to this net unsigned m_RatsnestStartIdx; /* Starting point of ratsnests of this * net (included) in a general buffer of @@ -369,7 +369,7 @@ public: void SetNet( int aNetCode ) { m_NetCode = aNetCode; } - int GetNodesCount() const { return m_ListPad.size(); } + int GetNodesCount() const { return m_PadInNetList.size(); } /** * Function GetNetname diff --git a/pcbnew/class_netinfolist.cpp b/pcbnew/class_netinfolist.cpp index b82d00b395..d4a9f47362 100644 --- a/pcbnew/class_netinfolist.cpp +++ b/pcbnew/class_netinfolist.cpp @@ -115,7 +115,7 @@ void NETINFO_LIST::buildListOfNets() } pad->SetNet( netcode ); - net_item->m_ListPad.push_back( pad ); + net_item->m_PadInNetList.push_back( pad ); nodes_count ++; last_pad = pad; } diff --git a/pcbnew/connect.cpp b/pcbnew/connect.cpp index 30f211326c..6d4428dc65 100644 --- a/pcbnew/connect.cpp +++ b/pcbnew/connect.cpp @@ -50,17 +50,32 @@ static void RebuildTrackChain( BOARD* pcb ); class CONNECTED_POINT { private: - TRACK * m_track; // a link to the parent item (track or via) - wxPoint m_point; // the connection point + BOARD_CONNECTED_ITEM * m_item; // a link to the parent item (track, via or pad) + wxPoint m_point; // the connection point public: - CONNECTED_POINT( TRACK * aTrack, wxPoint & aPoint) + CONNECTED_POINT( TRACK * aTrack, const wxPoint & aPoint) { - m_track = aTrack; + m_item = aTrack; m_point = aPoint; } - TRACK * GetTrack() const { return m_track; } + CONNECTED_POINT( D_PAD * aPad, const wxPoint & aPoint) + { + m_item = aPad; + m_point = aPoint; + } + + TRACK * GetTrack() const + { + return m_item->Type() != PCB_PAD_T ? (TRACK*) m_item : NULL ; + } + + D_PAD * GetPad() const + { + return m_item->Type() == PCB_PAD_T ? (D_PAD*) m_item : NULL; + } + const wxPoint & GetPoint() const { return m_point; } }; @@ -96,9 +111,8 @@ public: /** * Function Build_CurrNet_SubNets_Connections - * Connections to pads are assumed to be already initialized, - * and are not recalculated - * An be called after a track change (delete or add a track): + * should be called after a track change (delete or add a track): + * Connections to pads and to tracks are recalculated * If a track is deleted, the other pointers to pads do not change. * When a new track is added in track list, its pointers to pads are already initialized * Builds the subnets inside a net (tracks from aFirstTrack to aFirstTrack). @@ -120,6 +134,13 @@ public: */ void BuildTracksCandidatesList( TRACK * aBegin = NULL, TRACK * aEnd = NULL); + /** + * Function BuildPadsCandidatesList + * Fills m_Candidates with all pads connecting points (pads position) + * m_sortedPads must be built + */ + void BuildPadsCandidatesList(); + /** * function SearchConnectedTracks * Fills m_Connected with tracks/vias connected to aTrack @@ -140,9 +161,21 @@ public: } /** - * function SearchTracksConnectedToPads + * function SearchConnectionsPadsToIntersectingPads * Explores the list of pads and adds to m_PadsConnected member - * of each track connected the pad(s) connected to + * of each pad pads connected to + * Here, connections are due to intersecting pads, not tracks + * m_sortedPads must be initialized + */ + void SearchConnectionsPadsToIntersectingPads(); + + /** + * function SearchTracksConnectedToPads + * Explores the list of pads. + * Adds to m_PadsConnected member of each track the pad(s) connected to + * Adds to m_TracksConnected member of each pad the track(s) connected to + * D_PAD::m_TracksConnected is cleared before adding items + * TRACK::m_PadsConnected is not cleared */ void SearchTracksConnectedToPads(); @@ -188,17 +221,27 @@ private: /** * Function Merge_SubNets - * Change a subnet value to a new value, for tracks ans pads which are connected to - * corresponding track for pads and tracks, this is the .m_Subnet member that is tested - * and modified these members are block numbers (or cluster numbers) for a given net - * The result is 2 cluster (or subnets) are merged into only one. - * Note: the resulting sub net value is the smallest between aOldSubNet et aNewSubNet + * Change a subnet old value to a new value, for tracks and pads which are connected to + * tracks from m_firstTrack to m_lastTrack and their connected pads. + * and modify the subnet parameter (change the old value to the new value). + * After that, 2 cluster (or subnets) are merged into only one. + * Note: the resulting sub net value is the smallest between aOldSubNet and aNewSubNet * @return modification count * @param aOldSubNet = subnet value to modify * @param aNewSubNet = new subnet value for each item which have old_val as subnet value */ int Merge_SubNets( int aOldSubNet, int aNewSubNet ); + /** + * Function Merge_PadsSubNets + * Change a subnet value to a new value, in m_sortedPads pad list + * After that, 2 cluster (or subnets) are merged into only one. + * Note: the resulting subnet value is the smallest between aOldSubNet et aNewSubNet + * @return modification count + * @param aOldSubNet = subnet value to modify + * @param aNewSubNet = new subnet value for each item which have old_val as subnet value + */ + int Merge_PadsSubNets( int aOldSubNet, int aNewSubNet ); }; @@ -216,28 +259,49 @@ void CONNECTIONS::BuildPadsList( int aNetcode ) { // Creates sorted pad list if not exists m_sortedPads.clear(); - if( aNetcode < 0 ) - m_brd->GetSortedPadListByXthenYCoord( m_sortedPads ); - else + m_brd->GetSortedPadListByXthenYCoord( m_sortedPads, aNetcode < 0 ? -1 : aNetcode ); +} + +/* Explores the list of pads and adds to m_PadsConnected member + * of each pad pads connected to + * Here, connections are due to intersecting pads, not tracks + */ +void CONNECTIONS::SearchConnectionsPadsToIntersectingPads() +{ + std::vector candidates; + + BuildPadsCandidatesList(); + + for( unsigned ii = 0; ii < m_sortedPads.size(); ii++ ) { - std::vector buffer; - m_brd->GetSortedPadListByXthenYCoord( buffer ); - int icnt = 0; - for( unsigned ii = 0; ii < buffer.size(); ii++ ) + D_PAD * pad = m_sortedPads[ii]; + pad->m_PadsConnected.clear(); + candidates.clear(); + CollectItemsNearTo( candidates, pad->ReturnShapePos(), pad->m_ShapeMaxRadius ); + // add pads to pad.m_PadsConnected, if they are connected + for( unsigned jj = 0; jj < candidates.size(); jj++ ) { - if( buffer[ii]->GetNet() == aNetcode ) - icnt++; - } - m_sortedPads.reserve(icnt); - for( unsigned ii = 0; ii < buffer.size(); ii++ ) - { - if( buffer[ii]->GetNet() == aNetcode ) - m_sortedPads.push_back( buffer[ii] ); + CONNECTED_POINT * item = candidates[jj]; + D_PAD * candidate_pad = item->GetPad(); + if( pad == candidate_pad ) + continue; + + if( (pad->m_layerMask & candidate_pad->m_layerMask) == 0 ) + continue; + if( pad->HitTest( item->GetPoint() ) ) + { + pad->m_PadsConnected.push_back( candidate_pad ); + } } } } - +/* Explores the list of pads + * Adds to m_PadsConnected member of each track the pad(s) connected to + * Adds to m_TracksConnected member of each pad the track(s) connected to + * D_PAD::m_TracksConnected is cleared before adding items + * TRACK::m_PadsConnected is not cleared + */ void CONNECTIONS::SearchTracksConnectedToPads() { std::vector candidates; @@ -245,18 +309,21 @@ void CONNECTIONS::SearchTracksConnectedToPads() for( unsigned ii = 0; ii < m_sortedPads.size(); ii++ ) { D_PAD * pad = m_sortedPads[ii]; + pad->m_TracksConnected.clear(); candidates.clear(); - CollectItemsNearTo( candidates, pad->ReturnShapePos(), pad->m_ShapeMaxRadius ); + + CollectItemsNearTo( candidates, pad->GetPosition(), pad->m_ShapeMaxRadius ); + // add this pad to track.m_PadsConnected, if it is connected for( unsigned jj = 0; jj < candidates.size(); jj++ ) { - CONNECTED_POINT * item = candidates[jj]; - if( (pad->m_layerMask & item->GetTrack()->ReturnMaskLayer()) == 0 ) + CONNECTED_POINT * cp_item = candidates[jj]; + if( (pad->m_layerMask & cp_item->GetTrack()->ReturnMaskLayer()) == 0 ) continue; - if( pad->HitTest( item->GetPoint() ) ) + if( pad->HitTest( cp_item->GetPoint() ) ) { - item->GetTrack()->m_PadsConnected.push_back( pad ); - pad->m_TracksConnected.push_back( item->GetTrack() ); + cp_item->GetTrack()->m_PadsConnected.push_back( pad ); + pad->m_TracksConnected.push_back( cp_item->GetTrack() ); } } } @@ -288,8 +355,11 @@ void CONNECTIONS::CollectItemsNearTo( std::vector& aList, CONNECTED_POINT& item = m_candidates[idx]; - if( item.GetPoint().x == aPosition.x ) + int dist = item.GetPoint().x - aPosition.x; + if( abs(dist) <= aDistMax ) + { break; // A good entry point is found. The list can be scanned from this point. + } else if( item.GetPoint().x < aPosition.x ) // We should search after this item { @@ -339,6 +409,19 @@ void CONNECTIONS::CollectItemsNearTo( std::vector& aList, } } + +void CONNECTIONS::BuildPadsCandidatesList() +{ + m_candidates.clear(); + m_candidates.reserve( m_sortedPads.size() ); + for( unsigned ii = 0; ii < m_sortedPads.size(); ii++ ) + { + D_PAD * pad = m_sortedPads[ii]; + CONNECTED_POINT candidate( pad, pad->GetPosition() ); + m_candidates.push_back( candidate ); + } +} + /* sort function used to sort .m_Connected by X the Y values * items are sorted by X coordinate value, * and for same X value, by Y coordinate value. @@ -498,25 +581,23 @@ int CONNECTIONS::searchEntryPoint( const wxPoint & aPoint) } /* Used after a track change (delete a track ou add a track) - * Connections to pads are assumed to be already initialized. - * and are not recalculated + * Connections to pads are recalculated */ void CONNECTIONS::Build_CurrNet_SubNets_Connections( TRACK* aFirstTrack, TRACK* aLastTrack, int aNetcode ) { - m_firstTrack = aFirstTrack; // The first track used to build m_Candidates m_lastTrack = aLastTrack; // The last track used to build m_Candidates - TRACK* curr_track; - // Pads subnets are expected already cleared, because this function // does not know the full list of pads BuildTracksCandidatesList( aFirstTrack, aLastTrack ); + TRACK* curr_track; for( curr_track = aFirstTrack; curr_track != NULL; curr_track = curr_track->Next() ) { // Clear track subnet id (Pads subnets are cleared outside this function) curr_track->SetSubNet( 0 ); curr_track->m_TracksConnected.clear(); + curr_track->m_PadsConnected.clear(); // Update connections between tracks: SearchConnectedTracks( curr_track ); @@ -535,6 +616,35 @@ void CONNECTIONS::Build_CurrNet_SubNets_Connections( TRACK* aFirstTrack, TRACK* } +/** + * Change a subnet value to a new value, in m_sortedPads pad list + * After that, 2 cluster (or subnets) are merged into only one. + * Note: the resulting subnet value is the smallest between aOldSubNet et aNewSubNet + */ +int CONNECTIONS::Merge_PadsSubNets( int aOldSubNet, int aNewSubNet ) +{ + int change_count = 0; + + if( aOldSubNet == aNewSubNet ) + return 0; + + if( (aOldSubNet > 0) && (aOldSubNet < aNewSubNet) ) + EXCHG( aOldSubNet, aNewSubNet ); + + // Examine connections between intersecting pads + for( unsigned ii = 0; ii < m_sortedPads.size(); ii++ ) + { + D_PAD * curr_pad = m_sortedPads[ii]; + if( curr_pad->GetSubNet() != aOldSubNet ) + continue; + + change_count++; + curr_pad->SetSubNet( aNewSubNet ); + } + + return change_count; +} + /* * Change a subnet value to a new value, for tracks and pads which are connected to. * The result is merging 2 clusters (or subnets) into only one cluster. @@ -702,11 +812,10 @@ void PCB_BASE_FRAME::TestConnections() { // At this point, track is the first track of a given net int current_net_code = track->GetNet(); - // Get last track of the current net TRACK* lastTrack = track->GetEndNetCode( current_net_code ); - if( current_net_code ) // do not spend time if net code = 0 ( dummy net ) + if( current_net_code > 0 ) // do not spend time if net code = 0 ( dummy net ) connections.Build_CurrNet_SubNets_Connections( track, lastTrack, current_net_code ); track = lastTrack->Next(); // this is now the first track of the next net diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index b625a2bb8a..44b797daac 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -176,7 +176,12 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC ) g_CurrentTrackSegment->m_End = pos; if( pad ) + { g_CurrentTrackSegment->m_PadsConnected.push_back( pad ); + // Useful to display track length, if the pad has a die length: + g_CurrentTrackSegment->SetState( BEGIN_ONPAD, ON ); + g_CurrentTrackSegment->start = pad; + } if( g_TwoSegmentTrackBuild ) { diff --git a/pcbnew/hotkeys_board_editor.cpp b/pcbnew/hotkeys_board_editor.cpp index 5cdc0890d9..02d1afd750 100644 --- a/pcbnew/hotkeys_board_editor.cpp +++ b/pcbnew/hotkeys_board_editor.cpp @@ -90,7 +90,6 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit if( aHotkeyCode == 0 ) return; - wxPoint pos; bool itemCurrentlyEdited = (GetCurItem() && GetCurItem()->m_Flags); MODULE* module = NULL; int evt_type = 0; //Used to post a wxCommandEvent on demand @@ -107,6 +106,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit if( HK_Descr == NULL ) HK_Descr = GetDescriptorFromHotkey( aHotkeyCode, board_edit_Hotkey_List ); + if( HK_Descr == NULL ) return; @@ -144,8 +144,6 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED ); cmd.SetEventObject( this ); - - int ll; unsigned int cnt; @@ -580,7 +578,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit // get any module, locked or not locked and toggle its locked status if( !itemCurrentlyEdited ) { - pos = screen->RefPos( true ); + wxPoint pos = screen->RefPos( true ); module = GetBoard()->GetFootprint( pos, screen->m_Active_Layer, true ); } else if( GetCurItem()->Type() == PCB_MODULE_T ) diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index fbc68bf9e8..d80d47f04e 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -484,11 +484,12 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) } msg = AddHotkeyName( _( "Place Via" ), g_Board_Editor_Hokeys_Descr, HK_ADD_VIA ); - PopMenu->Append( ID_POPUP_PCB_PLACE_VIA, msg ); + AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_VIA, msg, KiBitmap( via_xpm ) ); msg = AddHotkeyName( _( "Switch Track Posture" ), g_Board_Editor_Hokeys_Descr, HK_SWITCH_TRACK_POSTURE ); - PopMenu->Append( ID_POPUP_PCB_SWITCH_TRACK_POSTURE, msg ); + AddMenuItem( PopMenu, ID_POPUP_PCB_SWITCH_TRACK_POSTURE, msg, + KiBitmap( change_entry_orient_xpm ) ); // See if we can place a Micro Via (4 or more layers, and start from an external layer): if( IsMicroViaAcceptable() ) diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index 0a5391f687..297ebc950f 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -239,7 +239,7 @@ void PCB_BASE_FRAME::Build_Board_Ratsnest() net->m_RatsnestStartIdx = m_Pcb->GetRatsnestsCount(); - min_spanning_tree.MSP_Init( &net->m_ListPad ); + min_spanning_tree.MSP_Init( &net->m_PadInNetList ); min_spanning_tree.BuildTree(); min_spanning_tree.AddTreeToRatsnest( m_Pcb->m_FullRatsnest ); net->m_RatsnestEndIdx = m_Pcb->GetRatsnestsCount(); @@ -344,11 +344,11 @@ static int tst_links_between_blocks( NETINFO_ITEM* aNetinfo, EXCHG( min_id, subratsnest_id ); // Merge the 2 blocks in one sub ratsnest: - for( unsigned ii = 0; ii < aNetinfo->m_ListPad.size(); ii++ ) + for( unsigned ii = 0; ii < aNetinfo->m_PadInNetList.size(); ii++ ) { - if( aNetinfo->m_ListPad[ii]->GetSubRatsnest() == subratsnest_id ) + if( aNetinfo->m_PadInNetList[ii]->GetSubRatsnest() == subratsnest_id ) { - aNetinfo->m_ListPad[ii]->SetSubRatsnest( min_id ); + aNetinfo->m_PadInNetList[ii]->SetSubRatsnest( min_id ); } } @@ -457,9 +457,9 @@ void PCB_BASE_FRAME::TestForActiveLinksInRatsnest( int aNetCode ) // Create subratsnests id from subnets created by existing tracks: int subratsnest = 0; - for( unsigned ip = 0; ip < net->m_ListPad.size(); ip++ ) + for( unsigned ip = 0; ip < net->m_PadInNetList.size(); ip++ ) { - pad = net->m_ListPad[ip]; + pad = net->m_PadInNetList[ip]; int subnet = pad->GetSubNet(); pad->SetSubRatsnest( subnet ); subratsnest = MAX( subratsnest, subnet ); @@ -567,9 +567,9 @@ void PCB_BASE_FRAME::build_ratsnest_module( MODULE* aModule ) return; } - for( unsigned jj = 0; jj < net->m_ListPad.size(); jj++ ) + for( unsigned jj = 0; jj < net->m_PadInNetList.size(); jj++ ) { - pad_externe = net->m_ListPad[jj]; + pad_externe = net->m_PadInNetList[jj]; if( pad_externe->GetParent() == aModule ) continue; @@ -819,9 +819,9 @@ void PCB_BASE_FRAME::BuildAirWiresTargetsList( BOARD_CONNECTED_ITEM* aItemRef, // Create a list of pads candidates ( pads not already connected to the // current track ): - for( unsigned ii = 0; ii < net->m_ListPad.size(); ii++ ) + for( unsigned ii = 0; ii < net->m_PadInNetList.size(); ii++ ) { - D_PAD* pad = net->m_ListPad[ii]; + D_PAD* pad = net->m_PadInNetList[ii]; if( pad == aItemRef ) continue;