Commit f06690c8 authored by Maciej Suminski's avatar Maciej Suminski

Merged lp:~john-j-beard/kicad/moveexact.

parents 63d3c835 d7f96d37
...@@ -151,6 +151,12 @@ set( BMAPS_MID ...@@ -151,6 +151,12 @@ set( BMAPS_MID
annotate_down_right annotate_down_right
annotate_right_down annotate_right_down
annotate annotate
array_line
array_module
array_pad
array_text
array_target
array_zone
auto_associe auto_associe
auto_delete_track auto_delete_track
auto_track_width auto_track_width
...@@ -217,6 +223,12 @@ set( BMAPS_MID ...@@ -217,6 +223,12 @@ set( BMAPS_MID
drag_track_segment drag_track_segment
drc_off drc_off
drc drc
duplicate_line
duplicate_module
duplicate_pad
duplicate_target
duplicate_text
duplicate_zone
edges_sketch edges_sketch
edit_comp_footprint edit_comp_footprint
edit_component edit_component
...@@ -363,9 +375,11 @@ set( BMAPS_MID ...@@ -363,9 +375,11 @@ set( BMAPS_MID
move_polygon move_polygon
move_rectangle move_rectangle
move_sheet move_sheet
move_target
move_text move_text
move_track_segment move_track_segment
move_track move_track
move_zone
move move
mw_add_gap mw_add_gap
mw_add_line mw_add_line
......
/* 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, 0x00, 0x79, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x94, 0x41, 0x0a, 0x00,
0x31, 0x08, 0x03, 0xfd, 0x4a, 0xff, 0x94, 0xff, 0xf6, 0xdc, 0xfd, 0x94, 0x7b, 0xda, 0x43, 0x65,
0x41, 0xad, 0x90, 0x82, 0x07, 0xc1, 0x8b, 0x0e, 0xc4, 0x18, 0x51, 0x55, 0x61, 0x94, 0xd0, 0x41,
0x00, 0xd4, 0x2b, 0x3b, 0x0c, 0x60, 0x7a, 0xb5, 0x81, 0xbe, 0x45, 0xb2, 0x86, 0x7a, 0xbd, 0x85,
0xc8, 0x33, 0xa6, 0xd7, 0xdf, 0x03, 0x65, 0xe4, 0x8b, 0xc8, 0xf6, 0x0b, 0x8a, 0x1c, 0xd4, 0x82,
0x82, 0x33, 0x97, 0x40, 0x34, 0xe9, 0x7a, 0xb9, 0x8e, 0xf6, 0xb0, 0x6d, 0xb3, 0x2e, 0x2c, 0x43,
0x25, 0xeb, 0x52, 0x87, 0xad, 0xb8, 0x8e, 0x0b, 0xca, 0x48, 0x71, 0xfa, 0xb0, 0xa9, 0x38, 0xa9,
0x44, 0x10, 0x0f, 0x44, 0x93, 0xae, 0x97, 0xeb, 0x68, 0x0f, 0xdb, 0x2a, 0xeb, 0x5e, 0x8c, 0x95,
0x3c, 0x73, 0x5c, 0xe2, 0x55, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE array_footprint_xpm[1] = {{ png, sizeof( png ), "array_footprint_xpm" }};
//EOF
/* 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, 0x02, 0x51, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xa5, 0x96, 0x4f, 0x6c, 0x4c,
0x51, 0x14, 0xc6, 0x7f, 0xa3, 0xff, 0xa4, 0xd5, 0x4a, 0x34, 0xb5, 0x20, 0x4d, 0xc5, 0x42, 0x5a,
0x74, 0xa9, 0x34, 0x44, 0x42, 0x10, 0x82, 0x48, 0x2c, 0x84, 0x88, 0x58, 0x58, 0xd0, 0x8d, 0xda,
0x48, 0x49, 0xa4, 0xe9, 0x06, 0x8b, 0x62, 0x31, 0xb4, 0xe3, 0xdd, 0x73, 0xdf, 0x8c, 0x69, 0xaa,
0x99, 0x94, 0x11, 0xed, 0x58, 0xb1, 0x60, 0x67, 0x6d, 0x65, 0x6b, 0x63, 0x67, 0x61, 0x23, 0xb1,
0x20, 0xd7, 0xe6, 0x78, 0xf3, 0x5a, 0x33, 0xef, 0xde, 0xc6, 0xe2, 0x25, 0x2f, 0x99, 0xef, 0xe4,
0x77, 0xee, 0x79, 0xe7, 0xfb, 0xee, 0xe0, 0x9c, 0x23, 0xf4, 0x61, 0x8a, 0x75, 0x6b, 0xd2, 0x43,
0x2e, 0x79, 0x0f, 0x2e, 0x12, 0xc6, 0x10, 0xde, 0x11, 0xd3, 0x1d, 0xa4, 0x37, 0x5c, 0xc4, 0x30,
0xc1, 0x7b, 0x5a, 0x83, 0x41, 0x08, 0x67, 0x11, 0x7e, 0x23, 0x38, 0x84, 0x9b, 0x01, 0x90, 0x13,
0x08, 0x35, 0x84, 0x1a, 0x31, 0x87, 0x82, 0x40, 0x58, 0x0e, 0x22, 0xfc, 0x54, 0xc8, 0x0b, 0xdf,
0xf8, 0x88, 0x19, 0x45, 0x58, 0x56, 0xd0, 0x58, 0xd0, 0xe8, 0x88, 0x18, 0x46, 0xf8, 0xae, 0x90,
0x0f, 0xe4, 0xe9, 0xf0, 0x9c, 0x64, 0x17, 0x42, 0x15, 0xa1, 0x86, 0xe5, 0x36, 0x2e, 0xe0, 0x1b,
0x61, 0x19, 0x40, 0xf8, 0xaa, 0x90, 0x4f, 0x44, 0x6c, 0xf4, 0x9c, 0x7c, 0x00, 0xa1, 0xa2, 0x27,
0xb9, 0x4f, 0x44, 0xdb, 0x8a, 0xdf, 0x1b, 0x16, 0x95, 0xe9, 0x45, 0xf8, 0xac, 0x90, 0x2f, 0xc4,
0x6c, 0xc9, 0x84, 0x14, 0xe9, 0x43, 0x78, 0xa6, 0x90, 0x27, 0xcc, 0xd1, 0xf5, 0x8f, 0xa6, 0xc1,
0xb8, 0x3a, 0x11, 0x3e, 0x2a, 0xe4, 0x1b, 0x11, 0x83, 0x9e, 0x6f, 0xd2, 0x8d, 0x50, 0x50, 0x48,
0x91, 0x32, 0xbd, 0x0d, 0x75, 0xab, 0x7c, 0xd2, 0x8a, 0xe1, 0x8d, 0x42, 0x7e, 0x10, 0x33, 0x9a,
0x09, 0xc9, 0xd3, 0x81, 0x61, 0x5a, 0x21, 0x0b, 0xcc, 0xd0, 0xdf, 0x54, 0xbb, 0x6a, 0xce, 0x25,
0x85, 0xfc, 0xc2, 0x70, 0x2a, 0x13, 0xb2, 0x48, 0x0b, 0x86, 0x49, 0x85, 0x54, 0x11, 0x86, 0x32,
0xf5, 0xa9, 0x8d, 0xb9, 0xa7, 0x10, 0x87, 0x70, 0x25, 0xc0, 0x5b, 0xd7, 0x75, 0xbb, 0x96, 0x88,
0xd8, 0xeb, 0xd5, 0x6b, 0xd1, 0x85, 0x04, 0x62, 0xb8, 0x13, 0x00, 0x39, 0x93, 0x32, 0xe4, 0xb1,
0x20, 0xd3, 0x3b, 0xe7, 0x60, 0x86, 0x0d, 0x08, 0x6f, 0x11, 0x66, 0x9b, 0x0a, 0x0b, 0x6c, 0x45,
0x38, 0xec, 0x9c, 0x83, 0x79, 0x7a, 0x30, 0x3c, 0xc2, 0x72, 0x3e, 0xc3, 0x53, 0x3b, 0xd2, 0x27,
0x4d, 0xcf, 0xbc, 0xbd, 0x99, 0xeb, 0xb1, 0x6c, 0xc2, 0x10, 0xeb, 0xa8, 0x8e, 0xeb, 0xe2, 0xb4,
0x7b, 0x9a, 0x7a, 0x8e, 0x65, 0x09, 0x61, 0x5f, 0x58, 0x04, 0x4d, 0xd3, 0x85, 0xe1, 0xb1, 0x8e,
0xaa, 0x4c, 0x91, 0x3e, 0x8f, 0x71, 0xeb, 0x4d, 0x19, 0x9e, 0xfe, 0x0d, 0x61, 0x5f, 0x04, 0xb5,
0xe9, 0x92, 0xd4, 0x10, 0x2a, 0x14, 0xd8, 0xe6, 0xd1, 0x77, 0x22, 0xe4, 0x93, 0xa6, 0x0a, 0x6c,
0xf6, 0x47, 0x90, 0x23, 0x87, 0x70, 0x4b, 0x8b, 0x5e, 0x61, 0xd9, 0xed, 0x6d, 0x4a, 0xb8, 0x9b,
0x34, 0x55, 0x5a, 0xd9, 0x54, 0x56, 0x40, 0x5e, 0xd3, 0xa2, 0x65, 0x2c, 0xfb, 0xb3, 0x37, 0x8a,
0x1c, 0x96, 0x89, 0xa4, 0xa9, 0x88, 0x61, 0x6f, 0x04, 0x29, 0xe4, 0x5c, 0xb2, 0xbe, 0x96, 0x93,
0x01, 0x57, 0xc9, 0xd5, 0xa4, 0xa9, 0x88, 0x03, 0xde, 0x64, 0x50, 0x8f, 0x1c, 0x4d, 0x41, 0x2e,
0x05, 0x5c, 0x72, 0xe9, 0xa6, 0x4e, 0x87, 0x46, 0xd0, 0x88, 0xae, 0x64, 0x0d, 0xc3, 0x78, 0x00,
0xe4, 0x48, 0x0a, 0x72, 0x39, 0x2c, 0x82, 0x22, 0x06, 0x53, 0x97, 0xd6, 0x24, 0x8b, 0xb4, 0x78,
0x20, 0x7b, 0x10, 0x5e, 0x2b, 0xe8, 0x46, 0x68, 0x32, 0xf4, 0x23, 0x2c, 0x68, 0xd1, 0x03, 0xef,
0x4d, 0x1a, 0x31, 0x88, 0xe5, 0xa5, 0xea, 0xa7, 0x7c, 0x4d, 0xd5, 0x41, 0x45, 0x76, 0x22, 0x54,
0xd2, 0x06, 0xf3, 0x7c, 0xfc, 0x11, 0x84, 0x2a, 0x96, 0x87, 0x94, 0x58, 0x1f, 0x9c, 0x75, 0xce,
0x39, 0x98, 0x65, 0x3b, 0x73, 0x75, 0x83, 0x05, 0x04, 0xeb, 0x10, 0xf3, 0xf4, 0x04, 0xeb, 0xd7,
0xf2, 0x87, 0xf0, 0x7f, 0x9e, 0x3f, 0x6d, 0x57, 0x45, 0xa7, 0xea, 0xac, 0xbd, 0xc8, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE array_line_xpm[1] = {{ png, sizeof( png ), "array_line_xpm" }};
//EOF
/* 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, 0x00, 0x79, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x94, 0x41, 0x0a, 0x00,
0x31, 0x08, 0x03, 0xfd, 0x4a, 0xff, 0x94, 0xff, 0xf6, 0xdc, 0xfd, 0x94, 0x7b, 0xda, 0x43, 0x65,
0x41, 0xad, 0x90, 0x82, 0x07, 0xc1, 0x8b, 0x0e, 0xc4, 0x18, 0x51, 0x55, 0x61, 0x94, 0xd0, 0x41,
0x00, 0xd4, 0x2b, 0x3b, 0x0c, 0x60, 0x7a, 0xb5, 0x81, 0xbe, 0x45, 0xb2, 0x86, 0x7a, 0xbd, 0x85,
0xc8, 0x33, 0xa6, 0xd7, 0xdf, 0x03, 0x65, 0xe4, 0x8b, 0xc8, 0xf6, 0x0b, 0x8a, 0x1c, 0xd4, 0x82,
0x82, 0x33, 0x97, 0x40, 0x34, 0xe9, 0x7a, 0xb9, 0x8e, 0xf6, 0xb0, 0x6d, 0xb3, 0x2e, 0x2c, 0x43,
0x25, 0xeb, 0x52, 0x87, 0xad, 0xb8, 0x8e, 0x0b, 0xca, 0x48, 0x71, 0xfa, 0xb0, 0xa9, 0x38, 0xa9,
0x44, 0x10, 0x0f, 0x44, 0x93, 0xae, 0x97, 0xeb, 0x68, 0x0f, 0xdb, 0x2a, 0xeb, 0x5e, 0x8c, 0x95,
0x3c, 0x73, 0x5c, 0xe2, 0x55, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE array_module_xpm[1] = {{ png, sizeof( png ), "array_module_xpm" }};
//EOF
/* 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, 0x03, 0xbd, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0xdd, 0x4b, 0x54,
0x41, 0x18, 0xc6, 0x67, 0x3f, 0xdc, 0x2b, 0x53, 0x28, 0x93, 0xa0, 0x08, 0xef, 0x14, 0x8a, 0x4c,
0x44, 0x2c, 0x8c, 0x2d, 0xcb, 0x4a, 0xc1, 0x7f, 0xa0, 0x8b, 0xfe, 0x82, 0xa0, 0x8b, 0x8c, 0x22,
0xf2, 0x63, 0x3d, 0x47, 0x57, 0x4b, 0xca, 0x42, 0xd4, 0xf5, 0xb3, 0x14, 0xf3, 0x83, 0x5c, 0x95,
0x45, 0x02, 0x15, 0x0c, 0xfb, 0x07, 0x8a, 0x84, 0x10, 0x25, 0x23, 0x24, 0x24, 0xa2, 0x8b, 0x6e,
0x82, 0xbc, 0xc8, 0xde, 0xdf, 0x38, 0x47, 0x8f, 0xeb, 0x6e, 0x7a, 0x61, 0x5d, 0x3c, 0x9c, 0x61,
0xce, 0xcc, 0x3c, 0xf3, 0x3e, 0xef, 0x33, 0xef, 0x8c, 0x5a, 0x5f, 0x5f, 0x57, 0xff, 0x03, 0x89,
0x3b, 0x43, 0xea, 0xa0, 0xa0, 0x54, 0x50, 0xae, 0xc2, 0xea, 0xf0, 0xae, 0x8b, 0x34, 0xaa, 0x74,
0x65, 0xa9, 0x02, 0x55, 0xa5, 0xf2, 0xd5, 0x1d, 0x75, 0x60, 0x57, 0x22, 0x59, 0x38, 0x43, 0x30,
0xa1, 0x6a, 0xd5, 0x6f, 0xf9, 0x7e, 0xd7, 0xd8, 0x68, 0xcf, 0xaa, 0x3a, 0x75, 0x74, 0xc7, 0xe4,
0xb0, 0x3a, 0x14, 0xa8, 0x0b, 0xd4, 0xcb, 0x98, 0x58, 0xea, 0x83, 0xd4, 0xc1, 0xd4, 0x86, 0xd4,
0x41, 0xda, 0x7e, 0xcb, 0x5f, 0x29, 0x73, 0xd2, 0x12, 0x12, 0x19, 0x92, 0xaf, 0x82, 0xcf, 0x82,
0x69, 0x41, 0x4c, 0xa3, 0x46, 0x4d, 0xc9, 0xf7, 0x93, 0xe0, 0x87, 0x20, 0xcb, 0x35, 0x3e, 0xd3,
0x67, 0xfb, 0x86, 0x73, 0x9f, 0x9d, 0xea, 0x6e, 0x5d, 0x7e, 0x64, 0x8d, 0x7c, 0xeb, 0xab, 0x02,
0x4f, 0x16, 0x1f, 0xda, 0x39, 0x1d, 0xd9, 0xbd, 0xf2, 0x6f, 0xc0, 0x4d, 0xe6, 0x26, 0x9a, 0x30,
0x24, 0x31, 0x43, 0xf4, 0x41, 0xb0, 0x20, 0x98, 0x31, 0x7d, 0x1f, 0x65, 0xb7, 0x6f, 0x9c, 0xf1,
0x01, 0x3b, 0xd0, 0x58, 0x34, 0x50, 0x18, 0x61, 0xf1, 0xc7, 0x8b, 0x61, 0xfb, 0xd2, 0xc8, 0x85,
0x48, 0x59, 0xf4, 0x4a, 0x5b, 0xcb, 0x72, 0x93, 0x26, 0x85, 0x8c, 0xc8, 0xb6, 0x11, 0xe9, 0x9c,
0x6c, 0x48, 0x34, 0x6d, 0xf0, 0xcb, 0x7c, 0xa3, 0x82, 0x35, 0xc1, 0x6b, 0xc1, 0x2b, 0xdd, 0xb6,
0x55, 0x36, 0x32, 0xfa, 0x2c, 0xdf, 0x78, 0xdf, 0x97, 0x8e, 0x1a, 0x7b, 0xbe, 0x3a, 0x4c, 0xdb,
0x6f, 0xfb, 0xab, 0x64, 0xe1, 0x7a, 0xc1, 0x18, 0x64, 0x44, 0x86, 0x8c, 0x4e, 0xce, 0x1c, 0xa2,
0x52, 0x93, 0x93, 0x98, 0x89, 0x64, 0xca, 0x15, 0x29, 0x12, 0x2c, 0x99, 0x7f, 0xab, 0x32, 0xf9,
0x9a, 0x10, 0x05, 0x33, 0x9b, 0x33, 0xfa, 0xd9, 0xf9, 0x99, 0xfe, 0x82, 0x4e, 0xaf, 0xe5, 0xbd,
0xe5, 0x8c, 0x87, 0x8c, 0xc8, 0xf8, 0xa7, 0x73, 0x26, 0x06, 0x71, 0x13, 0x95, 0xbb, 0x88, 0x90,
0x2b, 0xea, 0x22, 0x8a, 0x68, 0xd9, 0xb6, 0x88, 0xae, 0x0b, 0x8a, 0x8f, 0x34, 0x67, 0x6a, 0xa2,
0xfc, 0xe7, 0xa7, 0xbb, 0xbc, 0xb6, 0xf7, 0xc6, 0x26, 0x91, 0x44, 0x86, 0x8c, 0x9a, 0x48, 0x0c,
0x82, 0x1b, 0xb7, 0x88, 0xc4, 0xc2, 0x5a, 0xba, 0x8d, 0xc4, 0xcf, 0x18, 0xb9, 0x06, 0x0c, 0x09,
0x32, 0xce, 0x09, 0x26, 0x75, 0xbf, 0xa5, 0x4e, 0xc8, 0xf7, 0xb8, 0xcf, 0xf2, 0x8c, 0x0f, 0xac,
0x76, 0x57, 0x57, 0xbd, 0xbb, 0xdb, 0x40, 0x1b, 0x32, 0x41, 0x05, 0x32, 0x92, 0x33, 0x0c, 0xa2,
0xa5, 0x13, 0xeb, 0xc7, 0x9b, 0x61, 0xd6, 0xb8, 0x2b, 0x66, 0x72, 0xb2, 0x64, 0x22, 0x99, 0xd3,
0x7d, 0xb5, 0x6a, 0x51, 0xbe, 0x6f, 0xd5, 0xba, 0xf2, 0x80, 0x94, 0xba, 0x94, 0xa7, 0xc5, 0xc3,
0x41, 0xbd, 0x73, 0xc8, 0x88, 0x0c, 0x19, 0xc9, 0x19, 0x7d, 0xb8, 0x11, 0xeb, 0xef, 0x74, 0x9d,
0x24, 0xd8, 0x58, 0xf8, 0xa3, 0x49, 0x7c, 0xcc, 0x60, 0x52, 0x93, 0xd4, 0xaa, 0x9f, 0xd2, 0xce,
0x71, 0x6d, 0xec, 0x98, 0xa7, 0xd6, 0x33, 0x0a, 0x19, 0x91, 0x39, 0xf6, 0xc6, 0x20, 0xb8, 0x11,
0xeb, 0x73, 0xce, 0x92, 0x1d, 0xd8, 0x2c, 0x2c, 0x6c, 0xa4, 0x5b, 0x35, 0x58, 0xd3, 0x91, 0xb8,
0x48, 0xdc, 0x64, 0x44, 0x86, 0x74, 0xe4, 0x0c, 0x83, 0x20, 0x1d, 0xd6, 0xe7, 0x9c, 0xed, 0x5e,
0x82, 0xb0, 0x30, 0xee, 0x22, 0xf1, 0xe4, 0x44, 0xa4, 0x4a, 0x5e, 0xc3, 0x44, 0x4a, 0xc9, 0x19,
0x06, 0xc1, 0x8d, 0x89, 0x2a, 0x48, 0x72, 0x22, 0x64, 0x64, 0x12, 0x93, 0x59, 0x64, 0xbf, 0x89,
0x08, 0x97, 0xb0, 0x3d, 0x22, 0x05, 0x32, 0x20, 0x07, 0xb2, 0x20, 0x0f, 0x32, 0xed, 0x45, 0x3a,
0xe6, 0xfe, 0x55, 0x3a, 0x12, 0x27, 0xfa, 0x8e, 0x14, 0xf4, 0xe5, 0x75, 0xf5, 0xac, 0xb4, 0x86,
0x9c, 0xe4, 0xf6, 0xaf, 0x76, 0x56, 0x07, 0x87, 0xce, 0x76, 0xc8, 0x02, 0x51, 0x37, 0x99, 0x36,
0x83, 0xe5, 0x19, 0x0d, 0x0e, 0x17, 0x45, 0x18, 0xe3, 0x8c, 0x67, 0x2e, 0x6b, 0xb0, 0x56, 0x42,
0x33, 0x60, 0xc5, 0xdc, 0xde, 0x93, 0x3d, 0x0c, 0xb6, 0xe7, 0x2b, 0xc3, 0x85, 0x62, 0x55, 0x2c,
0x8b, 0x75, 0xe9, 0x83, 0x4c, 0x47, 0xe6, 0xb2, 0xf7, 0xc5, 0x91, 0x60, 0x7b, 0x52, 0x7b, 0xcb,
0x5a, 0x3b, 0xec, 0xad, 0xef, 0x13, 0x39, 0x5c, 0x1c, 0x32, 0x0e, 0x9b, 0x39, 0x80, 0x15, 0x1c,
0x42, 0xda, 0x2c, 0xc4, 0xae, 0x69, 0xeb, 0x7c, 0xc4, 0x1d, 0x58, 0x8f, 0x73, 0x60, 0x2d, 0xef,
0x6d, 0xda, 0x49, 0x0f, 0x2c, 0x65, 0x82, 0x72, 0xc1, 0x4e, 0x28, 0x1f, 0x52, 0x46, 0xee, 0x39,
0x3b, 0x61, 0x01, 0x76, 0xcb, 0x3f, 0xf2, 0xa0, 0x93, 0x1e, 0x5f, 0x82, 0x2c, 0xef, 0x4d, 0x57,
0x09, 0x0a, 0x25, 0x2f, 0x41, 0x52, 0xf8, 0x28, 0x80, 0xfc, 0x2c, 0x8b, 0x96, 0xb4, 0x49, 0x32,
0x2d, 0x17, 0x51, 0x05, 0x32, 0xf2, 0x8f, 0x64, 0x1b, 0x67, 0x6d, 0x16, 0xd5, 0xc2, 0xfe, 0xfc,
0xf8, 0xa2, 0x6a, 0x5f, 0x1d, 0x2d, 0x69, 0x4f, 0x5c, 0x54, 0xa5, 0x94, 0x13, 0x26, 0xa5, 0x1d,
0xe8, 0x43, 0x67, 0x05, 0x6c, 0x22, 0x43, 0x22, 0x72, 0x46, 0x92, 0x91, 0xc5, 0x58, 0x7f, 0xf3,
0x9a, 0x08, 0xbd, 0xbf, 0xaf, 0x6b, 0x1d, 0x63, 0xd9, 0xa0, 0xdf, 0xf2, 0x8d, 0x39, 0xeb, 0xec,
0xb8, 0x26, 0xcc, 0x4e, 0x2a, 0xb9, 0xac, 0x9c, 0x5b, 0x92, 0xc8, 0x90, 0x00, 0xbd, 0xe9, 0xc3,
0x49, 0xd8, 0x36, 0xd1, 0xc5, 0xd7, 0xb4, 0x50, 0x5f, 0x77, 0x7e, 0xe8, 0x5c, 0xc7, 0xe5, 0x97,
0xc5, 0x11, 0xe6, 0x26, 0xbd, 0xf8, 0x8c, 0x5d, 0xd3, 0xb8, 0x7e, 0x19, 0xe0, 0x0c, 0x06, 0x24,
0x15, 0x07, 0x69, 0xbb, 0xba, 0xce, 0x86, 0x73, 0x95, 0xe7, 0x49, 0x8e, 0xba, 0x56, 0x5a, 0x42,
0x7b, 0xbe, 0xca, 0x1d, 0x32, 0xfd, 0xb0, 0xe0, 0xb1, 0x21, 0xfa, 0xea, 0x64, 0x4a, 0x5b, 0x3f,
0x40, 0x5c, 0x67, 0x22, 0xfe, 0x71, 0x22, 0xc5, 0x35, 0x96, 0xde, 0x98, 0xf6, 0x62, 0x4f, 0x8f,
0x93, 0x6d, 0x9d, 0xe4, 0x8c, 0xa7, 0x13, 0x4f, 0x28, 0x63, 0xcf, 0x7d, 0x7d, 0x6e, 0xfd, 0x4b,
0xfc, 0x01, 0x33, 0x8a, 0x28, 0x8c, 0xb5, 0xeb, 0xec, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE array_pad_xpm[1] = {{ png, sizeof( png ), "array_pad_xpm" }};
//EOF
/* 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, 0x02, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x4f, 0x4b, 0x1b,
0x41, 0x18, 0x87, 0x67, 0xc1, 0x59, 0xdd, 0x4d, 0xb6, 0x69, 0x24, 0xb6, 0xb6, 0x62, 0xbd, 0x0a,
0x31, 0x15, 0x94, 0x5d, 0x12, 0x6a, 0xbd, 0xd9, 0xcf, 0xe1, 0xb9, 0x58, 0xe8, 0x27, 0x29, 0x3d,
0xf5, 0xd8, 0x4b, 0xa1, 0xe0, 0x45, 0xb1, 0xc1, 0x4b, 0xa1, 0x9d, 0x0f, 0xe0, 0xd5, 0x8b, 0x8a,
0x87, 0xf6, 0xa4, 0xa0, 0x87, 0xf6, 0x94, 0x16, 0xe9, 0x74, 0x9e, 0x25, 0x23, 0x13, 0x49, 0xc2,
0xfe, 0x09, 0x2e, 0xbc, 0x2c, 0x3b, 0xb3, 0xef, 0x3e, 0xf3, 0xbe, 0xbf, 0x77, 0x7f, 0x42, 0x6b,
0x2d, 0x86, 0x85, 0xb9, 0xf4, 0xa8, 0xbd, 0x31, 0x39, 0x6a, 0xe4, 0xde, 0x9d, 0x17, 0xa3, 0xa8,
0x22, 0xde, 0x35, 0x1e, 0xca, 0x73, 0x40, 0x73, 0xb3, 0xf2, 0x84, 0x67, 0xd6, 0xc7, 0x7c, 0x3c,
0xac, 0x86, 0xe2, 0x75, 0xa3, 0x26, 0x3f, 0x03, 0x6a, 0xd4, 0xe5, 0x27, 0x9e, 0x59, 0x1f, 0x0a,
0x32, 0x57, 0x1c, 0xcc, 0x78, 0x57, 0xeb, 0xab, 0xf3, 0x37, 0x9d, 0x76, 0xc2, 0x82, 0x3e, 0xea,
0x6e, 0xea, 0x37, 0xdb, 0x8b, 0xbd, 0x30, 0xf0, 0x2e, 0xd9, 0x1f, 0x02, 0x59, 0x0e, 0xa6, 0xbd,
0x83, 0xb5, 0xe7, 0xf3, 0xdf, 0x3a, 0xed, 0x58, 0x01, 0x3a, 0xea, 0xbe, 0x54, 0x3b, 0xdb, 0x8b,
0x5f, 0x4d, 0xce, 0x3e, 0xfb, 0x03, 0x20, 0x4e, 0x3c, 0xe3, 0x7b, 0xd7, 0xed, 0x64, 0x45, 0xb7,
0x5a, 0x2d, 0xbd, 0xb1, 0xf1, 0x22, 0x05, 0xf5, 0xce, 0x5e, 0xe9, 0x3f, 0x27, 0x1d, 0xdd, 0xfd,
0xb8, 0xae, 0xfb, 0xb0, 0xc8, 0xad, 0x64, 0xda, 0xf7, 0xbe, 0xb4, 0xe3, 0x15, 0x65, 0x72, 0x94,
0xc9, 0x49, 0x41, 0xbd, 0xb3, 0x2d, 0xf5, 0xf7, 0xb4, 0xa3, 0x4c, 0x8e, 0xea, 0xc3, 0xc2, 0x5b,
0x10, 0xed, 0x59, 0x7a, 0xf6, 0xf8, 0x1f, 0x10, 0x00, 0x2e, 0xe8, 0xe6, 0xb8, 0x96, 0xc2, 0xa8,
0x8c, 0xf7, 0x2c, 0x88, 0xf6, 0x98, 0x9c, 0xef, 0x40, 0x00, 0xb8, 0x20, 0x93, 0x93, 0xc2, 0xa8,
0x8c, 0xf7, 0x6e, 0x41, 0xf5, 0x9a, 0xfc, 0x91, 0x24, 0x49, 0x0a, 0xb0, 0x61, 0x41, 0x36, 0x68,
0x23, 0x9a, 0x59, 0x90, 0xc9, 0xd9, 0x8d, 0xe3, 0x38, 0x05, 0xd8, 0xb0, 0x20, 0x1b, 0xb4, 0x11,
0xcd, 0xfa, 0x1d, 0x10, 0xba, 0x40, 0xa8, 0xdc, 0x01, 0x8d, 0x93, 0x72, 0x62, 0xb7, 0x02, 0xdb,
0x42, 0x1b, 0x54, 0x1c, 0x55, 0xa6, 0x2e, 0x6c, 0x45, 0x9c, 0x94, 0x13, 0xbb, 0x15, 0xd8, 0x16,
0xda, 0xa0, 0xe2, 0x28, 0x9c, 0xda, 0x1b, 0xd0, 0x08, 0x0d, 0xd0, 0x02, 0x4d, 0x5c, 0x10, 0x77,
0xb4, 0x5b, 0x78, 0xfa, 0x48, 0x87, 0xa1, 0xf8, 0xe0, 0x6a, 0x84, 0x06, 0x68, 0x81, 0x26, 0x2e,
0x88, 0x3b, 0xda, 0x2d, 0x3c, 0x99, 0x53, 0x41, 0x20, 0xde, 0x0e, 0x4c, 0x1d, 0x53, 0xc5, 0x74,
0x01, 0x73, 0x41, 0x40, 0x9a, 0xcd, 0xa6, 0x96, 0xd2, 0xfb, 0x7d, 0x77, 0xea, 0x98, 0x2a, 0xa6,
0x0b, 0x98, 0x0b, 0x02, 0x62, 0x72, 0x94, 0xef, 0x7b, 0x87, 0x03, 0x53, 0x67, 0xff, 0x23, 0x60,
0x54, 0x46, 0x1b, 0x01, 0xd1, 0x2e, 0x2a, 0xf1, 0xa5, 0xf7, 0x6b, 0xd4, 0x7f, 0x04, 0x8c, 0xca,
0x68, 0x23, 0x20, 0xda, 0x45, 0x25, 0x7d, 0xc8, 0xf2, 0x58, 0x67, 0x40, 0x33, 0x40, 0xf5, 0x07,
0xf2, 0x67, 0xb5, 0x22, 0xde, 0x67, 0x72, 0x06, 0xa3, 0x19, 0x20, 0x93, 0xb3, 0x5b, 0x0d, 0xc4,
0xce, 0x48, 0x67, 0xb8, 0x57, 0xaf, 0xcb, 0x9a, 0x34, 0x09, 0x53, 0xcd, 0x64, 0x90, 0x65, 0x4d,
0x35, 0xb3, 0x41, 0x96, 0x31, 0xd5, 0x5c, 0x06, 0x59, 0xd8, 0x54, 0xf3, 0x1a, 0x64, 0x19, 0x53,
0xcd, 0x65, 0x90, 0x45, 0x4d, 0x55, 0xdd, 0x4b, 0x14, 0x31, 0xc8, 0xc2, 0xa6, 0x9a, 0xd7, 0x20,
0xcb, 0x98, 0x6a, 0x2e, 0x83, 0x2c, 0x6b, 0xaa, 0x99, 0x0d, 0x72, 0x12, 0xa6, 0x9a, 0xc9, 0x20,
0x27, 0x6d, 0xaa, 0x13, 0xf5, 0xba, 0xff, 0x0c, 0x96, 0xd3, 0x5f, 0x78, 0x1d, 0xd5, 0x5b, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE array_target_xpm[1] = {{ png, sizeof( png ), "array_target_xpm" }};
//EOF
/* 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, 0x01, 0x59, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xb1, 0x6a, 0x02,
0x41, 0x10, 0x86, 0x07, 0x7c, 0x06, 0xad, 0x0c, 0xd8, 0x48, 0xb0, 0x31, 0x36, 0xd6, 0x22, 0x58,
0x5a, 0xa4, 0xb8, 0x4a, 0xc8, 0x1b, 0x58, 0xa5, 0xca, 0x95, 0xa9, 0x7c, 0x82, 0x20, 0xec, 0xed,
0xa9, 0x98, 0xce, 0xca, 0x60, 0x93, 0xd6, 0x77, 0xb1, 0xf0, 0x1d, 0x0c, 0x5c, 0x66, 0x6f, 0xe6,
0xbc, 0xec, 0xe6, 0x76, 0xdd, 0x1c, 0x41, 0x10, 0xee, 0xe0, 0x67, 0x6f, 0x66, 0xff, 0xe1, 0x63,
0xef, 0x98, 0x61, 0x21, 0x49, 0x12, 0xb8, 0x86, 0xf0, 0x91, 0x53, 0x80, 0xe8, 0xe8, 0x2f, 0xe5,
0x17, 0x63, 0x7c, 0x7f, 0xf7, 0x97, 0xf2, 0x43, 0xf4, 0x82, 0x42, 0x64, 0x74, 0x40, 0x7d, 0xa2,
0xf6, 0x1c, 0x67, 0xda, 0x73, 0xfe, 0xc0, 0xb1, 0xf2, 0x07, 0xa8, 0x1d, 0x6a, 0x85, 0xe0, 0x57,
0x5c, 0x67, 0x1c, 0x67, 0x9a, 0x71, 0x7e, 0xc5, 0x71, 0x90, 0x81, 0xbe, 0x90, 0xda, 0xa7, 0x23,
0xce, 0x5b, 0x3a, 0x68, 0xde, 0xa2, 0xbc, 0xe8, 0x93, 0x2f, 0x03, 0xc9, 0x0f, 0x80, 0x65, 0x9b,
0xf6, 0xd6, 0x0d, 0x1d, 0xb4, 0x6e, 0x50, 0x7e, 0xd9, 0x26, 0x1f, 0x81, 0x3a, 0x00, 0xf1, 0x30,
0xff, 0x96, 0xc5, 0x20, 0xda, 0x8b, 0x87, 0xe4, 0x7f, 0xbb, 0xc3, 0xb5, 0x9b, 0xe7, 0x8b, 0x41,
0xb4, 0x17, 0x75, 0x53, 0xff, 0xef, 0x9f, 0x66, 0x07, 0xd9, 0x7f, 0xb4, 0x1d, 0x74, 0xf6, 0x54,
0xa0, 0x5b, 0x04, 0x89, 0x91, 0x0e, 0x12, 0xa3, 0xcb, 0x20, 0xd1, 0xd3, 0x41, 0xa2, 0xe7, 0x04,
0xa1, 0xe1, 0x19, 0x8d, 0x27, 0xa3, 0x61, 0x4f, 0x2a, 0x6f, 0x87, 0xc8, 0x47, 0xf4, 0x6c, 0x8d,
0x86, 0xdd, 0xaa, 0xbc, 0x03, 0x24, 0x27, 0xdc, 0x90, 0x86, 0xe4, 0xc4, 0x71, 0x9a, 0x01, 0x4f,
0x0a, 0x43, 0x62, 0x60, 0xcc, 0xba, 0xf8, 0xbe, 0xd8, 0x68, 0x93, 0xf2, 0x97, 0xa9, 0xc9, 0xe7,
0x96, 0xaf, 0x82, 0x72, 0x35, 0xe7, 0x22, 0xf9, 0x84, 0x6b, 0x13, 0xe9, 0x0f, 0xba, 0x29, 0x8d,
0x9b, 0xbc, 0x6f, 0x80, 0xfe, 0x52, 0x93, 0xce, 0x2f, 0x19, 0x02, 0x6c, 0x6a, 0xee, 0x01, 0xb9,
0xa9, 0x91, 0x4f, 0xf9, 0x4b, 0xd4, 0x94, 0xe9, 0x89, 0x7f, 0xea, 0xa3, 0x0a, 0x54, 0x81, 0xd2,
0x82, 0x45, 0x9d, 0x2f, 0x15, 0x3f, 0x8a, 0x54, 0xbc, 0xa8, 0xdb, 0x21, 0x7e, 0x35, 0xe6, 0xdc,
0x0a, 0x2d, 0xd7, 0xa5, 0xd0, 0x31, 0xeb, 0xbc, 0x6a, 0xe0, 0x5a, 0x17, 0xc8, 0x6f, 0x28, 0x7d,
0x35, 0x0d, 0xec, 0xf1, 0xfb, 0x82, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE array_text_xpm[1] = {{ png, sizeof( png ), "array_text_xpm" }};
//EOF
/* 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, 0x02, 0x1a, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x94, 0x3d, 0x88, 0x13,
0x41, 0x18, 0x86, 0xe7, 0x40, 0xbb, 0x20, 0xe1, 0x1a, 0x13, 0x3b, 0xb1, 0xb3, 0xb0, 0xbf, 0x43,
0x0e, 0xe5, 0x38, 0xbd, 0xd2, 0x46, 0x10, 0x04, 0x0b, 0x0b, 0x4b, 0xb9, 0xce, 0x9f, 0xc2, 0xcc,
0x9a, 0x9d, 0x9d, 0x9f, 0x6c, 0x22, 0xc1, 0x22, 0x6a, 0x27, 0x07, 0x5a, 0x18, 0xb2, 0xe4, 0xe4,
0x20, 0x46, 0x4c, 0x8a, 0x6b, 0x6c, 0xc5, 0xeb, 0x4e, 0x2c, 0x6c, 0x44, 0x39, 0x72, 0x57, 0xa8,
0xa0, 0x98, 0x1b, 0xdf, 0xec, 0xae, 0x49, 0x30, 0xeb, 0xdd, 0x8e, 0x03, 0xc1, 0xe2, 0xdd, 0x6f,
0x77, 0x66, 0xbe, 0x79, 0xe7, 0xe7, 0xdb, 0x87, 0x68, 0xad, 0xc9, 0x34, 0x14, 0x3d, 0x1c, 0xf2,
0x93, 0x50, 0xa2, 0x0f, 0x14, 0xc6, 0x0d, 0x13, 0x29, 0xa9, 0x43, 0xdd, 0x14, 0xaa, 0x8f, 0x8c,
0xa2, 0x89, 0xde, 0x61, 0xa2, 0xf7, 0x88, 0x3b, 0xd0, 0xd7, 0x38, 0x7e, 0x08, 0xdb, 0x47, 0xd2,
0x63, 0x46, 0x83, 0x49, 0x6e, 0x42, 0xb7, 0xa1, 0x0a, 0x29, 0x90, 0x87, 0x61, 0xa4, 0xe4, 0x4e,
0xdc, 0xfe, 0x5b, 0xdd, 0x3f, 0x8d, 0x3e, 0x42, 0x7d, 0x98, 0xed, 0x22, 0x6e, 0x86, 0xd1, 0x21,
0x7b, 0x78, 0xff, 0x1c, 0x2f, 0x60, 0xd2, 0xa8, 0x40, 0x18, 0x62, 0x00, 0x55, 0xa1, 0x95, 0x38,
0xae, 0x43, 0x22, 0x5c, 0x80, 0x43, 0x6e, 0x25, 0x19, 0xf5, 0xa1, 0xfb, 0x9e, 0xef, 0x5d, 0x10,
0x92, 0xb5, 0xa5, 0x64, 0x67, 0xf1, 0xcd, 0x63, 0xb3, 0x41, 0xff, 0x5e, 0xc2, 0x8e, 0x02, 0xf4,
0x2f, 0x16, 0x4b, 0xc5, 0xe3, 0x52, 0xf2, 0xcb, 0x52, 0xd2, 0x63, 0x68, 0x3b, 0x1d, 0x9b, 0xbd,
0x84, 0xd6, 0x26, 0x8d, 0xb0, 0x03, 0xae, 0xf8, 0xc5, 0x52, 0x59, 0xe8, 0x46, 0xf0, 0x4c, 0x2b,
0x9f, 0x6b, 0xe1, 0xbb, 0x0b, 0x63, 0x13, 0xef, 0x26, 0x18, 0x55, 0x95, 0x52, 0x27, 0x54, 0x59,
0xb4, 0x91, 0xf3, 0x42, 0xfa, 0x5e, 0x9b, 0x31, 0x96, 0x1f, 0x1b, 0x53, 0x4d, 0xda, 0xd1, 0x5b,
0xe9, 0xf3, 0x8d, 0xe6, 0x5a, 0xa0, 0x7b, 0xbd, 0x6d, 0xfd, 0xe4, 0xe9, 0xaa, 0x16, 0x8a, 0x0d,
0x95, 0xbf, 0x7b, 0xf4, 0x5e, 0x82, 0xd1, 0x8a, 0x2a, 0xf3, 0xab, 0xcd, 0xe7, 0x8d, 0x0e, 0x72,
0xba, 0xc8, 0xe9, 0x0a, 0xe5, 0x45, 0x2a, 0xb1, 0x56, 0xae, 0x98, 0x3b, 0x93, 0x7a, 0x47, 0xe8,
0x3b, 0x82, 0xa3, 0xdc, 0x12, 0xca, 0x7d, 0x85, 0xf7, 0x53, 0x69, 0x76, 0x84, 0xb2, 0x38, 0x8c,
0xa3, 0xbf, 0x81, 0x05, 0x5e, 0xc1, 0x98, 0xd9, 0x34, 0x77, 0x34, 0x38, 0x6b, 0x7d, 0xde, 0x5b,
0x72, 0x90, 0xd4, 0xa7, 0x94, 0x66, 0x52, 0xdc, 0xd1, 0x25, 0xa8, 0xb3, 0xec, 0x2d, 0xcf, 0x21,
0xa7, 0x8e, 0x9c, 0x43, 0xc9, 0x55, 0x17, 0xdd, 0xc5, 0x1b, 0xe8, 0x7b, 0x5c, 0x85, 0x3f, 0x10,
0x5f, 0x23, 0xa9, 0x87, 0x23, 0x79, 0xb0, 0x4f, 0xd5, 0x5d, 0x87, 0x1e, 0xc7, 0xdf, 0xab, 0xd0,
0x35, 0x21, 0x58, 0x85, 0x73, 0x7e, 0x6e, 0xbf, 0xff, 0xe8, 0x0b, 0xf4, 0x29, 0x6c, 0x2b, 0x44,
0x0b, 0x28, 0x96, 0x1c, 0x17, 0x66, 0xdf, 0xfe, 0xfa, 0x1f, 0x51, 0x52, 0x0b, 0xcb, 0x3a, 0x2a,
0x69, 0x77, 0x60, 0x28, 0x84, 0x3b, 0x2f, 0xa4, 0xfb, 0xc8, 0x88, 0x0c, 0x19, 0x9a, 0x39, 0xc9,
0x15, 0xab, 0x0d, 0x8f, 0xe2, 0x20, 0x32, 0x38, 0xa4, 0x95, 0xa5, 0xd9, 0x2c, 0xae, 0x60, 0x09,
0xe3, 0x67, 0xc8, 0x54, 0x59, 0x37, 0x3d, 0xa8, 0x1a, 0x02, 0xd2, 0x06, 0xaa, 0x46, 0x80, 0xb4,
0x81, 0xaa, 0x11, 0x20, 0x6d, 0xa0, 0x6a, 0x04, 0x48, 0x1b, 0xa8, 0x1a, 0x01, 0xd2, 0x06, 0xaa,
0x46, 0x80, 0xb4, 0x81, 0xaa, 0x11, 0x20, 0x6d, 0xa0, 0x6a, 0x04, 0x48, 0x1b, 0xa8, 0x1a, 0x01,
0xd2, 0x06, 0xaa, 0x46, 0x80, 0xfc, 0x77, 0xa8, 0x1a, 0x02, 0xf2, 0xbf, 0x86, 0xea, 0x2f, 0x73,
0x29, 0x07, 0xb2, 0xe7, 0xc3, 0x61, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE array_zone_xpm[1] = {{ png, sizeof( png ), "array_zone_xpm" }};
//EOF
/* 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, 0x01, 0xa4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
0x03, 0x3d, 0x30, 0x0a, 0x27, 0x24, 0x24, 0xe4, 0x3f, 0x0c, 0x13, 0xc3, 0xa7, 0xc8, 0x22, 0x86,
0x93, 0x8a, 0x28, 0x06, 0xe3, 0xe2, 0x2f, 0x61, 0x60, 0xe0, 0x03, 0x62, 0x4f, 0x20, 0xae, 0x58,
0xcc, 0xc0, 0x10, 0xbc, 0x9c, 0x81, 0x41, 0x96, 0xa0, 0x45, 0xc8, 0x2e, 0x85, 0x19, 0x84, 0x8f,
0x9f, 0x65, 0x67, 0xf7, 0x7f, 0x31, 0x23, 0x23, 0xc8, 0x32, 0x30, 0x5e, 0xc3, 0xc2, 0xf2, 0x73,
0x19, 0x23, 0xe3, 0xb7, 0xa5, 0x0c, 0x0c, 0x76, 0x04, 0x2d, 0x22, 0x25, 0xe8, 0xc2, 0x03, 0x03,
0xff, 0x2f, 0x62, 0x60, 0xd0, 0xc9, 0xb0, 0xb7, 0xff, 0xbf, 0x8c, 0x89, 0xa9, 0x72, 0x39, 0x23,
0xe3, 0xe7, 0x63, 0x42, 0x42, 0x20, 0xf6, 0x27, 0xa0, 0xcf, 0x14, 0x08, 0xf9, 0x28, 0x28, 0x3a,
0x3a, 0x9a, 0x8f, 0x94, 0x70, 0x87, 0x39, 0x00, 0xe8, 0xab, 0xc0, 0x4d, 0xec, 0xec, 0x9f, 0x80,
0x96, 0xfd, 0x02, 0x5a, 0xd6, 0x45, 0xc8, 0xa2, 0x43, 0x40, 0xbc, 0x81, 0x1c, 0x8b, 0x80, 0xc6,
0x30, 0x02, 0x83, 0xee, 0xfb, 0x1d, 0x79, 0xf9, 0xff, 0x2b, 0x99, 0x98, 0x9e, 0xe1, 0xb5, 0xc8,
0xd7, 0xd7, 0x97, 0x0b, 0x48, 0xff, 0x26, 0xc5, 0x57, 0x20, 0x7d, 0xf3, 0x19, 0x18, 0x38, 0x40,
0xc1, 0xb8, 0x9c, 0x89, 0xe9, 0xe9, 0x5d, 0xa0, 0x45, 0xc0, 0xf8, 0xfa, 0xb2, 0x8a, 0x89, 0xe9,
0x0a, 0x30, 0xbe, 0x6e, 0xac, 0x62, 0x60, 0x10, 0xc2, 0xe6, 0xa3, 0xc3, 0x40, 0x7c, 0x80, 0x54,
0x1f, 0x01, 0x53, 0x5c, 0x0a, 0x30, 0xe8, 0xfe, 0xad, 0x63, 0x63, 0xfb, 0x71, 0x4f, 0x41, 0xe1,
0x3f, 0x08, 0xaf, 0x66, 0x61, 0xf9, 0x05, 0x14, 0xcb, 0xc6, 0x15, 0x74, 0x89, 0x0e, 0x0e, 0x0e,
0x2c, 0x64, 0xc6, 0x51, 0xf8, 0x0a, 0x26, 0xa6, 0x6f, 0x20, 0x4b, 0xae, 0x4a, 0x4b, 0xff, 0x07,
0xb2, 0x6f, 0x03, 0x7d, 0xc3, 0x4c, 0x71, 0xaa, 0x43, 0xe6, 0xc3, 0x0c, 0x02, 0x06, 0x95, 0x3b,
0x30, 0xf8, 0xbe, 0xac, 0x60, 0x66, 0xfe, 0x0e, 0xf4, 0xa5, 0x2d, 0x55, 0xf2, 0x11, 0xae, 0x12,
0x02, 0x68, 0x81, 0xd5, 0x32, 0x06, 0x86, 0x59, 0x54, 0x2d, 0x19, 0x80, 0x78, 0x3f, 0x54, 0x6c,
0x3f, 0x0c, 0x63, 0xe3, 0x53, 0x5c, 0xd6, 0x21, 0x1b, 0xcc, 0x70, 0x4a, 0x71, 0x3f, 0x2e, 0x3e,
0x56, 0x8b, 0x08, 0x44, 0x3c, 0xdc, 0xa5, 0x30, 0x83, 0x88, 0xe5, 0x93, 0x6c, 0x11, 0x31, 0x41,
0x85, 0x8d, 0x4f, 0x8e, 0x8f, 0x6c, 0xd3, 0xd2, 0xd2, 0xb8, 0x48, 0xcc, 0x02, 0x64, 0x59, 0x34,
0x31, 0x38, 0x38, 0xb8, 0x85, 0xe6, 0x16, 0x79, 0x7a, 0x7a, 0xb2, 0x03, 0xe9, 0x3d, 0xa4, 0xf8,
0x8a, 0x5c, 0x1f, 0x4d, 0x02, 0xfa, 0x68, 0x02, 0x3d, 0x82, 0xce, 0x33, 0x34, 0x34, 0x94, 0x99,
0xe6, 0x16, 0xd1, 0x33, 0xd5, 0xd1, 0x3e, 0x1f, 0x21, 0x5b, 0x88, 0xaf, 0x24, 0xa0, 0xb8, 0x64,
0xc0, 0xe6, 0x33, 0xb2, 0xcb, 0x3a, 0x5a, 0x62, 0x00, 0x66, 0x05, 0x94, 0x24, 0x1f, 0x97, 0xfe,
0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_footprint_xpm[1] = {{ png, sizeof( png ), "duplicate_footprint_xpm" }};
//EOF
/* 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, 0x01, 0x41, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xb1, 0x4a, 0x03,
0x41, 0x14, 0x45, 0xcf, 0xbc, 0x59, 0x0d, 0xc4, 0x08, 0xb1, 0x90, 0x4d, 0x0c, 0x6c, 0x61, 0xb0,
0x88, 0xda, 0xa7, 0x16, 0x0b, 0xc1, 0xc2, 0x0f, 0xf0, 0x23, 0xfc, 0x06, 0xbb, 0x94, 0xd6, 0x62,
0x21, 0x6c, 0x76, 0x9d, 0xd5, 0x14, 0x42, 0x2c, 0x2c, 0x44, 0x44, 0xd2, 0x07, 0x2b, 0x2d, 0x52,
0x08, 0x62, 0x61, 0x11, 0x14, 0x4c, 0xc2, 0x82, 0x1a, 0xc7, 0x4f, 0x50, 0x21, 0x93, 0xc2, 0x58,
0x9c, 0xfa, 0xf0, 0x86, 0xfb, 0xde, 0x1d, 0xac, 0xb5, 0x8c, 0x03, 0xc6, 0x2e, 0xe2, 0x00, 0xeb,
0x82, 0x09, 0x10, 0x7d, 0xc7, 0x15, 0x78, 0x11, 0x6c, 0x1b, 0x58, 0x70, 0x1a, 0x86, 0x18, 0x96,
0x62, 0xa5, 0xd2, 0x08, 0x6c, 0x22, 0x72, 0x1f, 0xc3, 0x86, 0xb3, 0xd4, 0x85, 0x50, 0x35, 0x4a,
0xf5, 0xae, 0xf3, 0xf9, 0xcf, 0x86, 0xe7, 0xf5, 0x13, 0xad, 0xc3, 0x10, 0x66, 0x9c, 0xc4, 0x3b,
0x84, 0x55, 0x23, 0xf2, 0xdc, 0xf6, 0xfd, 0xe1, 0x45, 0x2e, 0x97, 0x26, 0x4a, 0x35, 0x9d, 0xed,
0x51, 0x02, 0x65, 0x23, 0xf2, 0xd4, 0xf6, 0xfd, 0x8f, 0xd3, 0xe9, 0xe9, 0xbe, 0x11, 0xd9, 0x71,
0xb6, 0xb0, 0x47, 0xb0, 0x72, 0x2c, 0x32, 0x78, 0x58, 0x5c, 0xb4, 0x46, 0xa9, 0xc1, 0x09, 0xcc,
0x3b, 0xbb, 0x0c, 0x89, 0xd6, 0x57, 0x37, 0x85, 0xc2, 0x67, 0x6b, 0x6e, 0x2e, 0x4d, 0x44, 0x6a,
0xce, 0x44, 0x31, 0xac, 0x35, 0x3c, 0xaf, 0xff, 0x58, 0x2e, 0x5b, 0x23, 0xd2, 0x8b, 0x61, 0x33,
0x82, 0xbd, 0x43, 0xc8, 0x8f, 0x54, 0x54, 0x87, 0x62, 0xac, 0x54, 0xf7, 0xb6, 0x54, 0xb2, 0x97,
0xb3, 0xb3, 0x69, 0x22, 0xf2, 0x76, 0xac, 0x75, 0x6b, 0xa4, 0x13, 0x45, 0xb0, 0x1e, 0x43, 0xda,
0xd0, 0xfa, 0xbd, 0x13, 0x04, 0xf6, 0xa5, 0x52, 0xb1, 0xcd, 0x4c, 0xe6, 0xb5, 0x0e, 0x5b, 0x23,
0x7f, 0xba, 0x08, 0x96, 0x8d, 0xc8, 0xdd, 0x79, 0x36, 0xdb, 0xef, 0x04, 0x81, 0x35, 0x22, 0xdd,
0x13, 0xd0, 0x4e, 0x6a, 0x62, 0x1f, 0xa6, 0x8e, 0x44, 0x6a, 0x11, 0x0c, 0x63, 0x91, 0x5d, 0xe7,
0x7d, 0x14, 0x42, 0xb5, 0x0e, 0xc5, 0x9f, 0xf4, 0xd1, 0x99, 0x0b, 0x26, 0x40, 0xf4, 0xf7, 0x3e,
0x27, 0xff, 0xa2, 0xdf, 0xf2, 0x05, 0x63, 0x00, 0xb0, 0xc1, 0xf1, 0xcc, 0x65, 0x5d, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_line_xpm[1] = {{ png, sizeof( png ), "duplicate_line_xpm" }};
//EOF
/* 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, 0x01, 0xa4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
0x03, 0x3d, 0x30, 0x0a, 0x27, 0x24, 0x24, 0xe4, 0x3f, 0x0c, 0x13, 0xc3, 0xa7, 0xc8, 0x22, 0x86,
0x93, 0x8a, 0x28, 0x06, 0xe3, 0xe2, 0x2f, 0x61, 0x60, 0xe0, 0x03, 0x62, 0x4f, 0x20, 0xae, 0x58,
0xcc, 0xc0, 0x10, 0xbc, 0x9c, 0x81, 0x41, 0x96, 0xa0, 0x45, 0xc8, 0x2e, 0x85, 0x19, 0x84, 0x8f,
0x9f, 0x65, 0x67, 0xf7, 0x7f, 0x31, 0x23, 0x23, 0xc8, 0x32, 0x30, 0x5e, 0xc3, 0xc2, 0xf2, 0x73,
0x19, 0x23, 0xe3, 0xb7, 0xa5, 0x0c, 0x0c, 0x76, 0x04, 0x2d, 0x22, 0x25, 0xe8, 0xc2, 0x03, 0x03,
0xff, 0x2f, 0x62, 0x60, 0xd0, 0xc9, 0xb0, 0xb7, 0xff, 0xbf, 0x8c, 0x89, 0xa9, 0x72, 0x39, 0x23,
0xe3, 0xe7, 0x63, 0x42, 0x42, 0x20, 0xf6, 0x27, 0xa0, 0xcf, 0x14, 0x08, 0xf9, 0x28, 0x28, 0x3a,
0x3a, 0x9a, 0x8f, 0x94, 0x70, 0x87, 0x39, 0x00, 0xe8, 0xab, 0xc0, 0x4d, 0xec, 0xec, 0x9f, 0x80,
0x96, 0xfd, 0x02, 0x5a, 0xd6, 0x45, 0xc8, 0xa2, 0x43, 0x40, 0xbc, 0x81, 0x1c, 0x8b, 0x80, 0xc6,
0x30, 0x02, 0x83, 0xee, 0xfb, 0x1d, 0x79, 0xf9, 0xff, 0x2b, 0x99, 0x98, 0x9e, 0xe1, 0xb5, 0xc8,
0xd7, 0xd7, 0x97, 0x0b, 0x48, 0xff, 0x26, 0xc5, 0x57, 0x20, 0x7d, 0xf3, 0x19, 0x18, 0x38, 0x40,
0xc1, 0xb8, 0x9c, 0x89, 0xe9, 0xe9, 0x5d, 0xa0, 0x45, 0xc0, 0xf8, 0xfa, 0xb2, 0x8a, 0x89, 0xe9,
0x0a, 0x30, 0xbe, 0x6e, 0xac, 0x62, 0x60, 0x10, 0xc2, 0xe6, 0xa3, 0xc3, 0x40, 0x7c, 0x80, 0x54,
0x1f, 0x01, 0x53, 0x5c, 0x0a, 0x30, 0xe8, 0xfe, 0xad, 0x63, 0x63, 0xfb, 0x71, 0x4f, 0x41, 0xe1,
0x3f, 0x08, 0xaf, 0x66, 0x61, 0xf9, 0x05, 0x14, 0xcb, 0xc6, 0x15, 0x74, 0x89, 0x0e, 0x0e, 0x0e,
0x2c, 0x64, 0xc6, 0x51, 0xf8, 0x0a, 0x26, 0xa6, 0x6f, 0x20, 0x4b, 0xae, 0x4a, 0x4b, 0xff, 0x07,
0xb2, 0x6f, 0x03, 0x7d, 0xc3, 0x4c, 0x71, 0xaa, 0x43, 0xe6, 0xc3, 0x0c, 0x02, 0x06, 0x95, 0x3b,
0x30, 0xf8, 0xbe, 0xac, 0x60, 0x66, 0xfe, 0x0e, 0xf4, 0xa5, 0x2d, 0x55, 0xf2, 0x11, 0xae, 0x12,
0x02, 0x68, 0x81, 0xd5, 0x32, 0x06, 0x86, 0x59, 0x54, 0x2d, 0x19, 0x80, 0x78, 0x3f, 0x54, 0x6c,
0x3f, 0x0c, 0x63, 0xe3, 0x53, 0x5c, 0xd6, 0x21, 0x1b, 0xcc, 0x70, 0x4a, 0x71, 0x3f, 0x2e, 0x3e,
0x56, 0x8b, 0x08, 0x44, 0x3c, 0xdc, 0xa5, 0x30, 0x83, 0x88, 0xe5, 0x93, 0x6c, 0x11, 0x31, 0x41,
0x85, 0x8d, 0x4f, 0x8e, 0x8f, 0x6c, 0xd3, 0xd2, 0xd2, 0xb8, 0x48, 0xcc, 0x02, 0x64, 0x59, 0x34,
0x31, 0x38, 0x38, 0xb8, 0x85, 0xe6, 0x16, 0x79, 0x7a, 0x7a, 0xb2, 0x03, 0xe9, 0x3d, 0xa4, 0xf8,
0x8a, 0x5c, 0x1f, 0x4d, 0x02, 0xfa, 0x68, 0x02, 0x3d, 0x82, 0xce, 0x33, 0x34, 0x34, 0x94, 0x99,
0xe6, 0x16, 0xd1, 0x33, 0xd5, 0xd1, 0x3e, 0x1f, 0x21, 0x5b, 0x88, 0xaf, 0x24, 0xa0, 0xb8, 0x64,
0xc0, 0xe6, 0x33, 0xb2, 0xcb, 0x3a, 0x5a, 0x62, 0x00, 0x66, 0x05, 0x94, 0x24, 0x1f, 0x97, 0xfe,
0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_module_xpm[1] = {{ png, sizeof( png ), "duplicate_module_xpm" }};
//EOF
/* 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, 0x02, 0x12, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x54, 0x4d, 0x48, 0x54,
0x51, 0x18, 0x3d, 0xef, 0x4e, 0xf8, 0x83, 0x0c, 0x31, 0x9a, 0x1b, 0x45, 0x66, 0xd1, 0x6a, 0x60,
0xda, 0xb6, 0x69, 0xe1, 0xaa, 0x89, 0x36, 0x41, 0x20, 0x41, 0xab, 0x20, 0xc6, 0xa5, 0xd0, 0xc2,
0xad, 0x36, 0x69, 0x30, 0xd0, 0x66, 0x08, 0x5d, 0xd8, 0x22, 0x06, 0x52, 0xf3, 0xe9, 0x4a, 0x26,
0xa9, 0x45, 0x42, 0x09, 0xea, 0xea, 0x6d, 0x24, 0x10, 0x8d, 0x76, 0x12, 0x21, 0x44, 0x8c, 0xe2,
0x28, 0xa2, 0xf5, 0x3a, 0xdf, 0x7d, 0xdf, 0x44, 0x0c, 0x09, 0xce, 0xcc, 0xf3, 0x41, 0x8b, 0xc3,
0x7d, 0xef, 0xfb, 0xee, 0x3d, 0xe7, 0x9e, 0xef, 0xbb, 0xf7, 0xc2, 0xf7, 0x7d, 0x44, 0x81, 0x9a,
0x1f, 0x38, 0xc8, 0x21, 0x8b, 0x27, 0xf8, 0xc8, 0xb1, 0x6c, 0x11, 0x7c, 0x67, 0x25, 0x17, 0x8a,
0x10, 0xc9, 0x7a, 0x88, 0x35, 0x62, 0x87, 0xf0, 0x88, 0x65, 0x85, 0xa7, 0x31, 0xc9, 0xf5, 0x34,
0x25, 0xa4, 0x4e, 0x84, 0x68, 0x8b, 0x28, 0x9d, 0x81, 0x2d, 0x3b, 0xa7, 0x41, 0x67, 0x55, 0x37,
0x59, 0xdd, 0x75, 0x09, 0x8f, 0xf1, 0x86, 0xe3, 0x06, 0xb1, 0xab, 0xd8, 0xd0, 0x98, 0x88, 0xed,
0xc4, 0x46, 0x31, 0xf8, 0x0a, 0x48, 0xb9, 0xc0, 0xd5, 0x05, 0xe0, 0x72, 0x7d, 0x42, 0x41, 0x1f,
0x3c, 0x25, 0x13, 0x91, 0x4f, 0x18, 0x43, 0xbf, 0x85, 0x7c, 0x33, 0x96, 0x18, 0xc6, 0xbb, 0xfb,
0x37, 0x9c, 0xaf, 0x2f, 0x3b, 0xcc, 0xf1, 0x0c, 0x97, 0xb9, 0xc6, 0x1c, 0xbd, 0x76, 0x9c, 0xc3,
0x69, 0xe0, 0x4e, 0x3d, 0x8e, 0xca, 0xda, 0x8f, 0x92, 0x75, 0x41, 0x81, 0x3f, 0x13, 0x02, 0xb1,
0xdd, 0xf4, 0x03, 0xac, 0x3c, 0xef, 0x32, 0x07, 0xe3, 0x49, 0x73, 0xb2, 0x10, 0x8b, 0xad, 0xce,
0x39, 0xce, 0xd1, 0x6a, 0x22, 0xf1, 0x6b, 0xde, 0x98, 0x43, 0x0a, 0x0f, 0x84, 0x26, 0xa4, 0x39,
0x99, 0x53, 0x96, 0x38, 0xc9, 0xaf, 0xd1, 0x55, 0x65, 0xb3, 0xb7, 0x57, 0xdc, 0x7d, 0xfb, 0x00,
0x5c, 0x0a, 0xa5, 0x74, 0x9a, 0xf3, 0x64, 0x6e, 0x75, 0x31, 0x05, 0x8a, 0x5e, 0x77, 0xf7, 0xcf,
0xa5, 0xf6, 0xf6, 0x03, 0x0a, 0x0f, 0xb1, 0x8c, 0xf7, 0x38, 0xde, 0x0d, 0xe5, 0x30, 0xc8, 0xdc,
0xea, 0x62, 0x92, 0x3e, 0x5c, 0x6c, 0x69, 0xd9, 0xfb, 0x92, 0x4c, 0xfa, 0xec, 0xd7, 0xa9, 0xf4,
0x6e, 0x16, 0xb8, 0x1e, 0xda, 0xf1, 0x7e, 0x0b, 0xb4, 0x92, 0x74, 0x49, 0x88, 0x97, 0xe3, 0xf1,
0xe3, 0x1f, 0xa9, 0x94, 0xbf, 0xdd, 0xd7, 0x27, 0x25, 0xfc, 0x1c, 0xfa, 0x85, 0x2d, 0x02, 0x6d,
0x24, 0x7e, 0xc1, 0x83, 0x51, 0x11, 0x47, 0xef, 0xe3, 0xf1, 0x7d, 0x0a, 0x0f, 0x5e, 0xd8, 0x13,
0xc4, 0xbe, 0xdc, 0x9c, 0x33, 0xe6, 0xfb, 0xac, 0xe3, 0x54, 0x78, 0xbf, 0x3a, 0xce, 0x25, 0x54,
0xff, 0x6d, 0xb7, 0x1b, 0xcb, 0x5c, 0x79, 0x84, 0xc2, 0xed, 0x5b, 0x58, 0xe7, 0xb7, 0x4b, 0xe4,
0x25, 0x56, 0xbb, 0xb1, 0xc6, 0x45, 0x72, 0xe8, 0x24, 0x9e, 0x11, 0x45, 0xa2, 0x40, 0x3c, 0x55,
0x14, 0x34, 0x26, 0xb9, 0xce, 0xa6, 0x84, 0xd4, 0x89, 0x10, 0x4d, 0x61, 0x14, 0x23, 0xff, 0x84,
0xe4, 0x64, 0x8e, 0x3a, 0x6b, 0xd4, 0x4d, 0xc6, 0xee, 0x5a, 0x08, 0x85, 0x36, 0x87, 0x09, 0x62,
0x46, 0x31, 0x61, 0x63, 0x81, 0x98, 0x38, 0xcb, 0x34, 0x23, 0x94, 0xb7, 0x25, 0x0a, 0xc8, 0x44,
0x64, 0x92, 0x48, 0x2b, 0x26, 0x6d, 0x2c, 0xc8, 0x49, 0x19, 0xf3, 0xcd, 0x08, 0xb9, 0xb6, 0x1f,
0x01, 0x99, 0xb8, 0x48, 0xff, 0x95, 0x4b, 0xdb, 0x58, 0x90, 0x93, 0x9e, 0xb9, 0xff, 0x85, 0x50,
0x64, 0xa5, 0x8b, 0xe8, 0x30, 0x44, 0x75, 0xbc, 0x23, 0xbb, 0xb0, 0xb5, 0x4f, 0x90, 0xf6, 0xcc,
0xbd, 0x90, 0x27, 0xa8, 0x5e, 0xfc, 0x06, 0x78, 0x64, 0xb7, 0x0e, 0x00, 0x4c, 0xaa, 0xda, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_pad_xpm[1] = {{ png, sizeof( png ), "duplicate_pad_xpm" }};
//EOF
/* 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, 0x02, 0xda, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x96, 0xcf, 0x6b, 0x13,
0x41, 0x14, 0xc7, 0x67, 0x7f, 0x25, 0xdd, 0x4d, 0xb6, 0x69, 0x24, 0xd5, 0x26, 0xa5, 0x49, 0x0f,
0x1e, 0x5a, 0xd3, 0x58, 0xb0, 0x6c, 0x4c, 0xb0, 0xea, 0x41, 0xf4, 0xe0, 0xc1, 0xbf, 0xa1, 0x67,
0xa9, 0xe0, 0xdd, 0x8b, 0xb7, 0xde, 0xd4, 0x53, 0xd1, 0x83, 0x0a, 0xd6, 0xa6, 0x4d, 0x0a, 0x8a,
0x8d, 0x22, 0x28, 0xed, 0x1e, 0x7a, 0xb3, 0x37, 0x29, 0x6a, 0x8d, 0x0a, 0x7a, 0xb2, 0x50, 0x91,
0x16, 0x63, 0x62, 0x5b, 0x3b, 0xbe, 0xef, 0x92, 0x85, 0x6d, 0xd8, 0xfc, 0x16, 0x71, 0xe0, 0xb1,
0xd9, 0x99, 0x65, 0x3e, 0xf3, 0xfd, 0xbe, 0xf7, 0x86, 0x30, 0xce, 0x39, 0xfb, 0x17, 0x51, 0x7f,
0xd1, 0x5a, 0x76, 0x5f, 0x9b, 0x61, 0xec, 0x68, 0x86, 0xb1, 0xb3, 0xf4, 0x1c, 0xcd, 0x31, 0xa6,
0xfe, 0x75, 0xd0, 0x2c, 0x63, 0x17, 0xb3, 0x92, 0xf4, 0xea, 0x21, 0xad, 0xd1, 0xef, 0xfd, 0x05,
0x59, 0x2e, 0xce, 0x8b, 0xe2, 0x3b, 0x02, 0x86, 0x5b, 0x02, 0xd1, 0xd0, 0x75, 0x1f, 0xbb, 0x11,
0xea, 0x51, 0x3e, 0x02, 0xd4, 0x7b, 0x48, 0x59, 0xc7, 0x3b, 0xe6, 0xb1, 0x3e, 0x2f, 0xcb, 0x53,
0x39, 0x49, 0x7a, 0x4a, 0x9b, 0xdf, 0xce, 0x8a, 0xe2, 0xeb, 0x9c, 0x2c, 0x97, 0x56, 0x82, 0xc1,
0xdd, 0x8c, 0x20, 0x6c, 0xdc, 0xad, 0x7c, 0xd3, 0x10, 0x44, 0xc3, 0x50, 0xbb, 0x84, 0xcd, 0xb1,
0xd1, 0xbe, 0xbd, 0x74, 0x2a, 0x89, 0x09, 0xbe, 0x9a, 0x3f, 0xc3, 0xaf, 0x4c, 0x0c, 0x94, 0x35,
0x55, 0xd8, 0xc0, 0x7a, 0xf5, 0x06, 0x04, 0x9c, 0x5e, 0x0e, 0x04, 0x8a, 0x2f, 0xfd, 0xfe, 0x62,
0x46, 0x14, 0xaf, 0x35, 0x04, 0xe1, 0xc4, 0x5d, 0x1e, 0xe1, 0x5b, 0x2a, 0x39, 0xc2, 0x13, 0x89,
0x04, 0x1f, 0x1f, 0x3f, 0x65, 0x81, 0xca, 0x85, 0x0b, 0xfc, 0xd7, 0x7a, 0x9a, 0xe7, 0xef, 0x8d,
0xf1, 0x0a, 0xec, 0xc0, 0xa9, 0xc9, 0xc2, 0x6e, 0x52, 0x53, 0xfa, 0x34, 0x38, 0xc8, 0xe7, 0x44,
0x71, 0x0b, 0xd6, 0xd2, 0xdc, 0xcd, 0xfb, 0x8c, 0xf5, 0xb8, 0x82, 0x60, 0x4f, 0x2c, 0x7a, 0x64,
0x1f, 0x10, 0x00, 0x9c, 0xa0, 0xbd, 0xb5, 0x80, 0x05, 0x83, 0x32, 0x7c, 0x57, 0x55, 0x14, 0xe1,
0x39, 0x41, 0x78, 0xb3, 0x16, 0x89, 0xf0, 0x25, 0x5d, 0xff, 0x49, 0x0a, 0x77, 0x28, 0x87, 0x2b,
0x35, 0x15, 0x05, 0x03, 0xca, 0xe7, 0x64, 0x32, 0x69, 0x01, 0xec, 0xb0, 0x41, 0x76, 0xc0, 0x46,
0xe4, 0xcc, 0xa1, 0xe6, 0x1c, 0x29, 0x28, 0x2d, 0x48, 0xd2, 0xee, 0x87, 0x58, 0x8c, 0x7f, 0x1f,
0x1e, 0xe6, 0x8b, 0x5e, 0xef, 0x36, 0xc1, 0x2f, 0xb9, 0xe4, 0x9e, 0xf1, 0x76, 0xa3, 0x02, 0x3b,
0x46, 0x96, 0xbd, 0x7d, 0xae, 0x69, 0x3f, 0x0a, 0xd1, 0x28, 0xec, 0xdb, 0xa4, 0x72, 0x97, 0x6a,
0x2a, 0xc2, 0x49, 0x71, 0x62, 0xa7, 0x02, 0xdb, 0x42, 0x3b, 0xa0, 0x58, 0xf7, 0xc9, 0x5f, 0xab,
0x37, 0xb9, 0xc3, 0x98, 0x42, 0x85, 0x30, 0x45, 0xd0, 0xdf, 0xb3, 0xa2, 0x78, 0xbd, 0x6e, 0x31,
0xc0, 0x7b, 0xe4, 0x00, 0xb9, 0x40, 0x4e, 0x9c, 0x20, 0x3c, 0x91, 0xbb, 0xfe, 0xc8, 0x61, 0xae,
0x69, 0x6c, 0xda, 0xc5, 0x16, 0x13, 0xcf, 0x07, 0x8c, 0x9d, 0xac, 0xd5, 0x4f, 0x07, 0xaa, 0x0e,
0x55, 0x85, 0xea, 0x02, 0xcc, 0x09, 0x02, 0x24, 0x1e, 0x8f, 0x73, 0x45, 0x11, 0xb6, 0x99, 0x4b,
0xaf, 0xd8, 0xa0, 0xa6, 0x1b, 0x16, 0x7d, 0x02, 0x18, 0x94, 0xc1, 0x46, 0x80, 0x60, 0x17, 0x94,
0x78, 0x14, 0x61, 0xcb, 0xd9, 0x47, 0x34, 0x34, 0xbf, 0xc6, 0x2e, 0x87, 0x02, 0x4a, 0x06, 0xa0,
0x50, 0x50, 0x99, 0xc1, 0x3b, 0xe6, 0x5b, 0xba, 0x19, 0x90, 0x33, 0x80, 0x82, 0xdd, 0xca, 0x17,
0xbf, 0x8f, 0xdd, 0x72, 0x2a, 0xa1, 0x31, 0xa4, 0x7a, 0x85, 0x27, 0x27, 0x8e, 0xf7, 0x2d, 0xa5,
0x53, 0x86, 0x09, 0xd0, 0x6a, 0xfe, 0xb4, 0x39, 0x39, 0x31, 0xf0, 0x82, 0x0e, 0xfa, 0x18, 0xeb,
0x1d, 0xdf, 0x75, 0x38, 0xb1, 0xd7, 0x23, 0x2c, 0xa6, 0x8c, 0x11, 0x93, 0x2c, 0x35, 0xc9, 0x5a,
0x0b, 0x54, 0x2e, 0x9c, 0x37, 0x77, 0xde, 0xa7, 0x4d, 0xb2, 0xde, 0xac, 0xc0, 0xb4, 0x8e, 0x40,
0xb0, 0x87, 0x1a, 0x7b, 0x19, 0x10, 0x00, 0x9c, 0x20, 0x2a, 0x22, 0x0b, 0x06, 0x65, 0xf8, 0xae,
0x69, 0x90, 0x5b, 0x50, 0x63, 0x67, 0x0d, 0xc3, 0xb0, 0x00, 0x76, 0xd8, 0x20, 0x3b, 0x60, 0x23,
0x72, 0xd6, 0x16, 0x08, 0x9b, 0xb5, 0x1b, 0x6d, 0x29, 0xc2, 0x49, 0x71, 0x62, 0xa7, 0x02, 0xdb,
0x42, 0x3b, 0xa0, 0x58, 0xd7, 0xe4, 0x47, 0x1d, 0x59, 0x07, 0xef, 0x91, 0x03, 0xe4, 0x02, 0x39,
0x71, 0x82, 0xf0, 0x44, 0xee, 0xfa, 0xc3, 0xbd, 0xa6, 0xaa, 0xb2, 0xab, 0x1d, 0x81, 0x50, 0x4d,
0xa8, 0x2a, 0x54, 0x17, 0x60, 0x4e, 0x10, 0x20, 0xd4, 0xd8, 0xa6, 0xc7, 0x23, 0x3c, 0x6b, 0xa9,
0xea, 0xea, 0xc0, 0x86, 0x00, 0x83, 0x32, 0xd8, 0x08, 0x10, 0xec, 0x82, 0x92, 0x0a, 0xa4, 0xb5,
0x3e, 0x6a, 0xa4, 0xcc, 0xba, 0x19, 0x28, 0x67, 0x00, 0x51, 0x63, 0x67, 0xfd, 0x2a, 0x9b, 0x6c,
0xfa, 0x66, 0x68, 0x13, 0x6a, 0x76, 0xf4, 0x2f, 0xe8, 0xbf, 0x03, 0x35, 0x13, 0x7f, 0x00, 0x00,
0x4f, 0xfc, 0x7e, 0x5d, 0x89, 0x9f, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_target_xpm[1] = {{ png, sizeof( png ), "duplicate_target_xpm" }};
//EOF
/* 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, 0x01, 0x6e, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
0x03, 0x3d, 0x30, 0x84, 0x60, 0x98, 0xfd, 0x9f, 0x54, 0xbc, 0x98, 0x81, 0x41, 0x65, 0x19, 0x03,
0x83, 0x3d, 0x90, 0xd6, 0x5f, 0xc5, 0xc0, 0xc0, 0x49, 0x75, 0x8b, 0x0c, 0x18, 0xf2, 0xfe, 0xb7,
0x31, 0x29, 0xfd, 0x5f, 0x02, 0xd4, 0xba, 0x94, 0x81, 0xe1, 0xdf, 0x6a, 0x16, 0x96, 0xaf, 0x2b,
0x98, 0x98, 0x6e, 0x00, 0x2d, 0x94, 0x24, 0xc5, 0xa2, 0x06, 0xb8, 0x04, 0x92, 0xe1, 0x48, 0x62,
0x0d, 0x91, 0x4c, 0x5e, 0xff, 0x2b, 0x98, 0x0c, 0xfe, 0x03, 0x0d, 0x9f, 0xb1, 0x92, 0x89, 0xe9,
0xd2, 0x2a, 0x16, 0x96, 0xef, 0x87, 0x05, 0x05, 0x7f, 0x2f, 0x63, 0x64, 0x7c, 0x39, 0x97, 0x81,
0x81, 0x97, 0x18, 0x8b, 0x1a, 0x50, 0x24, 0xb0, 0x58, 0x04, 0xb3, 0x0c, 0x59, 0x0c, 0x68, 0xe1,
0xb4, 0x7d, 0xfc, 0xfc, 0x5f, 0x77, 0xf3, 0xf0, 0x7c, 0x5d, 0xc6, 0xc4, 0x54, 0x8d, 0xd7, 0x22,
0xac, 0x12, 0x38, 0x2c, 0x42, 0xc7, 0xc0, 0x20, 0xe4, 0x03, 0xfa, 0xe6, 0xfb, 0x3d, 0x05, 0x85,
0xff, 0xcb, 0x99, 0x98, 0x3e, 0x02, 0x83, 0xd3, 0x0b, 0x28, 0xd6, 0x3f, 0x9f, 0x81, 0x41, 0x80,
0xaa, 0x16, 0x81, 0xe2, 0x66, 0x39, 0x23, 0xe3, 0xb5, 0x2b, 0x52, 0x52, 0xff, 0xf7, 0xf2, 0xf2,
0x7e, 0x03, 0xfa, 0xf0, 0xd7, 0x4a, 0x66, 0xe6, 0xc3, 0x54, 0xf5, 0x11, 0xd0, 0xe5, 0xce, 0x40,
0x1f, 0x7c, 0x5f, 0xcd, 0xcc, 0xfc, 0xfb, 0x8e, 0xbc, 0xfc, 0xff, 0xf7, 0x9a, 0x9a, 0xff, 0x37,
0xb1, 0xb3, 0x7f, 0x02, 0x5a, 0xee, 0x47, 0x8b, 0xa0, 0xd3, 0x02, 0x06, 0xd9, 0xf5, 0xed, 0x5c,
0x5c, 0x5f, 0x6e, 0xcb, 0xc9, 0x81, 0x82, 0xef, 0x0d, 0x30, 0xb9, 0x33, 0x53, 0xdd, 0x22, 0x10,
0x9e, 0xc9, 0xc0, 0xc0, 0x0a, 0x4c, 0x08, 0xed, 0x40, 0x4b, 0xff, 0x2e, 0x65, 0x62, 0x6a, 0xa0,
0x49, 0x62, 0x40, 0xc6, 0x8b, 0x18, 0x18, 0xcc, 0x71, 0xe5, 0x27, 0x92, 0x2d, 0x02, 0xf2, 0x37,
0x93, 0x8a, 0x07, 0xd6, 0x22, 0xa0, 0x84, 0x03, 0x10, 0x1f, 0x40, 0x2b, 0x7a, 0x40, 0x7c, 0x07,
0x54, 0x8b, 0xe6, 0x44, 0x61, 0xb3, 0x1c, 0x21, 0x36, 0x27, 0x8a, 0x90, 0x45, 0x38, 0xcb, 0x39,
0x84, 0xa1, 0x08, 0x4b, 0x70, 0x59, 0x84, 0x6c, 0x19, 0xde, 0xa0, 0x23, 0xa9, 0x0a, 0xc0, 0x61,
0x11, 0x51, 0x89, 0x61, 0xd4, 0xa2, 0x51, 0x8b, 0x46, 0xb8, 0x45, 0x0c, 0x0c, 0x33, 0x75, 0x81,
0x86, 0xb7, 0xa3, 0x15, 0x39, 0xed, 0x20, 0x71, 0x2a, 0x5b, 0x84, 0xbf, 0x7c, 0xa3, 0x7a, 0xd0,
0x11, 0x83, 0x01, 0xfa, 0xc4, 0x94, 0x7d, 0x09, 0xb7, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_text_xpm[1] = {{ png, sizeof( png ), "duplicate_text_xpm" }};
//EOF
/* 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, 0x02, 0xde, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x5d, 0x48, 0x14,
0x51, 0x14, 0xc7, 0xcf, 0xce, 0x8c, 0x48, 0xe2, 0x47, 0x42, 0x09, 0xfa, 0xa0, 0x46, 0xbd, 0xd8,
0x4b, 0xbd, 0x05, 0x51, 0x46, 0x4a, 0x06, 0x3e, 0x54, 0x2f, 0x41, 0x21, 0x14, 0xf4, 0x18, 0x61,
0x3e, 0x04, 0x69, 0x5f, 0xde, 0xd5, 0x9d, 0x9d, 0x3b, 0xe3, 0x6a, 0x48, 0x91, 0x59, 0x44, 0xe5,
0xc7, 0x6e, 0x7e, 0xa4, 0x68, 0x45, 0xa5, 0xe8, 0x3e, 0xf8, 0x16, 0xf4, 0x60, 0x49, 0x09, 0x9a,
0x0f, 0x11, 0x84, 0x21, 0x6a, 0xe2, 0x2a, 0x69, 0xeb, 0xed, 0x3f, 0xeb, 0x20, 0xeb, 0x92, 0xb9,
0xee, 0x68, 0x0f, 0xff, 0x39, 0x73, 0xef, 0x3d, 0x73, 0x7f, 0x73, 0xce, 0x3d, 0xf7, 0x90, 0x10,
0x82, 0xfe, 0x87, 0x96, 0x1f, 0x4e, 0xfa, 0x4d, 0x8c, 0x44, 0x54, 0x82, 0x6f, 0xec, 0xa0, 0xe5,
0x4d, 0x46, 0xb1, 0xc9, 0x18, 0xec, 0x14, 0x14, 0xb0, 0xec, 0xd7, 0xd0, 0xfc, 0x6a, 0x09, 0xbb,
0xa0, 0xef, 0x50, 0x10, 0xb0, 0x69, 0xd8, 0xa1, 0x90, 0x75, 0xd2, 0x12, 0xde, 0x7f, 0x58, 0x3f,
0xb0, 0x0a, 0xd4, 0x48, 0xb4, 0xc7, 0x4b, 0x74, 0x04, 0x76, 0x5f, 0x2b, 0xd1, 0xb6, 0x8d, 0x80,
0x82, 0xd0, 0x1d, 0xb7, 0xc7, 0x7d, 0x8a, 0xeb, 0x6a, 0x8f, 0xae, 0xab, 0x47, 0x31, 0xd6, 0x2c,
0x98, 0xb9, 0xbe, 0x44, 0xe5, 0xf4, 0x65, 0x7f, 0x11, 0x89, 0x16, 0x59, 0x7e, 0xd7, 0x84, 0x4f,
0x9b, 0x89, 0x96, 0xda, 0x14, 0x25, 0xf0, 0x4c, 0x92, 0x86, 0x01, 0x4c, 0x8f, 0x0e, 0x84, 0x08,
0x34, 0x43, 0x3b, 0x5d, 0x55, 0xcd, 0x45, 0x47, 0x67, 0x9b, 0x30, 0x3c, 0x9a, 0xe0, 0x1e, 0x57,
0xee, 0x8a, 0x23, 0xa3, 0x19, 0x68, 0xfa, 0x6c, 0xae, 0x24, 0x5a, 0x65, 0xf9, 0x25, 0x36, 0xbf,
0xdf, 0x22, 0x49, 0x1f, 0x5a, 0x15, 0x65, 0x7e, 0x20, 0x35, 0x75, 0xd1, 0xeb, 0x70, 0x8c, 0x3f,
0x22, 0x4a, 0x8a, 0x26, 0xa2, 0x8f, 0xba, 0x47, 0x1b, 0xe8, 0xea, 0xee, 0x14, 0x93, 0x93, 0x13,
0xc2, 0xeb, 0x6b, 0x14, 0xdc, 0x50, 0x57, 0xb4, 0x93, 0xed, 0x78, 0x08, 0x9f, 0xc5, 0xc8, 0x33,
0x02, 0xf0, 0x5e, 0x7f, 0x4a, 0x4a, 0xa0, 0x37, 0x31, 0x31, 0xe0, 0x95, 0xa4, 0xeb, 0x31, 0x47,
0x84, 0xb5, 0x64, 0xa4, 0x72, 0xc4, 0x65, 0x54, 0xf8, 0xad, 0xf4, 0xae, 0x02, 0x21, 0x85, 0xc9,
0x88, 0x66, 0x7e, 0x2c, 0x3b, 0x5b, 0xf8, 0x24, 0xe9, 0x27, 0xd2, 0x59, 0x88, 0xb9, 0xdb, 0x8f,
0x89, 0xb6, 0x6f, 0xe4, 0x8c, 0x5e, 0x99, 0x6b, 0x05, 0x6a, 0x9e, 0x0b, 0x51, 0x05, 0x15, 0xa6,
0xf4, 0x45, 0x82, 0xcc, 0xb3, 0xf1, 0x39, 0x1c, 0x9f, 0x86, 0x32, 0x32, 0x44, 0x5f, 0x52, 0xd2,
0x1c, 0x22, 0x5c, 0xc0, 0x19, 0x0e, 0xac, 0x5f, 0x75, 0x2c, 0x54, 0x75, 0x83, 0xd0, 0x2f, 0x6b,
0x6c, 0xda, 0x41, 0x80, 0x26, 0x2f, 0xf3, 0x4b, 0x3e, 0x44, 0x3e, 0x1c, 0x16, 0x4d, 0x3e, 0x22,
0x98, 0x6f, 0x93, 0xe5, 0xc5, 0xd1, 0xac, 0x2c, 0x31, 0x95, 0x93, 0x23, 0xba, 0xe3, 0xe3, 0x67,
0x00, 0x3f, 0x11, 0xed, 0x3d, 0x9a, 0x85, 0xc6, 0xad, 0x72, 0xfe, 0x66, 0x56, 0xde, 0x0d, 0xbd,
0xd4, 0x00, 0x6c, 0x2e, 0x72, 0x03, 0xc0, 0xf6, 0x22, 0x65, 0x9f, 0x5f, 0x27, 0x24, 0xcc, 0x8e,
0x64, 0x66, 0x9a, 0xe9, 0x9b, 0x40, 0xb9, 0xcb, 0xff, 0x06, 0xad, 0xad, 0x05, 0x89, 0x49, 0x4f,
0x34, 0x43, 0xad, 0x63, 0x8c, 0x29, 0x91, 0x9b, 0xd4, 0x13, 0xc5, 0xa1, 0x10, 0x34, 0x40, 0x83,
0xcd, 0x92, 0xc4, 0xec, 0xb6, 0xa0, 0xf7, 0xeb, 0x5d, 0xca, 0x06, 0xa2, 0x03, 0x6b, 0xdd, 0xa7,
0xd8, 0x1a, 0x24, 0xa3, 0x76, 0xc8, 0x1f, 0xa5, 0xda, 0xed, 0x80, 0xcc, 0x0d, 0x4a, 0xa1, 0x6b,
0x50, 0x0d, 0x3a, 0x46, 0x7d, 0xc8, 0x32, 0xba, 0x65, 0xcd, 0x87, 0xcb, 0x6f, 0x0f, 0x54, 0x4e,
0x2a, 0x6c, 0x27, 0x54, 0x0b, 0x95, 0x58, 0xd6, 0xbc, 0x0e, 0x3c, 0xf4, 0x03, 0x4e, 0x2a, 0xdb,
0x1c, 0x90, 0x09, 0x71, 0x52, 0x7e, 0x65, 0x55, 0xe5, 0x2e, 0x5d, 0xd7, 0x8a, 0x74, 0x9d, 0x65,
0x60, 0xee, 0x90, 0x05, 0xeb, 0x85, 0xba, 0x2d, 0x98, 0x6d, 0x50, 0xad, 0x61, 0x18, 0xbb, 0x8d,
0x6a, 0xde, 0x83, 0x4e, 0xf2, 0x56, 0xf7, 0xb8, 0x7b, 0x54, 0x55, 0x4d, 0x0f, 0xf3, 0xb9, 0x6b,
0x45, 0x69, 0x1b, 0x54, 0x62, 0x54, 0x6b, 0x17, 0xba, 0x5e, 0x74, 0xf4, 0xa3, 0x37, 0xfa, 0xd1,
0x1b, 0xfd, 0xdc, 0x70, 0x2f, 0xab, 0x4a, 0x7d, 0x93, 0xe6, 0x4c, 0x3b, 0x0e, 0x9f, 0x96, 0x2d,
0x8b, 0x08, 0x65, 0x11, 0x87, 0xf6, 0x75, 0xd5, 0xe5, 0x71, 0x9e, 0x87, 0xcf, 0xf3, 0xad, 0x3a,
0xa3, 0x33, 0x50, 0x7f, 0x01, 0xcf, 0x3b, 0x88, 0x2e, 0xd2, 0x2e, 0x33, 0xf9, 0xdc, 0x66, 0x57,
0x5d, 0x31, 0xf4, 0xd4, 0x82, 0x37, 0x98, 0x63, 0xce, 0xd5, 0x9a, 0x62, 0x5e, 0x7c, 0x12, 0xef,
0x57, 0x36, 0xef, 0x1e, 0x31, 0xaa, 0x0b, 0x95, 0xb5, 0x59, 0x65, 0xe5, 0x78, 0xa2, 0xf2, 0x6e,
0x1a, 0x65, 0x87, 0xb9, 0xee, 0x7a, 0x60, 0xb7, 0x33, 0xf8, 0xff, 0x72, 0x31, 0xc3, 0xd5, 0x84,
0xb4, 0x15, 0xe2, 0xac, 0x8e, 0xc1, 0xdf, 0xb1, 0xb5, 0x2d, 0xa8, 0x82, 0x2e, 0xda, 0xee, 0x75,
0xb1, 0xe8, 0x0f, 0xc0, 0x74, 0xed, 0xb7, 0x43, 0x22, 0xa0, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE duplicate_zone_xpm[1] = {{ png, sizeof( png ), "duplicate_zone_xpm" }};
//EOF
/* 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, 0x03, 0x21, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x4b, 0x4c, 0x13,
0x51, 0x14, 0x86, 0x6f, 0xdb, 0x81, 0x96, 0xb6, 0xd8, 0x97, 0x7d, 0x4c, 0xa7, 0x9d, 0x3e, 0x10,
0x6c, 0x30, 0x02, 0x0b, 0x7c, 0xe0, 0x13, 0xad, 0xb4, 0x18, 0x4c, 0x04, 0x12, 0xa5, 0xc4, 0x85,
0x21, 0xb8, 0x75, 0x67, 0x5c, 0xb0, 0x76, 0x6f, 0x5c, 0xf9, 0x88, 0x89, 0xc1, 0x40, 0x81, 0xc6,
0x40, 0x14, 0x62, 0x5c, 0x01, 0x01, 0x0c, 0x0b, 0x13, 0x62, 0x10, 0x0d, 0x89, 0xdd, 0xb8, 0x37,
0x90, 0xa0, 0x96, 0x87, 0x8d, 0xc7, 0xfb, 0x8f, 0x14, 0x8b, 0xb1, 0xb1, 0xa5, 0xc8, 0x24, 0x7f,
0x32, 0x3d, 0x9d, 0x3b, 0xdf, 0x3d, 0xe7, 0xff, 0xef, 0x30, 0x22, 0x62, 0x7b, 0xa1, 0x7f, 0x3f,
0xc0, 0xd8, 0x65, 0xae, 0xe1, 0xbd, 0x00, 0xc5, 0xb8, 0x26, 0xff, 0x1b, 0x88, 0x5f, 0x36, 0xae,
0xae, 0x12, 0x81, 0x4d, 0x6b, 0xd4, 0x6c, 0x99, 0xdf, 0xf7, 0x70, 0xd5, 0xef, 0x2a, 0x88, 0x5f,
0x4d, 0xda, 0x12, 0xb6, 0xec, 0xf7, 0x6a, 0x37, 0x24, 0xc9, 0x41, 0x55, 0x41, 0x03, 0xdd, 0x88,
0xb9, 0xd6, 0xcb, 0x74, 0xaa, 0x35, 0x5e, 0xbf, 0xc7, 0xff, 0xd7, 0x16, 0x0d, 0x02, 0x44, 0xa7,
0x55, 0xaf, 0x57, 0x04, 0x25, 0xf2, 0xf9, 0x7c, 0x14, 0x0c, 0x06, 0xe8, 0x5c, 0x83, 0x95, 0x36,
0x16, 0x6b, 0xe8, 0xd3, 0x4c, 0x2d, 0x9d, 0x39, 0x66, 0x4a, 0xe9, 0x75, 0xec, 0x55, 0x51, 0x20,
0x8c, 0xab, 0x54, 0x60, 0x2b, 0x07, 0x2a, 0x7c, 0x64, 0x30, 0xe8, 0x51, 0x20, 0xbf, 0xdf, 0x4f,
0xe1, 0x13, 0x56, 0xfa, 0xfe, 0xc1, 0x47, 0xe9, 0x05, 0x33, 0x2d, 0xcd, 0xd5, 0x92, 0x68, 0x17,
0x56, 0x35, 0x1a, 0xd6, 0x5d, 0x0c, 0xa8, 0xcb, 0x69, 0xd7, 0xa5, 0x65, 0xd9, 0xab, 0x40, 0xb6,
0x40, 0x27, 0x33, 0x20, 0x13, 0xa5, 0xdf, 0x3b, 0x69, 0xe4, 0x41, 0x25, 0xed, 0x33, 0xaa, 0x92,
0x05, 0x83, 0x36, 0x23, 0x1c, 0xe3, 0xc6, 0xbf, 0x76, 0xb9, 0xec, 0x14, 0x08, 0x04, 0x14, 0x00,
0x24, 0x8a, 0x22, 0x1d, 0x0e, 0x19, 0x69, 0xe4, 0x61, 0x35, 0x07, 0x84, 0x14, 0xf5, 0xdd, 0xad,
0x26, 0xb5, 0x5a, 0xf5, 0x83, 0xaf, 0xb9, 0xbe, 0x99, 0x4a, 0x39, 0x5f, 0xd0, 0x30, 0x22, 0x8c,
0x74, 0x55, 0x72, 0xe3, 0xcf, 0x1e, 0xb5, 0x6e, 0x29, 0x54, 0x61, 0x24, 0x6d, 0xa9, 0x40, 0xa2,
0xcb, 0xfc, 0x5b, 0x4e, 0x33, 0xa9, 0x54, 0x2a, 0x2c, 0x9c, 0xc5, 0x3a, 0xae, 0xf3, 0x85, 0x8e,
0xae, 0xa7, 0xbb, 0xc3, 0xb9, 0xbe, 0xb1, 0x58, 0xa7, 0x8c, 0x0a, 0x7a, 0x76, 0xbf, 0x9a, 0x4c,
0x26, 0x13, 0x79, 0xbd, 0x5e, 0xb2, 0x58, 0x2c, 0x64, 0xb3, 0x71, 0x78, 0x28, 0x44, 0x82, 0xc0,
0x56, 0x8b, 0xf1, 0xa8, 0x1e, 0x11, 0x46, 0xba, 0xd2, 0x0b, 0x16, 0xc5, 0x13, 0x8c, 0xca, 0x6c,
0x36, 0x29, 0x10, 0x78, 0x26, 0x49, 0x12, 0x19, 0x8d, 0x7a, 0xd2, 0x6b, 0xd9, 0x48, 0x66, 0x5d,
0x34, 0x2e, 0x1f, 0xba, 0x38, 0xe8, 0xbe, 0x59, 0x50, 0xbc, 0x71, 0x4e, 0x4e, 0x1f, 0x31, 0xa4,
0x96, 0xe6, 0xea, 0xb8, 0xf1, 0x0e, 0x05, 0xb4, 0xdf, 0x66, 0x22, 0xab, 0xd5, 0x4a, 0x2e, 0x97,
0x93, 0x3c, 0x1e, 0x89, 0x04, 0x0d, 0x4b, 0x21, 0xa1, 0x78, 0xbe, 0x39, 0xee, 0xa9, 0x69, 0x19,
0x95, 0x92, 0xad, 0xe3, 0xde, 0xcf, 0x91, 0x21, 0xf7, 0xad, 0x42, 0xce, 0x91, 0x16, 0xe7, 0x04,
0x11, 0x46, 0xba, 0x60, 0xbc, 0xc3, 0x6e, 0xe2, 0xe3, 0x3a, 0x48, 0xe5, 0xe5, 0x06, 0x8c, 0xec,
0x2b, 0x7f, 0xe6, 0x14, 0x9e, 0x6d, 0xea, 0x97, 0xea, 0x5a, 0x46, 0x3d, 0xc9, 0xce, 0x77, 0x01,
0xea, 0x5c, 0x08, 0x50, 0xeb, 0x44, 0x6e, 0x58, 0xce, 0x56, 0x71, 0x4e, 0x10, 0x61, 0xa4, 0x0b,
0xc6, 0x97, 0x96, 0xb0, 0x2f, 0xc6, 0x32, 0x36, 0x94, 0xe9, 0xa4, 0x31, 0x61, 0x37, 0x46, 0xe2,
0xe2, 0xa3, 0xe6, 0x84, 0x38, 0xd9, 0x3e, 0xe3, 0x5b, 0x8b, 0x71, 0x58, 0x74, 0xc8, 0xfd, 0x31,
0x3a, 0xe0, 0x7e, 0x1e, 0xee, 0x95, 0xaa, 0x76, 0xf2, 0x51, 0x45, 0x84, 0x67, 0xb3, 0x6b, 0xe8,
0x04, 0x10, 0xdc, 0x5f, 0x78, 0xe2, 0x3c, 0xde, 0x36, 0x2d, 0x7f, 0x8b, 0xcd, 0x07, 0xa8, 0x39,
0xe1, 0x7e, 0x8c, 0x5a, 0xa4, 0x5f, 0xbc, 0xc6, 0xa1, 0xb7, 0x8b, 0xfa, 0x7a, 0xff, 0xf2, 0xc4,
0x93, 0x44, 0x27, 0x80, 0x84, 0x9f, 0x3a, 0xbb, 0x33, 0xa0, 0xc8, 0xa0, 0xeb, 0x05, 0x6a, 0x91,
0x3e, 0xf1, 0xce, 0xa5, 0x31, 0x69, 0x25, 0x7b, 0x8c, 0xf9, 0x80, 0xe4, 0xcc, 0x39, 0x41, 0xba,
0x60, 0x3c, 0x3c, 0xc1, 0xb8, 0x00, 0x80, 0x3a, 0xe6, 0xfc, 0x8a, 0x47, 0xed, 0x53, 0xf2, 0xaa,
0x52, 0x9b, 0x92, 0x53, 0x1d, 0x6f, 0xfd, 0xdb, 0x3c, 0x2b, 0xe8, 0xc3, 0x88, 0x08, 0x23, 0x5d,
0x78, 0x29, 0x3c, 0x41, 0x17, 0x10, 0x7e, 0x2b, 0xb5, 0xf9, 0xed, 0xb5, 0xab, 0x6f, 0x7c, 0xe9,
0x68, 0x42, 0x7c, 0x59, 0x30, 0x48, 0x99, 0x3f, 0xdf, 0x21, 0x76, 0x0a, 0xe3, 0xe1, 0x09, 0xc6,
0x85, 0x4e, 0xf0, 0xf2, 0x68, 0x5c, 0x5c, 0x44, 0x2d, 0x3a, 0x20, 0x4e, 0xb5, 0x4d, 0x7a, 0xd3,
0xfc, 0x7e, 0xac, 0x71, 0x82, 0x09, 0x3b, 0x02, 0x65, 0x60, 0x48, 0x57, 0xae, 0x30, 0x44, 0xe3,
0xee, 0x2e, 0xbe, 0x91, 0xf1, 0x2b, 0x09, 0xa6, 0xc9, 0xdb, 0xa3, 0x5c, 0x42, 0x84, 0x91, 0x2e,
0x18, 0x0f, 0x4f, 0x94, 0x8e, 0x78, 0x27, 0x80, 0x84, 0x7b, 0x1d, 0x0d, 0xd9, 0x90, 0xa2, 0x40,
0xca, 0xce, 0x79, 0x84, 0x91, 0x2e, 0x18, 0x0f, 0x4f, 0x30, 0xae, 0x3f, 0x3b, 0xd9, 0x15, 0x50,
0xb6, 0x67, 0x30, 0x1e, 0x9e, 0xfc, 0x0d, 0xb2, 0x2b, 0xa0, 0x2d, 0xcf, 0x78, 0xba, 0x32, 0xc6,
0xff, 0x37, 0x50, 0x3e, 0xfa, 0x09, 0x65, 0x16, 0x60, 0xbf, 0x0d, 0xb1, 0xac, 0x3b, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE move_target_xpm[1] = {{ png, sizeof( png ), "move_target_xpm" }};
//EOF
/* 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, 0x02, 0xcf, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x95, 0xcb, 0x4f, 0x13,
0x51, 0x14, 0xc6, 0x6f, 0xa2, 0x74, 0xd1, 0x44, 0x8c, 0x1b, 0x71, 0xa6, 0x50, 0x68, 0x54, 0x8c,
0xb2, 0x70, 0xa1, 0x46, 0xdc, 0x35, 0xa9, 0x76, 0x30, 0x43, 0x42, 0x21, 0xe1, 0x15, 0x56, 0x4d,
0x17, 0xd6, 0x08, 0xb2, 0x31, 0x04, 0x31, 0xd8, 0x19, 0xe2, 0x3f, 0x60, 0x7c, 0x2c, 0x94, 0x68,
0x6b, 0xa0, 0x85, 0x06, 0x5f, 0x05, 0x4d, 0x11, 0xd3, 0xd6, 0xc2, 0x46, 0x4c, 0x8c, 0x01, 0x8d,
0x24, 0xa2, 0xae, 0x74, 0x85, 0x1b, 0x12, 0x10, 0x23, 0xc9, 0xf8, 0x9d, 0xe1, 0x42, 0x0a, 0x42,
0xd2, 0x99, 0x41, 0x17, 0xbf, 0xde, 0x3b, 0xa7, 0x33, 0xe7, 0xbb, 0xe7, 0x7c, 0x67, 0x5a, 0xa6,
0x69, 0x1a, 0xfb, 0x1f, 0xac, 0x7c, 0x28, 0x4c, 0x64, 0x2a, 0x3b, 0x6f, 0x18, 0x85, 0x05, 0x41,
0x61, 0xfe, 0x42, 0x2b, 0x0f, 0x8d, 0x81, 0xc7, 0x06, 0x19, 0x07, 0x6e, 0xa3, 0x42, 0xf4, 0x60,
0x78, 0x8d, 0x10, 0x7b, 0x88, 0xb5, 0x6f, 0x5d, 0xec, 0x6f, 0x92, 0x56, 0x84, 0x5e, 0x82, 0x41,
0x70, 0x11, 0xdc, 0xe4, 0x95, 0xc6, 0xb7, 0x5b, 0x68, 0xcc, 0xae, 0xda, 0x6b, 0x54, 0x55, 0xf5,
0x2b, 0x8a, 0x32, 0x09, 0xee, 0xb6, 0x2a, 0xad, 0xc7, 0x11, 0x1f, 0xe6, 0x07, 0x20, 0xd1, 0x51,
0xab, 0x42, 0x94, 0x2c, 0x8c, 0xe4, 0x41, 0xa0, 0x81, 0x79, 0xbe, 0xfe, 0x90, 0x3b, 0xe5, 0x3d,
0xac, 0x87, 0x9d, 0xc4, 0xf7, 0x95, 0xb8, 0xb7, 0x1d, 0xeb, 0x33, 0x2b, 0x42, 0xe3, 0x58, 0xeb,
0x91, 0x78, 0x06, 0x7c, 0x03, 0xf6, 0x1c, 0xd1, 0xdf, 0x60, 0x09, 0x2c, 0x80, 0x03, 0x5c, 0xc0,
0xa4, 0x50, 0x88, 0xa5, 0xb1, 0x9e, 0x43, 0xa2, 0x31, 0xb0, 0x88, 0xf6, 0x9d, 0xc1, 0x7a, 0x8f,
0x0b, 0x65, 0xc0, 0x23, 0xbe, 0xbf, 0x85, 0xfb, 0xfc, 0xbc, 0x03, 0xa6, 0x2a, 0x7a, 0x02, 0x12,
0x10, 0xf0, 0x20, 0xd9, 0x2f, 0x9e, 0x94, 0x98, 0xb4, 0x75, 0xd8, 0x0e, 0xb3, 0xcb, 0xac, 0x1c,
0xfb, 0x09, 0x3a, 0x44, 0x57, 0x57, 0x57, 0x11, 0x9e, 0x49, 0x5a, 0x19, 0x86, 0x04, 0xb8, 0xde,
0xae, 0xb4, 0x3b, 0x91, 0xf0, 0x2a, 0xf0, 0x15, 0x74, 0x17, 0x1c, 0x45, 0xec, 0x15, 0x18, 0xc2,
0x21, 0x6a, 0xb8, 0xb8, 0x8a, 0xeb, 0x56, 0xf0, 0xda, 0xfc, 0x78, 0xab, 0x6c, 0x08, 0xeb, 0x0b,
0x30, 0xc0, 0xdb, 0x43, 0x93, 0x16, 0x01, 0x29, 0x9b, 0x62, 0x3b, 0x02, 0x91, 0x8f, 0x60, 0xae,
0x45, 0x69, 0x29, 0x44, 0xec, 0x0b, 0x09, 0x49, 0x51, 0x67, 0xc5, 0xd9, 0x01, 0xb1, 0xcd, 0xdc,
0x0b, 0xbb, 0x91, 0x10, 0xeb, 0xc7, 0x7d, 0x51, 0x54, 0x15, 0xa0, 0xaa, 0xb0, 0xb6, 0xe1, 0xfa,
0xc2, 0xa1, 0xdb, 0xbb, 0xeb, 0xe5, 0x61, 0xc7, 0xac, 0x2f, 0x55, 0x32, 0xe7, 0x1d, 0x14, 0x2f,
0x59, 0x17, 0x5a, 0x21, 0xed, 0x50, 0x1c, 0xe4, 0xd5, 0x77, 0xf0, 0x55, 0xee, 0xdf, 0x7f, 0x4c,
0x1e, 0x2e, 0x9e, 0x6d, 0x9e, 0x76, 0x69, 0xcd, 0xef, 0x5d, 0x9a, 0x2f, 0xbd, 0xb5, 0x98, 0x31,
0xa1, 0x10, 0x8b, 0xf1, 0x77, 0xad, 0xb3, 0xbb, 0xe7, 0x8a, 0xe6, 0x0b, 0x57, 0x8c, 0x56, 0xc5,
0x85, 0x4c, 0xdd, 0x44, 0xe9, 0x52, 0x13, 0xc4, 0xa4, 0x41, 0xf1, 0x93, 0x14, 0x13, 0x9f, 0x7a,
0x22, 0x8e, 0xf2, 0xad, 0x7e, 0xbd, 0x83, 0xfc, 0x07, 0x32, 0x99, 0x07, 0x1f, 0xdc, 0x77, 0x0e,
0x56, 0x37, 0xf4, 0x9e, 0x98, 0xa6, 0x77, 0xea, 0xf4, 0xfd, 0xa2, 0xca, 0xda, 0x71, 0xe7, 0x42,
0xd3, 0x94, 0x4b, 0xab, 0x8a, 0x8b, 0xbd, 0x94, 0xcf, 0xdb, 0x2f, 0xb4, 0x40, 0xb4, 0x63, 0x33,
0x21, 0x32, 0xd6, 0x9d, 0x0f, 0xae, 0x1b, 0xbb, 0x02, 0x72, 0xa2, 0xf8, 0x33, 0x55, 0x42, 0x22,
0x9e, 0x07, 0x45, 0x81, 0x55, 0x21, 0xef, 0xc0, 0xbe, 0x04, 0xc5, 0xbc, 0x7d, 0xc2, 0xb5, 0xea,
0x11, 0xc7, 0x7c, 0x6e, 0x1b, 0x0d, 0xfd, 0x79, 0xd1, 0x74, 0x91, 0xf1, 0xe4, 0x09, 0xb5, 0x8b,
0x04, 0x88, 0xc6, 0xb7, 0x65, 0xba, 0x47, 0x75, 0x59, 0xe7, 0x4f, 0x3d, 0x96, 0x75, 0x2e, 0x36,
0xbe, 0x2b, 0x5b, 0xe7, 0x99, 0x21, 0x21, 0x1a, 0x61, 0x9a, 0x2e, 0x4a, 0x4a, 0x9e, 0x50, 0x15,
0x04, 0x5d, 0xeb, 0xb1, 0xa9, 0xf5, 0xb1, 0x86, 0x37, 0xa5, 0xcb, 0x52, 0x5c, 0x78, 0x6e, 0x58,
0x48, 0xef, 0x3f, 0x4e, 0x48, 0x27, 0x25, 0xe3, 0xc9, 0x13, 0x6a, 0x17, 0x55, 0x42, 0xc9, 0xa5,
0xa8, 0x30, 0x43, 0x31, 0x29, 0x26, 0x64, 0x6b, 0x33, 0x25, 0xcb, 0xd8, 0x8f, 0xb8, 0xd3, 0x6c,
0xa7, 0x29, 0xa1, 0x55, 0x31, 0x9a, 0x2e, 0xda, 0x6f, 0x36, 0x0c, 0x52, 0x54, 0xf4, 0xe3, 0x20,
0xa9, 0xfa, 0x38, 0xdb, 0x61, 0xca, 0xa3, 0x5c, 0x68, 0x84, 0x69, 0xba, 0xc8, 0x78, 0xf2, 0x44,
0xaf, 0x08, 0x95, 0x90, 0x88, 0x27, 0xb2, 0xf7, 0x54, 0xae, 0x88, 0x25, 0x21, 0xfd, 0xe4, 0x18,
0x61, 0x9a, 0x2e, 0x32, 0x9e, 0x3c, 0xa1, 0x76, 0x6d, 0xac, 0x64, 0x5b, 0x84, 0x72, 0x3d, 0x23,
0xe3, 0xc9, 0x93, 0xcd, 0x44, 0xb6, 0x45, 0x68, 0xcd, 0x33, 0x4c, 0xd7, 0xaa, 0xf1, 0xff, 0x4c,
0x28, 0x1f, 0xfe, 0x00, 0x7b, 0xdc, 0xc2, 0x19, 0xcd, 0xc3, 0x9e, 0x72, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE move_zone_xpm[1] = {{ png, sizeof( png ), "move_zone_xpm" }};
//EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="48"
height="48"
id="svg18859">
<metadata
id="metadata18886">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18861" />
<path
d="M 4,23 22,3"
id="path3376"
style="fill:none;stroke:#009b00;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 26,23 44,3"
id="path3378"
style="opacity:0.7;fill:none;stroke:#009b00;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 4,44 22,24"
id="path3380"
style="opacity:0.7;fill:none;stroke:#009b00;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 26,44 44,24"
id="path3382"
style="opacity:0.7;fill:none;stroke:#009b00;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg18970"
inkscape:version="0.48.4 r9939"
sodipodi:docname="duplicate_footprint.svg">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview18985"
showgrid="true"
inkscape:zoom="1"
inkscape:cx="18.169469"
inkscape:cy="8.9416575"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg18970"
inkscape:object-paths="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3029"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs18972" />
<use
x="0"
y="0"
xlink:href="#g3527"
id="use3537"
transform="translate(0,12)"
width="26"
height="26"
style="opacity:0.75" />
<g
id="g3527"
transform="translate(-1,1)">
<rect
y="2.499999"
x="2.5"
height="7"
width="10"
id="rect3503"
style="fill:none;stroke:#545454;stroke-width:1;stroke-opacity:1" />
<rect
y="1.5"
x="3.5"
height="3"
width="2"
id="rect3505"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
<rect
y="1.5"
x="6.5"
height="3"
width="2"
id="rect3509"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3514"
width="2"
height="3"
x="9.5"
y="1.5" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3516"
width="2"
height="3"
x="3.5"
y="7.5" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3518"
width="2"
height="3"
x="6.5"
y="7.5" />
<rect
y="7.5"
x="9.5"
height="3"
width="2"
id="rect3520"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
</g>
<use
style="opacity:0.75"
height="26"
width="26"
transform="translate(13,12)"
id="use3539"
xlink:href="#g3527"
y="0"
x="0" />
<use
x="0"
y="0"
xlink:href="#g3527"
id="use3559"
transform="translate(13,0)"
width="26"
height="26"
style="opacity:0.75" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="48"
height="48"
id="svg8431">
<metadata
id="metadata8454">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8433" />
<path
d="m 13,4.03125 c -4.95522,0 -8.96875,4.0135285 -8.96875,8.96875 0,4.955221 4.01353,8.96875 8.96875,8.96875 4.955222,0 8.96875,-4.013529 8.96875,-8.96875 C 21.96875,8.0447785 17.955222,4.03125 13,4.03125 z M 13,9 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z"
id="path3763"
style="fill:#008000;fill-opacity:0.69803922;stroke:#008000;stroke-width:2.05555582;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 34.996528,4.034722 c -4.95522,0 -8.96875,4.013529 -8.96875,8.96875 0,4.955221 4.01353,8.968749 8.96875,8.968749 4.955223,0 8.968751,-4.013528 8.968751,-8.968749 0,-4.955221 -4.013528,-8.96875 -8.968751,-8.96875 z m 0,4.96875 c 2.209139,0 4.000001,1.790861 4.000001,4 0,2.209139 -1.790862,4 -4.000001,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z"
id="path9686"
style="opacity:0.7;fill:#a9eba1;fill-opacity:0.69803922;stroke:#008000;stroke-width:2.05555582;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 13,26.03125 c -4.95522,0 -8.96875,4.013529 -8.96875,8.96875 0,4.955221 4.01353,8.96875 8.96875,8.96875 4.955222,0 8.96875,-4.013529 8.96875,-8.96875 0,-4.955221 -4.013528,-8.96875 -8.96875,-8.96875 z M 13,31 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z"
id="path3230"
style="opacity:0.7;fill:#a9eba1;fill-opacity:0.69803922;stroke:#008000;stroke-width:2.05555582;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 34.996528,26.034722 c -4.95522,0 -8.96875,4.013529 -8.96875,8.96875 0,4.955221 4.01353,8.968749 8.96875,8.968749 4.955223,0 8.968751,-4.013528 8.968751,-8.968749 0,-4.955221 -4.013528,-8.96875 -8.968751,-8.96875 z m 0,4.96875 c 2.209139,0 4.000001,1.790861 4.000001,4 0,2.209139 -1.790862,4 -4.000001,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z"
id="path3232"
style="opacity:0.7;fill:#a9eba1;fill-opacity:0.69803922;stroke:#008000;stroke-width:2.05555582;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="26"
height="26"
id="svg18970">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18972">
<mask
id="w">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3301"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="x">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3304"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="q">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3307"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="v">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3310"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="r">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3313"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="u">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3316"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="s">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3319"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="t">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3322"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
</defs>
<g
transform="translate(-1,-2)"
id="g3744">
<path
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
transform="translate(0.5,-1.5)"
id="path3680"
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<path
d="m 12.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 7.4889022,13.488902 C 11.423077,13.335543 12.708024,9.9574012 12.488902,8.4889022"
id="path3736"
style="fill:#000000;stroke:none" />
<path
d="m 7.5,2 0,13"
id="path3676"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 14,8.5 1,8.5"
id="path3678"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 6.5,4.625 C 5.0912245,4.9882125 3.9882125,6.0912245 3.625,7.5 l 2.375,0 0.5,0 0,-0.5 0,-2.375 z"
id="path3733"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="M 11.375,7.5 C 11.011788,6.0912245 9.908776,4.9882125 8.5,4.625 l 0,2.375 0,0.5 0.5,0 2.375,0 z"
id="path3738"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="M 8.5,12.375 C 9.908776,12.011788 11.011788,10.908776 11.375,9.5 L 9,9.5 l -0.5,0 0,0.5 0,2.375 z"
id="path3740"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="m 3.625,9.5 c 0.363212,1.408776 1.466224,2.511788 2.875,2.875 L 6.5,10 6.5,9.5 6,9.5 3.625,9.5 z"
id="path3742"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
</g>
<use
transform="translate(13,0)"
id="use3755"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3744" />
<use
transform="translate(13,13)"
id="use3670"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3744" />
<use
transform="translate(0,13)"
id="use3672"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3744" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="48"
height="48"
id="svg18970">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18972" />
<path
d="m 1,2 0,6 2,0 2,-3 4,0 0,14.5 -3,2 0,1.5 6,0 6,0 0,-1.5 -3,-2 0,-14.5 4,0 2,3 2,0 0,-6 -11,0 z"
id="path19013"
style="fill:#00009b;fill-rule:evenodd" />
<path
d="m 25,2 0,6 2,0 2,-3 4,0 0,14.5 -3,2 0,1.5 6,0 6,0 0,-1.5 -3,-2 0,-14.5 4,0 2,3 2,0 0,-6 -11,0 z"
id="path3308"
style="opacity:0.7;fill:#00009b;fill-rule:evenodd" />
<path
d="m 1,25 0,6 2,0 2,-3 4,0 0,14.5 -3,2 0,1.5 6,0 6,0 0,-1.5 -3,-2 0,-14.5 4,0 2,3 2,0 0,-6 -11,0 z"
id="path3310"
style="opacity:0.7;fill:#00009b;fill-rule:evenodd" />
<path
d="m 25,25 0,6 2,0 2,-3 4,0 0,14.5 -3,2 0,1.5 6,0 6,0 0,-1.5 -3,-2 0,-14.5 4,0 2,3 2,0 0,-6 -11,0 z"
id="path3312"
style="opacity:0.7;fill:#00009b;fill-rule:evenodd" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="26"
height="26"
id="svg18970">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18972">
<mask
id="w">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3301"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="x">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3304"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="q">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3307"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="v">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3310"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="r">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3313"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="u">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3316"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="s">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3319"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="t">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3322"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
</defs>
<g
transform="translate(20,-1.5)"
id="g3939">
<path
d="m -15.5,8 5,0 2.1269625,4.84375"
id="path3917"
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="m -18.5,3 0,10 8.25,0 -1.25,-3.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -8.5,8.5 -8.5,3 z"
id="rect3811"
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
id="path3915"
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
</g>
<use
id="use4178"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3939" />
<use
transform="translate(13,0)"
id="use4180"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3939" />
<use
transform="translate(13,13)"
id="use4182"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3939" />
<use
transform="translate(0,13)"
id="use4184"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3939" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg18970"
inkscape:version="0.48.4 r9939"
sodipodi:docname="duplicate_line.svg">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="996"
id="namedview18985"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="21.793817"
inkscape:cy="19.733911"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
inkscape:current-layer="svg18970"
inkscape:object-paths="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3029"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs18972" />
<g
id="g18103"
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-3.5098229,-2.4696189)">
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
d="m 14.365778,23.401859 c 0.202438,-4.960549 -0.864872,-7.852869 -4.328751,-9.928645 2.506618,4.326299 2.740146,6.262366 2.389978,9.710201 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1"
id="path17320" />
</g>
<g
transform="matrix(0.92443,0,0,1,54.5375,-34.419499)"
id="g18878">
<rect
width="23.798449"
height="3.0000014"
ry="0"
x="-56.832317"
y="36.419498"
id="rect18882"
style="fill:#009b00" />
</g>
<g
id="g3096"
transform="matrix(0.92443,0,0,1,54.5375,-18.419498)"
style="opacity:0.7">
<rect
style="fill:#009b00"
id="rect3098"
y="36.419498"
x="-56.832317"
ry="0"
height="3.0000014"
width="23.798449" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg18970"
inkscape:version="0.48.4 r9939"
sodipodi:docname="duplicate_footprint.svg">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview18985"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="17.037549"
inkscape:cy="12.025341"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg18970"
inkscape:object-paths="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3029"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs18972" />
<use
x="0"
y="0"
xlink:href="#g3527"
id="use3537"
transform="translate(9,11)"
width="26"
height="26"
style="opacity:0.75" />
<g
id="g3527">
<path
transform="matrix(2.5100458,0,0,2.3016337,-3.0200916,-8.6115753)"
sodipodi:open="true"
sodipodi:end="8.3331823"
sodipodi:start="4.5226534"
d="M 1.8770992,6.360044 A 0.65165043,0.65165043 0 1 1 1.6995435,7.578251"
sodipodi:ry="0.65165043"
sodipodi:rx="0.65165043"
sodipodi:cy="7"
sodipodi:cx="2"
id="path3525"
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:0.41604573000000000;stroke-opacity:1"
sodipodi:type="arc" />
<rect
y="3.4999998"
x="1.5"
height="7.9999995"
width="14"
id="rect3503"
style="fill:none;stroke:#545454;stroke-width:1;stroke-opacity:1" />
<rect
y="1.5"
x="3.5"
height="3"
width="2"
id="rect3505"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
<rect
y="1.5"
x="7.5"
height="3"
width="2"
id="rect3509"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3514"
width="2"
height="3"
x="11.5"
y="1.5" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3516"
width="2"
height="3"
x="3.5"
y="10.5" />
<rect
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
id="rect3518"
width="2"
height="3"
x="7.5"
y="10.5" />
<rect
y="10.5"
x="11.5"
height="3"
width="2"
id="rect3520"
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
</g>
<g
id="g18103"
transform="matrix(0.96595582,-0.25870707,0.25870707,0.96595582,0.84350936,-11.031754)">
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1"
id="path17320" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="26"
height="26"
id="svg8431"
inkscape:version="0.48.4 r9939"
sodipodi:docname="duplicate_pad.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview3013"
showgrid="false"
inkscape:zoom="9.0769231"
inkscape:cx="13"
inkscape:cy="12.173729"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg8431" />
<metadata
id="metadata8454">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8433" />
<path
d="m 7.0000002,1.4999999 c -3.0387414,0 -5.5000003,2.4612576 -5.5000003,5.4999999 C 1.4999999,10.038741 3.9612588,12.5 7.0000002,12.5 10.038743,12.5 12.5,10.038741 12.5,6.9999998 12.5,3.9612575 10.038743,1.4999999 7.0000002,1.4999999 z m 0,3.0000001 C 8.354733,4.5 9.5,5.6452668 9.5,7 9.5,8.3547332 8.354733,9.5 7.0000002,9.5 5.6452663,9.5 4.5,8.354733 4.5,6.9999998 4.5,5.6452666 5.6452663,4.5 7.0000002,4.5 z"
id="path3763"
style="fill:#008000;fill-opacity:0.69803922;stroke:#008000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<use
transform="translate(12,12)"
id="use3206"
style="opacity:0.7"
x="0"
y="0"
width="26"
height="26"
xlink:href="#path3763" />
<path
d="M 18.334055,9.5305414 C 16.578714,4.886534 14.749271,4.2773887 10.82266,6.330495 c 4.402043,-0.7545299 4.614505,0.4480843 5.641806,3.757893 l -1.575818,0.450305 3.397949,2.372933 1.569168,-3.8359591 z"
id="path17320"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="26"
height="26"
id="svg18970">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18972">
<mask
id="w">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3301"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="x">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3304"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="q">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3307"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="v">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3310"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="r">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3313"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="u">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3316"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="s">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3319"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="t">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3322"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
</defs>
<g
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-2.5098229,-9.469619)"
id="g18103">
<path
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
id="path17320"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1" />
</g>
<g
transform="translate(-1,0)"
id="g3744">
<path
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
transform="translate(1.5,-1.5)"
id="path3680"
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<path
d="m 13.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 8.4889022,13.488902 C 12.423077,13.335543 13.708024,9.9574012 13.488902,8.4889022"
id="path3736"
style="fill:#000000;stroke:none" />
<path
d="m 8.5,1 0,15"
id="path3676"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 16,8.5 1,8.5"
id="path3678"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="M 7.5,4.625 C 6.0912245,4.9882125 4.9882125,6.0912245 4.625,7.5 l 2.375,0 0.5,0 0,-0.5 0,-2.375 z"
id="path3733"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="M 12.375,7.5 C 12.011788,6.0912245 10.908776,4.9882125 9.5,4.625 l 0,2.375 0,0.5 0.5,0 2.375,0 z"
id="path3738"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="m 9.5,12.375 c 1.408776,-0.363212 2.511788,-1.466224 2.875,-2.875 l -2.375,0 -0.5,0 0,0.5 0,2.375 z"
id="path3740"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<path
d="m 4.625,9.5 c 0.363212,1.408776 1.466224,2.511788 2.875,2.875 L 7.5,10 7.5,9.5 7,9.5 4.625,9.5 z"
id="path3742"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
</g>
<use
transform="translate(10,9)"
id="use3755"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g3744" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg18970"
inkscape:version="0.48.4 r9939"
sodipodi:docname="duplicate_text.svg">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="996"
id="namedview18985"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="13.659451"
inkscape:cy="12.783886"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
inkscape:current-layer="g18103"
inkscape:object-paths="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3029"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs18972" />
<g
style="fill-rule:evenodd"
transform="matrix(1.1098933,0,0,1.075965,-25.392974,-45.041873)"
id="g19009">
<path
style="fill:#00009b"
d="M 1 1 L 1 5 L 2 5 L 4 3 L 6 3 L 6 13 L 4 14 L 4 15 L 7 15 L 8 15 L 11 15 L 11 14 L 9 13 L 9 3 L 11 3 L 13 5 L 14 5 L 14 1 L 8 1 L 7 1 L 1 1 z "
transform="matrix(0.90098751,0,0,0.92939826,22.878752,41.861838)"
id="path19013" />
</g>
<g
id="g18103"
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-2.5098229,-9.469619)">
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1"
id="path17320" />
</g>
<use
x="0"
y="0"
xlink:href="#g19009"
id="use3037"
transform="translate(11,10)"
width="26"
height="26"
style="opacity:0.7" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="26"
height="26"
id="svg18970">
<metadata
id="metadata18987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18972">
<mask
id="w">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3301"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="x">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3304"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="q">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3307"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="v">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3310"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="r">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3313"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="u">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3316"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="s">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3319"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="t">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3322"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
</defs>
<g
transform="translate(20,-1.5)"
id="g3939">
<path
d="m -15.5,8 5,0 2.1269625,4.84375"
id="path3917"
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="m -18.5,3 0,11 8.75,0 -1.75,-4.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -7.5,11 l 0,-8 z"
id="rect3811"
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
id="path3915"
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
</g>
<g
transform="translate(20,-1.5)"
id="g4253">
<path
d="m -15.5,8 5,0 2.1269625,4.84375"
id="path4255"
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
d="m -18.5,3 0,11 8.75,0 -1.75,-4.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -7.5,11 l 0,-8 z"
id="path4257"
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
id="path4259"
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
</g>
<use
transform="translate(12,12)"
id="use4261"
style="opacity:0.75"
x="0"
y="0"
width="26"
height="26"
xlink:href="#g4253" />
<g
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-2.5098229,-7.469619)"
id="g18103">
<path
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
id="path17320"
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="48"
width="48"
version="1.1"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="move_zone.svg">
<metadata
id="metadata66">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1005"
id="namedview64"
showgrid="false"
inkscape:object-nodes="true"
inkscape:zoom="11.313708"
inkscape:cx="10.835114"
inkscape:cy="24.527054"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3043" />
</sodipodi:namedview>
<defs
id="defs4">
<filter
id="c"
height="1.2585"
width="1.2406"
color-interpolation-filters="sRGB"
y="-.12927"
x="-.12029">
<feGaussianBlur
stdDeviation="1.6250782"
id="feGaussianBlur7" />
</filter>
<linearGradient
id="d"
y2="36.848"
gradientUnits="userSpaceOnUse"
x2="41.355"
gradientTransform="matrix(1.4411,0,0,2.9984,-102.04,-72.032)"
y1="32.207"
x1="39.182">
<stop
stop-color="#fff"
offset="0"
id="stop10" />
<stop
stop-color="#afadff"
offset="1"
id="stop12" />
</linearGradient>
<mask
id="t">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3322"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="s">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3319"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="u">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3316"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="r">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3313"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="v">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3310"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="q">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3307"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="x">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3304"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
<mask
id="w">
<rect
style="fill:#ffffff;fill-rule:evenodd"
id="rect3301"
y="-3.7337"
x="-4.6403999"
height="26.091999"
width="25.032" />
</mask>
</defs>
<path
style="fill:#59d421;fill-opacity:1;stroke:#44a118;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 33.5,21.5 -5,5 3,0 0,5 -5,0 0,-3 -5,5 5,5 0,-3 5,0 0,5 -3,0 5,5 5,-5 -3,0 0,-5 5,0 0,3 5,-5 -5,-5 0,3 -5,0 0,-5 3,0 z"
id="path3045"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
<g
id="g3128"
transform="translate(6.75,4)">
<g
id="g3744"
transform="matrix(2,0,0,2,-6.75,-4)">
<path
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-opacity:1"
id="path3680"
transform="translate(1.5,-1.5)"
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke:none"
id="path3736"
d="m 13.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 8.4889022,13.488902 C 12.423077,13.335543 13.708024,9.9574012 13.488902,8.4889022"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3676"
d="m 8.5,1 0,15"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3678"
d="M 16,8.5 1,8.5"
inkscape:connector-curvature="0" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
id="path3738"
d="M 12.625,7.75 C 12.361225,6.2859818 11,4.7050669 9.25,4.375 l 0,3.375 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
id="path3742"
d="M 4.375,9.25 C 4.7271635,11 6.5,12.5 7.75,12.625 l 0,-3.375 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<g
id="g3147"
transform="matrix(0,1,-1,0,17,0)">
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
id="path3143"
d="M 12.625,7.75 C 12.361225,6.2859818 11,4.7050669 9.25,4.375 l 0,3.375 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
id="path3145"
d="M 4.375,9.25 C 4.7271635,11 6.5,12.5 7.75,12.625 l 0,-3.375 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="48"
height="48"
id="svg2">
<metadata
id="metadata66">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs4">
<filter
x="-0.12029"
y="-0.12927"
width="1.2406"
height="1.2585"
color-interpolation-filters="sRGB"
id="c">
<feGaussianBlur
id="feGaussianBlur7"
stdDeviation="1.6250782" />
</filter>
<linearGradient
x1="39.181999"
y1="32.207001"
x2="41.355"
y2="36.848"
id="d"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.4411,0,0,2.9984,-102.04,-72.032)">
<stop
id="stop10"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop12"
style="stop-color:#afadff;stop-opacity:1"
offset="1" />
</linearGradient>
<mask
id="t">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3322"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="s">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3319"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="u">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3316"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="r">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3313"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="v">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3310"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="q">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3307"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="x">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3304"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
<mask
id="w">
<rect
width="25.032"
height="26.091999"
x="-4.6403999"
y="-3.7337"
id="rect3301"
style="fill:#ffffff;fill-rule:evenodd" />
</mask>
</defs>
<g
transform="translate(3.5,3.5)"
id="g3063">
<path
d="m 0,0 0,26 20.5,0 -5.5,-11.5 0.0625,0 C 13.8522,16.592433 11.591084,18 9,18 5.1340066,18 2,14.865993 2,11 2,7.1340066 5.1340066,4 9,4 c 2.591084,0 4.8522,1.4075669 6.0625,3.5 L 20,7.5 26,20 26,0 z"
id="rect3811"
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="matrix(1.6382539,0,0,1.5572263,1.2572207,0.36314149)"
id="g16">
<rect
width="16"
height="16"
x="0"
y="0"
id="rect18"
style="fill-opacity:0" />
</g>
<path
d="m 13,11 4.5,0 6,13"
id="path3765"
style="fill:none;stroke:#808080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 12.5,10 a 3.5,3.5 0 1 1 -7,0 3.5,3.5 0 1 1 7,0 z"
transform="translate(0,1)"
id="path3815"
style="fill:none;stroke:#808080;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
d="m 33.5,21.5 -5,5 3,0 0,5 -5,0 0,-3 -5,5 5,5 0,-3 5,0 0,5 -3,0 5,5 5,-5 -3,0 0,-5 5,0 0,3 5,-5 -5,-5 0,3 -5,0 0,-5 3,0 z"
id="path3045"
style="fill:#59d421;fill-opacity:1;stroke:#44a118;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</svg>
...@@ -97,6 +97,9 @@ double To_User_Unit( EDA_UNITS_T aUnit, double aValue ) ...@@ -97,6 +97,9 @@ double To_User_Unit( EDA_UNITS_T aUnit, double aValue )
case INCHES: case INCHES:
return IU_TO_IN( aValue ); return IU_TO_IN( aValue );
case DEGREES:
return aValue / 10.0f;
default: default:
return aValue; return aValue;
} }
...@@ -246,6 +249,10 @@ wxString StringFromValue( EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol ) ...@@ -246,6 +249,10 @@ wxString StringFromValue( EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol )
stringValue += _( " mm" ); stringValue += _( " mm" );
break; break;
case DEGREES:
stringValue += _( " deg" );
break;
case UNSCALED_UNITS: case UNSCALED_UNITS:
break; break;
} }
...@@ -277,6 +284,11 @@ double From_User_Unit( EDA_UNITS_T aUnit, double aValue ) ...@@ -277,6 +284,11 @@ double From_User_Unit( EDA_UNITS_T aUnit, double aValue )
value = IN_TO_IU( aValue ); value = IN_TO_IU( aValue );
break; break;
case DEGREES:
// Convert to "decidegrees"
value = aValue * 10;
break;
default: default:
case UNSCALED_UNITS: case UNSCALED_UNITS:
value = aValue; value = aValue;
...@@ -286,7 +298,7 @@ double From_User_Unit( EDA_UNITS_T aUnit, double aValue ) ...@@ -286,7 +298,7 @@ double From_User_Unit( EDA_UNITS_T aUnit, double aValue )
} }
int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue ) double DoubleValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue )
{ {
double value; double value;
double dtmp = 0; double dtmp = 0;
...@@ -328,6 +340,8 @@ int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue ) ...@@ -328,6 +340,8 @@ int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue )
// Check the optional unit designator (2 ch significant) // Check the optional unit designator (2 ch significant)
wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() ); wxString unit( buf.Mid( brk_point ).Strip( wxString::leading ).Left( 2 ).Lower() );
if( aUnits == INCHES || aUnits == MILLIMETRES )
{
if( unit == wxT( "in" ) || unit == wxT( "\"" ) ) if( unit == wxT( "in" ) || unit == wxT( "\"" ) )
{ {
aUnits = INCHES; aUnits = INCHES;
...@@ -341,9 +355,24 @@ int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue ) ...@@ -341,9 +355,24 @@ int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue )
aUnits = INCHES; aUnits = INCHES;
dtmp /= 1000; dtmp /= 1000;
} }
}
else if( aUnits == DEGREES )
{
if( unit == wxT( "ra" ) ) // Radians
{
dtmp *= 180.0f / M_PI;
}
}
value = From_User_Unit( aUnits, dtmp ); value = From_User_Unit( aUnits, dtmp );
return value;
}
int ValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue )
{
double value = DoubleValueFromString( aUnits, aTextValue );
return KiROUND( value ); return KiROUND( value );
} }
......
...@@ -64,6 +64,7 @@ void BLOCK_SELECTOR::SetMessageBlock( EDA_DRAW_FRAME* frame ) ...@@ -64,6 +64,7 @@ void BLOCK_SELECTOR::SetMessageBlock( EDA_DRAW_FRAME* frame )
case BLOCK_MOVE: // Move case BLOCK_MOVE: // Move
case BLOCK_PRESELECT_MOVE: // Move with preselection list case BLOCK_PRESELECT_MOVE: // Move with preselection list
case BLOCK_MOVE_EXACT:
msg = _( "Block Move" ); msg = _( "Block Move" );
break; break;
......
...@@ -195,7 +195,8 @@ private: ...@@ -195,7 +195,8 @@ private:
TOOL_MANAGER::TOOL_MANAGER() : TOOL_MANAGER::TOOL_MANAGER() :
m_model( NULL ), m_view( NULL ), m_viewControls( NULL ), m_editFrame( NULL ) m_model( NULL ), m_view( NULL ), m_viewControls( NULL ), m_editFrame( NULL ),
m_undoInhibit( false )
{ {
m_actionMgr = new ACTION_MANAGER( this ); m_actionMgr = new ACTION_MANAGER( this );
...@@ -713,3 +714,23 @@ bool TOOL_MANAGER::isActive( TOOL_BASE* aTool ) ...@@ -713,3 +714,23 @@ bool TOOL_MANAGER::isActive( TOOL_BASE* aTool )
// Just check if the tool is on the active tools stack // Just check if the tool is on the active tools stack
return std::find( m_activeTools.begin(), m_activeTools.end(), aTool->GetId() ) != m_activeTools.end(); return std::find( m_activeTools.begin(), m_activeTools.end(), aTool->GetId() ) != m_activeTools.end();
} }
void TOOL_MANAGER::IncUndoInhibit()
{
m_undoInhibit++;
}
void TOOL_MANAGER::DecUndoInhibit()
{
m_undoInhibit--;
wxASSERT_MSG( m_undoInhibit >= 0, wxT( "Undo inhibit count decremented past zero" ) );
}
bool TOOL_MANAGER::IsUndoInhibited() const
{
return m_undoInhibit > 0;
}
...@@ -197,6 +197,9 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* DC ) ...@@ -197,6 +197,9 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
case BLOCK_SELECT_ITEMS_ONLY: case BLOCK_SELECT_ITEMS_ONLY:
break; break;
case BLOCK_MOVE_EXACT:
break;
} }
if( !nextCmd ) if( !nextCmd )
......
...@@ -148,10 +148,21 @@ wxString& operator <<( wxString& aString, const wxPoint& aPoint ); ...@@ -148,10 +148,21 @@ wxString& operator <<( wxString& aString, const wxPoint& aPoint );
void PutValueInLocalUnits( wxTextCtrl& aTextCtr, int aValue ); void PutValueInLocalUnits( wxTextCtrl& aTextCtr, int aValue );
/** /**
* Return in internal units the value "val" given in inch or mm * Return in internal units the value "val" given in a real unit
* such as "in", "mm" or "deg"
*/ */
double From_User_Unit( EDA_UNITS_T aUnit, double aValue ); double From_User_Unit( EDA_UNITS_T aUnit, double aValue );
/**
* Function DoubleValueFromString
* converts \a aTextValue to a double
* @param aUnits The units of \a aTextValue.
* @param aTextValue A reference to a wxString object containing the string to convert.
* @return A double representing that value in internal units
*/
double DoubleValueFromString( EDA_UNITS_T aUnits, const wxString& aTextValue );
/** /**
* Function ValueFromString * Function ValueFromString
* converts \a aTextValue in \a aUnits to internal units used by the application. * converts \a aTextValue in \a aUnits to internal units used by the application.
......
...@@ -102,6 +102,12 @@ EXTERN_BITMAP( anchor_xpm ) ...@@ -102,6 +102,12 @@ EXTERN_BITMAP( anchor_xpm )
EXTERN_BITMAP( annotate_down_right_xpm ) EXTERN_BITMAP( annotate_down_right_xpm )
EXTERN_BITMAP( annotate_right_down_xpm ) EXTERN_BITMAP( annotate_right_down_xpm )
EXTERN_BITMAP( annotate_xpm ) EXTERN_BITMAP( annotate_xpm )
EXTERN_BITMAP( array_line_xpm )
EXTERN_BITMAP( array_module_xpm )
EXTERN_BITMAP( array_pad_xpm )
EXTERN_BITMAP( array_target_xpm )
EXTERN_BITMAP( array_text_xpm )
EXTERN_BITMAP( array_zone_xpm )
EXTERN_BITMAP( auto_associe_xpm ) EXTERN_BITMAP( auto_associe_xpm )
EXTERN_BITMAP( auto_delete_track_xpm ) EXTERN_BITMAP( auto_delete_track_xpm )
EXTERN_BITMAP( auto_track_width_xpm ) EXTERN_BITMAP( auto_track_width_xpm )
...@@ -174,6 +180,12 @@ EXTERN_BITMAP( drag_segment_withslope_xpm ) ...@@ -174,6 +180,12 @@ EXTERN_BITMAP( drag_segment_withslope_xpm )
EXTERN_BITMAP( drag_track_segment_xpm ) EXTERN_BITMAP( drag_track_segment_xpm )
EXTERN_BITMAP( drc_off_xpm ) EXTERN_BITMAP( drc_off_xpm )
EXTERN_BITMAP( drc_xpm ) EXTERN_BITMAP( drc_xpm )
EXTERN_BITMAP( duplicate_line_xpm )
EXTERN_BITMAP( duplicate_module_xpm )
EXTERN_BITMAP( duplicate_pad_xpm )
EXTERN_BITMAP( duplicate_target_xpm )
EXTERN_BITMAP( duplicate_text_xpm )
EXTERN_BITMAP( duplicate_zone_xpm )
EXTERN_BITMAP( edges_sketch_xpm ) EXTERN_BITMAP( edges_sketch_xpm )
EXTERN_BITMAP( edit_comp_footprint_xpm ) EXTERN_BITMAP( edit_comp_footprint_xpm )
EXTERN_BITMAP( edit_component_xpm ) EXTERN_BITMAP( edit_component_xpm )
...@@ -332,8 +344,10 @@ EXTERN_BITMAP( move_polygon_xpm ) ...@@ -332,8 +344,10 @@ EXTERN_BITMAP( move_polygon_xpm )
EXTERN_BITMAP( move_rectangle_xpm ) EXTERN_BITMAP( move_rectangle_xpm )
EXTERN_BITMAP( move_sheet_xpm ) EXTERN_BITMAP( move_sheet_xpm )
EXTERN_BITMAP( move_text_xpm ) EXTERN_BITMAP( move_text_xpm )
EXTERN_BITMAP( move_target_xpm )
EXTERN_BITMAP( move_track_segment_xpm ) EXTERN_BITMAP( move_track_segment_xpm )
EXTERN_BITMAP( move_track_xpm ) EXTERN_BITMAP( move_track_xpm )
EXTERN_BITMAP( move_zone_xpm )
EXTERN_BITMAP( move_xpm ) EXTERN_BITMAP( move_xpm )
EXTERN_BITMAP( mw_add_gap_xpm ) EXTERN_BITMAP( mw_add_gap_xpm )
EXTERN_BITMAP( mw_add_line_xpm ) EXTERN_BITMAP( mw_add_line_xpm )
......
...@@ -62,6 +62,7 @@ typedef enum { ...@@ -62,6 +62,7 @@ typedef enum {
BLOCK_ZOOM, BLOCK_ZOOM,
BLOCK_ABORT, BLOCK_ABORT,
BLOCK_PRESELECT_MOVE, BLOCK_PRESELECT_MOVE,
BLOCK_MOVE_EXACT,
BLOCK_SELECT_ITEMS_ONLY, BLOCK_SELECT_ITEMS_ONLY,
BLOCK_MIRROR_X, BLOCK_MIRROR_X,
BLOCK_MIRROR_Y BLOCK_MIRROR_Y
......
...@@ -78,6 +78,9 @@ class BOARD_ITEM : public EDA_ITEM ...@@ -78,6 +78,9 @@ class BOARD_ITEM : public EDA_ITEM
protected: protected:
LAYER_ID m_Layer; LAYER_ID m_Layer;
static int getTrailingInt( wxString aStr );
static int getNextNumberInSequence( std::set<int> aSeq, bool aFillSequenceGaps);
public: public:
BOARD_ITEM( BOARD_ITEM* aParent, KICAD_T idtype ) : BOARD_ITEM( BOARD_ITEM* aParent, KICAD_T idtype ) :
...@@ -89,6 +92,16 @@ public: ...@@ -89,6 +92,16 @@ public:
virtual const wxPoint& GetPosition() const = 0; virtual const wxPoint& GetPosition() const = 0;
/**
* Function GetCenter()
*
* This defaults to the same point as returned by GetPosition(), unless
* overridden
*
* @return centre point of the item
*/
virtual const wxPoint GetCenter() const { return GetPosition(); }
virtual void SetPosition( const wxPoint& aPos ) = 0; virtual void SetPosition( const wxPoint& aPos ) = 0;
/** /**
......
...@@ -166,7 +166,8 @@ inline int Mils2mm( double x ) { return KiROUND( x * 25.4 / 1000. ); } ...@@ -166,7 +166,8 @@ inline int Mils2mm( double x ) { return KiROUND( x * 25.4 / 1000. ); }
enum EDA_UNITS_T { enum EDA_UNITS_T {
INCHES = 0, INCHES = 0,
MILLIMETRES = 1, MILLIMETRES = 1,
UNSCALED_UNITS = 2 UNSCALED_UNITS = 2,
DEGREES = 3,
}; };
......
...@@ -158,6 +158,7 @@ enum main_id ...@@ -158,6 +158,7 @@ enum main_id
ID_POPUP_CANCEL_CURRENT_COMMAND, ID_POPUP_CANCEL_CURRENT_COMMAND,
ID_POPUP_CLOSE_CURRENT_TOOL, ID_POPUP_CLOSE_CURRENT_TOOL,
ID_POPUP_MOVE_BLOCK, ID_POPUP_MOVE_BLOCK,
ID_POPUP_MOVE_BLOCK_EXACT,
ID_POPUP_DRAG_BLOCK, ID_POPUP_DRAG_BLOCK,
ID_POPUP_COPY_BLOCK, ID_POPUP_COPY_BLOCK,
ID_POPUP_ROTATE_BLOCK, ID_POPUP_ROTATE_BLOCK,
......
...@@ -301,6 +301,29 @@ public: ...@@ -301,6 +301,29 @@ public:
return actionList; return actionList;
} }
/**
* Increments the undo inhibit counter. This will indicate that tools
* should not create an undo point, as another tool is doing it already,
* and considers that its operation is atomic, even if it calls another one
* (for example a duplicate calls a move)
*/
void IncUndoInhibit();
/**
* Decrements the inhibit counter. An assert is raised if the counter drops
* below zero
*/
void DecUndoInhibit();
/**
* Report if the tool manager has been told at least once that undo
* points should not be created. This can be ignored if the undo point
* is still required.
*
* @return true if undo are inhibited
*/
bool IsUndoInhibited() const;
private: private:
struct TOOL_STATE; struct TOOL_STATE;
typedef std::pair<TOOL_EVENT_LIST, TOOL_STATE_FUNC> TRANSITION; typedef std::pair<TOOL_EVENT_LIST, TOOL_STATE_FUNC> TRANSITION;
...@@ -428,6 +451,9 @@ private: ...@@ -428,6 +451,9 @@ private:
/// Flag saying if the currently processed event should be passed to other tools. /// Flag saying if the currently processed event should be passed to other tools.
bool m_passEvent; bool m_passEvent;
/// Counter of undo inhibitions. When zero, undo is not inhibited
int m_undoInhibit;
}; };
#endif #endif
...@@ -193,6 +193,19 @@ protected: ...@@ -193,6 +193,19 @@ protected:
*/ */
void duplicateZone( wxDC* aDC, ZONE_CONTAINER* aZone ); void duplicateZone( wxDC* aDC, ZONE_CONTAINER* aZone );
/**
* Function moveExact
* Move the selected item exactly
*/
void moveExact();
/**
* Function duplicateItems
* Duplicate selected item if possible and start a move
* @param aIncrement increment the item number if appropriate
*/
void duplicateItem( bool aIncrement );
// protected so that PCB::IFACE::CreateWindow() is the only factory. // protected so that PCB::IFACE::CreateWindow() is the only factory.
PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ); PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
...@@ -459,6 +472,15 @@ public: ...@@ -459,6 +472,15 @@ public:
*/ */
int OnHotkeyCopyItem(); int OnHotkeyCopyItem();
/**
* Function OnHotkeyDuplicateOrArrayItem
* Duplicate an item (optionally incrementing if necessary and possible)
* or invoke array dialog and create an array
* @param aIdCommand = the hotkey command id
* @return true if item duplicated or arrayed
*/
bool OnHotkeyDuplicateOrArrayItem( int aIdCommand );
/** /**
* Function OnHotkeyMoveItem * Function OnHotkeyMoveItem
* Moves or drag the item (footprint, track, text .. ) found under the mouse cursor * Moves or drag the item (footprint, track, text .. ) found under the mouse cursor
......
...@@ -46,6 +46,8 @@ set( PCBNEW_DIALOGS ...@@ -46,6 +46,8 @@ set( PCBNEW_DIALOGS
dialogs/dialog_cleaning_options.cpp dialogs/dialog_cleaning_options.cpp
dialogs/dialog_copper_zones.cpp dialogs/dialog_copper_zones.cpp
dialogs/dialog_copper_zones_base.cpp dialogs/dialog_copper_zones_base.cpp
dialogs/dialog_create_array.cpp
dialogs/dialog_create_array_base.cpp
dialogs/dialog_design_rules.cpp dialogs/dialog_design_rules.cpp
dialogs/dialog_design_rules_base.cpp dialogs/dialog_design_rules_base.cpp
dialogs/dialog_dimension_editor_base.cpp dialogs/dialog_dimension_editor_base.cpp
...@@ -104,6 +106,8 @@ set( PCBNEW_DIALOGS ...@@ -104,6 +106,8 @@ set( PCBNEW_DIALOGS
dialogs/dialog_pcb_text_properties_base.cpp dialogs/dialog_pcb_text_properties_base.cpp
dialogs/dialog_pns_settings.cpp dialogs/dialog_pns_settings.cpp
dialogs/dialog_pns_settings_base.cpp dialogs/dialog_pns_settings_base.cpp
dialogs/dialog_move_exact.cpp
dialogs/dialog_move_exact_base.cpp
dialogs/dialog_non_copper_zones_properties.cpp dialogs/dialog_non_copper_zones_properties.cpp
dialogs/dialog_non_copper_zones_properties_base.cpp dialogs/dialog_non_copper_zones_properties_base.cpp
dialogs/dialog_pad_properties.cpp dialogs/dialog_pad_properties.cpp
......
...@@ -53,14 +53,19 @@ ...@@ -53,14 +53,19 @@
#include <class_dimension.h> #include <class_dimension.h>
#include <class_edge_mod.h> #include <class_edge_mod.h>
#include <dialogs/dialog_move_exact.h>
#define BLOCK_COLOR BROWN #define BLOCK_COLOR BROWN
// Functions defined here, but used also in other files // Functions defined here, but used also in other files
// These 2 functions are used in modedit to rotate or mirror the whole footprint // These 3 functions are used in modedit to rotate, mirror or move the
// so they are called with force_all = true // whole footprint so they are called with force_all = true
void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all = false ); void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all = false );
void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all = false ); void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all = false );
void MoveMarkedItemsExactly( MODULE* module, const wxPoint& centre,
const wxPoint& translation, double rotation,
bool force_all = false );
// Local functions: // Local functions:
static void DrawMovingBlockOutlines( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, static void DrawMovingBlockOutlines( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition,
...@@ -166,6 +171,26 @@ bool FOOTPRINT_EDIT_FRAME::HandleBlockEnd( wxDC* DC ) ...@@ -166,6 +171,26 @@ bool FOOTPRINT_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
break; break;
case BLOCK_MOVE_EXACT:
itemsCount = MarkItemsInBloc( currentModule, GetScreen()->m_BlockLocate );
if( itemsCount )
{
wxPoint translation;
double rotation = 0;
DIALOG_MOVE_EXACT dialog( this, translation, rotation );
int ret = dialog.ShowModal();
if( ret == DIALOG_MOVE_EXACT::MOVE_OK )
{
SaveCopyInUndoList( currentModule, UR_MODEDIT );
const wxPoint blockCentre = GetScreen()->m_BlockLocate.Centre();
MoveMarkedItemsExactly( currentModule, blockCentre, translation, rotation );
}
}
break;
case BLOCK_PRESELECT_MOVE: // Move with preselection list case BLOCK_PRESELECT_MOVE: // Move with preselection list
nextcmd = true; nextcmd = true;
m_canvas->SetMouseCaptureCallback( DrawMovingBlockOutlines ); m_canvas->SetMouseCaptureCallback( DrawMovingBlockOutlines );
...@@ -194,7 +219,6 @@ bool FOOTPRINT_EDIT_FRAME::HandleBlockEnd( wxDC* DC ) ...@@ -194,7 +219,6 @@ bool FOOTPRINT_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
RotateMarkedItems( currentModule, GetScreen()->m_BlockLocate.Centre() ); RotateMarkedItems( currentModule, GetScreen()->m_BlockLocate.Centre() );
break; break;
case BLOCK_MIRROR_X: case BLOCK_MIRROR_X:
case BLOCK_MIRROR_Y: case BLOCK_MIRROR_Y:
case BLOCK_FLIP: // mirror case BLOCK_FLIP: // mirror
...@@ -706,6 +730,78 @@ void ClearMarkItems( MODULE* module ) ...@@ -706,6 +730,78 @@ void ClearMarkItems( MODULE* module )
} }
void MoveMarkedItemsExactly( MODULE* module, const wxPoint& centre,
const wxPoint& translation,
double rotation, bool force_all )
{
if( module == NULL )
return;
if( module->Reference().IsSelected() || force_all )
{
module->Reference().RotateTransformWithModule( centre, rotation );
module->Reference().MoveTransformWithModule( translation );
}
if( module->Value().IsSelected() || force_all )
{
module->Value().RotateTransformWithModule( centre, rotation );
module->Value().MoveTransformWithModule( translation );
}
D_PAD* pad = module->Pads();
for( ; pad != NULL; pad = pad->Next() )
{
if( !pad->IsSelected() && !force_all )
continue;
// rotate about centre point,
wxPoint newPos = pad->GetPosition();
RotatePoint( &newPos, centre, rotation );
// shift and update
newPos += translation;
pad->SetPosition( newPos );
pad->SetPos0( newPos );
// finally apply rotation to the pad itself
pad->Rotate( newPos, rotation );
}
EDA_ITEM* item = module->GraphicalItems();
for( ; item != NULL; item = item->Next() )
{
if( !item->IsSelected() && !force_all )
continue;
switch( item->Type() )
{
case PCB_MODULE_TEXT_T:
{
TEXTE_MODULE* text = static_cast<TEXTE_MODULE*>( item );
text->RotateTransformWithModule( centre, rotation );
text->MoveTransformWithModule( translation );
break;
}
case PCB_MODULE_EDGE_T:
{
EDGE_MODULE* em = static_cast<EDGE_MODULE*>( item );
em->Rotate( centre, rotation );
em->Move( translation );
break;
}
default:
;
}
}
ClearMarkItems( module );
}
/* Mark items inside rect. /* Mark items inside rect.
* Items are inside rect when an end point is inside rect * Items are inside rect when an end point is inside rect
*/ */
......
...@@ -54,6 +54,10 @@ ...@@ -54,6 +54,10 @@
#include <class_track.h> #include <class_track.h>
#include <class_zone.h> #include <class_zone.h>
#include <class_marker_pcb.h> #include <class_marker_pcb.h>
#include <class_drawsegment.h>
#include <class_pcb_text.h>
#include <class_mire.h>
#include <class_dimension.h>
/* This is an odd place for this, but CvPcb won't link if it is /* This is an odd place for this, but CvPcb won't link if it is
...@@ -2614,6 +2618,131 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2614,6 +2618,131 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
} }
BOARD_ITEM* BOARD::DuplicateAndAddItem( const BOARD_ITEM* aItem,
bool aIncrementReferences )
{
BOARD_ITEM* new_item = NULL;
switch( aItem->Type() )
{
case PCB_MODULE_T:
{
MODULE* new_module = new MODULE( *static_cast<const MODULE*>( aItem ) );
if( aIncrementReferences )
{
// Take the next available module number
new_module->IncrementReference( true );
}
m_Modules.PushBack( new_module );
new_item = new_module;
break;
}
case PCB_TEXT_T:
{
const TEXTE_PCB* old_text = static_cast<const TEXTE_PCB*>( aItem );
TEXTE_PCB* new_text = new TEXTE_PCB( *old_text );
m_Drawings.PushBack( new_text );
new_item = new_text;
break;
}
case PCB_LINE_T:
{
DRAWSEGMENT* new_edge = new DRAWSEGMENT(
*static_cast<const DRAWSEGMENT*>(aItem) );
m_Drawings.PushBack( new_edge );
new_item = new_edge;
break;
}
case PCB_TRACE_T:
{
TRACK* new_track = new TRACK(
*static_cast<const TRACK*>(aItem) );
m_Track.PushBack( new_track );
new_item = new_track;
break;
}
case PCB_ZONE_AREA_T:
{
ZONE_CONTAINER* new_zone = new ZONE_CONTAINER(
*static_cast<const ZONE_CONTAINER*>(aItem) );
m_ZoneDescriptorList.push_back( new_zone );
new_item = new_zone;
break;
}
case PCB_TARGET_T:
{
PCB_TARGET* new_target = new PCB_TARGET(
*static_cast<const PCB_TARGET*>(aItem) );
m_Drawings.PushBack( new_target );
new_item = new_target;
break;
}
case PCB_DIMENSION_T:
{
DIMENSION* new_dim = new DIMENSION(
*static_cast<const DIMENSION*>(aItem) );
m_Drawings.PushBack( new_dim );
new_item = new_dim;
break;
}
default:
// Un-handled item for duplication
wxASSERT_MSG( false, "Duplication not supported for items of class "
+ aItem->GetClass() );
break;
}
return new_item;
}
wxString BOARD::GetNextModuleReferenceWithPrefix( const wxString& aPrefix,
bool aFillSequenceGaps )
{
wxString nextRef;
std::set<int> usedNumbers;
for( MODULE* module = m_Modules; module; module = module->Next() )
{
const wxString ref = module->GetReference();
wxString remainder;
// ONly interested in modules with the right prefix
if( !ref.StartsWith( aPrefix, &remainder ) )
continue;
// the suffix must be a number
if ( !remainder.IsNumber() )
continue;
long number;
if( remainder.ToCLong( &number ) )
usedNumbers.insert( number );
}
int nextNum = 1;
if( usedNumbers.size() )
{
nextNum = getNextNumberInSequence( usedNumbers, aFillSequenceGaps );
nextRef = wxString::Format( wxT( "%s%i" ), aPrefix, nextNum );
}
return nextRef;
}
/* Extracts the board outlines and build a closed polygon /* Extracts the board outlines and build a closed polygon
* from lines, arcs and circle items on edge cut layer * from lines, arcs and circle items on edge cut layer
* Any closed outline inside the main outline is a hole * Any closed outline inside the main outline is a hole
......
...@@ -301,6 +301,16 @@ public: ...@@ -301,6 +301,16 @@ public:
*/ */
BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem ); BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem );
BOARD_ITEM* DuplicateAndAddItem( const BOARD_ITEM* aItem,
bool aIncrementReferences );
/**
* Function GetNextModuleReferenceWithPrefix
* Get the next available module reference with this prefix
*/
wxString GetNextModuleReferenceWithPrefix( const wxString& aPrefix,
bool aFillSequenceGaps );
/** /**
* Function GetRatsnest() * Function GetRatsnest()
* returns list of missing connections between components/tracks. * returns list of missing connections between components/tracks.
......
...@@ -195,3 +195,51 @@ void BOARD_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const ...@@ -195,3 +195,51 @@ void BOARD_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
aCount = 1; aCount = 1;
aLayers[0] = m_Layer; aLayers[0] = m_Layer;
} }
int BOARD_ITEM::getTrailingInt( wxString aStr )
{
int number = 0;
int base = 1;
// Trim and extract the trailing numeric part
int index = aStr.Len() - 1;
while( index >= 0 )
{
const char chr = aStr.GetChar( index );
if( chr < '0' || chr > '9' )
break;
number += ( chr - '0' ) * base;
base *= 10;
index--;
}
return number;
}
int BOARD_ITEM::getNextNumberInSequence( std::set<int> aSeq, bool aFillSequenceGaps)
{
// By default go to the end of the sequence
int candidate = *aSeq.end();
// Filling in gaps in pad numbering
if( aFillSequenceGaps )
{
// start at the beginning
candidate = *aSeq.begin();
for( std::set<int>::iterator it = aSeq.begin(),
itEnd = aSeq.end(); it != itEnd; ++it )
{
if( *it - candidate > 1 )
break;
candidate = *it;
}
}
candidate++;
return candidate;
}
...@@ -94,10 +94,41 @@ void DRAWSEGMENT::Copy( DRAWSEGMENT* source ) ...@@ -94,10 +94,41 @@ void DRAWSEGMENT::Copy( DRAWSEGMENT* source )
void DRAWSEGMENT::Rotate( const wxPoint& aRotCentre, double aAngle ) void DRAWSEGMENT::Rotate( const wxPoint& aRotCentre, double aAngle )
{ {
RotatePoint( &m_Start, aRotCentre, aAngle ); switch( m_Shape )
RotatePoint( &m_End, aRotCentre, aAngle ); {
} case S_ARC:
case S_SEGMENT:
case S_CIRCLE:
// these can all be done by just rotating the start and end points
RotatePoint( &m_Start, aRotCentre, aAngle);
RotatePoint( &m_End, aRotCentre, aAngle);
break;
case S_POLYGON:
for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
{
RotatePoint( &m_PolyPoints[ii], aRotCentre, aAngle);
}
break;
case S_CURVE:
RotatePoint( &m_Start, aRotCentre, aAngle);
RotatePoint( &m_End, aRotCentre, aAngle);
for( unsigned int ii = 0; ii < m_BezierPoints.size(); ii++ )
{
RotatePoint( &m_BezierPoints[ii], aRotCentre, aAngle);
}
break;
case S_RECT:
default:
// un-handled edge transform
wxASSERT_MSG( false, wxT( "DRAWSEGMENT::Rotate not implemented for "
+ ShowShape( m_Shape ) ) );
break;
}
};
void DRAWSEGMENT::Flip( const wxPoint& aCentre ) void DRAWSEGMENT::Flip( const wxPoint& aCentre )
{ {
...@@ -112,6 +143,37 @@ void DRAWSEGMENT::Flip( const wxPoint& aCentre ) ...@@ -112,6 +143,37 @@ void DRAWSEGMENT::Flip( const wxPoint& aCentre )
SetLayer( FlipLayer( GetLayer() ) ); SetLayer( FlipLayer( GetLayer() ) );
} }
const wxPoint DRAWSEGMENT::GetCenter() const
{
wxPoint c;
switch( m_Shape )
{
case S_ARC:
case S_CIRCLE:
c = m_Start;
break;
case S_SEGMENT:
// Midpoint of the line
c = ( GetStart() + GetEnd() ) / 2;
break;
case S_POLYGON:
case S_RECT:
case S_CURVE:
c = GetBoundingBox().Centre();
break;
default:
wxASSERT_MSG( false, "DRAWSEGMENT::GetCentre not implemented for shape"
+ ShowShape( GetShape() ) );
break;
}
return c;
}
const wxPoint DRAWSEGMENT::GetArcEnd() const const wxPoint DRAWSEGMENT::GetArcEnd() const
{ {
wxPoint endPoint; // start of arc wxPoint endPoint; // start of arc
......
...@@ -117,7 +117,7 @@ public: ...@@ -117,7 +117,7 @@ public:
// m_Start, m_End, and m_Angle. // m_Start, m_End, and m_Angle.
// No Set...() function for these attributes. // No Set...() function for these attributes.
const wxPoint& GetCenter() const { return m_Start; } const wxPoint GetCenter() const; //override
const wxPoint& GetArcStart() const { return m_End; } const wxPoint& GetArcStart() const { return m_End; }
const wxPoint GetArcEnd() const; const wxPoint GetArcEnd() const;
......
...@@ -1131,3 +1131,122 @@ void MODULE::SetOrientation( double newangle ) ...@@ -1131,3 +1131,122 @@ void MODULE::SetOrientation( double newangle )
CalculateBoundingBox(); CalculateBoundingBox();
} }
BOARD_ITEM* MODULE::DuplicateAndAddItem( const BOARD_ITEM* aItem,
bool aIncrementPadNumbers )
{
BOARD_ITEM* new_item = NULL;
switch( aItem->Type() )
{
case PCB_PAD_T:
{
D_PAD* new_pad = new D_PAD( *static_cast<const D_PAD*>( aItem ) );
if( aIncrementPadNumbers )
{
// Take the next available pad number
new_pad->IncrementPadName( true, true );
}
Pads().PushBack( new_pad );
new_item = new_pad;
break;
}
case PCB_MODULE_TEXT_T:
{
const TEXTE_MODULE* old_text = static_cast<const TEXTE_MODULE*>( aItem );
// do not duplicate value or reference fields
// (there can only be one of each)
if( old_text->GetType() == TEXTE_MODULE::TEXT_is_DIVERS )
{
TEXTE_MODULE* new_text = new TEXTE_MODULE( *old_text );
GraphicalItems().PushBack( new_text );
new_item = new_text;
}
break;
}
case PCB_MODULE_EDGE_T:
{
EDGE_MODULE* new_edge = new EDGE_MODULE(
*static_cast<const EDGE_MODULE*>(aItem) );
GraphicalItems().PushBack( new_edge );
new_item = new_edge;
break;
}
case PCB_MODULE_T:
// Ignore the module itself
break;
default:
// Un-handled item for duplication
wxASSERT_MSG( false, "Duplication not supported for items of class "
+ aItem->GetClass() );
break;
}
return new_item;
}
wxString MODULE::GetNextPadName( bool aFillSequenceGaps ) const
{
std::set<int> usedNumbers;
// Create a set of used pad numbers
for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
{
int padNumber = getTrailingInt( pad->GetPadName() );
usedNumbers.insert( padNumber );
}
const int nextNum = getNextNumberInSequence( usedNumbers, aFillSequenceGaps );
return wxString::Format( wxT( "%i" ), nextNum );
}
wxString MODULE::GetReferencePrefix() const
{
wxString prefix = GetReference();
int strIndex = prefix.length() - 1;
while( strIndex >= 0 )
{
const wxUniChar chr = prefix.GetChar( strIndex );
// numeric suffix
if( chr >= '0' && chr <= '9' )
break;
strIndex--;
}
prefix = prefix.Mid( 0, strIndex );
return prefix;
}
bool MODULE::IncrementReference( bool aFillSequenceGaps )
{
BOARD* board = GetBoard();
if( !board )
return false;
bool success = false;
const wxString prefix = GetReferencePrefix();
const wxString newReference = board->GetNextModuleReferenceWithPrefix(
prefix, aFillSequenceGaps );
if( !newReference.IsEmpty() )
{
SetReference( newReference );
success = true;
}
return success;
}
...@@ -405,6 +405,15 @@ public: ...@@ -405,6 +405,15 @@ public:
m_Reference->SetText( aReference ); m_Reference->SetText( aReference );
} }
/**
* Function GetReference prefix
* Gets the alphabetic prefix of the module reference - e.g.
* R1 -> R
* IC34 -> IC
* @return the reference prefix (may be empty)
*/
wxString GetReferencePrefix() const;
/** /**
* Function GetValue * Function GetValue
* @return const wxString& - the value text. * @return const wxString& - the value text.
...@@ -431,6 +440,17 @@ public: ...@@ -431,6 +440,17 @@ public:
TEXTE_MODULE& Value() const { return *m_Value; } TEXTE_MODULE& Value() const { return *m_Value; }
TEXTE_MODULE& Reference() const { return *m_Reference; } TEXTE_MODULE& Reference() const { return *m_Reference; }
/**
* Function INcrementReference
* Increments the module's reference, if possible. A reference with
* a numerical suffix and an optional alphabetical prefix can be
* incremented: "A1" and "1" can be, "B" can't.
*
* @param aFillSequenceGaps if true, the next reference in a sequence
* like A1,A3,A4 will be A2. If false, it will be A5.
* @return true if the reference was incremented.
*/
bool IncrementReference( bool aFillSequenceGaps );
/** /**
* Function FindPadByName * Function FindPadByName
...@@ -462,6 +482,16 @@ public: ...@@ -462,6 +482,16 @@ public:
*/ */
unsigned GetPadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T( INCLUDE_NPTH ) ) const; unsigned GetPadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T( INCLUDE_NPTH ) ) const;
/**
* Function GetNextPadName
* returns the next available pad name in the module
*
* @param aFillSequenceGaps true if the numbering should "fill in" gaps in
* the sequence, else return the highest value + 1
* @return the next available pad name
*/
wxString GetNextPadName( bool aFillSequenceGaps ) const;
double GetArea() const { return m_Surface; } double GetArea() const { return m_Surface; }
time_t GetLink() const { return m_Link; } time_t GetLink() const { return m_Link; }
...@@ -473,6 +503,14 @@ public: ...@@ -473,6 +503,14 @@ public:
int GetPlacementCost90() const { return m_CntRot90; } int GetPlacementCost90() const { return m_CntRot90; }
void SetPlacementCost90( int aCost ) { m_CntRot90 = aCost; } void SetPlacementCost90( int aCost ) { m_CntRot90 = aCost; }
/**
* Function DuplicateAndAddItem
* Duplicate a given item within the module
* @return the new item, or NULL if the item could not be duplicated
*/
BOARD_ITEM* DuplicateAndAddItem( const BOARD_ITEM* item,
bool aIncrementPadNumbers );
/** /**
* Function Add3DModel * Function Add3DModel
* adds \a a3DModel definition to the end of the 3D model list. * adds \a a3DModel definition to the end of the 3D model list.
......
...@@ -408,6 +408,15 @@ void D_PAD::SetPadName( const wxString& name ) ...@@ -408,6 +408,15 @@ void D_PAD::SetPadName( const wxString& name )
} }
void D_PAD::IncrementPadName( bool aSkipUnconnectable, bool aFillSequenceGaps )
{
bool skip = aSkipUnconnectable && ( GetAttribute() == PAD_HOLE_NOT_PLATED );
if( !skip )
SetPadName( GetParent()->GetNextPadName( aFillSequenceGaps ) );
}
void D_PAD::Copy( D_PAD* source ) void D_PAD::Copy( D_PAD* source )
{ {
if( source == NULL ) if( source == NULL )
......
...@@ -103,6 +103,15 @@ public: ...@@ -103,6 +103,15 @@ public:
void SetPadName( const wxString& name ); // Change pad name void SetPadName( const wxString& name ); // Change pad name
const wxString GetPadName() const; const wxString GetPadName() const;
/**
* Function IncrementPadName
*
* Increments the pad name to the next available name in the module.
*
* @param aSkipUnconnectable skips any pads that are not connectable (for example NPTH)
*/
void IncrementPadName( bool aSkipUnconnectable, bool aFillSequenceGaps );
bool PadNameEqual( const D_PAD* other ) const bool PadNameEqual( const D_PAD* other ) const
{ {
return m_NumPadName == other->m_NumPadName; // hide tricks behind sensible API return m_NumPadName == other->m_NumPadName; // hide tricks behind sensible API
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __DIALOG_CREATE_ARRAY_BASE_H__
#define __DIALOG_CREATE_ARRAY_BASE_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class DIALOG_SHIM;
#include "dialog_shim.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/radiobox.h>
#include <wx/gbsizer.h>
#include <wx/checkbox.h>
#include <wx/choice.h>
#include <wx/sizer.h>
#include <wx/panel.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/notebook.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
#define wxID_DIALOG_CREATE_ARRAY 1000
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_CREATE_ARRAY_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_CREATE_ARRAY_BASE : public DIALOG_SHIM
{
private:
protected:
wxNotebook* m_gridTypeNotebook;
wxPanel* m_gridPanel;
wxStaticText* m_labelNx;
wxTextCtrl* m_entryNx;
wxStaticText* m_labelNy;
wxTextCtrl* m_entryNy;
wxStaticText* m_labelDx;
wxTextCtrl* m_entryDx;
wxStaticText* m_unitLabelDx;
wxStaticText* m_labelDy;
wxTextCtrl* m_entryDy;
wxStaticText* m_unitLabelDy;
wxStaticText* m_labelOffsetX;
wxTextCtrl* m_entryOffsetX;
wxStaticText* m_unitLabelOffsetX;
wxStaticText* m_labelOffsetY;
wxTextCtrl* m_entryOffsetY;
wxStaticText* m_unitLabelOffsetY;
wxStaticText* m_labelStagger;
wxTextCtrl* m_entryStagger;
wxRadioBox* m_radioBoxGridStaggerType;
wxStaticText* m_labelGridStaggerType;
wxRadioBox* m_radioBoxGridNumberingAxis;
wxCheckBox* m_checkBoxGridReverseNumbering;
wxCheckBox* m_checkBoxGridRestartNumbering;
wxRadioBox* m_radioBoxGridNumberingScheme;
wxStaticText* m_labelPriAxisNumbering;
wxChoice* m_choicePriAxisNumbering;
wxStaticText* m_labelSecAxisNumbering;
wxChoice* m_choiceSecAxisNumbering;
wxStaticText* m_labelGridNumberingOffset;
wxTextCtrl* m_entryGridPriNumberingOffset;
wxTextCtrl* m_entryGridSecNumberingOffset;
wxPanel* m_circularPanel;
wxStaticText* m_labelCentreX;
wxTextCtrl* m_entryCentreX;
wxStaticText* m_unitLabelCentreX;
wxStaticText* m_labelCentreY;
wxTextCtrl* m_entryCentreY;
wxStaticText* m_unitLabelCentreY;
wxStaticText* m_labelCircRadius;
wxStaticText* m_labelCircRadiusValue;
wxStaticText* m_labelCircAngle;
wxTextCtrl* m_entryCircAngle;
wxStaticText* m_unitLabelCircAngle;
wxStaticText* m_labelCircCount;
wxTextCtrl* m_entryCircCount;
wxStaticText* m_labelCircRotate;
wxCheckBox* m_entryRotateItemsCb;
wxCheckBox* m_checkBoxCircRestartNumbering;
wxStaticText* m_labelCircNumbering;
wxChoice* m_choiceCircNumberingType;
wxStaticText* m_labelCircNumStart;
wxTextCtrl* m_entryCircNumberingStart;
wxStdDialogButtonSizer* m_stdButtons;
wxButton* m_stdButtonsOK;
wxButton* m_stdButtonsCancel;
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
virtual void OnParameterChanged( wxCommandEvent& event ) { event.Skip(); }
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID id = wxID_DIALOG_CREATE_ARRAY, const wxString& title = _("Create array"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 576,528 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_CREATE_ARRAY_BASE();
};
#endif //__DIALOG_CREATE_ARRAY_BASE_H__
This diff is collapsed.
This diff is collapsed.
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 John Beard, john.j.beard@gmail.com
* Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __DIALOG_MOVE_EXACT__
#define __DIALOG_MOVE_EXACT__
// Include the wxFormBuider header base:
#include <vector>
#include <dialog_move_exact_base.h>
class DIALOG_MOVE_EXACT : public DIALOG_MOVE_EXACT_BASE
{
private:
wxPoint& m_translation;
double& m_rotation;
public:
enum MOVE_EDIT_T
{
MOVE_ABORT, ///< if not changed or error
MOVE_OK, ///< if successfully changed
};
// Constructor and destructor
DIALOG_MOVE_EXACT( PCB_BASE_FRAME* aParent, wxPoint& translation,
double& rotation );
~DIALOG_MOVE_EXACT();
private:
void OnTextFocusLost( wxFocusEvent& event );
void OnPolarChanged( wxCommandEvent& event );
void OnClear( wxCommandEvent& event );
void OnCancelClick( wxCommandEvent& event );
void OnOkClick( wxCommandEvent& event );
void ToPolarDeg( double x, double y, double& r, double& q );
bool GetTranslationInIU ( wxPoint& val, bool polar );
/**
* Persistent dialog options
*/
struct MOVE_EXACT_OPTIONS
{
bool polarCoords;
double entry1;
double entry2;
double entryRotation;
MOVE_EXACT_OPTIONS():
polarCoords(false),
entry1(0),
entry2(0),
entryRotation(0)
{
}
};
// persistent settings
static MOVE_EXACT_OPTIONS m_options;
};
#endif // __DIALOG_MOVE_EXACT__
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -108,6 +108,11 @@ static EDA_HOTKEY HkEditBoardItem( wxT( "Edit Item" ), HK_EDIT_ITEM, 'E' ); ...@@ -108,6 +108,11 @@ static EDA_HOTKEY HkEditBoardItem( wxT( "Edit Item" ), HK_EDIT_ITEM, 'E' );
static EDA_HOTKEY HkFlipItem( wxT( "Flip Item" ), HK_FLIP_ITEM, 'F' ); static EDA_HOTKEY HkFlipItem( wxT( "Flip Item" ), HK_FLIP_ITEM, 'F' );
static EDA_HOTKEY HkRotateItem( wxT( "Rotate Item" ), HK_ROTATE_ITEM, 'R' ); static EDA_HOTKEY HkRotateItem( wxT( "Rotate Item" ), HK_ROTATE_ITEM, 'R' );
static EDA_HOTKEY HkMoveItem( wxT( "Move Item" ), HK_MOVE_ITEM, 'M' ); static EDA_HOTKEY HkMoveItem( wxT( "Move Item" ), HK_MOVE_ITEM, 'M' );
static EDA_HOTKEY HkMoveItemExact( wxT( "Move Item Exactly" ), HK_MOVE_ITEM_EXACT, 'M' + GR_KB_CTRL );
static EDA_HOTKEY HkDuplicateItem( wxT( "Duplicate Item" ), HK_DUPLICATE_ITEM, 'D' + GR_KB_CTRL );
static EDA_HOTKEY HkDuplicateItemAndIncrement( wxT( "Duplicate Item and Increment" ),
HK_DUPLICATE_ITEM_AND_INCREMENT, 'D' + GR_KB_SHIFTCTRL );
static EDA_HOTKEY HkCreateArray( wxT( "Create Array" ), HK_CREATE_ARRAY, 'N' + GR_KB_CTRL );
static EDA_HOTKEY HkCopyItem( wxT( "Copy Item" ), HK_COPY_ITEM, 'C' ); static EDA_HOTKEY HkCopyItem( wxT( "Copy Item" ), HK_COPY_ITEM, 'C' );
static EDA_HOTKEY HkDragFootprint( wxT( "Drag Item" ), HK_DRAG_ITEM, 'G' ); static EDA_HOTKEY HkDragFootprint( wxT( "Drag Item" ), HK_DRAG_ITEM, 'G' );
static EDA_HOTKEY HkGetAndMoveFootprint( wxT( "Get and Move Footprint" ), HK_GET_AND_MOVE_FOOTPRINT, 'T' ); static EDA_HOTKEY HkGetAndMoveFootprint( wxT( "Get and Move Footprint" ), HK_GET_AND_MOVE_FOOTPRINT, 'T' );
...@@ -277,7 +282,9 @@ EDA_HOTKEY* board_edit_Hotkey_List[] = ...@@ -277,7 +282,9 @@ EDA_HOTKEY* board_edit_Hotkey_List[] =
&HkPlaceItem, &HkCopyItem, &HkPlaceItem, &HkCopyItem,
&HkMoveItem, &HkMoveItem,
&HkFlipItem, &HkFlipItem,
&HkRotateItem, &HkDragFootprint, &HkRotateItem, &HkMoveItemExact,
&HkDuplicateItem, &HkDuplicateItemAndIncrement, &HkCreateArray,
&HkDragFootprint,
&HkGetAndMoveFootprint, &HkLock_Unlock_Footprint, &HkSavefile, &HkSavefileAs, &HkGetAndMoveFootprint, &HkLock_Unlock_Footprint, &HkSavefile, &HkSavefileAs,
&HkLoadfile, &HkFindItem, &HkEditBoardItem, &HkLoadfile, &HkFindItem, &HkEditBoardItem,
&HkSwitch2CopperLayer, &HkSwitch2InnerLayer1, &HkSwitch2CopperLayer, &HkSwitch2InnerLayer1,
...@@ -300,8 +307,8 @@ EDA_HOTKEY* board_edit_Hotkey_List[] = ...@@ -300,8 +307,8 @@ EDA_HOTKEY* board_edit_Hotkey_List[] =
// List of hotkey descriptors for the module editor // List of hotkey descriptors for the module editor
EDA_HOTKEY* module_edit_Hotkey_List[] = { EDA_HOTKEY* module_edit_Hotkey_List[] = {
&HkMoveItem, &HkRotateItem, &HkEditBoardItem, &HkMoveItem, &HkRotateItem, &HkEditBoardItem,
&HkDelete, &HkMoveItemExact, &HkDuplicateItem, &HkDuplicateItemAndIncrement,
&HkSaveModule, &HkCreateArray, &HkDelete, &HkSaveModule,
NULL NULL
}; };
......
...@@ -41,6 +41,7 @@ enum hotkey_id_commnand { ...@@ -41,6 +41,7 @@ enum hotkey_id_commnand {
HK_FLIP_ITEM, HK_FLIP_ITEM,
HK_COPY_ITEM, HK_COPY_ITEM,
HK_MOVE_ITEM, HK_MOVE_ITEM,
HK_MOVE_ITEM_EXACT,
HK_DRAG_ITEM, HK_DRAG_ITEM,
HK_GET_AND_MOVE_FOOTPRINT, HK_GET_AND_MOVE_FOOTPRINT,
HK_LOCK_UNLOCK_FOOTPRINT, HK_LOCK_UNLOCK_FOOTPRINT,
...@@ -60,6 +61,9 @@ enum hotkey_id_commnand { ...@@ -60,6 +61,9 @@ enum hotkey_id_commnand {
HK_SWITCH_TRACK_DISPLAY_MODE, HK_SWITCH_TRACK_DISPLAY_MODE,
HK_FIND_ITEM, HK_FIND_ITEM,
HK_EDIT_ITEM, HK_EDIT_ITEM,
HK_DUPLICATE_ITEM,
HK_DUPLICATE_ITEM_AND_INCREMENT,
HK_CREATE_ARRAY,
HK_PLACE_ITEM, HK_PLACE_ITEM,
HK_SWITCH_TRACK_WIDTH_TO_NEXT, HK_SWITCH_TRACK_WIDTH_TO_NEXT,
HK_SWITCH_TRACK_WIDTH_TO_PREVIOUS, HK_SWITCH_TRACK_WIDTH_TO_PREVIOUS,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -148,6 +148,7 @@ BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME ) ...@@ -148,6 +148,7 @@ BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
// Module transformations // Module transformations
EVT_MENU( ID_MODEDIT_MODULE_ROTATE, FOOTPRINT_EDIT_FRAME::Process_Special_Functions ) EVT_MENU( ID_MODEDIT_MODULE_ROTATE, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
EVT_MENU( ID_MODEDIT_MODULE_MIRROR, FOOTPRINT_EDIT_FRAME::Process_Special_Functions ) EVT_MENU( ID_MODEDIT_MODULE_MIRROR, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
EVT_MENU( ID_MODEDIT_MODULE_MOVE_EXACT, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, FOOTPRINT_EDIT_FRAME::Process_Special_Functions ) EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
EVT_MENU( ID_PCB_PAD_SETUP, FOOTPRINT_EDIT_FRAME::Process_Special_Functions ) EVT_MENU( ID_PCB_PAD_SETUP, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
......
This diff is collapsed.
...@@ -31,3 +31,18 @@ void PCB_BASE_EDIT_FRAME::SetRotationAngle( int aRotationAngle ) ...@@ -31,3 +31,18 @@ void PCB_BASE_EDIT_FRAME::SetRotationAngle( int aRotationAngle )
m_rotationAngle = aRotationAngle; m_rotationAngle = aRotationAngle;
} }
bool PCB_BASE_EDIT_FRAME::PostCommandMenuEvent( int evt_type )
{
if( evt_type != 0 )
{
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED );
evt.SetEventObject( this );
evt.SetId( evt_type );
wxPostEvent( this, evt );
return true;
}
return false;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment